关于使用脚踏板切换中英输入法的方案详述

电脑手机都是日常工具, 离高科技差一些

在主站的讨论中,非常认同以下两人看法,所以试着用ahk写了段代码,实现了一键转错输的拼音或符号为中文的。

用的是appskey,没有这个键的建议换成右ctrl。
使用效果见图,用起来还是非常爽的瞬间完成,而且appskey就在右ctrl边上,盲摸过去就很准确舒服了。

测试

可以看到不止Pinyin,逗号句号等英文符号也适用……

代码如下:

AppsKey::
    send , +{Home}
    sleep, 20
    send, ^c
    send,{shift}
    ;通过shift切换中文,可自行修改
    if (StrLen(Clipboard)) < 20
{
    sendinput,%Clipboard%
}
else
{
    Clipboard1 := SubStr(Clipboard, 1, -20)
    Clipboard2 := SubStr(Clipboard, -19)
    sendinput,{Text}%Clipboard1%
    sendinput,%Clipboard2%
}
return

注意:设置了有效范围是20,也就是光标前20个字符或汉字。尽可能避免出现这种情况:
「今天是个sunday,我爱晒taiyang」
这时前面的sunday会造成干扰。

1 个赞

关注了。
类似的情况,同一软件中英文的切换,还有字符全半角

很高兴被点名了~不过有个建议……乍一看似乎会毁灭到原有的剪贴板信息,建议找个中间变量过渡一下

Emacs 用户路过点了个赞

CAD画图狗表示这个功能我也很想要

其实两年前我实现了这个方案. 但最终放弃, 因为一, 我对脚要去找踏板, 如果把脚固定在那, 会有误触, 而且也不舒服. 二, 计算机输入法切换的速度跟不上踏板, 经常踩下去输入的还是英文.
后来我弄了一个双键盘方案, 一个只会输入中文一个只会输入英文, 但需要手的频繁移动, 后来也放弃了.
这个思路的确是非常棒的, 因为它本质上将一个电脑端的变量放到了人的身体上, 但实现起来, 真的我还没找到完美的方案.

2 个赞

有没有可能在键盘腕托上下功夫呢?
在腕托里塞个蓝牙按钮进去。
手腕搭拉在腕托上,触发按键,是中文输入。
手腕稍微抬起来点,变成英文输入。

感觉上似乎可行,不知道有没有大神研究研究好用不,量产些出来,俺先预约一个。

这个估计很难会量产,只能靠自己DIY了,可以试试把踏板改造一下, 或者diy一个小机械键盘,然后弄成手托。

不用Shift切换的人已经是少数了,用踏板更是少数中的少数 :joy:

手腕搭拉在腕托上,触发按键,是中文输入。

感觉这个交互很微妙,偏个性化了,需要按照自己的实际情况调整(每个人的键盘尺寸不同、使用姿势不同、手的力道不同等)

个人觉得脚踩挺好的,脚踩的交互有点像钢琴键盘下面的三个踏板,或者汽车的油门,还是很舒服的,手脚分工。(我觉得这样还能帮我在打字时养成良好的坐姿)

是不是可以通过鼠标所在所在程序的情况来自动切换呢?例如
检测到在浏览器的登录界面,用户名和密码就自动切换为英文。
检测在QQ的对话框里就切换为中文。
检测在vs code里面就切换为中文加半角符号。
检测在cmd里就切换为英文。
在某些程序里,不管是用全角还是半角输入的符号通通转化为半角。当然也在另外一些程序里通通转化为全角。
具备自学习功能,能够推测未设置程序里使用者最希望使用的输入法。

1 个赞

具备推荐功能,根据使用习惯相似的其他用户的习惯,向用户推荐新的操作方法,或者当用户使用新的软件的时候,自动去采用大多数用户都会切换的模式去切他。

用键盘记录来推测行不行?某用户每次打开IE浏览器的某某某地址的时候,总是使用英文输入法,所以这一次用户打开浏览器的时候,我们自动替它切换为英文输入法。

我的需求不能用楼上所说的场景识别来解决:

我在写理科类文字时,用到了Markdown的Tex,中文与数学公式交织,而且我需要使用中文的标点符号,需要一个方便切换中英文的办法,实在不想不停地按shift或者ctrl+space了。

随便举个小例子,实际中码字比这个复杂得多

电子的荷质比是$\frac{e}{m_e}$,其中$e$电子的电荷,$m_e$是电子质量。

1 个赞

我觉得这时候需要一个大佬来实现每当输入了$或¥的时候或光标进入了latex段、代码段,自动切换系统输入法为英文状态,Windows上可以通过和系统的IME接口实现切换输入法。

1 个赞
1 个赞

这个方案对于写markdown文档是好的,可以快速打出md的语法。

但如果有写/[/LaTeX/]公式的需求,目前感觉还是松踩踏板最方便

(大段中文和小段英文符号+字母交叉的情况)

这就像智能家居一样,真正智能是无感知的,我感觉这很容易实现,就看输入法开发商愿不愿意(我用win11微软自带输入法,好像是有记住窗口输入语言的选项的,但是刚刚没找到)。不过还是不能满足需求,比如我用某些软件过程中,突然想输入一个英文标点,还得手动的输

受你的启发,我改了一个自我感觉更顺畅的方法,按输入法切合键是切换输入法,连按两次是拼音转中文,并且用正则处理了汉字和字母夹杂的情况

SetCapsLockState, AlwaysOff

; capslock 按一次是切换中英文,按两次是输错了重新输入。
CapsLock::
	if Caps_presses > 0
	{
		Caps_presses += 1
		SetTimer Capskey, 200
		return
	}
	Caps_presses = 1
	SetTimer Capskey, 200
return

Capskey:
	SetTimer Capskey, off
	if Caps_presses = 1
	{
		SendInput,+
	}
	else if Caps_presses = 2
	{
		tocorrect()
	}
	Caps_presses = 0
return

tocorrect() 
{
	SendInput, +{Home}
	Sleep, 10
	SendInput, ^c
	Sleep, 10
	SendInput,+
	getenpos := RegExMatch(Clipboard, "\w+$") ;获得最后出现的一串英文字符的出现位置
	Clipboard1 := SubStr(Clipboard, 1, getenpos-1)
	Clipboard2 := SubStr(Clipboard, getenpos)
	Sleep, 10
	SendInput,{Text}%Clipboard1%  ;text启用文本模式, 它发送的是字符流而不是按键
	Sleep, 10
	SendInput,%Clipboard2%
}
return

用外挂输入法,不会有 ctrl+shift, 单个 shift,还是 ctrl+space , 或win+space 之间使用哪个的纠结,因为都不能用。

如影子输入法,可定义切换热键为 alt+space,两个大拇指,没那么累,支挂自定义为不同的程序设置不同的默认输入状态。

你的方法不错,精致多了