public boolean setShiftLocked(boolean shiftLocked) {
   AnyKeyboard keyboard = getKeyboard();
   if (keyboard != null) {
     if (keyboard.setShiftLocked(shiftLocked)) {
       invalidateAllKeys();
       return true;
     }
   }
   return false;
 }
 public void simulateKeyPress(final int keyCode, final boolean advanceTime) {
   onPress(keyCode);
   Robolectric.flushForegroundThreadScheduler();
   final AnyKeyboard keyboard = getCurrentKeyboard();
   Assert.assertNotNull(keyboard);
   Keyboard.Key key = null;
   for (Keyboard.Key aKey : keyboard.getKeys()) {
     if (aKey.getPrimaryCode() == keyCode) {
       key = aKey;
       break;
     }
   }
   if (key == null) {
     onKey(keyCode, null, 0, new int[0], true);
   } else {
     onKey(keyCode, key, 0, keyboard.getNearestKeys(key.x + 5, key.y + 5), true);
   }
   Robolectric.flushForegroundThreadScheduler();
   if (advanceTime) ShadowSystemClock.sleep(25);
   onRelease(keyCode);
   Robolectric.flushForegroundThreadScheduler();
 }
  @Override
  public void setKeyboard(AnyKeyboard newKeyboard, float verticalCorrection) {
    mExtensionKey = null;
    mExtensionVisible = false;

    mUtilityKey = null;
    super.setKeyboard(newKeyboard, verticalCorrection);
    if (newKeyboard != null
        && newKeyboard instanceof GenericKeyboard
        && ((GenericKeyboard) newKeyboard).disableKeyPreviews()) {
      // Phone keyboard never shows popup preview (except language
      // switch).
      setPreviewEnabled(false);
    } else {
      setPreviewEnabled(AnyApplication.getConfig().getShowKeyPreview());
    }
    // TODO: For now! should be a calculated value
    // lots of key : true
    // some keys: false
    setProximityCorrectionEnabled(true);
    // One-seventh of the keyboard width seems like a reasonable threshold
    // mJumpThresholdSquare = newKeyboard.getMinWidth() / 7;
    // mJumpThresholdSquare *= mJumpThresholdSquare;
    // Assuming there are 4 rows, this is the coordinate of the last row
    // mLastRowY = (newKeyboard.getHeight() * 3) / 4;
    // setKeyboardLocal(newKeyboard);

    // looking for the space-bar, so I'll be able to detect swipes starting
    // at it
    mSpaceBarKey = null;
    if (newKeyboard != null) {
      for (Key aKey : newKeyboard.getKeys()) {
        if (aKey.getPrimaryCode() == KeyCodes.SPACE) {
          mSpaceBarKey = aKey;
          break;
        }
      }
    }
  }