diff -r 726a2bc97146 -r 12a51fb0db0d jdk/src/solaris/classes/sun/awt/X11/keysym2ucs.h --- a/jdk/src/solaris/classes/sun/awt/X11/keysym2ucs.h Fri Oct 03 10:33:11 2008 +0400 +++ b/jdk/src/solaris/classes/sun/awt/X11/keysym2ucs.h Mon Oct 06 16:45:00 2008 +0400 @@ -101,6 +101,8 @@ 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 javaKeycode2KeysymHash = new Hashtable(); tojava static long keysym_lowercase = unsafe.allocateMemory(Native.getLongSize()); tojava static long keysym_uppercase = unsafe.allocateMemory(Native.getLongSize()); tojava public static char convertKeysym( long ks, int state ) { @@ -234,6 +236,10 @@ tojava Keysym2JavaKeycode jkc = getJavaKeycode( ev ); 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. @@ -2634,6 +2640,14 @@ 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 }