d3k/D3K.ahk

516 lines
16 KiB
AutoHotkey
Raw Normal View History

2020-05-19 10:16:33 -05:00
#Include, func.ahk
2019-12-17 10:57:15 -06:00
Menu, Tray, Icon, shell32.dll, 283 ; Set the tray icon to a keyboard
2023-02-01 14:43:37 -06:00
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
2021-07-20 10:24:19 -05:00
Menu, Tray, Add, %A_AhkVersion%, docs
2019-12-17 10:57:15 -06:00
;------------------------------------------------------------------------------
; Global Variables
;------------------------------------------------------------------------------
2023-02-01 14:43:37 -06:00
If (glovar)
2019-12-17 10:57:15 -06:00
{
SetTimer, GloVar, 2000 ; Check every 2 seconds
GloVar:
2023-02-01 14:43:37 -06:00
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
2019-12-17 10:57:15 -06:00
{
2023-02-01 14:43:37 -06:00
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
2019-12-17 10:57:15 -06:00
{
2023-02-01 14:43:37 -06:00
For key, value in glovar_array[sec]
{
2023-02-01 14:43:37 -06:00
If (value)
{
2023-02-01 14:43:37 -06:00
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
{
2023-02-01 14:43:37 -06:00
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 .= "`ns" A_Index "=`nr" A_Index "=`ncc" A_Index "=`nv" A_Index "="
writethis .= "`n[Info]"
Loop, % m1
writethis .= "`ncase" 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
}
2023-02-01 14:43:37 -06:00
hotstrings .= "`n:*:$" key "::" value
}
}
}
2023-02-01 14:43:37 -06:00
file := FileOpen(glovarini, "r")
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
2019-12-17 10:57:15 -06:00
}
Return
}
;------------------------------------------------------------------------------
; Settings window
;------------------------------------------------------------------------------
2023-02-01 14:43:37 -06:00
D3K_Settings:
2019-12-17 10:57:15 -06:00
!+\::Run Settings.ahk ; Alt+Shift+\
2023-02-01 14:43:37 -06:00
Return
2019-12-17 10:57:15 -06:00
2023-02-01 14:43:37 -06:00
;------------------------------------------------------------------------------
; Mouse Mover
;------------------------------------------------------------------------------
2021-07-20 10:24:19 -05:00
Mouse_Mover:
2023-02-01 14:43:37 -06:00
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
2019-12-17 10:57:15 -06:00
2023-02-01 14:43:37 -06:00
2019-12-17 10:57:15 -06:00
;------------------------------------------------------------------------------
; DTAC Solution Opener
;------------------------------------------------------------------------------
2023-02-01 14:43:37 -06:00
#If (mansol) ; checks from the variable thats set from the .sett_ini file
2019-12-17 10:57:15 -06:00
!+S::Run Mansol_Opener.ahk ; Alt+Shift+S
2023-02-01 14:43:37 -06:00
#If
2019-12-17 10:57:15 -06:00
;------------------------------------------------------------------------------
; Case Formatter
;------------------------------------------------------------------------------
2023-02-01 14:43:37 -06:00
#If (CaseFormatter)
2019-12-17 10:57:15 -06:00
Pause::Run Case_Formatter.ahk ; The Pause|Break key
#If
;-------------------------------------------------------------------------------
; Special Characters
;-------------------------------------------------------------------------------
2023-02-01 14:43:37 -06:00
#If (ger)
!s::Send {U+00DF} ;Alt+S scharfes s / Eszett / ß
!a::Send {U+00E4} ;Alt+a ä
+!A::Send {U+00C4} ;Alt+A Ä
!o::Send {U+00F6} ;Alt+o ö
+!O::Send {U+00D6} ;Alt+O Ö
!u::Send {U+00FC} ;Alt+u ü
+!U::Send {U+00DC} ;Alt+U Ü
2019-12-17 10:57:15 -06:00
#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
2023-02-01 14:43:37 -06:00
#If (ger)
2019-12-17 10:57:15 -06:00
::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
;------------------------------------------------------------------------------
2023-02-01 14:43:37 -06:00
; 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
2019-12-17 10:57:15 -06:00
;------------------------------------------------------------------------------
; Email
;------------------------------------------------------------------------------
:*:]email::
2020-03-10 15:38:31 -05:00
Send Hello,{Enter 2}{Space 3}
2023-02-01 14:43:37 -06:00
Return
2020-03-10 15:38:31 -05:00
2019-12-17 10:57:15 -06:00
; German
2023-02-01 14:43:37 -06:00
#If (ger)
2019-12-17 10:57:15 -06:00
:*:[email::
2020-03-10 15:38:31 -05:00
Send Hallo,{Enter 2}{Space 3}
2023-02-01 14:43:37 -06:00
Return
2019-12-17 10:57:15 -06:00
#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
2023-02-01 14:43:37 -06:00
#If (mjdpaste)
#v::
sleep, 750
SendInput %clipboard%
sleep, 500
send # ; to make sure the start menu isn't open for some reason
Return
2019-12-17 10:57:15 -06:00
#If
;------------------------------------------------------------------------------
; Common Terms autocorrect and replacement
;------------------------------------------------------------------------------
; JD Names
2023-02-01 14:43:37 -06:00
#If (jdpn)
2019-12-17 10:57:15 -06:00
:*:[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
2023-02-01 14:43:37 -06:00
:*:]ba::Basics & AutoTrac
2021-07-20 10:24:19 -05:00
:*:]sf::StarFire
2023-02-01 14:43:37 -06:00
:*:]jdl::JDLink
2019-12-17 10:57:15 -06:00
:*:]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
2020-02-27 02:42:00 -06:00
:*:]oman::Operator's Manual
2019-12-17 10:57:15 -06:00
:*:]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
2021-07-20 10:24:19 -05:00
:*:]bsm::Base Station Manager
2019-12-17 10:57:15 -06:00
::rowsense::RowSense
2021-07-20 10:24:19 -05:00
:*:comar::COMAR
2019-12-17 10:57:15 -06:00
::mrtk::mRTK
::rda::RDA
::rtk::RTK
::autotrac::AutoTrac
2021-07-20 10:24:19 -05:00
:*:ccms::CCMS
:*:dtac::DTAC
2019-12-17 10:57:15 -06:00
::tcsm::TCSM
::itec::iTEC Pro
::ssu::SSU
::atu::ATU
:*:mtg::MTG
::wdt::WDT
::itc::iTC
2023-02-01 14:43:37 -06:00
:*:vin::Machine PIN ; Not actually vehicles, so they don't have VINs
2019-12-17 10:57:15 -06:00
::gs2::GS2
::gs3::GS3
::sf1::SF1
::sf2::SF2
::sf3::SF3
::sf4::SF4
::xid::xID
::pmcalc::PMCalc
::vat::VAT
2020-01-14 08:37:11 -06:00
:*:racf::RACF
2020-01-21 05:05:31 -06:00
::igrade::iGrade
2021-07-20 10:24:19 -05:00
:*:JDCP::JDCP
:*:ISOBUS::ISOBUS
2019-12-17 10:57:15 -06:00
; German
2023-02-01 14:43:37 -06:00
#If (ger)
2019-12-17 10:57:15 -06:00
:*:[at::AutoTrac
2023-02-01 14:43:37 -06:00
:*:[ba::Basics & AutoTrac
2019-12-17 10:57:15 -06:00
:*:[sf::StarFire
2023-02-01 14:43:37 -06:00
:*:[jdl::JDLink
2019-12-17 10:57:15 -06:00
:*:[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
2021-07-20 10:24:19 -05:00
:*:[bsm::Base Station Manager
2019-12-17 10:57:15 -06:00
#If
;------------------------------------------------------------------------------
; QoL Improvements
;------------------------------------------------------------------------------
2023-02-01 14:43:37 -06:00
:*:]me::
Send, % Format("{:U}", A_UserName)
Return
2019-12-17 10:57:15 -06:00
2023-02-01 14:43:37 -06:00
:*:[me::
Send, % Format("{:U}", A_UserName)
Return
#If !(email = "LastnameFirstname@JohnDeere.com")
:*:@me::
Send, %email%
2019-12-17 10:57:15 -06:00
Return
2023-02-01 14:43:37 -06:00
#If
2019-12-17 10:57:15 -06:00
2023-02-01 14:43:37 -06:00
#j:: ; Open the downloads folder on Win+J
Run, C:\Users\%A_UserName%\Downloads
2020-03-10 15:38:31 -05:00
Return
2020-03-31 13:17:19 -05:00
2023-02-01 14:43:37 -06:00
:*:[now::
2021-07-20 10:24:19 -05:00
:*:]now::
2023-02-01 14:43:37 -06:00
SendInput, % GetDateTime("ISO8601") ; Send the current time/date in ISO8601 format
Return
:*:[today::
:*:]today::
SendInput, % GetDateTime("date") ; Send the current date in ISO8601 format
2021-07-20 10:24:19 -05:00
Return
2020-03-31 13:17:19 -05:00
:*:[deg::{ASC 248}
:*:]deg::{ASC 248}
:*:[eq::{ASC 247}
:*:]eq::{ASC 247}
:*:[shrug::¯\_()_/¯
:*:]shrug::¯\_()_/¯
2021-07-20 10:24:19 -05:00
docs:
run https://www.autohotkey.com/docs/AutoHotkey.htm
2023-02-01 14:43:37 -06:00
Return
F19:: Run D3K.ahk