Keyboard-Layout

使用 setxkbmap 交換 Left Shift 和 Left Control

  • February 4, 2020

是否可以使用而不是交換左鍵Shift和左鍵?CTRL``setxkbmap``xmodmap

編輯

我已經切換到Fcitx,在我的鍵盤佈局和自定義鍵盤映射方面,它在各個方面都比 IBus 好得多。我強烈推薦它。

xmodmap已過時;所以確實應該用xkb工具來完成。

預設情況下,您想要的交換似乎不包含在 X11 文件中;所以你必須自己寫。

該頁面https://web.archive.org/web/20170825051821/http://madduck.net/docs/extending-xkb/幫助我理解並找到了一種方法來做到這一點。

創建一個~/.xkb/keymap/mykbd放置輸出的文件setxkbmap,它將是您的基本鍵盤定義;例如:

setxkbmap -print > ~/.xkb/keymap/mykbd

然後,創建一個符號文件來定義您的密鑰交換,例如將其放在~/.xkb/symbols/myswap

在那裡,輸入以下幾行:

partial modifier_keys
xkb_symbols "swap_l_shift_ctrl" {
   replace key <LCTL>  { [ Shift_L ] };
   replace key <LFSH> { [ Control_L ] };
};

然後,編輯~/.xkb/keymap/mykbd文件,並更改xkb_symbols要添加的行

+myswap(swap_l_shift_ctrl)

最後,您可以載入它xkbcomp -I$HOME/.xkb ~/.xkb/keymap/mykbd $DISPLAY(參數不能使用“~” -I)。

它可能會針對某些稀有鍵發出很多關於未定義符號的警告,但您可以忽略它們(例如,將錯誤重定向到 dave: 2> /dev/null)。

如果您希望能夠在正常和倒置 ctrl/shift 之間輕鬆切換;只需在~/.xkb/keymap/另一個文件下創建,沒有額外的“myswap”選項,然後使用xkbcomp. 您可以製作兩個小腳本來載入它們。

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