Karabiner-DriverKit-VirtualHIDDevice icon indicating copy to clipboard operation
Karabiner-DriverKit-VirtualHIDDevice copied to clipboard

More than one virtual keyboard?

Open MuhammedZakir opened this issue 4 years ago • 3 comments
trafficstars

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:

  1. Press a modifier key, e.g. shift, on a keyboard (keyboardA).
  2. Press a key, e.g. f, on another keyboard (keyboardB).
  3. This will produce F.
  4. However, now, subsequent presses on keyboardB will produce non-shifted letter (e.g. f), rather than shifted letter (e.g. F).
  5. But on keyboardA, the first keypress after #2 will 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:

  1. Dext version: 1.15.0
  2. Uses report.keys.insert for all keys.
    • Does that create problems when used for modifier keys?
    • Anyway, I will try to use report.modifiers.insert instead to see if it solves the problem.
  3. Tried using a single socket, and unique socket per device.
    • Doesn't solve the problem.
  4. Code: https://github.com/kmonad/kmonad/blob/master/c_src/mac/dext.cpp

MuhammedZakir avatar Sep 26 '21 17:09 MuhammedZakir

@tekezo: Any suggestion/advice?

MuhammedZakir avatar Oct 10 '21 17:10 MuhammedZakir

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

tekezo avatar Oct 20 '21 04:10 tekezo

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.

MuhammedZakir avatar Mar 30 '22 21:03 MuhammedZakir