मेरी scripts चुराकर AutoHotKey सीखें
(hillelwayne.com)- AutoHotKey शक्तिशाली है, लेकिन पहली बार इस्तेमाल करने पर भारी लगने वाला Windows automation tool है, इसलिए वास्तविक व्यक्तिगत scripts का संग्रह सीखने की सामग्री के रूप में सार्वजनिक किया गया है
- सामग्री कुल 14 files से बनी है, और इसमें फ़ोल्डर खोलना, टेक्स्ट डालना, और अलग-अलग programs के लिए shortcut बढ़ाना जैसे तुरंत आज़माए जा सकने वाले automation examples पर ज़ोर है
- इसमें current date, em dash,
¯\_(ツ)_/¯की quick input से लेकर vim users के लिए modal shortcut system और एक simple GUI demo तक शामिल है - timestamps को UTC और local time में बदलने वाली script भी शामिल है, जिससे केवल shortcuts से आगे बढ़कर व्यावहारिक workflow automation देखा जा सकता है
- हर file में code क्या करता है, और कुछ मामलों में उसे उस तरह क्यों implement किया गया है, इस पर comments दिए गए हैं, इसलिए इसे शैक्षणिक codebase की तरह पढ़ना आसान है
वास्तविक काम के करीब AutoHotKey examples का संग्रह
- AutoHotKey सीखना कठिन लगने वाले users के लिए, व्यक्तिगत रूप से इस्तेमाल की जाने वाली ज़्यादातर scripts को व्याख्या के साथ सार्वजनिक किया गया है
- पूरा code GitHub repository में देखा जा सकता है, और यह कुल 14 files से बना है
- मुख्य examples इस प्रकार हैं
शैक्षणिक codebase के रूप में पढ़ने का तरीका
- यह repository ऐसे शैक्षणिक codebase का उदाहरण है जिसे लोग code पढ़ते हुए सीख सकें
- हर file में code क्या करता है, इस बारे में काफी comments हैं, और कुछ implementations में किसी खास तरीके को चुनने की वजह भी साथ दी गई है
- शैक्षणिक codebase पर अलग से विवरण newsletter लेख में आगे मिलता है
- जिन हिस्सों में अधिक explanation चाहिए, उनके लिए GitHub issue के ज़रिए अनुरोध किया जा सकता है
1 टिप्पणियां
Hacker News टिप्पणियाँ
लगता है कि कोड से जुड़ी चर्चा में पहली बार मैं कुछ काम की चीज़ जोड़ सकता हूँ। लिखने के लिहाज से मैंने एक AutoHotkey script बना रखी है जो कभी भी खाली notepad.exe को जल्दी खोल देती है;
~key दबाने पर खुलती है और फिर दबाने पर बंद हो जाती है, और अगर उसमें content हो तो save dialog खुलता हैमेरा AHK बस इतना ही करता है
जब window बंद या minimize किए बिना पिछली window के साथ जल्दी switch करना हो, तो Windows का default shortcut Alt + Escape काम का है। यह Alt+Tab की तरह window overview नहीं दिखाता, बल्कि सीधे पिछले focused window पर switch कर देता है
AutoHotkey v1 में window title का कोई हिस्सा खोजकर उसे activate करने, और अगर वह पहले से active हो तो
send, !{escape}से वापस जाने, और न हो तो run करने जैसा switcher/launcher boilerplate बनाया जा सकता है। अगर taskbar को clutter नहीं करना चाहते तोWinHide/WinShowभी इस्तेमाल कर सकते हैं, लेकिन कुछ windows में यह ठीक नहीं बैठता, और window detection के लिए कभी-कभीahk_exeयाahk_classज़्यादा सही होते हैंWinActive("Untitled - Notepad")औरWinExist("*Untitled - Notepad")चेक करके उसे बंद या activate करना, और न हो तोRun "Notepad"चलाना—कुछ ऐसा तरीका हैWinActive()याWinExist()functions इस्तेमाल करें तो कई title conditions कोorसे जोड़ सकते हैं, और ज़रूरत हो तो"Untitled - Notepad ahk_class Notepad"की तरह ahk_class condition भी साथ डाल सकते हैंAutoHotkey कमाल का है, लेकिन काश इसकी language थोड़ी ज़्यादा normal होती। Aero Snap का golden ratio version reliably बनाने की कोशिश में काफी परेशान हुआ; कई monitors और sizes handle करना इतना मुश्किल होना नहीं चाहिए, लेकिन अजीब
Loopsyntax या मामूली mistakes के silently fail हो जाने की वजह से मज़ा खत्म हो गया और मैंने छोड़ दियाPython के लिए ahk module भी मिला, लेकिन
keyboardmodule के साथ जोड़ने पर वह AutoHotkey जितना अच्छा shortcut listener नहीं बनाhttps://github.com/idbrii/daveconfig/blob/main/win/autohotke...
https://pypi.org/project/ahk/
शादी में AutoHotKey से एक photobox बनाया था। fiancé के Nikon को USB से control करने वाले simple software और laptop पर IrfanView का साथ इस्तेमाल किया; IrfanView को folder watch करने और हमेशा latest photo दिखाने के लिए set किया था
AutoHotKey से Preview, Autofocus और “SNAP” button वाला simple GUI बनाया। SNAP दबाने पर बड़ा countdown दिखता, फिर photo ली जाती, camera software minimize होता और IrfanView सामने आ जाता। कुछ seconds बाद फिर button GUI पर वापस आ जाता। मेहमानों को पसंद आया, photobox किराए के सैकड़ों euro बच गए और अच्छी photos भी मिल गईं
यह AutoHotKey script मेरे लिए game changer रही। Ctrl + Shift + V को paste without formatting पर map किया, ताकि clipboard को text में convert करके paste करे, थोड़ा wait करे और फिर original clipboard restore कर दे
https://learn.microsoft.com/en-us/windows/powertoys/
https://stevemiller.net/puretext/
last 5 clips जैसे multi-value clipboard भी हो तो अच्छा होगा, लेकिन शायद यह बहुत बड़ी मांग हो सकती है
AHK Windows से बाँधकर रखने वाले ऐप्स में से एक है। मैं इसका इस्तेमाल कीबोर्ड में äöüß, áóúñ जैसे अक्षर जोड़ने, कमरे और अपार्टमेंट की लाइटों की brightness कंट्रोल करने,
08:39 –,2023-08-22 08:39:46,2023-08-22 — Tuesdayजैसे timestamps एक-दो बटन से डालने, और Pause key toggle करने पर Tasmota-supported socket के जरिए monitor power बंद/चालू करने जैसी चीजों के लिए करता हूँबस अच्छा होता अगर दूसरे keyboard को button pad की तरह इस्तेमाल करते हुए उसकी key input को consume कर लेने वाला feature होता। इसलिए ज्यादा buttons पाने के लिए मैं एक छोटा Bluetooth keyboard Raspberry Pi Zero से जोड़कर इस्तेमाल कर रहा हूँ
https://www.hammerspoon.org/
https://miquelvir.medium.com/secondkeyboard-1c39e52e023b
यह भी है: https://github.com/evilC/AutoHotInterception
https://github.com/autokey/autokey
मैं भी AutoHotKey हमेशा इस्तेमाल करता हूँ। इसमें date/time stamp shortcuts के 6 प्रकार, frequently used hosts और serial ports के लिए PuTTY/SSH launcher, Outlook·Windows Terminal·Total Commander जैसे 10+ apps के state-based launchers, कहीं भी unformatted paste, line breaks हटाकर paste, special characters और emoji के लिए AltGr input layer, और media/volume shortcuts तक रखे हैं
https://gist.github.com/raveren/bac5196d2063665d2154
अपने personal Linux laptop पर मैं Caps Lock और Escape को swap करके इस्तेमाल करता हूँ और इसकी आदत पड़ गई है। Windows dual boot करने पर Powertoys से वही setting की थी, लेकिन company में Powertoys या Uncap install नहीं कर सकता, इसलिए AutoHotKey ही विकल्प है
StackOverflow answer follow किया तो Caps Lock और Escape दोनों ही दोनों keys साथ में भेजने लगे, जिससे कभी-कभी Teams messages खराब हो जाते हैं
https://github.com/microsoft/PowerToys
https://github.com/susam/uncap
https://stackoverflow.com/questions/38558376/how-to-map-caps...
https://github.com/jtroo/kanata
उदाहरण के लिए https://github.com/evilC/TapHoldManager AHK में इसे implement करता है। Shift/Ctrl/Win/Alt को
fdsaऔरjkl;के नीचे रखने से छोटी उंगली का इस्तेमाल कम होता है और उंगलियाँ home row पर ज्यादा रह सकती हैंCapsLock::Esc,Esc::CapsLockglobal hotkeys से programs launch करने जैसे दूसरे AHK quick improvements भी लिखकर रखे हैं: https://nickjanetakis.com/blog/remap-and-set-global-hotkeys-...
https://superuser.com/questions/550679/where-can-i-find-wind...
https://github.com/hwalinga/dotfiles/blob/master/CapsLockCtr...
CapsLock को किसी और key के साथ दबाने पर Ctrl और हल्का दबाने पर Esc की तरह काम करने वाला dual function भी implement किया
जैसा दूसरों ने कहा है, AHK Windows पर जो काम करने देता है उनकी संख्या हैरान करने वाली है। व्यक्तिगत रूप से, कहा जा सकता है कि AHK की वजह से मैंने 100,000 डॉलर से ज़्यादा बचाए या कमाए हैं
लेकिन AHK भाषा खुद लिखने में सबसे मज़ेदार नहीं है। मुझे हैरानी होती है कि Python या Lua में इसी स्तर का powerful tool क्यों नहीं है, और https://github.com/pywinauto/pywinauto भी व्यवहार में AHK जितना अच्छा काम नहीं करता था। आखिरकार नीचे तो WinAPI ही है, इसलिए अगर कोई अच्छी wrapper library हो तो C# भी एक विकल्प हो सकता है। मेरे हिसाब से AHK लोकप्रिय इसलिए है क्योंकि वह बदसूरत है, लेकिन काम करता है
https://www.autohotkey.com/boards/viewtopic.php?f=80&t=77248
AutoHotKey शानदार है। मैं इसे तेज़ app switching के लिए इस्तेमाल करता हूं, और मेरे मामले में Right Alt को “shortcut activate” key बनाकर सब कुछ control करता हूं
उसे दबाए रखकर कोई letter key दबाने पर उस app के instances के बीच cycle होता है। उदाहरण के लिए Alt+C VS Code windows पर switch करता है, और Alt+F जैसी keys किसी खास profile की नई Chrome window जैसे नए app instances खोलती हैं। Alt+numbers को अभी focused window पर set किया जा सकता है, और Alt tap करने पर edit mode चालू होता है, जिसमें current window को number keys पर assign किया जा सकता है। edit mode में H/J/K/L ऊपर/नीचे/बाएं/दाएं navigation keys बन जाते हैं, जिससे app switching काफ़ी तेज़ हो जाती है
पहले Diablo 3 खेलते समय जो script मैंने ढूंढकर modify की थी, वह सबसे प्रभावशाली लगी। mouse वाला हाथ mousepad पर बहुत ज़ोर से दबाने की वजह से repetitive strain injury की समस्या होने लगी थी, इसलिए controller से खेलने का तरीका खोजा
उस script ने analog movement को character के आसपास एक छोटे circle से bind किया था, जिससे किसी भी direction में smooth तरीके से दौड़ा जा सकता था, और button दबाने पर range को दूर तक बदलकर ranged abilities cast की जा सकती थीं। हर class के लिए थोड़ी customization करने पर यह हैरान करने लायक अच्छी तरह काम करता था