저는 MSI 노트북을 소유하고 있으며 F 키에는 몇 가지 특별한 기능이 있습니다. 예를 들어 F4 키는 터치패드를 전환합니다.
Windows에서는 이 키가 예상대로 작동합니다. 즉, 터치패드를 활성화/비활성화합니다. 하지만 Linux(Fedora)에서는 작동하지 않습니다.
showkey -s
이 키를 누르면 다음과 같은 결과가 나타납니다.
0x1d 0xe0 0x5b 0x76 0x9d 0xe0 0xdb 0xf6
showkey
어떤 매개변수도 이 결과를 생성하지 않습니다.
keycode 28 release
keycode 29 press
keycode 125 press
keycode 85 press
keycode 29 release
keycode 125 release
keycode 85 release
내가 얻는 것과 거의 동일합니다 xev
.
KeyPress event, serial 28, synthetic NO, window 0x6200001,
root 0x7e7, subw 0x0, time 1277257, (692,1239), root:(692,1314),
state 0x0, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyPress event, serial 28, synthetic NO, window 0x6200001,
root 0x7e7, subw 0x0, time 1277259, (692,1239), root:(692,1314),
state 0x4, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyPress event, serial 28, synthetic NO, window 0x6200001,
root 0x7e7, subw 0x0, time 1277261, (692,1239), root:(692,1314),
state 0x44, keycode 93 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 28, synthetic NO, window 0x6200001,
root 0x7e7, subw 0x0, time 1277262, (692,1239), root:(692,1314),
state 0x44, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 28, synthetic NO, window 0x6200001,
root 0x7e7, subw 0x0, time 1277265, (692,1239), root:(692,1314),
state 0x40, keycode 133 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 28, synthetic NO, window 0x6200001,
root 0x7e7, subw 0x0, time 1277266, (692,1239), root:(692,1314),
state 0x0, keycode 93 (keysym 0x0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
총 3개의 KeyPress 이벤트와 3개의 KeyRelease 이벤트가 있습니다.
xbindkeys --multikey
F4 키를 누르면 다음 정보가 제공됩니다.
"(Scheme function)"
m:0x44 + c:37
Control+Mod4 + Control_L
"(Scheme function)"
m:0x40 + c:133
Mod4 + Super_L
"(Scheme function)"
m:0x0 + c:93
NoSymbol
xbindkeys
첫 번째 부분을 사용하여 키를 내가 좋아하는 .xbindkeysrc 파일로 다시 매핑해 보았습니다 .
"xdotool key --clearmodifiers XF86TouchpadToggle"
m:0x44 + c:37 + Release
그러나 그것은 작동하지 않았습니다.
Fedora에서 이를 달성하는 방법에 대한 올바른 방향/도구를 알려주세요. 내 첫 번째 후보는 xchainkeys
신뢰할 수 있는/퓨전 저장소에서 사용할 수 없습니다. 긴 시퀀스 스캔 코드를 통해 키를 다시 매핑하는 다른 방법이 있습니까?
답변1
~에서Fn 키와 관련된 키보드 단축키 정의이 질문에 답할 수 있는 몇 가지 통찰력이 있습니다.
Fn대부분의 시스템에서는 키 자체를 감지하는 것이 불가능 하지만 다음을 사용해 볼 수 있습니다.
$ xev | grep --line-buffered keysym
어떤 키를 찾아 Fn-Left보내세요 Fn-Right. (이렇게
grep
하면 소음이 줄어듭니다.)운이 좋다면 중요하지 않은 키 입력을 컴퓨터로 보내어 다시 매핑할 수 있습니다.
예를 들어, 내 시스템에서는 키 누르기가 실제로 이벤트를 보내는
xev
것으로 나타납니다 .Fn-LeftXF86AudioPrev
state 0x0, keycode 173 (keysym 0x1008ff16, XF86AudioPrev), same_screen YES,
이를 Home주요 이벤트로 쉽게 다시 매핑할 수 있습니다.
$ xmodmap -e 'keysym XF86AudioPrev = Home'
End, PageUp 및 PageDown에 대해서도 동일한 작업을 수행할 수 있기를 바랍니다.
불행하게도 xev를 누를 때 고유한 정보가 수신되지 않으면 Fn-Left운이 없는 것입니다.
Fn키 입력이 다른 수정자 키처럼 직접 전송되지 않는다는 점은 아쉽습니다 . 만약 그렇다면 우리는 소프트웨어를 통해 그 의미를 구성할 수 있는 능력이 더 많아졌을 것입니다.
답변2
msi p15(a10sc) 노트북에서도 똑같은 문제가 발생합니다.
toggleTouchpad.sh
나는 "동일한 키 조합에 매핑"이라는 스크립트를 만들었습니다.
xbindkeys --key
F4그 키를 누르고 LeftCtrl로 바꾸면 그 순서( + + ) RightCtrl가 더 자연스러워서요.CtrlMod4RightCtrl
- 스크립트:
#!/usr/bin/bash touchpadId=$(xinput list | grep -o 'Touchpad.*id=[0-9]*' | awk 'NF{print $NF}' | sed 's/id=//') propId=$(xinput list-props $touchpadId | awk '/Device Enabled \([0-9]+\)/{print $3}' | sed 's/[():]//g') propVal=$(xinput list-props $touchpadId | awk '/Device Enabled \([0-9]+\)/{print $4}') if [ "$propVal" -eq "1" ]; then xinput set-prop $touchpadId $propId 0 else xinput set-prop $touchpadId $propId 1 fi
- 내 거
.xbindkeysrc
"toggleTouchpad.sh" Control+Mod4 + Control_R
스크립트를 사용하는 경우 터치패드 ID를 올바르게 가져왔는지 확인하세요(저는 bash 전문가가 아닙니다).아치스 위키가세요.
분명히 스크립트를 다른 키 조합에 바인딩할 수 있습니다.
노트
- 이는 중요한 문제를 해결하지는 못하지만 F4해결책을 찾을 때 유용할 수 있습니다.
- Mod4Windows열쇠 이다
답변3
마침내 이 문제를 해결했습니다. 솔루션의 주요 단계는 Arch wiki에서 찾을 수 있습니다.여기. 제가 소유한 MSI 노트북과 정확히 똑같지는 않지만 여전히 제게는 작동합니다.
내가 해야 할 일은 원래 기능에 키코드 93을 할당하는 것뿐이었습니다.
~/.Xmodmap
keycode 93 = XF86TouchpadToggle NoSymbol XF86TouchpadToggle
그런 다음 단축키 설정에서 KDE를 사용하고 있으므로 터치패드 토글 동작을 필수 F4 키에 매핑했습니다.