Skip to content

feat(hid): rebind POP Keys' dedicated emoji keys - #726

Open
RafRaf wants to merge 1 commit into
AprilNEA:masterfrom
RafRaf:feat/pop-keys-emoji-bindings
Open

feat(hid): rebind POP Keys' dedicated emoji keys#726
RafRaf wants to merge 1 commit into
AprilNEA:masterfrom
RafRaf:feat/pop-keys-emoji-bindings

Conversation

@RafRaf

@RafRaf RafRaf commented Aug 20, 2026

Copy link
Copy Markdown

I recently picked up a POP Keys keyboard and wanted to remap the emoji row the same way I remap everything else on my Logi gear (I've actually swapped in some of the spare keycaps it ships with, so what's printed on my keys right now isn't even the stock heart-eyes/crying/smiley/tears set — more on why that doesn't matter below). Turns out OpenLogi has no way to bind those keys at all — 4 of POP Keys' 5 dedicated emoji keys aren't modeled as a ButtonId anywhere. Only the "open emoji panel" key was already covered (KeyEmoji).

This PR adds the missing four as new ButtonId variants (KeyEmojiHeartEyes, KeyEmojiCrying, KeyEmojiSmiley, KeyEmojiTears) and wires their CIDs (0x1040x107) into the 0x1b04 diversion table, so they're bindable in config.toml the same way KeySearch/KeyDictation/etc. already are. The naming/binding is by HID++ control ID, not by whatever's printed on the cap — since POP Keys keycaps are swappable, that's the only thing that actually stays stable per key.

I only did the config-side plumbing, not a dashboard entry — figured this counts as a small fix rather than a new feature. The Keys tab doesn't render this category of key at all yet (not even the existing 9), so a proper POP Keys render in the dashboard felt like its own, bigger effort and probably deserves a separate PR.

Tested locally on macOS — fmt/clippy/test --workspace all pass, and I confirmed live on my own POP Keys (spare caps and all) that it actually works:

[devices."direct:046d:b365:serial:xxxxxxxx".bindings]
KeyEmojiHeartEyes = { TypeText = "👍" }
KeyEmojiCrying = { TypeText = "❤️" }
KeyEmojiSmiley = { TypeText = "🔥" }
KeyEmojiTears = { TypeText = "😂" }

Happy to adjust naming or scope if you'd rather it done differently.

@RafRaf
RafRaf requested a review from AprilNEA as a code owner August 20, 2026 17:25
@greptile-apps

greptile-apps Bot commented Aug 20, 2026

Copy link
Copy Markdown

Greptile Summary

The PR makes four dedicated POP Keys emoji controls configurable through the existing HID++ keyboard-diversion path.

  • Adds append-only ButtonId variants and unbound defaults for the four controls.
  • Maps CIDs 0x01040x0107 into keyboard capture.
  • Documents an example POP Keys binding.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains.

Important Files Changed

Filename Overview
crates/openlogi-core/src/binding/button.rs Adds four append-only emoji-key identifiers and includes them in the keyboard-key set without changing existing serialized identifiers.
crates/openlogi-core/src/binding/defaults.rs Gives the new keyboard controls unbound defaults so their native behavior remains unless configured.
crates/openlogi-hid/src/session/keyboard.rs Maps the four POP Keys control IDs into the existing capability-gated HID++ diversion and event-dispatch flow.
docs/config.example.toml Adds a configuration example demonstrating a dedicated emoji-key binding.

Reviews (2): Last reviewed commit: "feat(hid): rebind POP Keys' dedicated em..." | Re-trigger Greptile

@davidbudnick davidbudnick added type: feature New feature request platform: all Cross-platform issue labels Aug 20, 2026
Four of POP Keys' five dedicated emoji keys (heart-eyes, crying,
smiley, tears) had no ButtonId at all, so they couldn't be rebound
anywhere. Add them as KeyEmoji* variants, wire their CIDs (0x104-0x107)
into the keyboard capture session's 0x1b04 diversion table, and default
them to Action::None like every other keyboard key.

Config-only for now, matching the existing 9 F-row keys: the GUI's
Keys tab doesn't render any keyboard key of this kind yet.
@RafRaf
RafRaf force-pushed the feat/pop-keys-emoji-bindings branch from 033c559 to fac0d46 Compare August 20, 2026 20:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

platform: all Cross-platform issue type: feature New feature request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants