@@ -1372,50 +1372,60 @@ private MaskKeysym getMaskKeysym() {
1372
1372
int accelIndex = text .indexOf ('\t' );
1373
1373
if (accelIndex == -1 ) return null ;
1374
1374
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
+
1377
1381
String maskStr = text .substring (start , plusIndex );
1378
1382
if (maskStr .equals ("Ctrl" )) maskKeysym .mask |= GDK .GDK_CONTROL_MASK ;
1379
1383
if (maskStr .equals ("Shift" )) maskKeysym .mask |= GDK .GDK_SHIFT_MASK ;
1380
1384
if (maskStr .equals ("Alt" )) maskKeysym .mask |= GDK .GDK_MOD1_MASK ;
1381
1385
start = plusIndex + 1 ;
1382
- plusIndex = text .indexOf ('+' , start );
1383
1386
}
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
+ }
1386
1428
}
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 ;
1419
1429
}
1420
1430
return maskKeysym ;
1421
1431
}
0 commit comments