|
1 | 1 | /* |
2 | | - * Copyright (c) 2005, 2018, Oracle and/or its affiliates. All rights reserved. |
| 2 | + * Copyright (c) 2005, 2025, Oracle and/or its affiliates. All rights reserved. |
3 | 3 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 | 4 | * |
5 | 5 | * This code is free software; you can redistribute it and/or modify it |
|
37 | 37 | */ |
38 | 38 |
|
39 | 39 | package sun.awt.X11; |
| 40 | + |
40 | 41 | import java.util.Hashtable; |
| 42 | +import java.util.Map; |
41 | 43 | import jdk.internal.misc.Unsafe; |
42 | 44 |
|
43 | 45 | import sun.util.logging.PlatformLogger; |
@@ -68,7 +70,12 @@ int getKeyLocation() { |
68 | 70 | // for robot only it seems to me. After that, we can remove lookup table |
69 | 71 | // from XWindow.c altogether. |
70 | 72 | // Another use for reverse lookup: query keyboard state, for some keys. |
71 | | - static Hashtable<Integer, Long> javaKeycode2KeysymHash = new Hashtable<Integer, Long>(); |
| 73 | + private static final Map<Integer, Long> javaKeycode2KeysymHash = Map.of( |
| 74 | + java.awt.event.KeyEvent.VK_CAPS_LOCK, XKeySymConstants.XK_Caps_Lock, |
| 75 | + java.awt.event.KeyEvent.VK_NUM_LOCK, XKeySymConstants.XK_Num_Lock, |
| 76 | + java.awt.event.KeyEvent.VK_SCROLL_LOCK, XKeySymConstants.XK_Scroll_Lock, |
| 77 | + java.awt.event.KeyEvent.VK_KANA_LOCK, XKeySymConstants.XK_Kana_Lock |
| 78 | + ); |
72 | 79 | static long keysym_lowercase = unsafe.allocateMemory(Native.getLongSize()); |
73 | 80 | static long keysym_uppercase = unsafe.allocateMemory(Native.getLongSize()); |
74 | 81 | static Keysym2JavaKeycode kanaLock = new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_KANA_LOCK, |
@@ -289,9 +296,8 @@ static int getLegacyJavaKeycodeOnly( XKeyEvent ev ) { |
289 | 296 | Keysym2JavaKeycode jkc = getJavaKeycode( keysym ); |
290 | 297 | return jkc == null ? java.awt.event.KeyEvent.VK_UNDEFINED : jkc.getJavaKeycode(); |
291 | 298 | } |
292 | | - static long javaKeycode2Keysym( int jkey ) { |
293 | | - Long ks = javaKeycode2KeysymHash.get( jkey ); |
294 | | - return (ks == null ? 0 : ks.longValue()); |
| 299 | + static long javaKeycode2Keysym(int jkey) { |
| 300 | + return javaKeycode2KeysymHash.getOrDefault(jkey, 0L); |
295 | 301 | } |
296 | 302 | /** |
297 | 303 | Return keysym derived from a keycode and modifiers. |
@@ -1716,14 +1722,6 @@ static long getKeysym( XKeyEvent ev ) { |
1716 | 1722 | keysym2JavaKeycodeHash.put( Long.valueOf(XKeySymConstants.hpXK_mute_asciitilde), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_DEAD_TILDE, java.awt.event.KeyEvent.KEY_LOCATION_STANDARD)); |
1717 | 1723 |
|
1718 | 1724 | keysym2JavaKeycodeHash.put( Long.valueOf(XConstants.NoSymbol), new Keysym2JavaKeycode(java.awt.event.KeyEvent.VK_UNDEFINED, java.awt.event.KeyEvent.KEY_LOCATION_UNKNOWN)); |
1719 | | - |
1720 | | - /* Reverse search of keysym by keycode. */ |
1721 | | - |
1722 | | - /* Add keyboard locking codes. */ |
1723 | | - javaKeycode2KeysymHash.put( java.awt.event.KeyEvent.VK_CAPS_LOCK, XKeySymConstants.XK_Caps_Lock); |
1724 | | - javaKeycode2KeysymHash.put( java.awt.event.KeyEvent.VK_NUM_LOCK, XKeySymConstants.XK_Num_Lock); |
1725 | | - javaKeycode2KeysymHash.put( java.awt.event.KeyEvent.VK_SCROLL_LOCK, XKeySymConstants.XK_Scroll_Lock); |
1726 | | - javaKeycode2KeysymHash.put( java.awt.event.KeyEvent.VK_KANA_LOCK, XKeySymConstants.XK_Kana_Lock); |
1727 | 1725 | } |
1728 | 1726 |
|
1729 | 1727 | } |
0 commit comments