电脑手机都是日常工具, 离高科技差一些
在主站的讨论中,非常认同以下两人看法,所以试着用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会造成干扰。
关注了。
类似的情况,同一软件中英文的切换,还有字符全半角
很高兴被点名了~不过有个建议……乍一看似乎会毁灭到原有的剪贴板信息,建议找个中间变量过渡一下
Emacs 用户路过点了个赞
CAD画图狗表示这个功能我也很想要
其实两年前我实现了这个方案. 但最终放弃, 因为一, 我对脚要去找踏板, 如果把脚固定在那, 会有误触, 而且也不舒服. 二, 计算机输入法切换的速度跟不上踏板, 经常踩下去输入的还是英文.
后来我弄了一个双键盘方案, 一个只会输入中文一个只会输入英文, 但需要手的频繁移动, 后来也放弃了.
这个思路的确是非常棒的, 因为它本质上将一个电脑端的变量放到了人的身体上, 但实现起来, 真的我还没找到完美的方案.
有没有可能在键盘腕托上下功夫呢?
在腕托里塞个蓝牙按钮进去。
手腕搭拉在腕托上,触发按键,是中文输入。
手腕稍微抬起来点,变成英文输入。
感觉上似乎可行,不知道有没有大神研究研究好用不,量产些出来,俺先预约一个。
这个估计很难会量产,只能靠自己DIY了,可以试试把踏板改造一下, 或者diy一个小机械键盘,然后弄成手托。
不用Shift切换的人已经是少数了,用踏板更是少数中的少数
手腕搭拉在腕托上,触发按键,是中文输入。
感觉这个交互很微妙,偏个性化了,需要按照自己的实际情况调整(每个人的键盘尺寸不同、使用姿势不同、手的力道不同等)
个人觉得脚踩挺好的,脚踩的交互有点像钢琴键盘下面的三个踏板,或者汽车的油门,还是很舒服的,手脚分工。(我觉得这样还能帮我在打字时养成良好的坐姿)
是不是可以通过鼠标所在所在程序的情况来自动切换呢?例如
检测到在浏览器的登录界面,用户名和密码就自动切换为英文。
检测在QQ的对话框里就切换为中文。
检测在vs code里面就切换为中文加半角符号。
检测在cmd里就切换为英文。
在某些程序里,不管是用全角还是半角输入的符号通通转化为半角。当然也在另外一些程序里通通转化为全角。
具备自学习功能,能够推测未设置程序里使用者最希望使用的输入法。
具备推荐功能,根据使用习惯相似的其他用户的习惯,向用户推荐新的操作方法,或者当用户使用新的软件的时候,自动去采用大多数用户都会切换的模式去切他。
用键盘记录来推测行不行?某用户每次打开IE浏览器的某某某地址的时候,总是使用英文输入法,所以这一次用户打开浏览器的时候,我们自动替它切换为英文输入法。
我的需求不能用楼上所说的场景识别来解决:
我在写理科类文字时,用到了Markdown的Tex,中文与数学公式交织,而且我需要使用中文的标点符号,需要一个方便切换中英文的办法,实在不想不停地按shift或者ctrl+space了。
随便举个小例子,实际中码字比这个复杂得多
电子的荷质比是$\frac{e}{m_e}$,其中$e$电子的电荷,$m_e$是电子质量。
我觉得这时候需要一个大佬来实现每当输入了$或¥的时候或光标进入了latex段、代码段,自动切换系统输入法为英文状态,Windows上可以通过和系统的IME接口实现切换输入法。
这个方案对于写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,两个大拇指,没那么累,支挂自定义为不同的程序设置不同的默认输入状态。
你的方法不错,精致多了