我想通过按1按钮来激活粘滞键,而不是按下shift 5次,这是默认方式。
如果我要做的话
F9::Send {LShift 5}
按F9将不会产生任何效果。
我也试过
F9::
Send {LShift}
sleep 50
Send {LShift}
sleep 50
Send {LShift}
sleep 50
Send {LShift}
sleep 50
Send {LShift}
sleep 50
return
有什么原因导致它无效吗?
答案 0 :(得分:0)
虽然很可能有办法进行dll调用或复杂的事情,但也可能使用AutoHotkey编写类似的功能。这也可以避免粘滞键提示,你可以改为托盘提示。
stickykeys = 0
F9::
stickykeys:=!stickykeys
Traytip, Sticky Keys, % (stickykeys) ? "On" : "Off"
return
#If stickykeys
*$Shift::
key = 0
Input, key, L1 M
SendInput {Shift Down}{%key%}{Shift Up}
return
*$Ctrl::
key = 0
Input, key, L1 M
SendInput {Ctrl Down}{%key%}{Ctrl Up}
Return
*$Alt::
key = 0
Input, key, L1 M
SendInput {Alt Down}{%key%}{Alt Up}
Return
#If
F9只需打开和关闭粘滞键即可。
注意:这是使用支持#If
的AHK_L答案 1 :(得分:0)
SPI_GETSTICKYKEYS:=0x003A
SPI_SETSTICKYKEYS:=0x003B
SKF_STICKYKEYSON:=0x1
VarSetCapacity(STICKYKEYS,8) ; DWORD cbSize;DWORD dwFlags;
NumPut(8,&STICKYKEYS,"UInt")
F9::
DllCall("SystemParametersInfo","UInt",SPI_GETSTICKYKEYS,"UInt",8,"PTR",&STICKYKEYS,"UInt",0)
dwFlags:=NumGet(&STICKYKEYS,4,"Uint")
If (dwFlags & SKF_STICKYKEYSON)
dwFlags-=SKF_STICKYKEYSON
else dwFlags|=SKF_STICKYKEYSON
ToolTip % "STICKYKEYS are " (dwFlags & SKF_STICKYKEYSON ? "ON" : "OFF")
SetTimer,ToolTipOff,-1000
NumPut(dwFlags,&STICKYKEYS,4,"UInt")
DllCall("SystemParametersInfo","UInt",SPI_SETSTICKYKEYS,"UInt",8,"PTR",&STICKYKEYS,"UInt",0)
Return
ToolTipOff:
代码来自http://www.autohotkey.com/community/viewtopic.php?f=1&t=93650
的Autohotkey论坛任何想要使用代码的人的注释:我认为你必须将它放在脚本的顶部才能使用它。在我的热键脚本中,将它放在中间,然后按F9激活粘性键会导致一些奇怪的事情发生:光标跳转,一些文件夹被启动,脚本退出等等。我猜它激活了其他附近有热键?