File: interception.md

package info (click to toggle)
rust-kanata 1.9.0-11
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,848 kB
  • sloc: sh: 33; makefile: 4
file content (18 lines) | stat: -rw-r--r-- 979 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 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.