ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

linux – 我可以给两个键盘不同的布局吗?

2019-08-10 07:01:48  阅读:259  来源: 互联网

标签:linux debian keyboard-layout


我更喜欢Dvorak布局,所以我有一个很好的USB Das键盘,我已经为它分配了一个适用于虚拟控制台和X11的布局.我使用了loadkeys和install-keymap来安排它从启动开始生效,我对此非常满意.

但是,我的大多数同事更喜欢Qwerty布局,这是结对编程的障碍.我确实有一些可用于此任务的可用USB键盘选择,但是当它们插入时它们都会选择我的Dvorak布局.

有没有办法告诉udev(甚至只是X11)为我的附加键盘使用Qwerty布局?它们具有不同的USB供应商和设备标识符,我可以用来区分它们.

我的系统是Debian Testing,udev版本为232.当我在磁盘发生故障后重新安装时,它被systemd感染了,所以我习惯的标准(SysV风格)方法无效.

类似的问题Different keyboard layout for each keyboard对我没有任何帮助.

解决方法:

一般背景:键被分配三组不同的“代码”,首先是扫描码(任意硬件相关数字代表键盘上的键),然后是键码(代表特定键的更抽象的数字,例如shift或1 /! ),最后是keysym(键符号,实际符号,如á由键或组合键产生).

我最近了解到每个/ dev / input / event *设备都带有自己的scancode-to-keycode映射.这些映射可以通过iotcls来读取和修改(EVIOCGKEYCODE_V2,EVIOCSKEYCODE_V2),但有趣的是,似乎没有可用于访问这些映射的通用工具(我很快写了一个简单的C程序转储它,因为我很好奇).

然后,Linux内核和X都将密钥代码映射到密钥.对于内核,只有一个全局映射,kbd处理程序(或者至少一个非常虚拟控制台的全局映射,我不确定不同的虚拟控制台是否可以有不同的映射). X维护每个设备的映射.

因此,如果您想要在虚拟控制台上的键盘之间存在差异,那么剩下的唯一选择就是使用scancode-to-keycode映射.对于Dvorak vs. Qwerty,只要您重新映射字母键,并且不希望以不同方式重新映射移位和非移位状态的符号,这实际上就可以工作.

更新版本的udev使用硬件数据库(/etc/udev/hwdb.d)初始化特殊的扫描码到密钥代码映射,您可以添加自己的custom versions.

另一种方法是在虚拟控制台上使用Dvorak或Qwerty,但设置X为每个使用不同的keycode-to-keysym映射,如您链接的答案所述,这对您没有帮助(可能是因为您没有想要这个变种).此方法的优点是您还可以不同地映射符号,死键,合成等.

标签:linux,debian,keyboard-layout
来源: https://codeday.me/bug/20190810/1637560.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有