Keyboard-Layout

恢復預設超級鍵行為 (xkbmap)

  • October 20, 2020

setxkbmap就我而言,一直是一種健康的黑魔法。我最近安裝了Dyalog APL。當我執行 commanddyalog時,它會將我的鍵盤配置全域更改為 APL 模式,這有效地禁用了我使用 Super 鍵進行其他任何操作的能力。現在,當我使用 APL時,這實際上非常好。但是當我關閉程序時,我留下了一個幾乎毫無價值的超級鍵,它不能執行任何通常的功能,比如在視窗之間切換或打開“活動”菜單。所以我的問題是,我該如何改回來?

具體來說,這setxkbmap -print是新登錄時 , 的“正常”輸出。

xkb_keymap {
   xkb_keycodes  { include "evdev+aliases(qwerty)" };
   xkb_types     { include "complete"  };
   xkb_compat    { include "complete"  };
   xkb_symbols   { include "pc+us+us:2+inet(evdev)+capslock(ctrl_modifier)"};
   xkb_geometry  { include "pc(pc105)" };
};

(caps lock/ctrl 修飾符與這個問題無關,所以請隨意忽略)

當我執行 Dyalog 時,它會更改我的鍵盤映射,因此setxkbmap -print變為

xkb_keymap {
   xkb_keycodes  { include "evdev+aliases(qwerty)" };
   xkb_types     { include "complete"  };
   xkb_compat    { include "complete"  };
   xkb_symbols   { include "pc+us+apl(dyalog):2+us:3+inet(evdev)+group(win_switch)+capslock(ctrl_modifier)"    };
   xkb_geometry  { include "pc(pc105)" };
};

那麼setxkbmap我可以執行什麼命令來從第二個狀態回到第一個狀態?我希望能夠按需恢復我的超級密鑰的預設行為。

我正在執行 Ubuntu 18.04.3 LTS,在 X11 上執行 Gnome 3.28.4,如果其中任何一個對於這個問題來說很重要的話。

我不相信您可以setxkbmap -print為此使用 的輸出,但至少還有其他三種方法可以恢復預設鍵盤狀態。

選項 0

執行

xkbcomp "$DISPLAY" normal.xkb

當鍵盤處於預設狀態時。Xkbcomp創建normal.xkb 文件,鍵盤的完整預設鍵盤映射。完成 Dyalog 後,可以使用以下命令輕鬆恢復鍵盤狀態

xkbcomp normal.xkb "$DISPLAY"

選項1

man keyboard,對於基於 Debian 的系統:

 udevadm trigger --subsystem-match=input --action=change

選項 2

命令/etc/default/keyboard的相關設置中 檢索:setxkbmap

setxkbmap [-model xkb_model] [-layout xkb_layout] [-variant xkb_variant] [-option xkb_options]

例如,給定這個/etc/default/keyboard

XKBMODEL="pc105"
XKBLAYOUT="us"
XKBVARIANT=""
XKBOPTIONS="caps:swapescape,terminate:ctrl_alt_bksp"

您將恢復該預設狀態

setxkbmap -model 'pc105' -layout 'us' -option 'caps:escape,terminate:ctrl_alt_bksp'

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