热门标签 | 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/开发/


推荐阅读
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
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社区 版权所有