; ----------------------------------------------------------------------------------------------------------------------
; GetWindowInfo(HWND)
; Function:
;     Retrieves information about the specified window.
; Parameter:
;     HWND - A handle to the window whose information is to be retrieved.
; Return value:
;     If the function succeeds, the return value is an object containing the information.
;     If the function fails, the return value is zero.
;     http://msdn.microsoft.com/en-us/library/ms632610(v=vs.85).aspx
; ----------------------------------------------------------------------------------------------------------------------
GetWindowInfo(HWND) {
   Static SizeOfWINDOWINFO := 60
   ; Struct WINDOWINFO
   VarSetCapacity(WINDOWINFO, SizeOfWINDOWINFO, 0)
   If !DllCall("User32.dll\GetWindowInfo", "Ptr", HWND, "Ptr", &WINDOWINFO, "UInt")
      Return False
   ; Object WI
   WI := {}
   WI.WindowX := NumGet(WINDOWINFO,  4, "Int")                 ; X coordinate of the window
   WI.WindowY := NumGet(WINDOWINFO,  8, "Int")                 ; Y coordinate of the window
   WI.WindowW := NumGet(WINDOWINFO, 12, "Int") - WI.WindowX    ; Width of the window
   WI.WindowH := NumGet(WINDOWINFO, 16, "Int") - WI.WindowY    ; Height of the window
   WI.ClientX := NumGet(WINDOWINFO, 20, "Int")                 ; X coordinate of the client area
   WI.ClientY := NumGet(WINDOWINFO, 24, "Int")                 ; Y coordinate of the client area
   WI.ClientW := NumGet(WINDOWINFO, 28, "Int") - WI.ClientX    ; Width of the client area
   WI.ClientH := NumGet(WINDOWINFO, 32, "Int") - WI.ClientY    ; Height of the client area
   WI.Style   := NumGet(WINDOWINFO, 36, "UInt")                ; The window styles.
   WI.ExStyle := NumGet(WINDOWINFO, 40, "UInt")                ; The extended window styles.
   WI.State   := NumGet(WINDOWINFO, 44, "UInt")                ; The window status (1 = active).
   WI.BorderW := NumGet(WINDOWINFO, 48, "UInt")                ; The width of the window border, in pixels.
   WI.BorderH := NumGet(WINDOWINFO, 52, "UInt")                ; The height of the window border, in pixels.
   WI.Type    := NumGet(WINDOWINFO, 56, "UShort")              ; The window class atom.
   WI.Version := NumGet(WINDOWINFO, 58, "UShort")              ; The Windows version of the application.
   Return WI
SetTitleMatchMode 2
DetectHiddenText, on
Process, priority, AutoHotkey.exe, high
Process, priority, tn525032.exe, high

SetBatchLines, 20ms
SetKeyDelay, 10ms
SetMouseDelay, 10ms
SetWinDelay, 10ms
SetControlDelay, 10ms
SetWorkingDir , %A_ScriptDir%

#include DDE.ahk
#include RumbaDDE.ahk
#include Table.ahk
#singleinstance force

Apptitle = AS/400 Pull

secvarorg = 2  ;Number of seconds to wait till autoconnecting to AS400
Gui, Color, 0xbbd5f4
Gui, Margin, X
Gui, Font, norm
Gui, Font, s7
Gui, Add, Button, gddecount W130, Please Wait...
Gui, Add, Button, gRunIAFEP W130, Please Wait...
Gui, Add, Button, gSetup W130, Run Rumba Setup
Gui, Add, Button, gBUTTONSTOP W130, STOP
;Gui, Add, Button, gddecount W130, count

Gui, Add, GroupBox, YM x+20 section W150 H130, AS/400 Session Select
Gui, Add, Radio, xs+10  ys+20 vRumbaA  gButtonConnect checked	, Session A
Gui, Add, Radio, xs+10  ys+40 vRumbaB  gButtonConnect 			, Session B
Gui, Add, Radio, xs+10  ys+60 vRumbaC  gButtonConnect 			, Session C
Gui, Add, Radio, xs+10  ys+80 vRumbaD  gButtonConnect 			, Session D
Gui, Add, Radio, xs+10  ys+100 vRumbaT gButtonConnect 			, Session Test

Gui, Add, Text, Ym x+70 W100,Auto-Connecting
Gui, Add, Text,  W100,( In %secvarorg% Seconds )
Gui, Add, Text,  W100,
Gui, Add, Text,  W100,
Gui, Add, Text,  W100,

Gui, Show, , %Apptitle%

loop, %secvarorg%
seccountdown := "( In " secvarorg " Seconds )"
GuiControl,, Static2 , %seccountdown%

If ( RumbaB > 0 || RumbaC > 0 || RumbaD > 0 || RumbaT > 0)

goto buttonConnect


Gui, Submit, nohide
Start := A_TickCount
SetTimer, ActivateWinUM, 100

if RumbaA = 1
Rumbawsf :="A.WSF"
if RumbaB = 1
Rumbawsf :="B.WSF"
if Rumba C = 1
Rumbawsf :="C.WSF"
if RumbaD = 1
Rumbawsf :="D.WSF"
if RumbaT = 1
Rumbawsf :="TEST.WSF"


SetTimer, ActivateWinUM, off
if DDEErrorCount > 2
GuiControl,, Static1 , % "Failed Connection"
GuiControl,, Static2 , % "Timeout After: "
GuiControl,, Static3 , % round(connecttimercount) " Seconds"
ToolTip,||||||||||||||||||||||||||||||||`n||||||||||||||||||||||||||||||||`n||||||||||||||||||||||||||||||||`n`nDDE CONNECTED to %Rumbawsf%`n`n||||||||||||||||||||||||||||||||`n||||||||||||||||||||||||||||||||`n||||||||||||||||||||||||||||||||
SetTimer, RemoveToolTip, 1000
GuiControl,, Static1 , % "Connected"
GuiControl,, Static2 , To: %Rumbawsf%
GuiControl,, Static3 , % "In: " connecttimercount " Seconds"
GuiControl,, Button1, % "Run Create List" 
GuiControl,, Button2, % "Run Delete List" 


MouseGetPos,,, WinUMID
ToolTip,Please wait `n`nDDE Connecting to %Rumbawsf%

GuiControl,, Static1 , % "Connecting to"
GuiControl,, Static2 , % "To: " Rumbawsf
connecttimercount := SubStr("0" Floor((A_TickCount - Start) / 1000 - Floor((A_TickCount - Start) / 60000) * 60), -1, 2) "." SubStr("0" Mod(A_TickCount - Start, 1000), -1, 2)
GuiControl,, Static3 , % "For: " connecttimercount " Seconds"

if connecttimercount >= 15
SetTimer, ActivateWinUM, off
msgbox, Make sure the appropriate Rumba Session is Open.

SetTimer, RemoveToolTip, Off

Rumba := "ahk_class WdPageFrame"
winactivate, %Rumba%
winwaitactive, ahk_class WdPageFrame
IfWinNotActive, %Rumba%, , WinActivate, %Rumba%,	;activates a window if it is not already active
WinWaitActive, %Rumba%, 		
WinMenuSelectItem, %Rumba%,, Options , Edit 										;opens a windows menu
winwait, Edit Options
Control, Check,, button1, Edit Options
sleep, 50
Control, Uncheck,, button2, Edit Options
sleep, 50
Control, Uncheck,, button3, Edit Options
sleep, 50
SendMessage, 0x1330, 2,, SysTabControl321, Edit Options
sleep, 50
Control, check,, button2, Edit Options
sleep, 50
WinWait, Edit Options, 
IfWinNotActive, Edit Options, , WinActivate, Edit Options, 
WinWaitActive, Edit Options, 
;---Options>Edit>Ok Button on Parsing Tab
control, check,, button13, Edit Options
WinMenuSelectItem, %Rumba%,, Options , Display
winwait, Display Options
sleep, 50
Control, Uncheck,, button8, Display Options ;Input Error Dialog
WinWait, Display Options, 
IfWinNotActive, Display Options, , WinActivate, Display Options, 
WinWaitActive, Display Options, 
;---Options>Display>Ok Button on Display Tab
control, check,, button12, Display Options
SetTitleMatchMode, fast

Loop 16
Cashier := AutoBlockUni((8+a_index),8)
RemoveInString(Cashier,,"C N R T") 
fesls := AutoBlockUni((8+a_index),47)
RemoveInString(fesls,,"C N R T")
avgodr := AutoBlockUni((8+a_index),58)
RemoveInString(avgodr,,"C N R T")
MonPerSgnOnHR := AutoBlockUni((8+a_index),71)
RemoveInString(MonPerSgnOnHR,,"C N R T")
MPH := AutoBlockUni((8+a_index),83)
RemoveInString(MPH,,"C N R T")
SgnOffPerNumTans := AutoBlockUni((8+a_index),97)
RemoveInString(SgnOffPerNumTans,,"C N R T")
IPM := AutoBlockUni((8+a_index),107)
RemoveInString(IPM,,"C N R T")
ScanPercent := AutoBlockUni((8+a_index),117)
RemoveInString(ScanPercent,,"C N R T")
ItemsPerMemb := AutoBlockUni((8+a_index),129)
RemoveInString(ItemsPerMemb,,"C N R T")

PGOne .= cashier a_tab fesls a_tab avgodr a_tab MonPerSgnOnHR a_tab MPH a_tab SgnOffPerNumTans a_tab IPM a_tab ScanPercent a_tab ItemsPerMemb "`n"
Loop 16
InaTime := AutoBlockUni((8+a_index),42)
RemoveInString(InaTime,,"C N R T") 
NumOur := AutoBlockUni((8+a_index),52)
RemoveInString(NumOur,,"C N R T")
Pickups := AutoBlockUni((8+a_index),62)
RemoveInString(Pickups,,"C N R T")
VoidTrans := AutoBlockUni((8+a_index),72)
RemoveInString(VoidTrans,,"C N R T")
FERew := AutoBlockUni((8+a_index),84)
RemoveInString(FERew,,"C N R T")
NumOfMembs := AutoBlockUni((8+a_index),96)
RemoveInString(NumOfMembs,,"C N R T")
PercentKeyed := AutoBlockUni((8+a_index),105)
RemoveInString(PercentKeyed,,"C N R T")
SignOffs := AutoBlockUni((8+a_index),117)
RemoveInString(SignOffs,,"C N R T")
NumItems := AutoBlockUni((8+a_index),129)
RemoveInString(NumItems,,"C N R T")

PGTwo .= InaTime a_tab NumOur a_tab Pickups a_tab VoidTrans a_tab FERew a_tab NumOfMembs a_tab PercentKeyed a_tab SignOffs a_tab NumItems "`n"
Joined := Table_Append( PGOneLeft, PGOneRight,1)
/*Loop 16
InaTimePerMem := AutoBlockUni((8+a_index),42)
RemoveInString(InaTime,,"C N R T") 
TendTimePerMem := AutoBlockUni((8+a_index),52)
RemoveInString(TendTimePerMem,,"C N R T")
RingTimePerMem := AutoBlockUni((8+a_index),62)
RemoveInString(RingTimePerMem,,"C N R T")
NonSlsTimePerMem := AutoBlockUni((8+a_index),72)
RemoveInString(NonSlsTimePerMem,,"C N R T")
TotTimePerMem := AutoBlockUni((8+a_index),84)
RemoveInString(TotTimePerMem,,"C N R T")
TotSgnOnTime := AutoBlockUni((8+a_index),96)
RemoveInString(TotSgnOnTime,,"C N R T")

PGThree .= InaTimePerMem a_tab TendTimePerMem a_tab RingTimePerMem a_tab NonSlsTimePerMem a_tab TotTimePerMem a_tab TotSgnOnTime "`n"
;clipboard := PGO
msgbox % Joined
clipboard := Joined
	Keywait, CapsLock
	If (A_PriorKey="CapsLock")
#if, GetKeyState("CapsLock", "P")
p::FileRecycleEmpty				;Capslock + P		empty recycle bin
u::Run %clipboard%				;Capslock + U		Start URL in clipboard
v::							;Capslock + V		Paste as plain text
ClipSaved := ClipboardAll
Clipboard = %Clipboard%
SendInput, ^v
Sleep, 250
Clipboard := ClipSaved
VarSetCapacity(ClipSaved, 0)
s::							;Capslock + S		search Startpage, text in clipboard
Send, ^{vk43} ;Ctrl C
Sleep 50
Run, https://www.startpage.com/do/search?q=%clipboard%
t::							;Capslock + T		translate clipboard with DeepL
Send, ^{vk43} ;Ctrl C
Sleep 50
Run, https://www.deepl.com/translator
Sleep 1000
Send ^{vk56} ;Ctrl V
c::							;Capslock + C		centre active window
	WinGetPos,,, Width, Height, A
	WinMove, A,, (A_ScreenWidth/2)-(Width/2), (A_ScreenHeight/2)-(Height/2)
numpad1::Run, D:\EverEdit\EverEdit.exe				;Capslock + NumPad1	EverEdit
numpad4::Run, D:\FreeCommander\FreeCommander.exe	;Capslock + NumPad4	FreeCommander
;**********					;End Capslock hotkeys
;**********					;End Capslock hotkeys
SendMode Input
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.


	KeyWait, CapsLock
	If (A_PriorKey="CapsLock")
		SetCapsLockState, % GetKeyState("CapsLock","T") ? "Off" : "On"

#If, GetKeyState("CapsLock", "P") ;Your CapsLock hotkeys go below

l::Right ;u::Send {Home}
u::-  ;o::Send {End}
;u::Send {End}
o::Run C:\A Steel Trap\Duo\best ahk\done\move_from_photos_to_end_of_title.ahk
;o::Send {End} ;p::Send {PgUp}
p::Run C:\A Steel Trap\Duo\best ahk\done\item_specifics.ahk  ;p::Send {Home}
[::Send {End}
]::Send {PgDn}
=::Send {PgUp}
`;::Send {BS}
Space::Send {Return}
0::Send {PgUp}


sc045::Send {down 9}
!m::Run C:\A Steel Trap\Duo\best ahk\search_master_list_box.ahk
^F7::Run C:\A Steel Trap \Duo\best ahk\close firefox tabs to the right.ahk
^PgUp::Run C:/A Steel Trap/Duo/best ahk/done/photo_gallery.ahk
^PgDn::Run C:/A Steel Trap/Duo/best ahk/done/photo_gallery_open_double_including_previous_photo.ahk
Numlock::Run C:\A Steel Trap\Duo\best ahk\6bitStart.ahk

LButton::Run C:\A Steel Trap\Duo\best ahk\activatesixbit.ahk
;RButton::Run C:\A Steel Trap\Duo\best ahk\ahk to do\clickdragphotos.ahk
RButton::Run C:\A Steel Trap\Duo\best ahk\done\organize_photo_order_click.ahk
MButton::Run C:\A Steel Trap\Duo\best ahk\done\organize_photo_order_shoes-dbltagmove_click.ahk
w::Run C:\A Steel Trap\Duo\best ahk\done\google.ahk
y::send t-strap `

a::Run C:\A Steel Trap\Duo\best ahk\done\firefox.ahk

g::send t-shirt `
h::Run C:\A Steel Trap\Duo\best ahk\clickwind_pending_pics.ahk

v::send v-neck`  ;v::Run C:\A Steel Trap\Duo\best ahk\done\save_and_exit.ahk ;b::send pullover ` ;n::Run C:\A Steel Trap\Duo\best ahk\done\centermouse&click.ahk
b::send t-strap `
n::Send .5`
;m::Send {-}`
;Send {-}`
;m::send {#}` ;Tab::Send {Tab 5}
;Tab::Send {Tab 3} ;
Tab::Run C:\A Steel Trap\Duo\best ahk\timenowdate.ahk
End::Run C:\A Steel Trap\Duo\best ahk\done\saveclose2.ahk
;^F11::Run C:\A Steel Trap\Duo\best ahk\ahk to do\clickwind_delete_photos.ahk
;,::Send .5`  ;,::Send {!}`  
,::Send /P`
.::Send .5`
;.::Run C:\A Steel Trap\Duo\best ahk\done\new_item.ahk
F12::Send e-mail address
/::Run C:\A Steel Trap\Duo\best ahk\done\saveclose2.ahk
;Backspace::Run C:\A Steel Trap\Duo\best ahk\ahk to do\clickdragphotos.ahk
Backspace::Run C:\A Steel Trap\Duo\best ahk\done\photo_gallery_close_all_photos.ahk
;Backspace::Run C:\A Steel Trap\Duo\best ahk\done\organize_photo_order_click.ahk
;Run C:\A Steel Trap\Duo\best ahk\music\copy.ahk
;Delete::Run C:\A Steel Trap\Duo\best ahk\music\copy.ahk
^c::Run C:\A Steel Trap\Duo\best ahk\clickwind_pending_pics.ahk

	KeyWait, ScrollLock
	If (A_PriorKey="ScrollLock")
		SetScrollLockState, % GetKeyState("ScrollLock","T") ? "Off" : "On"

#If, GetKeyState("ScrollLock", "P") ;Your ScrollLock hotkeys go below

a::Run C:\A Steel Trap\Duo\best ahk\done\new_item_clear_photos.ahk
s::Run C:\A Steel Trap\Duo\best ahk\done\organize_photo_order.ahk
;d::Run C:\A Steel Trap\Duo\best ahk\done\organize_photo_order_shoes-dbltagmove.ahk
;Numpad2::Send {Down 9}
Numpad9::Run C:\A Steel Trap\Duo\best ahk\click_win_sold_items_search_when_shipping.ahk
t::Send personal email`
f::Run C:\A Steel Trap\Duo\best ahk\done\firefox.ahk
g::Run C:\A Steel Trap\Duo\best ahk\done\google.ahk

Up::Send {Up 5}

	KeyWait, NumLock
#If, GetKeyState("NumLock", "P")

Numpad1::Run C:\A Steel Trap\Duo\best ahk\done\saveclose2.ahk
Numpad3::Send {Tab 6}
;Numpad5::Run C:\A Steel Trap\Duo\best ahk\click_win_sold_items_search_when_shipping.ahk
Numpad8::Send phone number`
NumpadDot::Run C:\A Steel Trap\Duo\best ahk\done\numpad_half.ahk
;NumpadSub::SC028  ;this is for the single quotation character
NumpadDiv::Run C:\A Steel Trap\Duo\best ahk\done\saveclose2.ahk
NumpadMult::Run C:\A Steel Trap\Duo\best ahk\done\brackets.ahk
Numpad9::Run C:\A Steel Trap\Duo\best ahk\done\numpad_quarter.ahk
NumpadAdd::Run C:\A Steel Trap\Duo\best ahk\done\99cents.ahk

a::Run C:\A Steel Trap\Duo\best ahk\6bitStart.ahk
s::Run C:\A Steel Trap\Duo\best ahk\done\item_specifics.ahk
q::Run C:\A Steel Trap\Duo\best ahk\done\saveclose2.ahk
;f::Run C:\A Steel Trap\Duo\best ahk\done\add_single_listing.ahk
f::send c108`
d::Send Does not Apply`
c::Send logininfo{Tab}`
r::Run C:\A Steel Trap\Duo\best ahk\done\move_mouse_to_shipping.ahk
w::Run C:\A Steel Trap\Duo\best ahk\done\change_price.ahk
v::Run C:\A Steel Trap\Duo\best ahk\done\new_item.ahk
Tab::Send {Tab 5}
4::Send 14-14.5 - S mens `
5::Send 15-15.5 - M mens `
6::Send 16-16.5 - L mens `
7::Send 17-17.5 - XL mens `
8::Send 18-18.5 - 2XL mens `
Space::Send {Space 7}
t::Send otheremail`
`;::Send {BS}
j::Send {Tab 7}


vk0x0	0x0	
vk0x1	0x0	LButton
vk0x2	0x0	RButton
vk0x3	0x146	CtrlBreak
vk0x4	0x0	MButton
vk0x5	0x0	XButton1
vk0x6	0x0	XButton2
vk0x7	0x0	** Undefined **
vk0x8	0xE	Backspace
vk0x9	0xF	Tab
vk0xA	0x0	** Reserved **
vk0xB	0x0	** Reserved **
vk0xC	0x4C	NumpadClear
vk0xD	0x1C	Enter
vk0xE	0x0	** Undefined **
vk0xF	0x0	** Undefined **
vk0x10	0x2A	Shift
vk0x11	0x1D	Control
vk0x12	0x38	Alt
vk0x13	0x0	Pause
vk0x14	0x3A	CapsLock
vk0x16	0x0	** Undefined **
vk0x17	0x0	IME Junja
vk0x18	0x0	IME Final
vk0x19	0x0	IME Hanja/Kanji
vk0x1A	0x0	** Undefined **
vk0x1B	0x1	Escape
vk0x1C	0x0	IME Convert
vk0x1D	0x0	IME NonConvert
vk0x1E	0x0	IME Accept
vk0x1F	0x0	IME Mode change request
vk0x20	0x39	Space
vk0x21	0x49	NumpadPgUp
vk0x22	0x51	NumpadPgDn
vk0x23	0x4F	NumpadEnd
vk0x24	0x47	NumpadHome
vk0x25	0x4B	NumpadLeft
vk0x26	0x48	NumpadUp
vk0x27	0x4D	NumpadRight
vk0x28	0x50	NumpadDown
vk0x29	0x0	SELECT Key?
vk0x2A	0x0	PRINT Key?
vk0x2B	0x0	EXECUTE Key?
vk0x2C	0x154	PrintScreen
vk0x2D	0x52	NumpadIns
vk0x2E	0x53	NumpadDel
vk0x2F	0x63	Help
vk0x30	0xB	0
vk0x31	0x2	1
vk0x32	0x3	2
vk0x33	0x4	3
vk0x34	0x5	4
vk0x35	0x6	5
vk0x36	0x7	6
vk0x37	0x8	7
vk0x38	0x9	8
vk0x39	0xA	9
vk0x3A	0x0	** Undefined **
vk0x3B	0x0	** Undefined **
vk0x3C	0x0	** Undefined **
vk0x3D	0x0	** Undefined **
vk0x3E	0x0	** Undefined **
vk0x3F	0x0	** Undefined **
vk0x40	0x0	** Undefined **
vk0x41	0x1E	A
vk0x42	0x30	B
vk0x43	0x2E	C
vk0x44	0x20	D
vk0x45	0x12	E
vk0x46	0x21	F
vk0x47	0x22	G
vk0x48	0x23	H
vk0x49	0x17	I
vk0x4A	0x24	J
vk0x4B	0x25	K
vk0x4C	0x26	L
vk0x4D	0x32	M
vk0x4E	0x31	N
vk0x4F	0x18	O
vk0x50	0x19	P
vk0x51	0x10	Q
vk0x52	0x13	R
vk0x53	0x1F	S
vk0x54	0x14	T
vk0x55	0x16	U
vk0x56	0x2F	V
vk0x57	0x11	W
vk0x58	0x2D	X
vk0x59	0x15	Y
vk0x5A	0x2C	Z
vk0x5B	0x15B	LWin
vk0x5C	0x15C	RWin
vk0x5D	0x15D	AppsKey
vk0x5E	0x0	** Reserved **
vk0x5F	0x5F	Sleep
vk0x60	0x52	Numpad0
vk0x61	0x4F	Numpad1
vk0x62	0x50	Numpad2
vk0x63	0x51	Numpad3
vk0x64	0x4B	Numpad4
vk0x65	0x4C	Numpad5
vk0x66	0x4D	Numpad6
vk0x67	0x47	Numpad7
vk0x68	0x48	Numpad8
vk0x69	0x49	Numpad9
vk0x6A	0x37	NumpadMult
vk0x6B	0x4E	NumpadAdd
vk0x6C	0x0	Seperator key?
vk0x6D	0x4A	NumpadSub
vk0x6E	0x53	NumpadDot
vk0x6F	0x135	NumpadDiv
vk0x70	0x3B	F1
vk0x71	0x3C	F2
vk0x72	0x3D	F3
vk0x73	0x3E	F4
vk0x74	0x3F	F5
vk0x75	0x40	F6
vk0x76	0x41	F7
vk0x77	0x42	F8
vk0x78	0x43	F9
vk0x79	0x44	F10
vk0x7A	0x57	F11
vk0x7B	0x58	F12
vk0x7C	0x64	F13
vk0x7D	0x65	F14
vk0x7E	0x66	F15
vk0x7F	0x67	F16
vk0x80	0x68	F17
vk0x81	0x69	F18
vk0x82	0x6A	F19
vk0x83	0x6B	F20
vk0x84	0x6C	F21
vk0x85	0x6D	F22
vk0x86	0x6E	F23
vk0x87	0x76	F24
vk0x88	0x0	** Unassigned **
vk0x89	0x0	** Unassigned **
vk0x8A	0x0	** Unassigned **
vk0x8B	0x0	** Unassigned **
vk0x8C	0x0	** Unassigned **
vk0x8D	0x0	** Unassigned **
vk0x8E	0x0	** Unassigned **
vk0x8F	0x0	** Unassigned **
vk0x90	0x145	Numlock
vk0x91	0x46	ScrollLock
vk0x92	0x0	** OEM Specific **
vk0x93	0x0	** OEM Specific **
vk0x94	0x0	** OEM Specific **
vk0x95	0x0	** OEM Specific **
vk0x96	0x0	** OEM Specific **
vk0x97	0x0	** Unassigned **
vk0x98	0x0	** Unassigned **
vk0x99	0x0	** Unassigned **
vk0x9A	0x0	** Unassigned **
vk0x9B	0x0	** Unassigned **
vk0x9C	0x0	WheelLeft
vk0x9D	0x0	WheelRight
vk0x9E	0x0	WheelDown
vk0x9F	0x0	WheelUp
vk0xA0	0x2A	LShift
vk0xA1	0x136	RShift
vk0xA2	0x1D	LControl
vk0xA3	0x11D	RControl
vk0xA4	0x38	LAlt
vk0xA5	0x138	RAlt
vk0xA6	0x6A	Browser_Back
vk0xA7	0x69	Browser_Forward
vk0xA8	0x67	Browser_Refresh
vk0xA9	0x68	Browser_Stop
vk0xAA	0x65	Browser_Search
vk0xAB	0x66	Browser_Favorites
vk0xAC	0x32	Browser_Home
vk0xAD	0x20	Volume_Mute
vk0xAE	0x2E	Volume_Down
vk0xAF	0x30	Volume_Up
vk0xB0	0x19	Media_Next
vk0xB1	0x10	Media_Prev
vk0xB2	0x24	Media_Stop
vk0xB3	0x22	Media_Play_Pause
vk0xB4	0x6C	Launch_Mail
vk0xB5	0x6D	Launch_Media
vk0xB6	0x6B	Launch_App1
vk0xB7	0x21	Launch_App2
vk0xB8	0x0	** Reserved **
vk0xB9	0x0	** Reserved **
vk0xBA	0x27	;
vk0xBB	0xD	=
vk0xBC	0x33	,
vk0xBD	0xC	-
vk0xBE	0x34	.
vk0xBF	0x35	/
vk0xC0	0x29	`
vk0xC1	0x73	** Reserved **
vk0xC2	0x7E	** Reserved **
vk0xC3	0x0	** Reserved **
vk0xC4	0x0	** Reserved **
vk0xC5	0x0	** Reserved **
vk0xC6	0x0	** Reserved **
vk0xC7	0x0	** Reserved **
vk0xC8	0x0	** Reserved **
vk0xC9	0x0	** Reserved **
vk0xCA	0x0	** Reserved **
vk0xCB	0x0	** Reserved **
vk0xCC	0x0	** Reserved **
vk0xCD	0x0	** Reserved **
vk0xCE	0x0	** Reserved **
vk0xCF	0x0	** Reserved **
vk0xD0	0x0	** Reserved **
vk0xD1	0x0	** Reserved **
vk0xD2	0x0	** Reserved **
vk0xD3	0x0	** Reserved **
vk0xD4	0x0	** Reserved **
vk0xD5	0x0	** Reserved **
vk0xD6	0x0	** Reserved **
vk0xD7	0x0	** Reserved **
vk0xD8	0x0	** Unassigned **
vk0xD9	0x0	** Unassigned **
vk0xDA	0x0	** Unassigned **
vk0xDB	0x1A	[
vk0xDC	0x2B	\
vk0xDD	0x1B	]
vk0xDE	0x28	'
vk0xDF	0x0	VK_OEM_8
vk0xE0	0x0	** Reserved **
vk0xE1	0x0	** OEM Specific **
vk0xE2	0x56	\
vk0xE3	0x0	** OEM Specific **
vk0xE4	0x0	** OEM Specific **
vk0xE5	0x0	IME PROCESS Key
vk0xE6	0x0	** OEM Specific **
vk0xE7	0x0	VK_Packet(Used for sending Unicode chars?)
vk0xE8	0x0	** Unassigned **
vk0xE9	0x71	** OEM Specific **
vk0xEA	0x5C	** OEM Specific **
vk0xEB	0x7B	** OEM Specific **
vk0xEC	0x0	** OEM Specific **
vk0xED	0x6F	** OEM Specific **
vk0xEE	0x5A	** OEM Specific **
vk0xEF	0x0	** OEM Specific **
vk0xF0	0x0	** OEM Specific **
vk0xF1	0x5B	** OEM Specific **
vk0xF2	0x0	** OEM Specific **
vk0xF3	0x5F	** OEM Specific **
vk0xF4	0x0	** OEM Specific **
vk0xF5	0x5E	** OEM Specific **
vk0xF6	0x0	Attn Key
vk0xF7	0x0	CrSel Key
vk0xF8	0x0	ExSel Key
vk0xF9	0x5D	Erase EOF Key
vk0xFA	0x0	Play Key
vk0xFB	0x62	Zoom Key
vk0xFC	0x0	** Reserved **
vk0xFD	0x0	PA1 Key
vk0xFE	0x0	Clear Key
vk0xFF	0x0	? Maybe for unknown keys/keyboard error?

$Pause:: ; The § should prevent Pause from triggering itself
KeyWait, W, D T3 ; T3 gives you three seconds to press W
if (Errorlevel)
  Send {Pause} ; By the way, this is really just necessary if you wanna preserve the original pause functionality
  MsgBox You pressed Pause+W!

Similiar Collections

Python strftime reference pandas.Period.strftime python - Formatting Quarter time in pandas columns - Stack Overflow python - Pandas: Change day - Stack Overflow python - Check if multiple columns exist in a df - Stack Overflow Pandas DataFrame apply() - sending arguments examples python - How to filter a dataframe of dates by a particular month/day? - Stack Overflow python - replace a value in the entire pandas data frame - Stack Overflow python - Replacing blank values (white space) with NaN in pandas - Stack Overflow python - get list from pandas dataframe column - Stack Overflow python - How to drop rows of Pandas DataFrame whose value in a certain column is NaN - Stack Overflow python - How to drop rows of Pandas DataFrame whose value in a certain column is NaN - Stack Overflow python - How to lowercase a pandas dataframe string column if it has missing values? - Stack Overflow How to Convert Integers to Strings in Pandas DataFrame - Data to Fish How to Convert Integers to Strings in Pandas DataFrame - Data to Fish create a dictionary of two pandas Dataframe columns? - Stack Overflow python - ValueError: No axis named node2 for object type <class 'pandas.core.frame.DataFrame'> - Stack Overflow Python Pandas iterate over rows and access column names - Stack Overflow python - Creating dataframe from a dictionary where entries have different lengths - Stack Overflow python - Deleting DataFrame row in Pandas based on column value - Stack Overflow python - How to check if a column exists in Pandas - Stack Overflow python - Import pandas dataframe column as string not int - Stack Overflow python - What is the most efficient way to create a dictionary of two pandas Dataframe columns? - Stack Overflow Python Loop through Excel sheets, place into one df - Stack Overflow python - How do I get the row count of a Pandas DataFrame? - Stack Overflow python - How to save a new sheet in an existing excel file, using Pandas? - Stack Overflow Python Loop through Excel sheets, place into one df - Stack Overflow How do I select a subset of a DataFrame? — pandas 1.2.4 documentation python - Delete column from pandas DataFrame - Stack Overflow python - Convert list of dictionaries to a pandas DataFrame - Stack Overflow How to Add or Insert Row to Pandas DataFrame? - Python Examples python - Check if a value exists in pandas dataframe index - Stack Overflow