@@ -6,7 +6,7 @@ import { createDiv, stopPropagation } from "./helpers";
6
6
import { domToKeyCode , KBD_enter , KBD_leftshift ,
7
7
KBD_backspace , KBD_capslock , KBD_tab , KBD_space , KBD_esc ,
8
8
KBD_leftctrl , KBD_leftalt , KBD_comma , KBD_period , KBD_quote ,
9
- KBD_semicolon , KBD_leftbracket , KBD_rightbracket ,
9
+ KBD_semicolon , KBD_leftbracket , KBD_rightbracket , KBD_up , KBD_down , KBD_left , KBD_right ,
10
10
} from "./keys" ;
11
11
/* eslint-enable camelcase */
12
12
@@ -304,23 +304,39 @@ export class Layers {
304
304
305
305
const layout = {
306
306
en : [
307
- "{esc} ` 1 2 3 4 5 6 7 8 9 0 - = {bksp}" ,
308
- "q w e r t y u i o p { } \\" ,
309
- "a s d f g h j k l ; ' [ {enter }" ,
310
- "⎘ z x c v b n m , . / ] {space}" ,
307
+ "{esc} ` 1 2 3 4 5 6 7 8 9 0 () - = {bksp} {enter }" ,
308
+ "{tab} q w e r t y u i o p { } \\ {up} " ,
309
+ "{shift} {left} {right} a s d f g h j k l ; ' [ {down }" ,
310
+ "⎘ {alt} {ctrl} z x c v b n m , . / ] {space}" ,
311
311
] ,
312
312
} ;
313
313
const enLayoutDisplay = {
314
- "{esc}" : "ESC " ,
315
- "{bksp}" : "Backspace " ,
316
- "{enter}" : "⏎ " ,
314
+ "{esc}" : "␛ " ,
315
+ "{bksp}" : "⌫ " ,
316
+ "{enter}" : "↵ " ,
317
317
"{space}" : "Space" ,
318
+ "{up}" : "↑" ,
319
+ "{down}" : "↓" ,
320
+ "{left}" : "←" ,
321
+ "{right}" : "→" ,
322
+ "{shift}" : "⇑" ,
323
+ "{ctrl}" : "Ctrl" ,
324
+ "{alt}" : "Alt" ,
325
+ "{tab}" : "Tab" ,
318
326
} ;
319
327
const ruLayoutDisplay = {
320
- "{esc}" : "ESC " ,
321
- "{bksp}" : "Backspace " ,
322
- "{enter}" : "⏎ " ,
328
+ "{esc}" : "␛ " ,
329
+ "{bksp}" : "⌫ " ,
330
+ "{enter}" : "↵ " ,
323
331
"{space}" : "Space" ,
332
+ "{up}" : "↑" ,
333
+ "{down}" : "↓" ,
334
+ "{left}" : "←" ,
335
+ "{right}" : "→" ,
336
+ "{shift}" : "⇑" ,
337
+ "{alt}" : "Alt" ,
338
+ "{ctrl}" : "Ctrl" ,
339
+ "{tab}" : "Tab" ,
324
340
"q" : "й" , "w" : "ц" , "e" : "у" , "r" : "к" , "t" : "е" ,
325
341
"y" : "н" , "u" : "г" , "i" : "ш" , "o" : "щ" , "p" : "з" ,
326
342
"{" : "х" , "}" : "ъ" , "a" : "ф" , "s" : "ы" , "d" : "в" ,
@@ -337,12 +353,21 @@ export class Layers {
337
353
keyboardDiv . style . display = "none" ;
338
354
stopPropagation ( keyboardDiv ) ;
339
355
340
-
341
356
const keyboard = new Keyboard ( keyboardDiv , {
342
357
layout,
343
358
layoutName : "en" ,
344
359
display : displayOrder [ displayIndex ] ,
345
- onKeyPress : ( button ) => {
360
+ onKeyPress : ( button : string ) => {
361
+ if ( button === "⎘" ) {
362
+ return ;
363
+ }
364
+
365
+ const keyCodes = buttonToCode ( button ) ;
366
+ for ( const keyCode of keyCodes ) {
367
+ this . fireKeyDown ( keyCode ) ;
368
+ }
369
+ } ,
370
+ onKeyReleased : ( button : string ) => {
346
371
if ( button === "⎘" ) {
347
372
displayIndex = ( displayIndex + 1 ) % displayOrder . length ;
348
373
keyboard . setOptions ( {
@@ -352,18 +377,14 @@ export class Layers {
352
377
}
353
378
354
379
const keyCodes = buttonToCode ( button ) ;
355
- if ( keyCodes . length === 1 ) {
356
- this . fireKeyPress ( keyCodes [ 0 ] ) ;
357
- } else if ( keyCodes . length > 0 ) {
358
- this . fireKeysPress ( keyCodes ) ;
380
+ for ( const keyCode of keyCodes ) {
381
+ this . fireKeyUp ( keyCode ) ;
359
382
}
360
383
} ,
361
384
preventMouseDownDefault : true ,
362
385
preventMouseUpDefault : true ,
363
386
stopMouseDownPropagation : true ,
364
387
stopMouseUpPropagation : true ,
365
- autoUseTouchEvents : true ,
366
- useMouseEvents : true ,
367
388
} ) ;
368
389
369
390
this . toggleKeyboard = ( ) => {
@@ -432,10 +453,18 @@ function buttonToCode(button: string): number[] {
432
453
return [ KBD_space ] ;
433
454
} else if ( button === "{esc}" ) {
434
455
return [ KBD_esc ] ;
435
- } else if ( button === "ctrl" ) {
456
+ } else if ( button === "{ ctrl} " ) {
436
457
return [ KBD_leftctrl ] ;
437
458
} else if ( button === "{alt}" ) {
438
459
return [ KBD_leftalt ] ;
460
+ } else if ( button === "{up}" ) {
461
+ return [ KBD_up ] ;
462
+ } else if ( button === "{down}" ) {
463
+ return [ KBD_down ] ;
464
+ } else if ( button === "{left}" ) {
465
+ return [ KBD_left ] ;
466
+ } else if ( button === "{right}" ) {
467
+ return [ KBD_right ] ;
439
468
} else {
440
469
console . warn ( "Unknown button" , button ) ;
441
470
return [ ] ;
0 commit comments