Karabiner-DriverKit-VirtualHIDDevice
Karabiner-DriverKit-VirtualHIDDevice copied to clipboard
More than one virtual keyboard?
Is it possible to create more than one virutal keyboard? In other words, Is it possible to create unique virtual keyboard, each corresponding to a captured (physical) keyboard?
I have encountered a problem when using a single virutal keyboard for more than one keyboard.
To reproduce:
- Press a modifier key, e.g.
shift, on a keyboard (keyboardA). - Press a key, e.g.
f, on another keyboard (keyboardB). - This will produce
F. - However, now, subsequent presses on keyboardB will produce non-shifted letter (e.g.
f), rather than shifted letter (e.g.F). - But on keyboardA, the first keypress after
#2will produce a non-shifted letter, and subsequent keypresses on that keyboard will produce shifted letters.
tl;dr -- holding a modifier key on 1 keyboard, and pressing a key on another keyboard creates problem.
Details:
- Dext version:
1.15.0 - Uses
report.keys.insertfor all keys.- Does that create problems when used for modifier keys?
- Anyway, I will try to use
report.modifiers.insertinstead to see if it solves the problem.
- Tried using a single socket, and unique socket per device.
- Doesn't solve the problem.
- Code: https://github.com/kmonad/kmonad/blob/master/c_src/mac/dext.cpp
@tekezo: Any suggestion/advice?
I changed to create new virtual device for each pqrs::karabiner::driverkit::virtual_hid_device_service::client since Karabiner-DriverKit-VirtualHIDDevice 1.24.0.
Example: https://github.com/pqrs-org/Karabiner-DriverKit-VirtualHIDDevice/blob/main/examples/virtual-hid-device-service-client/src/main.cpp
Thank you very much! :-)
What is the difference between using report.keys.insert and report.modifiers.insert for modifiers? KMonad is using the former, so I am wondering whether that would create any issues.