linux-创建自定义setxkbmap选项

奇怪的是,这似乎应该已经做过:我想在键盘顶部交换1–0键上的数字和符号,以便:

>当我按下6键时,输入的是*而不是6.
>当我按Shift 6时,将显示数字6而不是*.

我还想进行其他一些修改,但是很快发现,在使用setxkbmap选项(例如caps:swapescape)之前,其他人已经完成了这些布局修改.

鉴于以上所述,这是一个三部分的问题:

>键盘顶部是否可以交换数字和符号?
>是否存在,有什么方法可以找到这种情况是否存在,而不必手动浏览/usr/share / X11 / xkb / rules /中的* .lst和* .xml文件?
>最后,如果我要为setxkbmap创建一个选项,那将是一种理想的方法,以及如何将我的选项回馈给社区?

至于问题3:

>我试图创建该选项而没有成功(setxkbmap默默地失败了,我什至对自己的方法没有信心).
>我找不到该项目的托管地.
>除了man setxkbmap和涉及该主题的各种博客文章之外,我都找不到任何有关此主题的文档.

解决方法:

问题2:

有关所有可用选项的列表,可以执行localectl list-x11-keymap-options.这似乎只为您提供选项本身,而不是说明,因此更好的方法可能是在XKB * .lst文件上执行以下操作:

for f in /usr/share/X11/xkb/rules/*.lst; do sed -ne '/^\! option$/{s///; :a' -e 'n;p;ba' -e '}' $f; done | sort -u

(sed reference) *

如果您正在寻找与交换号码有关的内容,可以附加|. grep -i num,显示使用numpad / keypad的几个选项.不幸的是,我认为所有布局都在与字母数字字符相关的模板中列出了数字,这意味着它们内置于区域布局本身(或在dvorak的情况下为变体).

问题1:

您可以采用三种方法.

使用xmodmap覆盖布局

您可以通过在家庭中创建一个.Xmodmap文件来覆盖映射来创建某种程度上通用的方法,如Arch Wiki here所述.

这是一个示例配置:https://github.com/karma0/layouts/blob/master/home/.Xmodmap

脚步:

>将.Xmodmap放到家里.
>将行xmodmap $HOME / .Xmodmap添加到您的.profile

一种快速,肮脏但灵活的方法:

>运行xkbcomp -xkb $DISPLAY xkbmap生成一个包含您当前配置的文件xkbmap.
>对其进行修改以匹配所需的配置.这是一个例子:

Original:

06001

Modified:

06002

>执行命令xkbcomp -w 0 xkbmap $DISPLAY加载新配置.
>使用xinitrc或类似命令获取要在启动时运行的命令.

修改布局并添加新的变体

>打开您喜欢的布局文件(可能在/usr/share / X11 / xkb / symbols下).在此示例中,我们将使用us文件.
>在文件中找到您喜欢的变体;如果您喜欢我,请选择workman-intl.
>假设您想复制workman-intl布局,则可以复制该部分,并像我在这里所做的那样对其进行修改(请注意,这是从intl模板复制/粘贴的,第一列和第二列只是交换了):

06003

The xkb_symbols line defines the name of your variation; the include line borrows everything you need from the variation of your choice within the file (here, it’s the workman-intl variation in the us layout). Then, the definitions you want are what follows.
4. Add your new definition to /usr/share/xkb/rules/base.xml to the end of the variantList tag. Here’s the one I used:

06004

>将新的变体和说明添加到! /usr/share/X11/xkb/rules/base.lst的变体部分为:

06005

>重新启动Xorg服务器.
>设置setxkbmap命令以使用新版本运行.这是本演示的示例:setxkbmap -layout us -variant workman-programmer -option

问题3:

您可以尝试一下,直到开始寻找位于xorg生态系统内的xkb文档,您才可以找到该文档.

最好的写法可能是这样的:

https://www.charvolant.org/doug/xkb/html/index.html

引用:

Before you read this, please understand that I never wanted to write this document, being grossly under-qualified, but I always wanted to read it, and this was the only way.

此外,这里还提供了链接列表,以开始学习xorg中xkb系统的所有复杂性:https://www.x.org/wiki/XKB/

注意:大多数文档在系统中安装xkb时都引用了相对路径.这通常在/usr/share / X11 / xkb下

如果您希望做出贡献,则此项目位于xorg下,该组织在以下位置提供了开发人员文档:https://www.x.org/wiki/guide/,或更佳的是在此处:https://www.x.org/wiki/Development/

上一篇:android – 如何在react-native中将TextInput附加到键盘


下一篇:在Android上使用自定义键盘在IInputContextCallback上等待超时