Eusebius Δημοσ. 31 Ιανουαρίου 2007 Δημοσ. 31 Ιανουαρίου 2007 Ενότητες 1. Εισαγωγή, 2. Ανάπτυξη συντομογραφιών/βραχυγραφιών, 3. Αναχαρτογράφηση πληκτρολογίου [Remapping], 4. Πληκτροσυντομεύσεις, 5. Άλλα κόλπα, 6. Έτοιμα σκριπτ από τo φόρουμ του AutoHotkey, 7. Προβλήματα, 8. Σύνδεσμοι 1. Εισαγωγή Το AutoHotkey είναι ένα εργαλείο ανοιχτού κώδικα για την αυτοματοποίηση επαναλαμβανόμενων εργασιών στα Windows. Μερικά πράγματα που κάνει: Πληκτροσυντομεύσεις [Hotkeys] για εκτέλεση εντολών ή σειράς εντολών (μακροεντολών) Συντομογραφίες που αναπτύσσονται αυτόματα καθώς γράφουμε [Hotstrings] Αναχαρτογράφηση πλήκτρων και κουμπιών [Remapping] Διαχείριση παραθύρων Κ.π.ά. Π.χ., φτιάχνει ολόκληρα προγράμματα με γραφικό περιβάλλον, παράθυρα διαλόγου κλπ. (Αλλά αυτά απαιτούν γνώσεις προγραμματισμού και, επίσης, δεν ξέρω αν έχει νόημα να τα φτιάχνεις με το AHK. Μάλλον υπάρχουν καταλληλότερες γλώσσες...) Το σάιτ: AutoHotkey - Free Mouse and Keyboard Macro Program with Hotkeys and AutoText Γιατί μου αρέσει και γιατί το προτείνω Συνδυάζει πράγματα που δεν τα βρίσκεις μαζεμένα σʼ ένα πρόγραμμα Είναι εύκολο, με πλήρη τεκμηρίωση, γραμμένη με απλά λόγια Εξελίσσεται συνέχεια και έχει ζωηρή κοινότητα Είναι δωρεάν και ανοιχτού κώδικα (GPL) Είναι καθαρό και ελαφρύ Πώς το χρησιμοποιώ Κατεβάζω το AutoHotkey και το εγκαθιστώ Φτιάχνω ένα αρχείο με κατάληξη .ahk και βάζω μέσα τις εντολές, μακροεντολές και πληκτροσυντομεύσεις που θέλω Φτιάχνω στο Startup μια συντόμευση προς αυτό το αρχείο, ώστε να ξεκινάει αυτόματα μαζί με τα Windows Το AutoHotkey δεν έχει γραφικό περιβάλλον. Ό,τι ορίζουμε το ορίζουμε γράφοντας μέσα σε σκριπτάκια, δηλ. απλά αρχεία κειμένου. Αλλά η γλώσσα του είναι πολύ απλή και τα πράγματα που ενδιαφέρουν τον περισσότερο κόσμο γίνονται πολύ εύκολα. Πολύ συχνά φτάνει μία αράδα: > ::btw::by the way ::βδγ::παρεμπιπτόντως CapsLock::Return ; Εξουδετερώνει το CapsLock. +#l::Run, http://insomnia.gr/vb3/forumdisplay.php?f=9 Για να σας ανοίξω την όρεξη, δείτε μια ωραία ιδιότητα των συντομογραφιών: Με βάση το από πάνω, αν γράψουμε βδγ, αναπτύσσεται σε παρεμπιπτόντως. Αν γράψουμε Βδγ, αναπτύσσεται σε Παρεμπιπτόντως. Το ίδιο για τα λατινικά. Το μόνο που πρέπει να φροντίζουμε είναι να έχουμε λίγο συγυρισμένο (και σχολιασμένο) το σκριπτ, για να μη ζαλιζόμαστε όταν το κοιτάζουμε ή όταν ψάχνουμε να βρούμε κάτι. Εγκατάσταση, συμβατότητα, φορητότητα Η εγκατάσταση του προγράμματος είναι καθαρή: Συσχετίζει τα αρχεία .ahk με τη μηχανή autohotkey.exe και τα προσθέτει στο Νέο Αρχείο του context menu, για να τα φτιάχνουμε στα γρήγορα. Πέρα απʼ αυτά και τις πληροφορίες για την απεγκατάσταση δεν γράφει τίποτε άλλο στο μητρώο ούτε βάζει πράγματα έξω από τον κατάλογό του στο Program Files. Δηλ. είναι φορητό: για να εκτελέσουμε ένα σκριπτ χρειαζόμαστε μόνο δύο αρχεία, τη μηχανή και το σκριπτ, και δίνουμε: autohotkey.exe script_name.ahk. Αυτό είναι σπουδαίο πλεονέκτημα: μπορούμε να έχουμε πάντα μαζί μας όλες τις συντομογραφίες, τις συντομεύσεις μας κλπ. Στα XP και στα 2000 δουλεύει πλήρως. Στα 98 ένα μικρό κομμάτι των δυνατοτήτων χάνεται. Στα Vista δεν ξέρω ακόμα... Επίσης, είναι σχετικά οικονομικό σε πόρους. Το σκριπτ που έχω και τρέχει συνέχεια στα XP είναι γύρω στις 1.000 αράδες και τρώει από 3 έως 5 MB μνήμη. Τα παραδείγματα που παραθέτω είναι όλα απʼ αυτό το σκριπτάκι. Τα περισσότερα είναι πράγματα που μπορεί να φτιάξει ο καθένας ρίχνοντας μια ματιά στην Βοήθεια του AutoHotkey. Δείχνουν ένα ελάχιστο μέρος των δυνατοτήτων του προγράμματος, αφού οι συνδυασμοί και οι δυνατότητες είναι πολύ περισσότερα, ενώ μπορεί να κάνει κανείς πολύ πιο σύνθετα πράγματα αρκεί να καταλαβαίνει τα βασικά από προγραμματισμό. Έκρινα ότι μια παρουσίαση έχει νόημα επειδή δεν υπάρχει τίποτα για το AutoHotkey στα ελληνικά. Αλλιώς η επίσημη παρουσίαση, π.χ., το Quick-start Tutorial, φτάνει και περισσεύει, υπάρχει σε διάφορες γλώσσες και είναι γραμμένη από ανθρώπους που ξέρουν το πρόγραμμα απʼ έξω κι από μέσα. Κάπου-κάπου δίνω λινκ για την on-line βοήθεια του AutoHotkey. Η on-line βοήθεια είναι ολόιδια με τη βοήθεια του προγράμματος. 2. Ανάπτυξη συντομογραφιών/βραχυγραφιών Δηλ. γράφουμε κάτι και αλλάζει αυτόματα σε κάτι άλλο. Το μεγάλο πλεονέκτημα του AHK εδώ είναι ότι οι συντομογραφίες του [hotstrings] δουλεύουν σε οποιοδήποτε πρόγραμμα στα Windows και σε οποιαδήποτε περιοχή δέχεται κείμενο: Notepad, Wordpad, MS Office, OpenOffice, Thunderbird, IM κλπ. κλπ. Έτσι, αντί να ορίζουμε χωριστά συντομογραφίες για κάθε πρόγραμμα, έχουμε ένα σκριπτάκι να τρέχει και κάνουμε τη δουλειά μας παντού. (Και το ίδιο σκριπτάκι το ξαναχρησιμοποιούμε όταν επανεγκαταστήσουμε τα Windows ή όταν θέλουμε να δουλέψουμε σε ένα άλλο κομπιούτερ!) Το κλασικό παράδειγμα από την Βοήθεια του προγράμματος: >::btw::by the way Το παρακάτω αναπτύσσεται σε δύο γραμμές μόλις γράψουμε μφχ και πατήσουμε έναν χαρακτήρα τέλους, π.χ. διάστημα ή Enter: > ::μφχ::Με φιλικούς χαιρετισμούς,{Enter}Eusebius Αντί να βάζουμε {Enter} για αλλαγή γραμμής, μπορούμε να χρησιμοποιήσουμε ένα «continuation section»: > ::μφχ:: ( LTrim Με φιλικούς χαιρετισμούς, Eusebius http://a.com/ +00 012-3456789 Σας αρέσει η υπογραφή μου; Την έφτιαξα με το AutoHotkey! ) Προσοχή! Όταν η συντομογραφία είναι στα ελληνικά, το ανάπτυγμα μπορεί να περιέχει και βασικά λατινικά. Το αντίστροφο δεν γίνεται! Ή, για να ακριβολογώ, γίνεται, αλλά αφενός θέλει κόλπα και αφετέρου δεν ξέρω πόσο αξιόπιστο είναι. Δεν το έχω δοκιμάσει εκτεταμένα. Αυτό είναι ένα μειονέκτημα του AHK για εμάς που γράφουμε σε δύο αλφάβητα... Γίνεται λοιπόν, αλλά είναι λίγο μπελάς: (Δεν το χρησιμοποιώ. Το έφτιαξα έτσι, για παράδειγμα...) > ::blahtest:: SendInput, ^+2 Sleep, 100 SendInput, ( LTrim Μπλα μπλα μπλα... Blah blah blah... Μπλα μπλα μπλα... Eusebius ) SendInput, ^+1 Return Σημείωση 1η . Με το Ctrl+Shift+1 (^+1) μπαίνει το αγγλικό πληκτρολόγιο και με το Ctrl+Shift+2 (^+2) το ελληνικό. Η χρήση τους για αλλαγή πληκτρολογίου στο AΗΚ είναι μια ιδέα που μου έδωσε ο alkisg . Για τέτοιες δουλειές πλεονεκτούν απέναντι στο κλασικό Alt+Shift. (Πρέπει βέβαια να οριστούν πρώτα από τον Πίνακα Ελέγχου των Windows. Δεν χρειάζεται να αντικαταστήσουν το Alt+Shift. Μπορούμε να τα έχουμε παράλληλα. ) Σημείωση 2η . Το Sleep, 100 (αναστέλλει την εκτέλεση για 100 χιλιοστά του δευτερολέπτου) είναι για να δουλέψει σωστά η εντολή στο μυστήριο OpenOffice. Δουλεύει και με χαμηλότερη τιμή αλλά το άφησα 100 για ασφάλεια. Στα Wordpad, Notepad, στον Firefox και στο Thunderbird και σε διάφορους text editors που δοκίμασα δεν ήθελε καθόλου Sleep. Δεν είναι εκνευριστικό να αρχίσεις να γράφεις μια διεύθυνση URL ενώ το πληκτρολόγιο είναι στα ελληνικά; Ιδού μία λύση! Μόλις δει την ακολουθία των ελληνικών χαρακτήρων, κάνει Alt+Shift και την αντικαθιστά με τη λατινική, δηλ. τα δύο πράγματα που θα έπρεπε να κάνουμε με το χέρι και ενώ μπορεί να είχαμε γράψει ολόκληρη τη διεύθυνση. Αν δεν κοιτάξουμε την οθόνη ενώ γράφουμε, δεν παίρνουμε είδηση τίποτα! > :*:ςςς.::{Alt Down}{Shift}{Alt Up}www. :*:ηττπ::{Alt Down}{Shift}{Alt Up}http Σημείωση . Ο αστερίσκος ανάμεσα στις άνω και κάτω τελείες λέει του AHK να αναπτύξει την «συντομογραφία» χωρίς να περιμένει χαρακτήρα τέλους, δηλ. το κενό διάστημα και διάφορα άλλα: -()[]{}:;"/\,.?!`n `t Το `n σημαίνει Enter και το `t σημαίνει Tab. Το κενό διάστημα (ο πιο συχνός χαρακτήρας τέλους) βρίσκεται ανάμεσα σʼ αυτά τα δύο. Άμα δεν μας αρέσουν οι προεπιλεγμένοι χαρακτήρες τέλους, ορίζουμε τους δικούς μας βάζοντας το εξής μέσα στο σκριπτάκι και προσαρμόζοντάς το ανάλογα: #Hotstring EndChars -()[]{}:;'"/\,.?!`n `t Άλλα δύο παραδείγματα. Το πρώτο είναι για γερμανικά από αγγλικό πληκτρολόγιο και το δεύτερο για BBCode. Το λατινικό ερωτηματικό μετά τον αστερίσκο λέει του AutoHotkey να κάνει την αλλαγή ακόμα κι αν η συντομογραφία βρίσκεται μέσα σε λέξη. Οι συντομογραφίες του BBCode είναι εις διπλούν, ώστε να δουλεύουν και στο ελληνικό και στο λατινικό πληκτρολόγιο. (Τα άλλα ερωτηματικά, τα ελληνικά, εισάγουν σχόλια. Το AutoHotkey τα αγνοεί αυτά τα σχόλια. Είναι για δική μας ευκολία.) > :*?:auuu::{ASC 0228} ; a Umlaut :*?:ouuu::{ASC 0246} ; o Umlaut :*?:uuuu::{ASC 0252} ; u Umlaut :*?:szzz::{ASC 0223} ; Eszett > [noparse]:*:bbbold::[b][/b]{Left 4}[/noparse] [noparse]:*:βββολδ::[b][/b]{Left 4}[/noparse] [noparse]:*:bblink::[url=][/url]{Left 7}[/noparse] [noparse]:*:ββλινκ::[url=][/url]{Left 7}[/noparse] [noparse]:*:bblist::[list]{Enter}[*]{Enter}[*]{Enter}[/list]{Up 2}[/noparse] [noparse]:*:ββλιστ::[list]{Enter}[*]{Enter}[*]{Enter}[/list]{Up 2}[/noparse] Νά και η άμοιρη η άνω τελεία, που κοντεύει να πεθάνει εξαιτίας των κομπιουτερικών πληκτρολογίων: Εδώ δεν χρησιμοποιώ συντομογραφία αλλά πληκτροσυντόμευση (Alt+Ctrl+Τελεία), οπότε κανονικά θα έπρεπε να μπει στην άλλη ενότητα... > ^!.::Send, {ASC 0183} ; Άνω τελεία Ανάλογες πληκτροσυντομεύσεις μπορούμε να φτιάξουμε και για άλλους χαρακτήρες που δεν γράφονται εύκολα από το στάνταρ πληκτρολόγιο. Π.χ., τα λεγόμενα ανωφερή εισαγωγικά (0147 και 0148) ή το σύμβολο της παραγράφου (0167). 3. Αναχαρτογράφηση πληκτρολογίου [Remapping] Αλλάξτε ή εξουδετερώστε οποιοδήποτε πλήκτρο ενός πληκτρολογίου! Μόνο και μόνο γιʼ αυτό πρέπει δοκιμάσετε το AHK! Δείτε πόσα πράγματα γίνεται να αλλάξουμε στο πληκτρολόγιο, στο ποντίκι και στο joystick! Έστω ότι έχουμε πληκτρολόγιο με Winkey μόνο από τη μία μεριά και θέλουμε να βάλουμε και από την άλλη, όπου έχει μόνο AppsKey (αυτό που βγάζει το context menu). Ορίζουμε το AppsKey να στέλνει δεξιό Winkey και, για να μη χάσουμε το AppsKey (που είναι χρήσιμο κι αυτό), το βάζουμε σε μία άλλη συντόμευση, π.χ., Shift+Space (που συνήθως δεν χρειάζεται για κάτι άλλο και είναι εύχρηστο): > AppsKey::RWin +Space::AppsKey Έστω ότι έχουμε δύο WinKey και δεν θέλουμε κανένα. Τα εξουδετερώνουμε τελείως: > LWin::Return RWin::Return Ένα άλλο παράδειγμα. Μετατρέπουμε το Capslock σε Ctrl: > CapsLock::Ctrl Ή το ξεφορτωνόμαστε τελείως: > CapsLock::Return Δείτε σχετικά: Overriding or Disabling Hotkeys [των Windows] 4. Πληκτροσυντομεύσεις Συνδυάζοντας ένα ή περισσότερα από τα Winkey (#), Shift (+), Ctrl (^) και Alt (!) με όποιο πλήκτρο θέλουμε μπορούμε να εκτελέσουμε οτιδήποτε. Η εντολή που χρησιμοποιούμε είναι συνήθως το Run. Οι παράμετροι του Run (οι εντός αγκυλών είναι προαιρετικές): Run, Target [, WorkingDir, Max|Min|Hide|UseErrorLevel, OutputVarPID] Συνήθως χρησιμοποιώ και την παράμετρο του working directory. Δεν ξέρω ποια προγράμματα την χρειάζονται και ποια όχι (ούτε πολυκαταλαβαίνω τί τη θέλουν), αλλά τη βάζω για να είμαι σίγουρος. :-P > +#c::Run, control ; Πίνακας Ελέγχου +#d::Run, %A_MyDocuments% ; Ανοίγει τον φάκελο My Documents +#i::Run, http://insomnia.gr/vb3/search.php?do=getnew +#m::Run, http://mail.google.com/mail/ +#n::Run, notepad +#t::Run, %A_MyDocuments%\todo.txt Στα δύο URL δεν χρειάζεται να ορίσουμε πρόγραμμα, αφού το πρωτόκολλο HTTP θα είναι ήδη συσχετισμένο με κάποιο πρόγραμμα στον υπολογιστή μας, κατά προτίμηση με κάποιο σοβαρό πρόγραμμα για σερφάρισμα. Το ίδιο για το αρχείο απλού κειμένου (.txt): αν δεν έχουμε αλλάξει την προεπιλογή, θα ανοίξει με το Notepad. Για την εντολή Run, notepad: το Notepad/Σημειωματάριο είναι από τα προγράμματα που μπορούμε να τα εκτελούμε δίνοντας μόνο ένα σύντομο όνομα χωρίς ολόκληρη τη διαδρομή του εκτελέσιμου, είτε επειδή το εκτελέσιμο βρίσκεται κάπου μέσα στο path του περιβάλλοντος είτε επειδή η διαδρομή δηλώνεται από το πρόγραμμα στο μητρώο [registry] μαζί με ένα σύντομο όνομα για γρήγορη εκτέλεση. Άλλα τέτοια πρόγράμματα είναι, π.χ., το κομπιουτεράκι (calc), το Acrobat Reader (acrord32), το MS Word (winword) και ο Mozilla Firefox (firefox). Αυτό δεν ισχύει μόνο για το AHK βέβαια. Με τον ίδιο τρόπο τα εκτελούμε και από το Run/Εκτέλεση. Για τα υπόλοιπα προγράμματα χρειάζεται η πλήρης διαδρομή. Π.χ.: > +#a::Run, %A_ProgramFiles%\Azureus\azureus.exe Δύο σημειώσεις: Πρώτον , αποφεύγω να χρησιμοποιώ το Winkey μόνο του, για να μην εξουδετερώνω συντομεύσεις των Windows (π.χ., το Winkey+L, που κλειδώνει τον σταθμό εργασίας), αφού σε περίπτωση σύγκρουσης υπερισχύει το AutoHotkey. Χρησιμοποιώ λοιπόν σχεδόν πάντα το Winkey μαζί με κάτι άλλο, π.χ., εκτελώ το Locate32 πατώντας Winkey+Shift+L. Δεύτερον , καλό είναι να χρησιμοποιούνται μεταβλητές κατά το δυνατόν, είτε εσωτερικές μεταβλητές του AHK είτε μεταβλητές περιβάλλοντος των Windows (τις δεύτερες τις βλέπουμε δίνοντας set από την κονσόλα). Δηλ. αντί για C:\Program Files να γράφουμε %A_ProgramFiles%. Έτσι, αν αύριο βάλουμε το Program Files στο D: ή αν βάλουμε γερμανικά Windows (όπου η διαδρομή είναι C:\Programme) το σκριπτάκι και οι εντολές θα δουλεύουν χωρίς να χρειαστεί να αλλάξουμε κάτι. Επειδή καμιά φορά οι αράδες βγαίνουν μακρυνάρια με το %A_ProgramFiles%, έχω φτιάξει και μια μεταβλητή της μεταβλητής, %PF%, και χρησιμοποιώ κι αυτή. Με μια συντόμευση μπορούμε βέβαια να εκτελέσουμε και πάνω από μία εντολές: > +#i:: Run, http://insomnia.gr/vb3/search.php?do=getnew Run, http://mail.google.com/mail/ Run, notepad Return Άλλη μία σημείωση . Τα hotkeys και hotstrings της μίας αράδας τερματίζουν αυτόματα χωρίς να χρειάζεται Return στο τέλος. Αντίθετα, αν στο τελευταίο παράδειγμα δεν βάλουμε Return, η εκτέλεση θα συνεχίζεται με άλλες εντολές που έχουμε από κάτω μέχρι να συναντήσει ένα Return. Δεν το θέλουμε αυτό! Κι άλλη μία . Στο συντακτικό του AHK οι εσοχές [indentation] είναι προαιρετικές. Τις βάζουμε όπου θέλουμε και όπως θέλουμε, για να γίνει πιο ευανάγνωστο το σκριπτ, ειδικά σε σύνθετες κατασκευές. Μάλιστα, με έναν text editor που χρωματίζει κώδικα AHK είναι ακόμα καλύτερα για το μάτι. Δείτε ένα κομμάτι στον SciTE : Αν τα σκριπτάκια μας έχουν πολύ πράμα, είναι βολικότερο να χρησιμοποιούμε έναν text editor της προκοπής και όχι το σημειωματάριο των Windows. Η προτίμησή μου είναι ο SciTE , που όμως δεν είναι πολύ φιλικός στην πρώτη γνωριμία. Το Notepad++ κάνει πάνω-κάτω τα ίδια πράγματα (μοιράζονται την ίδια βάση) και είναι φιλικότερο και με πιο χαρωπά χρώματα. Ένα άλλο πολύ αγαπητό πρόγραμμα είναι το PSPad . Λίγο πιο πονηρά κόλπα. Εκτέλεση/Ενεργοποίηση. Αυτό είναι από τα αγαπημένα μου. Με ένα και μοναδικό hotkey καλείς ένα πρόγραμμα είτε τρέχει είτε όχι (δηλ. παύει να σε απασχολεί αν το πρόγραμμα τρέχει ήδη ή δεν τρέχει, πού βρίσκεται κλπ.). Το πρόβλημα που κλήθηκε να λύσει το AutoHotkey εδώ: Κάποια προγράμματα υποστηρίζουν single-instance mode. Έτσι, μπορείς να ορίσεις ένα hotkey: αν δεν τρέχουν τα εκτελεί, αν τρέχουν ενεργοποιεί το παράθυρο. Άλλα προγράμματα, όπως ο Firefox και ο xplorer², δεν υποστηρίζουν single-instance mode. Αν τα εκτελέσεις ενώ τρέχουν, ανοίγει νέο παράθυρο, που συνήθως δεν το θες. Νά πόσο απλά λύνεται το πρόβλημα στον xplorer²: > ; xplorer² Pro ( Winkey+Backspace ) #Backspace:: IfWinExist, ahk_class ATL:ExplorerFrame { WinActivate Return } Run, %PF%\xplorer2\xplorer2_UC.exe, %PF%\xplorer2 Return Τί γίνεται εδώ: Πατάμε Winkey+Backspace Αν υπάρχει παράθυρο του xplorer², ενεργοποιείται και η εκτέλεση του hotkey τερματίζεται Αλλιώς η εκτέλεση προχωράει στο Run, ώστε να ξεκινήσει ο xplorer² Η ίδια δουλειά με αντεστραμμένες τις συνθήκες και λίγο πιο συνεπτυγμένο κώδικα: > #Backspace:: IfWinNotExist, ahk_class ATL:ExplorerFrame Run, %PF%\xplorer2\xplorer2_UC.exe, %PF%\xplorer2 WinActivate Return Το παράθυρο του xplorer² ανιχνεύεται εδώ με την κλάση του. Ο άλλος τρόπος που προσφέρει το AutoHotkey είναι με τον τίτλο ή μέρος του τίτλου. Για να βρούμε την κλάση ενός παραθύρου, κάνουμε δεξί κλικ στο εικονίδιο του system tray, ξεκινάμε τον Window Spy και πάμε το καταδεικτικό πάνω στο παράθυρο του προγράμματος που θέλουμε. Άλλη ωραία και απλή λύση. Κάθε φορά που ξεκινάω το Μείζον Ελληνικό Λεξικό πρέπει να γυρίσω τη γλώσσα στα ελληνικά (ξεκινάει στα αγγλικά επειδή αυτά έχω default στα Windows) και μετά να πατήσω Tab για να πάει ο δρομέας στο κουτάκι και να γράψω τη λέξη που θέλω. Πρόσθεσα λοιπόν ένα Alt+Shift κι ένα Tab στις εντολές με τις οποίες εκτελείται/ενεργοποιείται το Μείζον: > +#z:: SetTitleMatchMode, 2 IfWinExist, Μείζον Ελληνικό Λεξικό { WinActivate Return } Else { Run, %PF%\Meizon\mel.exe, %PF%\Meizon WinWaitActive, Μείζον Ελληνικό Λεξικό Sleep, 4000 Send, {Tab}{LAlt Down}{LShift}{LAlt Up} } Return Χρειάστηκε να αναστείλω σʼ ένα σημείο την εκτέλεση για 4΄΄ (Sleep, 4000), διότι το αρχαίο Μείζον (10 ετών πια) ξεκινάει κάπως μυστήρια στα XP και, παρόλο το WinWaitActive, το Alt+Shift πήγαινε στο βρόντο. Απλά πράγματα που σε απαλλάσσουν από επαναλαμβανόμενες ενοχλήσεις. Άλλα δύο κόλπα, για να τελειώνουμε μʼ αυτή την ενότητα. Αυτό είναι από την Βοήθεια του AHK. Αν είναι ανοιχτό το συρτάρι του κύριου CD/DVD, το κλείνει. Αν είναι κλειστό, το ανοίγει. Το χρησιμοποιώ συνέχεια. (Η συντόμευση που έχω ορίσει είναι Alt+Ctrl+Winkey+Space.) Τα σχόλια είναι του προγραμματιστή του AutoHotkey, Chris Mallett: > +!#Space:: Drive, Eject ; If the command completed quickly, ; the tray was probably already ejected. ; In that case, retract it: If A_TimeSinceThisHotkey < 1000 ; Adjust this if needed. Drive, Eject, , 1 Return Με τα παρακάτω γράφω στα γρήγορα τρέχουσα ώρα και ημερομηνία. Με το ένα στο φορμάτ 1999-12-31 23:59:59 και με το άλλο στο φορμάτ 19991231235959. Το δεύτερο είναι πιο βολικό για ονόματα αρχείων και καταλόγων. Για το ένα φορμάτ έφτιαξα μία δική μου μεταβλητή. Το άλλο το παίρνεις έτοιμο με μία από τις μεταβλητές του AHK. > +#F5:: FormatTime, MyTime1, , yyyy-MM-dd HH:mm:ss SendInput, %MyTime1% Return +#F6::Send, %A_Now% Σημείωση . Στην μία περίπτωση έχει Send και στην άλλη SendInput. Το SendInput είναι σχετικά πρόσφατη προσθήκη στη γλώσσα του AHK, πιο αξιόπιστο από το σκέτο Send και πολύ πιο γρήγορο (ακαριαίο): Send και SendInput και άλλοι τρόποι του Send . 5. Άλλα κόλπα Βασική διαχείριση παραθύρων Τρεις απλές εντολές για να μεγιστοποιούμε, να επαναφέρουμε και να ελαχιστοποιούμε παράθυρα με το Winkey και τα βέλη. Η παράμετρος A σημαίνει το ενεργό παράθυρο [Active]. > #Up::WinMaximize, A #Down::WinRestore, A #Left::WinMinimize, A Επειδή μερικά παράθυρα (ιδίως κάποια που ελαχιστοποιούνται στο system tray) δεν πολυσυμπαθούν το WinMinimize (ούτε μια άλλη εναλλακτική εντολή που προσφέρει το AHK), χρειάστηκε μια μικρή τροποποίηση. Πρόσθεσα μία συνθήκη και μία μακροεντολή. Τί λέει ο τροποποιημένος κώδικας: Όταν πατάω Winkey και αριστερό βέλος Αν είναι ενεργό ένα από τα εξής δύστροπα παράθυρα, θα πατάς Alt+Space (για να εμφανιστεί το μενού με τα Μετακίνηση, Επαναφορά κλπ.), θα κάνεις τρεις φορές κάτω (εκεί που είναι κανονικά η Ελαχιστοποίηση) και θα πατάς Enter, και μετά η εκτέλεση θα τερματίζεται Αλλιώς (το Else εννοείται και παραλείπεται) θα στέλνεις WinMinimize, Α > #Left:: SetTitleMatchMode, 2 If (WinActive("Process Explorer -") OR WinActive("ahk_class SciTEWindow") OR WinActive("Treepad Lite") OR WinActive("eMule v0.") OR WinActive("- Mozilla Firefox")) { Send, !{Space}{Down 3}{Enter} Return } WinMinimize, A Return Τώρα κανένα παράθυρο δεν αντιστέκεται! Βελτίωση προγραμμάτων Το Treepad Lite είναι πολύ βολικό προγραμματάκι για οργάνωση σημειώσεων, αλλά δεν έχει autosave. Έχασα μία φορά πράγματα από κρασάρισμα και δεν θέλω να την ξαναπάθω, ούτε έχω όρεξη να ψάχνω για άλλο πρόγραμμα. Όρισα λοιπόν ένα timer: > SetTimer, AutoSaveTPL, 180000 ; AutoSave in Treepad Lite Που κάθε 3 λεπτά (180.000 χιλιοστά του δευτερολέπτου) κάνει Save. Δεν ενδιαφέρει αν το παράθυρο του Treepad Lite είναι ενεργό ή ανενεργό. Αρκεί να υπάρχει: (Ο κώδικας είναι προσαρμοσμένος από ένα παράδειγμα στην Βοήθεια του AHK.) > AutoSaveTPL: SetTitleMatchMode, 2 IfWinExist, Treepad Lite WinMenuSelectItem, , , File, Save ; If the app lacks a standard menu bar, use: ControlSend, , ^s Return Μπαλώματα για εκνευριστικά προβλήματα Το επόμενο είναι λίγο ανόητο, αλλά δεν έχω τίποτα άλλο για να δείξω τις ποντικοεντολές του ΑΗΚ. :-P Το έφτιαξα μια μέρα που είπα «δεν πάει άλλο» μʼ ένα από τα χρόνια bugs του ενός και μοναδικού Firefox. Χάνεται η εστίαση από τη σελίδα που βλέπεις: κάνεις, π.χ., PageUp και PageDown και δεν ακούει. Άμα δεν έχεις το ποντίκι στο χέρι, είναι εκνευριστικό να ψάχνεις να το βρεις. (Αναρωτιέμαι αν έχει καθίσει ποτέ κανείς από την ομάδα του Firefox να σερφάρει λίγα λεπτά χωρίς ποντίκι, να δει κάτι τέτοια ωραία bugs...). Έφτιαξα λοιπόν μια συντόμευση που κάνει κλικ κάπου στη σελίδα, για να επαναφέρει την εστίαση: :-P >[color="grey"] $^`:: IfWinNotActive, ahk_class MozillaUIWindowClass { Send, ^` Return } CoordMode, Mouse, Screen MouseGetPos, MouseX, MouseY MouseMove, 4, 512, 0 Sleep, 500 MouseClick, Left MouseMove, %MouseX%, %MouseY%, 0 Return [/color] 20070216. Update. Με τις νέες οδηγίες #IfWinActive, #IfWinNotActive, #IfWinExist, #IfWinNotExist η κατασκευή του από πάνω απλουστεύεται κι άλλο. Λέμε λοιπόν του AHK να εκτελέσει τη μακροεντολή που φτιάξαμε αν και μόνο αν είναι ενεργό το παράθυρο του Fx (που το δηλώνουμε με την κλάση του): > #IfWinActive, ahk_class MozillaUIWindowClass ^`:: CoordMode, Mouse, Screen MouseGetPos, MouseX, MouseY MouseMove, 4, 512, 0 Sleep, 500 MouseClick, Left MouseMove, %MouseX%, %MouseY%, 0 Return #IfWinActive Τί σημαίνουν όλʼ αυτά: Αν πατήσουμε Ctrl+Βαρεία ενώ είναι ενεργό του παράθυρο του Fx: Παίρνει τις συντεταγμένες του καταδεικτικού σε σχέση με την οθόνη και τις αποθηκεύει σε δύο μεταβλητές Στέλνει το καταδεικτικό 4 από αριστερά, 512 από πάνω (όσο πιο αριστερά γίνεται, για να μη χτυπήσει σε κανένα λινκ) με τη μέγιστη ταχύτητα (παράμετρος 0). Αναστέλλει την εκτέλεση για 500 χιλιοστά του δευτερολέπτου (αλλιώς γίνονται μυστήρια πράγματα...) Κάνει αριστερό κλικ Στέλνει το καταδεικτικό πίσω (στις συντεταγμένες που κράτησε πριν) Η εκτέλεση τερματίζεται Γενικά με το ποντίκι γίνονται πολλά κόλπα, πολύ πιο σύνθετα απʼ αυτό. Και κάποια τέτοια είναι αγαπητά σε μερικούς παιχνιδάδες, απʼ όσο έχω καταλάβει, για να κλέβουν. Π.χ., λέμε του AHK να παρακολουθεί για ένα χρώμα κάπου ή για ένα παράθυρο και, μόλις εμφανιστεί αυτό, να κάνει τόσα κλικ στο τάδε ή το δείνα σημείο και μετά να εκτελέσει την τάδε ή την δείνα μακροεντολή. Για κάποιον με βασικές γνώσεις προγραμματισμού αυτά είναι παιχνιδάκι. Για τους άλλους είναι πιο ζόρικα. (Εκτός αν έχουν όρεξη για διάβασμα.) Στο σάιτ του AutoHotkey έχει και ένα έτοιμο σκριπτ που μετατρέπει την αριθμομηχανή [Numpad] σε ποντίκι! Αν μείνετε ποτέ χωρίς ποντίκι, τώρα ξέρετε τί θα κάνετε! :-P 6. Έτοιμα σκριπτ από τo φόρουμ του AutoHotkey Στο σάιτ του AHK έχει πολλά έτοιμα σκριπτ που είναι στην ουσία μικρά προγράμματα. Ακόμα περισσότερα υπάρχουν στο φόρουμ, φτιαγμένα από μέλη. Δύο που χρησιμοποιώ συνέχεια. Το πρώτο είναι το Incrementally switch between windows. Το καλώ με μια συντόμευση, αρχίζω να γράφω μέχρι να έρθει πάνω-πάνω το παράθυρο που θέλω και χτυπάω Enter. Με έσωσε μια φορά που είχα να δουλέψω με 30 παράθυρα του ίδιου προγράμματος, που είχαν από ένα διαφορετικό αρχείο το καθένα. Ήταν εφιάλτης να ψάχνω το παράθυρο που θέλω με Alt+Tab ή με το ποντίκι: Το δεύτερο είναι το 320MPH - Ultra Fast Anything-Launcher. Το καλώ κι αυτό με μια συντόμευση, γράφω μέχρι να μείνει ή να έρθει πάνω-πάνω αυτό που θέλω και χτυπάω Enter. 7. Προβλήματα Δείτε μια ωραία συντόμευση: > +#g:: Send, ^c Run, http://www.google.com/search?q=%Clipboard% Return Τί κάνει: Επιλέγουμε μια λέξη ή φράση Πατάμε τη συντόμευση και η επιλογή αντιγράφεται στο πρόχειρο με Ctrl+C Με τη μεταβλητή %Clipboard% το περιεχόμενο του προχείρου αποστέλλεται αυτόματα για αναζήτηση στο Google Στα αγγλικά δουλεύει περίφημα. Στα ελληνικά όχι σε όλα τα προγράμματα, έτσι που περισσότερο σε ενοχλεί παρά σε διευκολύνει... Πρέπει να είναι θέμα Unicode. Πάλεψα λίγο με δύο σχετικές εντολές του AHK, την Transform και την ClipboardAll, αλλά δεν κατάφερα κάτι σπουδαίο και τα παράτησα. Στο μέτρο που είναι θέμα Unicode, θα διορθωθεί όταν το AHK βγει και σε έκδοση Unicode (είναι στο πρόγραμμα). Για την ώρα έχει μόνο ANSI. Γενικά, τα μόνα παράπονά μου από το AHK σχετίζονται μʼ αυτό: ότι δεν έχει έκδοση Unicode. Παρόμοια προβλήματα συνάντησα όταν πήγα να χρησιμοποιήσω την εντολή FileAppend, η οποία κολλάει κείμενο στο τέλος ενός αρχείου. 8. Σύνδεσμοι Σχετικοί με το AutoHotkey AutoHotkey - Free Mouse and Keyboard Macro Program with Hotkeys and AutoText AutoHotkey Documentation ~ On-line και αγγλικά. Ίδιο περιεχόμενο με τη βοήθεια του προγράμματος. Είναι μεταφρασμένη σε πέντε-έξι γλώσσες (όχι ελληνικά). http://sourceforge.net/projects/ahk/ ~ Η σελίδα του πρότζεκτ στο SourceForge.net. 1 Hour Software by Skrommel ~ Τούτος έχει γούστο! Έχει φτιάξει δεκάδες λιλιπούτεια προγραμματάκια με το AutoHotkey, που κάνουν από μια δουλειά το καθένα και τα κατεβάζεις είτε σε μορφή σκριπτ είτε ως εκτελέσιμα. Δεν έχω βρει κάτι που να μου χρειάζεται, αλλά διασκεδάζω με τις ιδέες. ac'tivAid ~ Εντυπωσιακό πακέτο με έτοιμα κόλπα από έναν συντάκτη του c't. (Γενικά οι Γερμανοί αγαπάνε το AHK και το έχουν ξεζουμίσει.) Δοκιμάστε το να δείτε τις δυνατότητες του AHK. (Είναι δίγλωσσο, αγγλικά και γερμανικά. Στα γερμανικά έχει αναλυτικές οδηγίες, στα αγγλικά μόνο περιγραφές των λειτουργιών. Αν δεν έχετε εγκατεστημένο AHK κατεβάστε το πρώτο από τα τέσσερα.) Windows key στην αγγλική Wikipedia Σκριπτάκια στο Wiki του Total Commander Universal AutoCorrect with AutoHotKey and Wikipedia ~ Περίπου 4.000 λέξεις. Δεν είναι δύσκολο να φτιαχτεί κάτι τέτοιο στα ελληνικά ή να προστεθούν ελληνικά ζευγάρια στο σκριπτάκι. 156 Useful Run Commands ~ Εντολές όπως acrodist, control color, write (Wordpad) κλπ., για χρήση στο AutoHotkey και γενικά. Παρόμοια προγράμματα AutoIt v3 ~ Η τρέχουσα έκδ. του προγράμματος από το οποίο ξεκίνησε το AutoHotkey. Και η μικροσοφτική σκριπτόγλωσσα από την οποία κατάγεται το AutoIt: ScriptIt. KeyTweak ~ Μόνο για αναχαρτογράφηση πληκτρολογίου. Το κάνει αλλάζοντας τιμές στο μητρώο. Δεν χρειάζεται να τρέχει συνέχεια. Το εκτελείτε μια φορά και τελειώσατε! SlickRun ~ Για εκτέλεση προγραμμάτων. Δεν το έχω δοκιμάσει, αφού κάνω την ίδια δουλειά με το 320MPH. WinKey ~ Κλασικό προγραμματάκι για πληκτροσυντομεύσεις με το Winkey, από την Copernic, την εταιρεία του Copernic Desktop Search. Έχει αποσυρθεί πια από το σάιτ αλλά δουλεύει καλά, και σε XP ~ Ένα άλλο πλουσιότερο και ζωντανό πρόγραμμα: HotKeyz Χρήσιμα εργαλεία για όταν φτιάχνουμε σκριπτάκια και παρουσιάσεις στο Ινσόμνια Scintilla Text Editor Notepad++ foobar2000 :-P Αλλαγές 20070301. Μικροδιορθώσεις, μικροαλλαγές. 20070216. Ενημέρωση για νέα οδηγία #IfWinActive, μικροδιορθώσεις, 1 λινκ. 20070202. Μικροδιορθώσεις, 2 νέα λινκ. 1
Eusebius Δημοσ. 31 Ιανουαρίου 2007 Μέλος Δημοσ. 31 Ιανουαρίου 2007 Κράτηση... Το είχα σχεδόν έτοιμο από καιρό και κάποια στιγμή έπρεπε να το τελειώσω. Αλλά βγήκε πολύ μεγάλο και μπορεί να κόψω τίποτα.
Aias Δημοσ. 31 Ιανουαρίου 2007 Δημοσ. 31 Ιανουαρίου 2007 Πολυ ωραια δουλεια !Καλογραμμενο και τακτοποιημενο ! Σιγουρα μπορει να σε βγαλει απο πολλα ενοχλητικα προβληματακια των Windows.
asmilon Δημοσ. 31 Ιανουαρίου 2007 Δημοσ. 31 Ιανουαρίου 2007 Κ α τ α π λ η κ τ ι κ ο ς οδηγος Eusebius! Τα συγχαρητηρια μου! Μου ανοιξες την ορεξη να κατσω να φτιαξω μακροεντολες
alkisg Δημοσ. 31 Ιανουαρίου 2007 Δημοσ. 31 Ιανουαρίου 2007 Αποθηκεύουμε το παρακάτω σαν WellDone.js: > var shell = WScript.CreateObject("WScript.Shell"); shell.SendKeys("^+2"); //Βάλε ελληνικά shell.SendKeys("+mpr;abo"); shell.SendKeys("^+1"); //Βάλε αγγλικά shell.SendKeys("+Eusebius"); Μετά βάζουμε μια συντόμευση προς το WellDone.js στο start menu ή στην επιφάνεια εργασίας. Δεξί κλικ στη συντόμευση που φτιάξαμε, ιδιότητες και της αναθέτουμε να ανοίγει με το συνδυασμό Alt+Ctrl+W. Μετά όπου κι αν είμαστε, π.χ. εδώ στο Insomnia, πατάμε Alt+Ctrl+W και βγαίνει Μπράβο Eusebius!!!
Eusebius Δημοσ. 31 Ιανουαρίου 2007 Μέλος Δημοσ. 31 Ιανουαρίου 2007 Να 'στε καλά, παιδιά! Άλκη, κόντεψα να πνιγώ! :-P
varathro Δημοσ. 13 Φεβρουαρίου 2007 Δημοσ. 13 Φεβρουαρίου 2007 Μπράβο ρε Eusebius. Χρησιμοποιώ την Autohotkey εδώ και ένα χρόνο. Και είναι γ****η.
Eusebius Δημοσ. 16 Φεβρουαρίου 2007 Μέλος Δημοσ. 16 Φεβρουαρίου 2007 Ευχαριστώ! Ενημέρωσα ένα παράδειγμα χρησιμοποιώντας κάτι που προστέθηκε τελευταία στη γλώσσα και πρόσθεσα λινκ στη σελίδα του πρότζεκτ στο SourceForge.net. Έχει ενταχθεί εδώ και μερικούς μήνες στο SF.net: http://sourceforge.net/projects/ahk/ Επίσης, για όσους ενδιαφέρονται, το πρότζεκτ χρειάζεται πόρους. Όχι! Δεν ζητάνε λεφτά! AutoHotkey Needs You http://www.autohotkey.com/forum/viewtopic.php?t=14238
accipio Δημοσ. 16 Φεβρουαρίου 2007 Δημοσ. 16 Φεβρουαρίου 2007 Αν και δεν χρησιμοποιώ αυτό το πρόγραμμα, και μάλλον δε θα βρω την όρεξη να το ψάξω, δε μπορώ παρά να μη σε συγχαρώ για την καταπληκτική δουλειά σου (μόλις σήμερα το είδα). Μπράβο!
Eusebius Δημοσ. 16 Φεβρουαρίου 2007 Μέλος Δημοσ. 16 Φεβρουαρίου 2007 Ευχαριστώ, accipio! Πάντως δεν θέλει πολύ ψάξιμο. Μπορείς να ξεκινήσεις χρησιμοποιώντας μόνο hotstrings, αν σου χρειάζεται κάτι τέτοιο, ή καμιά συντόμευση της μίας αράδας. Μετά, αν θες κάτι που δεν ξέρεις πώς γίνεται, βρίσκεις στη βοήθεια ένα παράδειγμα που σου ταιριάζει, το ξεπατικώνεις και το προσαρμόζεις. Έτσι κάνω.
Freakster Δημοσ. 16 Φεβρουαρίου 2007 Δημοσ. 16 Φεβρουαρίου 2007 Το ειχα βρει πριν κανα χρονο και παλευα να φτιαξω σκριπτακι να παιζω το far cry με χειριστηριο (ναι doing) αλλα ψιλοαπελπιστηκα και το αφησα, δυστυχως δεν ειναι noob friendly.
Eusebius Δημοσ. 17 Φεβρουαρίου 2007 Μέλος Δημοσ. 17 Φεβρουαρίου 2007 Τί ήθελες να κάνεις; Αυτά που λέει εδώ; http://www.autohotkey.com/docs/misc/RemapJoystick.htm
Freakster Δημοσ. 17 Φεβρουαρίου 2007 Δημοσ. 17 Φεβρουαρίου 2007 Αυτο πως μου ξεφυγε; Thanx Eusebius! /me starts over!
Eusebius Δημοσ. 20 Φεβρουαρίου 2007 Μέλος Δημοσ. 20 Φεβρουαρίου 2007 Μαζί με τη διαφήμιση του AutoHotkey πετύχαμε και διαφήμιση του Insomnia.gr: http://www.autohotkey.com/ http://www.autohotkey.com/docs/ Προηγουμένως το είχα αναγγείλει στο φόρουμ του AutoHotkey για να το βρίσκει κανείς αν ψάξει για autohotkey+greek: http://www.autohotkey.com/forum/viewtopic.php?t=16708
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα