I'm new to AHK, so if there are ways to improve the code, please let me know.
The idea is to be able to easily record a set of keystrokes, and play them back multiple times. It's great for getting rid of commas at the end of lines, adding them, etc.
Code:
bRecording = 0
sMacro := ""
ShiftState := "U"
ControlState := "U"
AltState := "U"
Loop
{
Input, UserInput, L1 V, {F6}
if bRecording = 1
{
;MsgBox "Adding to sMacro " %UserInput%
HandleKeyStates()
sMacro = %sMacro%%UserInput%
}
}
F6:: ;MsgBox "Pressed F6"
if %bRecording% = 0
{
bRecording = 1
sMacro := ""
}
else
{
bRecording = 0
ShiftState := "U"
ControlState := "U"
AltState := "U"
}
Return
F7::
SendInput %sMacro%
Return
~+F7::
MsgBox %sMacro%
Return
~+Up::
~+Down::
~+Left::
~+Right::
~+Home::
~+End::
~+Backspace::
~+Delete::
~+PgUp::
~+PgDn::
~+Insert::
~+Tab::
~Up::
~Down::
~Left::
~Right::
~Home::
~End::
~Backspace::
~Delete::
~PgUp::
~PgDn::
~Tab::
~Insert::
^Up::
~^Down::
~^Left::
~^Right::
~^Home::
~^End::
~^Backspace::
~^Delete::
~^PgUp::
~^PgDn::
~^Tab::
~^Insert::
~F2::
~F3::
~F4::
if bRecording = 1
{
keyPressed = %A_ThisHotKey%
HandleKeyStates()
StringReplace, keyPressed, keyPressed, +, , All
StringReplace, keyPressed, keyPressed, ~, , All
StringReplace, keyPressed, keyPressed, ^, , All
sMacro = %sMacro%{%keyPressed%}
}
Return
HandleKeyStates()
{
global
GetKeyState, sstate, Shift
if ShiftState != %sstate%
if sstate = D
sMacro = %sMacro%{shift down}
else
sMacro = %sMacro%{shift up}
ShiftState = %sstate%
GetKeyState, cstate, Control
if ControlState != %cstate%
if cstate = D
sMacro = %sMacro%{ctrl down}
else
sMacro = %sMacro%{ctrl up}
ControlState = %cstate%
GetKeyState, astate, Alt
if AltState != %astate%
if astate = D
sMacro = %sMacro%{alt down}
else
sMacro = %sMacro%{alt up}
AltState = %astate%
}