第一篇博文。内容如下:
我有 Ubuntu 10.10,特立独行。
几天前,我试图将苹果电脑上的“command”键转换为“ctrl”键,在网上搜索后,我遇到了 xmodmap。首先我要说的是,我终于弄清楚了如何重新映射我的键(转到系统->首选项->键盘,然后是布局,然后是 win/alt 键并将其映射到控制键)。但在此之前,我一直在尝试使用 xmodmap 进行重新映射。在此过程中,我意识到 xmodmap 对我来说根本不起作用,而且我在网上找不到任何报告类似问题的内容。
甚至在创建每次登录时都要执行的任何类型的 .Xmodmap 文件之前,该命令似乎在终端中不起作用。如果我运行 xev,我的左命令键的输出是:
KeyPress event, serial 33, synthetic NO, window 0x4600001,
root 0xc9, subw 0x0, time 2747931, (120,-383), root:(123,436),
state 0x0, keycode 133 (keysym 0x85, (no name)), same_screen YES,
XLookupString gives 2 bytes: (c2 85) ""
XmbLookupString gives 2 bytes: (c2 85) ""
XFilterEvent returns: False
KeyRelease event, serial 36, synthetic NO, window 0x4600001,
root 0xc9, subw 0x0, time 2748059, (120,-383), root:(123,436),
state 0x4, keycode 133 (keysym 0x85, (no name)), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False
这意味着我的命令字符的键码是 133。对我的 ctrl 键执行相同操作会告诉我左控制键的键码是 37。
但是执行这个命令:
xmodmap -e "keycode 133 = Control_L"
不会使我的命令键像控制字符一样起作用。此外,我知道 xmodmap 进行了映射,因为现在在 xev 中输入命令字符会得到:
KeyPress event, serial 33, synthetic NO, window 0x4600001,
root 0xc9, subw 0x0, time 3016638, (293,-389), root:(296,430),
state 0x0, keycode 133 (keysym 0xffe3, Control_L), same_screen YES,
XKeysymToKeycode returns keycode: 37
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyRelease event, serial 36, synthetic NO, window 0x4600001,
root 0xc9, subw 0x0, time 3016750, (293,-389), root:(296,430),
state 0x4, keycode 133 (keysym 0xffe3, Control_L), same_screen YES,
XKeysymToKeycode returns keycode: 37
XLookupString gives 0 bytes:
XFilterEvent returns: False
并且 xmodmap -pke 输出中的键码 133 条目看起来也正确:
keycode 133 = Control_L NoSymbol Control_L
此时,命令键仍将充当命令键。我的问题是,是否有东西覆盖 xmodmap 的键映射?如果是,在哪里以及如何覆盖?