pqrs-org / Karabiner-Elements

Karabiner-Elements is a powerful utility for keyboard customization on macOS Sierra (10.12) or later.
https://pqrs.org/osx/karabiner/
The Unlicense
18.56k stars 834 forks source link

Karabiner completely broken on macOS Big Sur #2331

Closed MperorM closed 1 week ago

MperorM commented 4 years ago

It seems the beta broke Karabiner completely. The program opens and runs, but doesn't actually modify any keys.

Re-entering configurations does not fix it, nor does messing around with permissions to my knowledge.

markemer commented 4 years ago

Is there a branch with the DriverKit development? I'd love to help out if help is needed. Otherwise, I'll just wait for 13.0.0 - it's my penalty for being a developer and using the beta.

nikitavoloboev commented 4 years ago

There is no DriverKit branch yet in Karabiner Elements repo. But the DriverKit repo itself is here https://github.com/pqrs-org/Karabiner-DriverKit-VirtualHIDDevice.

Can read https://github.com/pqrs-org/Karabiner-DriverKit-VirtualHIDDevice/blob/master/DEVELOPMENT.md if you want to help out.

captaindooley commented 4 years ago

I built a tool that you can use to generate simple key remaps using hidutil until Karabiner gets fixed. I've always used Karabiner for a single key remap, so using hidutil is perfect for me. Inspired by @chuyeow.

https://hidutil-generator.netlify.app/

Code: https://github.com/amarsyla/hidutil-key-remapping-generator

I'm new to using hidutil... I used your tool but I'm having no luck with it. My application is remapping F-keys on an external keyboard to the standard Mac multimedia-type keys. Do I need to do anything different for it to work with an external keyboard or these specific keys?

oivindoh commented 4 years ago

There appears to be an active DriverKit branch now FWIW

bosr commented 4 years ago

There is indeed a lot of work, with a merge onto master + a beta released earlier today: https://karabiner-elements.pqrs.org/docs/macos-big-sur

Hansanghyeon commented 4 years ago

There is indeed a lot of work, with a merge onto master + a beta released earlier today: karabiner-elements.pqrs.org/docs/macos-big-sur

@bosr

It doesn't seem to be working normally. I hope this capture was helpful.

My Mac version is 11.0 beta (20A5354i)

스크린샷 2020-09-10 오전 1 32 58
kennonb commented 4 years ago

@Hansanghyeon I'm seeing "Connection refused" with the new DriverKit beta in Big Sur as well. 🙁

I've tried everything I can think of, but not having any luck.

[2020-09-09 12:36:26.942] [info] [grabber] virtual_hid_device_service_client_ connected
[2020-09-09 12:36:26.942] [info] [observer] matching device:
[2020-09-09 12:36:26.942] [info] [observer]   registry_entry_id: 4294971521
[2020-09-09 12:36:26.942] [info] [observer]   manufacturer: pqrs.org
[2020-09-09 12:36:26.942] [info] [observer]   product: Karabiner DriverKit VirtualHIDKeyboard 1.0.0
[2020-09-09 12:36:26.942] [info] [observer]   vendor_id: 5824
[2020-09-09 12:36:26.942] [info] [observer]   product_id: 10203
[2020-09-09 12:36:26.942] [info] [observer]   location_id: 0x0
[2020-09-09 12:36:26.942] [info] [observer]   serial_number: pqrs.org:Karabiner-DriverKit-VirtualHIDKeyboard
[2020-09-09 12:36:26.944] [info] [observer]   is_keyboard: true
[2020-09-09 12:36:26.946] [info] [observer]   is_pointing_device: false
[2020-09-09 12:36:26.946] [info] [observer] rescan devices...
[2020-09-09 12:36:26.951] [info] [observer] Karabiner DriverKit VirtualHIDKeyboard 1.0.0 (device_id:4294971521) is observed.
[2020-09-09 12:36:27.634] [info] [observer] device_id:4294971521 is terminated.
[2020-09-09 12:36:27.637] [info] [observer] rescan devices...
[2020-09-09 12:36:27.937] [info] [grabber] virtual_hid_device_service_client_ error_occurred: Connection reset by peer
[2020-09-09 12:36:27.938] [info] [grabber] virtual_hid_device_service_client_ closed
[2020-09-09 12:36:27.938] [info] [grabber] virtual_hid_device_service_client_ connect_failed: Connection refused
[2020-09-09 12:36:28.938] [info] [grabber] virtual_hid_device_service_client_ connect_failed: Connection refused
answer-huang commented 4 years ago

@Hansanghyeon I'm seeing "Connection refused" with the new DriverKit beta in Big Sur as well. 🙁

I've tried everything I can think of, but not having any luck.

[2020-09-09 12:36:26.942] [info] [grabber] virtual_hid_device_service_client_ connected
[2020-09-09 12:36:26.942] [info] [observer] matching device:
[2020-09-09 12:36:26.942] [info] [observer]   registry_entry_id: 4294971521
[2020-09-09 12:36:26.942] [info] [observer]   manufacturer: pqrs.org
[2020-09-09 12:36:26.942] [info] [observer]   product: Karabiner DriverKit VirtualHIDKeyboard 1.0.0
[2020-09-09 12:36:26.942] [info] [observer]   vendor_id: 5824
[2020-09-09 12:36:26.942] [info] [observer]   product_id: 10203
[2020-09-09 12:36:26.942] [info] [observer]   location_id: 0x0
[2020-09-09 12:36:26.942] [info] [observer]   serial_number: pqrs.org:Karabiner-DriverKit-VirtualHIDKeyboard
[2020-09-09 12:36:26.944] [info] [observer]   is_keyboard: true
[2020-09-09 12:36:26.946] [info] [observer]   is_pointing_device: false
[2020-09-09 12:36:26.946] [info] [observer] rescan devices...
[2020-09-09 12:36:26.951] [info] [observer] Karabiner DriverKit VirtualHIDKeyboard 1.0.0 (device_id:4294971521) is observed.
[2020-09-09 12:36:27.634] [info] [observer] device_id:4294971521 is terminated.
[2020-09-09 12:36:27.637] [info] [observer] rescan devices...
[2020-09-09 12:36:27.937] [info] [grabber] virtual_hid_device_service_client_ error_occurred: Connection reset by peer
[2020-09-09 12:36:27.938] [info] [grabber] virtual_hid_device_service_client_ closed
[2020-09-09 12:36:27.938] [info] [grabber] virtual_hid_device_service_client_ connect_failed: Connection refused
[2020-09-09 12:36:28.938] [info] [grabber] virtual_hid_device_service_client_ connect_failed: Connection refused

same here

mrmurphy commented 4 years ago

Same here:

image image

I just upgraded to beta 6. I've rebooted the computer, unloaded, and re-loaded the extension.

nikitavoloboev commented 4 years ago

https://karabiner-elements.pqrs.org/docs/macos-big-sur/

Read the important notice. It doesn't work on beta 6

saagarjha commented 4 years ago

It seems to me that the notice says that it will stop working after a restart, not that it doesn't work at all?

mrmurphy commented 4 years ago

Agreed, I followed the instructions here that come after:

You have to reinstall the driver by the following way every reboot on macOS Big Sur Beta 6.

which I think should mean that it works on beta 6 after following those instructions?

saagarjha commented 4 years ago

Looks like the driver is crashing?

Process 18425 stopped
* thread #2, stop reason = EXC_BAD_ACCESS (code=1, address=0x10)
    frame #0: 0x0000000102552b74 Karabiner-DriverKit-VirtualHIDDeviceClient`pqrs::dispatcher::extra::dispatcher_client::enqueue_to_dispatcher(std::__1::function<void ()> const&, std::__1::chrono::time_point<std::__1::chrono::system_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000l> > >) const + 20
Karabiner-DriverKit-VirtualHIDDeviceClient`pqrs::dispatcher::extra::dispatcher_client::enqueue_to_dispatcher:
->  0x102552b74 <+20>: ldr    x0, [x0, #0x10]
    0x102552b78 <+24>: cbz    x0, 0x102552bb8           ; <+88>
    0x102552b7c <+28>: mov    x20, x2
    0x102552b80 <+32>: mov    x21, x1
Target 0: (Karabiner-DriverKit-VirtualHIDDeviceClient) stopped.
(lldb) bt
* thread #2, stop reason = EXC_BAD_ACCESS (code=1, address=0x10)
  * frame #0: 0x0000000102552b74 Karabiner-DriverKit-VirtualHIDDeviceClient`pqrs::dispatcher::extra::dispatcher_client::enqueue_to_dispatcher(std::__1::function<void ()> const&, std::__1::chrono::time_point<std::__1::chrono::system_clock, std::__1::chrono::duration<long long, std::__1::ratio<1l, 1000l> > >) const + 20
    frame #1: 0x000000010257424c Karabiner-DriverKit-VirtualHIDDeviceClient`io_service_client::async_virtual_hid_pointing_ready() + 64
    frame #2: 0x0000000102573d6c Karabiner-DriverKit-VirtualHIDDeviceClient`pqrs::dispatcher::extra::timer::call_function(int) + 76
    frame #3: 0x0000000102526ebc Karabiner-DriverKit-VirtualHIDDeviceClient`pqrs::dispatcher::dispatcher::dispatcher(std::__1::weak_ptr<pqrs::dispatcher::time_source>)::'lambda'()::operator()() const + 488
    frame #4: 0x0000000102526c5c Karabiner-DriverKit-VirtualHIDDeviceClient`void* std::__1::__thread_proxy<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, pqrs::dispatcher::dispatcher::dispatcher(std::__1::weak_ptr<pqrs::dispatcher::time_source>)::'lambda'()> >(void*) + 44
    frame #5: 0x00000001948f50f8 libsystem_pthread.dylib`_pthread_start + 320
saagarjha commented 4 years ago

Ok, let's break atasync_virtual_hid_pointing_ready:

(lldb) b async_virtual_hid_pointing_ready
Breakpoint 1: where = Karabiner-DriverKit-VirtualHIDDeviceClient`io_service_client::async_virtual_hid_pointing_ready(), address = 0x00000001040f820c
(lldb) c
Process 19000 resuming
Process 19000 stopped
* thread #2, stop reason = breakpoint 1.1
    frame #0: 0x00000001040f820c Karabiner-DriverKit-VirtualHIDDeviceClient`io_service_client::async_virtual_hid_pointing_ready()
Karabiner-DriverKit-VirtualHIDDeviceClient`io_service_client::async_virtual_hid_pointing_ready:
->  0x1040f820c <+0>:  sub    sp, sp, #0x50             ; =0x50 
    0x1040f8210 <+4>:  stp    x20, x19, [sp, #0x30]
    0x1040f8214 <+8>:  stp    x29, x30, [sp, #0x40]
    0x1040f8218 <+12>: add    x29, sp, #0x40            ; =0x40 
Target 0: (Karabiner-DriverKit-VirtualHIDDeviceClient) stopped.

this seems to be nullptr:

(lldb) p $x0
(unsigned long) $0 = 0

If you go up a frame, there's a a test and a load from it (the nullptr check, and the vtable call, from this code apparently) so that must have worked:

(lldb) up
frame #1: 0x00000001040f7d6c Karabiner-DriverKit-VirtualHIDDeviceClient`pqrs::dispatcher::extra::timer::call_function(int) + 76
Karabiner-DriverKit-VirtualHIDDeviceClient`pqrs::dispatcher::extra::timer::call_function:
->  0x1040f7d6c <+76>: ldr    x20, [x19]
    0x1040f7d70 <+80>: adr    x8, #0x19790              ; vtable for std::__1::__function::__func<pqrs::dispatcher::extra::timer::call_function(int)::'lambda'(), std::__1::allocator<pqrs::dispatcher::extra::timer::call_function(int)::'lambda'()>, void ()> + 16
    0x1040f7d74 <+84>: nop    
    0x1040f7d78 <+88>: mov    w9, w21
(lldb) x/10i $pc-16
    0x1040f7d5c: 0xb4000080   cbz    x0, 0x1040f7d6c           ; <+76>
    0x1040f7d60: 0xf9400008   ldr    x8, [x0]
    0x1040f7d64: 0xf9401908   ldr    x8, [x8, #0x30]
    0x1040f7d68: 0xd63f0100   blr    x8
->  0x1040f7d6c: 0xf9400274   ldr    x20, [x19]
    0x1040f7d70: 0x100cbc88   adr    x8, #0x19790              ; vtable for std::__1::__function::__func<pqrs::dispatcher::extra::timer::call_function(int)::'lambda'(), std::__1::allocator<pqrs::dispatcher::extra::timer::call_function(int)::'lambda'()>, void ()> + 16
    0x1040f7d74: 0xd503201f   nop    
    0x1040f7d78: 0x2a1503e9   mov    w9, w21
    0x1040f7d7c: 0xa900cfe8   stp    x8, x19, [sp, #0x8]
    0x1040f7d80: 0x910023f5   add    x21, sp, #0x8             ; =0x8 

So I would guess a missing lock?

tekezo commented 4 years ago

@saagarjha Thank you for feedback! I released new version (12.93.0) which fixed a bug. Please confirm it. https://karabiner-elements.pqrs.org/docs/macos-big-sur/

saagarjha commented 4 years ago

Guess who can't read? Yep, it's me. Thanks for finding the actual fix, @tekezo :P 12.93.0 is looking good from my side; I'm glad to have Karabiner back :)

cumanzor commented 4 years ago

@saagarjha Thank you for feedback! I released new version (12.93.0) which fixed a bug. Please confirm it. https://karabiner-elements.pqrs.org/docs/macos-big-sur/

Confirming it works on Beta 8 6. Thanks!!!!!

saagarjha commented 4 years ago

Beta 8

Do you mean beta 6, or…

cumanzor commented 4 years ago

Beta 8

Do you mean beta 6, or…

Beta 6 yeah, sorry, too excited!

gondalez commented 4 years ago

Thanks for the release, I can confirm this works on Big Sur beta 6 also 🏅

Initially I got a "something went wrong" error when trying to open the Security & Privacy prefpane to allow access. After jumping through some hoops I got it running.

The hoops, for future travellers:

mrmurphy commented 4 years ago

🎉🎉🎉🎉 aaahhh it's so nice to have karabiner back finally!

rileytwo commented 4 years ago

Also working on Catalina and seems to have fixed this issue where the system would hang when shutting down or restarting

bosr commented 3 years ago

@tekezo On the latest beta (7), Karabiner-Elements reloads without a problem on reboot. 🥳

theniceboy commented 3 years ago

Hi, should I clone this repo and build from source for now, or should I download v12.10.0? I'm on Big Sur beta 7.

Thank y'all for the great work btw!

saagarjha commented 3 years ago

Use version 12.93.0 posted above.

Edit: there's a 12.94.0, use that

bosr commented 3 years ago

Hi, you can get the link to the beta here above: https://github.com/pqrs-org/Karabiner-Elements/issues/2331#issuecomment-689890790

theniceboy commented 3 years ago

Thank you! @saagarjha @bosr

gregkerr commented 3 years ago

For me, @gondalez solution worked because I (1) uninstalled all traces of Karabiner, (2) THEN opened Security and Privacy AND LEFT IT OPEN, (3) installed Karabiner 12.95.0. Previously, if the Sec and Priv was not already open, the Karabiner installation would fail because opening Sec and Priv crashed.

vviikk commented 3 years ago

On Big Sur Beta 8, I needed to open Karabiner, check for beta updates, install, and that was it. Everything worked!

Oh and not sure if it's related, but if your on board keyboard is unresponsive, reset the PRAM (Cmd + Opt + P + R) and you're good to go. Yay. Everything seems to work. Even after reboot.

EDIT: Although after an update, you need to do the above steps from @gondalez again.

huangzonghao commented 3 years ago

Just upgraded to 11.0.1. My observation is that karabiner somehow completely disables the internal keyboard on macbook pro A1704. External keyboard works fine. I wasn't able to get the internal keyboard back running with karabiner. So I just temporarily removed karabiner's entries from the LaunchAgents directory. Upgrading major versions of mac os is always such a big pain..... Still remember clearly how sierra bloodily killed the original karabiner...

mathsmathsmaths commented 3 years ago

If you are doing only simple remapping, you can use Apple's built-in hidutil tool.

This was good enough for me (I only have 2 simple remaps - Caps Lock to Esc, and Esc to backtick). You can refer to this gist - I linked to an explainer blog post that I wrote from the gist in case you need a little bit more help.

This is useful except there is one simple remap that I cannot live with: fn to left mouse click. Any way to accomplish this? Thanks

rublev commented 3 years ago

On Big Sur Beta 8, I needed to open Karabiner, check for beta updates, install, and that was it. Everything worked!

Oh and not sure if it's related, but if your on board keyboard is unresponsive, reset the PRAM (Cmd + Opt + P + R) and you're good to go. Yay. Everything seems to work. Even after reboot.

EDIT: Although after an update, you need to do the above steps from @gondalez again.

You're able to shutdown/restart just fine? I literally cant turn my macbook off or sleep it, even after removing KArabiner. Its basically always on. No idea how to fix this. I'm on a macbook air M1 with big sur and the latest karabiner.

ghost commented 3 years ago

@rublev Please follow along under issue #2519 for sleep issues, #2517 for shutdown issues.

rublev commented 3 years ago

@rublev Please follow along under issue #2519 for sleep issues, #2517 for shutdown issues.

thx

oushu1huangweiyang1 commented 3 years ago

If you are doing only simple remapping, you can use Apple's built-in hidutil tool.

This was good enough for me (I only have 2 simple remaps - Caps Lock to Esc, and Esc to backtick). You can refer to this gist - I linked to an explainer blog post that I wrote from the gist in case you need a little bit more help.

Thanks for your brilliant idea, it helps me.

stale[bot] commented 2 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

imfycc commented 2 years ago

亲,您的邮件我收到了,感谢您的来信。

gatspy commented 1 month ago

reinstall, sloved the issue.