加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 使用更多修饰符重新键入键盘

发布时间:2020-12-13 19:19:10 所属栏目:Linux 来源:网络整理
导读:我正在寻找一种方法来为键盘添加一个“布局”.我已经在使用一个使用altgr作为本地字母的布局.我要添加的是一个镜像右手侧键盘,通过大写锁定激活( http://xkcd.com/mirrorboard.xkb中描述了一个) 不幸的是,ISO_LEVEL3_SHIFT已经被当地字母表所采用. (AFAIK)如
我正在寻找一种方法来为键盘添加一个“布局”.我已经在使用一个使用altgr作为本地字母的布局.我要添加的是一个镜像右手侧键盘,通过大写锁定激活( http://xkcd.com/mirrorboard.xkb中描述了一个)

不幸的是,ISO_LEVEL3_SHIFT已经被当地字母表所采用. (AFAIK)如果我使用mode_shift来改变组,我不能再在组中使用2个以上的级别了.有没有办法为altgr和mode_shift创建不同的组?

解决方法

对于每个键码定义,您最多可以有八个键盘.它们成对组织成四组.有一系列密钥ISO_Next_Group,ISO_Prev_Group,ISO_First_Group和ISO_Last_Group,当按下时,通过敲击keysym组中的键来循环keysym输出.这些键是您获得多个布局的方式.

例如,假设ISO_Next_Group已绑定到键码并分配给修饰符,则对于此定义:

keycode 53 = x X   Greek_xi Greek_XI   multiply U2297   U24E7 U24CD

在键入“x”的类型上按下标签“X”的键盘键.按下ISO_Next_Group键后,我得到“ξ”.再次按它,??我得到“×”.再按一次,“?”.最后,第四次按下它会让事情恢复正常.

花了好几天(因为Xkb1有可怕的文档;最后找到了一个好的指南here),你可以用这样的条目创建一个符号定义文件:

    key <SPCE> {
// Level  I      II       III    IV
        [ space,space,U2395,U2592 ],// Group 1
        [ U2423,emspace,U2420,hairspace ] // Group 2
    };

    key <RALT> {
        [ Mode_switch,Mode_switch ]
    };

    key <RCTL> {
        [ ISO_Level3_Shift,ISO_Level3_Shift ]
    };

括号括起一个组.通常,第一组是活动的.可以使用ISO_Group_Shift,a.k.a.Mode_switch临时增加该组.在组内,发出的符号以递增的级别定义.一级是裸键. Shift将一个添加到当前级别. ISO_Level3_Shift将级别设置为III.

上面的示例将七个符号映射到空格键以及各种shift键,以便:

空间??U0020 SPACE
换档空间??U0020 SPACE
R. Alt space???U 2423 OPEN BOX
R. Alt Shift空间??U2003 EM SPACE
R. Ctl space???U 2395 APL功能符号四
R. Ctl Shift space???U2592 MEDIUM SHADE
R. Alt R. Ctl.空间???U 2420符号空间
R. Alt R. Ctl.换档空间??U200A HAIR SPACE

对于V级,还有一个关键的ISO_Level5_Shift.因此,一组可以至少有六个符号.使用模式切换键,这意味着您可以配置键盘输入大约1,200个不同的符号,但在此时按住这么多修饰符可能会减少几个键.

附:所有命名符号的名称都存储在/usr/include/X11/keysymdef.h中.

1事实证明xmodmap(1)是错误的并且已弃用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读