热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

创建一个自定义setxkbmap选项

如何解决《创建一个自定义setxkbmap选项》经验,为你挑选了1个好方法。

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

当我按下6键时,*键入而不是6

当我按Shift+时66将显示数字而不是*

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


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

    键盘顶行上是否可以交换数字和符号?

    是否存在,无需手动浏览*.lst和中的*.xml文件,有没有办法找出这种情况是否存在/usr/share/X11/xkb/rules/

    最后,如果我要为创建一个选项setxkbmap,那将是一种理想的方法,以及如何将我的选项贡献回社区?


至于问题3:

我试图创建该选项而没有成功(setxkbmap默默地失败了,我甚至对自己的方法都不自信)。

我找不到该项目的托管位置。

除了man setxkbmap涉及该主题的各种博客文章之外,我还无法找到任何有关此主题的文档。

Bobby.. 7

问题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参考) *

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

问题1:

您可以采用三种方法。

使用覆盖布局 xmodmap

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

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

脚步:

    放下.Xmodmap你的家。

    将行添加xmodmap $HOME/.Xmodmap到您的.profile


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

    运行xkbcomp -xkb $DISPLAY xkbmap以生成xkbmap包含当前配置的文件。

    对其进行修改以匹配所需的配置。这是一个例子:

原版的:

key  {         [               1,          exclam ] };                                                                                                       
key  {         [               2,              at ] };                                                                                                       
key  {         [               3,      numbersign ] };                                                                                                       
key  {         [               4,          dollar ] };                                                                                                       
key  {         [               5,         percent ] };                                                                                                       
key  {         [               6,     asciicircum ] };                                                                                                       
key  {         [               7,       ampersand ] };                                                                                                       
key  {         [               8,        asterisk ] };                                                                                                       
key  {         [               9,       parenleft ] };                                                                                                       
key  {         [               0,      parenright ] };

改性:

key  {         [               exclam,        1 ] };                                                                                                         
key  {         [               at,            2 ] };                                                                                                         
key  {         [               numbersign,    3 ] };                                                                                                         
key  {         [               dollar,i       4 ] };                                                                                                         
key  {         [               percent,       5 ] };                                                                                                         
key  {         [               asciicircum,   6 ] };                                                                                                         
key  {         [               ampersand,     7 ] };                                                                                                         
key  {         [               asterisk,      8 ] };                                                                                                         
key  {         [               parenleft,     9 ] };                                                                                                         
key  {         [               parenright,    0 ] };

    执行命令xkbcomp -w 0 xkbmap $DISPLAY以加载新配置。

    使用xinitrc或类似命令获取要在启动时运行的命令。


修改布局并添加新的变体

    打开您喜欢的布局文件(可能在下/usr/share/X11/xkb/symbols)。us在此示例中,我们将使用该文件。

    在文件中找到您喜欢的变体;workman-intl如果你像我。

    假设您要复制workman-intl布局,则可以复制该部分,然后像我在这里所做的那样对其进行修改(请注意,这是从intl模板复制/粘贴的,第一列和第二列只是交换了):

 partial alphanumeric_keys                                                                                      
 xkb_symbols "workman-programmer" {
     include "us(workman-intl)"
     name[Group1]= "English (Workman, intl., with dead keys and num/sym swapped)";

     key  { [ exclam,         1,    exclamdown, onesuperior ] };
     key  { [ at,             2,   twosuperior, dead_doubleacute ] };
     key  { [ numbersign,     3, threesuperior, dead_macron ] };
     key  { [ dollar,         4,      currency, sterling ] };
     key  { [ percent,        5,      EuroSign, dead_cedilla ] };
     key  { [ dead_circumflex,6,    onequarter, asciicircum ] };
     key  { [ ampersand,      7,       onehalf, dead_horn ] };
     key  { [ asterisk,       8, threequarters, dead_ogonek ] };
     key  { [ parenleft,      9, leftsinglequotemark, dead_breve ] };
     key  { [ parenright,     0, rightsinglequotemark, dead_abovering ] };
};

xkb_symbols行定义了变体的名称; 该include行从文件中的选择变化中借用了您需要的所有内容(这里workman-intlus布局的变化)。然后,您需要的定义如下。4.将新定义添加/usr/share/xkb/rules/base.xmlvariantList标签的末尾。这是我使用的一个:

                                                                                                      
                                                                                                   
            workman-programmer                                                                    
            English (Workman, intl., with dead keys and num/sym swapped)                  
                                                                                                  
         

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

      workman-programmer    us: English (Workman, intl., with dead keys and num/sys swapped)'

    重新启动您的Xorg服务器。

    设置setxkbmap命令以使用新版本运行。这是本演示的一个:setxkbmap -layout us -variant workman-programmer -option

问题3:

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

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

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

引用:

在阅读本文档之前,请理解,我从来没有想写这份文档,因为它的资格很差,但是我一直想阅读,这是唯一的方法。

此外,这里有一个链接列表,以及获得学习所有的复杂的启动xkb系统xorg:https://www.x.org/wiki/XKB/

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


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



1> Bobby..:
问题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参考) *

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

问题1:

您可以采用三种方法。

使用覆盖布局 xmodmap

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

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

脚步:

    放下.Xmodmap你的家。

    将行添加xmodmap $HOME/.Xmodmap到您的.profile


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

    运行xkbcomp -xkb $DISPLAY xkbmap以生成xkbmap包含当前配置的文件。

    对其进行修改以匹配所需的配置。这是一个例子:

原版的:

key  {         [               1,          exclam ] };                                                                                                       
key  {         [               2,              at ] };                                                                                                       
key  {         [               3,      numbersign ] };                                                                                                       
key  {         [               4,          dollar ] };                                                                                                       
key  {         [               5,         percent ] };                                                                                                       
key  {         [               6,     asciicircum ] };                                                                                                       
key  {         [               7,       ampersand ] };                                                                                                       
key  {         [               8,        asterisk ] };                                                                                                       
key  {         [               9,       parenleft ] };                                                                                                       
key  {         [               0,      parenright ] };

改性:

key  {         [               exclam,        1 ] };                                                                                                         
key  {         [               at,            2 ] };                                                                                                         
key  {         [               numbersign,    3 ] };                                                                                                         
key  {         [               dollar,i       4 ] };                                                                                                         
key  {         [               percent,       5 ] };                                                                                                         
key  {         [               asciicircum,   6 ] };                                                                                                         
key  {         [               ampersand,     7 ] };                                                                                                         
key  {         [               asterisk,      8 ] };                                                                                                         
key  {         [               parenleft,     9 ] };                                                                                                         
key  {         [               parenright,    0 ] };

    执行命令xkbcomp -w 0 xkbmap $DISPLAY以加载新配置。

    使用xinitrc或类似命令获取要在启动时运行的命令。


修改布局并添加新的变体

    打开您喜欢的布局文件(可能在下/usr/share/X11/xkb/symbols)。us在此示例中,我们将使用该文件。

    在文件中找到您喜欢的变体;workman-intl如果你像我。

    假设您要复制workman-intl布局,则可以复制该部分,然后像我在这里所做的那样对其进行修改(请注意,这是从intl模板复制/粘贴的,第一列和第二列只是交换了):

 partial alphanumeric_keys                                                                                      
 xkb_symbols "workman-programmer" {
     include "us(workman-intl)"
     name[Group1]= "English (Workman, intl., with dead keys and num/sym swapped)";

     key  { [ exclam,         1,    exclamdown, onesuperior ] };
     key  { [ at,             2,   twosuperior, dead_doubleacute ] };
     key  { [ numbersign,     3, threesuperior, dead_macron ] };
     key  { [ dollar,         4,      currency, sterling ] };
     key  { [ percent,        5,      EuroSign, dead_cedilla ] };
     key  { [ dead_circumflex,6,    onequarter, asciicircum ] };
     key  { [ ampersand,      7,       onehalf, dead_horn ] };
     key  { [ asterisk,       8, threequarters, dead_ogonek ] };
     key  { [ parenleft,      9, leftsinglequotemark, dead_breve ] };
     key  { [ parenright,     0, rightsinglequotemark, dead_abovering ] };
};

xkb_symbols行定义了变体的名称; 该include行从文件中的选择变化中借用了您需要的所有内容(这里workman-intlus布局的变化)。然后,您需要的定义如下。4.将新定义添加/usr/share/xkb/rules/base.xmlvariantList标签的末尾。这是我使用的一个:

                                                                                                      
                                                                                                   
            workman-programmer                                                                    
            English (Workman, intl., with dead keys and num/sym swapped)                  
                                                                                                  
         

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

      workman-programmer    us: English (Workman, intl., with dead keys and num/sys swapped)'

    重新启动您的Xorg服务器。

    设置setxkbmap命令以使用新版本运行。这是本演示的一个:setxkbmap -layout us -variant workman-programmer -option

问题3:

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

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

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

引用:

在阅读本文档之前,请理解,我从来没有想写这份文档,因为它的资格很差,但是我一直想阅读,这是唯一的方法。

此外,这里有一个链接列表,以及获得学习所有的复杂的启动xkb系统xorg:https://www.x.org/wiki/XKB/

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


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


推荐阅读
  • 本文详细介绍了在Linux虚拟化部署中进行VLAN配置的方法。首先要确认Linux系统内核是否已经支持VLAN功能,然后配置物理网卡、子网卡和虚拟VLAN网卡的关系。接着介绍了在Linux配置VLAN Trunk的步骤,包括将物理网卡添加到VLAN、检查添加的VLAN虚拟网卡信息以及重启网络服务等。最后,通过验证连通性来确认配置是否成功。 ... [详细]
  • 深入理解Kafka服务端请求队列中请求的处理
    本文深入分析了Kafka服务端请求队列中请求的处理过程,详细介绍了请求的封装和放入请求队列的过程,以及处理请求的线程池的创建和容量设置。通过场景分析、图示说明和源码分析,帮助读者更好地理解Kafka服务端的工作原理。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • python3 logging
    python3logginghttps:docs.python.org3.5librarylogging.html,先3.5是因为我当前的python版本是3.5之所 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • IB 物理真题解析:比潜热、理想气体的应用
    本文是对2017年IB物理试卷paper 2中一道涉及比潜热、理想气体和功率的大题进行解析。题目涉及液氧蒸发成氧气的过程,讲解了液氧和氧气分子的结构以及蒸发后分子之间的作用力变化。同时,文章也给出了解题技巧,建议根据得分点的数量来合理分配答题时间。最后,文章提供了答案解析,标注了每个得分点的位置。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • 我创建了一个新的AWSSSO(使用内部IDP作为身份源,因此不使用ActiveDirectory)。我能够登录AWSCLI、AWSGUI,但 ... [详细]
  • android:EditText属性去边框EditText继承关系:View--TextView--EditTextEditText的属性很多,这里介绍几个:android:h ... [详细]
author-avatar
赖雨蓉744_128
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有