< 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 >