使用 Alt_R 作为 mod4 后无法再切换到控制台

使用 Alt_R 作为 mod4 后无法再切换到控制台

我想使用正确的 ALT 键作为“mod4”(最值得注意的是,默认情况下,“awesome”窗口管理器使用 mod4 作为大多数 WM 命令的修饰符,我非常喜欢这个想法)。

但是我有一个问题:一旦我添加:

xmodmap -e 'add mod4 = Alt_R'

那么我就不能使用 CTRL+ALT+F2 从 X 切换到文本控制台。

(请注意,我总是使用左 ALT 来执行此操作,而不是右 ALT:实际上在将右 ALT 分配给 mod4 之前,我从未使用过该键)

这确实是快捷方式/修饰符的问题,因为我仍然可以通过使用(例如)从 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+...作为很棒的快捷方式

  • CTRL+ALT+F{1,9} 切换到不同的 VT

当然,现在我可以使用“chvt”切换到文本控制台,但如果我的 X 卡住了,那效果就不那么好了。

我总是喜欢能够切换到文本控制台,比如说,如果 X 卡住了就杀死它(从 slackware 的早期就开始这么做了)。

答案1

当第一次尝试使用类似的窗口管理器(xwem、ratpoison)时,我首先尝试遵循涉及xmodmap获取窗口管理器的修改键的设置说明,但后来我觉得xmodmap在我的系统中使用会导致一些混乱,因为在我的系统(一个 ALTLinux 发行版)中,注意力始终集中在通过 XKB 进行多语言键盘配置,而不是通过xmodmap.

因此,我找到了一个 XKB 选项将我想要的密钥标记为“Hyper”,然后在 xwem 或ratpoison 的配置中使用“Hyper”修饰符。

就我而言,选项setxkbmap是:

 -option altwin:hyper_win

这是我在将其添加到我的设置时保存的评论:

xemacs-xwem 使用 Hyper,所以我找到了这个预定义的 XKB 映射(在 xkb/symbols/altwin 中),它使用 WIN 键。

也许稍后我会为我制作另一个 XKB 地图,例如,使用正确的 Control 作为 Hyper(这将迫使我的手使用正确的 Control - 现在我的手只是忽略它)。

我认为这是通过 XKB 而不是通过 xmodmap (如 XWEM 文档中所述)为自己获取超级密钥的更干净的方法,因为:

  1. 修改键的 xmodmap 配置似乎不太好,因为它迫使人们表达自己的意图:必须说一些关于任意编号的修改位的事情,但我不想考虑这些技术问题:我只需要一个“超” 修饰符,而不是对内部进行一些晦涩的操作!在 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 };
};

相关内容