< prev index next >

src/solaris/classes/sun/awt/X11/keysym2ucs.h

Print this page
rev 1565 : 5100701: Toolkit.getLockingKeyState() does not work on XToolkit, but works on Motif
Summary: Does not work on Motif but works on XToolkit now; implemented using XQueryPointer.
Reviewed-by: anthony
rev 1566 : 6680988: KeyEvent is still missing VK values for many keyboards
Summary: 2 new methods and some fields added to KeyEvent, plus hash of constants introduced
Reviewed-by: art
rev 1567 : 6871299: Shift+Tab no longer generates a KEY_TYPED event; used to with JRE 1.5
Summary: Add XK_ISO_Left_Tab -> VK_TAB rule
Reviewed-by: dcherepanov
rev 1568 : 6711676: Numpad keys trigger more than one KeyEvent.
Summary: Introduce a new sniffer based on server keymap.
Reviewed-by: art
rev 1569 : 5099725: AWT doesn't seem to handle MappingNotify events under X11.
5036807: Pressing action keys "STOP/AGAIN/COMPOSE" generates keycode of F11/F12 keys.
4787377: VK_STOP key on Solaris generates wrong Key Code
Summary: Added an event processing lumped with similar native code for similar bugs.
Reviewed-by: art
rev 1570 : 8000626: Implement dead key detection for KeyEvent on Linux
Reviewed-by: kizune

*** 1,7 **** /* ! * Copyright (c) 2005, 2007, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this --- 1,7 ---- /* ! * Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this
*** 37,47 **** * the conversion in our workflow. * */ tojava /* ! tojava * Copyright (c) 2005, 2007, Oracle and/or its affiliates. All rights reserved. tojava * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. tojava * tojava * This code is free software; you can redistribute it and/or modify it tojava * under the terms of the GNU General Public License version 2 only, as tojava * published by the Free Software Foundation. Oracle designates this --- 37,47 ---- * the conversion in our workflow. * */ tojava /* ! tojava * Copyright (c) 2005, 2009, Oracle and/or its affiliates. All rights reserved. tojava * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. tojava * tojava * This code is free software; you can redistribute it and/or modify it tojava * under the terms of the GNU General Public License version 2 only, as tojava * published by the Free Software Foundation. Oracle designates this
*** 99,110 **** --- 99,114 ---- tojava static Hashtable<Long, Character> keysym2UCSHash = new Hashtable<Long, Character>(); tojava static Hashtable<Long, Long> uppercaseHash = new Hashtable<Long, Long>(); tojava // TODO: or not to do: add reverse lookup javakeycode2keysym, tojava // for robot only it seems to me. After that, we can remove lookup table tojava // from XWindow.c altogether. + tojava // Another use for reverse lookup: query keyboard state, for some keys. + tojava static Hashtable<Integer, Long> javaKeycode2KeysymHash = new Hashtable<Integer, Long>(); tojava static long keysym_lowercase = unsafe.allocateMemory(Native.getLongSize()); tojava static long keysym_uppercase = unsafe.allocateMemory(Native.getLongSize()); + tojava static Keysym2JavaKeycode kanaLock = new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_KANA_LOCK, + tojava java.awt.event.KeyEvent.KEY_LOCATION_STANDARD); tojava public static char convertKeysym( long ks, int state ) { tojava tojava /* First check for Latin-1 characters (1:1 mapping) */ tojava if ((ks >= 0x0020 && ks <= 0x007e) || tojava (ks >= 0x00a0 && ks <= 0x00ff)) {
*** 123,145 **** tojava return (char)(ks & 0x00ffffff); tojava tojava Character ch = keysym2UCSHash.get(ks); tojava return ch == null ? (char)0 : ch.charValue(); tojava } tojava static long xkeycode2keysym(XKeyEvent ev, int ndx) { tojava XToolkit.awtLock(); tojava try { ! tojava return XlibWrapper.XKeycodeToKeysym(ev.get_display(), ev.get_keycode(), ndx ); tojava } finally { tojava XToolkit.awtUnlock(); tojava } tojava } tojava public static boolean isKPEvent( XKeyEvent ev ) tojava { tojava // Xsun without XKB uses keysymarray[2] keysym to determine if it is KP event. tojava // Otherwise, it is [1]. ! tojava int ndx = XToolkit.isXsunServer() && tojava ! XToolkit.isXKBenabled() ? 2 : 1; tojava XToolkit.awtLock(); tojava try { tojava return XlibWrapper.IsKeypadKey( tojava XlibWrapper.XKeycodeToKeysym(ev.get_display(), ev.get_keycode(), ndx ) ); --- 127,182 ---- tojava return (char)(ks & 0x00ffffff); tojava tojava Character ch = keysym2UCSHash.get(ks); tojava return ch == null ? (char)0 : ch.charValue(); tojava } + tojava static long xkeycode2keysym_noxkb(XKeyEvent ev, int ndx) { + tojava XToolkit.awtLock(); + tojava try { + tojava return XlibWrapper.XKeycodeToKeysym(ev.get_display(), ev.get_keycode(), ndx); + tojava } finally { + tojava XToolkit.awtUnlock(); + tojava } + tojava } + tojava static long xkeycode2keysym_xkb(XKeyEvent ev, int ndx) { + tojava XToolkit.awtLock(); + tojava try { + tojava int mods = ev.get_state(); + tojava if ((ndx == 0) && ((mods & XConstants.ShiftMask) != 0)) { + tojava // I don't know all possible meanings of 'ndx' in case of XKB + tojava // and don't want to speculate. But this particular case + tojava // clearly means that caller needs a so called primary keysym. + tojava mods ^= XConstants.ShiftMask; + tojava } + tojava XlibWrapper.XkbTranslateKeyCode(XToolkit.getXKBKbdDesc(), ev.get_keycode(), + tojava mods, XlibWrapper.iarg1, XlibWrapper.larg3); + tojava //XXX unconsumed modifiers? + tojava return Native.getLong(XlibWrapper.larg3); + tojava } finally { + tojava XToolkit.awtUnlock(); + tojava } + tojava } tojava static long xkeycode2keysym(XKeyEvent ev, int ndx) { tojava XToolkit.awtLock(); tojava try { ! tojava if (XToolkit.canUseXKBCalls()) { ! tojava return xkeycode2keysym_xkb(ev, ndx); ! tojava }else{ ! tojava return xkeycode2keysym_noxkb(ev, ndx); ! tojava } tojava } finally { tojava XToolkit.awtUnlock(); tojava } tojava } + tojava static long xkeycode2primary_keysym(XKeyEvent ev) { + tojava return xkeycode2keysym(ev, 0); + tojava } tojava public static boolean isKPEvent( XKeyEvent ev ) tojava { tojava // Xsun without XKB uses keysymarray[2] keysym to determine if it is KP event. tojava // Otherwise, it is [1]. ! tojava int ndx = XToolkit.isXsunKPBehavior() && tojava ! XToolkit.isXKBenabled() ? 2 : 1; tojava XToolkit.awtLock(); tojava try { tojava return XlibWrapper.IsKeypadKey( tojava XlibWrapper.XKeycodeToKeysym(ev.get_display(), ev.get_keycode(), ndx ) );
*** 178,188 **** tojava I do not check if this is a keypad event, I just presume it. tojava */ tojava private static long getKeypadKeysym( XKeyEvent ev ) { tojava int ndx = 0; tojava long keysym = XConstants.NoSymbol; ! tojava if( XToolkit.isXsunServer() && tojava ! XToolkit.isXKBenabled() ) { tojava if( (ev.get_state() & XConstants.ShiftMask) != 0 ) { // shift modifier is on tojava ndx = 3; tojava keysym = xkeycode2keysym(ev, ndx); tojava } else { --- 215,225 ---- tojava I do not check if this is a keypad event, I just presume it. tojava */ tojava private static long getKeypadKeysym( XKeyEvent ev ) { tojava int ndx = 0; tojava long keysym = XConstants.NoSymbol; ! tojava if( XToolkit.isXsunKPBehavior() && tojava ! XToolkit.isXKBenabled() ) { tojava if( (ev.get_state() & XConstants.ShiftMask) != 0 ) { // shift modifier is on tojava ndx = 3; tojava keysym = xkeycode2keysym(ev, ndx); tojava } else {
*** 200,215 **** tojava keysym = xkeycode2keysym(ev, ndx); tojava } tojava } tojava return keysym; tojava } tojava /** tojava Return java.awt.KeyEvent constant meaning (Java) keycode, derived from X Window KeyEvent. tojava Algorithm is, extract via XKeycodeToKeysym a proper keysym according to Xlib spec rules and tojava err exceptions, then search a java keycode in a table. - tojava Some keysyms maps to more than one keycode, these would require extra processing. If someone - tojava points me to such a keysym. tojava */ tojava static Keysym2JavaKeycode getJavaKeycode( XKeyEvent ev ) { tojava // get from keysym2JavaKeycodeHash. tojava long keysym = XConstants.NoSymbol; tojava int ndx = 0; --- 237,275 ---- tojava keysym = xkeycode2keysym(ev, ndx); tojava } tojava } tojava return keysym; tojava } + tojava + tojava /** + tojava Return java.awt.KeyEvent constant meaning (Java) keycode, derived from X keysym. + tojava Some keysyms maps to more than one keycode, these would require extra processing. + tojava */ + tojava static Keysym2JavaKeycode getJavaKeycode( long keysym ) { + tojava if(keysym == XKeySymConstants.XK_Mode_switch){ + tojava /* XK_Mode_switch on solaris maps either to VK_ALT_GRAPH (default) or VK_KANA_LOCK */ + tojava if( XToolkit.isKanaKeyboard() ) { + tojava return kanaLock; + tojava } + tojava }else if(keysym == XKeySymConstants.XK_L1){ + tojava /* if it is Sun keyboard, trick hash to return VK_STOP else VK_F11 (default) */ + tojava if( XToolkit.isSunKeyboard() ) { + tojava keysym = XKeySymConstants.SunXK_Stop; + tojava } + tojava }else if(keysym == XKeySymConstants.XK_L2) { + tojava /* if it is Sun keyboard, trick hash to return VK_AGAIN else VK_F12 (default) */ + tojava if( XToolkit.isSunKeyboard() ) { + tojava keysym = XKeySymConstants.SunXK_Again; + tojava } + tojava } + tojava + tojava return keysym2JavaKeycodeHash.get( keysym ); + tojava } tojava /** tojava Return java.awt.KeyEvent constant meaning (Java) keycode, derived from X Window KeyEvent. tojava Algorithm is, extract via XKeycodeToKeysym a proper keysym according to Xlib spec rules and tojava err exceptions, then search a java keycode in a table. tojava */ tojava static Keysym2JavaKeycode getJavaKeycode( XKeyEvent ev ) { tojava // get from keysym2JavaKeycodeHash. tojava long keysym = XConstants.NoSymbol; tojava int ndx = 0;
*** 220,237 **** tojava // we only need primary-layer keysym to derive a java keycode. tojava ndx = 0; tojava keysym = xkeycode2keysym(ev, ndx); tojava } tojava ! tojava Keysym2JavaKeycode jkc = keysym2JavaKeycodeHash.get( keysym ); tojava return jkc; tojava } tojava static int getJavaKeycodeOnly( XKeyEvent ev ) { tojava Keysym2JavaKeycode jkc = getJavaKeycode( ev ); tojava return jkc == null ? java.awt.event.KeyEvent.VK_UNDEFINED : jkc.getJavaKeycode(); tojava } tojava /** tojava Return keysym derived from a keycode and modifiers. tojava Usually an input method does this. However non-system input methods (e.g. Java IMs) do not. tojava For rules, see "Xlib - C Language X Interface", tojava MIT X Consortium Standard tojava X Version 11, Release 6 --- 280,322 ---- tojava // we only need primary-layer keysym to derive a java keycode. tojava ndx = 0; tojava keysym = xkeycode2keysym(ev, ndx); tojava } tojava ! tojava Keysym2JavaKeycode jkc = getJavaKeycode( keysym ); tojava return jkc; tojava } tojava static int getJavaKeycodeOnly( XKeyEvent ev ) { tojava Keysym2JavaKeycode jkc = getJavaKeycode( ev ); tojava return jkc == null ? java.awt.event.KeyEvent.VK_UNDEFINED : jkc.getJavaKeycode(); tojava } tojava /** + tojava * Return an integer java keycode apprx as it was before extending keycodes range. + tojava * This call would ignore for instance XKB and process whatever is on the bottom + tojava * of keysym stack. Result will not depend on actual locale, will differ between + tojava * dual/multiple keyboard setup systems (e.g. English+Russian vs French+Russian) + tojava * but will be someway compatible with old releases. + tojava */ + tojava static int getLegacyJavaKeycodeOnly( XKeyEvent ev ) { + tojava long keysym = XConstants.NoSymbol; + tojava int ndx = 0; + tojava if( (ev.get_state() & XToolkit.numLockMask) != 0 && + tojava isKPEvent(ev)) { + tojava keysym = getKeypadKeysym( ev ); + tojava } else { + tojava // we only need primary-layer keysym to derive a java keycode. + tojava ndx = 0; + tojava keysym = xkeycode2keysym_noxkb(ev, ndx); + tojava } + tojava Keysym2JavaKeycode jkc = getJavaKeycode( keysym ); + tojava return jkc == null ? java.awt.event.KeyEvent.VK_UNDEFINED : jkc.getJavaKeycode(); + tojava } + tojava static long javaKeycode2Keysym( int jkey ) { + tojava Long ks = javaKeycode2KeysymHash.get( jkey ); + tojava return (ks == null ? 0 : ks.longValue()); + tojava } + tojava /** tojava Return keysym derived from a keycode and modifiers. tojava Usually an input method does this. However non-system input methods (e.g. Java IMs) do not. tojava For rules, see "Xlib - C Language X Interface", tojava MIT X Consortium Standard tojava X Version 11, Release 6
*** 571,581 **** 0x0000 #define XK_ISO_First_Group 0xFE0C 0x0000 #define XK_ISO_First_Group_Lock 0xFE0D 0x0000 #define XK_ISO_Last_Group 0xFE0E 0x0000 #define XK_ISO_Last_Group_Lock 0xFE0F ! 0x0000 #define XK_ISO_Left_Tab 0xFE20 0x0000 #define XK_ISO_Move_Line_Up 0xFE21 0x0000 #define XK_ISO_Move_Line_Down 0xFE22 0x0000 #define XK_ISO_Partial_Line_Up 0xFE23 0x0000 #define XK_ISO_Partial_Line_Down 0xFE24 0x0000 #define XK_ISO_Partial_Space_Left 0xFE25 --- 656,666 ---- 0x0000 #define XK_ISO_First_Group 0xFE0C 0x0000 #define XK_ISO_First_Group_Lock 0xFE0D 0x0000 #define XK_ISO_Last_Group 0xFE0E 0x0000 #define XK_ISO_Last_Group_Lock 0xFE0F ! 0x0009 #define XK_ISO_Left_Tab 0xFE20 0x0000 #define XK_ISO_Move_Line_Up 0xFE21 0x0000 #define XK_ISO_Move_Line_Down 0xFE22 0x0000 #define XK_ISO_Partial_Line_Up 0xFE23 0x0000 #define XK_ISO_Partial_Line_Down 0xFE24 0x0000 #define XK_ISO_Partial_Space_Left 0xFE25
*** 593,621 **** 0x0000 #define XK_ISO_Discontinuous_Underline 0xFE31 0x0000 #define XK_ISO_Emphasize 0xFE32 0x0000 #define XK_ISO_Center_Object 0xFE33 0x0000 #define XK_ISO_Enter 0xFE34 ! 0x0000 #define XK_dead_grave 0xFE50 ! 0x0000 #define XK_dead_acute 0xFE51 ! 0x0000 #define XK_dead_circumflex 0xFE52 ! 0x0000 #define XK_dead_tilde 0xFE53 ! 0x0000 #define XK_dead_macron 0xFE54 ! 0x0000 #define XK_dead_breve 0xFE55 ! 0x0000 #define XK_dead_abovedot 0xFE56 ! 0x0000 #define XK_dead_diaeresis 0xFE57 ! 0x0000 #define XK_dead_abovering 0xFE58 ! 0x0000 #define XK_dead_doubleacute 0xFE59 ! 0x0000 #define XK_dead_caron 0xFE5A ! 0x0000 #define XK_dead_cedilla 0xFE5B ! 0x0000 #define XK_dead_ogonek 0xFE5C ! 0x0000 #define XK_dead_iota 0xFE5D ! 0x0000 #define XK_dead_voiced_sound 0xFE5E ! 0x0000 #define XK_dead_semivoiced_sound 0xFE5F ! 0x0000 #define XK_dead_belowdot 0xFE60 ! 0x0000 #define XK_dead_hook 0xFE61 ! 0x0000 #define XK_dead_horn 0xFE62 0x0000 #define XK_First_Virtual_Screen 0xFED0 0x0000 #define XK_Prev_Virtual_Screen 0xFED1 0x0000 #define XK_Next_Virtual_Screen 0xFED2 0x0000 #define XK_Last_Virtual_Screen 0xFED4 --- 678,706 ---- 0x0000 #define XK_ISO_Discontinuous_Underline 0xFE31 0x0000 #define XK_ISO_Emphasize 0xFE32 0x0000 #define XK_ISO_Center_Object 0xFE33 0x0000 #define XK_ISO_Enter 0xFE34 ! 0x02CB #define XK_dead_grave 0xFE50 ! 0x02CA #define XK_dead_acute 0xFE51 ! 0x02C6 #define XK_dead_circumflex 0xFE52 ! 0x02DC #define XK_dead_tilde 0xFE53 ! 0x02C9 #define XK_dead_macron 0xFE54 ! 0x02D8 #define XK_dead_breve 0xFE55 ! 0x02D9 #define XK_dead_abovedot 0xFE56 ! 0x00A8 #define XK_dead_diaeresis 0xFE57 ! 0x02DA #define XK_dead_abovering 0xFE58 ! 0x02DD #define XK_dead_doubleacute 0xFE59 ! 0x02C7 #define XK_dead_caron 0xFE5A ! 0x00B8 #define XK_dead_cedilla 0xFE5B ! 0x02DB #define XK_dead_ogonek 0xFE5C ! 0x0269 #define XK_dead_iota 0xFE5D ! 0x3099 #define XK_dead_voiced_sound 0xFE5E ! 0x309A #define XK_dead_semivoiced_sound 0xFE5F ! 0x0323 #define XK_dead_belowdot 0xFE60 ! 0x0321 #define XK_dead_hook 0xFE61 ! 0x031B #define XK_dead_horn 0xFE62 0x0000 #define XK_First_Virtual_Screen 0xFED0 0x0000 #define XK_Prev_Virtual_Screen 0xFED1 0x0000 #define XK_Next_Virtual_Screen 0xFED2 0x0000 #define XK_Last_Virtual_Screen 0xFED4
*** 2364,2373 **** --- 2449,2459 ---- tojava keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Alt_L), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_ALT, java.awt.event.KeyEvent.KEY_LOCATION_LEFT)); tojava keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Alt_R), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_ALT, java.awt.event.KeyEvent.KEY_LOCATION_RIGHT)); tojava keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Meta_L), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_META, java.awt.event.KeyEvent.KEY_LOCATION_LEFT)); tojava keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Meta_R), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_META, java.awt.event.KeyEvent.KEY_LOCATION_RIGHT)); tojava keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Caps_Lock), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_CAPS_LOCK, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD)); + tojava keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Shift_Lock), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_CAPS_LOCK, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD)); tojava tojava /* Misc Functions */ tojava keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Print), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_PRINTSCREEN, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD)); tojava keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_F22), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_PRINTSCREEN, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD)); tojava keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_R2), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_PRINTSCREEN, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
*** 2538,2547 **** --- 2624,2648 ---- tojava keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Execute), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_ACCEPT, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD)); tojava /* Type 5c Japanese keyboard: henkan */ tojava keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Kanji), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_CONVERT, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD)); tojava /* Type 5c Japanese keyboard: nihongo */ tojava keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Henkan_Mode), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_INPUT_METHOD_ON_OFF, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD)); + tojava keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Eisu_Shift ), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_ALPHANUMERIC , java.awt.event.KeyEvent.KEY_LOCATION_STANDARD)); + tojava keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Eisu_toggle ), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_ALPHANUMERIC , java.awt.event.KeyEvent.KEY_LOCATION_STANDARD)); + tojava keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Zenkaku ), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_FULL_WIDTH , java.awt.event.KeyEvent.KEY_LOCATION_STANDARD)); + tojava keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Hankaku ), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_HALF_WIDTH , java.awt.event.KeyEvent.KEY_LOCATION_STANDARD)); + tojava keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Hiragana ), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_HIRAGANA , java.awt.event.KeyEvent.KEY_LOCATION_STANDARD)); + tojava keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Katakana ), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_KATAKANA , java.awt.event.KeyEvent.KEY_LOCATION_STANDARD)); + tojava keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Romaji ), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_JAPANESE_ROMAN , java.awt.event.KeyEvent.KEY_LOCATION_STANDARD)); + tojava keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Kana_Shift ), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_KANA , java.awt.event.KeyEvent.KEY_LOCATION_STANDARD)); + tojava keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Kana_Lock ), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_KANA_LOCK , java.awt.event.KeyEvent.KEY_LOCATION_STANDARD)); + tojava keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Muhenkan ), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_NONCONVERT , java.awt.event.KeyEvent.KEY_LOCATION_STANDARD)); + tojava keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Zen_Koho ), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_ALL_CANDIDATES , java.awt.event.KeyEvent.KEY_LOCATION_STANDARD)); + tojava keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Kanji_Bangou ), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_CODE_INPUT , java.awt.event.KeyEvent.KEY_LOCATION_STANDARD)); + tojava keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Mae_Koho ), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_PREVIOUS_CANDIDATE , java.awt.event.KeyEvent.KEY_LOCATION_STANDARD)); + tojava + tojava tojava /* VK_KANA_LOCK is handled separately because it generates the tojava * same keysym as ALT_GRAPH in spite of its different behavior. tojava */ tojava tojava keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.XK_Multi_key), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_COMPOSE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD));
*** 2626,2633 **** --- 2727,2742 ---- tojava keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.hpXK_mute_asciicircum), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_CIRCUMFLEX, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD)); tojava keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.hpXK_mute_diaeresis), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_DIAERESIS, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD)); tojava keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.hpXK_mute_asciitilde), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_TILDE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD)); tojava tojava keysym2JavaKeycodeHash.put( Long.valueOf(XConstants.NoSymbol), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_UNDEFINED, java.awt.event.KeyEvent.KEY_LOCATION_UNKNOWN)); + tojava + tojava /* Reverse search of keysym by keycode. */ + tojava + tojava /* Add keyboard locking codes. */ + tojava javaKeycode2KeysymHash.put( java.awt.event.KeyEvent.VK_CAPS_LOCK, XKeySymConstants.XK_Caps_Lock); + tojava javaKeycode2KeysymHash.put( java.awt.event.KeyEvent.VK_NUM_LOCK, XKeySymConstants.XK_Num_Lock); + tojava javaKeycode2KeysymHash.put( java.awt.event.KeyEvent.VK_SCROLL_LOCK, XKeySymConstants.XK_Scroll_Lock); + tojava javaKeycode2KeysymHash.put( java.awt.event.KeyEvent.VK_KANA_LOCK, XKeySymConstants.XK_Kana_Lock); tojava }; tojava tojava }
< prev index next >