Update 'D3K.ahk'

This commit is contained in:
David Daily 2023-02-01 14:43:37 -06:00
parent 2eff8ca4ad
commit d537a9bf7b

569
D3K.ahk
View File

@ -1,168 +1,128 @@
#Include, func.ahk #Include, func.ahk
Menu, Tray, Icon, shell32.dll, 283 ; Set the tray icon to a keyboard Menu, Tray, Icon, shell32.dll, 283 ; Set the tray icon to a keyboard
Menu, Tray, Add, Mouse Mover, Mouse_Mover ; Add item to the tray to move the mouse Menu, Tray, Add, &Mouse Mover, Mouse_Mover ; Add item to the tray to move the mouse
Menu, Tray, Add, Settings, D3K_Settings ; Add item to the tray to move the mouse
Menu, Tray, Add, %A_AhkVersion%, docs Menu, Tray, Add, %A_AhkVersion%, docs
;------------------------------------------------------------------------------
; Make sure the settings file exists, if not, create it
;------------------------------------------------------------------------------
If !FileExist(ini) ; Check if the ini doesn't exist
{
FileAppend,
(
; 0 is off, 1 is on
[USpec]
RACF=LF01234
Email=LastnameFirstname@JohnDeere.com
Name=Firstname
DocFile=Select File
[Main]
Mansol=1
MJDPaste=1
CaseFormatter=1
CFmail=0
[Replacement]
JDProductNames=1
GloVar=0
[Language]
German=0
), %ini%
Run Settings.ahk ; Runs the GUI for changing the settings, also accessible with Alt+Shift+\ (also easy way to restart this script)
}
;------------------------------------------------------------------------------
; Read the ini
;------------------------------------------------------------------------------
; This is the part that reads the file to see what your settings are. Variables in the ini file are in all lowercase, variables here are CamelCase for more distinction
; User Specific things:
racf := ini_get(ini, "USpec", "RACF")
email := ini_get(ini, "USpec", "Email")
name := ini_get(ini, "USpec", "Name")
docfile := ini_get(ini, "USpec", "DocFile")
; General Settings
mansol := ini_get(ini, "Main", "Mansol")
supadmin := ini_get(ini, "Main", "Supadmin")
mjdpaste := ini_get(ini, "Main", "MJDPaste")
caseformatter := ini_get(ini, "Main", "CaseFormatter")
; Replacement
jdpn := ini_get(ini, "Replacement", "JDProductNames")
glovar := ini_get(ini, "Replacement", "GloVar")
; Language
ger := ini_get(ini, "Language", "German")
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
; Global Variables ; Global Variables
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
If (glovar)
If (glovar = 1)
{ {
glovarini := A_MyDocuments "\GloVar.ini" ; Location of the ini that the user modifies
glovarstart := "#SingleInstance force`n`n"
SetTimer, GloVar, 2000 ; Check every 2 seconds SetTimer, GloVar, 2000 ; Check every 2 seconds
GloVar: GloVar:
WinWaitNotActive, GloVar.ini ; So that we don't get any problems with the file on disk being out of date. I use VSCode with the "Save on lose focus" option on, YMMV glovarini := A_MyDocuments "\GloVar.ini" ; Location of the ini that the user modifies
{ glovarscript := A_Temp "\GloVar.ahk" ; Doesn't need to be anywhere useful as it doesn't contain any external references
FileGetTime, gvModNew, %glovarini% ;FileGetTime, gvMod, %glovarini%, M
if !(gvModNew = gvMod) ; Those two lines mean the rest of this only executes if there were changes to the ini. glovarstart := "#SingleInstance force`n#NoTrayIcon`nSendMode, Input`nFileEncoding, UTF-8`n"
If (WinActive("GloVar.ini")) ; Only run when the window isn't active, prevents accidential editing by this while the user is
{ {
gvMod := gvModNew Return
FileDelete, glovar.ahk ; Start with a clean slate }
FileAppend, %glovarstart%, glovar.ahk ; makes sure we only have one instance of the script running at a time FileGetTime, gvModNew, %glovarini%, M
If !(gvModNew = gvMod) ; Those two lines mean the rest of this only executes if there were changes to the ini.
RESection := "" ; Make sure that its clear {
file := FileOpen(glovarini, "r") SetTimer, GloVar, Off
Loop ; Read one line at a time hotstrings := ""
{ glovar_array := ini_load(glovarini)
Line := file.ReadLine() For sec in glovar_array
RegExMatch(Line, "(?<=\[).*(?=\])", RESection) ; explained above {
RegExMatch(Line, "^(?<Key>.*)=(?<Value>.*)", RE) ; Key = REKey, Value = REValue For key, value in glovar_array[sec]
{
If !(RESection) ; If the RegEx doesn't find antything, its empty If (value)
{ {
If !(REValue) ; If there is no value for the key, skip it (Continue the loop at the next line) sec := StrReplace(sec, "§", " ") ; AHK can't handle spaces in nested array names, so they're substituted with § when entered into the array. This reverses that.
{ StringCaseSense, Off ; Make sure the capitalization doesn't matter
Continue Switch sec
} {
If InStr(StoredSection, "Serial Numbers") ; If the section is "Serial Numbers", make everything uppercase Case "Serial Numbers":
{ StringUpper, value, value ; Makes it uppercase
StringUpper, REValue, REValue ; Makes it uppercase ini_write(glovarini, key, value)
WinWaitNotActive, GloVar.ini ; Just to make sure Case "Info":
{ If (key = "case")
ini_write(glovarini, REKey, REValue) {
FileGetTime, gvMod, %glovarini% StringUpper, value, value ; Makes it uppercase, just in case it was manually typed
} value := Trim(value, "()")
} ini_write(glovarini, key, value) ; Writes the properly formatted case number to glovar.ini
If InStr(REKey, "case") ; If a key contains "case". Case numbers are all in the format "LETTERS-NUMBERS". }
{ Case "Clear": ; Will clear the ini and save its and the documentation file's contents to a log
StringUpper, REValue, REValue ; Makes it uppercase temp := FileOpen(docfile, "r")
RegExMatch(REValue, "(?<=\().*(?=\))", REMatch) ; Match everything but the parenthesis. When the case numbers are shown they have parenthesis, and those are annoying. doctemp := temp.Read()
If (REMatch) ; If there's anything there temp.Close()
{ temp := FileOpen(glovarini, "r")
WinWaitNotActive, GloVar.ini initemp := temp.Read()
{ temp.Close()
ini_write(glovarini, REKey, REMatch) ; Writes the properly formatted case number to glovar.ini initemp := RegExReplace(initemp, "i)(?<=\[)clear(?=\])", "Info") ; Replace the "clear" section we set with Info, case insensitive
FileGetTime, gvMod, %glovarini% CurrTime := GetDateTime("en") ; get the current date and time as "YYYY-MM-DD at HH:MM GMT"
} temp := FileOpen(A_MyDocuments "/D3KLog.txt", "a")
REValue := REMatch writethis := "Case on " . CurrTime . "`n`n`n" . doctemp . "`n`n" . initemp ; Save the current time, what was in the doc file, and glovarini to a variable
} Else { temp.Write("`n`n" writethis "`n`n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
WinWaitNotActive, GloVar.ini temp.Close()
{ temp := FileOpen("glovarsource", "r")
ini_write(glovarini, REKey, REValue) ; Writes the properly formatted case number to glovar.ini glovarsource := temp.Read()
FileGetTime, gvMod, %glovarini% temp.Close()
} temp := FileOpen(glovarini, "w")
} temp.Write(glovarsource) ; Overwrite .ini for a clean slate
} temp.Close()
writethis := ":*:$" REKey "::" REValue "`n" ; Save the hotstring to a variable temp := FileOpen(docfile, "w") ; Overwrites documentation for a clean slate
FileAppend, %writethis%, glovar.ahk ; Write the variable to glovar.ahk temp.Close()
} script := FileOpen(glovarscript, "w")
If (RESection) ; If we have a section script.Write(glovarstart)
{ script.Close()
StoredSection := RESection Run, %A_AhkPath% %glovarscript% ; Just in case. Don't want an old version running.
If InStr(RESection, "clear") ; Will clear the ini and save its and the documentation file's contents to a log ToolTip, Cleared
{ Sleep, 500
FileRead, doctemp, %docfile% ; Read documentation file, set in settings ToolTip
FileRead, initemp, %glovarini% ; Read the ini FileGetTime, gvMod, %glovarini%, M ; Make sure that this script knows what the ini was changed to so it doesn't constantly run through the above code
initemp := RegExReplace(initemp, "(?<=\[)clear(?=\])", "Info") ; Replace the "clear" section we set with Info SetTimer, GloVar, On
CurrTime := GetDateTime("en") ; get the current date and time as "YYYY-MM-DD at HH:MM GMT" Goto, GloVar ; Don't do anything else below this line, Break wasn't taking "GloVar" as a variable
writethis := "Case on " . CurrTime . "`n`n`n" . doctemp . "`n`n" . initemp ; Save the current time, what was in the doc file, and glovarini to a variable Case (RegExMatch(sec, "i)sdrbr(\d*)", m) ? sec : !sec): ; for cases with Stolen displays
FileAppend, % "`n`n" writethis "`n`n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~", %A_MyDocuments%/D3KLog.txt ; Write a few new lines , the content, and a line underneath If (m1) ; sometimes there are multiple stolen displays, this is to account for that.
FileAppend,, temptemp {
FileCopy, glovarsource, %glovarini%, 1 ; Copies and replaces any text in glovar.ini with the template writethis := "[Serial Numbers]"
FileCopy, temptemp, %docfile%, 1 ; These two this close together makes it look like they get cleared at the same time Loop, % m1
FileDelete, temptemp writethis .= "`ns" A_Index "=`nr" A_Index "=`ncc" A_Index "=`nv" A_Index "="
fileread, gvMod, %glovarini% ; Make sure that this script knows what the ini was changed to so it doesn't constantly run through the above code writethis .= "`n[Info]"
FileDelete, glovar.ahk ; THE CLEAN SLATE Loop, % m1
FileAppend, %glovarstart%, glovar.ahk writethis .= "`ncase" A_Index "="
Sleep, 500 } Else {
FileGetTime, gvMod, %glovarini% ; Make sure that this script knows what the ini was changed to so it doesn't constantly run through the above code writethis := "[Serial Numbers]`ns=`nr=`ncc=`nv=`n[Info]`ncase=" glovar_array[sec, "case"]
If FileExist("glovar.ahk") }
{ temp := FileOpen(glovarini, "w")
Run glovar.ahk temp.Write(writethis)
} temp.Close()
Return script := FileOpen(glovarscript, "w")
} script.Write(glovarstart)
} script.Close()
} Until (file.AtEOF) SetTimer, GloVar, On
file.Close() Goto, GloVar ; Don't do anything else below this line, Break wasn't taking "GloVar" as a variable
FileGetTime, gvMod, %glovarini% ; Make sure that this script knows what the ini was changed to so it doesn't constantly run through the above code }
If FileExist("glovar.ahk") hotstrings .= "`n:*:$" key "::" value
{ }
Run glovar.ahk }
ToolTip, glovar updated, 50, 50 }
Sleep, 500 file := FileOpen(glovarini, "r")
ToolTip temp := file.Read()
} file.Close()
temp := RegExReplace(temp, "`am)^[\s\R]*") ; Get rid of empty lines
temp := RegExReplace(temp, "m)[ \t]+$") ; Get rid of extra space at the end of strings
temp := Trim(temp, " `t`r`n") ; Remove pesky newlines and extra space at the end
file := FileOpen(glovarini, "w")
file.Write(temp)
file.Close()
script := FileOpen(glovarscript, "w")
script.Write(glovarstart hotstrings)
script.Close()
Run, %A_AhkPath% %glovarscript%
ToolTip, GloVars updated
Sleep, 500
ToolTip
FileGetTime, gvMod, %glovarini%, M ; Make sure that this script knows what the ini was changed to so it doesn't constantly run through the above code
SetTimer, GloVar, On
} }
}
Return Return
} }
@ -170,27 +130,43 @@ If (glovar = 1)
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
; Settings window ; Settings window
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
D3K_Settings:
!+\::Run Settings.ahk ; Alt+Shift+\ !+\::Run Settings.ahk ; Alt+Shift+\
Mouse_Mover:
Run, msmv.ahk
Return Return
;------------------------------------------------------------------------------
; Mouse Mover
;------------------------------------------------------------------------------
Mouse_Mover:
If (msmv_active = True)
{
Run, %A_AhkPath% "msmv.ahk" "off"
msmv_active := False ; Have to do this cause AHK doesn't have a builtin function to detect if something is checked or not.
Menu, Tray, Uncheck, &Mouse Mover
}
Else
{
Run, %A_AhkPath% "msmv.ahk" "on"
msmv_active := True
Menu, Tray, Check, &Mouse Mover
}
Return
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
; DTAC Solution Opener ; DTAC Solution Opener
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
#If (mansol) ; checks from the variable thats set from the .sett_ini file
#If, mansol = "1" ; checks from the variable thats set from the .ini file
!+S::Run Mansol_Opener.ahk ; Alt+Shift+S !+S::Run Mansol_Opener.ahk ; Alt+Shift+S
#If ; these are to make sure one "if" doesn't influence the next accidentially #If
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
; Case Formatter ; Case Formatter
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
#If (CaseFormatter)
#If, CaseFormatter = "1"
Pause::Run Case_Formatter.ahk ; The Pause|Break key Pause::Run Case_Formatter.ahk ; The Pause|Break key
#If #If
@ -198,35 +174,19 @@ Return
;------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------
; Special Characters ; Special Characters
;------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------
#If (ger)
#If, ger = "1" !s::Send {U+00DF} ;Alt+S scharfes s / Eszett / ß
; scharfes s / Eszett / ß !a::Send {U+00E4} ;Alt+a ä
!s::Send {U+00DF} ;Alt+S +!A::Send {U+00C4} ;Alt+A Ä
!o::Send {U+00F6} ;Alt+o ö
; ä +!O::Send {U+00D6} ;Alt+O Ö
!a::Send {U+00E4} ;Alt+a !u::Send {U+00FC} ;Alt+u ü
+!U::Send {U+00DC} ;Alt+U Ü
; ö
!o::Send {U+00F6} ;Alt+o
; ü
!u::Send {U+00FC} ;Alt+u
; Ä
+!A::Send {U+00C4} ;Alt+A
; Ö
+!O::Send {U+00D6} ;Alt+O
; Ü
+!U::Send {U+00DC} ;Alt+U
#If #If
;------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------
; Capitalise dates ; Capitalise dates
;------------------------------------------------------------------------------- ;-------------------------------------------------------------------------------
::monday::Monday ::monday::Monday
::tuesday::Tuesday ::tuesday::Tuesday
::wednesday::Wednesday ::wednesday::Wednesday
@ -234,12 +194,9 @@ Return
::friday::Friday ::friday::Friday
::saturday::Saturday ::saturday::Saturday
::sunday::Sunday ::sunday::Sunday
::january::January ::january::January
::february::February ::february::February
; ::march::March ; Commented out because it matches the common word "march".
::april::April ::april::April
; ::may::May ; Commented out because it matches the common word "may".
::june::June ::june::June
::july::July ::july::July
::august::August ::august::August
@ -248,9 +205,8 @@ Return
::november::November ::november::November
::december::December ::december::December
; German ; German
#If, ger = "1" #If (ger)
::montag::Montag ::montag::Montag
::dienstag::Dienstag ::dienstag::Dienstag
::mittwoch::Mittwoch ::mittwoch::Mittwoch
@ -270,85 +226,160 @@ Return
#If #If
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
; Copypastas ; Copypastas
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
;STWA Applied ; STWA Applied
:*:]cms:: :*:]cmy::
Send STWA applied{Enter 2}Status: Providing information{Enter 2}Comments:{Space}{Enter 2}Thank you,{Enter}%name%{Enter 2}Tier 2 internal steps:{Space}{Enter 2}SQL:{Enter} Send STWA applied{Enter 2}Status: Providing information{Enter 2}Comments: {Enter 2}Thank you,{Enter}%name%{Enter 2}Tier 2 internal steps:{Space}{Enter 2}SQL:{Enter}
Return Return
; STWA not available
:*:]cmn::
Send STWA not available{Enter 2}Status: Providing information{Enter 2}Comments: {Enter 2}Thank you,{Enter}%name%{Enter 2}Tier 2 internal steps:{Space}{Enter 2}SQL:{Enter}
Return
; Need info
:*:]cmr::
Send STWA available{Enter 2}Status: Requesting information{Enter 2}Comments: {Enter 2}Thank you,{Enter}%name%{Enter 2}Tier 2 internal steps:{Space}Verify information{Enter 2}SQL:{Enter}
Return
:*:]sdrbr::
glovar_array := ini_load(glovarini)
For sec in glovar_array
{
For key, value in glovar_array[sec]
{
If (value)
{
stln_%key% := value
}
}
}
If (glovar_array["Info"].Count() > 1)
{
Send Stolen Display Replacement Basics Requests{Tab}
Send Received some requests for replacement Basics for Stolen displays @
} Else {
Send %stln_case%{Tab}
Send Received a request for replacement Basics for a Stolen display @
}
Sleep, 1000
Send Stellar
Sleep, 1500
Send {Down}{Tab}:{Enter 2}
Sleep, 1000
Send {ShiftDown}{Tab 2}{ShiftUp}
Sleep, 1000
Send {Right 17}
Sleep, 1000
Send {Enter}
Sleep, 1000
Send {Right}
Send {Enter}
Sleep, 1000
If (glovar_array["Info"].Count() > 1)
{
Loop, % glovar_array["Info"].Count() {
If (A_Index < glovar_array["Info"].Count())
{
table := "^{b}Case " A_Index "{Tab}^{b}" stln_case%A_Index% "{Tab}Stolen{Tab}" stln_s%A_Index% "{Tab}Replacement{Tab}" stln_r%A_Index% "{Enter}" stln_cc%A_Index% "{Tab}Machine PIN{Tab}" stln_v%A_Index% "{Tab}Model, Year{Tab 2}Should it qualify?{Tab 2}"
} Else {
table := "^{b}Case " A_Index "{Tab}^{b}" stln_case%A_Index% "{Tab}Stolen{Tab}" stln_s%A_Index% "{Tab}Replacement{Tab}" stln_r%A_Index% "{Enter}" stln_cc%A_Index% "{Tab}Machine PIN{Tab}" stln_v%A_Index% "{Tab}Model, Year{Tab 2}Should it qualify?"
} ; That way it doesn't put the extra line at the very end
Send %table%
}
} Else {
Send Case{Tab}%stln_case%{Tab}Stolen{Tab}%stln_s%{Tab}Replacement{Tab}%stln_r%{Enter}%stln_cc%{Tab}Machine PIN{Tab}%stln_v%{Tab}Model, Year{Tab 2}Should it qualify?{Up 2}{Tab}
}
Return
; Transferring to DTAC
:*:]DTAC::
Send The ISG Global Support Center has determined that this case is hardware related`; therefore, this case is being transferred from the Global Support Center to the ISG DTAC group. A DTAC technician will now work this case via the DTAC system and provide a recommendation in the case Text if more information is needed or if a solution has been found. Please continue to update or check on the progress of this case by using the DTAC system Case Text section moving forward.
Return
; Transferring to Tier2
:*:]rrt::
Send This case was unable to be resolved and has been transferred to another team. Our Tier 2 team is investigating the issue to find a short-term resolution. We will update you as soon as we have a recommendation.
Return
; Update after 5 business days
:*:]upd::
Send A short-term resolution still has not been identified. We are requesting an immediate update on this case from our Tier 2 team. We will contact you as soon as we have a status update.
Return
; Requesting info
:*:]req::
Send A request has been made for additional information in this case. Please provide the following information as soon as possible so this case can be resolved.
Return
; Dealer defect
:*:]ddefect::
Send We have communicated your issue to the Product Support and Development Teams. We do not have a timeframe in which your issue will be resolved. At this time, we are closing the case as those teams track the issue. If you have any questions, please have your field team contact the appropriate Product Support Representative.
Return
; Customer defect
:*:]cdefect::
Send We have communicated your issue to the Product Support and Development Teams. We do not have a timeframe in which your issue will be resolved. At this time, we are closing the case as those teams track the issue. If you have any questions, please contact your preferred dealer and the field team can contact the appropriate Product Support Representative.
Return
; Workbasket shortcuts, place mouse over Transfer button before typing
:*:]pd::
Send PCDSC
Send {Click}
Return
:*:]pr::
Send PCRRT
Send {Click}
Return
:*:]p2::
Send PCTIER2
Send {Click}
Return
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
; Email ; Email
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
; Regular
:*:]email:: :*:]email::
Send Hello,{Enter 2}{Space 3} Send Hello,{Enter 2}{Space 3}
Return Return
; German ; German
#If, ger = "1" #If (ger)
; Regular
:*:[email:: :*:[email::
Send Hallo,{Enter 2}{Space 3} Send Hallo,{Enter 2}{Space 3}
Return Return
#If #If
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
; Profile email paste ; Profile email paste
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
; So when editing Profiles, it won't let you paste in the email field. We don't like that. Make sure to let go of all keys immediatley after pressing this ; So when editing Profiles, it won't let you paste in the email field. We don't like that. Make sure to let go of all keys immediatley after pressing this
#If (mjdpaste)
#If, mjdpaste = "1" #v::
#v:: sleep, 750
sleep, 750 SendInput %clipboard%
Send %clipboard% sleep, 500
sleep, 500 send # ; to make sure the start menu isn't open for some reason
send # ; to make sure the start menu isn't open for some reason Return
return
#If #If
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
; Common Terms autocorrect and replacement ; Common Terms autocorrect and replacement
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
#If, not(racf = "LF01234") ; So that it doesn't put the fake RACF from the default ini file
:*:]me::
Send, %racf%
return
:*:[me::
Send, %racf%
return
#If
#If, not(email = "LastnameFirstname@JohnDeere.com") ; Same as above
:*:@me::
Send, %email%
Return
#If
; JD Names ; JD Names
#If, jdpn = "1" #If (jdpn)
:*:[xx::XXXXXXXXXXXXX ; I'm not gonna try and find the right amount of X's to appease the CCMS demons :*:[xx::XXXXXXXXXXXXX ; I'm not gonna try and find the right amount of X's to appease the CCMS demons
:*:]xx::XXXXXXXXXXXXX :*:]xx::XXXXXXXXXXXXX
; English ; English
:*:]at::AutoTrac :*:]at::AutoTrac
:*:]ba::Basics & AutoTrac
:*:]sf::StarFire :*:]sf::StarFire
:*:]jdld::JDLink Dashboard :*:]jdl::JDLink
:*:]jdlc::JDLink Connectivity
:*:]jdls::JDLink Subscription
:*:]jdll::JDLink
:*:]jdp::JDParts :*:]jdp::JDParts
:*:]mjd::MyJohnDeere :*:]mjd::MyJohnDeere
:*:]opsc::Operations Center :*:]opsc::Operations Center
@ -366,7 +397,6 @@ Return
:*:]bin::Virtual Inventory :*:]bin::Virtual Inventory
:*:]warrep::Warranty Reports :*:]warrep::Warranty Reports
:*:]tcsm::Territory Customer Support Manager :*:]tcsm::Territory Customer Support Manager
:*:]macrep::Machine Reports
:*:]jdsm::John Deere Software Manager :*:]jdsm::John Deere Software Manager
:*:]jddm::John Deere Data Manager :*:]jddm::John Deere Data Manager
:*:]serva::Service Advisor :*:]serva::Service Advisor
@ -390,7 +420,7 @@ Return
:*:mtg::MTG :*:mtg::MTG
::wdt::WDT ::wdt::WDT
::itc::iTC ::itc::iTC
:*:vin::VIN :*:vin::Machine PIN ; Not actually vehicles, so they don't have VINs
::gs2::GS2 ::gs2::GS2
::gs3::GS3 ::gs3::GS3
::sf1::SF1 ::sf1::SF1
@ -407,15 +437,11 @@ Return
; German ; German
#If, ger = "1" #If (ger)
:*:[at::AutoTrac :*:[at::AutoTrac
:*:[ba::Basics & AutoTrac
:*:[sf::StarFire :*:[sf::StarFire
:*:[jdlw::JDLink Web :*:[jdl::JDLink
:*:[jdld::JDLink Dashboard
:*:[jdl2::JDLink Dashboard 2.0
:*:[jdlc::JDLink Connectivity
:*:[jdls::JDLink Abonnement
:*:[jdll::JDLink
:*:[jdp::JDParts :*:[jdp::JDParts
:*:[mjd::MyJohnDeere :*:[mjd::MyJohnDeere
:*:[opsc::Einsatzzentrale :*:[opsc::Einsatzzentrale
@ -434,7 +460,6 @@ Return
:*:[warrep::Warranty Reports :*:[warrep::Warranty Reports
:*:[tp::TouchPoint :*:[tp::TouchPoint
:*:[tcsm::Technischer Bezirksleiter :*:[tcsm::Technischer Bezirksleiter
:*:[macrep::Machine Reports
:*:[jdsm::John Deere Software Manager :*:[jdsm::John Deere Software Manager
:*:[jddm::John Deere Data Manager :*:[jddm::John Deere Data Manager
:*:[serva::Service Advisor :*:[serva::Service Advisor
@ -444,23 +469,35 @@ Return
#If #If
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
; QoL Improvements ; QoL Improvements
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
:*:]me::
Send, % Format("{:U}", A_UserName)
Return
:*:[me::
Send, % Format("{:U}", A_UserName)
Return
#If !(email = "LastnameFirstname@JohnDeere.com")
:*:@me::
Send, %email%
Return
#If
#j:: ; Open the downloads folder on Win+J #j:: ; Open the downloads folder on Win+J
Run, C:\Users\%racf%\Downloads Run, C:\Users\%A_UserName%\Downloads
Return Return
#w:: ; Open My Documents folder on Win+W :*:[now::
Run, C:\Users\%racf%\Documents
Return
:*:[now:: ; Send the current time/date in ISO8601 format
:*:]now:: :*:]now::
d_t := GetDateTime("ISO8601") SendInput, % GetDateTime("ISO8601") ; Send the current time/date in ISO8601 format
SendInput, %d_t% Return
:*:[today::
:*:]today::
SendInput, % GetDateTime("date") ; Send the current date in ISO8601 format
Return Return
:*:[deg::{ASC 248} :*:[deg::{ASC 248}
@ -471,25 +508,9 @@ Return
:*:[shrug::¯\_()_/¯ :*:[shrug::¯\_()_/¯
:*:]shrug::¯\_()_/¯ :*:]shrug::¯\_()_/¯
asciiart(art)
{
For index, value in art
{
SendInput, %value%{ShiftDown}{Enter}{ShiftUp}
}
Return
}
:*:]yee::
asc_yee := ["░░░░░░░░░░░░░▄███▄▄▄░░░░░░░","░░░░░░░░░▄▄▄██▀▀▀▀███▄░░░░░","░░░░░░░▄▀▀░░░░░░░░░░░▀█░░░░","░░░░▄▄▀░░░░░░░░░░░░░░░▀█░░░","░░░█░░░░░▀▄░░▄▀░░░░░░░░█░░░","░░░▐██▄░░▀▄▀▀▄▀░░▄██▀░▐▌░░░","░░░█▀█░▀░░░▀▀░░░▀░█▀░░▐▌░░░","░░░█░░▀▐░░░░░░░░▌▀░░░░░█░░░","░░░█░░░░░░░░░░░░░░░░░░░█░░░","░░░░█░░▀▄░░░░▄▀░░░░░░░░█░░░","░░░░█░░░░░░░░░░░▄▄░░░░█░░░░","░░░░░█▀██▀▀▀▀██▀░░░░░░█░░░░","░░░░░█░░▀████▀░░░░░░░█░░░░░","░░░░░░█░░░░░░░░░░░░▄█░░░░░░","░░░░░░░██░░░░░█▄▄▀▀░█░░░░░░","░░░░░░░░▀▀█▀▀▀▀░░░░░░█░░░░░", "yee ░░░░░█░░░░░░░░░░░░█░░░░"]
asciiart(asc_yee)
Return
:*:]sunglass::
sunglass := ["▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄", "█░░░░░░░░▀█▄▀▄▀██████░▀█▄▀▄▀██████░", "░░░░░░░░░░░▀█▄█▄███▀░░░▀██▄█▄███▀░"]
asciiart(sunglass)
Return
docs: docs:
run https://www.autohotkey.com/docs/AutoHotkey.htm run https://www.autohotkey.com/docs/AutoHotkey.htm
Return Return
F19:: Run D3K.ahk