我正在寻找一种方法来为我的键盘添加一个“布局”。我已经在使用将 altgr 用于本地字母的布局。我想添加的是一个镜像右侧键盘,它使用大写锁定激活(在http://xkcd.com/mirrorboard.xkb中有描述)
不幸ISO_LEVEL3_SHIFT
的是已经被当地字母表所采用。(AFAIK)如果我mode_shift
用来更改组,我不能再在组中使用超过 2 个级别。有没有办法为 altgr 和创建不同的组mode_shift
?
我正在寻找一种方法来为我的键盘添加一个“布局”。我已经在使用将 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
,当按下时,通过敲击键符组中的键来循环键符输出。这些键是您获得多种布局的方式。
作为一个例子,假设ISO_Next_Group
已经绑定到一个键码并分配给一个修饰符,那么对于这个定义:
键码 53 = x X Greek_xi Greek_XI 乘 U2297 U24E7 U24CD
在键入“x”时按带有标签“X”的键盘键。按键后ISO_Next_Group
,我得到“ξ”。再按一次,我得到“×”。再按一下,“ⓧ”。最后,第四次按下它会使事情恢复正常。
花了几天时间(因为 Xkb¹ 有可怕的文档;终于在这里找到了一个好的指南),您可以创建一个符号定义文件,其中包含如下条目:
键 <SPCE> { // 级别 I II III IV [ 空间, 空间, U2395, U2592 ], // 第 1 组 [ U2423, emspace, U2420, hairspace ] // 第 2 组 }; 键 <RALT> { [ 模式开关,模式开关 ] }; 键 <RCTL> { [ ISO_Level3_Shift, ISO_Level3_Shift ] };
括号包含一个组。通常,第一组是活动的。该组可以使用ISO_Group_Shiftaka临时增加一Mode_switch。在一个组内,发出的符号以递增的级别定义。级别 I 是一个简单的按键。 Shift将当前级别加一。 ISO_Level3_Shift将级别设置为 III。
上面的示例将七个符号映射到空格键以及各种 shift 键,例如:
space⟨ ⟩ U+0020 空格
Shift+space⟨ ⟩ U+0020 空格
R. Alt+space⟨␣⟩ U+2423
R. Alt+Shift+space开箱 ⟨ ⟩ U+2003 EM 空格
R. Ctl+space⟨⎕⟩ U+2395 APL 功能符号四边形
R. Ctl+Shift+space⟨▒⟩ U+2592
R. Alt+R. Ctl.+space中色⟨⟨⟨ 2420 空间符号
R. Alt+R. Ctl.+Shift+space⟨ ⟩ U+200A 头发空间
V级也有一个键ISO_Level5_Shift。因此,一组至少可以有六个符号。使用模式切换键,这意味着您可以将键盘配置为输入大约 1,200 个不同的符号,但此时按住如此多的修饰符可能会使一些键失效。
PS 所有命名符号的名称都存储在/usr/include/X11/keysymdef.h
.