2023-07-14 10:27:33 -05:00
#Include , func . ahk
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 , Settings , D3K_Settings ; Add item to the tray to move the mouse
Menu , Tray , Add , %A_AhkVersion% , docs
;------------------------------------------------------------------------------
; Global Variables
;------------------------------------------------------------------------------
If ( glovar )
{
SetTimer , GloVar , 2000 ; Check every 2 seconds
GloVar:
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, gvMod, %glovarini%, M
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
{
Return
}
FileGetTime , gvModNew , %glovarini% , M
If ! ( gvModNew = gvMod ) ; Those two lines mean the rest of this only executes if there were changes to the ini.
{
SetTimer , GloVar , Off
hotstrings := ""
glovar_array := ini_load ( glovarini )
For sec in glovar_array
{
For key , value in glovar_array [ sec ]
{
If ( value )
{
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
Switch sec
{
Case "Serial Numbers" :
StringUpper , value , value ; Makes it uppercase
ini_write ( glovarini , key , value )
Case "Info" :
If ( key = "case" )
{
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
}
Case "Clear" : ; Will clear the ini and save its and the documentation file's contents to a log
temp := FileOpen ( docfile , "r" )
doctemp := temp . Read ()
temp . Close ()
temp := FileOpen ( glovarini , "r" )
initemp := temp . Read ()
temp . Close ()
initemp := RegExReplace ( initemp , "i)(?<=\[)clear(?=\])" , "Info" ) ; Replace the "clear" section we set with Info, case insensitive
CurrTime := GetDateTime ( "en" ) ; get the current date and time as "YYYY-MM-DD at HH:MM GMT"
temp := FileOpen ( A_MyDocuments "/D3KLog.txt" , "a" )
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
temp . Write ( " `n`n " writethis " `n`n ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" )
temp . Close ()
temp := FileOpen ( "glovarsource" , "r" )
glovarsource := temp . Read ()
temp . Close ()
temp := FileOpen ( glovarini , "w" )
temp . Write ( glovarsource ) ; Overwrite .ini for a clean slate
temp . Close ()
temp := FileOpen ( docfile , "w" ) ; Overwrites documentation for a clean slate
temp . Close ()
script := FileOpen ( glovarscript , "w" )
script . Write ( glovarstart )
script . Close ()
Run , %A_AhkPath% %glovarscript% ; Just in case. Don't want an old version running.
ToolTip , Cleared
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
Goto , GloVar ; Don't do anything else below this line, Break wasn't taking "GloVar" as a variable
Case ( RegExMatch ( sec , "i)sdrbr(\d*)" , m ) ? sec : ! sec ) : ; for cases with Stolen displays
If ( m1 ) ; sometimes there are multiple stolen displays, this is to account for that.
{
writethis := "[Serial Numbers]"
Loop , % m1
writethis .= " `n s" A_Index "=`nr" A_Index "=`ncc" A_Index "=`nv" A_Index "="
writethis .= " `n [Info]"
Loop , % m1
writethis .= " `n case" A_Index "="
} Else {
writethis := "[Serial Numbers]`ns=`nr=`ncc=`nv=`n[Info]`ncase=" glovar_array [ sec , "case" ]
}
temp := FileOpen ( glovarini , "w" )
temp . Write ( writethis )
temp . Close ()
script := FileOpen ( glovarscript , "w" )
script . Write ( glovarstart )
script . Close ()
SetTimer , GloVar , On
Goto , GloVar ; Don't do anything else below this line, Break wasn't taking "GloVar" as a variable
}
hotstrings .= " `n :*:$" key "::" value
}
}
}
file := FileOpen ( glovarini , "r" )
temp := file . Read ()
file . Close ()
temp := RegExReplace ( temp , " `a m)^[\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
}
;------------------------------------------------------------------------------
; Settings window
;------------------------------------------------------------------------------
D3K_Settings:
!+ \:: Run Settings . ahk ; Alt+Shift+\
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
;------------------------------------------------------------------------------
#If ( mansol ) ; checks from the variable thats set from the .sett_ini file
!+S:: Run Mansol_Opener . ahk ; Alt+Shift+S
#If
;------------------------------------------------------------------------------
; Case Formatter
;------------------------------------------------------------------------------
#If ( CaseFormatter )
Pause :: Run Case_Formatter . ahk ; The Pause|Break key
#If
;-------------------------------------------------------------------------------
; Special Characters
;-------------------------------------------------------------------------------
#If ( ger )
!s:: Send { U + 00 DF } ;Alt+S scharfes s / Eszett / ß
!a:: Send { U + 00E4 } ;Alt+a ä
+!A:: Send { U + 00 C4 } ;Alt+A Ä
!o:: Send { U + 00 F6 } ;Alt+o ö
+!O:: Send { U + 00 D6 } ;Alt+O Ö
!u:: Send { U + 00 FC } ;Alt+u ü
+!U:: Send { U + 00 DC } ;Alt+U Ü
#If
;-------------------------------------------------------------------------------
; Capitalise dates
;-------------------------------------------------------------------------------
:: monday :: Monday
:: tuesday :: Tuesday
:: wednesday :: Wednesday
:: thursday :: Thursday
:: friday :: Friday
:: saturday :: Saturday
:: sunday :: Sunday
:: january :: January
:: february :: February
:: april :: April
:: june :: June
:: july :: July
:: august :: August
:: september :: September
:: october :: October
:: november :: November
:: december :: December
; German
#If ( ger )
::montag:: Montag
::dienstag:: Dienstag
::mittwoch:: Mittwoch
::donnerstag:: Donnerstag
::freitag:: Freitag
::samstag:: Samstag
::sonntag:: Sonntag
::januar:: Januar
::februar:: Februar
::märz:: März
::mai:: Mai
::juni:: Juni
::juli:: Juli
::oktober:: Oktober
::dezebmer:: Dezember
#If
;------------------------------------------------------------------------------
; Copypastas
;------------------------------------------------------------------------------
; STWA Applied
:*: ] cmy ::
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
; 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 ::
Send Hello ,{ Enter 2 }{ Space 3 }
Return
; German
#If ( ger )
:*: [ email ::
Send Hallo ,{ Enter 2 }{ Space 3 }
Return
#If
;------------------------------------------------------------------------------
; 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
#If ( mjdpaste )
#v::
sleep , 750
SendInput %clipboard%
sleep , 500
send # ; to make sure the start menu isn't open for some reason
Return
#If
;------------------------------------------------------------------------------
; Common Terms autocorrect and replacement
;------------------------------------------------------------------------------
; JD Names
#If ( jdpn )
:*: [ xx :: XXXXXXXXXXXXX ; I'm not gonna try and find the right amount of X's to appease the CCMS demons
:*: ] xx :: XXXXXXXXXXXXX
; English
:*: ] at :: AutoTrac
:*: ] ba :: Basics & AutoTrac
:*: ] sf :: StarFire
:*: ] jdl :: JDLink
:*: ] jdp :: JDParts
:*: ] mjd :: MyJohnDeere
:*: ] opsc :: Operations Center
:*: ] seccon :: Section Control
:*: ] gs :: GreenStar
:*: ] cc :: CommandCenter
:*: ] fc :: Field Connect
:*: ] rs :: RowSense
:*: ] sub :: subscription
:*: ] ss :: Stellar Support
:*: ] tman :: Technical Manual
:*: ] oman :: Operator 's Manual
:*: ] hl3 :: HarvestLab 3000
:*: ] hlo :: Original HarvestLab
:*: ] bin :: Virtual Inventory
:*: ] warrep :: Warranty Reports
:*: ] tcsm :: Territory Customer Support Manager
:*: ] jdsm :: John Deere Software Manager
:*: ] jddm :: John Deere Data Manager
:*: ] serva :: Service Advisor
:*: ] muc :: Master Unlock Code
:*: ] asmn :: Asset Manager
:*: ] bsm :: Base Station Manager
:*: ] sas :: See & Spray
::rowsense:: RowSense
:*: comar :: COMAR
::mrtk:: mRTK
::rda:: RDA
::rtk:: RTK
::autotrac:: AutoTrac
:*: ccms :: CCMS
:*: dtac :: DTAC
::tcsm:: TCSM
::itec:: iTEC Pro
::ssu:: SSU
::atu:: ATU
:*: mtg :: MTG
::wdt:: WDT
::itc:: iTC
:*: vin :: Machine PIN ; Not actually vehicles, so they don't have VINs
::gs2:: GS2
::gs3:: GS3
::sf1:: SF1
::sf2:: SF2
::sf3:: SF3
::sf4:: SF4
::xid:: xID
::pmcalc:: PMCalc
::vat:: VAT
:*: racf :: RACF
::igrade:: iGrade
:*: JDCP :: JDCP
:*: ISOBUS :: ISOBUS
; German
#If ( ger )
:*: [ at :: AutoTrac
:*: [ ba :: Basics & AutoTrac
:*: [ sf :: StarFire
:*: [ jdl :: JDLink
:*: [ jdp :: JDParts
:*: [ mjd :: MyJohnDeere
:*: [ opsc :: Einsatzzentrale
:*: [ seccon :: Teilbreitensteuerung
:*: [ gs :: GreenStar
:*: [ cc :: CommandCenter
:*: [ fc :: Field Connect
:*: [ rs :: RowSense
:*: [ sub :: Abonnement
:*: [ ss :: Stellar Support
:*: [ tman :: Technische Betriebsanleitung
:*: [ oman :: Betriebsanleitung
:*: [ hl3 :: HarvestLab 3000
:*: [ hlo :: Originales HarvestLab
:*: [ bin :: Virtuellen Bestand
:*: [ warrep :: Warranty Reports
:*: [ tp :: TouchPoint
:*: [ tcsm :: Technischer Bezirksleiter
:*: [ jdsm :: John Deere Software Manager
:*: [ jddm :: John Deere Data Manager
:*: [ serva :: Service Advisor
:*: [ muc :: Master Unlock Code
:*: [ asmn :: Asset Manager
:*: [ bsm :: Base Station Manager
#If
;------------------------------------------------------------------------------
; 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
2023-07-17 12:30:38 -05:00
2023-07-14 10:27:33 -05:00
#j:: ; Open the downloads folder on Win+J
Run , C : \Users \%A_UserName% \Downloads
Return
:*: [ now ::
:*: ] now ::
SendInput , % GetDateTime ( "ISO8601" ) ; Send the current time/date in ISO8601 format
Return
:*: [ today ::
:*: ] today ::
SendInput , % GetDateTime ( "date" ) ; Send the current date in ISO8601 format
Return
:*: [ deg :: { ASC 248 }
:*: ] deg :: { ASC 248 }
:*: [ eq :: { ASC 247 }
:*: ] eq :: { ASC 247 }
:*: [ shrug :: ¯ \_ ( ツ ) _ / ¯
:*: ] shrug :: ¯ \_ ( ツ ) _ / ¯
:*: [ ltd :: License to Deere ™
:*: ] ltd :: License to Deere ™
docs:
run https :// www . autohotkey . com / docs / AutoHotkey . htm
Return
F19:: Run D3K . ahk