Saya mengetahui sejumlah cara memetakan ulang kombinasi tombol di Ubuntu secara global (mis., Memetakan ulang secara global Ctrl + S untuk mengirim Ctrl + D atau sesuatu), seperti aplikasi xbindkeys . Apa yang saya butuhkan adalah cara untuk melakukan ini hanya untuk aplikasi tertentu . Misalnya, sesuatu seperti "Remap Ctrl + S untuk mengirim Ctrl + D, tetapi hanya di Chrome ". Apakah ada cara untuk mencapai ini?
shortcut-keys
x11
Derek Thurn
sumber
sumber
Jawaban:
Gagasan Anda menggunakan xbindkeys terdengar bagus:
di
.xbindkeysrc
add Anda, pengikat kunci baru:Ini akan dieksekusi
"app_specific_keys.sh"
ketika Anda menekanctrl+s
.Sekarang Anda perlu mendefinisikan skrip. Seharusnya mendapatkan jendela aktif dan dari situ nama aplikasi yang saat ini memiliki fokus:
Ini akan melakukan trik: ia meminta xdotool untuk jendela yang aktif, kemudian meminta xprop untuk semua properti jendela dengan id yang diberikan, dan kemudian mengurangi output yang sangat verbose ke nama aplikasi (sebenarnya kelasnya). Jika Anda menjalankan ini di terminal gnome, Anda akan mendapatkannya
Sekarang Anda perlu mendefinisikan tindakan untuk aplikasi Anda:
Jadi bersama-sama, skripnya
"app_specific_keys.sh"
bisa seperti ini:Ini seharusnya bekerja, tetapi seperti dalam pertanyaan ini , saya harus mengakui bahwa itu tidak. Mungkin karena salah satu dari Compiz, Unity, Global Menu tidak berfungsi dengan baik dengan
--clearmodifiers
opsi xdotool. Sebuah solusi akan menambahkan tidur di depan naskah Anda di oder untuk dapat melepaskan kunci sendiri: Dalam Anda.xbindkeysrc
perubahan ke Kombinasi tombol ini:Sebagai sidenote: ini tidak akan berfungsi, jika Anda ingin mengubah kunci untuk program yang berjalan di terminal (misalnya vi atau emacs dalam mode konsol). Kelas aplikasi yang dikembalikan masih akan "Gnome-terminal".
Semoga itu bisa membantu.
sumber
xvkbd -xsendevent -text "\Cs"
. Ini sepertinya tidak menderita masalah yang Anda lihat dengan xdotool.f
meneleponxdotool key f
. Masih mencari cara untuk melakukan ini.xdotool type --window $(xdotool getwindowfocus) [keys]
menggunakan opsi --window dan mengirim ke jendela yang sedang aktif TIDAK akan mengarah pada perilaku rekursif.autokey seperti Autohotkey untuk Ubuntu. Anda dapat menulis skrip dengan python dan menjalankannya melalui pintasan keyboard dan filter windows (menjadikannya pseudo-aplikasi spesifik). Skrip Anda dapat mengontrol acara keyboard dan mouse dan bahkan memindahkan jendela sebagai sentuhan tambahan.
sumber
autokey
WAY lebih cepat daripadaxbindkeys
, bahkan dengan mode deteksi jendela aktif - tindakan segera diambil. Kelemahan: Penugasan tombol mouse tampaknya tidak berfungsi (saya pikir ini bug)