macOS: shortcut keys now go through a virtual HID keyboard
When a button sends a keyboard shortcut, OpenLogi now presses the keys on a virtual keyboard named "OpenLogi Virtual Keyboard" instead of posting software key events. macOS handles these keys the way it handles keys from a USB keyboard. This is for shortcuts that work from a real keyboard but did not work from OpenLogi (#1653, #744). Apple granted OpenLogi the restricted HID virtual-device entitlement for this, and the signed OpenLogi Agent carries it (#1918, #1929).
- You do not need to grant a new permission. The agent's signing identity did not change, so your Accessibility and Input Monitoring grants keep working.
- If macOS does not let OpenLogi create the virtual keyboard, OpenLogi types the keys the old way.
- Only the signed release builds have it. Builds from source and dev builds still use the old way.
- To check that it is active, run
ioreg -r -c IOHIDUserDevice | grep "OpenLogi Virtual Keyboard"while OpenLogi runs. - If a shortcut now behaves differently than in 0.8.15, please open an issue.
What's Changed
- chore: track rust 1.99 as the stable floor by @AprilNEA in #1877
- feat(inject): type synthesized macOS keys through a virtual HID keyboard by @AprilNEA in #1918
- fix(agent): relaunch when Input Monitoring is granted after launch by @AprilNEA in #1919
- fix(deps): bump rustls-webpki and webpki roots for emSign advisories by @AprilNEA in #1924
- feat(inject,gui): slide desktop switches like a three-finger swipe by @AprilNEA in #1921
- feat(macos,gui): say when Secure Input pauses key remapping by @AprilNEA in #1926
- test(inject): check that the host's choice decides the next desktop switch by @AprilNEA in #1928
- feat(xtask,ci): sign the macOS agent with its HID virtual-device profile by @AprilNEA in #1929
- feat(core,agent,gui): pointer speed and precision mode for 0x2205 mice by @AprilNEA in #1922
- feat(release): ship Sparkle delta updates by @AprilNEA in #1925
- fix(device,agent): move linked devices after a keyboard that switches by itself by @AprilNEA in #1920
- fix(desktop): show Pointer tab for mice and trackballs with software scroll inversion by @spartak8310 in #1880
- feat(hidpp,device,agent): precision mode on mice with adjustable DPI by @AprilNEA in #1932
- fix(hidpp): keep unmodelled backlight option bits on write by @AprilNEA in #1933
- fix(device): restore thumb-wheel reporting as found and harden its capture by @AprilNEA in #1935
- fix(hidpp,device): write all 0x8070 zones safely and gate v1 functions by @AprilNEA in #1936
- fix(hidpp): gate the illumination effective maximum in its wrapper by @AprilNEA in #1937
- fix(hidpp): bound 0x2111 torque and refuse a short capabilities reply by @AprilNEA in #1939
- feat(pointer): light the DPI LED in precision mode by @AprilNEA in #1934
- fix(hidpp,device): re-read settings on a 0x4521 disabled-key report by @AprilNEA in #1940
- fix(hidpp,device,cli): keep getFwInfo transport bytes 9-15 raw by @AprilNEA in #1945
- fix(gui): save a DPI only after the device confirms it by @AprilNEA in #1943
- fix(hidpp,device): reconcile DPI after a sensor calibration broadcast by @AprilNEA in #1947
- fix(agent): hand the haptic enable back after Actions Ring sessions by @AprilNEA in #1942
- fix(device): drop short 0x2121 movements and re-read SmartShift on a ratchet switch by @AprilNEA in #1944
- fix(hidpp): decode unified battery status bytes 3-5 by feature version by @AprilNEA in #1941
- fix(hidpp,device): publish 0x1b04 reporting changes made by other clients by @AprilNEA in #1946
- fix(device): read the 0x1000 battery capability before mapping levels by @AprilNEA in #1938
- fix(hidpp,device): read the 0x2201 default DPI only from feature version 1 by @AprilNEA in #1952
- fix(gui): choose the receiver before pairing a device by @hornej in #1614
- fix(hidpp): publish the 0x8071 nv-effect sync event as raw bytes by @AprilNEA in #1951
- chore: release v0.8.16 by @AprilNEA[bot] in #1923
New Contributors
- @spartak8310 made their first contribution in #1880
- @hornej made their first contribution in #1614
Full Changelog: v0.8.15...v0.8.16