@@ -81,13 +81,8 @@ public JSKeyEvent(JComponent source, Object jQueryEvent) {
8181
8282 id = (evType == "keydown" ? KEY_PRESSED : evType == "keypress" ? KEY_TYPED : evType == "keyup" ? KEY_RELEASED : 0 );
8383 keyCode = getJavaKeyCode (jskeyCode , jskey );
84- boolean noKey = checkNoKey (keyCode , jskey );
85- if (noKey ) {
86- ignore = (id == KEY_TYPED );
87- keyChar = (ignore ? (char ) keyCode : CHAR_UNDEFINED );
88- } else {
89- keyChar = getKeyChar (keyCode , jskey );
90- }
84+ keyChar = getJavaKeyChar (keyCode , jskey );
85+ ignore = (keyChar == CHAR_UNDEFINED && id == KEY_TYPED );
9186 if (id == KEY_TYPED )
9287 keyCode = 0 ;
9388 }
@@ -96,6 +91,9 @@ private static int getJavaKeyCode(int jskeyCode, String jskey) {
9691
9792 // see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values
9893
94+ // enter is special
95+ if (jskeyCode == 13 )
96+ return VK_ENTER ;
9997 if (jskeyCode <= 40 ) {
10098 // 0-40 is same
10199 return jskeyCode ;
@@ -105,16 +103,15 @@ private static int getJavaKeyCode(int jskeyCode, String jskey) {
105103 return (jskeyCode >= 96 && jskeyCode <= 105 ? jskeyCode : 0 + jskey .toUpperCase ().charAt (0 ));
106104 }
107105 switch (jskeyCode ) {
108-
109106 case 91 : // META
110- return 157 ;
107+ return VK_META ;
111108 case 93 : // CONTEXT_MENU
112- return 525 ;
109+ return VK_CONTEXT_MENU ;
113110 case 144 : // NUM_LOCK
114111 case 145 : // SCROLL_LOCK
115112 return jskeyCode ;
116113 case 244 : // Kanji
117- return 25 ;
114+ return VK_KANJI ;
118115 }
119116
120117 String keyName = "VK_" + jskey .toUpperCase ();
@@ -129,38 +126,38 @@ private static int getJavaKeyCode(int jskeyCode, String jskey) {
129126 return jskeyCode ;
130127 }
131128
132- private static char getKeyChar (int jskeyCode , String jskey ) {
129+ private static char getJavaKeyChar (int jsKeyCode , String jskey ) {
133130 if (jskey .length () == 1 )
134131 return jskey .charAt (0 );
135- switch (jskeyCode ) {
132+ // valid Java characters that are named in JavaScript
133+ switch (jsKeyCode ) {
134+ case 13 :
135+ jsKeyCode = VK_ENTER ;
136+ // fall through
136137 case VK_ENTER :
137- return '\n' ;
138138 case VK_BACK_SPACE :
139- return '\b' ;
140139 case VK_TAB :
141- return '\t' ;
142140 case VK_DELETE :
143- return (char ) 127 ;
144141 case VK_ESCAPE :
145- return (char ) 27 ;
142+ return (char ) jsKeyCode ;
146143 default :
147144 return '\uFFFF' ;
148145 }
149146 }
150147
151- private static boolean checkNoKey (int keyCode , String jskey ) {
152- switch (keyCode ) {
148+ private static boolean hasKeyChar (int javaKeyCode , String jskey ) {
149+ switch (javaKeyCode ) {
153150 case VK_ENTER :
154- case VK_TAB :
155151 case VK_BACK_SPACE :
152+ case VK_TAB :
156153 case VK_DELETE :
157154 case VK_ESCAPE :
158- case VK_CANCEL : // untested
159- case VK_CLEAR : // untested
160- return false ;
155+ return true ;
156+ default :
157+ // otherwise only single-char jskeys have characters in Java
158+ return (jskey .length () == 1 );
161159 }
162- // otherwise only single-char jskeys have characters in Java
163- return (jskey .length () > 1 );
160+
164161 }
165162
166163 private static int getModifiers (boolean shift , boolean ctrl , boolean alt , boolean meta , boolean altGraph ) {
0 commit comments