我嘗試將 Awesome 中的 mod 鍵從 windows 鍵更改為 Pause、Scroll Lock 和 Escape。
對於所有鍵,我嘗試更改配置文件中的條目rc.lua
;我嘗試使用 xmodmap 清除鎖並add mod4 = ...
然而,似乎無論我做什麼,按鍵都會變得「黏滯」(有時以一種奇怪的不一致方式),即如果我一旦按下它們,計算機就會表現得好像它們被不斷按下一樣。
有沒有合理的方法來改變這種行為?
答案1
我家裡有一個包含這兩行的文件:
clear lock
keysym Caps_Lock = Super_L
它是從我的呼叫的rc.lua像這樣:
awful.util.spawn("xmodmap /home/username/your_xmodmap.file")
答案2
晚了,但供其他人參考:
問題似乎是 xmodmap 沒有識別您列為修飾鍵的任何鍵。因此 AwesomeWM 不允許將它們用作修飾鍵。
您可以嘗試新增要用作 Mod3 的金鑰(在我見過的大多數系統上似乎沒有用於任何操作),然後您的 rc.lua 可以將 modkey 列為“Mod3”。
新增為修飾鍵
您可以使用 來檢視您的修飾鍵xmodmap
。預設情況下你可能會得到這樣的結果:
xmodmap: up to 4 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
您xev
可以看到運行時按下的任何鍵的名稱,對於 Scroll Lock 我的顯示為:
KeyPress event, serial 36, synthetic NO, window 0x2200001,
root 0x225, subw 0x0, time 23086947, (433,729), root:(470,783),
state 0x0, keycode 78 (keysym 0xff14, Scroll_Lock), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 36, synthetic NO, window 0x2200001,
root 0x225, subw 0x0, time 23087091, (433,729), root:(470,783),
state 0x0, keycode 78 (keysym 0xff14, Scroll_Lock), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
您會注意到鍵符的名稱是Scroll_Lock
。
要新增到 Mod3,您需要建立或新增到~/.Xmodmap
.新增此行將 Mod3 設定為僅 Scroll_Lock 鍵:
add Mod3 = Scroll_Lock
若要測試您的變更並查看 .Xmodmap 檔案中的任何錯誤,請執行
xmodmap ~/.Xmodmap
更新rc.lua
正如您已經清楚知道的那樣,在 rc.lua 檔案的頂部(通常位於~/.config/awesome/rc.lua
),有一行modkey = "Mod4"
。將其更改為modkey = "Mod3"
.
警告
Esc 鍵用於 AwesomeWM 的許多鍵映射。我建議嘗試使用滾動鎖定或暫停,因為它不太可能產生廣泛的衝突。事實上,AwesomeWM 似乎假設 Esc 是為取消當前操作而保留的。
Scroll Lock 似乎被神奇地視為鎖定鍵,就像 Caps Lock 一樣。不同之處在於,大寫鎖定的鎖定行為相對容易停用,而據我所知,滾動鎖定無法停用此行為。
我建議使用數字鍵盤 0 鍵或通常不設計為狀態鎖定鍵的鍵來嘗試此操作,確認其有效,然後嘗試切換到您想要的按鍵。
答案3
我知道我遲到了三年,但如果這對任何人有幫助,請切換
modkey = "Mod4"
和
modkey = "Mod1"