Unplug Your Mouse Workflow Automation with AutoHotKey

Andrew Weidner Robert Wilson Mice make simple things easy and complex things impossible. Mice make simple things easy and complex things impossible.

Mice are useful and fun, but they tend to slow down repetitive file management tasks. Do things faster with your keyboard. Keyboard Optimization: why type fifty-two keys when you can do the same thing with two?

(Ctrl + 4) Overview

• Keyboard Shortcuts • AutoHotkey Scripts • Tools & References • Demonstration Keyboard Shortcuts

Windows Explorer

Tab = cycle fields (add Shift to reverse) Alt + Tab = application switcher Enter = open selected file/folder Backspace = return to parent folder Alt + F + M = rename selected file/folder (also F2) Alt + F + W + F = create a new folder Home/End = go to first/last file

Keyboard Shortcuts

ACDSee Viewer

Page Down = next image Page Up = previous image (NumPad) * = fit image to (NumPad) + = zoom in (NumPad) - = zoom out Arrow Keys = move around the image Home/End = go to first/last image

Keyboard Shortcuts

Mozilla Firefox

Ctrl + T = open new tab Ctrl + Tab = cycle tabs (add Shift to reverse) Alt + Left = go to previous page (also Backspace) Ctrl + L = focus on address bar Tab = cycle links (add Shift to reverse) Arrow Keys = scroll through the page Ctrl + B = show/hide bookmarks sidebar

AutoHotkey Scripts

Simple: another Enter key

; plain text file with .AHK extension ; comments begin with a semicolon

; define the hotkey: Alt + a !a:: ; define the action Send, {Enter}

AutoHotkey Scripts

Simple: type some text

; hotkey: Ctrl + 1 ^1::

; use the ` symbol before a literal comma ; `n inserts a new line, `t inserts a tab Send, Sincerely`,`n`t

AutoHotkey Scripts

Complex: create a folder

; hotkey: Win + k #k:: Send, {AltDown}f{AltUp} Sleep, 200 Send, w Sleep, 200 Send, f

AutoHotkey Scripts

Complex: rename a file

; hotkey: Ctrl + Alt + r ^!r:: Send, {F2} Sleep, 200 Send, {Home} Sleep, 200 Send, 2013

AutoHotkey Scripts

Complex: paste a file in multiple folders

Pause::Pause ; pause script with the Pause key !v:: Send, {CtrlDown}v{CtrlUp} sleep, 400 Loop { Send, {Backspace} Sleep, 1400 Send, {Down} Sleep, 400 Send, {Enter} Sleep, 800 Send, {CtrlDown}v{CtrlUp} Sleep, 400 }

AutoHotkey Scripts

Complex: open with Photoshop

NumpadDot & NumpadEnter:: ClipMem = %% ; save current clipboard value clipboard = Send, ^ ; copy the file name ClipWait ; insert the file name at the end of the Photoshop Run command Run, C:\Program Files\Adobe\Adobe Photoshop CS5 (64 Bit)\Photoshop.exe %clipboard% clipboard = %ClipMem% ; restore the original clipboard value Return

AutoHotkey Scripts

Application: ETD_Metadata

Finds keywords in author-provided metadata and enters them in an XML file. ETD Metadata: Part 1 Open author-provided metadata

#Home:: DefinedAddress =  Declare blank variables for future use

DefinedKeywords = KeywordMeta = Clipboard =  Copy file path

SendInput, {F4}{ControlDown}a{ControlUp} sleep, 200 Send ^c ClipWait Sleep, 100 DefinedAddress = %clipboard%  Assign file path to variable

SetWorkingDir, %DefinedAddress%  Open index.docx file in Wordpad Run, Wordpad.exe index.docx WinWaitActive, index ETD Metadata: Part 2 Find Keywords Keywords:  Function title Sleep, 100 clipboard =  Open Find dialog SendInput, {CtrlDown}f{ CtrlUp} WinWaitActive, Find Sleep, 100  Type ‘Keywords’ SendInput, Keywords Sleep, 100 SendInput, {Enter}{Esc} Sleep, 100 SendInput, {Tab} Send ^c  Copy text ClipWait  Store text in variable for later use DefinedKeywords = %clipboard% ETD Metadata: Part 3 Create GUI for Keyword Input

/* Comma + space occurrences in DefinedKeywords variable are replaced with Tab so keywords are sent to appropriate fields later */ StringReplace, DefinedKeywords, DefinedKeywords, `,%A_Space%, %a_tab%, all

; create window for keyword input, separated into individual variables KeywordWindow: Gui, 30:+AlwaysOnTop Gui, 30:Add, Text, x6 y6 w100, Keyword1: Gui, 30:Add, Edit, x6 y+5 w100 vKeyword1

Gui, 30:Add, Text, x6 y6 w100, Keyword2: Gui, 30:Add, Edit, x6 y+5 w100 vKeyword2 ; code repeats to Keyword10 ETD Metadata: Part 4 Send Keywords ; submit each field as a defined variable: Keyword1-10

Gui, 30:Add, Button, x6 default, OK  Create OK Button Gui, 30:Show,, Keywords

Sleep, 100 WinActivate, Keywords SendInput, %DefinedKeywords%  Send formatted keywords Sleep, 100

30GuiClose: 30ButtonOK:  Close Window Gui, 30:Submit ETD Metadata: Part 5 Open Metadata XML File

IfExist, C:\Program Files\jEdit\jedit.exe  Open metadata.xml in jEdit (.exe or .bat) Run, C:\Program Files\jEdit\jedit.exe metadata.xml Else Run, C:\Program Files\jEdit\jedit.bat metadata.xml

WinWait, jEdit  Wait for jEdit Sleep, 1000 to load the file

SendInput, ^{Home}  Move to Sleep, 200 top of file

Send, {ControlDown}f{ControlUp} Sleep, 200  Open Search window ETD Metadata: Part 6 Prepare for Keyword Entry WinWait, Search And Replace,  Wait for Search window to open IfWinNotActive, Search And Replace, , WinActivate, Search And Replace, WinWaitActive, Search And Replace,  Search for ‘#Keywordmeta’ SendInput , {#}{ShiftDown}k{ShiftUp}eywordmeta{Enter} Sleep, 200  Types ‘#Keywordmeta’ SendInput , {Esc}  Close Search window ‘#Keywordmeta’ is highlighted

ETD Metadata: Part 7 Enter Keywords If (Keyword1 <> "")  Send keywords stored in SendInput, %Keyword1% variables (IF they exist!) Sleep, 100 If (Keyword2 <> "") SendInput, `r%Keyword2% Sleep, 100 ; code repeats to Keyword10 Tools & References

• AutoHotkey Recorder: produces script code • Mobile AutoHotkey: use on any Windows system • AutoIt Window Spy: screen coordinates & title info • Website: www.autohotkey.com • Documentation: www.autohotkey.com/docs • Forum: www.autohotkey.com/board

Demonstration

• ETD_Metadata (rw) • SuperPaste (rw) • OpenWithPhotoshop (rw) • TDNP_Microfilm (aw) • NewspaperNotes (aw) • DashboardTools (aw)