나는 보통 스크립트를 사용하여 Caps Lock과 해당 수정자를 비활성화합니다 xmodmap
. .
그러나 때로는 알 수 없는 이유로 Caps Lock 키가 활성화되는 경우도 있습니다. 바인딩된 키나 수정자를 전환하는 키 Caps_Lock
가 없기 때문에 Lock
키맵을 재설정하고 키를 누른 다음 원하는 구성으로 다시 매핑하지 않으면 Caps Lock을 끌 수 없습니다.
그래서:키를 다시 매핑하지 않고 작업을 수행하기 위해 키를 바인딩하지 않고 Caps Lock(현재 활성화되어 있음)을 비활성화하려면 어떻게 해야 합니까?
상태를 설정하는 명령줄 도구일까요?
관심 있는 사람을 위해 내 스크립트가 키 누름에 의한 실수로 Caps Lock 활성화를 비활성화하는 방법은 다음과 같습니다(저는 의도적으로 활성화하지 않습니다).
#!/bin/sh
# I never want to use Caps_Lock. Make Caps_Lock another Control_L...
xmodmap -e "remove Lock = Caps_Lock" 2> /dev/null
xmodmap -e "keysym Caps_Lock = Control_L" 2> /dev/null
xmodmap -e "add Control = Control_L" 2> /dev/null
답변1
나는 이 작업을 수행할 수 있는 유틸리티에 대해 모르지만(아마도 xdotool key Caps_Lock
? 제외), 그동안 이 작은 프로그램을 컴파일하는 데 사용할 수 있습니다 cc xkb_unlock.c -s -lX11 -o ./xkb_unlock
(libc 및 xorg 개발 패키지와 함께 컴파일러가 설치되어 있는 경우). 간단하다 ./xkb_unlock
.
xkb_unlock.c
#include <X11/Xlib.h>
#include <X11/XKBlib.h>
#include <err.h>
#include <stdlib.h>
int main(void){
Display *dpy;
if(!(dpy = XOpenDisplay(0)))
errx(1, "cannot open display '%s'", XDisplayName(0));
XkbLockModifiers(dpy, XkbUseCoreKbd, 0xff, 0);
XSync(dpy, False);
}
답변2
xmodmap -e 'clear Lock'
Caps Lock 효과를 비활성화하는 데 수년 동안 잘 작동했습니다. 다른 답변에 게시된 xkb_unlock.c 코드도 비슷한 작업을 수행합니다. 그러나 불행하게도 최신 Linux 배포판에서는 이것이 더 이상 작동하지 않습니다. setxkbmap
대신 다음을 사용해야 합니다 xmodmap
.
setxkbmap -option caps:none
기적적으로 작동합니다.