虎码的【九键无重码】方案,是六码定长形码方案,通过增加两个码长,在九宫格上实现和虎码原生方案(Tiger/Tigress)相同的重码率(也就是几乎无重)。
本方案基于 Rime 引擎和虎码输入方案,感谢大佬们的优秀开源。
九键无重的巧妙思路,参考自知乎答主<同志请烧点水>的文章九宫格双拼的无重码排布。
没有多余的记忆成本和学习成本。
- 只要你会虎码,则该方案的记忆成本为零——因为其码表(除去增加的两个辅码之外)和虎码原生方案完全相同;
- 只要你知道一点坐标系概念,则辅码的学习成本为零。
适用于电脑小键盘(数字键盘)、手机九键键盘(最好配合自定义布局的键盘使用)。
- 安装 Rime 输入法(鼠须管、小狼毫);
- 按照虎码官方教程部署好虎码方案;
- 将本方案 Rime 目录下的内容放入用户文件夹根目录;
- 重新部署 Rime;
- 在输入法中,选择本方案,即可使用。
- 示例中的手机键盘适配 ios 端的【仓输入法】,若使用该布局,可把文件
hamster_keyboard_for_TM.yaml
放入iPhone/Hamster/
目录,并在输入法中键盘布局
右上角加号中导入该文件。
学习路线:
- 了解如何用九宫格打字
- 学会虎码 (官网有详细教程)
- 学会如何打出辅码
- 如果想使用我定制的键盘布局,需要了解各个键位。
九宫格的优点在于按键大,防误触;可实现单手打字;键位规整,可实现盲打。但是,要将原本 26 键的虎码方案转移到只有 9 键的九宫格上,意味着同一次击键映射了更多的重码字。为了避免重码,需要增加 1 到 2 个码长,以精确选出要打的字母。这就是辅码的作用。
本方案使用文章的原理,为每两个码增加一个行列码
。对于原本的虎码来说,每打两个原码,新增一个行列码
用于字母选择。
九宫格按键布局:
1 qw | 2 abc | 3 def |
---|---|---|
4 ghi | 5 jkl | 6 mno |
7 prs | 8 tuv | 9 xyz |
公式:编码 = 2个原码 + 行列码(+ 2个原码 + 行列码)
九宫格上任意一个数字键都包含3个以内的字母,因此用1、2、3即可选出每个字母的位置。但是每敲一个键都要打一次1/2/3,码长会让人不堪重负。但当我们从视角转到二维,就简单了:
行列码也是九宫格上的任意一个数字键。这个键的位置包含了行和列两个坐标信息,两个坐标信息就可以一次选出两个字母的位置。比如数字 4 在九宫格的第二行第一列,它的坐标信息依次为 2
,1
。
-
举例:
要打出汉字
九
,九
的虎码是kj
,在九宫格中应依次打出55
。而k
是5
键的第二个字母,j
是5
键的第一个字母,所以在55
之后加一个位置为第二行第一列的行列码,这个键是4
,所以九
的九宫格虎码是554
。同理,
宫
字的虎码是wddk
,前两个码wd
在九宫格中应依次打出13
。w
是1
键的第二个字母,d
是3
键的第一个字母,所以在13
之后加一个位置为第二行第一列的行列码,这个键是4
,所以打出134
。接着要打dk
,在九宫格中应依次打出35
,d
是3
键的第一个字母,k
是5
键的第二个字母,所以35
之后加一个位置为第一行第二列的行列码,这个键是2
,所以宫
的九宫格虎码是134352
。
综上,每打两个码后加一个行列码,即可将原方案在九宫格上打出和26键一样的效果。
那如果码长为单数怎么办?本方案采用三个特定符号(斜杠/
、星号*
、反引号`
)来选择落单的这个码(这一项是方案自带,如果你追求纯粹的九宫格打字,你可以修改相关代码将这三个符号也改为九宫格上的数字(比如1、2、3)。但这样会增加重码)。
/
、*
、`
分别对应数字键上的第 1、第 2、第 3 位置的字母
-
举例:
的
字的虎码是u
,在九宫格中应打出8
,u
是8
的第二个字母,所以在8
之后打出*
键,所以的
的最后编码是8*
。记
字的虎码是svj
,在九宫格中先打出sv
对应的78
,s
是7
键的第三个字母,v
是8
键的第三个字母,所以在78
之后加一个位置为第三行第三列的9
键;接着打出j
对应的5
键,j
是5
键的第一个字母,所以继续打出/
键。因此记
字的最终编码为7895/
。
总结:
- 对于原本码长为2码、4码的字词来说,辅码存在于第三位和第六位(第三位用来选原本前两位的码,第六位用来选原本后两位的码)。这样,码长变为了3码、6码。
- 对于原本码长为单数(1和3)的字词来说,本方案使用三个特定符号来作辅码。这样,码长变为了2码、5码。
此外,本方案依旧支持分号;
二选上屏、单引号'
三选上屏,进一步避免选码。在不含 emoji 的情况下基本实现了“不从候选窗口选码”的极致效果。
综上所述,本方案能在不改变原方案码表的情况下,将原方案在九宫格上打出和26键一样的效果。上述效果由xxx.schema.yaml
文件中相关的拼写运算部分实现。因为行列码编码的是“位置信息”,所以该部分可直接复制粘贴到其他方案(比如拼音方案)中,实现全键到九键的丝滑转换。
部署本方案后,可以实现用数字小键盘打字,注意键位已经将 1 到 9 映射成从上到下的排列(以同步手机九键的输入习惯)
键位图如下:
这个布局:
-
为适配九键虎码和 Markdown 文本编辑而定制(布局中容易打出的符号都是 Markdown 语法的常用符号)。
-
出于兼容性考虑,选择
/
、*
、`
、;
、'
作为主要符号:/
还支持输入lua命令和 emoji 表情(虎码官方自带)- 反引号可以拼音反查(虎码官方自带);
- 星号是 Markdown 编辑最常用的符号;
- 分号
;
除二选上屏外还支持快符(详见xxx.extended.dict.yaml
)中的标点符号 快符
区; - 单引号
'
除三选上屏外还支持挂接英文输入法(虎码官方自带)。
-
支持通过划动精确打字母。 九宫格数字键:上划是数字(上划数字会直接上屏);左、下、右划分别对应该键的第一、二、三个字母(这些字母由 Rime 控制,方便进行拼音反查和使用
/
斜杠功能)� -
上划反引号打出的
=
号由 rime 控制,有计算器功能。 -
结合划动上屏以及
;
引导的快符,这个布局可打出标准电脑键盘中所有中、英符号。 (此处省略图示,请安装后自行点击、划动查看各个键。) -
这些布局思路值得注意:
- 包括配套的中文全键在内,大部分上划符号由Rime控制(打出中文符号),下划打出英文符号;中文符号也是尽可能都设为半角,以提高兼容性。
- 左侧 Markdown 符号区:除要用到 rime 功能的特殊符号
=/*`
外,都是直接上屏英文符号; - 点击数字键
2
/3
后按回车,会打出@
/#
(这个设定是为了留出位置以满足;
二选和'
三选功能); - 斜杠
/
:左右划动可选择输入方案; - 星号
*
:左右划动可在候选框中开关 emoji(改自虎码方案); - 反引号
`
:左右划动快速定位行首、行尾; - 空格:上划是数字0,左右划动是英文的问号和叹号;
- 边缘(最左列和最右列)的键只能向内划,无法向边缘划动。