背景

在进行中文输入的过程中,我们可能需要穿插一些英文单词和字母。特别是在使用Latex输入公式时,一下中文一下英文,需要来回按下 shift 切换输入法,否则会被一些中文符号打断思路。与此同时,普通的输入切换按键,例如shiftctrl+space等等按键也不在常规字母输入的区域,需要移动手腕降低打字体验。能不能有一个更爽的方式来丝滑地在中英文来回滑动,不打破输入的节奏,甚至有一种飙车的快感呢?

当然有,上网搜索就能发现英雄所见略同,用脚切换中英文输入法的可行性已经被网友所验证[2],但是对我来说似乎还少了点什么。

网友的智慧

网友最初的构想是踏板踏下相当按下F13,再实现一个键盘映射当检测到 F13 被按下时,自动发送 Ctrl + Space,当检测到 F13 被松开时,自动发送Ctrl + Space来切换。后来万能的淘宝店家表示甚至可以直接在硬件上完成检测和发送Ctrl + Space
整个事情就这样解决了吗?

切换的困境

并没有,因为Ctrl + Space只能切换输入法,但不能将输入法固定到中文和英文,这就意味着必须在第一脚踩下去前将输入法调整到想要的状态而不能将无脑使用,不能认为踩了就是某种状态,这会严重影响输入者的心情。那我们能不能编写一个程序来强制设置中英文而非切换呢?可查找了互联网发现这件事并不容易,网络上有的设置中英文输入法的代码不能用于win11的输入法(尽管有切换fctix的,赢)。这可怎么办呢?

那么我们去主动捕获右下角任务栏的中英文标记再更具情况去切换输入法。于是在这件事情上又做了一些列尝试,比如用模板匹配、用ocr等等,但很难做到能够适配不同的分辨率,而在被遮挡的情况下这些工作自然也白费。

峰回路转

这时候刚好刷到了链接[5],真是妙蛙种子吃着妙脆角进了米奇妙妙屋,解决不了切换输入法的根源是现在的只是中文输入法,中英文只是它的两种形态。那么我们再安装一个英文输入法,就可以用指定按键来切换中英文了!

[这里应该有图片,但是还没有]

轮到脚踏板了

在实现了以上功能之后,我们发现现在只需要一个踩下去会触发F,松开会触发F键盘作为脚踏板,这个还不简单?

还真不,实现蓝牙键盘的功能是在情理之中的,做一个踏板则是困难的。于是在网上买了一块现成的踏板,结果发现在踩下去时会凸出来一块,这种踏板只适合做下沉式的场景,如果给他再做个盒子,那么踩在上面可费老劲儿了。

pedal

放弃使用实体踏板,忽然想到了在购物车里的压力片,理论成立,实践开始!

电路设计

使用ESP32作为主控去读取分压后应变片上的电压;使用ETA6002来给锂电池充电,还能边冲边用;还特别设计了一个一段时间不踩自动关机,脚踩后上电的电路,用于延长电池使用时间。
pedal
pedal
shell1

外壳设计

根据定位孔能够卡住PCB,留出一个typc充电调试口。
shell1
shell2
shell3

代码实现

ESP32官方例程上进行修改即可。

https://github.com/zig-one/zigpedal

使用效果

[这里应该有视频,但是没有]

参考文献

[1] 如何用「脚」切换中英文输入法 - 小众软件

[2] 用 脚 切 换 输 入 法 !- bilibili

[3]脚踩按键为啥那么贵?

[4]AHK中英文输入法自动切换

[5]如何通过快捷键切换输入法中英文状态 - Quicker