Linux Fu: Peramban Emacs Fusion

Bukan rahasia lagi bahwa saya memiliki beberapa hal yang dibakar secara permanen ke dalam neuron saya: set instruksi 1802, perintah untuk WordStar, dan perintah untuk emacs. Ada suatu masa ketika emacs hampir menjadi sistem operasi saya. Tanpa X11, emacs memberi Anda cara untuk memiliki shell di satu jendela, memeriksa email Anda, dan tetap membuka pekerjaan Anda.

Saya masih sering menggunakan emacs (walaupun saya semakin senang dengan vscode dengan ekstensi pengikatan kunci emacs). Tapi saya juga menghabiskan banyak waktu — seperti sekarang ini — menulis di browser Web. Terutama jika saya menulis tentang kode, sulit untuk mengingat rangkaian kunci mana yang harus Anda gunakan dan saya sudah lama ingin melakukan sesuatu tentangnya. Jawabannya adalah program yang sangat keren bernama Autokey. (Anda dapat mengunduh file saya untuk itu, tetapi Anda mungkin ingin membaca lebih banyak terlebih dahulu.) Ini mungkin tidak berfungsi jika Anda telah beralih ke Wayland, tetapi itu dapat melakukan banyak hal untuk Anda mulai dari menghemat beberapa pengetikan hingga memprogram ulang favorit Anda program untuk memiliki penekanan tombol yang berbeda. Namun, itu bukan tanpa masalah, dan saya akan memberi tahu Anda apa yang saya ketahui tentangnya.

Proposisi Nilai

Autokey duduk di baki sistem Anda dan mengawasi apa yang Anda ketik. Dalam penggunaannya yang paling sederhana, Anda dapat mengatur frasa yang berbeda untuk menggantikan apa yang Anda ketik.

Misalnya, saya mungkin memprogram ulang HaD untuk muncul sebagai Hackaday untuk menghemat pengetikan. Saya biasanya menggunakan beberapa karakter aneh di awal atau akhir sehingga saya tidak memicu sesuatu secara tidak sengaja. Jadi mungkin saya bosan mengetik atau salah ketik http://www.hackaday.com. Saya dapat mengatur ~harus secara otomatis mengetikkan URL yang benar untuk saya.

Script vs Frase

Jika hanya itu yang dilakukan AutoKey, itu akan sangat berguna. Tapi itu lebih dari itu. Di sisi lain, jika hanya itu yang Anda inginkan, mudah diatur menggunakan frasa. Frasa memiliki dua bagian: pemicu dan beberapa teks. Pemicunya bisa berupa hotkey (seperti Alt+Shift+F6) atau bisa berupa teks yang Anda ketik seperti ~had. Dimungkinkan untuk menambahkan beberapa singkatan, jadi saya bisa memiliki pemicu tambahan dari had~ dan http://www.hakday.com jika saya ingin program memperbaiki ejaan saya yang buruk secara otomatis.

Autokey mudah diatur untuk penggantian teks sederhana, tetapi juga dapat mengakomodasi skrip Python yang kompleks

Sebuah frase hanya dapat memiliki satu hotkey, tetapi Anda dapat memiliki hotkey dan singkatan; baik akan memicu frase. Tentu saja, Anda juga dapat mendukung beberapa hotkey dengan beberapa entri yang identik. Terakhir, Anda dapat membatasi kecocokan ke kelas jendela tertentu yang cocok dengan ekspresi reguler. Jadi dimungkinkan untuk memiliki satu set pintasan untuk pengolah kata Anda dan set lain untuk browser web Anda.

Namun, kekuatan sebenarnya adalah Anda dapat membuat skrip alih-alih frasa. Ini persis sama kecuali alih-alih mengetik frasa, sepotong kode Python berjalan. Ada beberapa kelas untuk membantu Anda melakukan hal-hal seperti mengontrol keyboard dan mouse dari skrip. Anda bahkan dapat membuat dialog GUI menggunakan QT atau GTK. Namun, saya menemukan ada sedikit kelemahan dalam menggunakan skrip, tetapi untuk banyak hal, skrip berfungsi dengan baik. Anda akan melihat apa yang saya maksud sebentar lagi.

Selain skrip, frasa dapat memiliki konten dinamis tertentu seperti tanggal, file, atau bahkan keluaran program. Ada juga ketentuan untuk memposisikan kursor di tempat tertentu setelah entri teks selesai yang berguna untuk membuat potongan kode.

Singkatan Daya

Ada banyak opsi untuk memproses pemicu untuk singkatan

Ada beberapa opsi berguna yang dapat Anda terapkan pada singkatan. Untuk satu hal, Anda dapat mengontrol bagaimana mereka mengirim teks ke program target. Saya biasanya menggunakan metode keyboard untuk mensimulasikan pengetikan karena saya akan menggunakan karakter khusus, tetapi Anda juga dapat menempelkan teks menggunakan salah satu dari beberapa pintasan umum. Artinya, program dapat memuat clipboard dengan frasa Anda dan kemudian menempelkannya dengan Control+V.

Kekuatan sebenarnya datang ketika Anda mengatur singkatan. Dialog memungkinkan Anda memilih daftar kata pemicu dan Anda dapat mengatur opsi. Secara default, singkatan tidak akan diperluas hingga Anda mengetik beberapa karakter non-kata. Anda juga dapat meminta spasi atau tab. Namun, ada opsi lain. Misalnya, Anda dapat langsung memicu Autokey atau bahkan jika teks adalah bagian dari kata lain. Ada pilihan untuk mengabaikan atau menghormati kasus, antara lain.

Kelas Jendela

Hal terakhir yang dapat Anda gunakan untuk mengontrol logika pemicu adalah membatasi skrip atau frasa ke kelas jendela yang cocok dengan ekspresi reguler. Ini bagus karena Anda mungkin tidak ingin memetakan hal-hal aneh ke semua jendela. Tentu, sangat berguna untuk memiliki !address memasukkan alamat surat Anda di setiap program, tetapi jika Anda ingin membuat perluasan utama ke fungsi utama boilerplate, Anda mungkin tidak suka itu terjadi di LibreOffice.

Dalam kasus saya, fitur kelas jendela cukup penting karena saya tidak ingin memetakan ulang hal-hal seperti control+s di setiap program, hanya browser.

Bersama

Jadi, bagaimana Anda menggabungkan semua ini untuk meniru emacs? Sebagian besar perintah sangat sederhana. Misalnya, di emacs, control+s memulai pencarian, jadi cukup membuat fase dengan hotkey yang mengetik: +f yang diketahui browser sebagai pencarian. Jelas, Anda tidak dapat dengan mudah melakukan hal-hal yang belum diketahui browser. Control+r untuk pencarian terbalik, misalnya, tidak layak. Saya akhirnya memetakan sedikit lebih dari selusin perintah emacs dasar seperti itu. Saya memang menonaktifkan hotkey control+w untuk melakukan salinan clipboard karena browser menggunakannya untuk menutup tab, dan saya tidak ingin memblokirnya.

Saya menggunakan alat bawaan untuk menemukan kelas untuk browser Vivaldi yang saya gunakan. Saya akan mengetahui nanti bahwa saya perlu membuat perubahan di bidang ini, seperti yang akan Anda lihat.

Untuk saat ini, itu menangani satu perintah kunci. Namun, ada juga perintah dua karakter. Saya punya rencana, tetapi rencana itu tidak berjalan dengan baik. Untuk saat ini, saya hanya hidup tanpa mereka, tetapi saya meninggalkan contoh yang dinonaktifkan dalam kode untuk ulasan Anda.

Karena Anda dapat menjalankan skrip dan ada mekanisme penyimpanan variabel global untuk skrip, rencana saya sederhana. Pertimbangkan control+xu yang merupakan emacsese untuk membatalkan. Anda tidak dapat menggunakan karakter non-cetak dalam singkatan, jadi Anda harus menangani situasi dengan satu hotkey. Rencana saya adalah mengatur control+x untuk mengaktifkan tanda awalan di penyimpanan global skrip. Kemudian saya dapat menggunakan Autokey untuk memperlakukan Anda sebagai hotkey — hanya huruf u — dan mengirim au atau control+z, tergantung pada status flag. Secara kebetulan, kode juga akan mengatur ulang bendera.

Masalah

Ada masalah dengan ini bahkan jika semuanya bekerja dengan baik, yang tidak. Misalnya, jika Anda menekan control+x dan kemudian tombol yang tidak terduga, bendera tetap disetel dan saat berikutnya Autokey melihat au, Anda akan mendapatkan pembatalan. Itu akan mengejutkan Anda! Sepertinya hal yang benar untuk dilakukan adalah mengaktifkan aturan catch-all yang menonaktifkan dirinya sendiri atau membuat skrip membaca kunci. Namun, tampaknya tidak mungkin melakukan ini, setidaknya, tidak mudah.

Namun, saya bersedia menerima batasan itu. Saya menulis sedikit kode Python untuk control+x:

store.set_global_value(“vmacs-prefix-x”,”true”);

Kemudian, hanya untuk menguji satu hal pada satu waktu, saya melakukan hal berikut untuk huruf u:

state=store.get_global_value(“vmacs-prefix-x”); if state == “true”: keyboard.send_keys(“+z”); store.set_global_value(“vmacs-prefix-x”,”false”); lain: keyboard.send_key(“U”); # tombol kirim catatan akan menghormati shift, dll.

Saya senang bahwa itu berhasil. semacam. Ketika saya mengetik, saya melihat ada sesuatu yang salah. Saya mengetik agak cepat tetapi sesuatu terus mengganggu saya dan saya tidak tahu apa itu. Saya akhirnya menyadari bahwa ketika skrip atau frasa Autokey berjalan, browser kehilangan fokus hanya dengan satu tanda centang. Saat Anda menekan beberapa perintah kursor, Anda tidak menyadarinya, tetapi saat Anda mengetik dengan cepat, awas! Saya meninggalkan skrip, tetapi mematikannya seperti yang saya lakukan dengan control+w. Anda mungkin tidak terlalu sensitif terhadap pemutusan singkat dan, jika demikian, Anda mungkin ingin menerapkan kombinasi dua tombol lainnya dengan cara yang sama.

Kekecewaan Terhindar

Masalah lain yang saya miliki adalah kekecewaan besar. Makro tidak berfungsi di editor multiline atau WordPress, di mana saya menghabiskan terlalu banyak waktu. Pemeriksaan cepat menunjukkan bahwa kotak edit memiliki kelas Window yang berbeda. Saya akhirnya mengubah filter menjadi ekspresi reguler: .*Vivalid-stable. Tentu saja, jika Anda menggunakan browser yang berbeda, Anda harus menyesuaikan.

AutoKey dapat menyelidiki properti Window untuk Anda.

Saya masih sedikit kecewa bahwa meskipun kombinasi dua tombol itu layak, mereka tidak praktis bagi saya. Saya menduga ini akan menggigit Anda jika Anda mencoba mensimulasikan vi juga, karena Anda harus menangkap hampir setiap kunci normal.

Namun, saya menulis seluruh posting ini menggunakan semantik emacs, dan selain kadang-kadang lupa untuk menempelkan menggunakan control+y, itu berjalan dengan baik. Saya mungkin belum mengubah control+w kembali tidak karena saya tidak sengaja menutup jendela beberapa kali ketika saya mencoba untuk menempel.

Ada ekstensi browser yang dimaksudkan untuk memungkinkan Anda mengedit bidang teks di editor pilihan Anda. Mereka bekerja, tetapi mereka tidak lebih dari sekadar menyalin teks bolak-balik ke editor. Itu bagus untuk hal-hal kecil, tetapi mencoba membuat posting besar dengan fitur WordPress tidak terlalu praktis. Dengan sistem ini, Anda dapat memiliki semantik emacs saat mengedit teks dan di bilah URL. Akan sepele untuk mengadaptasi sistem ke hampir semua program.

Anda mungkin tidak peduli dengan emacs, tetapi ada banyak hal yang dapat menghemat waktu yang dapat Anda lakukan dengan program seperti Autokey. Dari pintasan untuk URL, hingga bash one-liner, hingga hal-hal yang Anda ketik berulang-ulang, Autokey mudah disiapkan untuk hal-hal sederhana dan cukup rumit untuk menangani pekerjaan besar. Saya hanya berharap itu berhasil di Wayland.