List of usage examples for android.view KeyEvent getUnicodeChar
public int getUnicodeChar()
From source file:com.android.launcher2.Launcher.java
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { final int uniChar = event.getUnicodeChar(); final boolean handled = super.onKeyDown(keyCode, event); final boolean isKeyNotWhitespace = uniChar > 0 && !Character.isWhitespace(uniChar); if (!handled && acceptFilter() && isKeyNotWhitespace) { boolean gotKey = TextKeyListener.getInstance().onKeyDown(mWorkspace, mDefaultKeySsb, keyCode, event); if (gotKey && mDefaultKeySsb != null && mDefaultKeySsb.length() > 0) { // something usable has been typed - start a search // the typed text will be retrieved and cleared by // showSearchDialog() // If there are multiple keystrokes before the search dialog takes focus, // onSearchRequested() will be called for every keystroke, // but it is idempotent, so it's fine. return onSearchRequested(); }/*from w w w .j av a 2 s.c o m*/ } // Eat the long press event so the keyboard doesn't come up. if (keyCode == KeyEvent.KEYCODE_MENU && event.isLongPress()) { return true; } return handled; }
From source file:com.fishstix.dosboxfree.DBGLSurfaceView.java
private boolean handleKey(int keyCode, final KeyEvent event) { if (mDebug)/*from w w w . j a va2 s . c o m*/ Log.d("DosBoxTurbo", "handleKey keyCode=" + keyCode); int tKeyCode = 0; // check for xperia play back case if (keyCode == KeyEvent.KEYCODE_BACK && event.isAltPressed()) { int backval = customMap.get(DosBoxPreferences.XPERIA_BACK_BUTTON); if (backval > 0) { // Special Sony XPeria Play case if (mEnableDpad) { // FIRE2 if ((mInputMode == INPUT_MODE_MOUSE) || (mInputMode == INPUT_MODE_REAL_MOUSE)) { DosBoxControl.nativeMouse(0, 0, 0, 0, (event.getAction() == KeyEvent.ACTION_DOWN) ? 0 : 1, BTN_B); } else if ((mInputMode == INPUT_MODE_JOYSTICK) || (mInputMode == INPUT_MODE_REAL_JOYSTICK)) { DosBoxControl.nativeJoystick(0, 0, (event.getAction() == KeyEvent.ACTION_DOWN) ? 0 : 1, BTN_B); } } else { // sony xperia play O (circle) button DosBoxControl.sendNativeKey(backval, (event.getAction() == KeyEvent.ACTION_DOWN), mModifierCtrl, mModifierAlt, mModifierShift); return true; // consume event } } return true; // consume event } // Handle all other keyevents int value = customMap.get(keyCode); if (value > 0) { // found a valid mapping tKeyCode = getMappedKeyCode(value, event); if (tKeyCode > MAP_NONE) { DosBoxControl.sendNativeKey(tKeyCode, (event.getAction() == KeyEvent.ACTION_DOWN), mModifierCtrl, mModifierAlt, mModifierShift); return true; // consume KeyEvent } else if (tKeyCode == MAP_EVENT_CONSUMED) { return true; } } if (keyCode == KeyEvent.KEYCODE_BACK) { // fishstix, allow remap of Android back button // catch no mapping if (event.getAction() == KeyEvent.ACTION_UP) { DBMenuSystem.doConfirmQuit(mParent); } return true; } switch (keyCode) { case KeyEvent.KEYCODE_UNKNOWN: break; default: boolean down = (event.getAction() == KeyEvent.ACTION_DOWN); if (mDebug) Log.d("DosBoxTurbo", "handleKey (default) keyCode=" + keyCode + " down=" + down); if (!down || (event.getRepeatCount() == 0)) { int unicode = event.getUnicodeChar(); // filter system generated keys, but not hardware keypresses if ((event.isAltPressed() || event.isShiftPressed()) && (unicode == 0) && ((event.getFlags() & KeyEvent.FLAG_FROM_SYSTEM) == 0)) break; //fixed alt key problem for physical keyboard with only left alt if ((!mUseLeftAltOn) && (keyCode == KeyEvent.KEYCODE_ALT_LEFT)) { break; } if ((!mUseLeftAltOn) && (keyCode == KeyEvent.KEYCODE_SHIFT_RIGHT)) { break; } if ((keyCode > 255) || (unicode > 255)) { //unknown keys break; } keyCode = keyCode | (unicode << 8); long diff = event.getEventTime() - event.getDownTime(); if (!down && (diff < 50)) { //simulate as long press if (mDebug) Log.d("DosBoxTurbo", "LongPress consumed keyCode=" + keyCode + " down=" + down); mKeyHandler.removeMessages(keyCode); mKeyHandler.sendEmptyMessageDelayed(keyCode, BUTTON_REPEAT_DELAY - diff); } else if (down && mKeyHandler.hasMessages(keyCode)) { if (mDebug) Log.d("DosBoxTurbo", "KeyUp consumed keyCode=" + keyCode + " down=" + down); //there is an key up in queue, should be repeated event } else { boolean result = DosBoxControl.sendNativeKey(keyCode, down, mModifierCtrl, mModifierAlt, mModifierShift); if (!down) { mModifierCtrl = false; mModifierAlt = false; mModifierShift = false; } return result; } } } return false; }
From source file:processing.core.PApplet.java
protected void handleKeyEvent(KeyEvent event) { // event.isPrintingKey() returns false for whitespace and others, // which is a problem if the space bar or tab key are used. key = (char) event.getUnicodeChar(); // if not mappable to a unicode character, instead mark as coded key if (key == 0 || key == 0xFFFF) { // System.out.println(" key is coded"); key = CODED;//from w w w.j av a2s .c om // } else { // System.out.println(" key is unicode"); } keyCode = event.getKeyCode(); // println(key + " " + keyCode); int action = event.getAction(); if (action == KeyEvent.ACTION_DOWN) { keyPressed = true; keyPressed(); } else if (action == KeyEvent.ACTION_UP) { keyPressed = false; keyReleased(); } // if someone else wants to intercept the key, they should // set key to zero (or something besides the "ESC"). // println(event); /* if (action == KeyEvent.ACTION_DOWN) { if (keyCode == KeyEvent.KEYCODE_BACK) { // println("KEYCODE_BACK, calling exit()"); Preferences.saveRestart(getActivity(), true); exit(); System.exit(0); } } */ // When running tethered to the Processing application, respond to // Ctrl-W (or Cmd-W) events by closing the sketch. Disable this behavior // when running independently, because this sketch may be one component // embedded inside an application that has its own close behavior. // if (external && // event.getModifiers() == MENU_SHORTCUT && // event.getKeyCode() == 'W') { // exit(); // } // } }
From source file:com.processing.core.PApplet.java
protected void nativeKeyEvent(android.view.KeyEvent event) { // event.isPrintingKey() returns false for whitespace and others, // which is a problem if the space bar or tab key are used. char key = (char) event.getUnicodeChar(); // if not mappable to a unicode character, instead mark as coded key if (key == 0 || key == 0xFFFF) { key = CODED;//from w w w .j a va 2s . c o m } int keyCode = event.getKeyCode(); int keAction = 0; int action = event.getAction(); if (action == android.view.KeyEvent.ACTION_DOWN) { keAction = KeyEvent.PRESS; } else if (action == android.view.KeyEvent.ACTION_UP) { keAction = KeyEvent.RELEASE; } // TODO set up proper key modifier handling int keModifiers = 0; KeyEvent ke = new KeyEvent(event, event.getEventTime(), keAction, keModifiers, key, keyCode); postEvent(ke); }