paj*_*to0 17 linux keyboard macos emacs karabiner
背景:在过去五年左右的时间里,我使用Mac硬件(大部分是高端MacBook Pro笔记本电脑)和软件,经过多年在典型的PC硬件上使用Gnu/Linux和符合人体工程学的键盘.更重要的是,作为一个沉重的Emacs用户,切换到Mac是痛苦的,Apple标准的短键盘既令人抓狂又不可避免.我通过使用Karabiner工具进行两个小的但非常重要的改变来阻止RSI发作:1)当单独按下时改变大写锁定键以产生菜单(f13)键,当用另一个键按下时改变控制键修改键码; 2)以类似的方式改变返回键,单独按下时返回,当用另一个键按下时,控制键修改键码.对Apple最近对硬件和软件的决定感到失望,我现在回到Gnu/Linux(如果重要的是Ubuntu),但坚持使用Mac笔记本电脑.
问题:由于Karabiner是一个仅支持OS X的工具,没有现成的Gnu/Linux版本,因此看起来我必须编写和/或修改一些代码以实现大写和Karabiner启用的返回键双重功能行为.Karabiner的作者写道,xbindkeys和rbindkeys进行密钥重映射,但乍一看它们似乎没有处理双重功能行为.现在我正在努力移植Karabiner或完全创建一个新工具.毫无疑问,也可能有其他方法.所以我的问题是:你会建议解决这个问题的编程建议是什么?特别是可以在数小时,数天或数周而不是数月内开发的产品.
备注:
1)有不同的方法涉及行为的改变,例如交换控制和命令键.许多人都受到了不同程度的满足.Karabiner的双重功能方法是,恕我直言,其中最有效的是它在键盘主页上提供控制键对称,并适用于所有应用!
2)也可能建议使用不同的硬件.我已经尝试过戴尔,惠普,联想,宏碁等系统并且看了很多.没有一款可与苹果顶级产品的功率,尺寸,手感和风格相媲美,尽管价格优惠.例如,Dell Precision 7510体积庞大,并且有一个感觉像砂纸的触控板; 联想X1(一个非常好的系统)缺少一个Thunderbolt端口; 等等
3)由于笔记本电脑的要求,外接键盘也是不起作用的; 飞机或火车上的外部键盘没有发生.
goe*_*tzc 10
您可以在Waylan、TTY或X11 上使用拦截工具实现这一点,它直接与libevdev和libudev对话。
安装拦截工具和插件,如caps2esc或拦截-k2k。然后你需要配置拦截来使用这个插件。对于caps2esc,您可以使用以下/etc/udevmon.yaml文件:
- JOB: "intercept -g $DEVNODE | caps2esc | uinput -d $DEVNODE"
DEVICE:
EVENTS:
EV_KEY: [KEY_CAPSLOCK, KEY_ESC]
Run Code Online (Sandbox Code Playgroud)
然后以root身份运行它:
nice -n -20 /usr/bin/udevmon -c /etc/udevmon.yaml
您应该确保它从 login 开始。对于systemd,您可以使用以下服务:
[Unit]
Description=udevmon
[Service]
ExecStart=/usr/bin/nice -n -20 /usr/bin/udevmon -c /etc/udevmon.yaml
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
作为替代方案或在没有udev 的旧系统上,您可以使用setxkbmap和xcape。
Caps Lock充当Ctrl修饰符的第一个更改:
setxkbmap -option caps:ctrl_modifier
然后设置Caps Lock为Menu在按下时间小于超时(默认为 500 毫秒)时充当键:
xcape -e 'Caps_Lock=Menu'
xcape作为守护进程运行,因此您需要确保它在 login时启动。setxkbmap仅为当前 X 会话设置键盘布局,您可以在xinitrc、xprofile或X 配置文件上永久设置它。
PS对于那些想要使用外部键盘的人,开源(软件和硬件)Ultimate Hacking Keyboard (UHK)允许此功能。
| 归档时间: |
|
| 查看次数: |
3232 次 |
| 最近记录: |