Xorg

使用 Alt_R 作為 mod4 後無法再切換到控制台

  • April 30, 2014

我想將正確的 ALT 鍵用作“mod4”(最值得注意的是,預設情況下,“真棒”視窗管理器使用 mod4 作為大多數 WM 命令的修飾符,我非常喜歡這個想法)。

但是我有一個問題:只要我添加:

xmodmap -e 'add mod4 = Alt_R'

那麼我不能使用 CTRL+ALT+F2 從 X 切換到文本控制台。

(請注意,我總是使用左 ALT 來執行此操作,而不是右 ALT:實際上在將右 ALT 分配給 mod4 之前,我從未使用過該鍵)

快捷方式 / 修飾符確實有問題,因為我仍然可以使用chvt命令從 X 切換到文本控制台。例如,以下始終可以正常工作:

chvt 1

一旦我清除 mod4:

xmodmap -e 'clear mod4'

我可以使用CTRL+ALT+F2(再次左 ALT)切換到我的文本控制台。

但當然,我沒有得到很好的預設 mod4+…“真棒”快捷方式。

所以基本上我可以將正確的 ALT 用作 mod4 並且工作得很好*,或者*我可以清除 mod4(不將正確的 ALT 分配給任何修飾符)並能夠使用 CTRL+ALT+F2 切換到文本控制台。

但我不能兩者都做。

你們中有人知道為什麼將右 ALT 配置為 mod4 會阻止 CTRL+左 ALT+F2 切換到文本控制台嗎?

這是完整的xmodmap(當 CTRL+左 ALT+F2不起作用時):

shift   Shift_L (0x32), Shift_R (0x3e)
lock
control Control_L (0x25), Control_L (0x42), Control_R (0x69)
mod1    Alt_L (0x40), Alt_L (0xcc), Metal_L (0xcd)
mod2    Num_Lock (0x4d)
mod3    
mod4    Alt_R (0x6c)
mod5    ISO_Level3_Shift (0x5c), Mode_switch (0xcb)

再次清除那個mod4,我可以切換到文本控制台了……

我對使用其他設置不感興趣:

  • 右 ALT 作為 mod4
  • mod4+… 作為 awesome 的快捷方式
  • CTRL+ALT+F{1,9} 切換到不同的 VT

現在我當然可以使用“chvt”切換到文本控制台,但是如果我的 X 卡住了,那它就不會那麼好用了。

我總是喜歡有可能切換到文本控制台,例如,如果 X 卡住了,就殺死它(從 slackware 的早期開始就一直這樣做)。

第一次嘗試使用類似的視窗管理器(xwem,ratpoison)時,我首先也嘗試按照設置說明xmodmap獲取視窗管理器的修改鍵,但後來我覺得xmodmap在我的系統中使用會導致一些混亂,因為在我的系統(一個 ALTLinux 發行版)中,一直關注通過 XKB 配置多語言鍵盤,而不是通過xmodmap.

所以,我找到了一個 XKB 選項來將我想要的鍵標記為“Hyper”,然後在 xwem 或 ratpoison 的配置中使用“Hyper”修飾符。

就我而言,選項setxkbmap是:

-option altwin:hyper_win

這是我在將其添加到我的設置時保存的評論:

xemacs-xwem 使用 Hyper,所以我找到了這個使用 WIN 鍵的預定義 XKB 映射(在 xkb/symbols/altwin 中)。

也許稍後我會為我製作另一個 XKB 映射,例如,使用正確的 Control 作為 Hyper(這將迫使我的手使用正確的 Control——現在我的手只是忽略它)。

我認為通過 XKB 而不是通過 xmodmap(如 XWEM 文件中所述)獲得 Hyper 密鑰是一種更乾淨的方法,因為:

  1. 修飾鍵的 xmodmap 配置似乎並不好,因為它迫使人們表達自己的意圖:人們必須對任意編號的修飾位說些什麼,但我不想考慮這些技術性的事情:我只需要一個*“Hyper “* 修飾符,而不是一些晦澀的內部操作!在 xmodmap 中,我需要給出 2 甚至 3 個晦澀的語句來實現結果,儘管從邏輯上講,這是一個單一的願望和操作。(如果將 Control_R 映射到 modN,則一個 xmodmap 語句是不夠的,參見 XEmacs 的警告(FIXME:插入!);存在一些技術限制。)
  2. 有人說 XKB 和 xmodmap 不能很好地配合使用,因此如果混合使用它們,並非所有 X 程序都能很好地連貫地執行(我必須在此處提供連結,FIXME)。

/usr/share/X11/xkb/symbols/altwin如果有人感興趣,這是來自 的相關定義:

partial modifier_keys 
xkb_symbols "hyper_win" {
   key <LWIN> {    [   Hyper_L         ]   };
   key <RWIN> {    [   Hyper_R         ]   };
   modifier_map Mod4   { Hyper_L, Hyper_R };
};

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