Compare commits

...

2 Commits

Author SHA1 Message Date
Daniel Lorch 7c91d373e3
Merge 909ae884e5 into d79f359c43 2025-05-08 05:49:34 +00:00
Daniel Lorch 909ae884e5 Improve description again 2025-05-08 07:49:30 +02:00
1 changed files with 16 additions and 10 deletions

View File

@ -332,19 +332,25 @@ 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 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:
// 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:
// - altKey: false
// - code: "Digit2"
// - type: ["keydown"|"keyup"]
// - type: [ "keydown" | "keyup" ]
//
// Adding and removing 0x40 (AltRight) from and to the list of active
// modifiers is handled by keyUpHandler an keyDownHandler.
// 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.
.filter(
modifier =>
altKey ||