キーを長押ししてShiftキーを押したままにしたい
私が試したことは次のとおりです:
$a::
KeyWait, a, T0.7
If ErrorLevel
send +{a}
Else
send {a}
Return
キーが上がっているときに Aa を送信しますが、これを一般に (各キーのコードを書き直すことなく、すべてのキーに対して) 実行したいです。
答え1
キーを 0.7 秒以上押すと、Shift キーを押した状態になります。
#UseHook ; install the keyboard hook to activate hotkeys not supported in the operating system
; create a string of the keys you want be shifted:
keys := "1,2,3,4,a,b,c,d,SC01B,SC02B" ; SC01B = scan code of "#" SC02B = "+"
Loop, parse, keys, `, ; retrieves substrings (fields) from the string "keys" one at a time based on the delimiter ","
Hotkey, %A_Loopfield%, pressedkey ; creates a hotkey of the retrieved field
return
pressedkey: ; A_ThisHotkey: the most recently executed hotkey
KeyWait, %A_ThisHotkey%, T0.7 ; wait 0.7 seconds for the key to be released
If ErrorLevel ; the key has not yet been released after 0.7 seconds
{
KeyWait, %A_ThisHotkey% ; wait for the key to be released
if (SubStr(%A_ThisHotkey%, 1, 2) = SC) ; substring: starting position=1 (first character), Length=2 (characters)
Send +{%A_ThisHotkey%}
else
Send +%A_ThisHotkey%
}
else ; the key has been released before the 0.7 seconds limit
{
if (SubStr(%A_ThisHotkey%, 1, 2) = SC)
Send {%A_ThisHotkey%}
else
Send %A_ThisHotkey%
}
return
編集:
#UseHook
keys := "1,2,3,4,a,b,c,d,SC01B,SC02B"
Loop, parse, keys, `,
Hotkey, %A_Loopfield%, pressedkey
return
pressedkey:
KeyWait, %A_ThisHotkey%, T0.7
If ErrorLevel
{
KeyWait, %A_ThisHotkey%
Send +{%A_ThisHotkey%}
}
else
Send {%A_ThisHotkey%}
return
答え2
大文字にするには長押しするのが良いアイデアでしたが、入力中に問題が発生したため、スクリプトの主な目的を変更しました。長く押している間だけ数字を書く「私のキーボードには数字キーパッドがないので、最終的なコードは次のようになりました:
もちろん、特別な感謝を申し上げますユーザー3419297
; AutoHotkey Version: 1.x
; Language: English
; Platform: Win9x/NT
; Author: fayssal.Z
; credits to:
; Great thanks to user3419297 , the whole code made by him
; Script Function:
; easy way to write numbers by pressing longer on symbols (no shift or capslock required)
;
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
#UseHook
keys := "sc02,sc03,sc04,sc05,sc06,sc07,sc08,sc09,sc0A,sc0B,sc0C,sc0D"
Loop, parse, keys, `,
Hotkey, %A_Loopfield%, pressedkey
return
pressedkey:
KeyWait, %A_ThisHotkey%, T0.3
If ErrorLevel
{
KeyWait, %A_ThisHotkey%
If (SubStr(%A_ThisHotkey%, 1, 2) = SC)
Send +{%A_ThisHotkey%}
Else
Send +%A_ThisHotkey%
}
Else
{
If (SubStr(%A_ThisHotkey%, 1, 2) = SC)
Send {%A_ThisHotkey%}
Else
Send %A_ThisHotkey%
}
return