JavaScript API for analog keyboard input.
- Everything by Wooting
- Everything by NuPhy
- Everything by DrunkDeer
- Razer Huntsman V2 AnalogR
- Razer Huntsman Mini AnalogR
- Razer Huntsman V3 ProR
- Razer Huntsman V3 Pro MiniR
- Razer Huntsman V3 Pro TenkeylessR
- Keychron Q1 HEP, F
- Keychron Q3 HEP, F
- Keychron Q5 HEP, F
- Keychron K2 HEP, F
- Lemokey P1 HEP, F
- Madlions MAD60HEP
- Madlions MAD68HEP
- Madlions MAD68RP
R Razer Synapse needs to be installed and running for analogue inputs to be received from this keyboard.
P The official firmware only supports polling, which can lead to lag and missed inputs.
FCustom firmware with full analog report functionality is available.
You can download and vendor the AnalogSense.js yourself, but you can also just load it straight from this repo:
<scriptsrc="https://analogsense.org/JavaScript-SDK/AnalogSense.js"></script>Once loaded, the following global functions become available:
analogsense.getDevices(): Promise<Device[]>analogsense.requestDevice(): Promise<Device | undefined>analogsense.scancodeToString(scancode: number): string
A device instance has the following members:
startListening(handler: function<void({scancode: int, value: float}[])>)stopListening()getProductName(): stringforget()dev: HIDDevice
The scancodes provided by this library are primarily HID scancodes; most keys are mapped as seen on usage page 0x07 (A = 0x04, B = 0x05, ...).
Control keys (usage page 0x0C) are mapped in the 0x3__ range, modulo 0x100:
0x3B5= Next Track0x3B6= Previous Track0x3B7= Stop Media0x3CD= Play/Pause0x394= Open File Explorer0x323= Open Browser Home Page
OEM-specific keys are mapped in the 0x4__ range:
0x401= Brightness Up0x402= Brightness Down0x403= Profile 10x404= Profile 20x405= Profile 30x408= Profile Switch0x409= Function Key (Fn)