@@ -38,30 +38,38 @@ const handleKeyPress = function (e) {
38
38
console . log ( e ) ;
39
39
40
40
e . preventDefault ( ) ;
41
+
41
42
// Edge case mentioned in https://github.com/Mostafa-Abbasi/KeyboardTester/issues/4
42
43
// Detect AltGr key press (Alt + Control pressed simultaneously)
43
- const isAltGr = e . ctrlKey && e . altKey && ! e . shiftKey && ! e . metaKey ;
44
+ const isAltGr = e . key === 'AltGraph' ;
44
45
45
- let keyElement ;
46
+ // Ignore the left Control key if AltGr is pressed
46
47
if ( isAltGr ) {
47
- keyElement = document . querySelector ( '.' + 'AltRight' ) ;
48
- } else {
49
- keyElement = document . querySelector ( '.' + e . code . toLowerCase ( ) ) ;
48
+ document
49
+ . querySelector ( '.' + 'controlleft' )
50
+ . classList . remove ( 'key-pressing-simulation' ) ;
51
+
52
+ document
53
+ . querySelector ( '.' + 'controlleft' )
54
+ . classList . remove ( 'key--pressed' ) ;
50
55
}
51
56
57
+ const keyElement = document . querySelector ( '.' + e . code . toLowerCase ( ) ) ;
58
+
52
59
if ( e . type === 'keydown' ) {
53
60
keyElement . classList . add ( 'key-pressing-simulation' ) ;
54
61
} else if ( e . type === 'keyup' ) {
55
62
keyElement . classList . remove ( 'key-pressing-simulation' ) ;
56
63
}
57
64
58
- if ( ! keyElement . classList . contains ( 'key--pressed' ) )
65
+ if ( ! keyElement . classList . contains ( 'key--pressed' ) ) {
59
66
keyElement . classList . add ( 'key--pressed' ) ;
67
+ }
60
68
61
- // 'Meta' or 'OS' is a bit tricky and only in this way
62
- // we can reliably remove the class from the element
63
- if ( e . key === 'Meta' || e . key === 'OS' )
69
+ // Handle special Meta/OS key case
70
+ if ( e . key === 'Meta' || e . key === 'OS' ) {
64
71
keyElement . classList . remove ( 'key-pressing-simulation' ) ;
72
+ }
65
73
} ;
66
74
67
75
document . addEventListener ( 'keydown' , handleKeyPress ) ;
0 commit comments