waycrate / swhkd

Sxhkd clone for Wayland (works on TTY and X11 too)
https://git.sr.ht/~shinyzenith/swhkd
BSD 2-Clause "Simplified" License
679 stars 47 forks source link

Stop rfkill from blocking all radio devices #180

Closed ajanon closed 1 year ago

ajanon commented 1 year ago

This fixes a bug introduced in af0115e and closes #174

After creating a uinput device with switches support, all radio devices were blocked. This was due to rfkill reacting to the uinput creation.

We disable rfkill-input (the module reacting to new device creation) to avoid blocking all radio devices. When a new device (virtual or physical) with the SW_RFKILL_ALL switch capability bit set appears, rfkill reacts immediately depending on the value bit. This value bit defaults to unset, which causes rfkill to use its default eop mode (emergency power off). The uinput API does not give any way to set the corresponding value bit before creating the device, and we have no way to avoid rfkill acting upon the device creation or to change its default mode. Thus, we disable rfkill-input temporarily, hopefully fast enough that it won't impact anyone. rfkill-input gets enabled automatically after uinput device creation (actually, when the file gets closed).

oneingan commented 1 year ago

It works for me! Thx

Shinyzenith commented 1 year ago

@ajanon LGTM! Go for the merge!