如何在Linux上重新映射(交换)系统范围内的修改键?
我想在我的电脑上安装Debian Jessie,以便与Emacs一起使用。我有一台带有Emacs的MacBook并主要使用它。以下是按键在笔记本电脑上的排列方式:
fn ctrl alt cmd spacebar cmd alt
fn 在我的Emacs工作流程中未使用,其他键配置如下:
Hyper
Meta
Control
这些配置让我感觉很舒服Emacs体验(大拇指点击Control
cmd 键)我习惯了这种键绑定。
默认情况下 alt 用作Meta
,而 ctrl 用作Control
,键交换和大拇指放在Meta
我想在Linux上以相同的方式配置我的密钥,这是我在PC键盘上的内容:
ctrl win alt spacebar alt win 菜单 ctrl
因此,为了对应我的笔记本电脑键,我想将 win 键映射到Alt
修饰符,并将 alt 键映射到{{ 1}}修饰符。在这种情况下, ctrl 可以用作Control
修饰符,而 menu 可以保持不变。
是否可以在Linux(Debian)上进行系统范围的配置?
最后,我设法通过以下配置实现了我的目标:
Super
另外,这里有similar question非常有用且简单的指南。
答案 0 :(得分:2)
xmodmap
是开始的地方,请记住,X对Hyper
或Meta
一无所知,所以你必须调查看看哪个编号的修饰符(mod4,mod5等) ),emacs用于这些修饰符。
以下是一些有用的链接:
答案 1 :(得分:1)
您可能会发现Kinto很有用。这是我最近创建的一个项目,经过几年以几种不同方式解决了这个问题,我现在觉得它足够扎实地分享。
Kinto安装程序仅使用python进行初始安装,之后仅是systemd服务,bash,xprop,setxkbmap和xkbcomp。就我而言,这是您将找到的最快,最原生的解决方案。
Xmodmap也已失效,它将无法与Wayland一起使用。
https://github.com/rbreaves/kinto
https://medium.com/@benreaves/kinto-a-mac-inspired-keyboard-mapping-for-linux-58f731817c0
这里也是要点,如果您只想查看所有内容的核心,则它不会在需要时替换您的键盘映射。 Gist也不包括自定义的xkb键映射文件,这些文件设置了使用Cmd和箭头键设置macOS样式的光标/按词操作。
https://gist.github.com/rbreaves/f4cf8a991eaeea893999964f5e83eebb
要点
# permanent apple keyboard keyswap
echo "options hid_apple swap_opt_cmd=1" | sudo tee -a /etc/modprobe.d/hid_apple.conf
update-initramfs -u -k all
# Temporary & instant apple keyboard keyswap
echo '1' | sudo tee -a /sys/module/hid_apple/parameters/swap_opt_cmd
# Windows and Mac keyboards - GUI (Physical Alt is Ctrl, Physical Super is Alt, Physical Ctrl is Super)
setxkbmap -option;setxkbmap -option altwin:ctrl_alt_win
# Windows and Mac keyboards - Terminal Apps (Physical Alt is Super, Physical Super is Alt, Physical Ctrl is Ctrl)
setxkbmap -option;setxkbmap -option altwin:swap_alt_win
#
# If you want a systemd service and bash script to help toggle between
# GUI and Terminal applications then look at project Kinto.
# https://github.com/rbreaves/kinto
#
# Note: The above may not work for Chromebooks running Linux, please look
# at project Kinto for that.
#
# If anyone would like to contribute to the project then please do!
#