5 poin oleh GN⁺ 2023-08-23 | 1 komentar | Bagikan ke WhatsApp
  • AutoHotKey adalah alat otomasi Windows yang kuat, tetapi terasa memberatkan untuk mulai dipakai, jadi kumpulan skrip pribadi yang benar-benar digunakan dibagikan sebagai materi belajar
  • Materi ini terdiri dari total 14 file, berfokus pada contoh otomasi yang bisa langsung dicoba seperti membuka folder, menyisipkan teks, dan memperluas shortcut per aplikasi
  • Isinya mencakup input cepat untuk tanggal saat ini, em dash, ¯\_(ツ)_/¯, hingga sistem shortcut modal untuk pengguna vim dan demo GUI sederhana
  • Ada juga skrip yang mengubah stempel waktu menjadi UTC dan waktu lokal, sehingga terlihat otomasi alur kerja praktis yang melampaui sekadar shortcut
  • Setiap file berisi komentar tentang apa yang dilakukan kodenya, dan sebagian juga menjelaskan mengapa implementasinya dibuat seperti itu, sehingga enak dibaca sebagai codebase edukatif

Kumpulan contoh AutoHotKey yang dekat dengan pekerjaan nyata

Cara membacanya sebagai codebase edukatif

  • Repositori ini adalah contoh codebase edukatif yang dibuat agar orang bisa belajar dengan membaca kodenya
  • Setiap file berisi banyak komentar tentang apa yang dilakukan kode tersebut, dan beberapa implementasi juga menjelaskan alasan memilih pendekatan tertentu
  • Penjelasan terpisah tentang codebase edukatif dilanjutkan dalam artikel newsletter
  • Bagian yang masih memerlukan penjelasan lebih lanjut dapat diminta melalui GitHub Issues

1 komentar

 
GN⁺ 2023-08-23
Opini di Hacker News
  • Rasanya ini pertama kalinya saya bisa menambahkan sesuatu yang berguna dalam diskusi terkait kode. Sebagai penulis, saya membuat skrip AutoHotkey untuk cepat membuka notepad.exe kosong kapan saja; saat tombol ~ ditekan, ia terbuka, lalu saat ditekan lagi ia tertutup, dan jika ada isi, dialog simpan akan muncul
    Itu saja yang dilakukan AHK saya

    • Menarik bahwa tombol yang sama biasanya juga lazim dipakai untuk toggle terminal. Seperti para programmer yang “hidup” di terminal, saya penasaran apakah pekerja grafis digital juga memunculkan sketchpad atau program gambar dengan cara serupa
      Saat ingin berpindah cepat ke jendela sebelumnya tanpa menutup atau meminimalkan jendela, shortcut bawaan Windows Alt + Escape berguna. Tidak seperti Alt+Tab, ia langsung berpindah ke jendela yang terakhir mendapat fokus tanpa menampilkan overview jendela
      Di AutoHotkey v1, Anda bisa membuat boilerplate switcher/launcher yang mencari potongan judul jendela untuk mengaktifkannya; jika sudah aktif, kembali dengan send, !{escape}; dan jika tidak ada, menjalankannya. Jika tidak ingin mengacaukan taskbar, Anda juga bisa memakai WinHide/WinShow, tetapi pada beberapa jendela ini kurang cocok, dan untuk deteksi jendela kadang ahk_exe atau ahk_class lebih tepat
    • Saya rasa Notepad++ mungkin lebih baik karena autosave. Menurut saya fitur yang otomatis menyimpan bahkan dokumen yang belum disimpan adalah salah satu fitur terbaiknya
    • Jika skrip di atas dipindahkan ke AutoHotkey 2, bisa ditulis lebih sederhana seperti “Tilde opens Notepad”. Caranya dengan memeriksa WinActive("Untitled - Notepad") dan WinExist("*Untitled - Notepad") untuk menutup atau mengaktifkannya, dan jika tidak ada, menjalankan Run "Notepad"
    • Ini hanya sedikit lebih cepat daripada menekan tombol Windows, mengetik “Notepad”, lalu menekan Enter. Namun kalau dibuat agar membuka satu dokumen notes.txt, akan lebih keren karena bisa memuat catatan, menambahkan isinya, lalu menyimpan/menutup dengan satu shortcut
    • Cara yang bagus. Dengan fungsi WinActive() atau WinExist(), beberapa kondisi judul bisa digabung dengan or, dan jika perlu, kondisi ahk_class juga bisa disertakan seperti "Untitled - Notepad ahk_class Notepad"
  • AutoHotkey memang hebat, tetapi saya berharap bahasanya sedikit lebih normal. Saya sempat kesulitan saat mencoba membuat versi rasio emas dari Aero Snap yang stabil; rasanya tidak ada alasan mengapa menangani banyak monitor dan ukuran harus sesulit ini, tetapi sintaks Loop yang aneh atau kegagalan diam-diam akibat kesalahan sederhana membuatnya tidak menyenangkan dan akhirnya saya menyerah
    Saya juga menemukan modul ahk untuk Python, tetapi saat digabung dengan modul keyboard, ia tidak bekerja sebaik AutoHotkey sebagai listener shortcut
    https://github.com/idbrii/daveconfig/blob/main/win/autohotke...
    https://pypi.org/project/ahk/

    • Karena itulah ada AutoHotkey v2. Ini semacam momen Python 3-nya AHK; sudah tersedia selama beberapa tahun dan versi stabilnya keluar sekitar setahun lalu, tetapi adopsinya sepertinya belum banyak
    • Karena itu, selain mengubah CapsLock menjadi Control, saya belum banyak memakainya. Mungkin sekarang saatnya membuat Lisp DSL yang dikompilasi menjadi AHK
    • Benar, itu masalah terbesar AHK, dan v2 banyak memperbaiki bagian ini. Saya punya impian agar listener shortcut umum yang bisa dipakai dari bahasa apa pun dapat terwujud dengan semacam keajaiban plugin wasm
  • Saat pernikahan, saya membuat photobooth dengan AutoHotKey. Saya memakai software sederhana untuk mengendalikan Nikon milik tunangan saya lewat USB, bersama IrfanView di laptop; IrfanView disetel untuk memantau folder agar selalu menampilkan foto terbaru
    Dengan AutoHotKey saya membuat GUI sederhana berisi tombol Preview, Autofocus, dan “SNAP”; saat SNAP ditekan, setelah hitung mundur besar, foto diambil, software kamera diminimalkan, lalu IrfanView ditampilkan. Beberapa detik kemudian kembali lagi ke GUI tombol, para tamu menyukainya, dan kami menghemat ratusan euro biaya sewa photobooth sekaligus mendapat foto-foto bagus

  • Skrip AutoHotKey ini mengubah segalanya bagi saya. Saya memetakan Ctrl + Shift + V menjadi paste tanpa format, sehingga clipboard diubah menjadi teks, ditempelkan, menunggu sebentar, lalu clipboard asli dipulihkan

    • Sebagai catatan, tanpa AutoHotKey pun ini bisa dilakukan dengan Powertoys atau PureText. Sangat berguna
      https://learn.microsoft.com/en-us/windows/powertoys/
      https://stevemiller.net/puretext/
    • Aneh sekali bahwa paste beserta format menjadi perilaku default. Selama ini saya tidak pernah ingin menempelkan sambil mempertahankan format, dan saya juga tidak paham kasus penggunaan apa yang ditargetkan
    • Ctrl+Shift+V benar-benar bagus. Seharusnya menjadi shortcut standar sistem operasi untuk clipboard
      Akan bagus juga kalau ada clipboard multi-nilai seperti 5 klip terakhir, tetapi mungkin itu permintaan yang terlalu besar
  • AHK adalah salah satu aplikasi yang saya pasang erat di Windows. Saya memakainya untuk menambahkan karakter seperti äöüß dan áóúñ ke keyboard, mengontrol tingkat kecerahan lampu kamar dan apartemen, memasukkan timestamp seperti 08:39 –, 2023-08-22 08:39:46, 2023-08-22 — Tuesday dengan satu atau dua tombol, serta menyalakan dan mematikan daya monitor lewat stopkontak berdukungan Tasmota saat tombol Pause di-toggle
    Hanya saja, saya berharap ada fitur untuk memakai keyboard kedua seperti button pad sambil menelan input tombolnya. Jadi, untuk mendapat lebih banyak tombol, saya sedang memakai keyboard Bluetooth kecil yang dihubungkan ke Raspberry Pi Zero

    • Di macOS, Hammerspoon tampaknya menjadi pilihan terbaik
      https://www.hammerspoon.org/
    • Kalau biayanya bisa diterima, Anda bisa mencari keyboard murah yang mendukung QMK atau firmware kustom lain, lalu memetakan sebagian tombol ke F13~F24 atau kombinasi yang sulit ditekan seperti Ctrl+Alt+Shift+P
    • Saya pernah mendapat hasil bagus dengan Luamacros untuk mencegat keyboard kedua dan meneruskan input tombol ke AutoHotKey
      https://miquelvir.medium.com/secondkeyboard-1c39e52e023b
      Ada juga yang ini: https://github.com/evilC/AutoHotInterception
    • Di Linux saya memakai AutoKey. Tidak sekuat AHK, tetapi bagus karena memakai Python standar
      https://github.com/autokey/autokey
    • Dengan AutoHotInterception, AHK bisa membedakan keyboard/mouse yang berbeda berdasarkan hardware ID. Anda bisa punya layout dan makro sendiri di keyboard terpisah
  • Saya juga selalu memakai AutoHotKey. Saya memasukkan 6 jenis shortcut stempel tanggal/waktu, launcher PuTTY/SSH untuk host dan port serial yang sering dipakai, launcher berbasis status untuk lebih dari 10 aplikasi seperti Outlook, Windows Terminal, dan Total Commander, paste tanpa format di mana saja, paste dengan penghapusan line break, layer input AltGr untuk karakter khusus dan emoji, sampai shortcut media/volume

  • Di laptop Linux pribadi, saya menukar Caps Lock dan Escape, dan sekarang sudah terbiasa. Saat dual boot ke Windows, saya memakai Powertoys untuk pengaturan yang sama, tetapi di kantor saya tidak bisa memasang Powertoys atau Uncap, jadi satu-satunya pilihan adalah AutoHotKey
    Setelah mengikuti jawaban StackOverflow, Caps Lock dan Escape malah sama-sama mengirim kedua tombol sekaligus, sehingga kadang merusak pesan Teams saya
    https://github.com/microsoft/PowerToys
    https://github.com/susam/uncap
    https://stackoverflow.com/questions/38558376/how-to-map-caps...

    • Kanata sangat bagus. Mendukung Linux dan Windows, tetapi karena pekerjaan utama saya di Linux, saya belum sempat memakainya di Windows
      https://github.com/jtroo/kanata
    • Modifier home row juga saya rekomendasikan. Caranya, jika tombol ditekan sebentar, ia bertindak seperti semula; jika ditekan lama, ia menjalankan fungsi lain
      Misalnya, https://github.com/evilC/TapHoldManager mengimplementasikan ini di AHK. Jika Shift/Ctrl/Win/Alt ditempatkan di bawah fdsa dan jkl;, penggunaan jari kelingking berkurang dan jari bisa lebih lama berada di home row
    • Selama beberapa tahun saya menukar tombol-tombol ini dengan AHK, dan skrip sederhana seperti berikut berfungsi: CapsLock::Esc, Esc::CapsLock
      Saya juga merangkum quick win AHK lain seperti menjalankan program dengan shortcut global: https://nickjanetakis.com/blog/remap-and-set-global-hotkeys-...
    • Registry scancode map juga layak dicoba. Saya memakainya untuk menukar Ctrl/CapsLock, dan berfungsi baik bahkan di software RDP atau aplikasi dengan hak admin yang tidak bisa ditangani PowerToys
      https://superuser.com/questions/550679/where-can-i-find-wind...
    • Saya juga pernah mentok dengan masalah yang sama, lalu akhirnya membuat sesuatu yang dipaksa bisa berjalan
      https://github.com/hwalinga/dotfiles/blob/master/CapsLockCtr...
      Saya juga mengimplementasikan fungsi ganda: CapsLock bertindak sebagai Ctrl jika ditekan bersama tombol lain, dan sebagai Esc jika ditekan sebentar
  • Seperti yang dikatakan orang lain, AHK memungkinkan melakukan sangat banyak hal di Windows sampai terasa mengejutkan. Secara pribadi, bisa dibilang saya telah menghemat atau menghasilkan lebih dari 100 ribu dolar berkat AHK
    Namun bahasa AHK itu sendiri bukan termasuk yang paling menyenangkan untuk ditulis. Saya bertanya-tanya mengapa tidak ada tool sekuat itu di Python atau Lua, dan https://github.com/pywinauto/pywinauto pun dalam praktiknya tidak bekerja sebaik AHK. Pada akhirnya di bawahnya adalah WinAPI, jadi C# juga bisa menjadi pilihan kalau ada library wrapper yang bagus. Menurut saya AHK populer karena memang jelek, tetapi berfungsi

    • Kalau belum, sebaiknya coba naik ke v2. Itu keluar awal tahun ini, dan bahasanya jadi jauh tidak sejelek sebelumnya. Pemisahan antara command/function hilang, semuanya menjadi function
    • Ada upaya untuk menulis ulang AHK dalam C# dan mendukung sistem operasi lain juga
      https://www.autohotkey.com/boards/viewtopic.php?f=80&t=77248
    • Alasan AHK populer adalah karena kejelekannya, yang tidak akan ditoleransi oleh kebanyakan bahasa pemrograman “sungguhan”, justru membuatnya mudah didekati di awal
    • PyAutoGui juga sangat bagus. Saya sudah memakainya lama, dan baru-baru ini menulis ulang beberapa otomasi AHK sederhana dengannya. Ini bukan pengganti 1:1, jadi saya masih memakai AutoHotKey, tetapi fitur otomasi UI-nya dibuat dengan baik
  • AutoHotKey luar biasa. Saya memakainya untuk berpindah aplikasi lebih cepat, dan dalam kasus saya Right Alt saya jadikan tombol “aktivasi shortcut” untuk mengendalikan semuanya
    Kalau ditahan sambil menekan tombol huruf, itu akan berpindah bergiliran di antara instance aplikasi tersebut. Misalnya Alt+C beralih ke jendela VS Code, dan kombinasi Alt+F membuka instance aplikasi baru, seperti jendela Chrome baru dengan profil tertentu. Alt+angka bisa diatur ke jendela yang sedang fokus, dan mengetuk Alt akan menyalakan mode edit sehingga jendela saat ini bisa ditetapkan ke tombol angka. Dalam mode edit, H/J/K/L menjadi tombol navigasi atas/bawah/kiri/kanan, sehingga perpindahan aplikasi menjadi jauh lebih cepat

  • Skrip yang dulu saya temukan dan modifikasi saat bermain Diablo 3 adalah yang paling berkesan. Tangan yang memegang mouse terlalu kuat menekan mousepad sehingga mulai menimbulkan masalah repetitive strain injury, jadi saya mencari cara untuk bermain dengan controller
    Skrip itu memetakan gerakan analog ke sebuah lingkaran kecil di sekitar karakter, sehingga bisa berlari mulus ke arah mana pun, dan saat menekan tombol, jangkauannya bisa diubah lebih jauh untuk mengeluarkan kemampuan jarak jauh. Dengan sedikit kustomisasi per kelas, hasilnya bekerja dengan sangat mengejutkan baik