背景:在过去五年左右的时间里,我一直在使用Mac硬件(大部分是高端MacBook Pro笔记本电脑)和软件,在典型的带有符合人体工程学的键盘的PC硬件上使用了Gnu/Linux。更重要的是,作为一个沉重的Emacs用户,向Mac的切换是痛苦的,苹果标准的短键盘既令人抓狂,也不可避免。我使用RSI工具进行了两个很小但非常重要的更改,从而防止了卡拉布纳的出现: 1)单独按下capslock键生成一个菜单(f13)键,另一个键按下时更改一个控制键修改的密钥;2)以类似的方式更改返回键,单独按下时得到返回,当按下另一个键时,更改控制键修改密钥。对苹果公司最近在硬件和软件方面的决定感到失望,我现在又回到了Gnu/Linux (如果这很重要的话,Ubuntu),但继续使用Mac笔记本电脑。
问题:由于卡拉巴赫只是一个OS工具,没有现成的Gnu/Linux对应工具,看来我需要编写和/或修改一些代码来实现capslock和返回键双功能行为卡拉巴赫所能实现的功能。卡拉巴赫的作者写入认为xbindkey和rbindkey进行密钥重映射,但乍一看,它们似乎不处理双重功能行为。现在我正在努力移植卡拉巴赫,或者完全创建一个新的工具。毫无疑问,也可能有其他方法。所以我的问题是:你对解决这个问题有什么编程建议?尤其是可以在几小时、几天或几周内而不是在几个月内发展出来的。
Notes
1)有不同的方法涉及行为的改变,例如交换控制键和命令键。许多人都在不同程度上满意地接受了试验。Karabiner的双重功能方法是,IMHO,远远的,最有效的,因为它提供了键盘主行和所有应用程序的控制键对称!
2)还可能提出不同的硬件方案。我曾尝试过戴尔、惠普、联想、宏碁等系统,并研究了更多。没有一个能与苹果高端产品的综合实力、尺寸、手感和风格相媲美,尽管价格很高。例如,戴尔精密7510体积庞大,触控板感觉像砂纸;联想X1 (一个非常好的系统)没有雷电端口;等等。
( 3)由于笔记本电脑的需求,外部键盘也无法启动;飞机或火车上的外部键盘没有出现。
发布于 2019-08-10 18:28:53
您可以在Waylan、TTY或X11上使用https://gitlab.com/interception/linux/tools实现这一点,后者直接与libevdev和libudev进行对话。
Wayland,TTY或X11
安装拦截工具和插件,如caps2esc或拦截-K2K。然后你需要配置截取来使用这个插件。对于caps2esc,可以使用以下/etc/udevmon.yaml文件:
- JOB: "intercept -g $DEVNODE | caps2esc | uinput -d $DEVNODE"
DEVICE:
EVENTS:
EV_KEY: [KEY_CAPSLOCK, KEY_ESC]然后以根用户身份运行它:
nice -n -20 /usr/bin/udevmon -c /etc/udevmon.yaml
你应该确保它是从登录开始。对于systemd,可以使用以下服务:
[Unit]
Description=udevmon
[Service]
ExecStart=/usr/bin/nice -n -20 /usr/bin/udevmon -c /etc/udevmon.yaml
[Install]
WantedBy=multi-user.targetX11-仅限
作为一种替代方法,或者在没有udev的旧系统上,您可以使用setxkbmap和西开普。
首先将Caps Lock更改为充当Ctrl修饰符:
setxkbmap -option caps:ctrl_modifier
然后,当按下小于超时的时间(默认为500 ms)时,将Caps Lock设置为充当Menu键:
xcape -e 'Caps_Lock=Menu'
xcape作为守护进程运行,因此您需要确保它是从登录开始。setxkbmap只为当前X会话设置键盘布局,您可以对xinitrc、xprofile或X配置文件进行永久设置它。
对于那些想要使用外部键盘的人,开源(软件和硬件)终极黑客键盘(UHK)允许这种功能。
https://stackoverflow.com/questions/41364833
复制相似问题