From 03f34dd75e0369b288bb85edd1d224a9ec6a5cab Mon Sep 17 00:00:00 2001 From: David Daily Date: Fri, 28 Aug 2026 12:17:30 -0500 Subject: [PATCH] upgrade to ahk v2 --- D3K.ahk | 561 ++++++++++++++++++++++---------------------------------- 1 file changed, 221 insertions(+), 340 deletions(-) diff --git a/D3K.ahk b/D3K.ahk index 1a70f01..5088995 100644 --- a/D3K.ahk +++ b/D3K.ahk @@ -1,128 +1,100 @@ -#Include, func.ahk +#Include "func.ahk" +#Include Peep.v2.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 +DetectHiddenWindows true +A_TrayMenu.Add("&Mouse Mover", MsMv) ; Add item to the tray to move the mouse +A_TrayMenu.Add("&Settings", D3K_Settings) ; Add item to the tray for the settings window +A_TrayMenu.Add(A_AhkVersion, docs) ;------------------------------------------------------------------------------ ; Global Variables ;------------------------------------------------------------------------------ -If (glovar) +If (settings["GloVar"]) { - SetTimer, GloVar, 2000 ; Check every 2 seconds + global glovarini := A_MyDocuments "\GloVar.ini" ; Location of the ini that the user modifies + global gvMod := FileGetTime(glovarini) + 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 + GloVar(*){ + If !(WinActive("GloVar.ini")){ ; Only run when the window isn't active, prevents accidential editing by the script while the user is editing + gvModNew := FileGetTime(glovarini) 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 + glovarscript := A_Temp "\GloVar.ahk" ; self-contained, no reference to any other AHK scripts + glovarstart := "#Requires AutoHotkey v2`n#SingleInstance force`n#NoTrayIcon`n" + hotstrings := "" ; Stop ahk from complaining about it not having a value. Just ignore it bro + SetTimer(GloVar, 0) ; Stop the timer while we work on the file + glovar_map := ini_load(glovarini) + For section in glovar_map { + For key, value in glovar_map[section] { - For key, value in glovar_array[sec] + Switch section, 0 { - 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": + value := StrUpper(value) ; Makes it uppercase + ini_write(glovarini, key, value) + Case "Info": + If (key = "case") { - 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 + value := StrUpper(value) ; Makes it uppercase, just in case it was manually typed + ini_write(glovarini, key, value) ; Writes the properly formatted case number to glovar.ini } - hotstrings .= "`n:*:$" key "::" value - } + Case "Clear": ; Will clear the ini and save its and the documentation file's contents to a log + temp := FileOpen(settings["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 + temp := FileOpen(A_MyDocuments "/D3KLog.txt", "a") + writethis := "Case on " FormatTime(A_NowUTC, "yyyy-MM-dd") "`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(settings["DocFile"], "w") ; Overwrites documentation for a clean slate + temp.Close() + script := FileOpen(glovarscript, "w") + script.Encoding := "UTF-8" + script.Write(glovarstart) + script.Close() + Run(glovarscript) ; Just in case. Don't want an old version running. + ToolTip("Cleared") + Sleep(500) + ToolTip() + global gvMod := FileGetTime(glovarini) ; Make sure that this script knows what the ini was changed to so it doesn't constantly run through the above code + SetTimer(GloVar, 2000) ; Check every 2 seconds + Return } + If (value){ ; skip trying to write a hotstring that doesn't do anything + hotstrings .= "`n:*:$" key "::" value + } + }} + If (hotstrings){ ; skip trying to write to the file if there aren't any hotstrings (as in any time it's cleared) + script := FileOpen(glovarscript, "w") + script.Write(glovarstart hotstrings) + script.Close() + Run(A_AhkPath " " glovarscript) + ToolTip("GloVars updated") + Sleep(500) + ToolTip() + } + global gvMod := FileGetTime(glovarini) ; Make sure that this script knows what the ini was changed to so it doesn't constantly run through the above code + SetTimer(GloVar, 2000) ; Check every 2 seconds + If (settings["msmv"] = "no-running" or settings["msmv"] = "yes-running") ; might as well update the checkboxes in the menu + { + A_TrayMenu.Check("&Mouse Mover") + } else { ; have to include ampersand to refer to it by name! + A_TrayMenu.UnCheck("&Mouse Mover") } - 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 } + }} Return } @@ -130,59 +102,60 @@ If (glovar) ;------------------------------------------------------------------------------ ; Settings window ;------------------------------------------------------------------------------ -D3K_Settings: -!+\::Run Settings.ahk ; Alt+Shift+\ -Return +!+\::D3K_Settings() ; Alt+Shift+\ +D3K_Settings(*) +{ + Run("Settings.ahk") +} +docs(*){ + Run("https://www.autohotkey.com/docs/AutoHotkey.htm") +} ;------------------------------------------------------------------------------ -; Mouse Mover +; Mouse Mover todo: autostart ;------------------------------------------------------------------------------ -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 - +MsMv(ItemName, ItemPos, MyMenu) +{ + settings := ini_load(sett_ini) + switch settings["msmv"] { ; couldn't find a good way to detect if it's running or not so now we have this. + case "always-running": ; run at refresh of d3k. if currently running, stop + Run A_ScriptDir "\msmv.ahk off" + MyMenu.Uncheck(ItemName) + ini_write(sett_ini, "msmv", "always-stopped") + case "always-stopped": ; run at refresh, currently stopped. if currently stopped, start + Run A_ScriptDir "\msmv.ahk on" + MyMenu.Check(ItemName) + ini_write(sett_ini, "msmv", "always-running") + case "no-running": ; don't run at refresh, currently running. if currently running, stop + Run A_ScriptDir "\msmv.ahk off" + MyMenu.Uncheck(ItemName) + ini_write(sett_ini, "msmv", "no-stopped") + case "no-stopped": ; don't run at refresh, currently stopped. if currently stopped, start + Run A_ScriptDir "\msmv.ahk on" + MyMenu.Check(ItemName) + ini_write(sett_ini, "msmv", "no-running") + default: + MsgBox("Unexpected value `"" settings["msmv"] "`" in D3Ksettings.ini") + Reload } - Else - { - Run, %A_AhkPath% "msmv.ahk" "on" - msmv_active := True - Menu, Tray, Check, &Mouse Mover +} + +cleanup(*) ; to make sure msmv closes when we close d3k +{ + settings := ini_load(sett_ini) + switch settings["msmv"] { ; couldn't find a good way to detect if it's running or not so now we have this. + case "always-running": ; run at refresh of d3k. if currently running, stop + Run A_ScriptDir "\msmv.ahk off" + ini_write(sett_ini, "msmv", "always-stopped") + case "no-running": ; don't run at refresh, currently running. if currently running, stop + Run A_ScriptDir "\msmv.ahk off" + ini_write(sett_ini, "msmv", "no-stopped") } -Return +} +OnExit cleanup -;------------------------------------------------------------------------------ -; 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+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 Ü -#If ;------------------------------------------------------------------------------- ; Capitalise dates @@ -206,7 +179,7 @@ Return ::december::December ; German -#If (ger) +#HotIf (settings["German"]) ::montag::Montag ::dienstag::Dienstag ::mittwoch::Mittwoch @@ -223,163 +196,45 @@ Return ::juli::Juli ::oktober::Oktober ::dezebmer::Dezember -#If +#HotIf -;------------------------------------------------------------------------------ -; 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 +{ + Send "Hello,{Enter 2}{Space 3}" +} ; German -#If (ger) -:*:[email:: - Send Hallo,{Enter 2}{Space 3} -Return -#If - +#HotIf (settings["German"]) +:*:[email::{ + Send "Hallo,{Enter 2}{Space 3}" +} +#HotIf ;------------------------------------------------------------------------------ ; 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 +{ + Sleep(750) + SendInput(A_Clipboard) +} ;------------------------------------------------------------------------------ ; 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 + +#HotIf (settings["JDProductNames"]) ; English :*:]at::AutoTrac - :*:]ba::Basics & AutoTrac - :*:]sf::StarFire - :*:]jdl::JDLink + :*:]bna::Basics & AutoTrac + :*:]bfs::Basics for Services + :*:]bas::Basics, AutoTrac, and Section Control + :*:]jlb::JDLink Boost :*:]jdp::JDParts :*:]mjd::MyJohnDeere :*:]opsc::Operations Center @@ -388,7 +243,6 @@ Return :*:]cc::CommandCenter :*:]fc::Field Connect :*:]rs::RowSense - :*:]sub::subscription :*:]ss::Stellar Support :*:]tman::Technical Manual :*:]oman::Operator's Manual @@ -401,48 +255,55 @@ Return :*:]jddm::John Deere Data Manager :*:]serva::Service Advisor :*:]muc::Master Unlock Code - :*:]asmn::Asset Manager :*:]bsm::Base Station Manager - - :*:]sas::See & Spray + :*:]lm::License Manager + :*:]sns::See & Spray + :*:]s4::SF-RTK + :*:]ls::licenses + :*:]sub::subscription + :*:]agt::AgTech Code ::rowsense::RowSense - :*:comar::COMAR + ::comar::COMAR + ::comars::COMARs ::mrtk::mRTK ::rda::RDA ::rtk::RTK ::autotrac::AutoTrac - :*:ccms::CCMS - :*:dtac::DTAC + ::ccms::CCMS + ::dtac::DTAC ::tcsm::TCSM ::itec::iTEC Pro ::ssu::SSU ::atu::ATU - :*:mtg::MTG - ::wdt::WDT + :*:mtg::modem ::itc::iTC - :*:vin::Machine PIN ; Not actually vehicles, so they don't have VINs + ::vin::Machine PIN ; Not actually vehicles, so they don't have VINs ::gs2::GS2 ::gs3::GS3 + ::g4::G4 + ::g5::G5 ::sf1::SF1 ::sf2::SF2 ::sf3::SF3 - ::sf4::SF4 ::xid::xID ::pmcalc::PMCalc - ::vat::VAT - :*:racf::RACF + ::VAT::VAT + ::RACF::RACF ::igrade::iGrade - :*:JDCP::JDCP - :*:ISOBUS::ISOBUS - + ::ISOBUS::ISOBUS + ::JDCP::JDCP + ::LORT::LORT + ::ISG::ISG ; German -#If (ger) +#HotIf (settings["German"]) :*:[at::AutoTrac - :*:[ba::Basics & AutoTrac - :*:[sf::StarFire - :*:[jdl::JDLink + :*:[bna::Basics & AutoTrac + :*:[bfs::Basics for Services + :*:[bas::Basics, AutoTrac, and Section Control + :*:[sf4::SF-RTK + :*:[jlb::JDLink Boost :*:[jdp::JDParts :*:[mjd::MyJohnDeere :*:[opsc::Einsatzzentrale @@ -459,7 +320,6 @@ Return :*:[hlo::Originales HarvestLab :*:[bin::Virtuellen Bestand :*:[warrep::Warranty Reports - :*:[tp::TouchPoint :*:[tcsm::Technischer Bezirksleiter :*:[jdsm::John Deere Software Manager :*:[jddm::John Deere Data Manager @@ -467,55 +327,76 @@ Return :*:[muc::Master Unlock Code :*:[asmn::Asset Manager :*:[bsm::Base Station Manager -#If + :*:[lm::License Manager + :*:[sns::See & Spray + :*:[s4::SF-RTK + :*:[ls::Lizenz + :*:[agt::AgTech Code +#HotIf + ;------------------------------------------------------------------------------ ; 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 +{ + Send StrUpper(A_UserName) +} -#j:: ; Open the downloads folder on Win+J - Run, C:\Users\%A_UserName%\Downloads -Return +#HotIf !(settings["Email"] = "LastnameFirstname@JohnDeere.com") + :*:@em:: + { + SendInput(settings["Email"]) + } +#HotIf + +; Open the downloads folder on Win+J +#j::Run("C:\Users\" A_UserName "\Downloads") + :*:[now:: :*:]now:: - SendInput, % GetDateTime("ISO8601") ; Send the current time/date in ISO8601 format -Return +{ + SendInput(FormatTime(A_NowUTC, "yyyy-MM-dd") "T" FormatTime(A_NowUTC, "H:mm'Z'")) ; Send the current time & date in ISO8601 format +} +; Send the current date in ISO8601 format :*:[today:: :*:]today:: - SendInput, % GetDateTime("date") ; Send the current date in ISO8601 format -Return +{ + + SendInput(FormatTime(A_NowUTC, "yyyy-MM-dd")) +} :*:[deg::{ASC 248} :*:]deg::{ASC 248} :*:[eq::{ASC 247} :*:]eq::{ASC 247} -:*:[shrug::¯\_(ツ)_/¯ -:*:]shrug::¯\_(ツ)_/¯ -:*:[ltd::License to Deere™ -:*:]ltd::License to Deere™ +:*:[shrug:: +:*:]shrug:: +{ + SendInput("¯\_(ツ)_/¯ ") ; Somehow the space at the end is very important +} +:*:[pwd:: +:*:]pwd:: +{ + Send "{AppsKey}" + Sleep(100) + Send "{Up}" + Sleep(50) + Send "{Enter}" + Sleep(50) + Send "{Enter}" + Sleep(100) + Send "{Enter}" + Sleep(750) + Send "{Enter}" +} -docs: - run https://www.autohotkey.com/docs/AutoHotkey.htm -Return - -F19:: Run D3K.ahk \ No newline at end of file +F19::Reload \ No newline at end of file