Skip to content

Commit

Permalink
correct meta keys in correctModifierKeys, see #1625
Browse files Browse the repository at this point in the history
  • Loading branch information
jessegreenberg committed Apr 1, 2024
1 parent 9ed4758 commit 108507b
Showing 1 changed file with 20 additions and 0 deletions.
20 changes: 20 additions & 0 deletions js/accessibility/KeyStateTracker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,9 @@ class KeyStateTracker {
if ( assert && !KeyboardUtils.isControlKey( domEvent ) ) {
assert( domEvent.ctrlKey === this.ctrlKeyDown, 'ctrl key inconsistency between event and keyState.' );
}
if ( assert && !KeyboardUtils.isMetaKey( domEvent ) ) {
assert( domEvent.metaKey === this.metaKeyDown, 'meta key inconsistency between event and keyState.' );
}

// if the key is already down, don't do anything else (we don't want to create a new keyState object
// for a key that is already being tracked and down)
Expand Down Expand Up @@ -210,6 +213,13 @@ class KeyStateTracker {
timeDown: 0 // in ms
};
}
if ( domEvent.metaKey && !KeyboardUtils.isMetaKey( domEvent ) && !this.metaKeyDown ) {
this.keyState[ KeyboardUtils.KEY_META_LEFT ] = {
keyDown: true,
key: key,
timeDown: 0 // in ms
};
}

// delete modifier keys if we think they are down
if ( !domEvent.shiftKey && this.shiftKeyDown ) {
Expand All @@ -224,6 +234,9 @@ class KeyStateTracker {
delete this.keyState[ KeyboardUtils.KEY_CONTROL_LEFT ];
delete this.keyState[ KeyboardUtils.KEY_CONTROL_RIGHT ];
}
if ( !domEvent.metaKey && this.metaKeyDown ) {
KeyboardUtils.META_KEYS.forEach( key => { delete this.keyState[ key ]; } );
}
}

/**
Expand Down Expand Up @@ -392,6 +405,13 @@ class KeyStateTracker {
return this.isAnyKeyInListDown( KeyboardUtils.CONTROL_KEYS );
}

/**
* Returns true if one of the meta keys is currently down.
*/
public get metaKeyDown(): boolean {
return this.isAnyKeyInListDown( KeyboardUtils.META_KEYS );
}

/**
* Returns the amount of time that the provided key has been held down. Error if the key is not currently down.
* @param key - KeyboardEvent.code for the key you are inspecting.
Expand Down

0 comments on commit 108507b

Please sign in to comment.