Java源码示例:com.sun.glass.events.KeyEvent

示例1
private void dispatchKeyEvent(KeyState ks, int type, int key) {
    MonocleWindow window = ks.getWindow(false);
    if (window == null) {
        return;
    }
    MonocleView view = (MonocleView) window.getView();
    if (view == null) {
        return;
    }
    char[] chars = getKeyChars(ks, key);
    int modifiers = ks.getModifiers();
    RunnableProcessor.runLater(() -> {
        view.notifyKey(type, key, chars, modifiers);
    });
    if (type == KeyEvent.PRESS && chars.length > 0) {
        RunnableProcessor.runLater(() -> {
            view.notifyKey(KeyEvent.TYPED, key, chars, modifiers);
        });
    }
}
 
示例2
/** Returns the Glass event modifiers for this state */
int getModifiers() {
    int modifiers = KeyEvent.MODIFIER_NONE;
    for (int i = 0; i < buttonsPressed.size(); i++) {
        switch(buttonsPressed.get(i)) {
            case MouseEvent.BUTTON_LEFT:
                modifiers |= KeyEvent.MODIFIER_BUTTON_PRIMARY;
                break;
            case MouseEvent.BUTTON_OTHER:
                modifiers |= KeyEvent.MODIFIER_BUTTON_MIDDLE;
                break;
            case MouseEvent.BUTTON_RIGHT:
                modifiers |= KeyEvent.MODIFIER_BUTTON_SECONDARY;
                break;
            case MouseEvent.BUTTON_BACK:
                modifiers |= KeyEvent.MODIFIER_BUTTON_BACK;
                break;
            case MouseEvent.BUTTON_FORWARD:
                modifiers |= KeyEvent.MODIFIER_BUTTON_FORWARD;
                break;
        }
    }
    return modifiers;
}
 
示例3
@Override
public void processEvents(LinuxInputDevice device) {
    LinuxEventBuffer buffer = device.getBuffer();
    key.getState(state);
    while (buffer.hasNextEvent()) {
        switch (buffer.getEventType()) {
            case LinuxInput.EV_KEY:
                int vk = getVirtualKeyCode(buffer.getEventCode());
                if (vk != KeyEvent.VK_UNDEFINED) {
                    if (buffer.getEventValue() == 0) {
                        state.releaseKey(vk);
                    } else {
                        state.pressKey(vk);
                    }
                }
                break;
            case LinuxInput.EV_SYN:
                switch (buffer.getEventCode()) {
                    case LinuxInput.SYN_REPORT:
                        key.setState(state);
                        break;
                    default: // ignore
                }
                break;
            default:
                // ignore other events
                break;
        }
        buffer.nextEvent();
    }
}
 
示例4
private static int getModifier(int virtualKeyCode) {
    switch (virtualKeyCode) {
        case KeyEvent.VK_SHIFT: return KeyEvent.MODIFIER_SHIFT;
        case KeyEvent.VK_CONTROL: return KeyEvent.MODIFIER_CONTROL;
        case KeyEvent.VK_ALT: return KeyEvent.MODIFIER_ALT;
        case KeyEvent.VK_COMMAND: return KeyEvent.MODIFIER_COMMAND;
        case KeyEvent.VK_WINDOWS: return KeyEvent.MODIFIER_WINDOWS;
        default: return KeyEvent.MODIFIER_NONE;
    }
}
 
示例5
static int getVirtualKeyCode(int linuxKeyCode) {
    if (linuxKeyCode >= LinuxInput.KEY_1 && linuxKeyCode <= LinuxInput.KEY_9) {
        return linuxKeyCode - LinuxInput.KEY_1 + KeyEvent.VK_1;
    } else if (linuxKeyCode >= LinuxInput.KEY_NUMERIC_0 && linuxKeyCode <= LinuxInput.KEY_NUMERIC_9) {
        return linuxKeyCode - LinuxInput.KEY_NUMERIC_0 + KeyEvent.VK_0;
    } else if (linuxKeyCode >= LinuxInput.KEY_F1 && linuxKeyCode <= LinuxInput.KEY_F10) {
        return linuxKeyCode - LinuxInput.KEY_F1 + KeyEvent.VK_F1;
    } else if (linuxKeyCode >= LinuxInput.KEY_F11 && linuxKeyCode <= LinuxInput.KEY_F12) {
        return linuxKeyCode - LinuxInput.KEY_F11 + KeyEvent.VK_F11;
    } else if (linuxKeyCode >= LinuxInput.KEY_F13 && linuxKeyCode <= LinuxInput.KEY_F24) {
        return linuxKeyCode - LinuxInput.KEY_F13 + KeyEvent.VK_F13;
    } else switch (linuxKeyCode) {
        case LinuxInput.KEY_0: return KeyEvent.VK_0;
        case LinuxInput.KEY_A: return KeyEvent.VK_A;
        case LinuxInput.KEY_B: return KeyEvent.VK_B;
        case LinuxInput.KEY_C: return KeyEvent.VK_C;
        case LinuxInput.KEY_D: return KeyEvent.VK_D;
        case LinuxInput.KEY_E: return KeyEvent.VK_E;
        case LinuxInput.KEY_F: return KeyEvent.VK_F;
        case LinuxInput.KEY_G: return KeyEvent.VK_G;
        case LinuxInput.KEY_H: return KeyEvent.VK_H;
        case LinuxInput.KEY_I: return KeyEvent.VK_I;
        case LinuxInput.KEY_J: return KeyEvent.VK_J;
        case LinuxInput.KEY_K: return KeyEvent.VK_K;
        case LinuxInput.KEY_L: return KeyEvent.VK_L;
        case LinuxInput.KEY_M: return KeyEvent.VK_M;
        case LinuxInput.KEY_N: return KeyEvent.VK_N;
        case LinuxInput.KEY_O: return KeyEvent.VK_O;
        case LinuxInput.KEY_P: return KeyEvent.VK_P;
        case LinuxInput.KEY_Q: return KeyEvent.VK_Q;
        case LinuxInput.KEY_R: return KeyEvent.VK_R;
        case LinuxInput.KEY_S: return KeyEvent.VK_S;
        case LinuxInput.KEY_T: return KeyEvent.VK_T;
        case LinuxInput.KEY_U: return KeyEvent.VK_U;
        case LinuxInput.KEY_V: return KeyEvent.VK_V;
        case LinuxInput.KEY_W: return KeyEvent.VK_W;
        case LinuxInput.KEY_X: return KeyEvent.VK_X;
        case LinuxInput.KEY_Y: return KeyEvent.VK_Y;
        case LinuxInput.KEY_Z: return KeyEvent.VK_Z;
        case LinuxInput.KEY_LEFTCTRL:
        case LinuxInput.KEY_RIGHTCTRL: return KeyEvent.VK_CONTROL;
        case LinuxInput.KEY_LEFTSHIFT:
        case LinuxInput.KEY_RIGHTSHIFT: return KeyEvent.VK_SHIFT;
        case LinuxInput.KEY_CAPSLOCK: return KeyEvent.VK_CAPS_LOCK;
        case LinuxInput.KEY_TAB: return KeyEvent.VK_TAB;
        case LinuxInput.KEY_GRAVE: return KeyEvent.VK_BACK_QUOTE;
        case LinuxInput.KEY_MINUS: return KeyEvent.VK_MINUS;
        case LinuxInput.KEY_EQUAL: return KeyEvent.VK_EQUALS;
        case LinuxInput.KEY_BACKSPACE: return KeyEvent.VK_BACKSPACE;
        case LinuxInput.KEY_LEFTBRACE: return KeyEvent.VK_BRACELEFT;
        case LinuxInput.KEY_RIGHTBRACE: return KeyEvent.VK_BRACERIGHT;
        case LinuxInput.KEY_BACKSLASH: return KeyEvent.VK_BACK_SLASH;
        case LinuxInput.KEY_SEMICOLON: return KeyEvent.VK_SEMICOLON;
        case LinuxInput.KEY_APOSTROPHE: return KeyEvent.VK_QUOTE;
        case LinuxInput.KEY_COMMA: return KeyEvent.VK_COMMA;
        case LinuxInput.KEY_DOT: return KeyEvent.VK_PERIOD;
        case LinuxInput.KEY_SLASH: return KeyEvent.VK_SLASH;
        case LinuxInput.KEY_LEFTALT:
        case LinuxInput.KEY_RIGHTALT: return KeyEvent.VK_ALT;
        case LinuxInput.KEY_LEFTMETA:
        case LinuxInput.KEY_RIGHTMETA: return KeyEvent.VK_COMMAND;
        case LinuxInput.KEY_SPACE: return KeyEvent.VK_SPACE;
        case LinuxInput.KEY_MENU: return KeyEvent.VK_CONTEXT_MENU;
        case LinuxInput.KEY_ENTER: return KeyEvent.VK_ENTER;
        case LinuxInput.KEY_LEFT: return KeyEvent.VK_LEFT;
        case LinuxInput.KEY_RIGHT: return KeyEvent.VK_RIGHT;
        case LinuxInput.KEY_UP: return KeyEvent.VK_UP;
        case LinuxInput.KEY_DOWN: return KeyEvent.VK_DOWN;
        case LinuxInput.KEY_HOME: return KeyEvent.VK_HOME;
        case LinuxInput.KEY_DELETE: return KeyEvent.VK_DELETE;
        case LinuxInput.KEY_INSERT: return KeyEvent.VK_INSERT;
        case LinuxInput.KEY_END: return KeyEvent.VK_END;
        case LinuxInput.KEY_PAGEDOWN: return KeyEvent.VK_PAGE_DOWN;
        case LinuxInput.KEY_PAGEUP: return KeyEvent.VK_PAGE_UP;
        case LinuxInput.KEY_NUMLOCK: return KeyEvent.VK_NUM_LOCK;
        case LinuxInput.KEY_ESC: return KeyEvent.VK_ESCAPE;
        case LinuxInput.KEY_NUMERIC_STAR: return KeyEvent.VK_MULTIPLY;
        default: return KeyEvent.VK_UNDEFINED;
    }
}
 
示例6
private char[] getKeyChars(KeyState state, int key) {
    char c = '\000';
    boolean shifted = state.isShiftPressed();
    // TODO: implement configurable keyboard mappings.
    // The following is only for US keyboards
    if (key >= KeyEvent.VK_A && key <= KeyEvent.VK_Z) {
        shifted ^= capsLock;
        if (shifted) {
            c = (char) (key - KeyEvent.VK_A + 'A');
        } else {
            c = (char) (key - KeyEvent.VK_A + 'a');
        }
    } else if (key >= KeyEvent.VK_NUMPAD0 && key <= KeyEvent.VK_NUMPAD9) {
        if (numLock) {
            c = (char) (key - KeyEvent.VK_NUMPAD0 + '0');
        }
    } else if (key >= KeyEvent.VK_0 && key <= KeyEvent.VK_9) {
        if (shifted) {
            switch (key) {
                case KeyEvent.VK_0: c = ')'; break;
                case KeyEvent.VK_1: c = '!'; break;
                case KeyEvent.VK_2: c = '@'; break;
                case KeyEvent.VK_3: c = '#'; break;
                case KeyEvent.VK_4: c = '$'; break;
                case KeyEvent.VK_5: c = '%'; break;
                case KeyEvent.VK_6: c = '^'; break;
                case KeyEvent.VK_7: c = '&'; break;
                case KeyEvent.VK_8: c = '*'; break;
                case KeyEvent.VK_9: c = '('; break;
            }
        } else {
            c = (char) (key - KeyEvent.VK_0 + '0');
        }
    } else if (key == KeyEvent.VK_SPACE) {
        c = ' ';
    } else if (key == KeyEvent.VK_TAB) {
        c = '\t';
    } else if (key == KeyEvent.VK_ENTER) {
        c = '\n';
    } else if (key == KeyEvent.VK_MULTIPLY) {
        c = '*';
    } else if (key == KeyEvent.VK_DIVIDE) {
        c = '/';
    } else if (shifted) {
        switch (key) {
            case KeyEvent.VK_BACK_QUOTE: c = '~'; break;
            case KeyEvent.VK_COMMA: c = '<'; break;
            case KeyEvent.VK_PERIOD: c = '>'; break;
            case KeyEvent.VK_SLASH: c = '?'; break;
            case KeyEvent.VK_SEMICOLON: c = ':'; break;
            case KeyEvent.VK_QUOTE: c = '\"'; break;
            case KeyEvent.VK_BRACELEFT: c = '{'; break;
            case KeyEvent.VK_BRACERIGHT: c = '}'; break;
            case KeyEvent.VK_BACK_SLASH: c = '|'; break;
            case KeyEvent.VK_MINUS: c = '_'; break;
            case KeyEvent.VK_EQUALS: c = '+'; break;
        }        } else {
        switch (key) {
            case KeyEvent.VK_BACK_QUOTE: c = '`'; break;
            case KeyEvent.VK_COMMA: c = ','; break;
            case KeyEvent.VK_PERIOD: c = '.'; break;
            case KeyEvent.VK_SLASH: c = '/'; break;
            case KeyEvent.VK_SEMICOLON: c = ';'; break;
            case KeyEvent.VK_QUOTE: c = '\''; break;
            case KeyEvent.VK_BRACELEFT: c = '['; break;
            case KeyEvent.VK_BRACERIGHT: c = ']'; break;
            case KeyEvent.VK_BACK_SLASH: c = '\\'; break;
            case KeyEvent.VK_MINUS: c = '-'; break;
            case KeyEvent.VK_EQUALS: c = '='; break;
        }
    }
    return c == '\000' ? NO_CHAR : new char[] { c };
}
 
示例7
int getKeyCodeForChar(char c) {
    c = Character.toUpperCase(c);
    // remove shift modification
    switch (c) {
        case '!': c = '1'; break;
        case '@': c = '2'; break;
        case '#': c = '3'; break;
        case '$': c = '4'; break;
        case '%': c = '5'; break;
        case '^': c = '6'; break;
        case '&': c = '7'; break;
        case '*': c = '8'; break;
        case '(': c = '9'; break;
        case ')': c = '0'; break;
        case '~': c = '`'; break;
        case '_': c = '-'; break;
        case '+': c = '='; break;
        case '{': c = '['; break;
        case '}': c = ']'; break;
        case '|': c = '\\'; break;
        case ':': c = ';'; break;
        case '\"': c = '\''; break;
        case '<': c = ','; break;
        case '>': c = '.'; break;
        case '?': c = '/'; break;
    }
    if (c >= 'A' && c <= 'Z') {
        return (c - 'A') + KeyEvent.VK_A;
    } else if (c >= '0' && c <= '9') {
        return (c - '0') + KeyEvent.VK_0;
    }
    switch (c) {
        case '`': return KeyEvent.VK_BACK_QUOTE;
        case '-': return KeyEvent.VK_MINUS;
        case '=': return KeyEvent.VK_EQUALS;
        case '[': return KeyEvent.VK_BRACELEFT;
        case ']': return KeyEvent.VK_BRACERIGHT;
        case '\\': return KeyEvent.VK_BACK_SLASH;
        case ';': return KeyEvent.VK_SEMICOLON;
        case '\'': return KeyEvent.VK_QUOTE;
        case ',': return KeyEvent.VK_COMMA;
        case '.': return KeyEvent.VK_PERIOD;
        case '/': return KeyEvent.VK_SLASH;
        default: return KeyEvent.VK_UNDEFINED;
    }
}
 
示例8
boolean isShiftPressed() {
    return (modifiers & KeyEvent.MODIFIER_SHIFT) != 0;
}
 
示例9
boolean isControlPressed() {
    return (modifiers & KeyEvent.MODIFIER_CONTROL) != 0;
}