Compare commits

..

1 Commits

Author SHA1 Message Date
Daniel Lorch eced5b63fe
Merge 20f966c0ac into d79f359c43 2025-05-04 01:42:49 +00:00
1 changed files with 10 additions and 16 deletions

View File

@ -332,25 +332,19 @@ export default function WebRTCVideo() {
// Example: If altKey is true, keep all modifiers
// If altKey is false, filter out 0x04 (AltLeft)
//
// But intentionally do not filter out 0x40 (AltRight) to accomodate
// Alt Gr (Alt Graph) as a modifier. Oddly, Alt Gr does not declare
// itself to be an altKey. For example, the KeyboardEvent for
// Alt Gr + 2 has the following structure:
// But intentionally do not filter out 0x40 (AltRight) to enable Alt Gr
// (Alt Graph) as a modifier. The altKey attribute is set to false on
// key combinations involving the Alt Gr key, which means the modifier
// would otherwise be unintentionally removed from the filteredModifiers
// list.
//
// For example, the KeyboardEvent for Alt Gr + 2 has the following structure:
// - altKey: false
// - code: "Digit2"
// - type: ["keydown"|"keyup"]
//
// For context, filteredModifiers aims to keep track which modifiers
// are being pressed on the physical keyboard at any point in time.
// There is logic in the keyUpHandler and keyDownHandler to add and
// remove 0x40 (AltRight) from the list of new modifiers.
//
// But relying on the two handlers alone to track the state of the
// modifier bears the risk that the key up event for Alt Gr could
// get lost while the browser window is temporarily out of focus,
// which means the Alt Gr key state would then be "stuck". At this
// point, we would need to rely on the user to press Alt Gr again
// to properly release the state of that modifier.
// Adding and removing 0x40 (AltRight) from and to the list of active
// modifiers is handled by keyUpHandler an keyDownHandler.
.filter(
modifier =>
altKey ||