This should be self explanatory.
Basically, it's a game.
The goal is to be faster than the computer.
While Send or SendRaw is in play, you want to type as fast as possible in order to introduce interspersed characters.
Good luck.
Press F2 to start.
< Game keys >
action
0-9, a-z, Shift, Enter, Space
restart
quit
Warning: Be sure to play this game in a safe area (e.g., Notepad).
Code:
; only required in training mode or on long missions
#MaxHotkeysPerInterval 1000
F2::
Send( "Hello, World! How are you? Hello, World! How are you?", false )
return
F11::
Reload
F12::
ExitApp
Send( p_data, p_send=true, p_buffer=false )
{
static key_buffer, hk_list
Gosub, EnableBufferedInput
; disable to leave training mode
SetKeyDelay, 200
if ( p_send )
Send, %p_data%
else
SendRaw, %p_data%
if ( p_buffer )
StringTrimLeft, key_buffer, key_buffer, StrLen( p_data )
; ensure buffered input is captured
Sleep, -1
if key_buffer!=
Send( key_buffer, true, true )
Gosub, DisableBufferedInput
return
hk_CaptureBufferedInput:
Critical
StringReplace, key, A_ThisHotkey, $*
StringReplace, key, key, vk10 up, Shift up
StringReplace, key, key, vk10, Shift down
key_buffer = %key_buffer%{%key%}
return
EnableBufferedInput:
if hk_list=
{
old_FormatInteger := A_FormatInteger
SetFormat, Integer, Hex
hk_list = $*vkD ; Enter
hk_list = %hk_list%|$*vk10 ; Shift
hk_list = %hk_list%|$*vk20 ; Space
ix_b = 0x30 ; 0
ix_e = 0x39 ; 9
loop, % ix_e-ix_b+1
hk_list := hk_list "|$*vk" ix_b+A_Index-1
ix_b = 0x41 ; a
ix_e = 0x5A ; z
loop, % ix_e-ix_b+1
hk_list := hk_list "|$*vk" ix_b+A_Index-1
StringReplace, hk_list, hk_list, 0x,, All
SetFormat, Integer, %old_FormatInteger%
}
loop, Parse, hk_list, |
{
Hotkey, %A_LoopField%, hk_CaptureBufferedInput, on
Hotkey, %A_LoopField% up, hk_CaptureBufferedInput, on
}
return
DisableBufferedInput:
loop, Parse, hk_list, |
{
Hotkey, %A_LoopField%, off
Hotkey, %A_LoopField% up, off
}
return
}