Ras*_*mus 7 keyboard-layout shortcut-keys wayland remapping
在 Wayland 下,我可以以某种方式绑定AltGr + C到吗Ctrl + C?
我基本上想问这个问题,但针对的是 Wayland 上的 GNOME。这意味着涉及AutoKey和xbindkeys 的答案将不起作用,因为在 Wayland 下两者都不起作用。
\n背景
\n我想重新映射一些键以最终更好地利用CapsLock.
我的计划是映射CapsLock到AltGr,然后按照此获取类似 vim 的键绑定。在 Wayland 上,可以通过 XKB 文件完成此重新映射(请参阅链接)。
但是,我也想用于CapsLock复制/粘贴。目前,我已将其映射到Ctrl(使用 XKB 文件)。这使得CapsLock + C整个系统工作顺利,我想保留这一点。
所以:CapsLock映射到 后AltGr,我想Capslock (= AltGr) + C充当Ctrl + C。
我的问题
\n在 Wayland 下,我可以以某种方式绑定AltGr + C到吗Ctrl + C?
(不只是重新绑定AltGr到Ctrl,因为这会达不到目的)
使用 Q 的替代示例
\n在 latin 的 XKB 文件中/usr/share/X11/xkb/symbols/latin,为我的密钥定义了以下行为Q:
key <AD01> { [ q, Q, at, Greek_OMEGA ] };\nRun Code Online (Sandbox Code Playgroud)\n这表明该密钥有四种可能的输出:
\nq。Shift,就产生了Q。AltGr,就产生了@。AltGr + Shift,就产生了\xce\xa9。本质上我想要实现的是,当Q按下 时AltGr,它不会产生@but Ctrl + Q。
有几个工具可以执行此操作,例如KMonad、Interception Tools和keyd。
我keyd在 Wayland 的领导下取得了巨大的成功,所以我描述了我对此所做的事情。我建议阅读简短的自述文件以获取灵感。守护进程可以做的事情比这里使用的要多得多。
目前的解决方案满足了我的要求,但避免了绕道而行AltGr。它在任何地方都被视为CapsLock除了Control,h ,j ,k , l它更改为箭头键。
1. 安装
我keyd从源代码构建,因为这很容易。下一行首先安装依赖项(包括 C 编译器),下载源代码,构建并安装它,并将其作为服务启用,然后启动它并在启动时运行它。
完成后,它会告诉您安装了什么内容,以便您可以将其删除以进行卸载。安装后可以删除源代码。
sudo apt install cmake libudev-dev
git clone https://github.com/rvaiya/keyd
cd keyd
make && sudo make install
sudo systemctl enable keyd && sudo systemctl start keyd
Run Code Online (Sandbox Code Playgroud)
2.找到您要重新映射的键盘的名称
您可以跳过此步骤并重新映射默认键盘,请参阅下文default.conf
您应该找到键盘的名称,以便我们可以为此进行重新映射。跑步
sudo keyd -m
Run Code Online (Sandbox Code Playgroud)
并按一些键。它将显示键盘的名称和按下的键。记下名字。我的是AT Translated Set 2 keyboard。
提示:keyd -m通过按下按键来查找按键名称非常有用。keyd -l列出了您可以映射到的键名称。
3. 制作配置文件
无论在哪里,创建一个名为whatever的配置文件。我们稍后会移动它。假设您使用~/my_keyboard.conf.
在其中输入以下内容。#'ed 是解释定义的行为的注释:
[ids]
*
[main]
### MAIN LAYER
# Make capslock activate the second layer:
capslock = layer(movement_layer)
### SECOND LAYER (called "movement_layer")
# Define the new layer, which while active
# by default treats every key as if Control was pressed,
# (":C" means the layer should inherit the Control layer),
# and overrides this default for only h, j, k and l, which
# are mapped to directions.
[movement_layer:C]
h = left
j = down
k = up
l = right
# In sum, in the main default layer, everything is standard, except
# when CapsLock is pressed, then the second layer is activated.
# When the second layer is activate, everything but h, j, k, l
# acts as if Control is held---e.g., c copies and v pastes,
# which we want, as we are holding down CapsLock.)
Run Code Online (Sandbox Code Playgroud)
4. 复制并重命名配置文件并重新启动 KEYD
接下来,我们将配置复制到正确的位置并正确命名,即根据我们要重新映射的键盘命名。
sudo cp ~/my_keyboard.conf /etc/keyd/AT\ Translated\ Set\ 2\ keyboard.conf
Run Code Online (Sandbox Code Playgroud)
笔记:default.conf。您还可以复制配置文件以/etc/keyd/default.conf使其适用于所有键盘。但如果你弄乱并重新映射你的 Enter 键,你就无法插入另一个键盘来撤消更改......
然后我们重新启动,keyd以便它加载新配置:
sudo systemctl restart keyd
Run Code Online (Sandbox Code Playgroud)
您现在已启动并运行:)
5. 创建别名来复制配置并重新启动 KEYD
我最终对配置文件进行了很多修改。我在主文件夹的子目录中编辑了它们,然后将它们复制并重新启动 keyd。
为了减少麻烦,~/.bash_aliases我在 中添加了
alias rekeyd='sudo cp ~/my_keyboard.conf /etc/keyd/AT\ Translated\ Set\ 2\ keyboard.conf && sudo systemctl restart keyd'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3951 次 |
| 最近记录: |