| 233 | // if the key is a known non-character key (any key which doesn't generate character data) |
| 234 | // return its keysym value. Otherwise return null |
| 235 | function nonCharacterKey(evt) { |
| 236 | // evt.key not implemented yet |
| 237 | if (!evt.keyCode) { return null; } |
| 238 | var keycode = evt.keyCode; |
| 239 | |
| 240 | if (keycode >= 0x70 && keycode <= 0x87) { |
| 241 | return XK_F1 + keycode - 0x70; // F1-F24 |
| 242 | } |
| 243 | switch (keycode) { |
| 244 | |
| 245 | case 8 : return XK_BackSpace; |
| 246 | case 13 : return XK_Return; |
| 247 | |
| 248 | case 9 : return XK_Tab; |
| 249 | |
| 250 | case 27 : return XK_Escape; |
| 251 | case 46 : return XK_Delete; |
| 252 | |
| 253 | case 36 : return XK_Home; |
| 254 | case 35 : return XK_End; |
| 255 | case 33 : return XK_Page_Up; |
| 256 | case 34 : return XK_Page_Down; |
| 257 | case 45 : return XK_Insert; |
| 258 | |
| 259 | case 37 : return XK_Left; |
| 260 | case 38 : return XK_Up; |
| 261 | case 39 : return XK_Right; |
| 262 | case 40 : return XK_Down; |
| 263 | |
| 264 | case 16 : return XK_Shift_L; |
| 265 | case 17 : return XK_Control_L; |
| 266 | case 18 : return XK_Alt_L; // also: Option-key on Mac |
| 267 | |
| 268 | case 224 : return XK_Meta_L; |
| 269 | case 225 : return XK_ISO_Level3_Shift; // AltGr |
| 270 | case 91 : return XK_Super_L; // also: Windows-key |
| 271 | case 92 : return XK_Super_R; // also: Windows-key |
| 272 | case 93 : return XK_Menu; // also: Windows-Menu, Command on Mac |
| 273 | default: return null; |
| 274 | } |
| 275 | } |
| 276 | return { |
| 277 | hasShortcutModifier : hasShortcutModifier, |
| 278 | hasCharModifier : hasCharModifier, |