5 puan yazan GN⁺ 2023-08-23 | 1 yorum | WhatsApp'ta paylaş
  • AutoHotKey güçlü ama ilk kullanımda göz korkutabilen bir Windows otomasyon aracı olduğu için, gerçek kişisel script koleksiyonu öğrenme materyali olarak paylaşılıyor
  • Materyal toplam 14 dosyadan oluşuyor ve klasör açma, metin ekleme, program bazında kısayol genişletme gibi hemen denenebilecek otomasyon örneklerine odaklanıyor
  • Geçerli tarih, em dash, ¯\_(ツ)_/¯ hızlı girişi ile vim kullanıcıları için modal kısayol sistemi ve basit bir GUI demosu da içeriyor
  • Kısa yolu aşan pratik iş akışı otomasyonunu göstermek için zaman damgalarını UTC ve yerel saat arasında dönüştüren bir script de bulunuyor
  • Her dosyada kodun ne yaptığına, bazılarında ise neden o şekilde uygulandığına dair yorumlar yer aldığı için eğitsel bir kod tabanı olarak okumaya uygun

Gerçek işe yakın AutoHotKey örnekleri koleksiyonu

Eğitsel bir kod tabanı olarak okuma yöntemi

  • Bu depo, insanların kodu okuyarak öğrenebilmesi için hazırlanmış eğitsel bir kod tabanı örneğidir
  • Her dosyada kodun ne yaptığına dair bolca yorum bulunur; bazı uygulamalarda ise neden belirli bir yaklaşımın seçildiği de anlatılır
  • Eğitsel kod tabanlarıyla ilgili ayrı bir açıklama bülten yazısında devam ediyor
  • Daha fazla açıklama gereken kısımlar GitHub issue açılarak talep edilebilir

1 yorum

 
GN⁺ 2023-08-23
Hacker News yorumları
  • Kodla ilgili bir tartışmaya ilk kez işe yarar bir şey katabilecekmişim gibi hissediyorum. Yazı yazan biri olarak, istediğim an boş bir notepad.exe penceresini hızla açan bir AutoHotkey betiği hazırladım; ~ tuşuna basınca açılıyor, tekrar basınca kapanıyor ve içinde içerik varsa kaydetme iletişim kutusu çıkıyor.
    AHK'min yaptığı işin tamamı bu.

    • Aynı tuşun genelde terminal toggle için de geleneksel olarak kullanılması ilginç. Programcıların terminalde “yaşaması” gibi, dijital grafik çalışanlarının da eskiz defterini veya çizim programını benzer şekilde açıp açmadığını merak ediyorum.
      Pencereyi kapatmadan veya simge durumuna küçültmeden önceki pencereyle hızlıca gidip gelmek istediğinizde Windows'un yerleşik kısayolu Alt + Escape işe yarıyor. Alt+Tab gibi pencere genel görünümünü açmadan doğrudan bir önce odakta olan pencereye geçiyor.
      AutoHotkey v1'de, pencere başlığından bir parça arayıp etkinleştiren; zaten etkinse send, !{escape} ile geri dönen, yoksa çalıştıran türden bir switcher/launcher boilerplate'i yazabilirsiniz. Görev çubuğunu kalabalıklaştırmak istemiyorsanız WinHide/WinShow da kullanabilirsiniz; ama bazı pencerelerde pek uymuyor ve pencere algılama için bazen ahk_exe veya ahk_class daha uygun olabiliyor.
    • Notepad++ otomatik kaydetme yüzünden daha iyi olmaz mı diye düşünüyorum. Kaydedilmemiş belgelerin bile otomatik kaydedilmesi en iyi özelliklerinden biri bence.
    • Yukarıdaki betiği AutoHotkey 2'ye taşırsanız “Tilde opens Notepad” gibi daha basit yazabilirsiniz. WinActive("Untitled - Notepad") ve WinExist("*Untitled - Notepad") kontrolleriyle kapatıp veya etkinleştirip, yoksa Run "Notepad" çalıştırma şeklinde.
    • Windows tuşuna basıp “Notepad” yazdıktan sonra Enter'a basmaktan sadece çok az daha hızlı. Bunun yerine tek bir notes.txt belgesini açacak şekilde yaparsanız, notları getirip üzerine ekleme ve tek bir kısayolla kaydetme/kapatma da mümkün olur; bu daha havalı olabilir.
    • İyi yöntem. WinActive() veya WinExist() fonksiyonlarını kullanırsanız birden fazla başlık koşulunu or ile birleştirebilirsiniz; gerekirse "Untitled - Notepad ahk_class Notepad" gibi ahk_class koşulunu da birlikte ekleyebilirsiniz.
  • AutoHotkey harika ama keşke dili biraz daha düzgün olsaydı. Aero Snap'in altın oranlı bir sürümünü kararlı biçimde yapmaya çalışırken epey uğraştım; birden fazla monitör ve boyutla çalışmanın bu kadar zor olması için bir sebep yok gibi görünüyor, ama garip Loop sözdizimi veya basit hataların sessizce başarısız olması yüzünden işin tadı kaçtı ve vazgeçtim.
    Python için ahk modülünü de buldum ama keyboard modülüyle birleştirince, kısayol dinleyicisi olarak AutoHotkey kadar iyi çalışmadı.
    https://github.com/idbrii/daveconfig/blob/main/win/autohotke...
    https://pypi.org/project/ahk/

    • Bu yüzden AutoHotkey v2 var. AHK'nin Python 3 anı gibi; birkaç yıldır mevcut ve kararlı sürümü yaklaşık bir yıl önce çıktı, ama hâlâ benimsenmesi pek yaygın görünmüyor.
    • Bu yüzden CapsLock'u Control'a çevirmek dışında pek kullanamıyordum. Belki de artık AHK'ye derlenen bir Lisp DSL yapmanın zamanı gelmiştir.
    • Doğru, AHK'nin en büyük sorunu bu ve v2 bu kısmı epey iyileştiriyor. Herhangi bir dilde kullanılabilecek genel amaçlı bir kısayol dinleyicisinin, wasm eklentisi sihri gibi bir şeyle mümkün olmasını hayal ediyorum.
  • Düğünümde AutoHotKey ile bir fotokabin yaptım. Nişanlımın Nikon'unu USB üzerinden kontrol eden basit bir yazılımı ve dizüstündeki IrfanView'i birlikte kullandım; IrfanView'i de bir klasörü izleyip her zaman en son fotoğrafı gösterecek şekilde ayarladım.
    AutoHotKey ile Preview, Autofocus ve “SNAP” düğmeleri olan basit bir GUI yaptım; SNAP'e basılınca büyük bir geri sayımdan sonra fotoğraf çekiyor, kamera yazılımını simge durumuna küçültüp IrfanView'i açıyordu. Birkaç saniye sonra tekrar düğmeli GUI'ye dönmesini sağladım; davetliler sevdi, ben de fotokabin kiralama için birkaç yüz avro tasarruf edip güzel fotoğraflar elde ettim.

  • Bu AutoHotKey betiği benim için oyunun kurallarını değiştirdi. Ctrl + Shift + V'yi biçimsiz yapıştırmaya eşledim; panoyu metne dönüştürüp yapıştırıyor, kısa süre bekliyor ve sonra özgün panoyu geri yüklüyor.

    • Bu arada AutoHotKey olmadan da Powertoys veya PureText ile yapılabiliyor. Çok kullanışlı.
      https://learn.microsoft.com/en-us/windows/powertoys/
      https://stevemiller.net/puretext/
    • Biçimlendirmeyle birlikte yapıştırmanın varsayılan olması gerçekten tuhaf. Şimdiye kadar biçimlendirmeyi koruyarak yapıştırmak istediğim hiç olmadı; hangi kullanım senaryosunu hedeflediğini de anlamıyorum.
    • Ctrl+Shift+V gerçekten harika. Pano için işletim sistemi standardı kısayol olmalı.
      Son 5 klip gibi çok değerli bir pano da güzel olurdu, ama bu fazla büyük bir istek olabilir.
  • AHK, Windows’a bağladığım uygulamalardan biri. Klavyeye äöüß, áóúñ gibi karakterler eklemek; oda ve daire ışıklarının parlaklığını kontrol etmek; 08:39 –, 2023-08-22 08:39:46, 2023-08-22 — Tuesday gibi zaman damgalarını bir iki tuşla eklemek; Pause tuşu aç/kapatıldığında Tasmota destekli priz üzerinden monitörün gücünü kapatıp açmak gibi işler için kullanıyorum.
    Yalnız ikinci klavyeyi bir düğme pedi gibi kullanırken o tuş girişlerini de yutabilen bir özellik olmasını isterdim. Bu yüzden daha fazla düğme elde etmek için küçük bir Bluetooth klavyeyi Raspberry Pi Zero’ya bağlayarak kullanıyorum

    • macOS’te Hammerspoon en iyi seçenek gibi görünüyor
      https://www.hammerspoon.org/
    • Maliyetine katlanmaya değerse QMK ya da başka özel firmware destekleyen ucuz bir klavye bulup bazı tuşları F13~F24’e veya Ctrl+Alt+Shift+P gibi basması zor kombinasyonlara eşleyebilirsiniz
    • Luamacros ile ikinci klavyeyi yakalayıp tuş girişlerini AutoHotKey’e ileterek iyi sonuç aldığım olmuştu
      https://miquelvir.medium.com/secondkeyboard-1c39e52e023b
      Şu da var: https://github.com/evilC/AutoHotInterception
    • Linux’ta AutoKey kullanıyorum. AHK’den daha az güçlü ama temel Python kullanması güzel
      https://github.com/autokey/autokey
    • AutoHotInterception kullanırsanız AHK, donanım kimliğine göre farklı klavye/fareleri ayırt edebilir. Ayrı bir klavyeye kendi düzenini ve makrolarını koyabilirsiniz
  • Ben de AutoHotKey’i sürekli kullanıyorum. 6 çeşit tarih/saat damgası kısayolu; sık kullandığım host’lar ve seri portlar için PuTTY/SSH başlatıcıları; Outlook, Windows Terminal, Total Commander gibi 10’dan fazla uygulama için duruma bağlı başlatıcılar; her yerde biçimlendirmesiz yapıştırma; satır sonlarını kaldırarak yapıştırma; özel karakterler ve emojiler için AltGr giriş katmanı; medya/ses kısayolları ekledim

  • Kişisel Linux dizüstümde Caps Lock ile Escape tuşlarını birbirinin yerine kullanıyorum ve buna alıştım. Windows’u dual boot ettiğimde aynı ayarı Powertoys ile yapmıştım; ama şirkette Powertoys ya da Uncap kuramadığım için AutoHotKey’den başka seçeneğim yok
    StackOverflow yanıtını izleyince Caps Lock ve Escape’in ikisi de iki tuşu birlikte gönderir hale geldi; bu da ara sıra Teams mesajlarımı bozuyor
    https://github.com/microsoft/PowerToys
    https://github.com/susam/uncap
    https://stackoverflow.com/questions/38558376/how-to-map-caps...

    • Kanata harika. Hem Linux hem Windows’u destekliyor; ama ana çalışma ortamım Linux olduğu için Windows’ta henüz kullanamadım
      https://github.com/jtroo/kanata
    • Home row değiştirici tuşları da öneririm. Tuşa kısa basınca normal çalışıp, uzun basınca başka bir işlev görmesini sağlayan bir yöntem
      Örneğin https://github.com/evilC/TapHoldManager bunu AHK’de uyguluyor. Shift/Ctrl/Win/Alt’i fdsa ve jkl; altına koyarsanız serçe parmak kullanımı azalır ve parmaklarınız home row’da daha çok kalabilir
    • Birkaç yıldır AHK ile bu tuşları değiştirerek kullanıyorum ve şu kadar basit bir betik çalışıyor: CapsLock::Esc, Esc::CapsLock
      Programları global kısayollarla başlatmak gibi başka hızlı AHK iyileştirmelerini de derledim: https://nickjanetakis.com/blog/remap-and-set-global-hotkeys-...
    • Scancode Map kayıt defteri de denemeye değer. Ctrl/CapsLock’u değiştirmek için kullanıyorum; PowerToys’un halledemediği RDP yazılımlarında ve yönetici yetkili uygulamalarda da iyi çalışıyor
      https://superuser.com/questions/550679/where-can-i-find-wind...
    • Aynı sorun yüzünden takılmıştım, sonunda zorla da olsa çalışan bir şey yaptım
      https://github.com/hwalinga/dotfiles/blob/master/CapsLockCtr...
      CapsLock’u başka bir tuşla birlikte basınca Ctrl, kısa basınca Esc olarak çalışan çift işlevi de uyguluyor
  • Başkalarının da söylediği gibi AHK, Windows’ta yapmanıza imkân verdiği şeyler açısından şaşırtıcı derecede kapsamlı. Kişisel olarak AHK sayesinde 100 bin dolardan fazla tasarruf ettiğimi ya da kazandığımı söyleyebilirim.
    Ama AHK dilinin kendisi yazması en keyifli olanlardan değil. Python ya da Lua’da neden aynı ölçüde güçlü bir araç olmadığını merak ediyorum; https://github.com/pywinauto/pywinauto da pratikte AHK kadar iyi çalışmadı. Sonuçta altında WinAPI var; iyi bir sarmalayıcı kütüphane varsa C# da bir seçenek olabilir. AHK’nin popüler olmasının nedeni bence çirkin ama çalışıyor olması.

    • Henüz yapmadıysanız v2’ye geçmeyi denemek iyi olur. Bu yılın başında çıktı ve dil çok daha az çirkin hâle geldi. Komut/fonksiyon ayrımı kalktı, her şey fonksiyon oldu.
    • AHK’yi C# ile yeniden yazmaya ve diğer işletim sistemlerini de desteklemeye yönelik bir girişim var.
      https://www.autohotkey.com/boards/viewtopic.php?f=80&t=77248
    • AHK’nin popüler olmasının nedeni, çoğu “gerçek” programlama dilinin kabul etmeyeceği çirkinliğin başlangıçta erişilebilirliği artırması.
    • PyAutoGui de çok iyi. Uzun süredir kullanıyorum ve son zamanlarda birkaç basit AHK otomasyonunu onunla yeniden yazdım. Bire bir ikamesi değil, bu yüzden hâlâ AutoHotKey kullanıyorum; ama UI otomasyonu özellikleri iyi tasarlanmış.
  • AutoHotKey harika. Daha hızlı uygulama değiştirme için kullanıyorum; benim kurulumumda Right Alt tuşunu “kısayol etkinleştirme” tuşu yapıp her şeyi onunla kontrol ediyorum.
    Basılı tutup bir harf tuşuna bastığımda ilgili uygulamanın örnekleri arasında dolaşıyor. Örneğin Alt+C VS Code penceresine geçiyor; Alt+F türevleri ise belirli bir profille yeni bir Chrome penceresi gibi yeni uygulama örnekleri açıyor. Alt+sayı mevcut odaktaki pencereye atanabiliyor; Alt’a dokununca düzenleme modu açılıyor ve mevcut pencereyi sayı tuşlarına atayabiliyorum. Düzenleme modunda H/J/K/L yukarı/aşağı/sol/sağ gezinme tuşları oluyor; bu da uygulama değiştirmeyi çok daha hızlandırıyor.

  • Eskiden Diablo 3 oynarken bulup değiştirdiğim bir betik en etkileyicisiydi. Fare kullanan elimi mousepad’e fazla sert bastırdığım için tekrarlayan zorlanma yaralanması sorunu yaşamaya başlamıştım; bu yüzden kontrolcüyle oynayabilmenin bir yolunu aradım.
    O betik, analog hareketi karakterin etrafındaki küçük bir çembere bağlayarak herhangi bir yöne akıcı biçimde koşmayı sağlıyordu; bir düğmeye basınca menzili uzağa değiştirip menzilli yetenekler kullanabiliyordum. Sınıfa göre biraz özelleştirince şaşırtıcı derecede iyi çalıştı.