需求:
希望在电脑上微信聊天时用键盘快捷输入常用表情。
工具:
AutoHotkey v1
使用说明:
微信中按空格显示热键提示窗口,输入键盘序列后,按空格输出相应表情
配置:
源代码:
/**
脚本:微信中按空格显示热键提示窗口,输入键盘序列后,按空格输出相应表情
作者:sunwind
创建:2024年6月28日15:00
鸣谢:sikongshan、SpaceZ
功能:
1.在微信消息框中按 空格 弹出【提示窗口】
2.输入 快捷键 后 按 空格 输出表情到消息输入框
3.支持Backspace修改输入的快捷键
4.支持Esc或Space关闭
特点:
1.不干扰输入法中的空格: 搜狗输入法、微软输入法、讯飞输入法
2.支持按键序列
3.支持回退键修改输入的按键
更新:
1. 支持 定义连续输出多个表情,如 qqq为[强][强][强],即输出三个强。
*/
;定义快捷键与表情的映射
arrEmote:={a:"[拳头]"
,x:"[微笑]"
,h:"[好的]"
,q:"[强]"
,qq:"[强][强]"
,qqq:"[强][强][强]"
,gg:"[尴尬]"
,qd:"[敲打]"
,wx:"[微笑]"
,ws:"[握手]"}
;以下勿动
keyseq:=[]
for k,v in arrEmote
{
tip.=k "->" v "`n"
}
Gui, Drag:New, +AlwaysOnTop +LastFound +ToolWindow, qliner hotkeys
Gui, Font, s20
Gui, Color, FFFF9E
Gui, Add, Text,,% SubStr(tip,1,-1)
WinSet, Transparent, 200
#If WinExist("qliner hotkeys")
Shift::
Esc::
Space::
idx:=""
Loop % keyseq.Length()
idx.=keyseq[A_Index]
if(当前表情:=arrEmote[idx])
Send,% "{text}" 当前表情
; Send,% "{text} [" 当前表情 "]"
keyseq.RemoveAt(1,keyseq.Length())
ToolTip
Gui, Drag:Hide
return
a::
b::
c::
d::
e::
f::
g::
h::
i::
j::
k::
l::
m::
n::
o::
p::
q::
r::
s::
t::
u::
v::
w::
x::
y::
z::
idx:=""
keyseq.Push(A_ThisHotkey)
Loop % keyseq.Length()
idx.=keyseq[A_Index]
ToolTip % "输入的是:" idx "`n按空格将输出:" arrEmote[idx]
return
BackSpace::
keyseq.Pop()
idx:=""
Loop % keyseq.Length()
idx.=keyseq[A_Index]
ToolTip % "输入的是:" idx "`n按空格将输出:" arrEmote[idx]
return
#if
#If MouseIsOver("ahk_exe WeChat.exe")
Space::
; Click, D
Gui, Drag:Show, NoActivate
SoundBeep, 1500
; KeyWait, %A_ThisHotkey%
; Click, U
; Gui, Drag:Hide
; SoundBeep, 1000
Return
#If
MouseIsOver(WinTitle) {
MouseGetPos,,, Win
if WinExist("ahk_class SoPY_Comp") or WinExist("ahk_class BaseGui") or WinExist("ahk_class ApplicationFrameWindow") or WinExist("ahk_class ahk_class MSCTFIME Composition")
return false
else
return WinExist(WinTitle . " ahk_id " . Win)
}