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


推荐阅读
  • 通常情况下,修改my.cnf配置文件后需要重启MySQL服务才能使新参数生效。然而,通过特定命令可以在不重启服务的情况下实现配置的即时更新。本文将详细介绍如何在线调整MySQL配置,并验证其有效性。 ... [详细]
  • 本文介绍了 Python 的 Pmagick 库中用于图像处理的木炭滤镜方法,探讨其功能和用法,并通过实例演示如何应用该方法。 ... [详细]
  • 本文将详细介绍如何在没有显示器的情况下,使用Raspberry Pi Imager为树莓派4B安装操作系统,并进行基本配置,包括设置SSH、WiFi连接以及更新软件源。 ... [详细]
  • 优化SQL Server批量数据插入存储过程的实现
    本文介绍了一种改进的SQL Server存储过程,用于生成批量插入语句。该方法不仅提高了性能,还支持单行和多行模式,适用于SQL Server 2005及以上版本。 ... [详细]
  • 解决vCenter vSphere HA初始化失败的问题
    本文探讨了在集群中遇到的所有vSphere HA主机状态显示‘无法正确安装或配置vSphere HA代理’错误的情况,并详细介绍了排查与解决步骤,包括检查HA初始化错误及安装HA代理的常见故障排除方法。 ... [详细]
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • 全能终端工具推荐:高效、免费、易用
    介绍一款备受好评的全能型终端工具——MobaXterm,它不仅功能强大,而且完全免费,适合各类用户使用。 ... [详细]
  • 本文介绍了在CentOS 6.4系统中安装MySQL 5.5.37时遇到的启动失败和PID文件问题,并提供了详细的解决方案,包括日志分析、权限检查等步骤。 ... [详细]
  • 本文档详细介绍了在 Kubernetes 集群中部署 ETCD 数据库的过程,包括实验环境的准备、ETCD 证书的生成及配置、以及集群的启动与健康检查等关键步骤。 ... [详细]
  • 深入解析ESFramework中的AgileTcp组件
    本文详细介绍了ESFramework框架中AgileTcp组件的设计与实现。AgileTcp是ESFramework提供的ITcp接口的高效实现,旨在优化TCP通信的性能和结构清晰度。 ... [详细]
  • 深入解析MySQL中的七种JOIN查询
    本文详细介绍了MySQL中常用的七种JOIN查询方法,包括内连接、左外连接、右外连接、全外连接以及排除连接等,并通过实例进行说明。 ... [详细]
  • 本文详细介绍了使用ZooKeeper构建高可用集群的方法,包括必要的软件环境准备、配置文件调整及集群启动等关键步骤。通常,一个ZooKeeper集群由奇数个节点组成,以确保Leader选举的有效性。 ... [详细]
  • 本文探讨了在渗透测试中信息收集阶段使用的几种端口扫描技术,包括nmap、masscan、socket、telnet及nc等工具的应用与比较。 ... [详细]
  • 本文介绍如何在Ubuntu操作系统中为DELL Latitude系列笔记本配置触摸板的自定义快捷键。此方法不仅适用于DELL品牌,其他品牌的笔记本也可能适用。通过编写简单的脚本,用户可以实现触摸板的快速开关。 ... [详细]
  • 本文探讨了前端包管理器的核心功能,包括注册机制、文件存储、上传下载、以及依赖分析等关键特性,并介绍了几种流行的前端包管理工具。 ... [详细]
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社区 版权所有