     static let topEdgePortraitWidthThreshholds: [CGFloat] = [350, 400]
     static let topEdgeLandscape: CGFloat = 6
     
+    static let keyboardShrunkSizeArray: [CGFloat] = [522, 524]
+    static let keyboardShrunkSizeWidthThreshholds: [CGFloat] = [700]
+    static let keyboardShrunkSizeBaseWidthThreshhold: CGFloat = 600
+    
     static let rowGapsPortrait: CGFloat = 15
     static let rowGapsLandscape: CGFloat = 7
     

            
            // measurement
            let keyHeight: CGFloat = {
                let totalGaps = sideEdges + topEdge + (rowGaps * CGFloat(numRows - 1))
                return (bounds.height - totalGaps) / CGFloat(numRows)
            }()
            

            }()
            
            // measurement
            var sideEdges = (isLandscape ? layoutConstants.sideEdgesPortrait(bounds.width) : layoutConstants.sideEdgesLandscape)
            
            // measurement
            let bottomEdge = sideEdges
            
            let normalKeyboardSize = bounds.width - CGFloat(2) * sideEdges
            
            // measurement
            let shrunkKeyboardSize = layoutConstants.keyboardShrunkSize(normalKeyboardSize)
            
            sideEdges += ((normalKeyboardSize - shrunkKeyboardSize) / CGFloat(2))

            // measurement
            let topEdge: CGFloat = ((isLandscape ? layoutConstants.topEdgeLandscape : layoutConstants.topEdgePortrait(bounds.width)) + self.topBanner)
