我正在尝试更改运行 Fedora 22 的 USB Apple 键盘上的一些特定键。
花了三天时间寻找答案并尝试不同的解决方案,我最终使用了xmodmap但仍然无法让一切正常工作。
我的具体问题是:
- 交换Alt 左键键与另类右
- 交换向左Ctrl键与左命令钥匙
到目前为止,这是我最后尝试的:
我复制了我的xmodmap文件:
xmodmap -pke ~/.xmodmap
然后我找出了我尝试切换的按键的按键代码西夫这给了我 Alt Left 和 Alt Right:
KeyPress event, serial 36, synthetic NO, window 0x3400001,
root 0xd7, subw 0x0, time 7033878, (38,-14), root:(38,23),
state 0x10, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
KeyPress event, serial 36, synthetic NO, window 0x3400001,
root 0xd7, subw 0x0, time 7035742, (38,-14), root:(38,23),
state 0x10, keycode 108 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES,
XKeysymToKeycode returns keycode: 92
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False
所以Alt 左键关键是使用键码 64,以及另类右键,其名称为ISO_Level3_Shift,正在使用键码 108。
关于网络上的其他来源,我创建了一个包含以下内容的新 xmodmap 文件:
keycode 64 = Alt_L
keycode 108 = ISO_Level3_Shift
remove Mod1 = Alt_L
remove Mod4 = ISO_Level3_Shift
add Mod1 = ISO_Level3_Shift
add Mod4 = Alt_L
然后我尝试运行这个新配置:
xmodmap -v .mymodmap
并得到这个错误:
! .mymodmap:
! 1: keycode 64 = Alt_L
keycode 0x40 = Alt_L
! 2: keycode 108 = ISO_Level3_Shift
keycode 0x6c = ISO_Level3_Shift
! 3: remove Mod1 = Alt_L
! Keysym Alt_L (0xffe9) corresponds to keycode(s) 0x40 0xcc
remove mod1 = 0x40 0xcc
! 4: remove Mod4 = ISO_Level3_Shift
! Keysym ISO_Level3_Shift (0xfe03) corresponds to keycode(s) 0x5c 0x6c 0x9a
remove mod4 = 0x5c 0x6c 0x9a
! 5: add Mod1 = ISO_Level3_Shift
add mod1 = ISO_Level3_Shift
! 6: add Mod4 = Alt_L
add mod4 = Alt_L
!
! executing work queue
!
keycode 0x40 = Alt_L
keycode 0x6c = ISO_Level3_Shift
remove mod1 = 0x40 0xcc
remove mod4 = 0x5c 0x6c 0x9a
add mod1 = ISO_Level3_Shift
add mod4 = Alt_L
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 118 (X_SetModifierMapping)
Value in failed request: 0x17
Serial number of failed request: 15
Current serial number in output stream: 15
尽管我正在寻找解决方案,但这让我感到困惑。
有谁知道如何更改新 Apple 键盘上的特定按键的线索或信息来源吗?
编辑:
到目前为止,在尝试了几种配置之后,我最终得到了最接近的方法,如下所示:
clear mod1
clear mod5
keycode 64 = ISO_Level3_Shift Mode_switch ISO_Level3_Shift Mode_switch
keycode 92 = Alt_L Meta_L Alt_L Meta_L
keycode 108 = Alt_L Meta_L Alt_L Meta_L
add mod1 = ISO_Level3_Shift Mode_switch
add mod5 = Alt_L Meta_L
关键代码92和108似乎与我在中看到的键相同西夫输出。
这是我的xmodmap输出前我的改变:
xmodmap: up to 4 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), Control_R (0x69)
mod1 Alt_L (0x40), Meta_L (0xcd)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
这是我的xmodmap输出后我的改变:
xmodmap: up to 4 keys per modifier, (keycodes in parentheses):
shift Shift_L (0x32), Shift_R (0x3e)
lock Caps_Lock (0x42)
control Control_L (0x25), Control_R (0x69)
mod1 ISO_Level3_Shift (0x40), Mode_switch (0xcb)
mod2 Num_Lock (0x4d)
mod3
mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf)
mod5 Alt_L (0x5c), Alt_L (0x6c), Alt_L (0xcc), Meta_L (0xcd)
应用这些更改后,我的权利替代键似乎像我的左 Alt 键一样工作(例如,在某些应用程序中切换菜单),但左 Alt 键没有执行任何操作。
也许,为了具体化我的意图:
出于编程目的,我需要切换两个 Alt 键,因为我希望办公室的 Apple 键盘能够像家里的键盘(我使用 Macbook)一样工作。
我非常习惯书写特殊符号,例如波形符 ~ 和管道 |依此类推,用我的左 Alt 键(用左手拇指触发左 Alt 键)。
我也需要切换左键命令和左Ctrl因为这些也在我家里的 Macbook 上打开。
当然,我可以在工作中习惯这些切换键,但这每天都让我烦恼,因为当我在流程中而不考虑正确的键时,我按下了错误的组合键。
那么,有人可以帮我吗?
答案1
到目前为止,我已经有了关于切换的部分解决方案控制键和指令在左侧。
这很愚蠢简单,但对于我的目的来说还可以:
我用Gnome 调整工具更改这些键的行为。在我的语言中,有一个选项叫做输入在这个选项下有从顶部开始的第五点“ctrl键的位置”,我将其更改为“交换左超级键和左ctrl键”。
其他译本中应该也有类似的内容。
到目前为止,我现在可以使用左键命令某些标准快捷键的键(cmd + c 用于复制,等等)。但与我家里 Macbook 上的键盘不同,我无法使用cmd + 选项卡。因此我需要使用Ctrl + 选项卡或者alt + 选项卡。但没关系,这是你可以习惯的事情。
但不幸的是我仍然没有找到交换两者的选项替代键。