Skip to content

WIP: K8850 4x4 (don't merge yet)#154

Open
yawor wants to merge 4 commits intokriomant:masterfrom
yawor:k8850_4x4
Open

WIP: K8850 4x4 (don't merge yet)#154
yawor wants to merge 4 commits intokriomant:masterfrom
yawor:k8850_4x4

Conversation

@yawor
Copy link
Copy Markdown

@yawor yawor commented Oct 29, 2025

This is a work in progress.

This PR adds support for a 4x4, 3 knob keyboard, which reports as 514c:8850 - mentioned in #153. As far as I've seen the VID/PID pair may not be unique enough to discern this keyboard from a different one (4x3, 4 knobs, mentioned in #136), so there may be a conflict with one or more types of keyboards with different implementations, so some mechanism is needed to select the correct implementation. For now I've assigned this new implementation to PID 8850 in this PR for development.

Currently all keyboard, multimedia and mouse bindings are implemented and seem to work properly. No LED support yet.

skarard added a commit to skarard/ch57x-keyboard-tool that referenced this pull request Mar 10, 2026
The 8850 uses a different mouse packet format than K884x. Confirmed via
Frida capture of mini_keyboard.exe and PR kriomant#154 by yawor:

- Position [5] starts mouse_data (not 0x00 padding like keyboard type)
- Format: [1, 4, 0, 0, modifier, 0, 0, buttons, 0, 0, dx, 0, 0, dy, 0, 0, wheel]
- Mouse modifier uses same firmware IDs (F1=Ctrl, F2=Shift, F3=Alt)
- Button bitmap: 1=left, 2=right, 4=middle

Hardware tested: clicks, scroll wheel, and mouse move all confirmed working.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
skarard added a commit to skarard/ch57x-keyboard-tool that referenced this pull request Mar 10, 2026
The 8850 uses a different mouse packet format than K884x. Confirmed via
Frida capture of mini_keyboard.exe and PR kriomant#154 by yawor:

- Position [5] starts mouse_data (not 0x00 padding like keyboard type)
- Format: [1, 4, 0, 0, modifier, 0, 0, buttons, 0, 0, dx, 0, 0, dy, 0, 0, wheel]
- Mouse modifier uses same firmware IDs (F1=Ctrl, F2=Shift, F3=Alt)
- Button bitmap: 1=left, 2=right, 4=middle

Hardware tested: clicks, scroll wheel, and mouse move all confirmed working.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
skarard added a commit to skarard/ch57x-keyboard-tool that referenced this pull request Mar 10, 2026
Map 0x8850 directly to Keyboard8850 (matching yawor's PR kriomant#154 approach).
Remove VENDOR_ID_ALT — users with VID 0x514C can use --vendor-id flag.
Revert find_device to upstream logic.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
skarard added a commit to skarard/ch57x-keyboard-tool that referenced this pull request Mar 10, 2026
Send the finalize packet [03 FD FE FF] after each bind_key call
(matching yawor's PR kriomant#154 approach) instead of adding a new trait
method. This keeps the Keyboard trait unchanged from upstream.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant