将Alt_R键设置为Alt(A-)修改键(而不是Meta(M-)修改键)

8

我希望将 Alt_L 设置为 META(即在emacs中的 M-),但是将 Alt_R 设置为 ALT。我该如何修改 .Xmodmap 和/或 .emacs 来实现这个目标?

2个回答

6
以下是我的 .Xmodmap 文件。它并不完全符合您的要求,但可以让您了解如何实现它。在您的情况下,只有 Sec-2 需要修改;假设您的键盘与我的类似,则只需要在此部分中添加 1 行:keycode 108 = Alt_R,因为 X 服务器已经将 Alt_L 识别为 Meta_L。
这是我的 .Xmodmap 文件,它使 Emacs 可用的所有修饰键 (Alt、Meta、Super、Hyper、Control、Shift) 都能被识别:
!!! Implement the following layout:
!!!     Alt  A S D F ...
!!!     Shift Z     X    C V B N M ...
!!!     Hyper Super Meta --Space-- Control Super Hyper

!!! by transforming from the conventional layout:
!!!     Caps:66
!!!     Shift
!!!     Ctrl:37 Win:133 Alt:64 Space AltGr:108 Menu:135 Ctrl:105

!! Sec-1.
clear Control
clear Lock
clear mod1
clear mod2
clear mod3
clear mod4
clear mod5

!! Sec-2. System dependent; use xev to find the exact keycodes:
keycode  37 = Hyper_L
keycode  64 = Meta_L
keycode  66 = Alt_L
keycode 105 = Hyper_R
keycode 108 = Control_R
keycode 135 = Super_R

!! Sec-3.
add Control = Control_L Control_R
add mod1 = Meta_L Meta_R
add mod2 = Hyper_L Hyper_R
add mod3 = Num_Lock
add mod4 = Alt_L Alt_R Multi_key
add mod5 = Super_L Super_R Mode_switch

1
这是我的当前.xmodmaprc文件,它可能需要一些改进,但说明了如何使用ksysym关键字更改具有不同修饰符的特定键。我取消了cedilla(西班牙键盘)并在那里放置了斜杠/反斜杠,还有其他一些东西。
pointer = 3 2 1 4 5 6 7 8 9 10

clear Mod4
remove Lock = Caps_Lock
remove Control = Control_L
remove Mod5 = ISO_Level3_Shift

keysym ccedilla = slash backslash NoSymbol NoSymbol braceright
keysym 3 = 3 numbersign NoSymbol NoSymbol periodcentered
keysym 1 = 1 exclam NoSymbol NoSymbol masculine

keysym 0xba = bar
! the next one is neccesary becuase the above command
! modifies the m key too!
keysym 0x6d = m

keysym Control_L = Super_L
keysym Caps_Lock = Control_L
keysym ISO_Level3_Shift = Hyper_L
keysym Super_L = ISO_Level3_Shift

add Lock = Caps_Lock
add Control = Control_L
add Mod4 = Super_L
add Mod4 = Super_R
add Mod3 = Hyper_L
add Mod3 = Hyper_R
add Mod5 = ISO_Level3_Shift

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接