下面列出了android.view.KeyEvent#KEYCODE_SHIFT_LEFT 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* Handles presses of the meta keys.
*/
public boolean onKeyDown(View view, Editable content, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_SHIFT_LEFT || keyCode == KeyEvent.KEYCODE_SHIFT_RIGHT) {
press(content, CAP);
return true;
}
if (keyCode == KeyEvent.KEYCODE_ALT_LEFT || keyCode == KeyEvent.KEYCODE_ALT_RIGHT
|| keyCode == KeyEvent.KEYCODE_NUM) {
press(content, ALT);
return true;
}
if (keyCode == KeyEvent.KEYCODE_SYM) {
press(content, SYM);
return true;
}
return false; // no super to call through to
}
/**
* Handles release of the meta keys.
*/
public boolean onKeyUp(View view, Editable content, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_SHIFT_LEFT || keyCode == KeyEvent.KEYCODE_SHIFT_RIGHT) {
release(content, CAP, event);
return true;
}
if (keyCode == KeyEvent.KEYCODE_ALT_LEFT || keyCode == KeyEvent.KEYCODE_ALT_RIGHT
|| keyCode == KeyEvent.KEYCODE_NUM) {
release(content, ALT, event);
return true;
}
if (keyCode == KeyEvent.KEYCODE_SYM) {
release(content, SYM, event);
return true;
}
return false; // no super to call through to
}
/**
* Handles presses of the meta keys.
*/
public static long handleKeyDown(long state, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_SHIFT_LEFT || keyCode == KeyEvent.KEYCODE_SHIFT_RIGHT) {
return press(state, META_SHIFT_ON, META_SHIFT_MASK,
META_CAP_LOCKED, META_CAP_PRESSED, META_CAP_RELEASED, META_CAP_USED);
}
if (keyCode == KeyEvent.KEYCODE_ALT_LEFT || keyCode == KeyEvent.KEYCODE_ALT_RIGHT
|| keyCode == KeyEvent.KEYCODE_NUM) {
return press(state, META_ALT_ON, META_ALT_MASK,
META_ALT_LOCKED, META_ALT_PRESSED, META_ALT_RELEASED, META_ALT_USED);
}
if (keyCode == KeyEvent.KEYCODE_SYM) {
return press(state, META_SYM_ON, META_SYM_MASK,
META_SYM_LOCKED, META_SYM_PRESSED, META_SYM_RELEASED, META_SYM_USED);
}
return state;
}
/**
* Handles release of the meta keys.
*/
public static long handleKeyUp(long state, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_SHIFT_LEFT || keyCode == KeyEvent.KEYCODE_SHIFT_RIGHT) {
return release(state, META_SHIFT_ON, META_SHIFT_MASK,
META_CAP_PRESSED, META_CAP_RELEASED, META_CAP_USED, event);
}
if (keyCode == KeyEvent.KEYCODE_ALT_LEFT || keyCode == KeyEvent.KEYCODE_ALT_RIGHT
|| keyCode == KeyEvent.KEYCODE_NUM) {
return release(state, META_ALT_ON, META_ALT_MASK,
META_ALT_PRESSED, META_ALT_RELEASED, META_ALT_USED, event);
}
if (keyCode == KeyEvent.KEYCODE_SYM) {
return release(state, META_SYM_ON, META_SYM_MASK,
META_SYM_PRESSED, META_SYM_RELEASED, META_SYM_USED, event);
}
return state;
}
@Override
public boolean isEligibleKeyComboCode(long keyComboCode) {
if (keyComboCode == KEY_COMBO_CODE_UNASSIGNED) {
return true;
}
int modifier = KeyComboManager.getModifier(keyComboCode);
if ((modifier & REQUIRED_MODIFIER_MASK) == 0
|| (modifier | ELIGIBLE_MODIFIER_MASK) != ELIGIBLE_MODIFIER_MASK) {
return false;
}
int keyCode = KeyComboManager.getKeyCode(keyComboCode);
return keyCode != 0
&& keyCode != KeyEvent.KEYCODE_SHIFT_LEFT
&& keyCode != KeyEvent.KEYCODE_SHIFT_RIGHT
&& keyCode != KeyEvent.KEYCODE_ALT_LEFT
&& keyCode != KeyEvent.KEYCODE_ALT_RIGHT
&& keyCode != KeyEvent.KEYCODE_CTRL_LEFT
&& keyCode != KeyEvent.KEYCODE_CTRL_RIGHT;
}
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN)
return false;
if (keyCode == KeyEvent.KEYCODE_ALT_LEFT
|| keyCode == KeyEvent.KEYCODE_ALT_RIGHT
|| keyCode == KeyEvent.KEYCODE_SHIFT_LEFT
|| keyCode == KeyEvent.KEYCODE_SHIFT_RIGHT)
return false;
if (keyCode == KeyEvent.KEYCODE_DEL
&& this.getText().toString().length() == 0) {
if (delegate != null) {
delegate.focusOnPreviousField(this);
}
}
return false;
}
private void cancelSelect() {
if (getCurrentIC() == null) {
return;
}
KeyEvent event = new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_SHIFT_LEFT);
sendKeyEvent(event);
mStatus = Status.direct;
updateSelector();
}
private void beginSelect() {
if (getCurrentIC() == null) {
return;
}
recordSelect();
if (mStatus != Status.select) {
cancelSelectWithSelection();
return;
}
KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_SHIFT_LEFT);
sendKeyEvent(event);
}
@Override
public boolean sendKeyEvent(KeyEvent event) {
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_SHIFT_LEFT:
if (isSelectText())
selectText(false);
else
selectText(true);
break;
case KeyEvent.KEYCODE_DPAD_LEFT:
moveCaretLeft();
break;
case KeyEvent.KEYCODE_DPAD_UP:
moveCaretUp();
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
moveCaretRight();
break;
case KeyEvent.KEYCODE_DPAD_DOWN:
moveCaretDown();
break;
case KeyEvent.KEYCODE_MOVE_HOME:
moveCaret(0);
break;
case KeyEvent.KEYCODE_MOVE_END:
moveCaret(_hDoc.length());
break;
default:
return super.sendKeyEvent(event);
}
return true;
}
@Override
public boolean sendKeyEvent(KeyEvent event) {
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_SHIFT_LEFT:
if (isSelectText())
selectText(false);
else
selectText(true);
break;
case KeyEvent.KEYCODE_DPAD_LEFT:
moveCaretLeft();
break;
case KeyEvent.KEYCODE_DPAD_UP:
moveCaretUp();
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
moveCaretRight();
break;
case KeyEvent.KEYCODE_DPAD_DOWN:
moveCaretDown();
break;
case KeyEvent.KEYCODE_MOVE_HOME:
moveCaret(0);
break;
case KeyEvent.KEYCODE_MOVE_END:
moveCaret(_hDoc.length());
break;
default:
return super.sendKeyEvent(event);
}
return true;
}
public boolean sendKeyEvent(KeyEvent event) {
if(event.getAction()==KeyEvent.ACTION_UP)
return super.sendKeyEvent(event);
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_SHIFT_LEFT:
case KeyEvent.KEYCODE_SHIFT_RIGHT:
/*if (isSelectText())
selectText(false);
else*/
selectText(true);
break;
case KeyEvent.KEYCODE_DPAD_LEFT:
_fieldController.moveCaretLeft(true);
break;
case KeyEvent.KEYCODE_DPAD_UP:
_fieldController.moveCaretUp(true);
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
_fieldController.moveCaretRight(true);
break;
case KeyEvent.KEYCODE_DPAD_DOWN:
_fieldController.moveCaretDown(true);
break;
case KeyEvent.KEYCODE_MOVE_HOME:
moveCaret(0);
break;
case KeyEvent.KEYCODE_MOVE_END:
moveCaret(_hDoc.length() - 1);
break;
default:
return super.sendKeyEvent(event);
}
return true;
}
@Override
public boolean sendKeyEvent(KeyEvent event) {
int keyCode = event.getKeyCode();
if (keyCode == KeyEvent.KEYCODE_SHIFT_LEFT || keyCode == KeyEvent.KEYCODE_SHIFT_RIGHT) {
isShiftPressed = event.getAction() == KeyEvent.ACTION_DOWN;
} else if (keyCode == KeyEvent.KEYCODE_ALT_LEFT || keyCode == KeyEvent.KEYCODE_ALT_RIGHT
|| keyCode == KeyEvent.KEYCODE_NUM) {
isAltPressed = event.getAction() == KeyEvent.ACTION_DOWN;
} else if (keyCode == KeyEvent.KEYCODE_SYM) {
isSymPressed = event.getAction() == KeyEvent.ACTION_DOWN;
} else if (keyCode == KeyEvent.KEYCODE_CTRL_LEFT || keyCode == KeyEvent.KEYCODE_CTRL_RIGHT) {
isCtrlPressed = event.getAction() == KeyEvent.ACTION_DOWN;
}
return ic.sendKeyEvent(event);
}
private void sendShiftKey(InputConnection ic, boolean isDown) {
int key = KeyEvent.KEYCODE_SHIFT_LEFT;
int meta = KeyEvent.META_SHIFT_ON | KeyEvent.META_SHIFT_LEFT_ON;
if (isDown) {
sendKeyDown(ic, key, meta);
} else {
sendKeyUp(ic, key, meta);
}
}
private void checkLetterStatus(KeyEvent event) {
int keyCode = event.getKeyCode();
if (keyCode == KeyEvent.KEYCODE_SHIFT_RIGHT || keyCode == KeyEvent.KEYCODE_SHIFT_LEFT) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
//按着shift键,表示大写
mCaps = true;
} else {
//松开shift键,表示小写
mCaps = false;
}
}
}
private boolean emulateShiftHeldForWebView(View view)
{
try
{
KeyEvent shiftPressEvent = new KeyEvent(0, 0, KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_SHIFT_LEFT, 0, 0);
shiftPressEvent.dispatch(view, null, null);
return true;
}
catch (Exception e)
{
KCLog.e(e);
}
return false;
}
@Override
public boolean onKeyDown(final int keyCode, final KeyEvent event)
{
if ((keyCode == KeyEvent.KEYCODE_BACK) &&
(event.getRepeatCount() == 0))
{
if (!waiting)
{
Toaster.getInstance().showToast("Press back again to close the connection",
getApplicationContext());
waiting = true;
countdown.schedule(
new TimerTask()
{
@Override
public void run()
{
waiting = false;
}
}, 2000);
} else
{
closeConnection();
}
return true;
} else
{
final short[] KEYBOARD = {10000 + 9, 100};
if (keyCode == KeyEvent.KEYCODE_SHIFT_LEFT
|| keyCode == KeyEvent.KEYCODE_SHIFT_RIGHT)
{
AppSettings.getInstance().getConnectionManager().send(KEYBOARD);
}
}
return super.onKeyDown(keyCode, event);
}
/**
* Handle a keyUp event.
*
* @param keyCode the keyCode of the keyUp event
*/
public void keyUp(int keyCode, KeyEvent event) {
boolean allowToggle = isEventFromToggleDevice(event);
switch (keyCode) {
case KeyEvent.KEYCODE_ALT_LEFT:
case KeyEvent.KEYCODE_ALT_RIGHT:
if (allowToggle) {
mAltKey.onRelease();
updateCursorMode();
}
break;
case KeyEvent.KEYCODE_SHIFT_LEFT:
case KeyEvent.KEYCODE_SHIFT_RIGHT:
if (allowToggle) {
mCapKey.onRelease();
updateCursorMode();
}
break;
case KEYCODE_CTRL_LEFT:
case KEYCODE_CTRL_RIGHT:
// ignore control keys.
break;
default:
// Ignore other keyUps
break;
}
}