Keyboard-Shortcuts

當沒有鍵綁定時,如何在 X11 下以簡單的方式禁用 Caps Lock?

  • July 9, 2021

我經常使用腳本禁用 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

我不知道有什麼實用程序可以做到這一點(也許除了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);
}

引用自:https://unix.stackexchange.com/questions/570297