Back to Kanata

Windows Interception driver implementation notes

docs/interception.md

1.11.0978 B
Original Source

Windows Interception driver implementation notes

  • Interception handle is !Send and !Sync
    • means a single thread should own both input and output
    • KbdOut will need to send keyboard output events to that thread as opposed to Linux using uinput and the original Windows code using SendInput which are independent of the input devices.
    • Maybe save channel in kanata struct as part of new kanata
  • Interception can filter for only keyboard events
    • should use this filter feature; don't want to intercept mouse
  • Need to save previous device for sending to, in case wait/receive (with timeout) don't return anything so that sending stuff can be sent to some device.
  • Input ScanCode maps to the keyberon KeyCode; they both use the USB standard codes.
    • For ease of integration will probably need to unfortunately convert it to an OsCode even though the processing loop will soon after just convert it back to KeyCode. Oh well.