Skip to content

Preserve left and right modifier identity during canonical key normalization #83

Description

@gravity-api

Problem

LocalExtensions.cs:53-54 maps generic "Shift" to "LShift", silently resolving side ambiguity by picking left. Worse: the manifest (SendUser32KeyboardKey.json) has no left/right variants for Control or Alt at all (only generic "Control"/"Ctrl" line 646/652, "Alt" line 598) — side identity can't even be expressed for those two modifiers today.

Proposed change

Stop silently resolving generic "Shift" to "LShift" (require the caller to specify a side, or track side from the actual captured event upstream), and add LControl/RControl/LAlt/RAlt to the manifest's key vocabulary so side identity can be expressed and preserved end-to-end.

Compatibility requirements

  1. Manifest vocabulary change — coordinate with Align the manifest key list with the executable driver vocabulary #87 and with driver-side support for the new key names.

Acceptance criteria

  1. Left and right Shift, Control, and Alt are each distinctly representable and preserved through normalization.
  2. The manifest declares all six variants.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions