# Autohetkey如何实现不管在何种输入法状态，长按-号（减号）输出短的下划线？

**URL:** <https://meta.appinn.net/t/topic/52672>\
**Category:** 问题求助\
**Tags:** windows\
**Created:** [2024 年2 月 15 日 11:13 UTC](https://meta.appinn.net/t/topic/52672 "2024-02-15T11:13:46Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

作者： ![jin6220](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/jin6220/32/52613_2.png) [@jin6220](https://meta.appinn.net/u/jin6220)\
发布日期： [2024 年2 月 15 日 11:13 UTC](https://meta.appinn.net/t/topic/52672/1 "2024-02-15T11:13:46Z")

</div>

$-::  
keywait,-, T0.2  
if !errorlevel  
send, -  
else  
send, {_}  
keywait, -  
return  
以上代码需要在输入法在英文状态下长按减号才能输出短下划线_。  
中文状态下：——

---

<div class="post-metadata">

作者： ![dog](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/dog/32/18667_2.png) [@dog](https://meta.appinn.net/u/dog)\
发布日期： [2024 年2 月 15 日 11:19 UTC](https://meta.appinn.net/t/topic/52672/2 "2024-02-15T11:19:27Z")

</div>

> [@求Windows端能舒服地输入英文符号的办法](https://meta.appinn.net/t/topic/26834/51):
>
> 把所有中文符号做了下长按映射~ 共计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 …

参考

---

<div class="post-metadata">

作者： ![jin6220](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/jin6220/32/52613_2.png) [@jin6220](https://meta.appinn.net/u/jin6220)\
发布日期： [2024 年2 月 15 日 12:56 UTC](https://meta.appinn.net/t/topic/52672/3 "2024-02-15T12:56:57Z")

</div>

用的是autohotkey\_L，即支持unicode版-------  
哪个版本是ahk\_L版本啊，狗哥，我在官网上看到1.1.36和2.0.11的版本，我用的前者，代码中的部分内容好像不支持。  
不知道我理解的对不，下面的例子开启后，不管何种输入法状态，短按都是英文句号，长按才是中文句号。

;长按".\>"输入中文句号。  
$.::  
KeyWait, .  
If (A\_TimeSinceThisHotkey \> 300)  
SetTimer, mainp, -1  
Else  
SendInput,.  
Return

mainp:  
SendInput,。  
Return

---

<div class="post-metadata">

作者： ![dog](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/dog/32/18667_2.png) [@dog](https://meta.appinn.net/u/dog)\
发布日期： [2024 年2 月 15 日 13:14 UTC](https://meta.appinn.net/t/topic/52672/4 "2024-02-15T13:14:17Z")

</div>

短按不影响原本功能，该是啥就是啥。  
中文状态是中文英文状态是英文

应该就是v1版的ahk

---

<div class="post-metadata">

作者： ![jin6220](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/jin6220/32/52613_2.png) [@jin6220](https://meta.appinn.net/u/jin6220)\
发布日期： [2024 年2 月 15 日 13:26 UTC](https://meta.appinn.net/t/topic/52672/5 "2024-02-15T13:26:20Z")

</div>

好吧，那好像实现不了我说的 不管何种输入法状态，长按只出 英文输入法 的那个。  
或者不管何种输入法状态，短按出英文，长按出中文。

---

<div class="post-metadata">

作者： ![dog](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/dog/32/18667_2.png) [@dog](https://meta.appinn.net/u/dog)\
发布日期： [2024 年2 月 15 日 13:41 UTC](https://meta.appinn.net/t/topic/52672/7 "2024-02-15T13:41:40Z")

</div>

我研究一下，可能确实是ahk版本问题吧

---

<div class="post-metadata">

作者： ![jin6220](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/jin6220/32/52613_2.png) [@jin6220](https://meta.appinn.net/u/jin6220)\
发布日期： [2024 年2 月 15 日 13:42 UTC](https://meta.appinn.net/t/topic/52672/8 "2024-02-15T13:42:05Z")

</div>

$-::  
keywait,-, T0.2  
if !errorlevel  
send, -  
else  
;send, {_}  
Send % “{ASC 0” . Asc("_") . “}”  
keywait, -  
return  
在网上抄了一个代码，我也不太懂，加进去想不到行了，以后或许可以实现不管何种输入法状态下，长按输入英文的符合。

---

<div class="post-metadata">

作者： ![dog](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/dog/32/18667_2.png) [@dog](https://meta.appinn.net/u/dog)\
发布日期： [2024 年2 月 15 日 13:43 UTC](https://meta.appinn.net/t/topic/52672/9 "2024-02-15T13:43:23Z")

</div>

这么写可以

```auto
;长按"-"输入短的下划线，短按仍为原功能

$-::
	KeyWait,-
	If (A_TimeSinceThisHotkey > 300)
		SendInput,{Text}_
	Else
		SendInput,-
Return

```

---

<div class="post-metadata">

作者： ![jin6220](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/jin6220/32/52613_2.png) [@jin6220](https://meta.appinn.net/u/jin6220)\
发布日期： [2024 年2 月 15 日 13:53 UTC](https://meta.appinn.net/t/topic/52672/10 "2024-02-15T13:53:30Z")

</div>

刚才竟然解决问题了。

关于标点符号的输出，有些标点符号，比如短下划线，常用于文件重命名的使用中，我觉得这种符号不管输入法何种状态还能输出自己它才是最佳状态。

---

<div class="post-metadata">

作者： ![jin6220](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/jin6220/32/52613_2.png) [@jin6220](https://meta.appinn.net/u/jin6220)\
发布日期： [2024 年2 月 15 日 14:00 UTC](https://meta.appinn.net/t/topic/52672/11 "2024-02-15T14:00:26Z")

</div>

试了，可以。上面那段代码也可以。  
如果想要不管何种中英文状态都会出现的符号吧、就这样写吗：  
{Text}后面跟着的符号。
