Beranda » bagaimana » Cara Mengikat HotKeys Global ke Program WINE di Linux

    Cara Mengikat HotKeys Global ke Program WINE di Linux

    Apakah Anda pernah menginstal program Windows di Linux di bawah WINE, hanya untuk mengetahui bahwa itu tidak mengikat hot-key sistem lagi? HTG memiliki pekerjaan di sekitar yang Anda cari.

    Gambar oleh djeucalyptus

    Ikhtisar

    Setiap orang yang bahkan telah memikirkan ide beralih ke Linux, mungkin sangat cepat menghadapi masalah bahwa ada satu aplikasi Windows yang PERLU Anda butuhkan untuk berfungsi. Kami telah menunjukkan kepada Anda bahwa Anda dapat melakukannya dengan menggunakan WINE.

    Untuk penulis ini, aplikasi tersebut adalah aplikasi Text-To-Speech yang menggunakan mesin Microsoft SAPI4. Menginstal program di bawah WINE sangat mudah, namun setelah selesai saya dengan cepat menemukan bahwa tombol pintas yang digunakan untuk memicu berbagai tindakan program (mulai membaca, berhenti membaca, dll ') tidak berfungsi dan bahwa ini dikenal masalah dengan WINE.

    Saya senang mengatakan bahwa setelah ribuan tahun mencari, saya akhirnya menemukan solusi dalam bentuk utilitas GNU yang dapat memanipulasi antarmuka X.org menggunakan fungsi asli. Meskipun bukan satu-satunya dari jenisnya, xdotool adalah yang paling mudah untuk bekerja dan sudah ada di repositori Ubuntu / Mint.

    xdotool

    Program xdotool dapat melakukan banyak tugas terkait jendela dari CLI, dengan itu, hanya dua yang akan kita manfaatkan adalah "pencarian" dan "kunci". Fungsi "pencarian" tidak hanya itu, mencari ID jendela sesuai dengan parameter yang Anda tetapkan untuknya. Fungsi "kunci" memungkinkan Anda untuk mensimulasikan pukulan tombol ke ID jendela.

    Instalasi & konfigurasi

    Diasumsikan bahwa Anda telah menginstal WINE dan program yang Anda butuhkan di bawahnya. Dalam contoh ini kita akan menggunakan Balabolka sebagai aplikasi "Windows" karena ini adalah replika freeware yang bagus dari program asli yang saya butuhkan untuk solusi ini (pusat pidato kedua).

    Jika Anda memilih untuk menggunakan Balabolka juga, Anda perlu mengaktifkan kemampuan tombol pintasnya.
    Catatan: Anda mungkin ingin menginstal TTSReader atau pusat bicara kedua bahkan dalam mode demo, sehingga suara SAPI akan diinstal. 

    Buka program dan pergi ke pengaturan (Shift + F6) di bawah "Opsi" -> "Pengaturan".

    Buka tab hotkey dan centang kotak centang untuk “Gunakan hotkey global”.

    Klik OK.

    Biarkan tetap berjalan di latar belakang sehingga dapat melakukan tugasnya saat kita mengaitkan penekanan tombol ke sana.

    Instal xdotool dengan mengeluarkan:

    sudo apt-get install xdotool

    Ikatan global

    Program xdotool sendiri tidak membantu kita mengikat secara global ke hotkey, tetapi kita dapat menggunakan sistem hotkey OS yang sudah ada. Apa yang akan kita lakukan adalah membuat skrip sederhana yang menggunakan xdotool untuk mengirim penekanan tombol yang kita inginkan ke program Balabolka dan menyebutnya dari sistem hotkey OS.

    Buat skrip yang disebut "start_read.sh" dengan konten berikut:

    kunci xdotool --window $ (pencarian xdotool --limit 1 --semua --pid $ (pgrep balabolka) --name Balabolka) "ctrl + alt + F9"

    Buat skrip lain kali ini yang disebut "stop_read.sh" dengan konten berikut:

    kunci xdotool - jendela $ (pencarian xdotool - batas 1 - semua - $ $ (pgrep balabolka) --name Balabolka) "ctrl + alt + F7"

    Catatan: Saya tahu ini adalah liner satu yang tidak memerlukan skrip, tetapi program "Keyboard Shortcuts" dari Mint / Ubuntu, tidak bekerja sama dengan hanya memintanya secara langsung. Jika Anda tahu cara melakukannya, silakan bagikan di komentar di bawah.

    Membawa perintah ini ke komponennya, yang kita lihat adalah:

    • Bagian “-pid $ (pgrep balabolka)”, mengeksekusi “pgrep” pada program yang ingin kita gunakan untuk memastikan ID prosesnya. Ini akan mempersempit xdotool yang diajukan dari "pencarian" hanya ke PID itu.
    • Bagian "xdotool search -limit 1 -all ... -name Balabolka", semakin mempersempit pencarian xdotool dan membatasi jawaban yang dikembalikan ke 1. Seperti dalam kasus kami, tidak masalah ID jendela mana yang dikembalikan dari program, membatasi hasil bertindak sebagai formatter untuk perintah "kunci". Anda mungkin perlu memijat bagian ini lebih banyak jika itu penting untuk program yang Anda gunakan.
    • Bagian "xdotool -window% WINDOW_ID%" ctrl + alt + F7 "", mengirim keystroke yang diinginkan ke windowID yang diperoleh oleh bagian sebelumnya.

    Jadikan skrip dapat dieksekusi.

    Linux Mint Keyboard pintasan

    Di Linux Mint, hotkey global diatur dalam program "Pintasan Keyboard".

    Setelah dibuka, klik "Tambah" untuk membuat pintasan khusus baru:

    Beri nama dan di bawah "Command" berikan path lengkap ke salah satu skrip yang telah kita buat di atas. Ulangi proses untuk skrip kedua.

    Sekarang, pada kolom "Pintasan", klik kata "Nonaktif" untuk mendapatkan opsi untuk mengatur kombo kunci baru.
    Catatan: Anda dapat, jika ingin, menggunakan sesuatu yang lain dari standar program. Dalam arti menciptakan "remap" untuk binding utama yang, tergantung pada program yang Anda gunakan, kalau tidak akan di luar kendali Anda.

    Tekan kombo yang telah Anda pilih dan dengar sihirnya.

    Keyboard Ubuntu

    Di bawah Ubuntu, program yang mengatur hotkey global hanya disebut "Keyboard".

    Beralih ke tab "Pintasan" dan pilih "Pintasan Khusus".

    Klik tanda plus untuk menambahkan pintasan. Beri nama dan di bawah "Command" berikan path lengkap ke salah satu skrip yang telah kita buat di atas. Ulangi proses untuk skrip kedua.
    Sekarang klik pada kata "Disabled" untuk mendapatkan opsi untuk mengatur kombo kunci baru.

    Catatan: Mengulangi catatan dari bagian Mint, Anda dapat, jika ingin, menggunakan sesuatu yang lain dari default program. Dalam arti menciptakan "remap" untuk binding utama yang, tergantung pada program yang Anda gunakan, kalau tidak akan di luar kendali Anda.

    Catatan Penulis

    Setiap kali saya serius mempertimbangkan untuk pindah ke Linux, masalah ini adalah yang pertama dalam daftar masalah saya. Bukannya Linux tidak punya masalah, tapi ini adalah rintangan yang sebenarnya, bagi saya. Saya sudah mencoba berkali-kali, meminta teman / orang di lapangan dan bahkan membuatnya menjadi karunia ... Saya senang kisah ini selesai dan bahwa jiwa saya akhirnya bisa beristirahat.
    Ini adalah harapan saya bahwa saya telah membantu seseorang di luar sana untuk tidak harus melalui cobaan yang sama.


    Doc Brown: Saya butuh hampir tiga puluh tahun dan seluruh kekayaan keluarga saya untuk mewujudkan visi hari itu. Ya Tuhan, sudah selama itu?