XF86RFKill 키 누르기가 Linux의 비행기 모드를 활성화하지 못하게 하는 방법은 무엇입니까?

XF86RFKill 키 누르기가 Linux의 비행기 모드를 활성화하지 못하게 하는 방법은 무엇입니까?

저는 ASUS FX505DT에서 Kubuntu 19.10(KDE + i3wm)을 실행하고 있습니다.

문제

XF86RFKilli3wm을 사용하여 키를 바인딩할 수 있지만 bindsym이 바인딩은 전환하는 Linux의 내장 바인딩을 무효화하지 않는 것 같습니다.비행기 모드.

문제의 동작

+ 를 xev누르면 다음과 같은 결과 가 반환됩니다 . 이는 트리거 됩니다.FnF12XF86RFKill

MappingNotify event, serial 48, synthetic NO, window 0x0,
    request MappingKeyboard, first_keycode 8, count 248

FocusOut event, serial 48, synthetic NO, window 0x7a00001,
    mode NotifyGrab, detail NotifyAncestor

FocusOut event, serial 48, synthetic NO, window 0x7a00001,
    mode NotifyUngrab, detail NotifyPointer

FocusIn event, serial 48, synthetic NO, window 0x7a00001,
    mode NotifyUngrab, detail NotifyAncestor

KeymapNotify event, serial 48, synthetic NO, window 0x0,
    keys:  1   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

다양한 것을 테스트하는 동안 다음과 같이 내 노트북에 이 기능 키에 대한 별도의 입력 장치가 있다는 것을 발견했습니다 xinput list.

$ xinput list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ ELAN1200:00 04F3:30BA Mouse               id=12   [slave  pointer  (2)]
⎜   ↳ ELAN1200:00 04F3:30BA Touchpad            id=13   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Asus Wireless Radio Control               id=7    [slave  keyboard (3)]
    ↳ Video Bus                                 id=8    [slave  keyboard (3)]
    ↳ Power Button                              id=9    [slave  keyboard (3)]
    ↳ Sleep Button                              id=10   [slave  keyboard (3)]
    ↳ USB2.0 HD UVC WebCam: USB2.0 HD           id=11   [slave  keyboard (3)]
    ↳ Asus WMI hotkeys                          id=14   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=15   [slave  keyboard (3)]

명령 중에 Fn+를 눌러 이를 확인했는데 제대로 등록되었습니다.F12xinput test 7

$ xinput test 7
key press   255 
key release 255 
key press   255 
key release 255 

내가 원하는 것

Fn+ F12키 의 키 바인딩을 전환 하거나 XF86RFKillLinux에서 i3wm. 비행기 모드를 전환하는 스크립트가 있으며 다음을 사용하여 바인딩했습니다.

bindsym XF86RFKill exec --no-startup-id toggle-airplane

i3 바인딩은 작동하지만 문제는 ** i3wm키를 눌렀을 때 Linux와 비행기 모드가 모두 전환되어 두 번의 연속 전환으로 인해 아무 작업도 수행되지 않는다는 것입니다.

현재비행기 모드KDE에서 구현한 는 장치를 켜기 전에 꺼졌던 장치를 기억하지 못하기 때문에 실제로 버그가 있습니다.비행기 모드, 따라서 처음에 꺼져 있던 무선 장치를 비활성화한 후에는 모든 무선 장치를 켭니다.비행기 모드. 나는 내 목표를 달성하기 위해 bash 스크립트를 작성했고, 따라서 이 키를 수동으로 바인딩하려는 동기도 생겼습니다.

업데이트 1:

좀 더 연구하고 탐구한 결과, 나는 다음과 같은 사실을 발견했습니다.asus_wireless커널 모듈이 이 동작을 담당합니다. 단순히 모듈을 블랙리스트에 등록하면 작동하지만 내 노트북이 더 이상 키 누르기를 감지하지 못합니다. 단축키를 비활성화하는 키 누르기를 어떻게든 유지할 수 있습니까?

답변1

이 주제에 대한 전문가는 아니지만 이것이 나에게 도움이 되었습니다. 어쩌면 그것은 당신에게도 도움이 될 수 있습니다. 비행기 모드를 활성화하는 입력을 비활성화하려면 터미널에서 다음을 실행하세요.

xmodmap -e 'keycode 255='

원천:Linux(Ubuntu)에서 키보드 키를 비활성화하는 방법은 무엇입니까?

또한 이 명령은 xmodmap -pke모든 키 매핑 목록을 표시합니다.

관련 정보