Using millions of hotstrings any tips?

Get help with using AutoHotkey (v1.1 and older) and its commands and hotkeys
OCP
Posts: 98
Joined: 28 Mar 2018, 19:28

Using millions of hotstrings any tips?

02 Sep 2018, 05:52

hello i am working on a text replacement tool for math formulas

i am looking for some general info on how best to proceed with my script, it started out with about 37000 lines and i am getting close to a million lines of code now. What could i best do split it in multiple scripts? i would prefer to keep it as 1 exe in the end without the ability to copy my work from a script anyone can open like with include.

for example 102000 variations on this
:R:sd/03+3hmp025052::25%+(Int(((((((Input*2)-1)^7)*64)-((((Input*2)-1)^5)*112)+((((Input*2)-1)^3)*56)-(((Input*2)-1)*7))*0.5+0.5)*3)/2)*(52%-25%)

a lot of 102000 groups some 10200 some 4k some 5k groups and i got millions still to add

i wonder how do these spell checkers do it some database or so?

Or perhaps i can construct this code in some way so i do not need so many lines because the only values changing are 25% 52% 25% in the above example but that is a direction i have problems with (understanding variables and functions)

my script works having 970k plus lines but i do notice my left side of the keyboard some special characters stop working when running like + / while on the numpad they work

cheers
User avatar
Scr1pter
Posts: 1271
Joined: 06 Aug 2017, 08:21
Location: Germany

Re: Using millions of hotstrings any tips?

02 Sep 2018, 06:05

Hi,

Post some more code lines so that we can see what the real differences are.
Probably you can replace the 3 values you mentioned by variables and create some logic for the variation of them.

Regards
Please use [code][/code] when posting code!
Keyboard: Logitech G PRO - Mouse: Logitech G502 LS - OS: Windows 10 Pro 64 Bit - AHK version: 1.1.33.09
OCP
Posts: 98
Joined: 28 Mar 2018, 19:28

Re: Using millions of hotstrings any tips?

02 Sep 2018, 11:38

Scr1pter wrote:Hi,

Post some more code lines so that we can see what the real differences are.
Probably you can replace the 3 values you mentioned by variables and create some logic for the variation of them.

Regards
hi Scripter this would be the smallest group i have, this group is to set the range for a knob divided in 24 steps a knob going from -12 to 0 to +12 with 0 being its default. the below has the same kind of logic as all my groups only on a smaller scale, there is always parts the same and parts that change

all these start with /24 to say divided by 24 then a 2 to say it goes 2 directions then the range i want

so /242-10+2 would give me the formula for a range from -10 to +2

Code: Select all

#IfWinActive  ahk_class TMIDIInputForm 
:R:/2420+12::1/24*12+Input*+1/24*12 ;;-12 0 +12     0 Start
:R:/2420+11::1/24*12+Input*+1/24*11
:R:/2420+10::1/24*12+Input*+1/24*10
:R:/2420+9::1/24*12+Input*+1/24*9
:R:/2420+8::1/24*12+Input*+1/24*8
:R:/2420+7::1/24*12+Input*+1/24*7
:R:/2420+6::1/24*12+Input*+1/24*6
:R:/2420+5::1/24*12+Input*+1/24*5
:R:/2420+4::1/24*12+Input*+1/24*4
:R:/2420+3::1/24*12+Input*+1/24*3
:R:/2420+2::1/24*12+Input*+1/24*2
:R:/2420+1::1/24*12+Input*+1/24*1
:R:/2420-1::1/24*12-Input*+1/24*1
:R:/2420-2::1/24*12-Input*+1/24*2
:R:/2420-3::1/24*12-Input*+1/24*3
:R:/2420-4::1/24*12-Input*+1/24*4
:R:/2420-5::1/24*12-Input*+1/24*5
:R:/2420-6::1/24*12-Input*+1/24*6
:R:/2420-7::1/24*12-Input*+1/24*7
:R:/2420-8::1/24*12-Input*+1/24*8
:R:/2420-9::1/24*12-Input*+1/24*9
:R:/2420-10::1/24*12-Input*+1/24*10
:R:/2420-11::1/24*12-Input*+1/24*11
:R:/2420-12::1/24*12-Input*+1/24*12
:R:/242+1+12::1/24*13+Input*+1/24*11
:R:/242+1+11::1/24*13+Input*+1/24*10
:R:/242+1+10::1/24*13+Input*+1/24*9  ; -12  0 +12     +1 Start
:R:/242+1+9::1/24*13+Input*+1/24*8
:R:/242+1+8::1/24*13+Input*+1/24*7
:R:/242+1+7::1/24*13+Input*+1/24*6
:R:/242+1+6::1/24*13+Input*+1/24*5
:R:/242+1+5::1/24*13+Input*+1/24*4
:R:/242+1+4::1/24*13+Input*+1/24*3
:R:/242+1+3::1/24*13+Input*+1/24*2
:R:/242+1+2::1/24*13+Input*+1/24*1
:R:/242+10::1/24*13-Input*+1/24*1
:R:/242+1-1::1/24*13-Input*+1/24*2
:R:/242+1-2::1/24*13-Input*+1/24*3
:R:/242+1-3::1/24*13-Input*+1/24*4
:R:/242+1-4::1/24*13-Input*+1/24*5
:R:/242+1-5::1/24*13-Input*+1/24*6
:R:/242+1-6::1/24*13-Input*+1/24*7
:R:/242+1-7::1/24*13-Input*+1/24*8
:R:/242+1-8::1/24*13-Input*+1/24*9
:R:/242+1-9::1/24*13-Input*+1/24*10
:R:/242+1-10::1/24*13-Input*+1/24*11
:R:/242+1-11::1/24*13-Input*+1/24*12
:R:/242+1-12::1/24*13-Input*+1/24*13
:R:/242-1+12::1/24*11+Input*+1/24*13 ;-12  0 +12   -1 Start
:R:/242-1+11::1/24*11+Input*+1/24*12
:R:/242-1+10::1/24*11+Input*+1/24*11
:R:/242-1+9::1/24*11+Input*+1/24*10
:R:/242-1+8::1/24*11+Input*+1/24*9
:R:/242-1+7::1/24*11+Input*+1/24*8
:R:/242-1+6::1/24*11+Input*+1/24*7
:R:/242-1+5::1/24*11+Input*+1/24*6
:R:/242-1+4::1/24*11+Input*+1/24*5
:R:/242-1+3::1/24*11+Input*+1/24*4
:R:/242-1+2::1/24*11+Input*+1/24*3
:R:/242-1+1::1/24*11+Input*+1/24*2
:R:/242-10::1/24*11+Input*+1/24*1
:R:/242-1-2::1/24*11-Input*+1/24*1
:R:/242-1-3::1/24*11-Input*+1/24*2
:R:/242-1-4::1/24*11-Input*+1/24*3
:R:/242-1-5::1/24*11-Input*+1/24*4
:R:/242-1-6::1/24*11-Input*+1/24*5
:R:/242-1-7::1/24*11-Input*+1/24*6
:R:/242-1-8::1/24*11-Input*+1/24*7
:R:/242-1-9::1/24*11-Input*+1/24*8
:R:/242-1-10::1/24*11-Input*+1/24*9
:R:/242-1-11::1/24*11-Input*+1/24*10
:R:/242-1-12::1/24*11-Input*+1/24*11
:R:/242+2+12::1/24*14+Input*+1/24*10 ;-12  0 +12    +2 Start
:R:/242+2+11::1/24*14+Input*+1/24*9
:R:/242+2+10::1/24*14+Input*+1/24*8
:R:/242+2+9::1/24*14+Input*+1/24*7
:R:/242+2+8::1/24*14+Input*+1/24*6
:R:/242+2+7::1/24*14+Input*+1/24*5
:R:/242+2+6::1/24*14+Input*+1/24*4
:R:/242+2+5::1/24*14+Input*+1/24*3
:R:/242+2+4::1/24*14+Input*+1/24*2
:R:/242+2+3::1/24*14+Input*+1/24*1
:R:/242+2+1::1/24*14-Input*+1/24*1
:R:/242+20::1/24*14-Input*+1/24*2
:R:/242+2-1::1/24*14-Input*+1/24*3
:R:/242+2-2::1/24*14-Input*+1/24*4
:R:/242+2-3::1/24*14-Input*+1/24*5
:R:/242+2-4::1/24*14-Input*+1/24*6
:R:/242+2-5::1/24*14-Input*+1/24*7
:R:/242+2-6::1/24*14-Input*+1/24*8
:R:/242+2-7::1/24*14-Input*+1/24*9
:R:/242+2-8::1/24*14-Input*+1/24*10
:R:/242+2-9::1/24*14-Input*+1/24*11
:R:/242+2-10::1/24*14-Input*+1/24*12
:R:/242+2-11::1/24*14-Input*+1/24*13
:R:/242+2-12::1/24*14-Input*+1/24*14
:R:/242-2+12::1/24*10+Input*+1/24*14 ;-12  0 +12    -2 Start
:R:/242-2+11::1/24*10+Input*+1/24*13
:R:/242-2+10::1/24*10+Input*+1/24*12
:R:/242-2+9::1/24*10+Input*+1/24*11
:R:/242-2+8::1/24*10+Input*+1/24*10
:R:/242-2+7::1/24*10+Input*+1/24*9
:R:/242-2+6::1/24*10+Input*+1/24*8
:R:/242-2+5::1/24*10+Input*+1/24*7
:R:/242-2+4::1/24*10+Input*+1/24*6
:R:/242-2+3::1/24*10+Input*+1/24*5
:R:/242-2+2::1/24*10+Input*+1/24*4
:R:/242-2+1::1/24*10+Input*+1/24*3
:R:/242-20::1/24*10+Input*+1/24*2
:R:/242-2-1::1/24*10+Input*+1/24*1
:R:/242-2-3::1/24*10-Input*+1/24*1
:R:/242-2-4::1/24*10-Input*+1/24*2
:R:/242-2-5::1/24*10-Input*+1/24*3
:R:/242-2-6::1/24*10-Input*+1/24*4
:R:/242-2-7::1/24*10-Input*+1/24*5
:R:/242-2-8::1/24*10-Input*+1/24*6
:R:/242-2-9::1/24*10-Input*+1/24*7
:R:/242-2-10::1/24*10-Input*+1/24*8
:R:/242-2-11::1/24*10-Input*+1/24*9
:R:/242-2-12::1/24*10-Input*+1/24*10
:R:/242+3+12::1/24*15+Input*+1/24*9   ;-12  0 +12    +3 Start
:R:/242+3+11::1/24*15+Input*+1/24*8
:R:/242+3+10::1/24*15+Input*+1/24*7
:R:/242+3+9::1/24*15+Input*+1/24*6
:R:/242+3+8::1/24*15+Input*+1/24*5
:R:/242+3+7::1/24*15+Input*+1/24*4
:R:/242+3+6::1/24*15+Input*+1/24*3
:R:/242+3+5::1/24*15+Input*+1/24*2
:R:/242+3+4::1/24*15+Input*+1/24*1
:R:/242+3+2::1/24*15-Input*+1/24*1
:R:/242+3+1::1/24*15-Input*+1/24*2
:R:/242+30::1/24*15-Input*+1/24*3
:R:/242+3-1::1/24*15-Input*+1/24*4
:R:/242+3-2::1/24*15-Input*+1/24*5
:R:/242+3-3::1/24*15-Input*+1/24*6
:R:/242+3-4::1/24*15-Input*+1/24*7
:R:/242+3-5::1/24*15-Input*+1/24*8
:R:/242+3-6::1/24*15-Input*+1/24*9
:R:/242+3-7::1/24*15-Input*+1/24*10
:R:/242+3-8::1/24*15-Input*+1/24*11
:R:/242+3-9::1/24*15-Input*+1/24*12
:R:/242+3-10::1/24*15-Input*+1/24*13
:R:/242+3-11::1/24*15-Input*+1/24*14
:R:/242+3-12::1/24*15-Input*+1/24*15
:R:/242-3+12::1/24*9+Input*+1/24*15 ;-12  0 +12    -3 Start
:R:/242-3+11::1/24*9+Input*+1/24*14
:R:/242-3+10::1/24*9+Input*+1/24*13
:R:/242-3+9::1/24*9+Input*+1/24*12
:R:/242-3+8::1/24*9+Input*+1/24*11
:R:/242-3+7::1/24*9+Input*+1/24*10
:R:/242-3+6::1/24*9+Input*+1/24*9
:R:/242-3+5::1/24*9+Input*+1/24*8
:R:/242-3+4::1/24*9+Input*+1/24*7
:R:/242-3+3::1/24*9+Input*+1/24*6
:R:/242-3+2::1/24*9+Input*+1/24*5
:R:/242-3+1::1/24*9+Input*+1/24*4
:R:/242-30::1/24*9+Input*+1/24*3
:R:/242-3-1::1/24*9+Input*+1/24*2
:R:/242-3-2::1/24*9+Input*+1/24*1
:R:/242-3-4::1/24*9-Input*+1/24*1
:R:/242-3-5::1/24*9-Input*+1/24*2
:R:/242-3-6::1/24*9-Input*+1/24*3
:R:/242-3-7::1/24*9-Input*+1/24*4
:R:/242-3-8::1/24*9-Input*+1/24*5
:R:/242-3-9::1/24*9-Input*+1/24*6
:R:/242-3-10::1/24*9-Input*+1/24*7
:R:/242-3-11::1/24*9-Input*+1/24*8
:R:/242-3-12::1/24*9-Input*+1/24*9
:R:/242+4+12::1/24*16+Input*+1/24*8  ;-12  0 +12   +4 Start
:R:/242+4+11::1/24*16+Input*+1/24*7
:R:/242+4+10::1/24*16+Input*+1/24*6
:R:/242+4+9::1/24*16+Input*+1/24*5
:R:/242+4+8::1/24*16+Input*+1/24*4
:R:/242+4+7::1/24*16+Input*+1/24*3
:R:/242+4+6::1/24*16+Input*+1/24*2
:R:/242+4+5::1/24*16+Input*+1/24*1
:R:/242+4+3::1/24*16-Input*+1/24*1
:R:/242+4+2::1/24*16-Input*+1/24*2
:R:/242+4+1::1/24*16-Input*+1/24*3
:R:/242+40::1/24*16-Input*+1/24*4
:R:/242+4-1::1/24*16-Input*+1/24*5
:R:/242+4-2::1/24*16-Input*+1/24*6
:R:/242+4-3::1/24*16-Input*+1/24*7
:R:/242+4-4::1/24*16-Input*+1/24*8
:R:/242+4-5::1/24*16-Input*+1/24*9
:R:/242+4-6::1/24*16-Input*+1/24*10
:R:/242+4-7::1/24*16-Input*+1/24*11
:R:/242+4-8::1/24*16-Input*+1/24*12
:R:/242+4-9::1/24*16-Input*+1/24*13
:R:/242+4-10::1/24*16-Input*+1/24*14
:R:/242+4-11::1/24*16-Input*+1/24*15
:R:/242+4-12::1/24*16-Input*+1/24*16
:R:/242-4+12::1/24*8+Input*+1/24*16  ;-12  0 +12    -4 Start
:R:/242-4+11::1/24*8+Input*+1/24*15
:R:/242-4+10::1/24*8+Input*+1/24*14
:R:/242-4+9::1/24*8+Input*+1/24*13
:R:/242-4+8::1/24*8+Input*+1/24*12
:R:/242-4+7::1/24*8+Input*+1/24*11
:R:/242-4+6::1/24*8+Input*+1/24*10
:R:/242-4+5::1/24*8+Input*+1/24*9
:R:/242-4+4::1/24*8+Input*+1/24*8
:R:/242-4+3::1/24*8+Input*+1/24*7
:R:/242-4+2::1/24*8+Input*+1/24*6
:R:/242-4+1::1/24*8+Input*+1/24*5
:R:/242-40::1/24*8+Input*+1/24*4
:R:/242-4-1::1/24*8+Input*+1/24*3
:R:/242-4-2::1/24*8+Input*+1/24*2
:R:/242-4-3::1/24*8+Input*+1/24*1
:R:/242-4-5::1/24*8-Input*+1/24*1
:R:/242-4-6::1/24*8-Input*+1/24*2
:R:/242-4-7::1/24*8-Input*+1/24*3
:R:/242-4-8::1/24*8-Input*+1/24*4
:R:/242-4-9::1/24*8-Input*+1/24*5
:R:/242-4-10::1/24*8-Input*+1/24*6
:R:/242-4-11::1/24*8-Input*+1/24*7
:R:/242-4-12::1/24*8-Input*+1/24*8
:R:/242+5+12::1/24*17+Input*+1/24*7   ;-12  0 +12    +5 Start
:R:/242+5+11::1/24*17+Input*+1/24*6
:R:/242+5+10::1/24*17+Input*+1/24*5
:R:/242+5+9::1/24*17+Input*+1/24*4
:R:/242+5+8::1/24*17+Input*+1/24*3
:R:/242+5+7::1/24*17+Input*+1/24*2
:R:/242+5+6::1/24*17+Input*+1/24*1
:R:/242+5+4::1/24*17-Input*+1/24*1
:R:/242+5+3::1/24*17-Input*+1/24*2
:R:/242+5+2::1/24*17-Input*+1/24*3
:R:/242+5+1::1/24*17-Input*+1/24*4
:R:/242+50::1/24*17-Input*+1/24*5
:R:/242+5-1::1/24*17-Input*+1/24*6
:R:/242+5-2::1/24*17-Input*+1/24*7
:R:/242+5-3::1/24*17-Input*+1/24*8
:R:/242+5-4::1/24*17-Input*+1/24*9
:R:/242+5-5::1/24*17-Input*+1/24*10
:R:/242+5-6::1/24*17-Input*+1/24*11
:R:/242+5-7::1/24*17-Input*+1/24*12
:R:/242+5-8::1/24*17-Input*+1/24*13
:R:/242+5-9::1/24*17-Input*+1/24*14
:R:/242+5-10::1/24*17-Input*+1/24*15
:R:/242+5-11::1/24*17-Input*+1/24*16
:R:/242+5-12::1/24*17-Input*+1/24*17
:R:/242-5+12::1/24*7+Input*+1/24*17  ;-12  0 +12   -5 Start
:R:/242-5+11::1/24*7+Input*+1/24*16
:R:/242-5+10::1/24*7+Input*+1/24*15
:R:/242-5+9::1/24*7+Input*+1/24*14
:R:/242-5+8::1/24*7+Input*+1/24*13
:R:/242-5+7::1/24*7+Input*+1/24*12
:R:/242-5+6::1/24*7+Input*+1/24*11
:R:/242-5+5::1/24*7+Input*+1/24*10
:R:/242-5+4::1/24*7+Input*+1/24*9
:R:/242-5+3::1/24*7+Input*+1/24*8
:R:/242-5+2::1/24*7+Input*+1/24*7
:R:/242-5+1::1/24*7+Input*+1/24*6
:R:/242-50::1/24*7+Input*+1/24*5
:R:/242-5-1::1/24*7+Input*+1/24*4
:R:/242-5-2::1/24*7+Input*+1/24*3
:R:/242-5-3::1/24*7+Input*+1/24*2
:R:/242-5-4::1/24*7+Input*+1/24*1
:R:/242-5-6::1/24*7-Input*+1/24*1
:R:/242-5-7::1/24*7-Input*+1/24*2
:R:/242-5-8::1/24*7-Input*+1/24*3
:R:/242-5-9::1/24*7-Input*+1/24*4
:R:/242-5-10::1/24*7-Input*+1/24*5
:R:/242-5-11::1/24*7-Input*+1/24*6
:R:/242-5-12::1/24*7-Input*+1/24*7
:R:/242+6+12::1/24*18+Input*+1/24*6  ;-12  0 +12    +6 Start
:R:/242+6+11::1/24*18+Input*+1/24*5
:R:/242+6+10::1/24*18+Input*+1/24*4
:R:/242+6+9::1/24*18+Input*+1/24*3
:R:/242+6+8::1/24*18+Input*+1/24*2
:R:/242+6+7::1/24*18+Input*+1/24*1
:R:/242+6+5::1/24*18-Input*+1/24*1
:R:/242+6+4::1/24*18-Input*+1/24*2
:R:/242+6+3::1/24*18-Input*+1/24*3
:R:/242+6+2::1/24*18-Input*+1/24*4
:R:/242+6+1::1/24*18-Input*+1/24*5
:R:/242+60::1/24*18-Input*+1/24*6
:R:/242+6-1::1/24*18-Input*+1/24*7
:R:/242+6-2::1/24*18-Input*+1/24*8
:R:/242+6-3::1/24*18-Input*+1/24*9
:R:/242+6-4::1/24*18-Input*+1/24*10
:R:/242+6-5::1/24*18-Input*+1/24*11
:R:/242+6-6::1/24*18-Input*+1/24*12
:R:/242+6-7::1/24*18-Input*+1/24*13
:R:/242+6-8::1/24*18-Input*+1/24*14
:R:/242+6-9::1/24*18-Input*+1/24*15
:R:/242+6-10::1/24*18-Input*+1/24*16
:R:/242+6-11::1/24*18-Input*+1/24*17
:R:/242+6-12::1/24*18-Input*+1/24*18
:R:/242-6+12::1/24*6+Input*+1/24*18   ;-12  0 +12   -6 Start
:R:/242-6+11::1/24*6+Input*+1/24*17
:R:/242-6+10::1/24*6+Input*+1/24*16
:R:/242-6+9::1/24*6+Input*+1/24*15
:R:/242-6+8::1/24*6+Input*+1/24*14
:R:/242-6+7::1/24*6+Input*+1/24*13
:R:/242-6+6::1/24*6+Input*+1/24*12
:R:/242-6+5::1/24*6+Input*+1/24*11
:R:/242-6+4::1/24*6+Input*+1/24*10
:R:/242-6+3::1/24*6+Input*+1/24*9
:R:/242-6+2::1/24*6+Input*+1/24*8
:R:/242-6+1::1/24*6+Input*+1/24*7
:R:/242-60::1/24*6+Input*+1/24*6
:R:/242-6-1::1/24*6+Input*+1/24*5
:R:/242-6-2::1/24*6+Input*+1/24*4
:R:/242-6-3::1/24*6+Input*+1/24*3
:R:/242-6-4::1/24*6+Input*+1/24*2
:R:/242-6-5::1/24*6+Input*+1/24*1
:R:/242-6-7::1/24*6-Input*+1/24*1
:R:/242-6-8::1/24*6-Input*+1/24*2
:R:/242-6-9::1/24*6-Input*+1/24*3
:R:/242-6-10::1/24*6-Input*+1/24*4
:R:/242-6-11::1/24*6-Input*+1/24*5
:R:/242-6-12::1/24*6-Input*+1/24*6
:R:/242+7+12::1/24*19+Input*+1/24*5  ;-12  0 +12    +7 Start
:R:/242+7+11::1/24*19+Input*+1/24*4
:R:/242+7+10::1/24*19+Input*+1/24*3
:R:/242+7+9::1/24*19+Input*+1/24*2
:R:/242+7+8::1/24*19+Input*+1/24*1
:R:/242+7+6::1/24*19-Input*+1/24*1
:R:/242+7+5::1/24*19-Input*+1/24*2
:R:/242+7+4::1/24*19-Input*+1/24*3
:R:/242+7+3::1/24*19-Input*+1/24*4
:R:/242+7+2::1/24*19-Input*+1/24*5
:R:/242+7+1::1/24*19-Input*+1/24*6
:R:/242+70::1/24*19-Input*+1/24*7
:R:/242+7-1::1/24*19-Input*+1/24*8
:R:/242+7-2::1/24*19-Input*+1/24*9
:R:/242+7-3::1/24*19-Input*+1/24*10
:R:/242+7-4::1/24*19-Input*+1/24*11
:R:/242+7-5::1/24*19-Input*+1/24*12
:R:/242+7-6::1/24*19-Input*+1/24*13
:R:/242+7-7::1/24*19-Input*+1/24*14
:R:/242+7-8::1/24*19-Input*+1/24*15
:R:/242+7-9::1/24*19-Input*+1/24*16
:R:/242+7-10::1/24*19-Input*+1/24*17
:R:/242+7-11::1/24*19-Input*+1/24*18
:R:/242+7-12::1/24*19-Input*+1/24*19
:R:/242-7+12::1/24*5+Input*+1/24*19  ;-12  0 +12    -7 Start
:R:/242-7+11::1/24*5+Input*+1/24*18
:R:/242-7+10::1/24*5+Input*+1/24*17
:R:/242-7+9::1/24*5+Input*+1/24*16
:R:/242-7+8::1/24*5+Input*+1/24*15
:R:/242-7+7::1/24*5+Input*+1/24*14
:R:/242-7+6::1/24*5+Input*+1/24*13
:R:/242-7+5::1/24*5+Input*+1/24*12
:R:/242-7+4::1/24*5+Input*+1/24*11
:R:/242-7+3::1/24*5+Input*+1/24*10
:R:/242-7+2::1/24*5+Input*+1/24*9
:R:/242-7+1::1/24*5+Input*+1/24*8
:R:/242-70::1/24*5+Input*+1/24*7
:R:/242-7-1::1/24*5+Input*+1/24*6
:R:/242-7-2::1/24*5+Input*+1/24*5
:R:/242-7-3::1/24*5+Input*+1/24*4
:R:/242-7-4::1/24*5+Input*+1/24*3
:R:/242-7-5::1/24*5+Input*+1/24*2
:R:/242-7-6::1/24*5+Input*+1/24*1
:R:/242-7-8::1/24*5-Input*+1/24*1
:R:/242-7-9::1/24*5-Input*+1/24*2
:R:/242-7-10::1/24*5-Input*+1/24*3
:R:/242-7-11::1/24*5-Input*+1/24*4
:R:/242-7-12::1/24*5-Input*+1/24*5
:R:/242+8+12::1/24*20+Input*+1/24*4   ;-12  0 +12   +8 Start
:R:/242+8+11::1/24*20+Input*+1/24*3
:R:/242+8+10::1/24*20+Input*+1/24*2
:R:/242+8+9::1/24*20+Input*+1/24*1
:R:/242+8+7::1/24*20-Input*+1/24*1
:R:/242+8+6::1/24*20-Input*+1/24*2
:R:/242+8+5::1/24*20-Input*+1/24*3
:R:/242+8+4::1/24*20-Input*+1/24*4
:R:/242+8+3::1/24*20-Input*+1/24*5
:R:/242+8+2::1/24*20-Input*+1/24*6
:R:/242+8+1::1/24*20-Input*+1/24*7
:R:/242+80::1/24*20-Input*+1/24*8
:R:/242+8-1::1/24*20-Input*+1/24*9
:R:/242+8-2::1/24*20-Input*+1/24*10
:R:/242+8-3::1/24*20-Input*+1/24*11
:R:/242+8-4::1/24*20-Input*+1/24*12
:R:/242+8-5::1/24*20-Input*+1/24*13
:R:/242+8-6::1/24*20-Input*+1/24*14
:R:/242+8-7::1/24*20-Input*+1/24*15
:R:/242+8-8::1/24*20-Input*+1/24*16
:R:/242+8-9::1/24*20-Input*+1/24*17
:R:/242+8-10::1/24*20-Input*+1/24*18
:R:/242+8-11::1/24*20-Input*+1/24*19
:R:/242+8-12::1/24*20-Input*+1/24*20
:R:/242-8+12::1/24*4+Input*+1/24*20 ;-12  0 +12   -8 Start
:R:/242-8+11::1/24*4+Input*+1/24*19
:R:/242-8+10::1/24*4+Input*+1/24*18
:R:/242-8+9::1/24*4+Input*+1/24*17
:R:/242-8+8::1/24*4+Input*+1/24*16
:R:/242-8+7::1/24*4+Input*+1/24*15
:R:/242-8+6::1/24*4+Input*+1/24*14
:R:/242-8+5::1/24*4+Input*+1/24*13
:R:/242-8+4::1/24*4+Input*+1/24*12
:R:/242-8+3::1/24*4+Input*+1/24*11
:R:/242-8+2::1/24*4+Input*+1/24*10
:R:/242-8+1::1/24*4+Input*+1/24*9
:R:/242-80::1/24*4+Input*+1/24*8
:R:/242-8-1::1/24*4+Input*+1/24*7
:R:/242-8-2::1/24*4+Input*+1/24*6
:R:/242-8-3::1/24*4+Input*+1/24*5
:R:/242-8-4::1/24*4+Input*+1/24*4
:R:/242-8-5::1/24*4+Input*+1/24*3
:R:/242-8-6::1/24*4+Input*+1/24*2
:R:/242-8-7::1/24*4+Input*+1/24*1
:R:/242-8-9::1/24*4-Input*+1/24*1
:R:/242-8-10::1/24*4-Input*+1/24*2
:R:/242-8-11::1/24*4-Input*+1/24*3
:R:/242-8-12::1/24*4-Input*+1/24*4
:R:/242+9+12::1/24*21+Input*+1/24*3  ;-12  0 +12    +9 Start
:R:/242+9+11::1/24*21+Input*+1/24*2
:R:/242+9+10::1/24*21+Input*+1/24*1
:R:/242+9+8::1/24*21-Input*+1/24*1
:R:/242+9+7::1/24*21-Input*+1/24*2
:R:/242+9+6::1/24*21-Input*+1/24*3
:R:/242+9+5::1/24*21-Input*+1/24*4
:R:/242+9+4::1/24*21-Input*+1/24*5
:R:/242+9+3::1/24*21-Input*+1/24*6
:R:/242+9+2::1/24*21-Input*+1/24*7
:R:/242+9+1::1/24*21-Input*+1/24*8
:R:/242+90::1/24*21-Input*+1/24*9
:R:/242+9-1::1/24*21-Input*+1/24*10
:R:/242+9-2::1/24*21-Input*+1/24*11
:R:/242+9-3::1/24*21-Input*+1/24*12
:R:/242+9-4::1/24*21-Input*+1/24*13
:R:/242+9-5::1/24*21-Input*+1/24*14
:R:/242+9-6::1/24*21-Input*+1/24*15
:R:/242+9-7::1/24*21-Input*+1/24*16
:R:/242+9-8::1/24*21-Input*+1/24*17
:R:/242+9-9::1/24*21-Input*+1/24*18
:R:/242+9-10::1/24*21-Input*+1/24*19
:R:/242+9-11::1/24*21-Input*+1/24*20
:R:/242+9-12::1/24*21-Input*+1/24*21
:R:/242-9+12::1/24*3+Input*+1/24*21 ;-12  0 +12    -9 Start
:R:/242-9+11::1/24*3+Input*+1/24*20
:R:/242-9+10::1/24*3+Input*+1/24*19
:R:/242-9+9::1/24*3+Input*+1/24*18
:R:/242-9+8::1/24*3+Input*+1/24*17
:R:/242-9+7::1/24*3+Input*+1/24*16
:R:/242-9+6::1/24*3+Input*+1/24*15
:R:/242-9+5::1/24*3+Input*+1/24*14
:R:/242-9+4::1/24*3+Input*+1/24*13
:R:/242-9+3::1/24*3+Input*+1/24*12
:R:/242-9+2::1/24*3+Input*+1/24*11
:R:/242-9+1::1/24*3+Input*+1/24*10
:R:/242-90::1/24*3+Input*+1/24*9
:R:/242-9-1::1/24*3+Input*+1/24*8
:R:/242-9-2::1/24*3+Input*+1/24*7
:R:/242-9-3::1/24*3+Input*+1/24*6
:R:/242-9-4::1/24*3+Input*+1/24*5
:R:/242-9-5::1/24*3+Input*+1/24*4
:R:/242-9-6::1/24*3+Input*+1/24*3
:R:/242-9-7::1/24*3+Input*+1/24*2
:R:/242-9-8::1/24*3+Input*+1/24*1
:R:/242-9-10::1/24*3-Input*+1/24*1
:R:/242-9-11::1/24*3-Input*+1/24*2
:R:/242-9-12::1/24*3-Input*+1/24*3
:R:/242+10+12::1/24*22+Input*+1/24*2   ;-12  0 +12   +10 Start
:R:/242+10+11::1/24*22+Input*+1/24*1
:R:/242+10+9::1/24*22-Input*+1/24*1
:R:/242+10+8::1/24*22-Input*+1/24*2
:R:/242+10+7::1/24*22-Input*+1/24*3
:R:/242+10+6::1/24*22-Input*+1/24*4
:R:/242+10+5::1/24*22-Input*+1/24*5
:R:/242+10+4::1/24*22-Input*+1/24*6
:R:/242+10+3::1/24*22-Input*+1/24*7
:R:/242+10+2::1/24*22-Input*+1/24*8
:R:/242+10+1::1/24*22-Input*+1/24*9
:R:/242+100::1/24*22-Input*+1/24*10
:R:/242+10-1::1/24*22-Input*+1/24*11
:R:/242+10-2::1/24*22-Input*+1/24*12
:R:/242+10-3::1/24*22-Input*+1/24*13
:R:/242+10-4::1/24*22-Input*+1/24*14
:R:/242+10-5::1/24*22-Input*+1/24*15
:R:/242+10-6::1/24*22-Input*+1/24*16
:R:/242+10-7::1/24*22-Input*+1/24*17
:R:/242+10-8::1/24*22-Input*+1/24*18
:R:/242+10-9::1/24*22-Input*+1/24*19
:R:/242+10-10::1/24*22-Input*+1/24*20
:R:/242+10-11::1/24*22-Input*+1/24*21
:R:/242+10-12::1/24*22-Input*+1/24*22
:R:/242-10+12::1/24*2+Input*+1/24*22  ;-12  0 +12     -10 Start
:R:/242-10+11::1/24*2+Input*+1/24*21
:R:/242-10+10::1/24*2+Input*+1/24*20
:R:/242-10+9::1/24*2+Input*+1/24*19
:R:/242-10+8::1/24*2+Input*+1/24*18
:R:/242-10+7::1/24*2+Input*+1/24*17
:R:/242-10+6::1/24*2+Input*+1/24*16
:R:/242-10+5::1/24*2+Input*+1/24*15
:R:/242-10+4::1/24*2+Input*+1/24*14
:R:/242-10+3::1/24*2+Input*+1/24*13
:R:/242-10+2::1/24*2+Input*+1/24*12
:R:/242-10+1::1/24*2+Input*+1/24*11
:R:/242-100::1/24*2+Input*+1/24*10
:R:/242-10-1::1/24*2+Input*+1/24*9
:R:/242-10-2::1/24*2+Input*+1/24*8
:R:/242-10-3::1/24*2+Input*+1/24*7
:R:/242-10-4::1/24*2+Input*+1/24*6
:R:/242-10-5::1/24*2+Input*+1/24*5
:R:/242-10-6::1/24*2+Input*+1/24*4
:R:/242-10-7::1/24*2+Input*+1/24*3
:R:/242-10-8::1/24*2+Input*+1/24*2
:R:/242-10-9::1/24*2+Input*+1/24*1
:R:/242-10-11::1/24*2-Input*+1/24*1
:R:/242-10-12::1/24*2-Input*+1/24*2
:R:/242+11+12::1/24*23+Input*+1/24*1   ;-12  0 +12     +11 Start
:R:/242+11+10::1/24*23-Input*+1/24*1
:R:/242+11+9::1/24*23-Input*+1/24*2 
:R:/242+11+8::1/24*23-Input*+1/24*3
:R:/242+11+7::1/24*23-Input*+1/24*4
:R:/242+11+6::1/24*23-Input*+1/24*5
:R:/242+11+5::1/24*23-Input*+1/24*6
:R:/242+11+4::1/24*23-Input*+1/24*7
:R:/242+11+3::1/24*23-Input*+1/24*8
:R:/242+11+2::1/24*23-Input*+1/24*9
:R:/242+11+1::1/24*23-Input*+1/24*10
:R:/242+110::1/24*23-Input*+1/24*11
:R:/242+11-1::1/24*23-Input*+1/24*12
:R:/242+11-2::1/24*23-Input*+1/24*13
:R:/242+11-3::1/24*23-Input*+1/24*14
:R:/242+11-4::1/24*23-Input*+1/24*15
:R:/242+11-5::1/24*23-Input*+1/24*16
:R:/242+11-6::1/24*23-Input*+1/24*17
:R:/242+11-7::1/24*23-Input*+1/24*18
:R:/242+11-8::1/24*23-Input*+1/24*19
:R:/242+11-9::1/24*23-Input*+1/24*20
:R:/242+11-10::1/24*23-Input*+1/24*21
:R:/242+11-11::1/24*23-Input*+1/24*22
:R:/242+11-12::1/24*23-Input*+1/24*23
:R:/242-11+12::1/24*1+Input*+1/24*23   ;-12  0 +12    -11 Start
:R:/242-11+11::1/24*1+Input*+1/24*22
:R:/242-11+10::1/24*1+Input*+1/24*21
:R:/242-11+9::1/24*1+Input*+1/24*20
:R:/242-11+8::1/24*1+Input*+1/24*19
:R:/242-11+7::1/24*1+Input*+1/24*18
:R:/242-11+6::1/24*1+Input*+1/24*17
:R:/242-11+5::1/24*1+Input*+1/24*16
:R:/242-11+4::1/24*1+Input*+1/24*15
:R:/242-11+3::1/24*1+Input*+1/24*14
:R:/242-11+2::1/24*1+Input*+1/24*13
:R:/242-11+1::1/24*1+Input*+1/24*12
:R:/242-110::1/24*1+Input*+1/24*11
:R:/242-11-1::1/24*1+Input*+1/24*10
:R:/242-11-2::1/24*1+Input*+1/24*9
:R:/242-11-3::1/24*1+Input*+1/24*8
:R:/242-11-4::1/24*1+Input*+1/24*7
:R:/242-11-5::1/24*1+Input*+1/24*6
:R:/242-11-6::1/24*1+Input*+1/24*5
:R:/242-11-7::1/24*1+Input*+1/24*4
:R:/242-11-8::1/24*1+Input*+1/24*3
:R:/242-11-9::1/24*1+Input*+1/24*2
:R:/242-11-10::1/24*1+Input*+1/24*1
:R:/242-11-12::1/24*1-Input*+1/24*1
:R:/242+12+11::1-Input*+1/24*1 ;-12  0 +12     +12 Start
:R:/242+12+10::1-Input*+1/24*2
:R:/242+12+9::1-Input*+1/24*3
:R:/242+12+8::1-Input*+1/24*4
:R:/242+12+7::1-Input*+1/24*5
:R:/242+12+6::1-Input*+1/24*6
:R:/242+12+5::1-Input*+1/24*7
:R:/242+12+4::1-Input*+1/24*8
:R:/242+12+3::1-Input*+1/24*9
:R:/242+12+2::1-Input*+1/24*10
:R:/242+12+1::1-Input*+1/24*11
:R:/242+120::1-Input*+1/24*12
:R:/242+12-1::1-Input*+1/24*13
:R:/242+12-2::1-Input*+1/24*14
:R:/242+12-3::1-Input*+1/24*15
:R:/242+12-4::1-Input*+1/24*16
:R:/242+12-5::1-Input*+1/24*17
:R:/242+12-6::1-Input*+1/24*18
:R:/242+12-7::1-Input*+1/24*19
:R:/242+12-8::1-Input*+1/24*20
:R:/242+12-9::1-Input*+1/24*21
:R:/242+12-10::1-Input*+1/24*22
:R:/242+12-11::1-Input*+1/24*23
:R:/242+12-12::1-Input*+1/24*24
:R:/242-12+12::Input  ;-12  0 +12     -12 Start
:R:/242-12+11::Input*+1/24*23
:R:/242-12+10::Input*+1/24*22
:R:/242-12+9::Input*+1/24*21
:R:/242-12+8::Input*+1/24*20
:R:/242-12+7::Input*+1/24*19
:R:/242-12+6::Input*+1/24*18
:R:/242-12+5::Input*+1/24*17
:R:/242-12+4::Input*+1/24*16
:R:/242-12+3::Input*+1/24*15
:R:/242-12+2::Input*+1/24*14
:R:/242-12+1::Input*+1/24*13
:R:/242-120::Input*+1/24*12
:R:/242-12-1::Input*+1/24*11
:R:/242-12-2::Input*+1/24*10
:R:/242-12-3::Input*+1/24*9
:R:/242-12-4::Input*+1/24*8
:R:/242-12-5::Input*+1/24*7
:R:/242-12-6::Input*+1/24*6
:R:/242-12-7::Input*+1/24*5
:R:/242-12-8::Input*+1/24*4
:R:/242-12-9::Input*+1/24*3
:R:/242-12-10::Input*+1/24*2
:R:/242-12-11::Input*+1/24*1
return 
OCP
Posts: 98
Joined: 28 Mar 2018, 19:28

Re: Using millions of hotstrings any tips?

02 Sep 2018, 11:40

Guest wrote:Look at regex powered hotstrings here https://autohotkey.com/boards/viewtopic.php?t=3329
thnx i have the materials, i will have to study this a bit
OCP
Posts: 98
Joined: 28 Mar 2018, 19:28

Re: Using millions of hotstrings any tips?

25 Sep 2018, 04:01

thnx all for the pointers/help i consider this topic solved

i have since i first posted this found out that it was the included help gui i had added that was causing my lag problems i have separated it from the main exe and now it works as intended while having close to 2.8 million formulas in it now.

for regex strings i have come to the conclusion it is to complicated (for me) when dealing with over 100k variations with outcomes that need to look like this 32%+(Int((((((((Tension(Input,-10))*2)-1)^5)*16)-(((((Tension(Input,-10))*2)-1)^3)*20)+((((Tension(Input,-10))*2)-1)*5))*0.5+0.5)*8)/7*(46%-32%) )

it would reduce my ram usage but stuff is giving me a headache rly and even if i get a working formula i would need to do so much testing to be sure all variations do as intended and that takes waaay to much time so i just make the lists manually as before it is just much more predictable for me :)
User avatar
Blackholyman
Posts: 1293
Joined: 29 Sep 2013, 22:57
Location: Denmark
Contact:

Re: Using millions of hotstrings any tips?

25 Sep 2018, 07:49

Example:

Code: Select all

#Persistent
#SingleInstance force

Hotstring("(\/242)(\+|\-)?(\d+)(\+|\-)(\d+) ", "function", 3, false)
Return

;~ /2420+12 = 1/24*12+Input*+1/24*12
;~ /242+1+12 = 1/24*13+Input*+1/24*12
;~ /242+2+9 = 1/24*14+Input*+1/24*9
;~ /242+5+6 = 1/24*17+Input*+1/24*6
;~ /242-2+9 = 1/24*10+Input*+1/24*9
;~ /242+2+7 = 1/24*14+Input*+1/24*7
;~ /242-2-2 = 1/24*10-Input*+1/24*2

function(stringObject)
{
send % "{bs " stringObject.len(0) "}"

string := "1/24*"
if (stringObject[2] = "-")
	string .= (12 - stringObject[3])
else
	string .= (12 + stringObject[3])
string .= stringObject[4]
string .= "Input*+1/24*"
string .= stringObject[5]

paste(string)
return
}

paste(string)
{
	clipsave := ClipboardAll
	clipboard := string
	sendinput ^v
	sleep 200
	clipboard := clipsave
	return
}



/*
Hotstring(
	trigger:
		A string or a regular expression to trigger the hotstring. (If you use a regex here, the mode should be 3 for the regex to work)
	
	label:  	
		A string to replace the trigger / A label to go to / A function to call when the hotstring is triggered.
		If you used a regular expression as the trigger and mode was set to three, backreferences like $0, $1 would work.
		If a function name was passed, the function will be called with the phrase that triggered the hotstring(If the trigger was a string)
			or the Match object(If the trigger was a regex & mode equals 3).
		If this parameter was a label, the global variable '$' will contain the string/match object.
		If you wish to remove a hotstring, Pass the trigger with this parameter empty.
	
	Mode:	
		A number between 1 and 3 that determines the properties of the hotstring.
		If Mode == 1 then the hotstring is case insensitive.
		If Mode == 2 then the hostrings is case sensitive.
		If Mode == 3 then you can use regex in the trigger.
		
		1 is the defualt.
	
	clearTrigger:
			Determines if the trigger is erased after the hotstring is triggered.
	
	cond:
			A name of a function that allows the conditional trigerring of the hotstring.
	
)
*/
Hotstring(trigger, label, mode := 1, clearTrigger := 1, cond := ""){
	global $
	static keysBound := false,hotkeyPrefix := "~$", hotstrings := {}, typed := "", keys := {"symbols": "!""#$%&'()*+,-./:;<=>?@[\]^_``{|}~", "num": "0123456789", "alpha":"abcdefghijklmnopqrstuvwxyz", "other": "BS,Return,Tab,Space", "breakKeys":"Left,Right,Up,Down,Home,End,RButton,LButton,LControl,RControl,LAlt,RAlt,AppsKey,Lwin,Rwin,WheelDown,WheelUp,f1,f2,f3,f4,f5,f6,f7,f8,f9,f6,f7,f9,f10,f11,f12", "numpad":"Numpad0,Numpad1,Numpad2,Numpad3,Numpad4,Numpad5,Numpad6,Numpad7,Numpad8,Numpad9,NumpadDot,NumpadDiv,NumpadMult,NumpadAdd,NumpadSub,NumpadEnter"}, effect := {"Return" : "`n", "Tab":A_Tab, "Space": A_Space, "Enter":"`n", "Dot": ".", "Div":"/", "Mult":"*", "Add":"+", "Sub":"-"}
	
	if (!keysBound){
		;Binds the keys to watch for triggers.
		for k,v in ["symbols", "num", "alpha"]
		{
			;alphanumeric/symbols
			v := keys[v]
			Loop,Parse, v
				Hotkey,%hotkeyPrefix%%A_LoopField%,__hotstring
		}
		
		v := keys.alpha
		Loop,Parse, v
			Hotkey, %hotkeyPrefix%+%A_Loopfield%,__hotstring
		for k,v in ["other", "breakKeys", "numpad"]
		{
			;comma separated values
			v := keys[v]
			Loop,Parse, v,`,
				Hotkey,%hotkeyPrefix%%A_LoopField%,__hotstring
		}
		keysBound := true ;keysBound is a static varible. Now, the keys won't be bound twice.
	}
	if (mode == "CALLBACK"){
		; Callback for the hotkey.s
		Hotkey := SubStr(A_ThisHotkey,3)
		if (StrLen(Hotkey) == 2 && Substr(Hotkey,1,1) == "+" && Instr(keys.alpha, Substr(Hotkey, 2,1))){
			Hotkey := Substr(Hotkey,2)
			if (!GetKeyState("Capslock", "T")){
				StringUpper, Hotkey,Hotkey
			}
		}
		
		shiftState := GetKeyState("Shift", "P")
		uppercase :=  GetKeyState("Capslock", "T") ? !shiftState : shiftState 
		;If capslock is down, shift's function is reversed.(ie pressing shift and a key while capslock is on will provide the lowercase key)
		if (uppercase && Instr(keys.alpha, Hotkey)){
			StringUpper, Hotkey,Hotkey
		}
		if (Instr("," . keys.breakKeys . ",", "," . Hotkey . ",")){
			typed := ""
			return
		} else if Hotkey in Return,Tab,Space
		{
			typed .= effect[Hotkey]
		} else if (Hotkey == "BS"){
			; trim typed var if Backspace was pressed.
			StringTrimRight,typed,typed,1
			return
		} else if (RegExMatch(Hotkey, "Numpad(.+?)", numKey)) {
			if (numkey1 ~= "\d"){
				typed .= numkey1
			} else {
				typed .= effects[numKey1]
			}
		} else {
			typed .= Hotkey
		}
		matched := false
		for k,v in hotstrings
		{
			matchRegex := (v.mode == 1 ? "Oi)" : "")  . (v.mode == 3 ? RegExReplace(v.trigger, "\$$", "") : "\Q" . v.trigger . "\E") . "$"
			
			if (v.mode == 3){
				if (matchRegex ~= "^[^\s\)\(\\]+?\)"){
					matchRegex := "O" . matchRegex
				} else {
					matchRegex := "O)" . matchRegex
				}
			}
			if (RegExMatch(typed, matchRegex, local$)){
				matched := true
				if (v.cond != "" && IsFunc(v.cond)){
					; If hotstring has a condition function.
					A_LoopCond := Func(v.cond)
					if (A_LoopCond.MinParams >= 1){
						; If the function has atleast 1 parameters.
						A_LoopRetVal := A_LoopCond.(v.mode == 3 ? local$ : local$.Value(0))
					} else {
						A_LoopRetVal := A_LoopCond.()
					}
					if (!A_LoopRetVal){
						; If the function returns a non-true value.
						matched := false
						continue
					}
				}
				if (v.clearTrigger){
					;Delete the trigger
					SendInput % "{BS " . StrLen(local$.Value(0))  . "}"
				}
				if (IsLabel(v.label)){
					$ := v.mode == 3 ? local$ : local$.Value(0)
					gosub, % v.label
				} else if (IsFunc(v.label)){
					callbackFunc := Func(v.label)
					if (callbackFunc.MinParams >= 1){
						callbackFunc.(v.mode == 3 ? local$ : local$.Value(0))
					} else {
						callbackFunc.()
					}
				} else {
					toSend := v.label
				
					;Working out the backreferences
					Loop, % local$.Count()
						StringReplace, toSend,toSend,% "$" . A_Index,% local$.Value(A_index),All
					toSend := RegExReplace(toSend,"([!#\+\^\{\}])","{$1}") ;Escape modifiers
					SendInput,%toSend%
				}
				
			}
		}
		if (matched){
			typed := ""
		} else if (StrLen(typed) > 350){
			StringTrimLeft,typed,typed,200
		}
	} else {
		if (hotstrings.HasKey(trigger) && label == ""){
			; Removing a hotstring.
			hotstrings.remove(trigger)
		} else {
			; Add to hotstrings object.
			hotstrings[trigger] := {"trigger" : trigger, "label":label, "mode":mode, "clearTrigger" : clearTrigger, "cond": cond}
		}
		
	}
	return

	__hotstring:
	; This label is triggered every time a key is pressed.
	Hotstring("", "", "CALLBACK")
	return
}

;~ :R:/2420+12::1/24*12+Input*+1/24*12 ;;-12 0 +12     0 Start
;~ :R:/2420+11::1/24*12+Input*+1/24*11
;~ :R:/2420+10::1/24*12+Input*+1/24*10
;~ :R:/2420+9::1/24*12+Input*+1/24*9
;~ :R:/2420+8::1/24*12+Input*+1/24*8
;~ :R:/2420+7::1/24*12+Input*+1/24*7
;~ :R:/2420+6::1/24*12+Input*+1/24*6
;~ :R:/2420+5::1/24*12+Input*+1/24*5
;~ :R:/2420+4::1/24*12+Input*+1/24*4
;~ :R:/2420+3::1/24*12+Input*+1/24*3
;~ :R:/2420+2::1/24*12+Input*+1/24*2
;~ :R:/2420+1::1/24*12+Input*+1/24*1
;~ :R:/2420-1::1/24*12-Input*+1/24*1
;~ :R:/2420-2::1/24*12-Input*+1/24*2
;~ :R:/2420-3::1/24*12-Input*+1/24*3
;~ :R:/2420-4::1/24*12-Input*+1/24*4
;~ :R:/2420-5::1/24*12-Input*+1/24*5
;~ :R:/2420-6::1/24*12-Input*+1/24*6
;~ :R:/2420-7::1/24*12-Input*+1/24*7
;~ :R:/2420-8::1/24*12-Input*+1/24*8
;~ :R:/2420-9::1/24*12-Input*+1/24*9
;~ :R:/2420-10::1/24*12-Input*+1/24*10
;~ :R:/2420-11::1/24*12-Input*+1/24*11
;~ :R:/2420-12::1/24*12-Input*+1/24*12
;~ :R:/242+1+12::1/24*13+Input*+1/24*11
;~ :R:/242+1+11::1/24*13+Input*+1/24*10
;~ :R:/242+1+10::1/24*13+Input*+1/24*9  ; -12  0 +12     +1 Start
;~ :R:/242+1+9::1/24*13+Input*+1/24*8
;~ :R:/242+1+8::1/24*13+Input*+1/24*7
;~ :R:/242+1+7::1/24*13+Input*+1/24*6
;~ :R:/242+1+6::1/24*13+Input*+1/24*5
;~ :R:/242+1+5::1/24*13+Input*+1/24*4
;~ :R:/242+1+4::1/24*13+Input*+1/24*3
;~ :R:/242+1+3::1/24*13+Input*+1/24*2
;~ :R:/242+1+2::1/24*13+Input*+1/24*1
;~ :R:/242+10::1/24*13-Input*+1/24*1
;~ :R:/242+1-1::1/24*13-Input*+1/24*2
;~ :R:/242+1-2::1/24*13-Input*+1/24*3
;~ :R:/242+1-3::1/24*13-Input*+1/24*4
;~ :R:/242+1-4::1/24*13-Input*+1/24*5
;~ :R:/242+1-5::1/24*13-Input*+1/24*6
;~ :R:/242+1-6::1/24*13-Input*+1/24*7
;~ :R:/242+1-7::1/24*13-Input*+1/24*8
;~ :R:/242+1-8::1/24*13-Input*+1/24*9
;~ :R:/242+1-9::1/24*13-Input*+1/24*10
;~ :R:/242+1-10::1/24*13-Input*+1/24*11
;~ :R:/242+1-11::1/24*13-Input*+1/24*12
;~ :R:/242+1-12::1/24*13-Input*+1/24*13
;~ :R:/242-1+12::1/24*11+Input*+1/24*13 ;-12  0 +12   -1 Start
;~ :R:/242-1+11::1/24*11+Input*+1/24*12
;~ :R:/242-1+10::1/24*11+Input*+1/24*11
;~ :R:/242-1+9::1/24*11+Input*+1/24*10
;~ :R:/242-1+8::1/24*11+Input*+1/24*9
;~ :R:/242-1+7::1/24*11+Input*+1/24*8
;~ :R:/242-1+6::1/24*11+Input*+1/24*7
;~ :R:/242-1+5::1/24*11+Input*+1/24*6
;~ :R:/242-1+4::1/24*11+Input*+1/24*5
;~ :R:/242-1+3::1/24*11+Input*+1/24*4
;~ :R:/242-1+2::1/24*11+Input*+1/24*3
;~ :R:/242-1+1::1/24*11+Input*+1/24*2
;~ :R:/242-10::1/24*11+Input*+1/24*1
;~ :R:/242-1-2::1/24*11-Input*+1/24*1
;~ :R:/242-1-3::1/24*11-Input*+1/24*2
;~ :R:/242-1-4::1/24*11-Input*+1/24*3
;~ :R:/242-1-5::1/24*11-Input*+1/24*4
;~ :R:/242-1-6::1/24*11-Input*+1/24*5
;~ :R:/242-1-7::1/24*11-Input*+1/24*6
;~ :R:/242-1-8::1/24*11-Input*+1/24*7
;~ :R:/242-1-9::1/24*11-Input*+1/24*8
;~ :R:/242-1-10::1/24*11-Input*+1/24*9
;~ :R:/242-1-11::1/24*11-Input*+1/24*10
;~ :R:/242-1-12::1/24*11-Input*+1/24*11
;~ :R:/242+2+12::1/24*14+Input*+1/24*10 ;-12  0 +12    +2 Start
;~ :R:/242+2+11::1/24*14+Input*+1/24*9
;~ :R:/242+2+10::1/24*14+Input*+1/24*8
;~ :R:/242+2+9::1/24*14+Input*+1/24*7
;~ :R:/242+2+8::1/24*14+Input*+1/24*6
;~ :R:/242+2+7::1/24*14+Input*+1/24*5
;~ :R:/242+2+6::1/24*14+Input*+1/24*4
;~ :R:/242+2+5::1/24*14+Input*+1/24*3
;~ :R:/242+2+4::1/24*14+Input*+1/24*2
;~ :R:/242+2+3::1/24*14+Input*+1/24*1
;~ :R:/242+2+1::1/24*14-Input*+1/24*1
;~ :R:/242+20::1/24*14-Input*+1/24*2
;~ :R:/242+2-1::1/24*14-Input*+1/24*3
;~ :R:/242+2-2::1/24*14-Input*+1/24*4
;~ :R:/242+2-3::1/24*14-Input*+1/24*5
;~ :R:/242+2-4::1/24*14-Input*+1/24*6
;~ :R:/242+2-5::1/24*14-Input*+1/24*7
;~ :R:/242+2-6::1/24*14-Input*+1/24*8
;~ :R:/242+2-7::1/24*14-Input*+1/24*9
;~ :R:/242+2-8::1/24*14-Input*+1/24*10
;~ :R:/242+2-9::1/24*14-Input*+1/24*11
;~ :R:/242+2-10::1/24*14-Input*+1/24*12
;~ :R:/242+2-11::1/24*14-Input*+1/24*13
;~ :R:/242+2-12::1/24*14-Input*+1/24*14
;~ :R:/242-2+12::1/24*10+Input*+1/24*14 ;-12  0 +12    -2 Start
;~ :R:/242-2+11::1/24*10+Input*+1/24*13
;~ :R:/242-2+10::1/24*10+Input*+1/24*12
;~ :R:/242-2+9::1/24*10+Input*+1/24*11
;~ :R:/242-2+8::1/24*10+Input*+1/24*10
;~ :R:/242-2+7::1/24*10+Input*+1/24*9
;~ :R:/242-2+6::1/24*10+Input*+1/24*8
;~ :R:/242-2+5::1/24*10+Input*+1/24*7
;~ :R:/242-2+4::1/24*10+Input*+1/24*6
;~ :R:/242-2+3::1/24*10+Input*+1/24*5
;~ :R:/242-2+2::1/24*10+Input*+1/24*4
;~ :R:/242-2+1::1/24*10+Input*+1/24*3
;~ :R:/242-20::1/24*10+Input*+1/24*2
;~ :R:/242-2-1::1/24*10+Input*+1/24*1
;~ :R:/242-2-3::1/24*10-Input*+1/24*1
;~ :R:/242-2-4::1/24*10-Input*+1/24*2
;~ :R:/242-2-5::1/24*10-Input*+1/24*3
;~ :R:/242-2-6::1/24*10-Input*+1/24*4
;~ :R:/242-2-7::1/24*10-Input*+1/24*5
;~ :R:/242-2-8::1/24*10-Input*+1/24*6
;~ :R:/242-2-9::1/24*10-Input*+1/24*7
;~ :R:/242-2-10::1/24*10-Input*+1/24*8
;~ :R:/242-2-11::1/24*10-Input*+1/24*9
;~ :R:/242-2-12::1/24*10-Input*+1/24*10
;~ :R:/242+3+12::1/24*15+Input*+1/24*9   ;-12  0 +12    +3 Start
;~ :R:/242+3+11::1/24*15+Input*+1/24*8
;~ :R:/242+3+10::1/24*15+Input*+1/24*7
;~ :R:/242+3+9::1/24*15+Input*+1/24*6
;~ :R:/242+3+8::1/24*15+Input*+1/24*5
;~ :R:/242+3+7::1/24*15+Input*+1/24*4
;~ :R:/242+3+6::1/24*15+Input*+1/24*3
;~ :R:/242+3+5::1/24*15+Input*+1/24*2
;~ :R:/242+3+4::1/24*15+Input*+1/24*1
;~ :R:/242+3+2::1/24*15-Input*+1/24*1
;~ :R:/242+3+1::1/24*15-Input*+1/24*2
;~ :R:/242+30::1/24*15-Input*+1/24*3
;~ :R:/242+3-1::1/24*15-Input*+1/24*4
;~ :R:/242+3-2::1/24*15-Input*+1/24*5
;~ :R:/242+3-3::1/24*15-Input*+1/24*6
;~ :R:/242+3-4::1/24*15-Input*+1/24*7
;~ :R:/242+3-5::1/24*15-Input*+1/24*8
;~ :R:/242+3-6::1/24*15-Input*+1/24*9
;~ :R:/242+3-7::1/24*15-Input*+1/24*10
;~ :R:/242+3-8::1/24*15-Input*+1/24*11
;~ :R:/242+3-9::1/24*15-Input*+1/24*12
;~ :R:/242+3-10::1/24*15-Input*+1/24*13
;~ :R:/242+3-11::1/24*15-Input*+1/24*14
;~ :R:/242+3-12::1/24*15-Input*+1/24*15
;~ :R:/242-3+12::1/24*9+Input*+1/24*15 ;-12  0 +12    -3 Start
;~ :R:/242-3+11::1/24*9+Input*+1/24*14
;~ :R:/242-3+10::1/24*9+Input*+1/24*13
;~ :R:/242-3+9::1/24*9+Input*+1/24*12
;~ :R:/242-3+8::1/24*9+Input*+1/24*11
;~ :R:/242-3+7::1/24*9+Input*+1/24*10
;~ :R:/242-3+6::1/24*9+Input*+1/24*9
;~ :R:/242-3+5::1/24*9+Input*+1/24*8
;~ :R:/242-3+4::1/24*9+Input*+1/24*7
;~ :R:/242-3+3::1/24*9+Input*+1/24*6
;~ :R:/242-3+2::1/24*9+Input*+1/24*5
;~ :R:/242-3+1::1/24*9+Input*+1/24*4
;~ :R:/242-30::1/24*9+Input*+1/24*3
;~ :R:/242-3-1::1/24*9+Input*+1/24*2
;~ :R:/242-3-2::1/24*9+Input*+1/24*1
;~ :R:/242-3-4::1/24*9-Input*+1/24*1
;~ :R:/242-3-5::1/24*9-Input*+1/24*2
;~ :R:/242-3-6::1/24*9-Input*+1/24*3
;~ :R:/242-3-7::1/24*9-Input*+1/24*4
;~ :R:/242-3-8::1/24*9-Input*+1/24*5
;~ :R:/242-3-9::1/24*9-Input*+1/24*6
;~ :R:/242-3-10::1/24*9-Input*+1/24*7
;~ :R:/242-3-11::1/24*9-Input*+1/24*8
;~ :R:/242-3-12::1/24*9-Input*+1/24*9
;~ :R:/242+4+12::1/24*16+Input*+1/24*8  ;-12  0 +12   +4 Start
;~ :R:/242+4+11::1/24*16+Input*+1/24*7
;~ :R:/242+4+10::1/24*16+Input*+1/24*6
;~ :R:/242+4+9::1/24*16+Input*+1/24*5
;~ :R:/242+4+8::1/24*16+Input*+1/24*4
;~ :R:/242+4+7::1/24*16+Input*+1/24*3
;~ :R:/242+4+6::1/24*16+Input*+1/24*2
;~ :R:/242+4+5::1/24*16+Input*+1/24*1
;~ :R:/242+4+3::1/24*16-Input*+1/24*1
;~ :R:/242+4+2::1/24*16-Input*+1/24*2
;~ :R:/242+4+1::1/24*16-Input*+1/24*3
;~ :R:/242+40::1/24*16-Input*+1/24*4
;~ :R:/242+4-1::1/24*16-Input*+1/24*5
;~ :R:/242+4-2::1/24*16-Input*+1/24*6
;~ :R:/242+4-3::1/24*16-Input*+1/24*7
;~ :R:/242+4-4::1/24*16-Input*+1/24*8
;~ :R:/242+4-5::1/24*16-Input*+1/24*9
;~ :R:/242+4-6::1/24*16-Input*+1/24*10
;~ :R:/242+4-7::1/24*16-Input*+1/24*11
;~ :R:/242+4-8::1/24*16-Input*+1/24*12
;~ :R:/242+4-9::1/24*16-Input*+1/24*13
;~ :R:/242+4-10::1/24*16-Input*+1/24*14
;~ :R:/242+4-11::1/24*16-Input*+1/24*15
;~ :R:/242+4-12::1/24*16-Input*+1/24*16
;~ :R:/242-4+12::1/24*8+Input*+1/24*16  ;-12  0 +12    -4 Start
;~ :R:/242-4+11::1/24*8+Input*+1/24*15
;~ :R:/242-4+10::1/24*8+Input*+1/24*14
;~ :R:/242-4+9::1/24*8+Input*+1/24*13
;~ :R:/242-4+8::1/24*8+Input*+1/24*12
;~ :R:/242-4+7::1/24*8+Input*+1/24*11
;~ :R:/242-4+6::1/24*8+Input*+1/24*10
;~ :R:/242-4+5::1/24*8+Input*+1/24*9
;~ :R:/242-4+4::1/24*8+Input*+1/24*8
;~ :R:/242-4+3::1/24*8+Input*+1/24*7
;~ :R:/242-4+2::1/24*8+Input*+1/24*6
;~ :R:/242-4+1::1/24*8+Input*+1/24*5
;~ :R:/242-40::1/24*8+Input*+1/24*4
;~ :R:/242-4-1::1/24*8+Input*+1/24*3
;~ :R:/242-4-2::1/24*8+Input*+1/24*2
;~ :R:/242-4-3::1/24*8+Input*+1/24*1
;~ :R:/242-4-5::1/24*8-Input*+1/24*1
;~ :R:/242-4-6::1/24*8-Input*+1/24*2
;~ :R:/242-4-7::1/24*8-Input*+1/24*3
;~ :R:/242-4-8::1/24*8-Input*+1/24*4
;~ :R:/242-4-9::1/24*8-Input*+1/24*5
;~ :R:/242-4-10::1/24*8-Input*+1/24*6
;~ :R:/242-4-11::1/24*8-Input*+1/24*7
;~ :R:/242-4-12::1/24*8-Input*+1/24*8
;~ :R:/242+5+12::1/24*17+Input*+1/24*7   ;-12  0 +12    +5 Start
;~ :R:/242+5+11::1/24*17+Input*+1/24*6
;~ :R:/242+5+10::1/24*17+Input*+1/24*5
;~ :R:/242+5+9::1/24*17+Input*+1/24*4
;~ :R:/242+5+8::1/24*17+Input*+1/24*3
;~ :R:/242+5+7::1/24*17+Input*+1/24*2
;~ :R:/242+5+6::1/24*17+Input*+1/24*1
;~ :R:/242+5+4::1/24*17-Input*+1/24*1
;~ :R:/242+5+3::1/24*17-Input*+1/24*2
;~ :R:/242+5+2::1/24*17-Input*+1/24*3
;~ :R:/242+5+1::1/24*17-Input*+1/24*4
;~ :R:/242+50::1/24*17-Input*+1/24*5
;~ :R:/242+5-1::1/24*17-Input*+1/24*6
;~ :R:/242+5-2::1/24*17-Input*+1/24*7
;~ :R:/242+5-3::1/24*17-Input*+1/24*8
;~ :R:/242+5-4::1/24*17-Input*+1/24*9
;~ :R:/242+5-5::1/24*17-Input*+1/24*10
;~ :R:/242+5-6::1/24*17-Input*+1/24*11
;~ :R:/242+5-7::1/24*17-Input*+1/24*12
;~ :R:/242+5-8::1/24*17-Input*+1/24*13
;~ :R:/242+5-9::1/24*17-Input*+1/24*14
;~ :R:/242+5-10::1/24*17-Input*+1/24*15
;~ :R:/242+5-11::1/24*17-Input*+1/24*16
;~ :R:/242+5-12::1/24*17-Input*+1/24*17
;~ :R:/242-5+12::1/24*7+Input*+1/24*17  ;-12  0 +12   -5 Start
;~ :R:/242-5+11::1/24*7+Input*+1/24*16
;~ :R:/242-5+10::1/24*7+Input*+1/24*15
;~ :R:/242-5+9::1/24*7+Input*+1/24*14
;~ :R:/242-5+8::1/24*7+Input*+1/24*13
;~ :R:/242-5+7::1/24*7+Input*+1/24*12
;~ :R:/242-5+6::1/24*7+Input*+1/24*11
;~ :R:/242-5+5::1/24*7+Input*+1/24*10
;~ :R:/242-5+4::1/24*7+Input*+1/24*9
;~ :R:/242-5+3::1/24*7+Input*+1/24*8
;~ :R:/242-5+2::1/24*7+Input*+1/24*7
;~ :R:/242-5+1::1/24*7+Input*+1/24*6
;~ :R:/242-50::1/24*7+Input*+1/24*5
;~ :R:/242-5-1::1/24*7+Input*+1/24*4
;~ :R:/242-5-2::1/24*7+Input*+1/24*3
;~ :R:/242-5-3::1/24*7+Input*+1/24*2
;~ :R:/242-5-4::1/24*7+Input*+1/24*1
;~ :R:/242-5-6::1/24*7-Input*+1/24*1
;~ :R:/242-5-7::1/24*7-Input*+1/24*2
;~ :R:/242-5-8::1/24*7-Input*+1/24*3
;~ :R:/242-5-9::1/24*7-Input*+1/24*4
;~ :R:/242-5-10::1/24*7-Input*+1/24*5
;~ :R:/242-5-11::1/24*7-Input*+1/24*6
;~ :R:/242-5-12::1/24*7-Input*+1/24*7
;~ :R:/242+6+12::1/24*18+Input*+1/24*6  ;-12  0 +12    +6 Start
;~ :R:/242+6+11::1/24*18+Input*+1/24*5
;~ :R:/242+6+10::1/24*18+Input*+1/24*4
;~ :R:/242+6+9::1/24*18+Input*+1/24*3
;~ :R:/242+6+8::1/24*18+Input*+1/24*2
;~ :R:/242+6+7::1/24*18+Input*+1/24*1
;~ :R:/242+6+5::1/24*18-Input*+1/24*1
;~ :R:/242+6+4::1/24*18-Input*+1/24*2
;~ :R:/242+6+3::1/24*18-Input*+1/24*3
;~ :R:/242+6+2::1/24*18-Input*+1/24*4
;~ :R:/242+6+1::1/24*18-Input*+1/24*5
;~ :R:/242+60::1/24*18-Input*+1/24*6
;~ :R:/242+6-1::1/24*18-Input*+1/24*7
;~ :R:/242+6-2::1/24*18-Input*+1/24*8
;~ :R:/242+6-3::1/24*18-Input*+1/24*9
;~ :R:/242+6-4::1/24*18-Input*+1/24*10
;~ :R:/242+6-5::1/24*18-Input*+1/24*11
;~ :R:/242+6-6::1/24*18-Input*+1/24*12
;~ :R:/242+6-7::1/24*18-Input*+1/24*13
;~ :R:/242+6-8::1/24*18-Input*+1/24*14
;~ :R:/242+6-9::1/24*18-Input*+1/24*15
;~ :R:/242+6-10::1/24*18-Input*+1/24*16
;~ :R:/242+6-11::1/24*18-Input*+1/24*17
;~ :R:/242+6-12::1/24*18-Input*+1/24*18
;~ :R:/242-6+12::1/24*6+Input*+1/24*18   ;-12  0 +12   -6 Start
;~ :R:/242-6+11::1/24*6+Input*+1/24*17
;~ :R:/242-6+10::1/24*6+Input*+1/24*16
;~ :R:/242-6+9::1/24*6+Input*+1/24*15
;~ :R:/242-6+8::1/24*6+Input*+1/24*14
;~ :R:/242-6+7::1/24*6+Input*+1/24*13
;~ :R:/242-6+6::1/24*6+Input*+1/24*12
;~ :R:/242-6+5::1/24*6+Input*+1/24*11
;~ :R:/242-6+4::1/24*6+Input*+1/24*10
;~ :R:/242-6+3::1/24*6+Input*+1/24*9
;~ :R:/242-6+2::1/24*6+Input*+1/24*8
;~ :R:/242-6+1::1/24*6+Input*+1/24*7
;~ :R:/242-60::1/24*6+Input*+1/24*6
;~ :R:/242-6-1::1/24*6+Input*+1/24*5
;~ :R:/242-6-2::1/24*6+Input*+1/24*4
;~ :R:/242-6-3::1/24*6+Input*+1/24*3
;~ :R:/242-6-4::1/24*6+Input*+1/24*2
;~ :R:/242-6-5::1/24*6+Input*+1/24*1
;~ :R:/242-6-7::1/24*6-Input*+1/24*1
;~ :R:/242-6-8::1/24*6-Input*+1/24*2
;~ :R:/242-6-9::1/24*6-Input*+1/24*3
;~ :R:/242-6-10::1/24*6-Input*+1/24*4
;~ :R:/242-6-11::1/24*6-Input*+1/24*5
;~ :R:/242-6-12::1/24*6-Input*+1/24*6
;~ :R:/242+7+12::1/24*19+Input*+1/24*5  ;-12  0 +12    +7 Start
;~ :R:/242+7+11::1/24*19+Input*+1/24*4
;~ :R:/242+7+10::1/24*19+Input*+1/24*3
;~ :R:/242+7+9::1/24*19+Input*+1/24*2
;~ :R:/242+7+8::1/24*19+Input*+1/24*1
;~ :R:/242+7+6::1/24*19-Input*+1/24*1
;~ :R:/242+7+5::1/24*19-Input*+1/24*2
;~ :R:/242+7+4::1/24*19-Input*+1/24*3
;~ :R:/242+7+3::1/24*19-Input*+1/24*4
;~ :R:/242+7+2::1/24*19-Input*+1/24*5
;~ :R:/242+7+1::1/24*19-Input*+1/24*6
;~ :R:/242+70::1/24*19-Input*+1/24*7
;~ :R:/242+7-1::1/24*19-Input*+1/24*8
;~ :R:/242+7-2::1/24*19-Input*+1/24*9
;~ :R:/242+7-3::1/24*19-Input*+1/24*10
;~ :R:/242+7-4::1/24*19-Input*+1/24*11
;~ :R:/242+7-5::1/24*19-Input*+1/24*12
;~ :R:/242+7-6::1/24*19-Input*+1/24*13
;~ :R:/242+7-7::1/24*19-Input*+1/24*14
;~ :R:/242+7-8::1/24*19-Input*+1/24*15
;~ :R:/242+7-9::1/24*19-Input*+1/24*16
;~ :R:/242+7-10::1/24*19-Input*+1/24*17
;~ :R:/242+7-11::1/24*19-Input*+1/24*18
;~ :R:/242+7-12::1/24*19-Input*+1/24*19
;~ :R:/242-7+12::1/24*5+Input*+1/24*19  ;-12  0 +12    -7 Start
;~ :R:/242-7+11::1/24*5+Input*+1/24*18
;~ :R:/242-7+10::1/24*5+Input*+1/24*17
;~ :R:/242-7+9::1/24*5+Input*+1/24*16
;~ :R:/242-7+8::1/24*5+Input*+1/24*15
;~ :R:/242-7+7::1/24*5+Input*+1/24*14
;~ :R:/242-7+6::1/24*5+Input*+1/24*13
;~ :R:/242-7+5::1/24*5+Input*+1/24*12
;~ :R:/242-7+4::1/24*5+Input*+1/24*11
;~ :R:/242-7+3::1/24*5+Input*+1/24*10
;~ :R:/242-7+2::1/24*5+Input*+1/24*9
;~ :R:/242-7+1::1/24*5+Input*+1/24*8
;~ :R:/242-70::1/24*5+Input*+1/24*7
;~ :R:/242-7-1::1/24*5+Input*+1/24*6
;~ :R:/242-7-2::1/24*5+Input*+1/24*5
;~ :R:/242-7-3::1/24*5+Input*+1/24*4
;~ :R:/242-7-4::1/24*5+Input*+1/24*3
;~ :R:/242-7-5::1/24*5+Input*+1/24*2
;~ :R:/242-7-6::1/24*5+Input*+1/24*1
;~ :R:/242-7-8::1/24*5-Input*+1/24*1
;~ :R:/242-7-9::1/24*5-Input*+1/24*2
;~ :R:/242-7-10::1/24*5-Input*+1/24*3
;~ :R:/242-7-11::1/24*5-Input*+1/24*4
;~ :R:/242-7-12::1/24*5-Input*+1/24*5
;~ :R:/242+8+12::1/24*20+Input*+1/24*4   ;-12  0 +12   +8 Start
;~ :R:/242+8+11::1/24*20+Input*+1/24*3
;~ :R:/242+8+10::1/24*20+Input*+1/24*2
;~ :R:/242+8+9::1/24*20+Input*+1/24*1
;~ :R:/242+8+7::1/24*20-Input*+1/24*1
;~ :R:/242+8+6::1/24*20-Input*+1/24*2
;~ :R:/242+8+5::1/24*20-Input*+1/24*3
;~ :R:/242+8+4::1/24*20-Input*+1/24*4
;~ :R:/242+8+3::1/24*20-Input*+1/24*5
;~ :R:/242+8+2::1/24*20-Input*+1/24*6
;~ :R:/242+8+1::1/24*20-Input*+1/24*7
;~ :R:/242+80::1/24*20-Input*+1/24*8
;~ :R:/242+8-1::1/24*20-Input*+1/24*9
;~ :R:/242+8-2::1/24*20-Input*+1/24*10
;~ :R:/242+8-3::1/24*20-Input*+1/24*11
;~ :R:/242+8-4::1/24*20-Input*+1/24*12
;~ :R:/242+8-5::1/24*20-Input*+1/24*13
;~ :R:/242+8-6::1/24*20-Input*+1/24*14
;~ :R:/242+8-7::1/24*20-Input*+1/24*15
;~ :R:/242+8-8::1/24*20-Input*+1/24*16
;~ :R:/242+8-9::1/24*20-Input*+1/24*17
;~ :R:/242+8-10::1/24*20-Input*+1/24*18
;~ :R:/242+8-11::1/24*20-Input*+1/24*19
;~ :R:/242+8-12::1/24*20-Input*+1/24*20
;~ :R:/242-8+12::1/24*4+Input*+1/24*20 ;-12  0 +12   -8 Start
;~ :R:/242-8+11::1/24*4+Input*+1/24*19
;~ :R:/242-8+10::1/24*4+Input*+1/24*18
;~ :R:/242-8+9::1/24*4+Input*+1/24*17
;~ :R:/242-8+8::1/24*4+Input*+1/24*16
;~ :R:/242-8+7::1/24*4+Input*+1/24*15
;~ :R:/242-8+6::1/24*4+Input*+1/24*14
;~ :R:/242-8+5::1/24*4+Input*+1/24*13
;~ :R:/242-8+4::1/24*4+Input*+1/24*12
;~ :R:/242-8+3::1/24*4+Input*+1/24*11
;~ :R:/242-8+2::1/24*4+Input*+1/24*10
;~ :R:/242-8+1::1/24*4+Input*+1/24*9
;~ :R:/242-80::1/24*4+Input*+1/24*8
;~ :R:/242-8-1::1/24*4+Input*+1/24*7
;~ :R:/242-8-2::1/24*4+Input*+1/24*6
;~ :R:/242-8-3::1/24*4+Input*+1/24*5
;~ :R:/242-8-4::1/24*4+Input*+1/24*4
;~ :R:/242-8-5::1/24*4+Input*+1/24*3
;~ :R:/242-8-6::1/24*4+Input*+1/24*2
;~ :R:/242-8-7::1/24*4+Input*+1/24*1
;~ :R:/242-8-9::1/24*4-Input*+1/24*1
;~ :R:/242-8-10::1/24*4-Input*+1/24*2
;~ :R:/242-8-11::1/24*4-Input*+1/24*3
;~ :R:/242-8-12::1/24*4-Input*+1/24*4
;~ :R:/242+9+12::1/24*21+Input*+1/24*3  ;-12  0 +12    +9 Start
;~ :R:/242+9+11::1/24*21+Input*+1/24*2
;~ :R:/242+9+10::1/24*21+Input*+1/24*1
;~ :R:/242+9+8::1/24*21-Input*+1/24*1
;~ :R:/242+9+7::1/24*21-Input*+1/24*2
;~ :R:/242+9+6::1/24*21-Input*+1/24*3
;~ :R:/242+9+5::1/24*21-Input*+1/24*4
;~ :R:/242+9+4::1/24*21-Input*+1/24*5
;~ :R:/242+9+3::1/24*21-Input*+1/24*6
;~ :R:/242+9+2::1/24*21-Input*+1/24*7
;~ :R:/242+9+1::1/24*21-Input*+1/24*8
;~ :R:/242+90::1/24*21-Input*+1/24*9
;~ :R:/242+9-1::1/24*21-Input*+1/24*10
;~ :R:/242+9-2::1/24*21-Input*+1/24*11
;~ :R:/242+9-3::1/24*21-Input*+1/24*12
;~ :R:/242+9-4::1/24*21-Input*+1/24*13
;~ :R:/242+9-5::1/24*21-Input*+1/24*14
;~ :R:/242+9-6::1/24*21-Input*+1/24*15
;~ :R:/242+9-7::1/24*21-Input*+1/24*16
;~ :R:/242+9-8::1/24*21-Input*+1/24*17
;~ :R:/242+9-9::1/24*21-Input*+1/24*18
;~ :R:/242+9-10::1/24*21-Input*+1/24*19
;~ :R:/242+9-11::1/24*21-Input*+1/24*20
;~ :R:/242+9-12::1/24*21-Input*+1/24*21
;~ :R:/242-9+12::1/24*3+Input*+1/24*21 ;-12  0 +12    -9 Start
;~ :R:/242-9+11::1/24*3+Input*+1/24*20
;~ :R:/242-9+10::1/24*3+Input*+1/24*19
;~ :R:/242-9+9::1/24*3+Input*+1/24*18
;~ :R:/242-9+8::1/24*3+Input*+1/24*17
;~ :R:/242-9+7::1/24*3+Input*+1/24*16
;~ :R:/242-9+6::1/24*3+Input*+1/24*15
;~ :R:/242-9+5::1/24*3+Input*+1/24*14
;~ :R:/242-9+4::1/24*3+Input*+1/24*13
;~ :R:/242-9+3::1/24*3+Input*+1/24*12
;~ :R:/242-9+2::1/24*3+Input*+1/24*11
;~ :R:/242-9+1::1/24*3+Input*+1/24*10
;~ :R:/242-90::1/24*3+Input*+1/24*9
;~ :R:/242-9-1::1/24*3+Input*+1/24*8
;~ :R:/242-9-2::1/24*3+Input*+1/24*7
;~ :R:/242-9-3::1/24*3+Input*+1/24*6
;~ :R:/242-9-4::1/24*3+Input*+1/24*5
;~ :R:/242-9-5::1/24*3+Input*+1/24*4
;~ :R:/242-9-6::1/24*3+Input*+1/24*3
;~ :R:/242-9-7::1/24*3+Input*+1/24*2
;~ :R:/242-9-8::1/24*3+Input*+1/24*1
;~ :R:/242-9-10::1/24*3-Input*+1/24*1
;~ :R:/242-9-11::1/24*3-Input*+1/24*2
;~ :R:/242-9-12::1/24*3-Input*+1/24*3
;~ :R:/242+10+12::1/24*22+Input*+1/24*2   ;-12  0 +12   +10 Start
;~ :R:/242+10+11::1/24*22+Input*+1/24*1
;~ :R:/242+10+9::1/24*22-Input*+1/24*1
;~ :R:/242+10+8::1/24*22-Input*+1/24*2
;~ :R:/242+10+7::1/24*22-Input*+1/24*3
;~ :R:/242+10+6::1/24*22-Input*+1/24*4
;~ :R:/242+10+5::1/24*22-Input*+1/24*5
;~ :R:/242+10+4::1/24*22-Input*+1/24*6
;~ :R:/242+10+3::1/24*22-Input*+1/24*7
;~ :R:/242+10+2::1/24*22-Input*+1/24*8
;~ :R:/242+10+1::1/24*22-Input*+1/24*9
;~ :R:/242+100::1/24*22-Input*+1/24*10
;~ :R:/242+10-1::1/24*22-Input*+1/24*11
;~ :R:/242+10-2::1/24*22-Input*+1/24*12
;~ :R:/242+10-3::1/24*22-Input*+1/24*13
;~ :R:/242+10-4::1/24*22-Input*+1/24*14
;~ :R:/242+10-5::1/24*22-Input*+1/24*15
;~ :R:/242+10-6::1/24*22-Input*+1/24*16
;~ :R:/242+10-7::1/24*22-Input*+1/24*17
;~ :R:/242+10-8::1/24*22-Input*+1/24*18
;~ :R:/242+10-9::1/24*22-Input*+1/24*19
;~ :R:/242+10-10::1/24*22-Input*+1/24*20
;~ :R:/242+10-11::1/24*22-Input*+1/24*21
;~ :R:/242+10-12::1/24*22-Input*+1/24*22
;~ :R:/242-10+12::1/24*2+Input*+1/24*22  ;-12  0 +12     -10 Start
;~ :R:/242-10+11::1/24*2+Input*+1/24*21
;~ :R:/242-10+10::1/24*2+Input*+1/24*20
;~ :R:/242-10+9::1/24*2+Input*+1/24*19
;~ :R:/242-10+8::1/24*2+Input*+1/24*18
;~ :R:/242-10+7::1/24*2+Input*+1/24*17
;~ :R:/242-10+6::1/24*2+Input*+1/24*16
;~ :R:/242-10+5::1/24*2+Input*+1/24*15
;~ :R:/242-10+4::1/24*2+Input*+1/24*14
;~ :R:/242-10+3::1/24*2+Input*+1/24*13
;~ :R:/242-10+2::1/24*2+Input*+1/24*12
;~ :R:/242-10+1::1/24*2+Input*+1/24*11
;~ :R:/242-100::1/24*2+Input*+1/24*10
;~ :R:/242-10-1::1/24*2+Input*+1/24*9
;~ :R:/242-10-2::1/24*2+Input*+1/24*8
;~ :R:/242-10-3::1/24*2+Input*+1/24*7
;~ :R:/242-10-4::1/24*2+Input*+1/24*6
;~ :R:/242-10-5::1/24*2+Input*+1/24*5
;~ :R:/242-10-6::1/24*2+Input*+1/24*4
;~ :R:/242-10-7::1/24*2+Input*+1/24*3
;~ :R:/242-10-8::1/24*2+Input*+1/24*2
;~ :R:/242-10-9::1/24*2+Input*+1/24*1
;~ :R:/242-10-11::1/24*2-Input*+1/24*1
;~ :R:/242-10-12::1/24*2-Input*+1/24*2
;~ :R:/242+11+12::1/24*23+Input*+1/24*1   ;-12  0 +12     +11 Start
;~ :R:/242+11+10::1/24*23-Input*+1/24*1
;~ :R:/242+11+9::1/24*23-Input*+1/24*2 
;~ :R:/242+11+8::1/24*23-Input*+1/24*3
;~ :R:/242+11+7::1/24*23-Input*+1/24*4
;~ :R:/242+11+6::1/24*23-Input*+1/24*5
;~ :R:/242+11+5::1/24*23-Input*+1/24*6
;~ :R:/242+11+4::1/24*23-Input*+1/24*7
;~ :R:/242+11+3::1/24*23-Input*+1/24*8
;~ :R:/242+11+2::1/24*23-Input*+1/24*9
;~ :R:/242+11+1::1/24*23-Input*+1/24*10
;~ :R:/242+110::1/24*23-Input*+1/24*11
;~ :R:/242+11-1::1/24*23-Input*+1/24*12
;~ :R:/242+11-2::1/24*23-Input*+1/24*13
;~ :R:/242+11-3::1/24*23-Input*+1/24*14
;~ :R:/242+11-4::1/24*23-Input*+1/24*15
;~ :R:/242+11-5::1/24*23-Input*+1/24*16
;~ :R:/242+11-6::1/24*23-Input*+1/24*17
;~ :R:/242+11-7::1/24*23-Input*+1/24*18
;~ :R:/242+11-8::1/24*23-Input*+1/24*19
;~ :R:/242+11-9::1/24*23-Input*+1/24*20
;~ :R:/242+11-10::1/24*23-Input*+1/24*21
;~ :R:/242+11-11::1/24*23-Input*+1/24*22
;~ :R:/242+11-12::1/24*23-Input*+1/24*23
;~ :R:/242-11+12::1/24*1+Input*+1/24*23   ;-12  0 +12    -11 Start
;~ :R:/242-11+11::1/24*1+Input*+1/24*22
;~ :R:/242-11+10::1/24*1+Input*+1/24*21
;~ :R:/242-11+9::1/24*1+Input*+1/24*20
;~ :R:/242-11+8::1/24*1+Input*+1/24*19
;~ :R:/242-11+7::1/24*1+Input*+1/24*18
;~ :R:/242-11+6::1/24*1+Input*+1/24*17
;~ :R:/242-11+5::1/24*1+Input*+1/24*16
;~ :R:/242-11+4::1/24*1+Input*+1/24*15
;~ :R:/242-11+3::1/24*1+Input*+1/24*14
;~ :R:/242-11+2::1/24*1+Input*+1/24*13
;~ :R:/242-11+1::1/24*1+Input*+1/24*12
;~ :R:/242-110::1/24*1+Input*+1/24*11
;~ :R:/242-11-1::1/24*1+Input*+1/24*10
;~ :R:/242-11-2::1/24*1+Input*+1/24*9
;~ :R:/242-11-3::1/24*1+Input*+1/24*8
;~ :R:/242-11-4::1/24*1+Input*+1/24*7
;~ :R:/242-11-5::1/24*1+Input*+1/24*6
;~ :R:/242-11-6::1/24*1+Input*+1/24*5
;~ :R:/242-11-7::1/24*1+Input*+1/24*4
;~ :R:/242-11-8::1/24*1+Input*+1/24*3
;~ :R:/242-11-9::1/24*1+Input*+1/24*2
;~ :R:/242-11-10::1/24*1+Input*+1/24*1
;~ :R:/242-11-12::1/24*1-Input*+1/24*1
;~ :R:/242+12+11::1-Input*+1/24*1 ;-12  0 +12     +12 Start
;~ :R:/242+12+10::1-Input*+1/24*2
;~ :R:/242+12+9::1-Input*+1/24*3
;~ :R:/242+12+8::1-Input*+1/24*4
;~ :R:/242+12+7::1-Input*+1/24*5
;~ :R:/242+12+6::1-Input*+1/24*6
;~ :R:/242+12+5::1-Input*+1/24*7
;~ :R:/242+12+4::1-Input*+1/24*8
;~ :R:/242+12+3::1-Input*+1/24*9
;~ :R:/242+12+2::1-Input*+1/24*10
;~ :R:/242+12+1::1-Input*+1/24*11
;~ :R:/242+120::1-Input*+1/24*12
;~ :R:/242+12-1::1-Input*+1/24*13
;~ :R:/242+12-2::1-Input*+1/24*14
;~ :R:/242+12-3::1-Input*+1/24*15
;~ :R:/242+12-4::1-Input*+1/24*16
;~ :R:/242+12-5::1-Input*+1/24*17
;~ :R:/242+12-6::1-Input*+1/24*18
;~ :R:/242+12-7::1-Input*+1/24*19
;~ :R:/242+12-8::1-Input*+1/24*20
;~ :R:/242+12-9::1-Input*+1/24*21
;~ :R:/242+12-10::1-Input*+1/24*22
;~ :R:/242+12-11::1-Input*+1/24*23
;~ :R:/242+12-12::1-Input*+1/24*24
;~ :R:/242-12+12::Input  ;-12  0 +12     -12 Start
;~ :R:/242-12+11::Input*+1/24*23
;~ :R:/242-12+10::Input*+1/24*22
;~ :R:/242-12+9::Input*+1/24*21
;~ :R:/242-12+8::Input*+1/24*20
;~ :R:/242-12+7::Input*+1/24*19
;~ :R:/242-12+6::Input*+1/24*18
;~ :R:/242-12+5::Input*+1/24*17
;~ :R:/242-12+4::Input*+1/24*16
;~ :R:/242-12+3::Input*+1/24*15
;~ :R:/242-12+2::Input*+1/24*14
;~ :R:/242-12+1::Input*+1/24*13
;~ :R:/242-120::Input*+1/24*12
;~ :R:/242-12-1::Input*+1/24*11
;~ :R:/242-12-2::Input*+1/24*10
;~ :R:/242-12-3::Input*+1/24*9
;~ :R:/242-12-4::Input*+1/24*8
;~ :R:/242-12-5::Input*+1/24*7
;~ :R:/242-12-6::Input*+1/24*6
;~ :R:/242-12-7::Input*+1/24*5
;~ :R:/242-12-8::Input*+1/24*4
;~ :R:/242-12-9::Input*+1/24*3
;~ :R:/242-12-10::Input*+1/24*2
;~ :R:/242-12-11::Input*+1/24*1
;~ return 
Also check out:
Courses on AutoHotkey

My Autohotkey Blog
:dance:
OCP
Posts: 98
Joined: 28 Mar 2018, 19:28

Re: Using millions of hotstrings any tips?

18 Oct 2018, 02:50

Blackholyman wrote:
25 Sep 2018, 07:49
Example:

Code: Select all

#Persistent
#SingleInstance force

Hotstring("(\/242)(\+|\-)?(\d+)(\+|\-)(\d+) ", "function", 3, false)
Return

;~ /2420+12 = 1/24*12+Input*+1/24*12
;~ /242+1+12 = 1/24*13+Input*+1/24*12
;~ /242+2+9 = 1/24*14+Input*+1/24*9
;~ /242+5+6 = 1/24*17+Input*+1/24*6
;~ /242-2+9 = 1/24*10+Input*+1/24*9
;~ /242+2+7 = 1/24*14+Input*+1/24*7
;~ /242-2-2 = 1/24*10-Input*+1/24*2

function(stringObject)
{
send % "{bs " stringObject.len(0) "}"

string := "1/24*"
if (stringObject[2] = "-")
	string .= (12 - stringObject[3])
else
	string .= (12 + stringObject[3])
string .= stringObject[4]
string .= "Input*+1/24*"
string .= stringObject[5]

paste(string)
return
}

paste(string)
{
	clipsave := ClipboardAll
	clipboard := string
	sendinput ^v
	sleep 200
	clipboard := clipsave
	return
}



/*
Hotstring(
	trigger:
		A string or a regular expression to trigger the hotstring. (If you use a regex here, the mode should be 3 for the regex to work)
	
	label:  	
		A string to replace the trigger / A label to go to / A function to call when the hotstring is triggered.
		If you used a regular expression as the trigger and mode was set to three, backreferences like $0, $1 would work.
		If a function name was passed, the function will be called with the phrase that triggered the hotstring(If the trigger was a string)
			or the Match object(If the trigger was a regex & mode equals 3).
		If this parameter was a label, the global variable '$' will contain the string/match object.
		If you wish to remove a hotstring, Pass the trigger with this parameter empty.
	
	Mode:	
		A number between 1 and 3 that determines the properties of the hotstring.
		If Mode == 1 then the hotstring is case insensitive.
		If Mode == 2 then the hostrings is case sensitive.
		If Mode == 3 then you can use regex in the trigger.
		
		1 is the defualt.
	
	clearTrigger:
			Determines if the trigger is erased after the hotstring is triggered.
	
	cond:
			A name of a function that allows the conditional trigerring of the hotstring.
	
)
*/
Hotstring(trigger, label, mode := 1, clearTrigger := 1, cond := ""){
	global $
	static keysBound := false,hotkeyPrefix := "~$", hotstrings := {}, typed := "", keys := {"symbols": "!""#$%&'()*+,-./:;<=>?@[\]^_``{|}~", "num": "0123456789", "alpha":"abcdefghijklmnopqrstuvwxyz", "other": "BS,Return,Tab,Space", "breakKeys":"Left,Right,Up,Down,Home,End,RButton,LButton,LControl,RControl,LAlt,RAlt,AppsKey,Lwin,Rwin,WheelDown,WheelUp,f1,f2,f3,f4,f5,f6,f7,f8,f9,f6,f7,f9,f10,f11,f12", "numpad":"Numpad0,Numpad1,Numpad2,Numpad3,Numpad4,Numpad5,Numpad6,Numpad7,Numpad8,Numpad9,NumpadDot,NumpadDiv,NumpadMult,NumpadAdd,NumpadSub,NumpadEnter"}, effect := {"Return" : "`n", "Tab":A_Tab, "Space": A_Space, "Enter":"`n", "Dot": ".", "Div":"/", "Mult":"*", "Add":"+", "Sub":"-"}
	
	if (!keysBound){
		;Binds the keys to watch for triggers.
		for k,v in ["symbols", "num", "alpha"]
		{
			;alphanumeric/symbols
			v := keys[v]
			Loop,Parse, v
				Hotkey,%hotkeyPrefix%%A_LoopField%,__hotstring
		}
		
		v := keys.alpha
		Loop,Parse, v
			Hotkey, %hotkeyPrefix%+%A_Loopfield%,__hotstring
		for k,v in ["other", "breakKeys", "numpad"]
		{
			;comma separated values
			v := keys[v]
			Loop,Parse, v,`,
				Hotkey,%hotkeyPrefix%%A_LoopField%,__hotstring
		}
		keysBound := true ;keysBound is a static varible. Now, the keys won't be bound twice.
	}
	if (mode == "CALLBACK"){
		; Callback for the hotkey.s
		Hotkey := SubStr(A_ThisHotkey,3)
		if (StrLen(Hotkey) == 2 && Substr(Hotkey,1,1) == "+" && Instr(keys.alpha, Substr(Hotkey, 2,1))){
			Hotkey := Substr(Hotkey,2)
			if (!GetKeyState("Capslock", "T")){
				StringUpper, Hotkey,Hotkey
			}
		}
		
		shiftState := GetKeyState("Shift", "P")
		uppercase :=  GetKeyState("Capslock", "T") ? !shiftState : shiftState 
		;If capslock is down, shift's function is reversed.(ie pressing shift and a key while capslock is on will provide the lowercase key)
		if (uppercase && Instr(keys.alpha, Hotkey)){
			StringUpper, Hotkey,Hotkey
		}
		if (Instr("," . keys.breakKeys . ",", "," . Hotkey . ",")){
			typed := ""
			return
		} else if Hotkey in Return,Tab,Space
		{
			typed .= effect[Hotkey]
		} else if (Hotkey == "BS"){
			; trim typed var if Backspace was pressed.
			StringTrimRight,typed,typed,1
			return
		} else if (RegExMatch(Hotkey, "Numpad(.+?)", numKey)) {
			if (numkey1 ~= "\d"){
				typed .= numkey1
			} else {
				typed .= effects[numKey1]
			}
		} else {
			typed .= Hotkey
		}
		matched := false
		for k,v in hotstrings
		{
			matchRegex := (v.mode == 1 ? "Oi)" : "")  . (v.mode == 3 ? RegExReplace(v.trigger, "\$$", "") : "\Q" . v.trigger . "\E") . "$"
			
			if (v.mode == 3){
				if (matchRegex ~= "^[^\s\)\(\\]+?\)"){
					matchRegex := "O" . matchRegex
				} else {
					matchRegex := "O)" . matchRegex
				}
			}
			if (RegExMatch(typed, matchRegex, local$)){
				matched := true
				if (v.cond != "" && IsFunc(v.cond)){
					; If hotstring has a condition function.
					A_LoopCond := Func(v.cond)
					if (A_LoopCond.MinParams >= 1){
						; If the function has atleast 1 parameters.
						A_LoopRetVal := A_LoopCond.(v.mode == 3 ? local$ : local$.Value(0))
					} else {
						A_LoopRetVal := A_LoopCond.()
					}
					if (!A_LoopRetVal){
						; If the function returns a non-true value.
						matched := false
						continue
					}
				}
				if (v.clearTrigger){
					;Delete the trigger
					SendInput % "{BS " . StrLen(local$.Value(0))  . "}"
				}
				if (IsLabel(v.label)){
					$ := v.mode == 3 ? local$ : local$.Value(0)
					gosub, % v.label
				} else if (IsFunc(v.label)){
					callbackFunc := Func(v.label)
					if (callbackFunc.MinParams >= 1){
						callbackFunc.(v.mode == 3 ? local$ : local$.Value(0))
					} else {
						callbackFunc.()
					}
				} else {
					toSend := v.label
				
					;Working out the backreferences
					Loop, % local$.Count()
						StringReplace, toSend,toSend,% "$" . A_Index,% local$.Value(A_index),All
					toSend := RegExReplace(toSend,"([!#\+\^\{\}])","{$1}") ;Escape modifiers
					SendInput,%toSend%
				}
				
			}
		}
		if (matched){
			typed := ""
		} else if (StrLen(typed) > 350){
			StringTrimLeft,typed,typed,200
		}
	} else {
		if (hotstrings.HasKey(trigger) && label == ""){
			; Removing a hotstring.
			hotstrings.remove(trigger)
		} else {
			; Add to hotstrings object.
			hotstrings[trigger] := {"trigger" : trigger, "label":label, "mode":mode, "clearTrigger" : clearTrigger, "cond": cond}
		}
		
	}
	return

	__hotstring:
	; This label is triggered every time a key is pressed.
	Hotstring("", "", "CALLBACK")
	return
}

;~ :R:/2420+12::1/24*12+Input*+1/24*12 ;;-12 0 +12     0 Start
;~ :R:/2420+11::1/24*12+Input*+1/24*11
;~ :R:/2420+10::1/24*12+Input*+1/24*10
;~ :R:/2420+9::1/24*12+Input*+1/24*9
;~ :R:/2420+8::1/24*12+Input*+1/24*8
;~ :R:/2420+7::1/24*12+Input*+1/24*7
;~ :R:/2420+6::1/24*12+Input*+1/24*6
;~ :R:/2420+5::1/24*12+Input*+1/24*5
;~ :R:/2420+4::1/24*12+Input*+1/24*4
;~ :R:/2420+3::1/24*12+Input*+1/24*3
;~ :R:/2420+2::1/24*12+Input*+1/24*2
;~ :R:/2420+1::1/24*12+Input*+1/24*1
;~ :R:/2420-1::1/24*12-Input*+1/24*1
;~ :R:/2420-2::1/24*12-Input*+1/24*2
;~ :R:/2420-3::1/24*12-Input*+1/24*3
;~ :R:/2420-4::1/24*12-Input*+1/24*4
;~ :R:/2420-5::1/24*12-Input*+1/24*5
;~ :R:/2420-6::1/24*12-Input*+1/24*6
;~ :R:/2420-7::1/24*12-Input*+1/24*7
;~ :R:/2420-8::1/24*12-Input*+1/24*8
;~ :R:/2420-9::1/24*12-Input*+1/24*9
;~ :R:/2420-10::1/24*12-Input*+1/24*10
;~ :R:/2420-11::1/24*12-Input*+1/24*11
;~ :R:/2420-12::1/24*12-Input*+1/24*12
;~ :R:/242+1+12::1/24*13+Input*+1/24*11
;~ :R:/242+1+11::1/24*13+Input*+1/24*10
;~ :R:/242+1+10::1/24*13+Input*+1/24*9  ; -12  0 +12     +1 Start
;~ :R:/242+1+9::1/24*13+Input*+1/24*8
;~ :R:/242+1+8::1/24*13+Input*+1/24*7
;~ :R:/242+1+7::1/24*13+Input*+1/24*6
;~ :R:/242+1+6::1/24*13+Input*+1/24*5
;~ :R:/242+1+5::1/24*13+Input*+1/24*4
;~ :R:/242+1+4::1/24*13+Input*+1/24*3
;~ :R:/242+1+3::1/24*13+Input*+1/24*2
;~ :R:/242+1+2::1/24*13+Input*+1/24*1
;~ :R:/242+10::1/24*13-Input*+1/24*1
;~ :R:/242+1-1::1/24*13-Input*+1/24*2
;~ :R:/242+1-2::1/24*13-Input*+1/24*3
;~ :R:/242+1-3::1/24*13-Input*+1/24*4
;~ :R:/242+1-4::1/24*13-Input*+1/24*5
;~ :R:/242+1-5::1/24*13-Input*+1/24*6
;~ :R:/242+1-6::1/24*13-Input*+1/24*7
;~ :R:/242+1-7::1/24*13-Input*+1/24*8
;~ :R:/242+1-8::1/24*13-Input*+1/24*9
;~ :R:/242+1-9::1/24*13-Input*+1/24*10
;~ :R:/242+1-10::1/24*13-Input*+1/24*11
;~ :R:/242+1-11::1/24*13-Input*+1/24*12
;~ :R:/242+1-12::1/24*13-Input*+1/24*13
;~ :R:/242-1+12::1/24*11+Input*+1/24*13 ;-12  0 +12   -1 Start
;~ :R:/242-1+11::1/24*11+Input*+1/24*12
;~ :R:/242-1+10::1/24*11+Input*+1/24*11
;~ :R:/242-1+9::1/24*11+Input*+1/24*10
;~ :R:/242-1+8::1/24*11+Input*+1/24*9
;~ :R:/242-1+7::1/24*11+Input*+1/24*8
;~ :R:/242-1+6::1/24*11+Input*+1/24*7
;~ :R:/242-1+5::1/24*11+Input*+1/24*6
;~ :R:/242-1+4::1/24*11+Input*+1/24*5
;~ :R:/242-1+3::1/24*11+Input*+1/24*4
;~ :R:/242-1+2::1/24*11+Input*+1/24*3
;~ :R:/242-1+1::1/24*11+Input*+1/24*2
;~ :R:/242-10::1/24*11+Input*+1/24*1
;~ :R:/242-1-2::1/24*11-Input*+1/24*1
;~ :R:/242-1-3::1/24*11-Input*+1/24*2
;~ :R:/242-1-4::1/24*11-Input*+1/24*3
;~ :R:/242-1-5::1/24*11-Input*+1/24*4
;~ :R:/242-1-6::1/24*11-Input*+1/24*5
;~ :R:/242-1-7::1/24*11-Input*+1/24*6
;~ :R:/242-1-8::1/24*11-Input*+1/24*7
;~ :R:/242-1-9::1/24*11-Input*+1/24*8
;~ :R:/242-1-10::1/24*11-Input*+1/24*9
;~ :R:/242-1-11::1/24*11-Input*+1/24*10
;~ :R:/242-1-12::1/24*11-Input*+1/24*11
;~ :R:/242+2+12::1/24*14+Input*+1/24*10 ;-12  0 +12    +2 Start
;~ :R:/242+2+11::1/24*14+Input*+1/24*9
;~ :R:/242+2+10::1/24*14+Input*+1/24*8
;~ :R:/242+2+9::1/24*14+Input*+1/24*7
;~ :R:/242+2+8::1/24*14+Input*+1/24*6
;~ :R:/242+2+7::1/24*14+Input*+1/24*5
;~ :R:/242+2+6::1/24*14+Input*+1/24*4
;~ :R:/242+2+5::1/24*14+Input*+1/24*3
;~ :R:/242+2+4::1/24*14+Input*+1/24*2
;~ :R:/242+2+3::1/24*14+Input*+1/24*1
;~ :R:/242+2+1::1/24*14-Input*+1/24*1
;~ :R:/242+20::1/24*14-Input*+1/24*2
;~ :R:/242+2-1::1/24*14-Input*+1/24*3
;~ :R:/242+2-2::1/24*14-Input*+1/24*4
;~ :R:/242+2-3::1/24*14-Input*+1/24*5
;~ :R:/242+2-4::1/24*14-Input*+1/24*6
;~ :R:/242+2-5::1/24*14-Input*+1/24*7
;~ :R:/242+2-6::1/24*14-Input*+1/24*8
;~ :R:/242+2-7::1/24*14-Input*+1/24*9
;~ :R:/242+2-8::1/24*14-Input*+1/24*10
;~ :R:/242+2-9::1/24*14-Input*+1/24*11
;~ :R:/242+2-10::1/24*14-Input*+1/24*12
;~ :R:/242+2-11::1/24*14-Input*+1/24*13
;~ :R:/242+2-12::1/24*14-Input*+1/24*14
;~ :R:/242-2+12::1/24*10+Input*+1/24*14 ;-12  0 +12    -2 Start
;~ :R:/242-2+11::1/24*10+Input*+1/24*13
;~ :R:/242-2+10::1/24*10+Input*+1/24*12
;~ :R:/242-2+9::1/24*10+Input*+1/24*11
;~ :R:/242-2+8::1/24*10+Input*+1/24*10
;~ :R:/242-2+7::1/24*10+Input*+1/24*9
;~ :R:/242-2+6::1/24*10+Input*+1/24*8
;~ :R:/242-2+5::1/24*10+Input*+1/24*7
;~ :R:/242-2+4::1/24*10+Input*+1/24*6
;~ :R:/242-2+3::1/24*10+Input*+1/24*5
;~ :R:/242-2+2::1/24*10+Input*+1/24*4
;~ :R:/242-2+1::1/24*10+Input*+1/24*3
;~ :R:/242-20::1/24*10+Input*+1/24*2
;~ :R:/242-2-1::1/24*10+Input*+1/24*1
;~ :R:/242-2-3::1/24*10-Input*+1/24*1
;~ :R:/242-2-4::1/24*10-Input*+1/24*2
;~ :R:/242-2-5::1/24*10-Input*+1/24*3
;~ :R:/242-2-6::1/24*10-Input*+1/24*4
;~ :R:/242-2-7::1/24*10-Input*+1/24*5
;~ :R:/242-2-8::1/24*10-Input*+1/24*6
;~ :R:/242-2-9::1/24*10-Input*+1/24*7
;~ :R:/242-2-10::1/24*10-Input*+1/24*8
;~ :R:/242-2-11::1/24*10-Input*+1/24*9
;~ :R:/242-2-12::1/24*10-Input*+1/24*10
;~ :R:/242+3+12::1/24*15+Input*+1/24*9   ;-12  0 +12    +3 Start
;~ :R:/242+3+11::1/24*15+Input*+1/24*8
;~ :R:/242+3+10::1/24*15+Input*+1/24*7
;~ :R:/242+3+9::1/24*15+Input*+1/24*6
;~ :R:/242+3+8::1/24*15+Input*+1/24*5
;~ :R:/242+3+7::1/24*15+Input*+1/24*4
;~ :R:/242+3+6::1/24*15+Input*+1/24*3
;~ :R:/242+3+5::1/24*15+Input*+1/24*2
;~ :R:/242+3+4::1/24*15+Input*+1/24*1
;~ :R:/242+3+2::1/24*15-Input*+1/24*1
;~ :R:/242+3+1::1/24*15-Input*+1/24*2
;~ :R:/242+30::1/24*15-Input*+1/24*3
;~ :R:/242+3-1::1/24*15-Input*+1/24*4
;~ :R:/242+3-2::1/24*15-Input*+1/24*5
;~ :R:/242+3-3::1/24*15-Input*+1/24*6
;~ :R:/242+3-4::1/24*15-Input*+1/24*7
;~ :R:/242+3-5::1/24*15-Input*+1/24*8
;~ :R:/242+3-6::1/24*15-Input*+1/24*9
;~ :R:/242+3-7::1/24*15-Input*+1/24*10
;~ :R:/242+3-8::1/24*15-Input*+1/24*11
;~ :R:/242+3-9::1/24*15-Input*+1/24*12
;~ :R:/242+3-10::1/24*15-Input*+1/24*13
;~ :R:/242+3-11::1/24*15-Input*+1/24*14
;~ :R:/242+3-12::1/24*15-Input*+1/24*15
;~ :R:/242-3+12::1/24*9+Input*+1/24*15 ;-12  0 +12    -3 Start
;~ :R:/242-3+11::1/24*9+Input*+1/24*14
;~ :R:/242-3+10::1/24*9+Input*+1/24*13
;~ :R:/242-3+9::1/24*9+Input*+1/24*12
;~ :R:/242-3+8::1/24*9+Input*+1/24*11
;~ :R:/242-3+7::1/24*9+Input*+1/24*10
;~ :R:/242-3+6::1/24*9+Input*+1/24*9
;~ :R:/242-3+5::1/24*9+Input*+1/24*8
;~ :R:/242-3+4::1/24*9+Input*+1/24*7
;~ :R:/242-3+3::1/24*9+Input*+1/24*6
;~ :R:/242-3+2::1/24*9+Input*+1/24*5
;~ :R:/242-3+1::1/24*9+Input*+1/24*4
;~ :R:/242-30::1/24*9+Input*+1/24*3
;~ :R:/242-3-1::1/24*9+Input*+1/24*2
;~ :R:/242-3-2::1/24*9+Input*+1/24*1
;~ :R:/242-3-4::1/24*9-Input*+1/24*1
;~ :R:/242-3-5::1/24*9-Input*+1/24*2
;~ :R:/242-3-6::1/24*9-Input*+1/24*3
;~ :R:/242-3-7::1/24*9-Input*+1/24*4
;~ :R:/242-3-8::1/24*9-Input*+1/24*5
;~ :R:/242-3-9::1/24*9-Input*+1/24*6
;~ :R:/242-3-10::1/24*9-Input*+1/24*7
;~ :R:/242-3-11::1/24*9-Input*+1/24*8
;~ :R:/242-3-12::1/24*9-Input*+1/24*9
;~ :R:/242+4+12::1/24*16+Input*+1/24*8  ;-12  0 +12   +4 Start
;~ :R:/242+4+11::1/24*16+Input*+1/24*7
;~ :R:/242+4+10::1/24*16+Input*+1/24*6
;~ :R:/242+4+9::1/24*16+Input*+1/24*5
;~ :R:/242+4+8::1/24*16+Input*+1/24*4
;~ :R:/242+4+7::1/24*16+Input*+1/24*3
;~ :R:/242+4+6::1/24*16+Input*+1/24*2
;~ :R:/242+4+5::1/24*16+Input*+1/24*1
;~ :R:/242+4+3::1/24*16-Input*+1/24*1
;~ :R:/242+4+2::1/24*16-Input*+1/24*2
;~ :R:/242+4+1::1/24*16-Input*+1/24*3
;~ :R:/242+40::1/24*16-Input*+1/24*4
;~ :R:/242+4-1::1/24*16-Input*+1/24*5
;~ :R:/242+4-2::1/24*16-Input*+1/24*6
;~ :R:/242+4-3::1/24*16-Input*+1/24*7
;~ :R:/242+4-4::1/24*16-Input*+1/24*8
;~ :R:/242+4-5::1/24*16-Input*+1/24*9
;~ :R:/242+4-6::1/24*16-Input*+1/24*10
;~ :R:/242+4-7::1/24*16-Input*+1/24*11
;~ :R:/242+4-8::1/24*16-Input*+1/24*12
;~ :R:/242+4-9::1/24*16-Input*+1/24*13
;~ :R:/242+4-10::1/24*16-Input*+1/24*14
;~ :R:/242+4-11::1/24*16-Input*+1/24*15
;~ :R:/242+4-12::1/24*16-Input*+1/24*16
;~ :R:/242-4+12::1/24*8+Input*+1/24*16  ;-12  0 +12    -4 Start
;~ :R:/242-4+11::1/24*8+Input*+1/24*15
;~ :R:/242-4+10::1/24*8+Input*+1/24*14
;~ :R:/242-4+9::1/24*8+Input*+1/24*13
;~ :R:/242-4+8::1/24*8+Input*+1/24*12
;~ :R:/242-4+7::1/24*8+Input*+1/24*11
;~ :R:/242-4+6::1/24*8+Input*+1/24*10
;~ :R:/242-4+5::1/24*8+Input*+1/24*9
;~ :R:/242-4+4::1/24*8+Input*+1/24*8
;~ :R:/242-4+3::1/24*8+Input*+1/24*7
;~ :R:/242-4+2::1/24*8+Input*+1/24*6
;~ :R:/242-4+1::1/24*8+Input*+1/24*5
;~ :R:/242-40::1/24*8+Input*+1/24*4
;~ :R:/242-4-1::1/24*8+Input*+1/24*3
;~ :R:/242-4-2::1/24*8+Input*+1/24*2
;~ :R:/242-4-3::1/24*8+Input*+1/24*1
;~ :R:/242-4-5::1/24*8-Input*+1/24*1
;~ :R:/242-4-6::1/24*8-Input*+1/24*2
;~ :R:/242-4-7::1/24*8-Input*+1/24*3
;~ :R:/242-4-8::1/24*8-Input*+1/24*4
;~ :R:/242-4-9::1/24*8-Input*+1/24*5
;~ :R:/242-4-10::1/24*8-Input*+1/24*6
;~ :R:/242-4-11::1/24*8-Input*+1/24*7
;~ :R:/242-4-12::1/24*8-Input*+1/24*8
;~ :R:/242+5+12::1/24*17+Input*+1/24*7   ;-12  0 +12    +5 Start
;~ :R:/242+5+11::1/24*17+Input*+1/24*6
;~ :R:/242+5+10::1/24*17+Input*+1/24*5
;~ :R:/242+5+9::1/24*17+Input*+1/24*4
;~ :R:/242+5+8::1/24*17+Input*+1/24*3
;~ :R:/242+5+7::1/24*17+Input*+1/24*2
;~ :R:/242+5+6::1/24*17+Input*+1/24*1
;~ :R:/242+5+4::1/24*17-Input*+1/24*1
;~ :R:/242+5+3::1/24*17-Input*+1/24*2
;~ :R:/242+5+2::1/24*17-Input*+1/24*3
;~ :R:/242+5+1::1/24*17-Input*+1/24*4
;~ :R:/242+50::1/24*17-Input*+1/24*5
;~ :R:/242+5-1::1/24*17-Input*+1/24*6
;~ :R:/242+5-2::1/24*17-Input*+1/24*7
;~ :R:/242+5-3::1/24*17-Input*+1/24*8
;~ :R:/242+5-4::1/24*17-Input*+1/24*9
;~ :R:/242+5-5::1/24*17-Input*+1/24*10
;~ :R:/242+5-6::1/24*17-Input*+1/24*11
;~ :R:/242+5-7::1/24*17-Input*+1/24*12
;~ :R:/242+5-8::1/24*17-Input*+1/24*13
;~ :R:/242+5-9::1/24*17-Input*+1/24*14
;~ :R:/242+5-10::1/24*17-Input*+1/24*15
;~ :R:/242+5-11::1/24*17-Input*+1/24*16
;~ :R:/242+5-12::1/24*17-Input*+1/24*17
;~ :R:/242-5+12::1/24*7+Input*+1/24*17  ;-12  0 +12   -5 Start
;~ :R:/242-5+11::1/24*7+Input*+1/24*16
;~ :R:/242-5+10::1/24*7+Input*+1/24*15
;~ :R:/242-5+9::1/24*7+Input*+1/24*14
;~ :R:/242-5+8::1/24*7+Input*+1/24*13
;~ :R:/242-5+7::1/24*7+Input*+1/24*12
;~ :R:/242-5+6::1/24*7+Input*+1/24*11
;~ :R:/242-5+5::1/24*7+Input*+1/24*10
;~ :R:/242-5+4::1/24*7+Input*+1/24*9
;~ :R:/242-5+3::1/24*7+Input*+1/24*8
;~ :R:/242-5+2::1/24*7+Input*+1/24*7
;~ :R:/242-5+1::1/24*7+Input*+1/24*6
;~ :R:/242-50::1/24*7+Input*+1/24*5
;~ :R:/242-5-1::1/24*7+Input*+1/24*4
;~ :R:/242-5-2::1/24*7+Input*+1/24*3
;~ :R:/242-5-3::1/24*7+Input*+1/24*2
;~ :R:/242-5-4::1/24*7+Input*+1/24*1
;~ :R:/242-5-6::1/24*7-Input*+1/24*1
;~ :R:/242-5-7::1/24*7-Input*+1/24*2
;~ :R:/242-5-8::1/24*7-Input*+1/24*3
;~ :R:/242-5-9::1/24*7-Input*+1/24*4
;~ :R:/242-5-10::1/24*7-Input*+1/24*5
;~ :R:/242-5-11::1/24*7-Input*+1/24*6
;~ :R:/242-5-12::1/24*7-Input*+1/24*7
;~ :R:/242+6+12::1/24*18+Input*+1/24*6  ;-12  0 +12    +6 Start
;~ :R:/242+6+11::1/24*18+Input*+1/24*5
;~ :R:/242+6+10::1/24*18+Input*+1/24*4
;~ :R:/242+6+9::1/24*18+Input*+1/24*3
;~ :R:/242+6+8::1/24*18+Input*+1/24*2
;~ :R:/242+6+7::1/24*18+Input*+1/24*1
;~ :R:/242+6+5::1/24*18-Input*+1/24*1
;~ :R:/242+6+4::1/24*18-Input*+1/24*2
;~ :R:/242+6+3::1/24*18-Input*+1/24*3
;~ :R:/242+6+2::1/24*18-Input*+1/24*4
;~ :R:/242+6+1::1/24*18-Input*+1/24*5
;~ :R:/242+60::1/24*18-Input*+1/24*6
;~ :R:/242+6-1::1/24*18-Input*+1/24*7
;~ :R:/242+6-2::1/24*18-Input*+1/24*8
;~ :R:/242+6-3::1/24*18-Input*+1/24*9
;~ :R:/242+6-4::1/24*18-Input*+1/24*10
;~ :R:/242+6-5::1/24*18-Input*+1/24*11
;~ :R:/242+6-6::1/24*18-Input*+1/24*12
;~ :R:/242+6-7::1/24*18-Input*+1/24*13
;~ :R:/242+6-8::1/24*18-Input*+1/24*14
;~ :R:/242+6-9::1/24*18-Input*+1/24*15
;~ :R:/242+6-10::1/24*18-Input*+1/24*16
;~ :R:/242+6-11::1/24*18-Input*+1/24*17
;~ :R:/242+6-12::1/24*18-Input*+1/24*18
;~ :R:/242-6+12::1/24*6+Input*+1/24*18   ;-12  0 +12   -6 Start
;~ :R:/242-6+11::1/24*6+Input*+1/24*17
;~ :R:/242-6+10::1/24*6+Input*+1/24*16
;~ :R:/242-6+9::1/24*6+Input*+1/24*15
;~ :R:/242-6+8::1/24*6+Input*+1/24*14
;~ :R:/242-6+7::1/24*6+Input*+1/24*13
;~ :R:/242-6+6::1/24*6+Input*+1/24*12
;~ :R:/242-6+5::1/24*6+Input*+1/24*11
;~ :R:/242-6+4::1/24*6+Input*+1/24*10
;~ :R:/242-6+3::1/24*6+Input*+1/24*9
;~ :R:/242-6+2::1/24*6+Input*+1/24*8
;~ :R:/242-6+1::1/24*6+Input*+1/24*7
;~ :R:/242-60::1/24*6+Input*+1/24*6
;~ :R:/242-6-1::1/24*6+Input*+1/24*5
;~ :R:/242-6-2::1/24*6+Input*+1/24*4
;~ :R:/242-6-3::1/24*6+Input*+1/24*3
;~ :R:/242-6-4::1/24*6+Input*+1/24*2
;~ :R:/242-6-5::1/24*6+Input*+1/24*1
;~ :R:/242-6-7::1/24*6-Input*+1/24*1
;~ :R:/242-6-8::1/24*6-Input*+1/24*2
;~ :R:/242-6-9::1/24*6-Input*+1/24*3
;~ :R:/242-6-10::1/24*6-Input*+1/24*4
;~ :R:/242-6-11::1/24*6-Input*+1/24*5
;~ :R:/242-6-12::1/24*6-Input*+1/24*6
;~ :R:/242+7+12::1/24*19+Input*+1/24*5  ;-12  0 +12    +7 Start
;~ :R:/242+7+11::1/24*19+Input*+1/24*4
;~ :R:/242+7+10::1/24*19+Input*+1/24*3
;~ :R:/242+7+9::1/24*19+Input*+1/24*2
;~ :R:/242+7+8::1/24*19+Input*+1/24*1
;~ :R:/242+7+6::1/24*19-Input*+1/24*1
;~ :R:/242+7+5::1/24*19-Input*+1/24*2
;~ :R:/242+7+4::1/24*19-Input*+1/24*3
;~ :R:/242+7+3::1/24*19-Input*+1/24*4
;~ :R:/242+7+2::1/24*19-Input*+1/24*5
;~ :R:/242+7+1::1/24*19-Input*+1/24*6
;~ :R:/242+70::1/24*19-Input*+1/24*7
;~ :R:/242+7-1::1/24*19-Input*+1/24*8
;~ :R:/242+7-2::1/24*19-Input*+1/24*9
;~ :R:/242+7-3::1/24*19-Input*+1/24*10
;~ :R:/242+7-4::1/24*19-Input*+1/24*11
;~ :R:/242+7-5::1/24*19-Input*+1/24*12
;~ :R:/242+7-6::1/24*19-Input*+1/24*13
;~ :R:/242+7-7::1/24*19-Input*+1/24*14
;~ :R:/242+7-8::1/24*19-Input*+1/24*15
;~ :R:/242+7-9::1/24*19-Input*+1/24*16
;~ :R:/242+7-10::1/24*19-Input*+1/24*17
;~ :R:/242+7-11::1/24*19-Input*+1/24*18
;~ :R:/242+7-12::1/24*19-Input*+1/24*19
;~ :R:/242-7+12::1/24*5+Input*+1/24*19  ;-12  0 +12    -7 Start
;~ :R:/242-7+11::1/24*5+Input*+1/24*18
;~ :R:/242-7+10::1/24*5+Input*+1/24*17
;~ :R:/242-7+9::1/24*5+Input*+1/24*16
;~ :R:/242-7+8::1/24*5+Input*+1/24*15
;~ :R:/242-7+7::1/24*5+Input*+1/24*14
;~ :R:/242-7+6::1/24*5+Input*+1/24*13
;~ :R:/242-7+5::1/24*5+Input*+1/24*12
;~ :R:/242-7+4::1/24*5+Input*+1/24*11
;~ :R:/242-7+3::1/24*5+Input*+1/24*10
;~ :R:/242-7+2::1/24*5+Input*+1/24*9
;~ :R:/242-7+1::1/24*5+Input*+1/24*8
;~ :R:/242-70::1/24*5+Input*+1/24*7
;~ :R:/242-7-1::1/24*5+Input*+1/24*6
;~ :R:/242-7-2::1/24*5+Input*+1/24*5
;~ :R:/242-7-3::1/24*5+Input*+1/24*4
;~ :R:/242-7-4::1/24*5+Input*+1/24*3
;~ :R:/242-7-5::1/24*5+Input*+1/24*2
;~ :R:/242-7-6::1/24*5+Input*+1/24*1
;~ :R:/242-7-8::1/24*5-Input*+1/24*1
;~ :R:/242-7-9::1/24*5-Input*+1/24*2
;~ :R:/242-7-10::1/24*5-Input*+1/24*3
;~ :R:/242-7-11::1/24*5-Input*+1/24*4
;~ :R:/242-7-12::1/24*5-Input*+1/24*5
;~ :R:/242+8+12::1/24*20+Input*+1/24*4   ;-12  0 +12   +8 Start
;~ :R:/242+8+11::1/24*20+Input*+1/24*3
;~ :R:/242+8+10::1/24*20+Input*+1/24*2
;~ :R:/242+8+9::1/24*20+Input*+1/24*1
;~ :R:/242+8+7::1/24*20-Input*+1/24*1
;~ :R:/242+8+6::1/24*20-Input*+1/24*2
;~ :R:/242+8+5::1/24*20-Input*+1/24*3
;~ :R:/242+8+4::1/24*20-Input*+1/24*4
;~ :R:/242+8+3::1/24*20-Input*+1/24*5
;~ :R:/242+8+2::1/24*20-Input*+1/24*6
;~ :R:/242+8+1::1/24*20-Input*+1/24*7
;~ :R:/242+80::1/24*20-Input*+1/24*8
;~ :R:/242+8-1::1/24*20-Input*+1/24*9
;~ :R:/242+8-2::1/24*20-Input*+1/24*10
;~ :R:/242+8-3::1/24*20-Input*+1/24*11
;~ :R:/242+8-4::1/24*20-Input*+1/24*12
;~ :R:/242+8-5::1/24*20-Input*+1/24*13
;~ :R:/242+8-6::1/24*20-Input*+1/24*14
;~ :R:/242+8-7::1/24*20-Input*+1/24*15
;~ :R:/242+8-8::1/24*20-Input*+1/24*16
;~ :R:/242+8-9::1/24*20-Input*+1/24*17
;~ :R:/242+8-10::1/24*20-Input*+1/24*18
;~ :R:/242+8-11::1/24*20-Input*+1/24*19
;~ :R:/242+8-12::1/24*20-Input*+1/24*20
;~ :R:/242-8+12::1/24*4+Input*+1/24*20 ;-12  0 +12   -8 Start
;~ :R:/242-8+11::1/24*4+Input*+1/24*19
;~ :R:/242-8+10::1/24*4+Input*+1/24*18
;~ :R:/242-8+9::1/24*4+Input*+1/24*17
;~ :R:/242-8+8::1/24*4+Input*+1/24*16
;~ :R:/242-8+7::1/24*4+Input*+1/24*15
;~ :R:/242-8+6::1/24*4+Input*+1/24*14
;~ :R:/242-8+5::1/24*4+Input*+1/24*13
;~ :R:/242-8+4::1/24*4+Input*+1/24*12
;~ :R:/242-8+3::1/24*4+Input*+1/24*11
;~ :R:/242-8+2::1/24*4+Input*+1/24*10
;~ :R:/242-8+1::1/24*4+Input*+1/24*9
;~ :R:/242-80::1/24*4+Input*+1/24*8
;~ :R:/242-8-1::1/24*4+Input*+1/24*7
;~ :R:/242-8-2::1/24*4+Input*+1/24*6
;~ :R:/242-8-3::1/24*4+Input*+1/24*5
;~ :R:/242-8-4::1/24*4+Input*+1/24*4
;~ :R:/242-8-5::1/24*4+Input*+1/24*3
;~ :R:/242-8-6::1/24*4+Input*+1/24*2
;~ :R:/242-8-7::1/24*4+Input*+1/24*1
;~ :R:/242-8-9::1/24*4-Input*+1/24*1
;~ :R:/242-8-10::1/24*4-Input*+1/24*2
;~ :R:/242-8-11::1/24*4-Input*+1/24*3
;~ :R:/242-8-12::1/24*4-Input*+1/24*4
;~ :R:/242+9+12::1/24*21+Input*+1/24*3  ;-12  0 +12    +9 Start
;~ :R:/242+9+11::1/24*21+Input*+1/24*2
;~ :R:/242+9+10::1/24*21+Input*+1/24*1
;~ :R:/242+9+8::1/24*21-Input*+1/24*1
;~ :R:/242+9+7::1/24*21-Input*+1/24*2
;~ :R:/242+9+6::1/24*21-Input*+1/24*3
;~ :R:/242+9+5::1/24*21-Input*+1/24*4
;~ :R:/242+9+4::1/24*21-Input*+1/24*5
;~ :R:/242+9+3::1/24*21-Input*+1/24*6
;~ :R:/242+9+2::1/24*21-Input*+1/24*7
;~ :R:/242+9+1::1/24*21-Input*+1/24*8
;~ :R:/242+90::1/24*21-Input*+1/24*9
;~ :R:/242+9-1::1/24*21-Input*+1/24*10
;~ :R:/242+9-2::1/24*21-Input*+1/24*11
;~ :R:/242+9-3::1/24*21-Input*+1/24*12
;~ :R:/242+9-4::1/24*21-Input*+1/24*13
;~ :R:/242+9-5::1/24*21-Input*+1/24*14
;~ :R:/242+9-6::1/24*21-Input*+1/24*15
;~ :R:/242+9-7::1/24*21-Input*+1/24*16
;~ :R:/242+9-8::1/24*21-Input*+1/24*17
;~ :R:/242+9-9::1/24*21-Input*+1/24*18
;~ :R:/242+9-10::1/24*21-Input*+1/24*19
;~ :R:/242+9-11::1/24*21-Input*+1/24*20
;~ :R:/242+9-12::1/24*21-Input*+1/24*21
;~ :R:/242-9+12::1/24*3+Input*+1/24*21 ;-12  0 +12    -9 Start
;~ :R:/242-9+11::1/24*3+Input*+1/24*20
;~ :R:/242-9+10::1/24*3+Input*+1/24*19
;~ :R:/242-9+9::1/24*3+Input*+1/24*18
;~ :R:/242-9+8::1/24*3+Input*+1/24*17
;~ :R:/242-9+7::1/24*3+Input*+1/24*16
;~ :R:/242-9+6::1/24*3+Input*+1/24*15
;~ :R:/242-9+5::1/24*3+Input*+1/24*14
;~ :R:/242-9+4::1/24*3+Input*+1/24*13
;~ :R:/242-9+3::1/24*3+Input*+1/24*12
;~ :R:/242-9+2::1/24*3+Input*+1/24*11
;~ :R:/242-9+1::1/24*3+Input*+1/24*10
;~ :R:/242-90::1/24*3+Input*+1/24*9
;~ :R:/242-9-1::1/24*3+Input*+1/24*8
;~ :R:/242-9-2::1/24*3+Input*+1/24*7
;~ :R:/242-9-3::1/24*3+Input*+1/24*6
;~ :R:/242-9-4::1/24*3+Input*+1/24*5
;~ :R:/242-9-5::1/24*3+Input*+1/24*4
;~ :R:/242-9-6::1/24*3+Input*+1/24*3
;~ :R:/242-9-7::1/24*3+Input*+1/24*2
;~ :R:/242-9-8::1/24*3+Input*+1/24*1
;~ :R:/242-9-10::1/24*3-Input*+1/24*1
;~ :R:/242-9-11::1/24*3-Input*+1/24*2
;~ :R:/242-9-12::1/24*3-Input*+1/24*3
;~ :R:/242+10+12::1/24*22+Input*+1/24*2   ;-12  0 +12   +10 Start
;~ :R:/242+10+11::1/24*22+Input*+1/24*1
;~ :R:/242+10+9::1/24*22-Input*+1/24*1
;~ :R:/242+10+8::1/24*22-Input*+1/24*2
;~ :R:/242+10+7::1/24*22-Input*+1/24*3
;~ :R:/242+10+6::1/24*22-Input*+1/24*4
;~ :R:/242+10+5::1/24*22-Input*+1/24*5
;~ :R:/242+10+4::1/24*22-Input*+1/24*6
;~ :R:/242+10+3::1/24*22-Input*+1/24*7
;~ :R:/242+10+2::1/24*22-Input*+1/24*8
;~ :R:/242+10+1::1/24*22-Input*+1/24*9
;~ :R:/242+100::1/24*22-Input*+1/24*10
;~ :R:/242+10-1::1/24*22-Input*+1/24*11
;~ :R:/242+10-2::1/24*22-Input*+1/24*12
;~ :R:/242+10-3::1/24*22-Input*+1/24*13
;~ :R:/242+10-4::1/24*22-Input*+1/24*14
;~ :R:/242+10-5::1/24*22-Input*+1/24*15
;~ :R:/242+10-6::1/24*22-Input*+1/24*16
;~ :R:/242+10-7::1/24*22-Input*+1/24*17
;~ :R:/242+10-8::1/24*22-Input*+1/24*18
;~ :R:/242+10-9::1/24*22-Input*+1/24*19
;~ :R:/242+10-10::1/24*22-Input*+1/24*20
;~ :R:/242+10-11::1/24*22-Input*+1/24*21
;~ :R:/242+10-12::1/24*22-Input*+1/24*22
;~ :R:/242-10+12::1/24*2+Input*+1/24*22  ;-12  0 +12     -10 Start
;~ :R:/242-10+11::1/24*2+Input*+1/24*21
;~ :R:/242-10+10::1/24*2+Input*+1/24*20
;~ :R:/242-10+9::1/24*2+Input*+1/24*19
;~ :R:/242-10+8::1/24*2+Input*+1/24*18
;~ :R:/242-10+7::1/24*2+Input*+1/24*17
;~ :R:/242-10+6::1/24*2+Input*+1/24*16
;~ :R:/242-10+5::1/24*2+Input*+1/24*15
;~ :R:/242-10+4::1/24*2+Input*+1/24*14
;~ :R:/242-10+3::1/24*2+Input*+1/24*13
;~ :R:/242-10+2::1/24*2+Input*+1/24*12
;~ :R:/242-10+1::1/24*2+Input*+1/24*11
;~ :R:/242-100::1/24*2+Input*+1/24*10
;~ :R:/242-10-1::1/24*2+Input*+1/24*9
;~ :R:/242-10-2::1/24*2+Input*+1/24*8
;~ :R:/242-10-3::1/24*2+Input*+1/24*7
;~ :R:/242-10-4::1/24*2+Input*+1/24*6
;~ :R:/242-10-5::1/24*2+Input*+1/24*5
;~ :R:/242-10-6::1/24*2+Input*+1/24*4
;~ :R:/242-10-7::1/24*2+Input*+1/24*3
;~ :R:/242-10-8::1/24*2+Input*+1/24*2
;~ :R:/242-10-9::1/24*2+Input*+1/24*1
;~ :R:/242-10-11::1/24*2-Input*+1/24*1
;~ :R:/242-10-12::1/24*2-Input*+1/24*2
;~ :R:/242+11+12::1/24*23+Input*+1/24*1   ;-12  0 +12     +11 Start
;~ :R:/242+11+10::1/24*23-Input*+1/24*1
;~ :R:/242+11+9::1/24*23-Input*+1/24*2 
;~ :R:/242+11+8::1/24*23-Input*+1/24*3
;~ :R:/242+11+7::1/24*23-Input*+1/24*4
;~ :R:/242+11+6::1/24*23-Input*+1/24*5
;~ :R:/242+11+5::1/24*23-Input*+1/24*6
;~ :R:/242+11+4::1/24*23-Input*+1/24*7
;~ :R:/242+11+3::1/24*23-Input*+1/24*8
;~ :R:/242+11+2::1/24*23-Input*+1/24*9
;~ :R:/242+11+1::1/24*23-Input*+1/24*10
;~ :R:/242+110::1/24*23-Input*+1/24*11
;~ :R:/242+11-1::1/24*23-Input*+1/24*12
;~ :R:/242+11-2::1/24*23-Input*+1/24*13
;~ :R:/242+11-3::1/24*23-Input*+1/24*14
;~ :R:/242+11-4::1/24*23-Input*+1/24*15
;~ :R:/242+11-5::1/24*23-Input*+1/24*16
;~ :R:/242+11-6::1/24*23-Input*+1/24*17
;~ :R:/242+11-7::1/24*23-Input*+1/24*18
;~ :R:/242+11-8::1/24*23-Input*+1/24*19
;~ :R:/242+11-9::1/24*23-Input*+1/24*20
;~ :R:/242+11-10::1/24*23-Input*+1/24*21
;~ :R:/242+11-11::1/24*23-Input*+1/24*22
;~ :R:/242+11-12::1/24*23-Input*+1/24*23
;~ :R:/242-11+12::1/24*1+Input*+1/24*23   ;-12  0 +12    -11 Start
;~ :R:/242-11+11::1/24*1+Input*+1/24*22
;~ :R:/242-11+10::1/24*1+Input*+1/24*21
;~ :R:/242-11+9::1/24*1+Input*+1/24*20
;~ :R:/242-11+8::1/24*1+Input*+1/24*19
;~ :R:/242-11+7::1/24*1+Input*+1/24*18
;~ :R:/242-11+6::1/24*1+Input*+1/24*17
;~ :R:/242-11+5::1/24*1+Input*+1/24*16
;~ :R:/242-11+4::1/24*1+Input*+1/24*15
;~ :R:/242-11+3::1/24*1+Input*+1/24*14
;~ :R:/242-11+2::1/24*1+Input*+1/24*13
;~ :R:/242-11+1::1/24*1+Input*+1/24*12
;~ :R:/242-110::1/24*1+Input*+1/24*11
;~ :R:/242-11-1::1/24*1+Input*+1/24*10
;~ :R:/242-11-2::1/24*1+Input*+1/24*9
;~ :R:/242-11-3::1/24*1+Input*+1/24*8
;~ :R:/242-11-4::1/24*1+Input*+1/24*7
;~ :R:/242-11-5::1/24*1+Input*+1/24*6
;~ :R:/242-11-6::1/24*1+Input*+1/24*5
;~ :R:/242-11-7::1/24*1+Input*+1/24*4
;~ :R:/242-11-8::1/24*1+Input*+1/24*3
;~ :R:/242-11-9::1/24*1+Input*+1/24*2
;~ :R:/242-11-10::1/24*1+Input*+1/24*1
;~ :R:/242-11-12::1/24*1-Input*+1/24*1
;~ :R:/242+12+11::1-Input*+1/24*1 ;-12  0 +12     +12 Start
;~ :R:/242+12+10::1-Input*+1/24*2
;~ :R:/242+12+9::1-Input*+1/24*3
;~ :R:/242+12+8::1-Input*+1/24*4
;~ :R:/242+12+7::1-Input*+1/24*5
;~ :R:/242+12+6::1-Input*+1/24*6
;~ :R:/242+12+5::1-Input*+1/24*7
;~ :R:/242+12+4::1-Input*+1/24*8
;~ :R:/242+12+3::1-Input*+1/24*9
;~ :R:/242+12+2::1-Input*+1/24*10
;~ :R:/242+12+1::1-Input*+1/24*11
;~ :R:/242+120::1-Input*+1/24*12
;~ :R:/242+12-1::1-Input*+1/24*13
;~ :R:/242+12-2::1-Input*+1/24*14
;~ :R:/242+12-3::1-Input*+1/24*15
;~ :R:/242+12-4::1-Input*+1/24*16
;~ :R:/242+12-5::1-Input*+1/24*17
;~ :R:/242+12-6::1-Input*+1/24*18
;~ :R:/242+12-7::1-Input*+1/24*19
;~ :R:/242+12-8::1-Input*+1/24*20
;~ :R:/242+12-9::1-Input*+1/24*21
;~ :R:/242+12-10::1-Input*+1/24*22
;~ :R:/242+12-11::1-Input*+1/24*23
;~ :R:/242+12-12::1-Input*+1/24*24
;~ :R:/242-12+12::Input  ;-12  0 +12     -12 Start
;~ :R:/242-12+11::Input*+1/24*23
;~ :R:/242-12+10::Input*+1/24*22
;~ :R:/242-12+9::Input*+1/24*21
;~ :R:/242-12+8::Input*+1/24*20
;~ :R:/242-12+7::Input*+1/24*19
;~ :R:/242-12+6::Input*+1/24*18
;~ :R:/242-12+5::Input*+1/24*17
;~ :R:/242-12+4::Input*+1/24*16
;~ :R:/242-12+3::Input*+1/24*15
;~ :R:/242-12+2::Input*+1/24*14
;~ :R:/242-12+1::Input*+1/24*13
;~ :R:/242-120::Input*+1/24*12
;~ :R:/242-12-1::Input*+1/24*11
;~ :R:/242-12-2::Input*+1/24*10
;~ :R:/242-12-3::Input*+1/24*9
;~ :R:/242-12-4::Input*+1/24*8
;~ :R:/242-12-5::Input*+1/24*7
;~ :R:/242-12-6::Input*+1/24*6
;~ :R:/242-12-7::Input*+1/24*5
;~ :R:/242-12-8::Input*+1/24*4
;~ :R:/242-12-9::Input*+1/24*3
;~ :R:/242-12-10::Input*+1/24*2
;~ :R:/242-12-11::Input*+1/24*1
;~ return
hi your input is greatly appreciated the example is very help full and with time i could convert just about all i have but studying this example and looking at my lists of code i realized the only reason i have to do it is ram usage and that is not something i lack i need to make the list anyway for testing purposes.

this tool has now over 2.8 million formulas, i made it to speed up making music and as it stands i spend more time now on autohotkey than my music :) i like to get out of the autohotkey rabbit hole and get back to it.

thank you

Return to “Ask for Help (v1)”

Who is online

Users browsing this forum: Google [Bot], TAC109 and 138 guests