fix: correctly detect shift key only for uppercase letters #712
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
When I press the return key (
\r
) on macOS, thekey
object incorrectly indicates that theshift
key is also pressed:Root Cause
The previous logic inferred the shift key was pressed for any single character where
input[0].toUpperCase() === input[0]
. This included not only uppercase letters, but also control characters (like\r
) and symbols, leading to incorrect detection of the shift key.Solution
This PR updates the shift key detection logic to use a regular expression (
/^[A-Z]$/
) that matches only uppercase ASCII letters. Now,key.shift
will only be set totrue
when the input is an uppercase letter, and not for control characters or symbols.Testing
key.shift
totrue
.Q
) still setskey.shift
totrue
.