private static long release(long state, int what, long mask, long pressed, long released , long used, android.view.KeyEvent @event) { switch (@event.getKeyCharacterMap().getModifierBehavior()) { case android.view.KeyCharacterMap.MODIFIER_BEHAVIOR_CHORDED_OR_TOGGLED: { if ((state & used) != 0) { state &= ~mask; } else { if ((state & pressed) != 0) { state |= what | released; } } break; } default: { state &= ~mask; break; } } return(state); }
private android.text.method.KeyListener getKeyListener(android.view.KeyEvent @event ) { android.view.KeyCharacterMap kmap = @event.getKeyCharacterMap(); int kind = kmap.getKeyboardType(); if (kind == android.view.KeyCharacterMap.ALPHA) { return(android.text.method.QwertyKeyListener.getInstance(mAutoText, mAutoCap)); } else { if (kind == android.view.KeyCharacterMap.NUMERIC) { return(android.text.method.MultiTapKeyListener.getInstance(mAutoText, mAutoCap)); } else { if (kind == android.view.KeyCharacterMap.FULL || kind == android.view.KeyCharacterMap .SPECIAL_FUNCTION) { // We consider special function keyboards full keyboards as a workaround for // devices that do not have built-in keyboards. Applications may try to inject // key events using the built-in keyboard device id which may be configured as // a special function keyboard using a default key map. Ideally, as of Honeycomb, // these applications should be modified to use KeyCharacterMap.VIRTUAL_KEYBOARD. return(android.text.method.QwertyKeyListener.getInstanceForFullKeyboard()); } } } return(android.text.method.TextKeyListener.NullKeyListener.getInstance()); }
// no super to call through to private void release(android.text.Editable content, object what, android.view.KeyEvent @event) { int current = content.getSpanFlags(what); switch (@event.getKeyCharacterMap().getModifierBehavior()) { case android.view.KeyCharacterMap.MODIFIER_BEHAVIOR_CHORDED_OR_TOGGLED: { if (current == USED) { content.removeSpan(what); } else { if (current == PRESSED) { content.setSpan(what, 0, 0, RELEASED); } } break; } default: { content.removeSpan(what); break; } } }