• onecreeper

    没人会找我借设备

    先说明,个人本来就不太喜欢别人使用我的设备,感觉不舒服。事实上,当别人借用我的设备,他们几乎打不了字。有以下原因:

    - 键盘布局诡异

    - 键盘诡异

    - 输入法诡异

    他们根本打不了字,所以就不用了。

    注:本文纯属无聊写的,梦到什么写什么

    不同的键盘布局

    我们平常使用的键盘布局都是 qwerty,然而,键盘布局其实不止 qwerty,我在一些阴间电子产品(投影)上见到过 abcdefg。这篇 文章介绍了不同布局的区别,简单来说现在的 qwerty 布局并不是最优解,只是我们都习惯了。我第一次知道 colemak 是在看 TheCW 大佬的 arch 安装视频的时候,在英文输入领域 colemak 这种键盘布局有很大(注意不是恒大)优势,使用 colemak 输入英文的时候可以尽量减少手指移动,达到省力的效果。

    图片

    图出处:Colemak

    然而,较高的学习成本也让这种布局不被大多数人所接受,大多数人也不知道这种布局。已经习惯了 qwerty 的人自然不会想到会存在其他的布局,更不会去尝试。这也很合理,我也仅仅在手机上的英文输入法用 colemak。对于英文输入,colemak 有优势,然而我要用中文啊,colemak 其实在中文输入上没有明显优势。

    而我用这个布局,也仅仅是因为在劝说朋友使用双拼的时候跟他说:你用双拼,我用 colemak(手机英语输入时),我们一起练习没用过的东西。要问我输入速度提高了多少,我也不知道,也许是负数?

    不同的输入法

    如果说键盘布局变了还能用,输入法变了那就是很痛苦的。我想介绍的就是双拼输入,这是本文最有用的东西了,且看且珍惜。

    先说优点:学习简单(相对于五笔),省点击量。当然我事先说明,我使用的不是最优方案,最优方案也许就是小鹤双拼+辅助码,然而我喜欢系统自带输入法,再加上兼容性问题,我使用的是微软双拼。

    不考虑选词,用我们常用的输入法(全拼)输入“你这个 ui 有问题啊,你再看看,记得调用子代理用 luna”会怎么打?对于这些词我们其实不用输入完整的拼音,只需要输入首字母就行了。

    然而如果遇到了比较少用的词:

    为全面提升工作效能,加速推进信息化建设进程,现需申请专项经费划拨,用于实施统一采购一批高性能电子计算机终端设备。本次采购将严格遵循效率优先、兼顾公平的原则,进行全局统筹、科学规划,确保资源配置合理,优先满足核心业务需求。通过本次信息化终端设备的优化配置,将进一步筑牢数字化转型的根基,为未来智能化、智慧化、自动化发展提供坚实的硬件支撑,具有深远的战略意义。此次挑战转化为优化资源配置模式、提升经济韧性的重要契机,为实现更高质量的发展奠定坚实的财务根基。

    其中“统筹”的全拼是 tongchou:不考虑选词,你需要敲 8 次键盘(当然,输入法够厉害也许只用 1 下);双拼则只要 4 下 tsib,也就是 t→t、s→ong、i→ch、b→ou。不难发现,双拼输入法中一个字母代表一个声母或者韵母,巧妙地利用了拼音的性质。用双拼输入法可以保证你的每个字的拼音只需要两次就能输入。

    我们来算算:键盘 26 个按键(先不管微软双拼使用了“;”),有多少种组合?26^2 = 676,这个数字大于声母韵母的组合,网络 上说 399 种音,所以双拼是显然可用的。我们也可以统计下全拼的情况,并且除了敲击次数还有手指移动问题——平均每个字的手指移动距离。

    我先找了中文字频次数据,确定哪些字输入比较多,这种比较符合大众,毕竟不是人人天天输入大量拼音长的字。数据源 虽然这个数据比较老了,但还是有参考价值的,然后就让 codex 继续收集数据,清洗下。先明确下统计口径:

    - 数据源:采用两部分——第一部分是公开词频表,第二部分是小说,我随便找了两本:《福尔摩斯探案全集》和《三体》1-3。

    - 计算:

    - 获取词频数据,转为拼音。例如“你”字 → ni,生成全拼和双拼(除选字后)的敲击键盘数量 → 2:2,同时生成微软双拼和小鹤双拼的敲击数量。

    - 上述操作重复若干次,得到形如“词、词频、全拼敲击次数、(包括多种)双拼敲击次数”的表格,将频次作为权重计算加权平均数,即:

    \bar{x} = \frac{\sum_{i=1}^n f_i \cdot x_i}{\sum_{i=1}^n f_i}

    其中:

    - f_i 为第 i 个词的词频(权重);

    - x_i 为第 i 个词的敲击次数(全拼或双拼,分别代入)。

    - 顺带可以考虑每个字都进行一次选词的极限情况。

    - 移动距离统计:我们打字一般用双手,当然也同时考虑手机单手(只能用大拇指)的情况。

    一根手指打字的情况比较简单:根据手机输入法键盘直接计算键位折线距离即可,但要考虑键盘第一行的错位。

    复杂的是电脑打字的情况,往往用到至少两根手指,平常打字用得更多。我们理想化处理:规定每根手指有自己的初始位置,计算手指移动距离之和;为了符合人类的习惯,人为规定每根手指的管辖范围——比如不应该用左手食指去敲击“P”。然后我们用两本小说为例子,暂不考虑特殊符号。(注:移动距离不与打字速度线性相关。)

    标准盲打指法里,手指平时停在键盘中间那排(Home Row / 基准行),各指分工如下:

    手 |
    小指 |
    无名指 |
    中指 |
    食指 |
    拇指 |

    左手 |
    A |
    S |
    D |
    F |
    悬在空格上方 |

    右手 |
    ; |
    L |
    K |
    J |
    悬在空格上方 |

    各指管辖的按键范围:

    手指 |
    初始位置 |
    管辖字母 |
    同列数字/符号 |

    左小指 |
    A |
    Q A Z |
    `、1,以及 Tab/Caps/左Shift |

    左无名指 |
    S |
    W S X |
    2 |

    左中指 |
    D |
    E D C |
    3 |

    左食指 |
    F |
    R T F G V B |
    4、5 |

    右食指 |
    J |
    Y U H J N M |
    6、7 |

    右中指 |
    K |
    I K , |
    8 |

    右无名指 |
    L |
    O L . |
    9 |

    右小指 |
    ; |
    P ; / |
    0、-、=,以及 [ ] \ '、Enter/Backspace/右Shift |

    左右拇指 |
    — |
    — |
    —(只按空格) |

    设输入序列为: |
    |
    |
    |

    K=(k_1,k_2,\ldots,k_n)

    每个按键 k_i 由手指 f_i 按下。对任意手指 f,提取它负责的按键子序列:

    K_f=(k_{f,1},k_{f,2},\ldots,k_{f,m_f})

    初始位置记作虚拟按键 k_{f,0},其位置向量 𝑝⃗₍𝑓,0₎ = 𝑝⃗(𝑘₍𝑓,0₎) (不知道为什么latex搞不出来用下unicode)(即该手指的基准键)。总移动距离为:

    \boxed{
    D(K)=\sum_{f}\sum_{j=1}^{m_f}\left|\vec p(k_{f,j})-\vec p(k_{f,j-1})\right|
    }

    其中:

    - \vec p(k) 是按键 k 的位置向量;

    - k_{f,0} 是手指 f 的初始位置(虚拟按键),j=1 时从它起算,即每根手指从自己的基准键出发;

    - 每根手指只计算自己连续负责的按键,即同一手指相邻两次击键的位移;

    - 最后把所有手指的位移相加,得到 D(K)。

    这样同时考虑了输入按键顺序(位移依赖序列中相邻的键对)和多根手指的独立运动(各指并行移动,互不叠加串行)。

    还有问题,不考虑选词其实也不太合适,但是再追求那么多就很复杂了,不太好建模(开摆),就当作我不需要选词吧,其实如果可以,可以把输入法模拟下,借助开源输入法rime应该可以模拟,不过工作量就大了,只是为了区分两种输入法高下这种程度的模拟也够吧…大概…也许…应该?

    - codex开始努力

    - 为键盘每个按键标注坐标

    - 我收集数据

    - codex清洗数据并编写代码,我鼓励codex好好干,今天的努力是他明天更好的生活

    - 我坐享其成

    - 结果:

    图片

    图片

    注:如果考虑小鹤双拼+辅助码,小鹤+辅助码应该是理论最强,特别是移动距离。感兴趣的可以自己搜索下辅助码,另外就是其实微软双拼可以通过导入词库的方式用上辅助码。

    有点意外的是在击键数上并无想象中的巨大差距,我还以为会差一倍。不过在移动距离上确实就是巨大优势了,手机上打字本身容易误触,使用双拼通过降低敲击次数降低了总错误次数。更多细节和数据查看我的github仓库:onecreeper/double-pinyin-lab

    结果还算是比较理想,不过文章写到这里,是时候开始左右脑互搏了。双拼输入确实提供了几乎最优的拼音输入方式,然而,双拼输入没有离开拼音输入的范畴,拼音输入未必是最优方案。输入法有五笔、笔画、仓颉等。然而在我看来,唯一能够撼动双拼地位的是语音输入和ai补全。最近豆包输入法、千问输入法也出现了,社区早就开始探索语言模型来预测用户输入了,我们即将迎来大补全时代。输入法学习我们的语言习惯,自动补全,现在只是vibe coding、vibe math,以后会不会直接vibe交流?往好的看,ai补全输入法可以极大地提高我们打字速度,但是也要担心ai替我们说话。语音输入最大的劣势就是要开口,我要再活50年等到脑机接口。好吧,可能以后打字速度就是思考速度了。

    不同的键盘

    如果说输入法你还可以通过首字母勉强打字,那么一个按键不全的键盘可以真正地杀死比赛。

    没错,这就是40%配列键盘。(更小的就真没法用了)

    图片

    Q:WC这怎么打字

    A:想想自己的问题

    这个键盘只有44个按键(应该没数错吧),很容易注意到我们可以使用Fn来解决问题

    这里需要提到键层概念,此图看到的是第0层,你可以点击某些按键切换层数。对于QMK固件键盘,这些设置可以轻易修改。例如:我们打字肯定要数字键,虽然刚才我忽略了选词,但是我还是要用到的。此时注意到:左空格写的是"Space Fn1"其实就是短按是空格,长按是临时切换键层到第一层。输入“1”只需要“左空格”+“Q”。这是第一层的设置:

    图片

    同理,其他按键都是这样输入,我还给他塞了小数字键盘。

    图片

    这样可以非常从容地输入各种数字。

    但是,何意味?

    图片

    我买它就是因为好玩,也尝试挑战下用用他,挑战进行中。而且小键盘很好看,不是吗。不要太功利,键盘没法打字也有作为键盘的权利!

    图片

    其实仔细想想可以发现,这种键盘效率未必低下,考虑下场景。如果是以写作为职业的,出门带小键盘写作也许是不错的,并且写作不会经常用到特殊符号,习惯后效率甚至可能提高——小的键盘大大减少了手部移动距离。

    不过这也给我们带来了新思路:善用键层,以后键盘如果没有小数字键盘,你可以手动编辑键层(如果支持)为你的键盘添加一个小键盘。

    ref1:越用越小,40%配列机械键盘 - 知乎

    ref2:「思路分享」40%键盘怎么用?我来讲讲我的思路。(客制化键盘、小配列键盘、空格分裂)哔哩哔哩bilibili

    不过我的主力键盘还是98配列就是了(带f区,小数字键盘)

    不同的系统?

    正如上文,我尝试过安装archlinux,那时候我很菜,安装失败了,所以用ubuntu。在一次显卡驱动更新后,ubuntu炸了,我回到了windows。至少对我来说还是有很多不得不用windows的软件的,例如solidworks。不过不同的系统(linux)确实是让别人用不了你的电脑的好方法,本文不展开了。

    致谢

    内容转自我的博客:

    一只 creeper 的 Blog - are you ok ?

    一只 creeper 的 Blog - are you ok ?

    参考链接:

    - 键盘布局的区别:Qwerty / Dvorak / Colemak(博客园)

    - Colemak 官网(图出处)

    - TheCW 的 B 站空间(Arch 安装视频作者)

    - 汉语一共有多少种读音?(知乎)

    - 现代汉语常用字频率表(MTSU)

    - 越用越小,40% 配列机械键盘(知乎)

    - 「思路分享」40% 键盘怎么用?(B 站)

    郑重感谢:

    - Tibo (@thsottiaux) / X (给我gpt重置额度)

    - GPT5.6-luna (帮我调研,清洗数据,编写代码,制作图表)

    - GPT-6 Astra (让我今天又得到了gpt重置额度)

    - 我的电脑

    - 此电脑

    - Mac mini

    - You

    主楼
  • 归谜

    手机和电脑输入法全部使用微软双拼。

    #1
  • betterman233

    你输入再快也比不上我的语音输入。哈哈

    #2
  • onecreeper

    概念神这块,还得是用语音输入,vibecoding神器。

    #3
  • Wlison

    不是?你搁这儿写论文呢,还建模啊

    #4
  • Wolverine

    键盘布局都是 qwerty

    键盘布局有很多种,只是qwerty更通用一些而已。当你习惯了异形布局,确实可以避免他人使用你的设备,但你也会不习惯通用设备。

    #5
  • 猪头是头猪

    一般还是 Dvorak 用的多吧?

    #6
  • 小小云

    双拼转音形,同事用我的电脑我总得提示他们换个输入法 ^-^

    #7
  • sandsea

    和电脑输入法全部使用微软双

    第一次用双拼就是用的小鹤双拼,现在只会小鹤双拼。而且现在用全拼还不习惯了,打字猛错。

    #8

发表回复

登录后回复