houmain / keymapper

A cross-platform context-aware key remapper.
GNU General Public License v3.0
257 stars 21 forks source link

Feature: Device filter on Windows #107

Closed reidprichard closed 3 months ago

reidprichard commented 4 months ago

Cool project! I'm just wondering if implementation of the device filter in Windows is planned in the near term. My workflow depends on having per-device and per-application keybinds, and being able to do that all in a single cross-platform program would be incredible.

I'm currently using a combination of kmonad and keyd on Linux and AutoHotkey with AutoHotkey Interception on Windows and man is it annoying to keep up with all that.

There are a lot of remapper tools out there, but AFAIK yours is the only one that simultaneously allows device- and application-specific binds. Having both of those work cross-platform would be a killer feature. (Some sort of layering feature would be very cool too, but I think that can be worked around more easily.)

houmain commented 4 months ago

Hi, thanks! Yes, being able to filter by device also on Windows would be a valuable addition. I will try to implement it!

reidprichard commented 4 months ago

Great, I'd love to see that happen! For now I'm trying Kanata, but it's quite a different paradigm. Like Kmonad, it sets a map and layers for the entire keyboard, which has its advantages but is a bit cumbersome for one-off keybinds. I love the simplicity of your format with "in >> out", and the virtual keys concept is very useful.

Not sure if you are familiar with Rust (I'm not, sadly), but Kanata accomplishes device-specific remapping on Windows using the interception driver. Hopefully that's a more relevant example that AutoHotkey.

By the way - the reason I use device-specific keybinds is that I have a macropad with lots of buttons, and it's easier to set them to a-z than to find that many key combinations that are not commonly mapped in applications. One workaround I've used before is to set the macropad to the joystick buttons to remap in software. I don't see these buttons in Mozilla's key list from the readme - does that mean they're not supported?

rp1231 commented 4 months ago

This would be a great addition

houmain commented 3 months ago

Hi, this will be available in the upcoming 4.0.0 release which is already documented and testable in the next branch. It is also using the Interception driver, with its shortcoming (especially this open issue).

kbilsted commented 3 months ago

could be fun to play around with two numpad-keyboards and mapping them as one split keyboard

Zireael07 commented 2 months ago

@kbilsted This is exactly what I am going to be doing soon ;)