(KeyEvent event)
| 2987 | |
| 2988 | |
| 2989 | protected void handleKeyEvent(KeyEvent event) { |
| 2990 | |
| 2991 | // Get rid of auto-repeating keys if desired and supported |
| 2992 | if (!keyRepeatEnabled && event.isAutoRepeat()) return; |
| 2993 | |
| 2994 | keyEvent = event; |
| 2995 | key = event.getKey(); |
| 2996 | keyCode = event.getKeyCode(); |
| 2997 | |
| 2998 | switch (event.getAction()) { |
| 2999 | case KeyEvent.PRESS: |
| 3000 | Long hash = ((long) keyCode << Character.SIZE) | key; |
| 3001 | if (!pressedKeys.contains(hash)) pressedKeys.add(hash); |
| 3002 | keyPressed = true; |
| 3003 | keyPressed(keyEvent); |
| 3004 | break; |
| 3005 | case KeyEvent.RELEASE: |
| 3006 | pressedKeys.remove(((long) keyCode << Character.SIZE) | key); |
| 3007 | keyPressed = !pressedKeys.isEmpty(); |
| 3008 | keyReleased(keyEvent); |
| 3009 | break; |
| 3010 | case KeyEvent.TYPE: |
| 3011 | keyTyped(keyEvent); |
| 3012 | break; |
| 3013 | } |
| 3014 | |
| 3015 | /* |
| 3016 | if (keyEventMethods != null) { |
| 3017 | keyEventMethods.handle(new Object[] { event.getNative() }); |
| 3018 | } |
| 3019 | */ |
| 3020 | |
| 3021 | handleMethods("keyEvent", new Object[] { event }); |
| 3022 | |
| 3023 | // if someone else wants to intercept the key, they should |
| 3024 | // set key to zero (or something besides the ESC). |
| 3025 | if (event.getAction() == KeyEvent.PRESS) { |
| 3026 | //if (key == java.awt.event.KeyEvent.VK_ESCAPE) { |
| 3027 | if (key == ESC) { |
| 3028 | exit(); |
| 3029 | } |
| 3030 | // When running tethered to the Processing application, respond to |
| 3031 | // Ctrl-W (or Cmd-W) events by closing the sketch. Not enabled when |
| 3032 | // running independently, because this sketch may be one component |
| 3033 | // embedded inside an application that has its own close behavior. |
| 3034 | if (external && |
| 3035 | event.getKeyCode() == 'W' && |
| 3036 | ((event.isMetaDown() && platform == MACOSX) || |
| 3037 | (event.isControlDown() && platform != MACOSX))) { |
| 3038 | // Can't use this native stuff b/c the native event might be NEWT |
| 3039 | // if (external && event.getNative() instanceof java.awt.event.KeyEvent && |
| 3040 | // ((java.awt.event.KeyEvent) event.getNative()).getModifiers() == |
| 3041 | // Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() && |
| 3042 | // event.getKeyCode() == 'W') { |
| 3043 | exit(); |
| 3044 | } |
| 3045 | } |
| 3046 | } |
no test coverage detected