Caps Lock을 설정하고 사용하는 X11 프로그램이 있습니다. 문제는 일반 Caps Lock 토글을 비활성화하고 싶지만 그렇게 하면 키가 비활성화되는 것 같습니다.
따라서 X11이 Caps Lock 키 입력을 얻을 때마다 여전히 이를 얻어야 하지만(키를 비활성화하거나 다른 키에 다시 매핑하지 않고) 키 입력을 대문자 토글로 변환하는 기능이 없습니다(아마도 이 위치에 있을 것입니다). 커널 수준?).
스캔 코드를 변경해 보았으나 키가 다시 매핑되었습니다. Caps Lock 항목도 제거했지만 xmodmap
이로 인해 대문자도 비활성화되었습니다.
커널이 대문자 키를 무시하고(일반적인 기능을 사용하지 않음) 여전히 메시지를 X에 전달하도록 지시하려면 어떻게 해야 합니까?
자세한 내용을 추가하면 됩니다.
내가 운영하려는 '프로그램'은 인간적인 '엔소'다. 키가 없으면 "CRITICAL: 루트: 준모드 키를 찾을 수 없습니다"라는 오류가 발생합니다. 오류가 없을 때 enso를 caps와 함께 사용할 수 있지만, enso가 여전히 사용할 수 있는 동안 caps 기능을 비활성화하는 방법을 아직 찾지 못했습니다.
답변1
키 토글을 비활성화하는 기술이 있지만 Capslock키를 완전히 비활성화하거나 키보드의 다른 키에 다시 매핑하지는 않는 기술이 있다고 생각합니다.
다음 명령을 사용하는 경우:
setxkbmap -option caps:none
키보드가 더 이상 전환되지 않습니다. Fedora 14를 실행하는 노트북에서 이를 확인했는데, LED가 더 이상 켜지지 않고 정상적인 Capslock기능이 사라졌습니다.
그러나 xev를 사용하면 여전히 누르고 있는 키가 표시됩니다.
$ xev
...
...
KeyPress event, serial 35, synthetic NO, window 0x6800001,
root 0xb1, subw 0x0, time 261504852, (167,-15), root:(353,268),
state 0x10, keycode 66 (keysym 0xffffff, VoidSymbol), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 35, synthetic NO, window 0x6800001,
root 0xb1, subw 0x0, time 261504971, (167,-15), root:(353,268),
state 0x10, keycode 66 (keysym 0xffffff, VoidSymbol), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
...
따라서 누른 키 이벤트는 다른 응용 프로그램이 이를 선택할 수 있도록 그대로 유지됩니다.
xkbmap 설정
이 파일에는 /usr/share/X11/xkb/rules/xorg.lst
제공할 수 있는 옵션의 전체 목록이 포함되어 있습니다 setxkbmap
.
이 파일에서 "cap"을 찾다가 다음 줄을 발견했습니다.
caps:none CapsLock is disabled
파일에는 다른 값도 있으므로, 이것이 원하는 값이 아닐 경우에는 대체 값 중 하나가 더 적합할 수 있습니다.
$ grep cap /usr/share/X11/xkb/rules/xorg.lst
grp:caps_switch CapsLock (while pressed), Alt+CapsLock does the original capslock action
grp:caps_toggle CapsLock
grp:shift_caps_toggle Shift+CapsLock
grp:shift_caps_switch CapsLock (to first layout), Shift+CapsLock (to last layout)
grp:alt_caps_toggle Alt+CapsLock
lv3:caps_switch CapsLock
lv3:caps_switch_latch CapsLock (chooses 3rd level, latches when pressed together with another 3rd-level-chooser)
ctrl:nocaps Make CapsLock an additional Ctrl
ctrl:swapcaps Swap Ctrl and CapsLock
grp_led:caps CapsLock
caps CapsLock key behavior
caps:internal CapsLock uses internal capitalization. Shift "pauses" CapsLock
caps:internal_nocancel CapsLock uses internal capitalization. Shift doesn't affect CapsLock
caps:shift CapsLock acts as Shift with locking. Shift "pauses" CapsLock
caps:shift_nocancel CapsLock acts as Shift with locking. Shift doesn't affect CapsLock
caps:capslock CapsLock toggles normal capitalization of alphabetic characters
caps:numlock Make CapsLock an additional NumLock
caps:swapescape Swap ESC and CapsLock
caps:escape Make CapsLock an additional ESC
caps:backspace Make CapsLock an additional Backspace
caps:super Make CapsLock an additional Super
caps:hyper Make CapsLock an additional Hyper
caps:shiftlock CapsLock toggles Shift so all keys are affected
caps:none CapsLock is disabled
compose:caps CapsLock
shift:breaks_caps Shift cancels CapsLock
shift:both_capslock Both Shift-Keys together toggle CapsLock
shift:both_capslock_cancel Both Shift-Keys together activate CapsLock, one Shift-Key deactivates
인용하다
답변2
Caps Lock키의 일반적인 효과를 원하지 않는 경우 키 기호를 Lock
유지하면서 수정자를 끌 수 있습니다.Caps_Lock
xmodmap -e 'clear Lock'
답변3
제가 답변드린 답변과 매우 유사합니다또 다른 문제. 이 xkb 코드가 트릭을 수행해야 합니다.
partial modifier_keys
xkb_symbols "capsoff" {
key <CAPS> {
type[Group1] = "ONE_LEVEL",
symbols[Group1] = [ Caps_Lock ],
actions[Group1] = [ NoAction() ]
};
};
답변4
나는 전에 그것을 사용했다@slm이 설명하는 방법그러나 (적어도 KDE Neon을 사용하는 KDE 플라즈마에서는) 어느 시점에서는 작동이 중지됩니다.
그러나 비결은 아래 설명된 대로 KDE 내부 설정입니다.https://askubuntu.com/a/439230/626920