使用Emacs和Openbox时的键盘映射问题


17

我有一个Apple键盘,并且必须对键进行一些重新映射,以使该mod-4键成为Space使用Emacs时位于栏左侧的第一个键。当我使用dwm窗口管理器时,以下脚本运行良好,但是切换到Openbox后,我发现两个键都在做相同的事情,而不是在选项键和命令键之间交换键代码。

我注意到的一件奇怪的事是,在我单击运行showkey并按Option键和命令键的情况下,分别获得了56和125,但是在新设置中,但是将它们插入下面的脚本而不是64和64时根本不起作用。 133。

我必须承认,我通过不断调整脚本来创建以下脚本,直到它起作用为止,这样可能会有更好的方法。

.xmodmap

# switch alt and command...the switch is not being done properly
xmodmap -e "keycode 64 = Alt_L"
xmodmap -e "keycode 133 = Meta_L"

# remap of mod 4
xmodmap -e "clear Mod4"
xmodmap -e "add Mod4 = Super_L"

更新资料

我习惯了以前的键盘设置,放弃了尝试对其进行调整。不幸的是,在最近重新启动后,CapsLockCtrl不再起作用了,所以在这里我又回来了。

这次而不是上面使用的映射,而是运行xmodmap -pke > ~/.xmod并调整了那里的键(这很容易)。

但是,事情仍然不太正确。将CapsLock仍然用作正常时除外xev命令运行,则它返回这似乎以显示正确的映射如下:

# caplock
KeyRelease event, serial 40, synthetic NO, window 0x2200001,
root 0x156, subw 0x0, time 4858000, (57,-31), root:(426,402),
state 0x2, keycode 66 (keysym 0xffe3, Control_L), same_screen YES,
XKeysymToKeycode returns keycode: 37
XLookupString gives 0 bytes: 
XFilterEvent returns: False

# ctrl-L
KeyRelease event, serial 40, synthetic NO, window 0x2200001,
root 0x156, subw 0x0, time 4805947, (686,148), root:(1055,581),
state 0x4, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
XLookupString gives 0 bytes: 
XFilterEvent returns: False

# Alt-L
KeyPress event, serial 40, synthetic NO, window 0x2200001,
root 0x156, subw 0x0, time 4555825, (-158,-649), root:(959,133),
state 0x0, keycode 64 (keysym 0xffeb, Super_L), same_screen YES,
XLookupString gives 0 bytes: 
XmbLookupString gives 0 bytes: 
XFilterEvent returns: False

# Super-L
KeyRelease event, serial 40, synthetic NO, window 0x2200001,
root 0x156, subw 0x0, time 4920564, (-63,169), root:(306,602),
state 0x40, keycode 133 (keysym 0xffe9, Alt_L), same_screen YES,
XLookupString gives 0 bytes: 
XFilterEvent returns: False

4
在PC上(我不知道在Mac上是否也是如此)showkey没有显示X使用的相同键码。运行xev以查看X键代码及其操作。向我们展示您按下每个键时的输出xmodmap -pm和输出xev
吉尔斯(Gilles)“所以

我在上面为xmodmap -pm命令添加了更新
chris

您可能需要看一下wiki.archlinux.org/index.php/Apple_Keyboardhelp.ubuntu.com/community/AppleKeyboard。总之,你可以告诉内核的键盘驱动程序,以不同的表现,而不是在十黑客的东西
wingedsubmariner

如果它在DWM中运行,我的猜测是~/.config/openbox/rc.xml问题所在。
MajorBriggs 2014年

您是否考虑过使用udev重新映射键而不是xmodmap?udev只需要一个hwdb文件即可将扫描代码重新映射到特定的键代码。
Centimane 2015年

Answers:


1

您可能需要将以下内容放在您的开头 ~/.xmod

remove Lock = Caps_Lock
remove Control = Control_L
remove Mod1 = Alt_L Meta_L
remove Mod4 = Super_L Hyper_L

而下面的 ~/.xmod

add Control = Control_L
add Mod1 = Alt_L Meta_L
add Mod4 = Super_L Hyper_L

这将更新系统,以识别这些键的修饰符性质。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.