From 554fd8c5195424bdbcabf5de30fdc183aba391bd Mon Sep 17 00:00:00 2001 From: upstream source tree Date: Sun, 15 Mar 2015 20:14:05 -0400 Subject: obtained gcc-4.6.4.tar.bz2 from upstream website; verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository. --- .../classpath/native/jni/qt-peer/keybindings.cpp | 600 +++++++++++++++++++++ 1 file changed, 600 insertions(+) create mode 100644 libjava/classpath/native/jni/qt-peer/keybindings.cpp (limited to 'libjava/classpath/native/jni/qt-peer/keybindings.cpp') diff --git a/libjava/classpath/native/jni/qt-peer/keybindings.cpp b/libjava/classpath/native/jni/qt-peer/keybindings.cpp new file mode 100644 index 000000000..f18616689 --- /dev/null +++ b/libjava/classpath/native/jni/qt-peer/keybindings.cpp @@ -0,0 +1,600 @@ +/* keybindings.cpp -- + Copyright (C) 2005 Free Software Foundation, Inc. + +This file is part of GNU Classpath. + +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU Classpath is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +02110-1301 USA. + +Linking this library statically or dynamically with other modules is +making a combined work based on this library. Thus, the terms and +conditions of the GNU General Public License cover the whole +combination. + +As a special exception, the copyright holders of this library give you +permission to link this library with independent modules to produce an +executable, regardless of the license terms of these independent +modules, and to copy and distribute the resulting executable under +terms of your choice, provided that you also meet, for each linked +independent module, the terms and conditions of the license of that +module. An independent module is a module which is not derived from +or based on this library. If you modify this library, you may extend +this exception to your version of the library, but you are not +obligated to do so. If you do not wish to do so, delete this +exception statement from your version. */ + +#include "keybindings.h" + +/* InputEvent key modifiers */ +#define SHIFT_MASK 1 +#define CTRL_MASK 2 +#define META_MASK 4 +#define ALT_MASK 8 +#define ALT_GRAPH_MASK 0x20 +#define BUTTON1_MASK 0x10 +#define BUTTON2_MASK 8 +#define BUTTON3_MASK 4 + +#define SHIFT_DOWN_MASK 0x0040 +#define CTRL_DOWN_MASK 0x0080 +#define META_DOWN_MASK 0x0100 +#define ALT_DOWN_MASK 0x0200 +#define BUTTON1_DOWN_MASK 0x0400 +#define BUTTON2_DOWN_MASK 0x0800 +#define BUTTON3_DOWN_MASK 0x1000 +#define ALT_GRAPH_DOWN_MASK 0x2000 + +/* Virtual Keys */ +/* This list should be kept in the same order as the VK_ field + declarations in KeyEvent.java. */ +#define VK_ENTER '\n' +#define VK_BACK_SPACE '\b' +#define VK_TAB '\t' +#define VK_CANCEL 3 +#define VK_CLEAR 12 +#define VK_SHIFT 16 +#define VK_CONTROL 17 +#define VK_ALT 18 +#define VK_PAUSE 19 +#define VK_CAPS_LOCK 20 +#define VK_ESCAPE 27 +#define VK_SPACE ' ' +#define VK_PAGE_UP 33 +#define VK_PAGE_DOWN 34 +#define VK_END 35 +#define VK_HOME 36 +#define VK_LEFT 37 +#define VK_UP 38 +#define VK_RIGHT 39 +#define VK_DOWN 40 +#define VK_COMMA ',' +#define VK_MINUS '-' +#define VK_PERIOD '.' +#define VK_SLASH '/' +#define VK_0 '0' +#define VK_1 '1' +#define VK_2 '2' +#define VK_3 '3' +#define VK_4 '4' +#define VK_5 '5' +#define VK_6 '6' +#define VK_7 '7' +#define VK_8 '8' +#define VK_9 '9' +#define VK_SEMICOLON ';' +#define VK_EQUALS '=' +#define VK_A 'A' +#define VK_B 'B' +#define VK_C 'C' +#define VK_D 'D' +#define VK_E 'E' +#define VK_F 'F' +#define VK_G 'G' +#define VK_H 'H' +#define VK_I 'I' +#define VK_J 'J' +#define VK_K 'K' +#define VK_L 'L' +#define VK_M 'M' +#define VK_N 'N' +#define VK_O 'O' +#define VK_P 'P' +#define VK_Q 'Q' +#define VK_R 'R' +#define VK_S 'S' +#define VK_T 'T' +#define VK_U 'U' +#define VK_V 'V' +#define VK_W 'W' +#define VK_X 'X' +#define VK_Y 'Y' +#define VK_Z 'Z' +#define VK_OPEN_BRACKET '[' +#define VK_BACK_SLASH '\\' +#define VK_CLOSE_BRACKET ']' +#define VK_NUMPAD0 96 +#define VK_NUMPAD1 97 +#define VK_NUMPAD2 98 +#define VK_NUMPAD3 99 +#define VK_NUMPAD4 100 +#define VK_NUMPAD5 101 +#define VK_NUMPAD6 102 +#define VK_NUMPAD7 103 +#define VK_NUMPAD8 104 +#define VK_NUMPAD9 105 +#define VK_MULTIPLY 106 +#define VK_ADD 107 +#define VK_SEPARATER 108 +#define VK_SEPARATOR 108 +#define VK_SUBTRACT 109 +#define VK_DECIMAL 110 +#define VK_DIVIDE 111 +#define VK_DELETE 127 +#define VK_NUM_LOCK 144 +#define VK_SCROLL_LOCK 145 +#define VK_F1 112 +#define VK_F2 113 +#define VK_F3 114 +#define VK_F4 115 +#define VK_F5 116 +#define VK_F6 117 +#define VK_F7 118 +#define VK_F8 119 +#define VK_F9 120 +#define VK_F10 121 +#define VK_F11 122 +#define VK_F12 123 +#define VK_F13 61440 +#define VK_F14 61441 +#define VK_F15 61442 +#define VK_F16 61443 +#define VK_F17 61444 +#define VK_F18 61445 +#define VK_F19 61446 +#define VK_F20 61447 +#define VK_F21 61448 +#define VK_F22 61449 +#define VK_F23 61450 +#define VK_F24 61451 +#define VK_PRINTSCREEN 154 +#define VK_INSERT 155 +#define VK_HELP 156 +#define VK_META 157 +#define VK_BACK_QUOTE 192 +#define VK_QUOTE 222 +#define VK_KP_UP 224 +#define VK_KP_DOWN 225 +#define VK_KP_LEFT 226 +#define VK_KP_RIGHT 227 +#define VK_DEAD_GRAVE 128 +#define VK_DEAD_ACUTE 129 +#define VK_DEAD_CIRCUMFLEX 130 +#define VK_DEAD_TILDE 131 +#define VK_DEAD_MACRON 132 +#define VK_DEAD_BREVE 133 +#define VK_DEAD_ABOVEDOT 134 +#define VK_DEAD_DIAERESIS 135 +#define VK_DEAD_ABOVERING 136 +#define VK_DEAD_DOUBLEACUTE 137 +#define VK_DEAD_CARON 138 +#define VK_DEAD_CEDILLA 139 +#define VK_DEAD_OGONEK 140 +#define VK_DEAD_IOTA 141 +#define VK_DEAD_VOICED_SOUND 142 +#define VK_DEAD_SEMIVOICED_SOUND 143 +#define VK_AMPERSAND 150 +#define VK_ASTERISK 151 +#define VK_QUOTEDBL 152 +#define VK_LESS 153 +#define VK_GREATER 160 +#define VK_BRACELEFT 161 +#define VK_BRACERIGHT 162 +#define VK_AT 512 +#define VK_COLON 513 +#define VK_CIRCUMFLEX 514 +#define VK_DOLLAR 515 +#define VK_EURO_SIGN 516 +#define VK_EXCLAMATION_MARK 517 +#define VK_INVERTED_EXCLAMATION_MARK 518 +#define VK_LEFT_PARENTHESIS 519 +#define VK_NUMBER_SIGN 520 +#define VK_PLUS 521 +#define VK_RIGHT_PARENTHESIS 522 +#define VK_UNDERSCORE 523 +#define VK_FINAL 24 +#define VK_CONVERT 28 +#define VK_NONCONVERT 29 +#define VK_ACCEPT 30 +#define VK_MODECHANGE 31 +#define VK_KANA 21 +#define VK_KANJI 25 +#define VK_ALPHANUMERIC 240 +#define VK_KATAKANA 241 +#define VK_HIRAGANA 242 +#define VK_FULL_WIDTH 243 +#define VK_HALF_WIDTH 244 +#define VK_ROMAN_CHARACTERS 245 +#define VK_ALL_CANDIDATES 256 +#define VK_PREVIOUS_CANDIDATE 257 +#define VK_CODE_INPUT 258 +#define VK_JAPANESE_KATAKANA 259 +#define VK_JAPANESE_HIRAGANA 260 +#define VK_JAPANESE_ROMAN 261 +#define VK_KANA_LOCK 262 +#define VK_INPUT_METHOD_ON_OFF 263 +#define VK_CUT 65489 +#define VK_COPY 65485 +#define VK_PASTE 65487 +#define VK_UNDO 65483 +#define VK_AGAIN 65481 +#define VK_FIND 65488 +#define VK_PROPS 65482 +#define VK_STOP 65480 +#define VK_COMPOSE 65312 +#define VK_ALT_GRAPH 65406 +#define VK_UNDEFINED 0 + + +int mapKeyCode(QKeyEvent *key) +{ + switch(key->key()) + { + case Qt::Key_Escape: + return VK_ESCAPE; + case Qt::Key_Tab: + return VK_TAB; + case Qt::Key_Backspace: + return VK_BACK_SPACE; + case Qt::Key_Return: + case Qt::Key_Enter: + return VK_ENTER; + case Qt::Key_Insert: + return VK_INSERT; + case Qt::Key_Delete: + return VK_DELETE; + case Qt::Key_Pause: + return VK_PAUSE; + case Qt::Key_Print: + case Qt::Key_SysReq: + return VK_PRINTSCREEN; + case Qt::Key_Home: + return VK_HOME; + case Qt::Key_End: + return VK_END; + case Qt::Key_Left: + return VK_LEFT; + case Qt::Key_Up: + return VK_UP; + case Qt::Key_Right: + return VK_RIGHT; + case Qt::Key_Down: + return VK_DOWN; + case Qt::Key_PageUp: + return VK_PAGE_UP; + case Qt::Key_PageDown: + return VK_PAGE_DOWN; + case Qt::Key_Shift: + return VK_SHIFT; + case Qt::Key_Control: + return VK_CONTROL; + case Qt::Key_Meta: + return VK_META; + case Qt::Key_Alt: + return VK_ALT; + case Qt::Key_CapsLock: + return VK_CAPS_LOCK; + case Qt::Key_NumLock: + return VK_NUM_LOCK; + case Qt::Key_ScrollLock: + return VK_SCROLL_LOCK; + case Qt::Key_Clear: + return VK_CLEAR; + case Qt::Key_F1: + return VK_F1; + case Qt::Key_F2: + return VK_F2; + case Qt::Key_F3: + return VK_F3; + case Qt::Key_F4: + return VK_F4; + case Qt::Key_F5: + return VK_F5; + case Qt::Key_F6: + return VK_F6; + case Qt::Key_F7: + return VK_F7; + case Qt::Key_F8: + return VK_F8; + case Qt::Key_F9: + return VK_F9; + case Qt::Key_F10: + return VK_F10; + case Qt::Key_F11: + return VK_F11; + case Qt::Key_F12: + return VK_F12; + case Qt::Key_F13: + return VK_F13; + case Qt::Key_F14: + return VK_F14; + case Qt::Key_F15: + return VK_F15; + case Qt::Key_F16: + return VK_F16; + case Qt::Key_F17: + return VK_F17; + case Qt::Key_F18: + return VK_F18; + case Qt::Key_F19: + return VK_F19; + case Qt::Key_F20: + return VK_F20; + case Qt::Key_F21: + return VK_F21; + case Qt::Key_F22: + return VK_F22; + case Qt::Key_F23: + return VK_F23; + case Qt::Key_F24: + return VK_F24; + case Qt::Key_Help: + return VK_HELP; + + case Qt::Key_Space: + return VK_SPACE; + + case Qt::Key_Exclam: + return VK_EXCLAMATION_MARK; + case Qt::Key_QuoteDbl: + return VK_QUOTEDBL; + case Qt::Key_NumberSign: + return VK_NUMBER_SIGN; + + case Qt::Key_Dollar: + return VK_DOLLAR; + + + case Qt::Key_Ampersand: + return VK_AMPERSAND; + + case Qt::Key_ParenLeft: + return VK_LEFT_PARENTHESIS; + case Qt::Key_ParenRight: + return VK_RIGHT_PARENTHESIS; + case Qt::Key_Asterisk: + return VK_ASTERISK; + case Qt::Key_Plus: + return VK_PLUS; + case Qt::Key_Comma: + return VK_COMMA; + case Qt::Key_Minus: + return VK_MINUS; + case Qt::Key_Period: + return VK_PERIOD; + case Qt::Key_Slash: + return VK_SLASH; + + case Qt::Key_0: + return VK_0; + case Qt::Key_1: + return VK_1; + case Qt::Key_2: + return VK_2; + case Qt::Key_3: + return VK_3; + case Qt::Key_4: + return VK_4; + case Qt::Key_5: + return VK_5 ; + case Qt::Key_6: + return VK_6; + case Qt::Key_7: + return VK_7; + case Qt::Key_8: + return VK_8; + case Qt::Key_9: + return VK_9; + + case Qt::Key_Colon: + return VK_COLON; + case Qt::Key_Semicolon: + return VK_SEMICOLON; + case Qt::Key_Less: + return VK_LESS; + case Qt::Key_Equal: + return VK_EQUALS; + case Qt::Key_Greater: + return VK_GREATER; + case Qt::Key_Question: + case Qt::Key_At: + + case Qt::Key_A: + return VK_A; + case Qt::Key_B: + return VK_B; + case Qt::Key_C: + return VK_C; + case Qt::Key_D: + return VK_D; + case Qt::Key_E: + return VK_E; + case Qt::Key_F: + return VK_F; + case Qt::Key_G: + return VK_G; + case Qt::Key_H: + return VK_H; + case Qt::Key_I: + return VK_I; + case Qt::Key_J: + return VK_J; + case Qt::Key_K: + return VK_K; + case Qt::Key_L: + return VK_L; + case Qt::Key_M: + return VK_M; + case Qt::Key_N: + return VK_N; + case Qt::Key_O: + return VK_O; + case Qt::Key_P: + return VK_P; + case Qt::Key_Q: + return VK_Q; + case Qt::Key_R: + return VK_R; + case Qt::Key_S: + return VK_S; + case Qt::Key_T: + return VK_T; + case Qt::Key_U: + return VK_U; + case Qt::Key_V: + return VK_V; + case Qt::Key_W: + return VK_W; + case Qt::Key_X: + return VK_X; + case Qt::Key_Y: + return VK_Y; + case Qt::Key_Z: + return VK_Z; + case Qt::Key_division: + return VK_DIVIDE; + case Qt::Key_BracketLeft: + return VK_OPEN_BRACKET; + case Qt::Key_Backslash: + return VK_BACK_SLASH; + case Qt::Key_BracketRight: + return VK_CLOSE_BRACKET; + case Qt::Key_BraceLeft: + return VK_BRACELEFT; + case Qt::Key_BraceRight: + return VK_BRACERIGHT; + case Qt::Key_brokenbar: + return VK_SEPARATOR; // correct? + + default: + return VK_UNDEFINED; + } +} + +int getUnicode(QKeyEvent *key) +{ + QString s = key->text(); + if(s.isEmpty()) + return 0; // CHAR_UNDEFINED + QChar c = s.at(0); + return (int)c.unicode(); +} + +/** + * Returns the key modifiers in KeyEvent format + */ +int getKeyModifiers(Qt::KeyboardModifiers state) +{ + int modifier = 0; + if( state & Qt::ShiftModifier ) + modifier |= SHIFT_DOWN_MASK; + if( state & Qt::ControlModifier ) + modifier |= CTRL_DOWN_MASK; + if( state & Qt::AltModifier ) + modifier |= ALT_DOWN_MASK; + if( state & Qt::MetaModifier ) + modifier |= META_DOWN_MASK; + + return modifier; +} + +/** + * Returns the key modifiers in ActionEvent format + */ +int getAEKeyModifiers(Qt::KeyboardModifiers state) +{ + int modifier = 0; + if( state & Qt::ShiftModifier ) + modifier |= SHIFT_MASK; + if( state & Qt::ControlModifier ) + modifier |= CTRL_MASK; + if( state & Qt::AltModifier ) + modifier |= ALT_MASK; + if( state & Qt::MetaModifier ) + modifier |= META_MASK; + + return modifier; +} + +/** + * Returns the mouse modifiers in InputEvent format + */ +int getMouseModifiers(QMouseEvent *e) +{ + int modifier = 0; + int buttons = e->buttons(); + int state = e->modifiers(); + + if( buttons & Qt::LeftButton ) + modifier |= BUTTON1_DOWN_MASK; + if( buttons & Qt::MidButton ) + modifier |= BUTTON2_DOWN_MASK; + if( buttons & Qt::RightButton ) + modifier |= BUTTON3_DOWN_MASK; + + if( state & Qt::ShiftModifier ) + modifier |= SHIFT_DOWN_MASK; + if( state & Qt::ControlModifier ) + modifier |= CTRL_DOWN_MASK; + if( state & Qt::AltModifier ) + modifier |= ALT_DOWN_MASK; + if( state & Qt::MetaModifier ) + modifier |= META_DOWN_MASK; + + // FIXME: Alt Gr? + return modifier; +} + +/** + * Returns the mouse modifiers in InputEvent format + * We need a different method here because e->buttons() doesn't work for, + * mouseReleased events. (But strangely enough it does for pressed ones) + */ +int getReleaseModifiers(QMouseEvent *e) +{ + int modifier = 0; + int button = e->button(); + int state = e->modifiers(); + + if( button & Qt::LeftButton ) + modifier |= BUTTON1_DOWN_MASK; + if( button & Qt::MidButton ) + modifier |= BUTTON2_DOWN_MASK; + if( button & Qt::RightButton ) + modifier |= BUTTON3_DOWN_MASK; + + if( state & Qt::ShiftModifier ) + modifier |= SHIFT_DOWN_MASK; + if( state & Qt::ControlModifier ) + modifier |= CTRL_DOWN_MASK; + if( state & Qt::AltModifier ) + modifier |= ALT_DOWN_MASK; + if( state & Qt::MetaModifier ) + modifier |= META_DOWN_MASK; + + // FIXME: Alt Gr? + return modifier; +} + + -- cgit v1.2.3