1:
37:
38:
39: package ;
40:
41: import ;
42:
43: import ;
44: import ;
45: import ;
46:
47:
80: public class KeyEvent extends InputEvent
81: {
82:
85: private static final long serialVersionUID = -2352130953028126954L;
86:
87:
88: public static final int KEY_FIRST = 400;
89:
90:
91: public static final int KEY_LAST = 402;
92:
93:
99: public static final int KEY_TYPED = 400;
100:
101:
102: public static final int KEY_PRESSED = 401;
103:
104:
105: public static final int KEY_RELEASED = 402;
106:
107:
108: public static final int VK_ENTER = '\n';
109:
110:
111: public static final int VK_BACK_SPACE = '\b';
112:
113:
114: public static final int VK_TAB = '\t';
115:
116:
117: public static final int VK_CANCEL = 3;
118:
119:
120: public static final int VK_CLEAR = 12;
121:
122:
123: public static final int VK_SHIFT = 16;
124:
125:
126: public static final int VK_CONTROL = 17;
127:
128:
129: public static final int VK_ALT = 18;
130:
131:
132: public static final int VK_PAUSE = 19;
133:
134:
135: public static final int VK_CAPS_LOCK = 20;
136:
137:
138: public static final int VK_ESCAPE = 27;
139:
140:
141: public static final int VK_SPACE = ' ';
142:
143:
144: public static final int VK_PAGE_UP = 33;
145:
146:
147: public static final int VK_PAGE_DOWN = 34;
148:
149:
150: public static final int VK_END = 35;
151:
152:
153: public static final int VK_HOME = 36;
154:
155:
160: public static final int VK_LEFT = 37;
161:
162:
167: public static final int VK_UP = 38;
168:
169:
174: public static final int VK_RIGHT = 39;
175:
176:
181: public static final int VK_DOWN = 40;
182:
183:
184: public static final int VK_COMMA = ',';
185:
186:
191: public static final int VK_MINUS = '-';
192:
193:
194: public static final int VK_PERIOD = '.';
195:
196:
197: public static final int VK_SLASH = '/';
198:
199:
200: public static final int VK_0 = '0';
201:
202:
203: public static final int VK_1 = '1';
204:
205:
206: public static final int VK_2 = '2';
207:
208:
209: public static final int VK_3 = '3';
210:
211:
212: public static final int VK_4 = '4';
213:
214:
215: public static final int VK_5 = '5';
216:
217:
218: public static final int VK_6 = '6';
219:
220:
221: public static final int VK_7 = '7';
222:
223:
224: public static final int VK_8 = '8';
225:
226:
227: public static final int VK_9 = '9';
228:
229:
230: public static final int VK_SEMICOLON = ';';
231:
232:
233: public static final int VK_EQUALS = '=';
234:
235:
236: public static final int VK_A = 'A';
237:
238:
239: public static final int VK_B = 'B';
240:
241:
242: public static final int VK_C = 'C';
243:
244:
245: public static final int VK_D = 'D';
246:
247:
248: public static final int VK_E = 'E';
249:
250:
251: public static final int VK_F = 'F';
252:
253:
254: public static final int VK_G = 'G';
255:
256:
257: public static final int VK_H = 'H';
258:
259:
260: public static final int VK_I = 'I';
261:
262:
263: public static final int VK_J = 'J';
264:
265:
266: public static final int VK_K = 'K';
267:
268:
269: public static final int VK_L = 'L';
270:
271:
272: public static final int VK_M = 'M';
273:
274:
275: public static final int VK_N = 'N';
276:
277:
278: public static final int VK_O = 'O';
279:
280:
281: public static final int VK_P = 'P';
282:
283:
284: public static final int VK_Q = 'Q';
285:
286:
287: public static final int VK_R = 'R';
288:
289:
290: public static final int VK_S = 'S';
291:
292:
293: public static final int VK_T = 'T';
294:
295:
296: public static final int VK_U = 'U';
297:
298:
299: public static final int VK_V = 'V';
300:
301:
302: public static final int VK_W = 'W';
303:
304:
305: public static final int VK_X = 'X';
306:
307:
308: public static final int VK_Y = 'Y';
309:
310:
311: public static final int VK_Z = 'Z';
312:
313:
314: public static final int VK_OPEN_BRACKET = '[';
315:
316:
317: public static final int VK_BACK_SLASH = '\\';
318:
319:
320: public static final int VK_CLOSE_BRACKET = ']';
321:
322:
323: public static final int VK_NUMPAD0 = 96;
324:
325:
326: public static final int VK_NUMPAD1 = 97;
327:
328:
329: public static final int VK_NUMPAD2 = 98;
330:
331:
332: public static final int VK_NUMPAD3 = 99;
333:
334:
335: public static final int VK_NUMPAD4 = 100;
336:
337:
338: public static final int VK_NUMPAD5 = 101;
339:
340:
341: public static final int VK_NUMPAD6 = 102;
342:
343:
344: public static final int VK_NUMPAD7 = 103;
345:
346:
347: public static final int VK_NUMPAD8 = 104;
348:
349:
350: public static final int VK_NUMPAD9 = 105;
351:
352:
353: public static final int VK_MULTIPLY = 106;
354:
355:
356: public static final int VK_ADD = 107;
357:
358:
364: public static final int VK_SEPARATER = 108;
365:
366:
371: public static final int VK_SEPARATOR = 108;
372:
373:
374: public static final int VK_SUBTRACT = 109;
375:
376:
377: public static final int VK_DECIMAL = 110;
378:
379:
380: public static final int VK_DIVIDE = 111;
381:
382:
383: public static final int VK_DELETE = 127;
384:
385:
386: public static final int VK_NUM_LOCK = 144;
387:
388:
389: public static final int VK_SCROLL_LOCK = 145;
390:
391:
392: public static final int VK_F1 = 112;
393:
394:
395: public static final int VK_F2 = 113;
396:
397:
398: public static final int VK_F3 = 114;
399:
400:
401: public static final int VK_F4 = 115;
402:
403:
404: public static final int VK_F5 = 116;
405:
406:
407: public static final int VK_F6 = 117;
408:
409:
410: public static final int VK_F7 = 118;
411:
412:
413: public static final int VK_F8 = 119;
414:
415:
416: public static final int VK_F9 = 120;
417:
418:
419: public static final int VK_F10 = 121;
420:
421:
422: public static final int VK_F11 = 122;
423:
424:
425: public static final int VK_F12 = 123;
426:
427:
432: public static final int VK_F13 = 61440;
433:
434:
439: public static final int VK_F14 = 61441;
440:
441:
446: public static final int VK_F15 = 61442;
447:
448:
453: public static final int VK_F16 = 61443;
454:
455:
460: public static final int VK_F17 = 61444;
461:
462:
467: public static final int VK_F18 = 61445;
468:
469:
474: public static final int VK_F19 = 61446;
475:
476:
481: public static final int VK_F20 = 61447;
482:
483:
488: public static final int VK_F21 = 61448;
489:
490:
495: public static final int VK_F22 = 61449;
496:
497:
502: public static final int VK_F23 = 61450;
503:
504:
509: public static final int VK_F24 = 61451;
510:
511:
512: public static final int VK_PRINTSCREEN = 154;
513:
514:
515: public static final int VK_INSERT = 155;
516:
517:
518: public static final int VK_HELP = 156;
519:
520:
521: public static final int VK_META = 157;
522:
523:
524: public static final int VK_BACK_QUOTE = 192;
525:
526:
527: public static final int VK_QUOTE = 222;
528:
529:
535: public static final int VK_KP_UP = 224;
536:
537:
543: public static final int VK_KP_DOWN = 225;
544:
545:
551: public static final int VK_KP_LEFT = 226;
552:
553:
559: public static final int VK_KP_RIGHT = 227;
560:
561:
566: public static final int VK_DEAD_GRAVE = 128;
567:
568:
573: public static final int VK_DEAD_ACUTE = 129;
574:
575:
580: public static final int VK_DEAD_CIRCUMFLEX = 130;
581:
582:
587: public static final int VK_DEAD_TILDE = 131;
588:
589:
594: public static final int VK_DEAD_MACRON = 132;
595:
596:
601: public static final int VK_DEAD_BREVE = 133;
602:
603:
608: public static final int VK_DEAD_ABOVEDOT = 134;
609:
610:
615: public static final int VK_DEAD_DIAERESIS = 135;
616:
617:
622: public static final int VK_DEAD_ABOVERING = 136;
623:
624:
629: public static final int VK_DEAD_DOUBLEACUTE = 137;
630:
631:
636: public static final int VK_DEAD_CARON = 138;
637:
638:
643: public static final int VK_DEAD_CEDILLA = 139;
644:
645:
650: public static final int VK_DEAD_OGONEK = 140;
651:
652:
657: public static final int VK_DEAD_IOTA = 141;
658:
659:
664: public static final int VK_DEAD_VOICED_SOUND = 142;
665:
666:
671: public static final int VK_DEAD_SEMIVOICED_SOUND = 143;
672:
673:
678: public static final int VK_AMPERSAND = 150;
679:
680:
685: public static final int VK_ASTERISK = 151;
686:
687:
692: public static final int VK_QUOTEDBL = 152;
693:
694:
699: public static final int VK_LESS = 153;
700:
701:
706: public static final int VK_GREATER = 160;
707:
708:
713: public static final int VK_BRACELEFT = 161;
714:
715:
720: public static final int VK_BRACERIGHT = 162;
721:
722:
727: public static final int VK_AT = 512;
728:
729:
734: public static final int VK_COLON = 513;
735:
736:
741: public static final int VK_CIRCUMFLEX = 514;
742:
743:
748: public static final int VK_DOLLAR = 515;
749:
750:
755: public static final int VK_EURO_SIGN = 516;
756:
757:
762: public static final int VK_EXCLAMATION_MARK = 517;
763:
764:
769: public static final int VK_INVERTED_EXCLAMATION_MARK = 518;
770:
771:
776: public static final int VK_LEFT_PARENTHESIS = 519;
777:
778:
783: public static final int VK_NUMBER_SIGN = 520;
784:
785:
790: public static final int VK_PLUS = 521;
791:
792:
797: public static final int VK_RIGHT_PARENTHESIS = 522;
798:
799:
804: public static final int VK_UNDERSCORE = 523;
805:
806:
807: public static final int VK_FINAL = 24;
808:
809:
810: public static final int VK_CONVERT = 28;
811:
812:
813: public static final int VK_NONCONVERT = 29;
814:
815:
816: public static final int VK_ACCEPT = 30;
817:
818:
819: public static final int VK_MODECHANGE = 31;
820:
821:
822: public static final int VK_KANA = 21;
823:
824:
825: public static final int VK_KANJI = 25;
826:
827:
832: public static final int VK_ALPHANUMERIC = 240;
833:
834:
839: public static final int VK_KATAKANA = 241;
840:
841:
846: public static final int VK_HIRAGANA = 242;
847:
848:
853: public static final int VK_FULL_WIDTH = 243;
854:
855:
860: public static final int VK_HALF_WIDTH = 244;
861:
862:
867: public static final int VK_ROMAN_CHARACTERS = 245;
868:
869:
874: public static final int VK_ALL_CANDIDATES = 256;
875:
876:
881: public static final int VK_PREVIOUS_CANDIDATE = 257;
882:
883:
888: public static final int VK_CODE_INPUT = 258;
889:
890:
895: public static final int VK_JAPANESE_KATAKANA = 259;
896:
897:
902: public static final int VK_JAPANESE_HIRAGANA = 260;
903:
904:
909: public static final int VK_JAPANESE_ROMAN = 261;
910:
911:
916: public static final int VK_KANA_LOCK = 262;
917:
918:
923: public static final int VK_INPUT_METHOD_ON_OFF = 263;
924:
925:
930: public static final int VK_CUT = 65489;
931:
932:
937: public static final int VK_COPY = 65485;
938:
939:
944: public static final int VK_PASTE = 65487;
945:
946:
951: public static final int VK_UNDO = 65483;
952:
953:
958: public static final int VK_AGAIN = 65481;
959:
960:
965: public static final int VK_FIND = 65488;
966:
967:
972: public static final int VK_PROPS = 65482;
973:
974:
979: public static final int VK_STOP = 65480;
980:
981:
986: public static final int VK_COMPOSE = 65312;
987:
988:
993: public static final int VK_ALT_GRAPH = 65406;
994:
995:
999: public static final int VK_UNDEFINED = 0;
1000:
1001:
1005: public static final char CHAR_UNDEFINED = '\uffff';
1006:
1007:
1013: public static final int KEY_LOCATION_UNKNOWN = 0;
1014:
1015:
1021: public static final int KEY_LOCATION_STANDARD = 1;
1022:
1023:
1029: public static final int KEY_LOCATION_LEFT = 2;
1030:
1031:
1037: public static final int KEY_LOCATION_RIGHT = 3;
1038:
1039:
1044: public static final int KEY_LOCATION_NUMPAD = 4;
1045:
1046:
1053: private int keyCode;
1054:
1055:
1062: private char keyChar;
1063:
1064:
1073: private final int keyLocation;
1074:
1075:
1083: private boolean isProxyActive;
1084:
1085:
1086:
1101: public KeyEvent(Component source, int id, long when, int modifiers,
1102: int keyCode, char keyChar, int keyLocation)
1103: {
1104: super(source, id, when, modifiers);
1105: this.keyCode = keyCode;
1106: this.keyChar = keyChar;
1107: this.keyLocation = keyLocation;
1108: if ((id == KEY_TYPED && (keyCode != VK_UNDEFINED
1109: || keyChar == CHAR_UNDEFINED))
1110: || keyLocation < KEY_LOCATION_UNKNOWN
1111: || keyLocation > KEY_LOCATION_NUMPAD)
1112: throw new IllegalArgumentException();
1113: }
1114:
1115:
1129: public KeyEvent(Component source, int id, long when, int modifiers,
1130: int keyCode, char keyChar)
1131: {
1132: this(source, id, when, modifiers, keyCode, keyChar, KEY_LOCATION_UNKNOWN);
1133: }
1134:
1135:
1149: public KeyEvent(Component source, int id, long when, int modifiers,
1150: int keyCode)
1151: {
1152: this(source, id, when, modifiers, keyCode, '\0', KEY_LOCATION_UNKNOWN);
1153: }
1154:
1155:
1162: public int getKeyCode()
1163: {
1164: return keyCode;
1165: }
1166:
1167:
1173: public void setKeyCode(int keyCode)
1174: {
1175: this.keyCode = keyCode;
1176: }
1177:
1178:
1185: public char getKeyChar()
1186: {
1187: return keyChar;
1188: }
1189:
1190:
1195: public void setKeyChar(char keyChar)
1196: {
1197: this.keyChar = keyChar;
1198: }
1199:
1200:
1211: public void setModifiers(int modifiers)
1212: {
1213: this.modifiers = EventModifier.extend(modifiers);
1214: }
1215:
1216:
1227: public int getKeyLocation()
1228: {
1229: return keyLocation;
1230: }
1231:
1232:
1240: public static String getKeyText(int keyCode)
1241: {
1242: switch (keyCode)
1243: {
1244: case VK_CANCEL:
1245: return "Cancel";
1246: case VK_BACK_SPACE:
1247: return "Backspace";
1248: case VK_TAB:
1249: return "Tab";
1250: case VK_ENTER:
1251: return "Enter";
1252: case VK_CLEAR:
1253: return "Clear";
1254: case VK_SHIFT:
1255: return "Shift";
1256: case VK_CONTROL:
1257: return "Ctrl";
1258: case VK_ALT:
1259: return "Alt";
1260: case VK_PAUSE:
1261: return "Pause";
1262: case VK_CAPS_LOCK:
1263: return "Caps Lock";
1264: case VK_KANA:
1265: return "Kana";
1266: case VK_FINAL:
1267: return "Final";
1268: case VK_KANJI:
1269: return "Kanji";
1270: case VK_ESCAPE:
1271: return "Escape";
1272: case VK_CONVERT:
1273: return "Convert";
1274: case VK_NONCONVERT:
1275: return "No Convert";
1276: case VK_ACCEPT:
1277: return "Accept";
1278: case VK_MODECHANGE:
1279: return "Mode Change";
1280: case VK_SPACE:
1281: return "Space";
1282: case VK_PAGE_UP:
1283: return "Page Up";
1284: case VK_PAGE_DOWN:
1285: return "Page Down";
1286: case VK_END:
1287: return "End";
1288: case VK_HOME:
1289: return "Home";
1290: case VK_LEFT:
1291: case VK_KP_LEFT:
1292: return "Left";
1293: case VK_UP:
1294: case VK_KP_UP:
1295: return "Up";
1296: case VK_RIGHT:
1297: case VK_KP_RIGHT:
1298: return "Right";
1299: case VK_DOWN:
1300: case VK_KP_DOWN:
1301: return "Down";
1302: case VK_MINUS:
1303: return "Minus";
1304: case VK_MULTIPLY:
1305: return "NumPad *";
1306: case VK_ADD:
1307: return "NumPad +";
1308: case VK_SEPARATOR:
1309: return "NumPad ,";
1310: case VK_SUBTRACT:
1311: return "NumPad -";
1312: case VK_DECIMAL:
1313: return "NumPad .";
1314: case VK_DIVIDE:
1315: return "NumPad /";
1316: case VK_DELETE:
1317: return "Delete";
1318: case VK_DEAD_GRAVE:
1319: return "Dead Grave";
1320: case VK_DEAD_ACUTE:
1321: return "Dead Acute";
1322: case VK_DEAD_CIRCUMFLEX:
1323: return "Dead Circumflex";
1324: case VK_DEAD_TILDE:
1325: return "Dead Tilde";
1326: case VK_DEAD_MACRON:
1327: return "Dead Macron";
1328: case VK_DEAD_BREVE:
1329: return "Dead Breve";
1330: case VK_DEAD_ABOVEDOT:
1331: return "Dead Above Dot";
1332: case VK_DEAD_DIAERESIS:
1333: return "Dead Diaeresis";
1334: case VK_DEAD_ABOVERING:
1335: return "Dead Above Ring";
1336: case VK_DEAD_DOUBLEACUTE:
1337: return "Dead Double Acute";
1338: case VK_DEAD_CARON:
1339: return "Dead Caron";
1340: case VK_DEAD_CEDILLA:
1341: return "Dead Cedilla";
1342: case VK_DEAD_OGONEK:
1343: return "Dead Ogonek";
1344: case VK_DEAD_IOTA:
1345: return "Dead Iota";
1346: case VK_DEAD_VOICED_SOUND:
1347: return "Dead Voiced Sound";
1348: case VK_DEAD_SEMIVOICED_SOUND:
1349: return "Dead Semivoiced Sound";
1350: case VK_NUM_LOCK:
1351: return "Num Lock";
1352: case VK_SCROLL_LOCK:
1353: return "Scroll Lock";
1354: case VK_AMPERSAND:
1355: return "Ampersand";
1356: case VK_ASTERISK:
1357: return "Asterisk";
1358: case VK_QUOTEDBL:
1359: return "Double Quote";
1360: case VK_LESS:
1361: return "Less";
1362: case VK_PRINTSCREEN:
1363: return "Print Screen";
1364: case VK_INSERT:
1365: return "Insert";
1366: case VK_HELP:
1367: return "Help";
1368: case VK_META:
1369: return "Meta";
1370: case VK_GREATER:
1371: return "Greater";
1372: case VK_BRACELEFT:
1373: return "Left Brace";
1374: case VK_BRACERIGHT:
1375: return "Right Brace";
1376: case VK_BACK_QUOTE:
1377: return "Back Quote";
1378: case VK_QUOTE:
1379: return "Quote";
1380: case VK_ALPHANUMERIC:
1381: return "Alphanumeric";
1382: case VK_KATAKANA:
1383: return "Katakana";
1384: case VK_HIRAGANA:
1385: return "Hiragana";
1386: case VK_FULL_WIDTH:
1387: return "Full-Width";
1388: case VK_HALF_WIDTH:
1389: return "Half-Width";
1390: case VK_ROMAN_CHARACTERS:
1391: return "Roman Characters";
1392: case VK_ALL_CANDIDATES:
1393: return "All Candidates";
1394: case VK_PREVIOUS_CANDIDATE:
1395: return "Previous Candidate";
1396: case VK_CODE_INPUT:
1397: return "Code Input";
1398: case VK_JAPANESE_KATAKANA:
1399: return "Japanese Katakana";
1400: case VK_JAPANESE_HIRAGANA:
1401: return "Japanese Hiragana";
1402: case VK_JAPANESE_ROMAN:
1403: return "Japanese Roman";
1404: case VK_KANA_LOCK:
1405: return "Kana Lock";
1406: case VK_INPUT_METHOD_ON_OFF:
1407: return "Input Method On/Off";
1408: case VK_AT:
1409: return "At";
1410: case VK_COLON:
1411: return "Colon";
1412: case VK_CIRCUMFLEX:
1413: return "Circumflex";
1414: case VK_DOLLAR:
1415: return "Dollar";
1416: case VK_EURO_SIGN:
1417: return "Euro";
1418: case VK_EXCLAMATION_MARK:
1419: return "Exclamation Mark";
1420: case VK_INVERTED_EXCLAMATION_MARK:
1421: return "Inverted Exclamation Mark";
1422: case VK_LEFT_PARENTHESIS:
1423: return "Left Parenthesis";
1424: case VK_NUMBER_SIGN:
1425: return "Number Sign";
1426: case VK_PLUS:
1427: return "Plus";
1428: case VK_RIGHT_PARENTHESIS:
1429: return "Right Parenthesis";
1430: case VK_UNDERSCORE:
1431: return "Underscore";
1432: case VK_COMPOSE:
1433: return "Compose";
1434: case VK_ALT_GRAPH:
1435: return "Alt Graph";
1436: case VK_STOP:
1437: return "Stop";
1438: case VK_AGAIN:
1439: return "Again";
1440: case VK_PROPS:
1441: return "Props";
1442: case VK_UNDO:
1443: return "Undo";
1444: case VK_COPY:
1445: return "Copy";
1446: case VK_PASTE:
1447: return "Paste";
1448: case VK_FIND:
1449: return "Find";
1450: case VK_CUT:
1451: return "Cut";
1452: case VK_COMMA:
1453: case VK_PERIOD:
1454: case VK_SLASH:
1455: case VK_0:
1456: case VK_1:
1457: case VK_2:
1458: case VK_3:
1459: case VK_4:
1460: case VK_5:
1461: case VK_6:
1462: case VK_7:
1463: case VK_8:
1464: case VK_9:
1465: case VK_SEMICOLON:
1466: case VK_EQUALS:
1467: case VK_A:
1468: case VK_B:
1469: case VK_C:
1470: case VK_D:
1471: case VK_E:
1472: case VK_F:
1473: case VK_G:
1474: case VK_H:
1475: case VK_I:
1476: case VK_J:
1477: case VK_K:
1478: case VK_L:
1479: case VK_M:
1480: case VK_N:
1481: case VK_O:
1482: case VK_P:
1483: case VK_Q:
1484: case VK_R:
1485: case VK_S:
1486: case VK_T:
1487: case VK_U:
1488: case VK_V:
1489: case VK_W:
1490: case VK_X:
1491: case VK_Y:
1492: case VK_Z:
1493: case VK_OPEN_BRACKET:
1494: case VK_BACK_SLASH:
1495: case VK_CLOSE_BRACKET:
1496: return "" + (char) keyCode;
1497: case VK_NUMPAD0:
1498: case VK_NUMPAD1:
1499: case VK_NUMPAD2:
1500: case VK_NUMPAD3:
1501: case VK_NUMPAD4:
1502: case VK_NUMPAD5:
1503: case VK_NUMPAD6:
1504: case VK_NUMPAD7:
1505: case VK_NUMPAD8:
1506: case VK_NUMPAD9:
1507: return "NumPad-" + (keyCode - VK_NUMPAD0);
1508: case VK_F1:
1509: case VK_F2:
1510: case VK_F3:
1511: case VK_F4:
1512: case VK_F5:
1513: case VK_F6:
1514: case VK_F7:
1515: case VK_F8:
1516: case VK_F9:
1517: case VK_F10:
1518: case VK_F11:
1519: case VK_F12:
1520: return "F" + (keyCode - (VK_F1 - 1));
1521: case VK_F13:
1522: case VK_F14:
1523: case VK_F15:
1524: case VK_F16:
1525: case VK_F17:
1526: case VK_F18:
1527: case VK_F19:
1528: case VK_F20:
1529: case VK_F21:
1530: case VK_F22:
1531: case VK_F23:
1532: case VK_F24:
1533: return "F" + (keyCode - (VK_F13 - 13));
1534: default:
1535:
1536: return "Unknown keyCode: 0x" + (keyCode < 0 ? "-" : "")
1537: + Integer.toHexString(Math.abs(keyCode));
1538: }
1539: }
1540:
1541:
1551: public static String getKeyModifiersText(int modifiers)
1552: {
1553: return getModifiersExText(EventModifier.extend(modifiers
1554: & EventModifier.OLD_MASK));
1555: }
1556:
1557:
1563: public boolean isActionKey()
1564: {
1565: switch (keyCode)
1566: {
1567: case VK_PAUSE:
1568: case VK_CAPS_LOCK:
1569: case VK_KANA:
1570: case VK_FINAL:
1571: case VK_KANJI:
1572: case VK_CONVERT:
1573: case VK_NONCONVERT:
1574: case VK_ACCEPT:
1575: case VK_MODECHANGE:
1576: case VK_PAGE_UP:
1577: case VK_PAGE_DOWN:
1578: case VK_END:
1579: case VK_HOME:
1580: case VK_LEFT:
1581: case VK_UP:
1582: case VK_RIGHT:
1583: case VK_DOWN:
1584: case VK_F1:
1585: case VK_F2:
1586: case VK_F3:
1587: case VK_F4:
1588: case VK_F5:
1589: case VK_F6:
1590: case VK_F7:
1591: case VK_F8:
1592: case VK_F9:
1593: case VK_F10:
1594: case VK_F11:
1595: case VK_F12:
1596: case VK_NUM_LOCK:
1597: case VK_SCROLL_LOCK:
1598: case VK_PRINTSCREEN:
1599: case VK_INSERT:
1600: case VK_HELP:
1601: case VK_KP_UP:
1602: case VK_KP_DOWN:
1603: case VK_KP_LEFT:
1604: case VK_KP_RIGHT:
1605: case VK_ALPHANUMERIC:
1606: case VK_KATAKANA:
1607: case VK_HIRAGANA:
1608: case VK_FULL_WIDTH:
1609: case VK_HALF_WIDTH:
1610: case VK_ROMAN_CHARACTERS:
1611: case VK_ALL_CANDIDATES:
1612: case VK_PREVIOUS_CANDIDATE:
1613: case VK_CODE_INPUT:
1614: case VK_JAPANESE_KATAKANA:
1615: case VK_JAPANESE_HIRAGANA:
1616: case VK_JAPANESE_ROMAN:
1617: case VK_KANA_LOCK:
1618: case VK_INPUT_METHOD_ON_OFF:
1619: case VK_F13:
1620: case VK_F14:
1621: case VK_F15:
1622: case VK_F16:
1623: case VK_F17:
1624: case VK_F18:
1625: case VK_F19:
1626: case VK_F20:
1627: case VK_F21:
1628: case VK_F22:
1629: case VK_F23:
1630: case VK_F24:
1631: case VK_STOP:
1632: case VK_AGAIN:
1633: case VK_PROPS:
1634: case VK_UNDO:
1635: case VK_COPY:
1636: case VK_PASTE:
1637: case VK_FIND:
1638: case VK_CUT:
1639: return true;
1640: default:
1641: return false;
1642: }
1643: }
1644:
1645:
1653: public String paramString()
1654: {
1655: StringBuffer s = new StringBuffer();
1656:
1657: switch (id)
1658: {
1659: case KEY_PRESSED:
1660: s.append("KEY_PRESSED");
1661: break;
1662: case KEY_RELEASED:
1663: s.append("KEY_RELEASED");
1664: break;
1665: case KEY_TYPED:
1666: s.append("KEY_TYPED");
1667: break;
1668: default:
1669: s.append("unknown type");
1670: }
1671:
1672: s.append(",keyCode=").append(keyCode);
1673:
1674: s.append(",keyText=").append(getKeyText(keyCode));
1675:
1676: s.append(",keyChar=");
1677: if (isActionKey()
1678: || keyCode == VK_SHIFT
1679: || keyCode == VK_CONTROL
1680: || keyCode == VK_ALT)
1681: s.append("Undefined keyChar");
1682: else
1683: {
1684:
1688: if (keyChar == VK_BACK_SPACE
1689: || keyChar == VK_TAB
1690: || keyChar == VK_ENTER
1691: || keyChar == VK_ESCAPE
1692: || keyChar == VK_DELETE)
1693: s.append(getKeyText(keyChar));
1694: else
1695: s.append("'").append(keyChar).append("'");
1696: }
1697:
1698: if ((modifiers & CONVERT_MASK) != 0)
1699: s.append(",modifiers=").append(getModifiersExText(modifiers
1700: & CONVERT_MASK));
1701: if (modifiers != 0)
1702: s.append(",extModifiers=").append(getModifiersExText(modifiers));
1703:
1704: s.append(",keyLocation=KEY_LOCATION_");
1705: switch (keyLocation)
1706: {
1707: case KEY_LOCATION_UNKNOWN:
1708: s.append("UNKNOWN");
1709: break;
1710: case KEY_LOCATION_STANDARD:
1711: s.append("STANDARD");
1712: break;
1713: case KEY_LOCATION_LEFT:
1714: s.append("LEFT");
1715: break;
1716: case KEY_LOCATION_RIGHT:
1717: s.append("RIGHT");
1718: break;
1719: case KEY_LOCATION_NUMPAD:
1720: s.append("NUMPAD");
1721: }
1722:
1723: return s.toString();
1724: }
1725:
1726:
1734: private void readObject(ObjectInputStream s)
1735: throws IOException, ClassNotFoundException
1736: {
1737: s.defaultReadObject();
1738: modifiersEx = EventModifier.extend(modifiers) & EventModifier.NEW_MASK;
1739: }
1740: }