重新分配 Ctrl 和 Alt 键 - xmodmap 'BadValue' 错误

Ali*_*ius 13 xorg debian keyboard x11 xmodmap

我正在尝试重新映射我的键盘以使 emacs 可用。我的人体工学键盘将它的单个 Control 键放在一个孤立的 4 键岛式左侧。

操作系统是 Debian 挤压。

这是我试图提供给的行xmodmap,我将它们放入文件 ~/.Xmodmap 中:

清除控制
清除 Mod1
!Alt 键在我的键盘上标有“选项”,
!使用 xev 显示它们分别发送 Alt_L 和 Alt_R 键符
键符 Alt_L = Control_L
键符 Alt_R = Control_R
!Super_L 和 Super_R 键是 Windows 键
键符 Super_L = Alt_L
键符 Super_R = Alt_R
添加 Control = Control_L Control_R
添加 Mod1 = Alt_L Alt_R

我的目标是让我的 Option(又名Alt)键表现得像 Control 键,并使我的 Windows(又名 Super)键表现得像Alt.

以下是 xev 为相关键输出的键码和键码。请注意,我的键盘(一款 Goldtouch 人体工学键盘)只有一个控制键。

键码 37(键符 0xffe3,Control_L)
键码 64(键符 0xffe9,Alt_L)
键码 133(键符 0xffeb,Super_L)
键码 134(键符 0xffec,Super_R)
键码 108(键符 0xffea,Alt_R)

这是 xev 在运行时显示的内容 xmodmap .Xmodmap

MappingNotify 事件,串行 34,合成 NO,窗口 0x0,
    请求 MappingKeyboard,first_keycode 204,计数 1

MappingNotify 事件,串行 34,合成 NO,窗口 0x0,
    请求 MappingKeyboard,first_keycode 64,计数 1

MappingNotify 事件,串行 34,合成 NO,窗口 0x0,
    请求 MappingKeyboard,first_keycode 108,计数 1

MappingNotify 事件,串行 34,合成 NO,窗口 0x0,
    请求 MappingKeyboard,first_keycode 206,计数 1

MappingNotify 事件,串行 34,合成 NO,窗口 0x0,
    请求 MappingKeyboard,first_keycode 133,计数 1

MappingNotify 事件,串行 34,合成 NO,窗口 0x0,
    请求 MappingKeyboard,first_keycode 134,计数 1

这是返回的错误xmodmap

X 请求失败错误:BadValue(整数参数超出操作范围)
失败请求的主要操作码:118 (X_SetModifierMapping)
失败请求中的值:0x17
失败请求序号:17
输出流中的当前序列号:17

关于如何解决这个问题的任何建议?

Ali*_*ius 7

查看 Giles 链接的解决方法,这对我有用:

clear Mod1
clear Mod4

keycode 204 = NoSymbol NoSymbol NoSymbol NoSymbol
keycode 206 = NoSymbol NoSymbol NoSymbol NoSymbol

keycode 64 = Control_L Control_L Control_L Control_L
keycode 133 = Alt_L Alt_L Alt_L Alt_L
keycode 134 = Alt_R Alt_R Alt_R Alt_R
keycode 108 = Control_R Control_R Control_R Control_R

add Control = Control_L Control_R
add Mod1 = Alt_L Alt_R
Run Code Online (Sandbox Code Playgroud)

我的 Option 键现在功能类似于 Control 键,而我的 Windows 键功能类似于 Alt 键。


Gil*_*il' 6

这已经被报告为Debian 错误 #564327Debian 错误 #565279Ubuntu 错误 #524774FreeDesktop 错误 20145。FreeDesktop 错误讨论附带了一个源补丁。在 Ubuntu 错误讨论中有几个变通方法建议,特别是一个.Xmodmap变通方法