求Windows端能舒服地输入英文符号的办法

提问原因

Markdown很好用,但是我总觉得中文输入法配合markdown无法达到纯英文写作的那种心流,原因就是我需要不停地切换输入法的中英文!
而且我在写中文时还是需要使用中文的逗号和句号的

一个启发

最近在使用Logseq给了我一个不错的启发,就是按住Alt键再按【键能直接打出[],这个功能太酷了!
换成别的软件,我需要按一下shift,输入[[]],再按一下shift,按两下←,打中文,再按一下End,实在是有点麻烦了。
可惜很多软件没有这个功能,而且Logseq也是只支持了【】这个键

讨论总结

感谢大家的回答,我把目前的全部思路总结一下:
:small_orange_diamond:继续老老实实用shift等快捷键切换中英文
:small_orange_diamond:找到一个满足你需求的编辑软件
:small_orange_diamond:quicker的拓展热键,用组合键实现
:small_orange_diamond:AHK实现组合键
:small_orange_diamond:脚踏板配合上述功能
:small_orange_diamond:Rime输入法引擎自定义
:small_orange_diamond:主流输入法自带的短语编辑功能
:small_orange_diamond:反向操作,改成中文输入法下输入英文,然后琢磨怎么打中文符号
:small_orange_diamond:Quicker的一个动作:中英文符号切换

其他

这个问题我也在知乎上提问了,我自己先简单回答了一下
在使用笔记软件码字时,有没有更舒服的办法打出英文符号?- 呆维Joy的回答 - 知乎

能不能开发一种输入法,让中文和英文的标点符号不用来回切换呢? - nemo的回答 - 知乎

1 Like

有,rime输入法,可以完全自定义中英文符号.但是不能"智能"标点.
特别的,在Android平台,你可以完全自定义软键盘

2 Likes

解题思路:

把一些按键组合(比如 右侧shift+字母 )映射成发送特定的文本。

原理是通过鼠标挂钩在输入法处理按键之前拦截按键消息,然后发送成想要的内容。

可以通过AHK或Quicker的 扩展热键 功能实现。

这个动图是把向上的方向键+数字映射成输入上标文字的效果:
%E6%89%A9%E5%B1%95%E7%83%AD%E9%94%AE%E8%BE%93%E5%85%A5%E5%AD%97%E7%AC%A6

3 Likes

AHK 表示:我就是干这个的呀!简单到写一下对应关系就行了呢

2 Likes

身為Logseq用戶表示才知道這功能,其實可以把符號編入輸入法裡面的。

1 Like

感觉已经连着好几次看见你推荐rime了,这个输入法确实很强,但实际用起来……之前折腾过一段时间,如果只用内置的方案,或者其他人配置好的方案,简单的设置一下倒还好;但如果想把不同的方案里的功能整合一下,我弄了好久勉强算是实现了,但还是有些bug和不符合设想的地方;至于自己加一些功能更是无从下手。官网上的文档我也翻来覆去的读了好几遍了,但感觉很多东西都没说到,完全不够用。最后还是换回微软自带的了

3 Likes

主流输入法都支持自定义标点符号吧
还有自定义短语
这些都不行再考虑 ahk

2 Likes

rime可以说是折腾输入方式的终极归属了.
但是由于自由度高,设置又是直接修改配置文件,以至于学习难度的确大.可以说比玩我的世界都难.
(除了lua的部分),官网文档还是很详细的,要读一读慢慢试.

3 Likes

Markdown 语法输入主要痛点是方括号或尖括号吧。简单的方案是使用输入法的自定义短语,比如插入链接, kk 对应短语 xxx (一对方括号和圆括号)。更好的体验可以使用热键类工具,比如 kk+触发键 (如 ; ) 映射为操作“发送文本xxx , 并向左移动光标x3”。
这样输入语法无须切换输入法,可以很好的融入打字流程。

mddd

4 Likes

我用ahk测试了一下. 感觉 alt+符号 的方式会有点问题. 导致很多软件会激活快捷键.

比如 emeditor 下, alt+/ 会激活菜单.

前几天看论坛讨论 无用的 CapsLock , 会不会更好?

不能直接用快捷键,要拦截掉按键消息让它失去原有的功能,就像Capslock,也是拦截的,不会产生大小写切换的结果。所以一般找一个不太常用的键作为引导键。

是的. 右shift的确不常用. 但是感觉不如左边的大写顺手.

我基本上是除了word, 其他环境下放弃中文标点的.

Caps是很好的选择,我平时用空格多一点。@NSFW 的方式也很好,对于连续输入更友好一些(不用同时按多个键)。 对应到AHK里应该是叫做“热字符串”吧,Quicker里对应文本指令功能。这种方式有一个问题就是输入指令字符的时候可能会触发输入法的候选框,需要先消除候选框之后再发送实际要输出的内容。

想了一下,确实如此。我决定把 markdown 里面常用的一些格式存储自定义短语

我目前在实践用Quicker的拓展热键,设置的是rightctrl+符号,目前还没遇到冲突

另外我还发现了这个动作,可以先用英文符号码字,然后一键转换成中文符号 :joy:

1 Like

看问题其实你只需要实现"中文+半角"下,快速输入全角的逗号和句号。
还可以试试设置长按 “,” “.” 变为 “,” 和"。"

这段ahk代码可以实现点按输入半角/长按输入全角:

$.::
	KeyWait, .
	If (A_TimeSinceThisHotkey > 300)
		SetTimer, mainp, -1
	Else
		SendInput,.
Return

mainp:
	SendInput,。
Return

$,::
	KeyWait,SC033
	If (A_TimeSinceThisHotkey > 300)
		SetTimer, mainp2, -1
	Else
		SendInput,,
Return

mainp2:
	SendInput,{raw},
Return

好处是不改变输入习惯,坏处是需要时间习惯习惯 :rofl: :rofl: :rofl:
可以根据自己手速测试修改上面的数字300。

2 Likes

系统设置里不是有中文时使用英文符号吗?
没效果吗?

1 Like

我rime用别人配置好的就这个功能啊……

我不建议占用一个按键。有一个手指按着一个按键,总归会影响输入,不适合生产力环境。

我看到淘宝上有脚踏板按键,可以定义按键,用那个挺不错,可以配合软件:

  • 踏板松开为中文状态,踏板踩下为英文状态
  • 或者相反操作

这个不仅适合写作,也适合其他软件,例如:

  • ps 中要求英文状态用快捷键,输入时候要用到中文,忘记换回中文,就会给快捷键造成很多麻烦
  • 写代码常用英文,写中文注释要来回切换输入法,也很烦。

用脚踏板,就可以需要输入中文时,就踩住,需要英文时,就松开。

我就想问下,电脑上的键盘都有哪些,能不能为踏板映射一个实体键盘上不存在的按键,以监测这个按键?

2 Likes

这个设置会导致输入的标点符号全为英文标点 和需求不符

1 Like