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


推荐阅读
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 之前项目在windows2003服务器上设置定时任务,每天执行。现在把项目移植到linux系统。也要在linux系统上设置计划任务。但是之前我从来没有做过。所以多得不 ... [详细]
  • 本文转载自:https:blog.csdn.netu924512005articledetails70655272详细了解FPGAselectIO是学习FPGA基础 ... [详细]
  • Linux学习笔记:psef、ps aux、kill9
    一、查看进程命令1.ps命令Linux中的ps命令是ProcessStatus的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
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社区 版权所有