在Linux上重新映射Win,Ctrl和Alt键

时间:2015-08-21 20:40:01

标签: linux emacs configuration keyboard

问题:

如何在Linux上重新映射(交换)系统范围内的修改键?

说明:

我想在我的电脑上安装Debian Jessie,以便与Emacs一起使用。我有一台带有Emacs的MacBook并主要使用它。以下是按键在笔记本电脑上的排列方式:

fn ctrl alt cmd spacebar cmd alt

fn 在我的Emacs工作流程中未使用,其他键配置如下:

  • ctrl 充当Hyper
  • alt 充当Meta
  • cmd 充当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非常有用且简单的指南。

2 个答案:

答案 0 :(得分:2)

xmodmap是开始的地方,请记住,X对HyperMeta一无所知,所以你必须调查看看哪个编号的修饰符(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!
#