同样有这种需求,之前用clipstudio画画,使用快捷键总是忘了要切到英文输入法,而且有时候忘了目前的输入法是中文还是英文,需要分心去看,挺影响使用体验的。
後来我養成了一個習慣,在打字前迅速瞄一眼輸入法狀態…
如果一個軟體需要一直更新才能適配新版系統,那只能說明新系統沒做好向前兼容。至少寡人在win10上的各種地方打字都沒有問題,win11寡人沒有試過。
我觉得快捷键冲突这个问题还是应该由输入法背锅。
针对软件快捷键冲突的场景,如果输入法打字时,侦测一下是否在编辑文本框,就可以避免这个问题了。
但是我对Windows编程了解有限,不太确认怎么做,
我没有遇到这个问题 因为:
①配置输入法 「 中文状态下使用英文标点 」
②使用 MyKeymap 的符号输入、分号缩写
「 中文状态下使用英文标点 」+Quicker动作的中英符号转换,这个确实不错
软件做得很好,在B站看见了,打算尝试一下
在用的小鹤音形输入法是利用引号键进行引导的:按一下引号键,然后输入符号,回车上屏。或许可以借助这种思想。
試了一下,在Win11開始搜索框打不了字,macOS一直都不管向前兼容卻人人稱贊。
印象中,開始搜索框是metro,這個是比較難支持的,好像gcin一直就不支持。
但是你打開一個文本編輯器,或者其它地方,應該是沒有問題的。
感觉这个方案很牛逼啊,冒号这种需要按住shift切换的大佬可以做一个吗
把所有中文符号做了下长按映射~
共计18种:
,。!《》——?;“”:「」()……、【】⇒•·~
逗号\句号\叹号\书名\破折\问号\分号\引号\冒号\直角引号\圆括号\省略号\顿号\方头括号\箭头⇒\用于列表的项目符号•\用于人名的间隔号·\中文波浪~
输入方法详见代码注释,除了破折和省略号,其他标点都是完全符合直觉的。
用的是autohotkey_L,即支持unicode版,代码如下:
;长按".>"输入中文句号。
$.::
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
;长按"/?"输入中文感叹号!(/和!差不多)
$/::
KeyWait,/
If (A_TimeSinceThisHotkey > 300)
SetTimer, mainp3, -1
Else
SendInput,/
Return
mainp3:
SendInput,{raw}!
Return
;长按"shift" + ",<" 输入中文书名号并光标其中
$<::
KeyWait,<
If (A_TimeSinceThisHotkey > 300)
SetTimer, mainp4, -1
Else
SendInput,<
Return
mainp4:
SendInput,{raw}《》
SendInput,{left}
Return
;长按"shift" + ".>" 输入中文破折号(>掰直了不就是——嘛)
$>::
KeyWait,>
If (A_TimeSinceThisHotkey > 300)
SetTimer, mainp5, -1
Else
SendInput,>
Return
mainp5:
SendInput,{raw}——
Return
;长按"shift" + "/?" 输入中文问号?
$?::
KeyWait,?
If (A_TimeSinceThisHotkey > 300)
SetTimer, mainp6, -1
Else
SendInput,?
Return
mainp6:
SendInput,{raw}?
Return
;长按";:" 输入中文分号;
$;::
KeyWait,;
If (A_TimeSinceThisHotkey > 300)
SetTimer, mainp7, -1
Else
SendInput,;
Return
mainp7:
SendInput,{raw};
Return
;长按"shift" + ";:" 输入中文冒号:
$+;::
KeyWait,:
If (A_TimeSinceThisHotkey > 300)
SetTimer, mainp8, -1
Else
SendInput,:
Return
mainp8:
SendInput,{raw}:
Return
;长按"'"" 输入中文双引号并光标置中
$'::
KeyWait,'
If (A_TimeSinceThisHotkey > 300)
SetTimer, mainp9, -1
Else
SendInput,'
Return
mainp9:
SendInput,{raw}“”
send,{left}
Return
;长按"shift" + "'"" 输入直角引号「」并光标置中
$+'::
KeyWait,"
If (A_TimeSinceThisHotkey > 300)
SetTimer, mainp10, -1
Else
SendInput,{raw}"
Return
mainp10:
SendInput,{raw}「」
send,{left}
Return
;长按"[{" 输入中文圆括号()并光标置中
$[::
KeyWait,[
If (A_TimeSinceThisHotkey > 300)
SetTimer, mainp11, -1
Else
SendInput,[
Return
mainp11:
SendInput,{raw}()
send,{left}
Return
;长按"shift" + "[{" 输入方头括号【】并光标置中
${::
KeyWait,{
If (A_TimeSinceThisHotkey > 300)
SetTimer, mainp12, -1
Else
SendInput,{raw}{
Return
mainp12:
SendInput,{raw}【】
send,{left}
Return
;长按"]}" 输入中文省略号……
$]::
KeyWait,]
If (A_TimeSinceThisHotkey > 300)
SetTimer, mainp13, -1
Else
SendInput,]
Return
mainp13:
SendInput,{raw}……
Return
;长按"shift" + "]}" 输入⇒(}压扁了不就是⇒)
$}::
KeyWait,}
If (A_TimeSinceThisHotkey > 300)
SetTimer, mainp14, -1
Else
SendInput,{raw}}
Return
mainp14:
SendInput,{raw}⇒
Return
;长按"\|" 输入中文顿号、
$\::
KeyWait,sc02B
If (A_TimeSinceThisHotkey > 300)
SetTimer, mainp15, -1
Else
SendInput,\
Return
mainp15:
SendInput,{raw}、
Return
;长按"`~" 输入中文间隔号· 例如爱新觉罗·玄烨
$`::
KeyWait,sc029
If (A_TimeSinceThisHotkey > 300)
SetTimer, mainp16, -1
Else
SendInput,{sc029}
Return
mainp16:
SendInput,{raw}·
Return
;长按"shift" + "`~" 输入中文波浪~(有的字体下中英~长一样)
$~::
KeyWait,~
If (A_TimeSinceThisHotkey > 300)
SetTimer, mainp17, -1
Else
SendInput,~
Return
mainp17:
SendInput,{raw}~
Return
;长按"shift" + "\|" 输入项目符号• 用于列表的开头
$|::
KeyWait,|
If (A_TimeSinceThisHotkey > 300)
SetTimer, mainp18, -1
Else
SendInput,|
Return
mainp18:
SendInput,{raw}•
Return
方便
是不是英文状态,长按输入中文符号,中文状态输入英文符号,完美了
不是
是用在 中文输入+英文符号情况下,长按输入中文符号的
在主站的讨论中,非常认同以下两人看法,所以试着用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会造成干扰。
长按符合触屏的直觉,但是不符合物理按键的直觉。
我倒是受启发感觉 caps+符号可能会好些。
那样对于有些符号,就得caps + shift + 符号了,很费劲。
我感觉两种结合起来比较好用,对于冷门符号比如问号,叹号,省略号等,长按输入很舒服,shift +符号长按也并不累;对于逗号,句号等热门符号,caps+之类的双键映射比较舒服。
我现在就是这样结合起来用的。
发现用微软输入法输入当前的时间和日期,经常会出现问题,懒得深究,索性把一部分动态的自定义短语放到了键盘的快捷键上。
用 AHK 写了一个辅助的工具,给垃圾键盘加了两个编程层,一层按键映射一层快捷短语。
长按的问题不是累不累, 而是不符合直觉, 键盘按键是按住后, 字符会连续出现. 如果一部分按键长按是中文符号, 另外一部分按键长按是连续字符. 就会产生人机工程的割裂感.
只能依靠用户个人的记忆和习惯的改变. 这样就很难普及. 只适合个别人.
可能吧。
我没有长按输入连续字符的习惯,甚至从来没有这样操作过,需要连续输入都是连续多次点击,所以对我来说没有什么问题。
输入完一段中文之后, 立马还原成英文, 这样做有什么问题?