@@ -1372,53 +1372,64 @@ private MaskKeysym getMaskKeysym() {
13721372 int accelIndex = text .indexOf ('\t' );
13731373 if (accelIndex == -1 ) return null ;
13741374 int start = accelIndex + 1 ;
1375- int plusIndex = text .indexOf ('+' , start );
1376- while (plusIndex != -1 ) {
1375+ while (true ) {
1376+ int plusIndex = text .indexOf ('+' , start );
1377+ if (plusIndex < 0 || plusIndex == text .length () - 1 ) {
1378+ break ;
1379+ }
1380+
13771381 String maskStr = text .substring (start , plusIndex );
13781382 if (maskStr .equals ("Ctrl" )) maskKeysym .mask |= GDK .GDK_CONTROL_MASK ;
13791383 if (maskStr .equals ("Shift" )) maskKeysym .mask |= GDK .GDK_SHIFT_MASK ;
13801384 if (maskStr .equals ("Alt" )) maskKeysym .mask |= GDK .GDK_MOD1_MASK ;
13811385 start = plusIndex + 1 ;
1382- plusIndex = text .indexOf ('+' , start );
13831386 }
1384- if ("Enter" .equals (text .substring (start ))) {
1385- maskKeysym .keysym = GDK .GDK_ISO_Enter ;
1387+ final String word = text .substring (start );
1388+ switch (word ) {
1389+ case "Del" , "Delete" -> maskKeysym .keysym = GDK .GDK_Delete ;
1390+ case "Enter" -> maskKeysym .keysym = GDK .GDK_ISO_Enter ;
1391+ case "Ins" , "Insert" -> maskKeysym .keysym = GDK .GDK_Insert ;
1392+ case "Ret" , "Return" -> maskKeysym .keysym = GDK .GDK_Return ;
1393+ case "Up" -> maskKeysym .keysym = GDK .GDK_Up ;
1394+ case "Down" -> maskKeysym .keysym = GDK .GDK_Down ;
1395+ case "Right" -> maskKeysym .keysym = GDK .GDK_Right ;
1396+ case "Left" -> maskKeysym .keysym = GDK .GDK_Left ;
1397+ case "Page Up" -> maskKeysym .keysym = GDK .GDK_Page_Up ;
1398+ case "Page Down" -> maskKeysym .keysym = GDK .GDK_Page_Down ;
1399+ case "Keypad +" , "Numpad +" -> maskKeysym .keysym = GDK .GDK_KP_Add ;
1400+ case "Keypad -" , "Numpad -" -> maskKeysym .keysym = GDK .GDK_KP_Subtract ;
1401+ case "Keypad *" , "Numpad *" -> maskKeysym .keysym = GDK .GDK_KP_Multiply ;
1402+ case "Keypad /" , "Numpad /" -> maskKeysym .keysym = GDK .GDK_KP_Divide ;
1403+ case "ESC" , "Escape" -> maskKeysym .keysym = GDK .GDK_Escape ;
1404+ case "Backspace" -> maskKeysym .keysym = GDK .GDK_BackSpace ;
1405+ case "Home" -> maskKeysym .keysym = GDK .GDK_Home ;
1406+ case "End" -> maskKeysym .keysym = GDK .GDK_End ;
1407+ case "Tab" -> maskKeysym .keysym = GDK .GDK_Tab ;
1408+ case "Space" -> maskKeysym .keysym = GDK .GDK_space ;
1409+ case "F1" -> maskKeysym .keysym = GDK .GDK_F1 ;
1410+ case "F2" -> maskKeysym .keysym = GDK .GDK_F2 ;
1411+ case "F3" -> maskKeysym .keysym = GDK .GDK_F3 ;
1412+ case "F4" -> maskKeysym .keysym = GDK .GDK_F4 ;
1413+ case "F5" -> maskKeysym .keysym = GDK .GDK_F5 ;
1414+ case "F6" -> maskKeysym .keysym = GDK .GDK_F6 ;
1415+ case "F7" -> maskKeysym .keysym = GDK .GDK_F7 ;
1416+ case "F8" -> maskKeysym .keysym = GDK .GDK_F8 ;
1417+ case "F9" -> maskKeysym .keysym = GDK .GDK_F9 ;
1418+ case "F10" -> maskKeysym .keysym = GDK .GDK_F10 ;
1419+ case "F11" -> maskKeysym .keysym = GDK .GDK_F11 ;
1420+ case "F12" -> maskKeysym .keysym = GDK .GDK_F12 ;
1421+ case "F13" -> maskKeysym .keysym = GDK .GDK_F13 ;
1422+ case "F14" -> maskKeysym .keysym = GDK .GDK_F14 ;
1423+ case "F15" -> maskKeysym .keysym = GDK .GDK_F15 ;
1424+ default -> {
1425+ if (word .length () == 1 ) {
1426+ maskKeysym .keysym = Converter .wcsToMbcs (word .charAt (0 ));
1427+ }
13861428 }
1387- switch (text .length () - start ) {
1388- case 1 :
1389- maskKeysym .keysym = text .charAt (start );
1390- maskKeysym .keysym = Converter .wcsToMbcs ((char ) maskKeysym .keysym );
1391- break ;
1392- case 2 :
1393- if (text .charAt (start ) == 'F' ) {
1394- switch (text .charAt (start + 1 )) {
1395- case '1' : maskKeysym .keysym = GDK .GDK_F1 ; break ;
1396- case '2' : maskKeysym .keysym = GDK .GDK_F2 ; break ;
1397- case '3' : maskKeysym .keysym = GDK .GDK_F3 ; break ;
1398- case '4' : maskKeysym .keysym = GDK .GDK_F4 ; break ;
1399- case '5' : maskKeysym .keysym = GDK .GDK_F5 ; break ;
1400- case '6' : maskKeysym .keysym = GDK .GDK_F6 ; break ;
1401- case '7' : maskKeysym .keysym = GDK .GDK_F7 ; break ;
1402- case '8' : maskKeysym .keysym = GDK .GDK_F8 ; break ;
1403- case '9' : maskKeysym .keysym = GDK .GDK_F9 ; break ;
1404- }
1405- }
1406- break ;
1407- case 3 :
1408- if (text .charAt (start ) == 'F' && text .charAt (start + 1 ) == '1' ) {
1409- switch (text .charAt (start + 2 )) {
1410- case '0' : maskKeysym .keysym = GDK .GDK_F10 ; break ;
1411- case '1' : maskKeysym .keysym = GDK .GDK_F11 ; break ;
1412- case '2' : maskKeysym .keysym = GDK .GDK_F12 ; break ;
1413- case '3' : maskKeysym .keysym = GDK .GDK_F13 ; break ;
1414- case '4' : maskKeysym .keysym = GDK .GDK_F14 ; break ;
1415- case '5' : maskKeysym .keysym = GDK .GDK_F15 ; break ;
1416- }
1417- }
1418- break ;
14191429 }
14201430 return maskKeysym ;
14211431}
1432+
14221433boolean updateAcceleratorText (boolean show ) {
14231434 if (accelerator != 0 ) return false ;
14241435 MaskKeysym maskKeysym = null ;
0 commit comments