Saya memiliki nirkabel MX400 logitech. Ini memiliki tombol pencarian yang ingin saya gunakan untuk menempel (bukan roda gulir yang sangat sensitif tapi sulit ditekan). Saya sudah memetakan kembali tombol lain dengan xbindkeys, dan menggunakan xev untuk menemukan kode tekan tombol, tetapi ini tidak berfungsi untuk tombol pencarian. menggunakan xev dan mengklik tombol pencarian saya mendapatkan acara berikut
FocusOut event, serial 34, synthetic NO, window 0x3c00001,
mode NotifyGrab, detail NotifyAncestor
FocusIn event, serial 34, synthetic NO, window 0x3c00001,
mode NotifyUngrab, detail NotifyAncestor
KeymapNotify event, serial 34, synthetic NO, window 0x0,
keys: 4294967275 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
PropertyNotify event, serial 34, synthetic NO, window 0x3c00001,
atom 0x1d7 (_NET_WM_ICON_GEOMETRY), time 23653064, state PropertyNewValue
Tidak ada acara ButtonPress. Tampaknya tombol pencarian dicegat pada tingkat di bawah peristiwa X. Ada ide? Saya punya ubuntu 12.04. Ubuntu benar-benar melihat klik dan memunculkan dialog pencarian, tetapi tidak ada jejak peristiwa klik di xev.
Edit
Saya memeriksa metode yang disediakan dengan xmodmap. .Xmodmap
Sekarang saya berisi baris berikut
keycode 225 = XF86Paste NoSymbol XF86Paste``
menjalankan xmodmap ~/.Xmodmap
sekarang menonaktifkan tombol sama sekali (atau setidaknya, saya tidak mendapatkan hasil apa pun dengan menekannya). Saya mencoba xmodmap -pke
dan mencetak:
keycode 225 = XF86Paste NoSymbol XF86Paste NoSymbol XF86Paste
Cukup aneh. Semua entri lainnya diformat sama. Saya dekat dengan solusinya, tetapi masih ada yang aneh.
Edit 2
Saya mencoba menjalankan xinput (tidak pernah mendengar perintah ini. Hal yang luar biasa). Ada dua entri untuk Logitech. Ini adalah output dari daftar masing-masing (id 9 dan 10)
Logitech USB Receiver id=9 [slave pointer (2)]
Reporting 7 classes:
Class originated from: 9. Type: XIButtonClass
Buttons supported: 24
Button labels: "Button Left" "Button Middle" "Button Right" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right" "Button Side" "Button Extra" "Button Forward" "Button Back" "Button Task" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown" "Button Unknown"
Button state:
Class originated from: 9. Type: XIValuatorClass
Detail for Valuator 0:
Label: Rel X
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 9. Type: XIValuatorClass
Detail for Valuator 1:
Label: Rel Y
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 9. Type: XIValuatorClass
Detail for Valuator 2:
Label: Rel Horiz Wheel
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 9. Type: XIValuatorClass
Detail for Valuator 3:
Label: Rel Vert Wheel
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 9. Type: XIScrollClass
Scroll info for Valuator 2
type: 2 (horizontal)
increment: 1.000000
flags: 0x0
Class originated from: 9. Type: XIScrollClass
Scroll info for Valuator 3
type: 1 (vertical)
increment: -1.000000
flags: 0x2 ( preferred )
Logitech USB Receiver id=10 [slave pointer (2)]
Reporting 6 classes:
Class originated from: 10. Type: XIButtonClass
Buttons supported: 7
Button labels: "Button 0" "Button Unknown" "Button Unknown" "Button Wheel Up" "Button Wheel Down" "Button Horiz Wheel Left" "Button Horiz Wheel Right"
Button state:
Class originated from: 10. Type: XIKeyClass
Keycodes supported: 248
Class originated from: 10. Type: XIValuatorClass
Detail for Valuator 0:
Label: Rel X
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 10. Type: XIValuatorClass
Detail for Valuator 1:
Label: Rel Y
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 10. Type: XIValuatorClass
Detail for Valuator 2:
Label: Rel Horiz Wheel
Range: -1.000000 - -1.000000
Resolution: 1 units/m
Mode: relative
Class originated from: 10. Type: XIScrollClass
Scroll info for Valuator 2
type: 2 (horizontal)
increment: 1.000000
flags: 0x0
Perangkat penguji 9 tidak melakukan apa pun dengan tombol. Perangkat pengujian 10 malah berfungsi, dan ini adalah output saat saya mengklik
$ xinput test 10
key press 225
key release 225
key press 225
key release 225
key press 225
key release 225
Jadi tampaknya mouse bertindak sebagai keyboard dalam hal ini, tetapi untuk beberapa alasan, xmodmap tidak melakukan apa-apa ketika menerima kunci 225.
** Edit **
Saya dapat mengonfirmasi bahwa menambahkan keycode 225 = a
cetakan a
setiap kali saya mengklik tombol. Jadi masalahnya tampaknya terkait dengan bagaimana XF86Paste sebenarnya ditangani. Saya mengirimnya, tapi itu tidak menempel.
xbindkeys
mengatur untuk menjalankan ketika Anda memulai dengan benar? Bisakah Anda menonaktifkannya dan coba lagi?tail -f /var/log/dmesg
kemudian coba tekan tombol. Apakah Anda mendapatkan output yang merujuk ke tombol / tombol?xinput list
kemudian cari tahu kode tombol dengan kunci pencarian Andaxinput test <MOUSE ID>
. Apakah ini berhasil?xev
menampilkan acara XF86Paste / XF86Copy, tetapi tidak ada yang terjadi. Itu berarti Anda harus menggunakan kombinasi tombol CTRL + v untuk menempel. Xmodmap memetakan tombol 1: 1, tetapi Anda dapat menggunakan pengaturan pintasan keyboard untuk memicu eksekusi perintah pada penekanan tombol (lihat jawaban saya).Jawaban:
Untuk mensimulasikan acara keyboard, saya sarankan Anda alat xdotool yang hebat .
1. Pasang
xdotool
melalui terminal ( CTRL+ ALT+ T):atau gunakan Pusat Perangkat Lunak .
2. Buat skrip yang menggunakan xdotool untuk meniru peristiwa key CTRLdan v. Di terminal:
Salin konten berikut ke jendela editor yang terbuka. Setelah menyalin kode, simpan, lalu tutup:
Sekarang buat skrip dapat dieksekusi:
3. Logout dan login untuk memuat kembali PATH Anda .
4. Buat pintasan khusus
Pergi ke
System Settings
, lalu keKeyboard
, laluShortcuts
.Tekan
+
tombol di bagian bawah dialog. Berikan nama untuk shortcut Anda tentang untuk membuat dan untuk mengisi perintah dalam:fakepaste
. TekanOK
.Di sebelah pintasan baru Anda, Anda akan melihat
disabled
. Klik pada teks itu dan kemudian tekan tombol yang ingin Anda tetapkan untuk emulasi keyboard Anda.Anda sekarang harus dapat menggunakan kunci pencarian Anda untuk menempel!
sumber
solusi xbindkeys dengan xdotool
Untuk solusi ini Anda akan perlu
xbindkeys
danxdotool
Bunuh xbindkeys dan buang konfigurasi tombol Anda
dan
Tambahkan binding baru Anda
Sekarang Anda dapat memodifikasi file ini untuk menambahkan binding kustom, ini memiliki formulir
jadi jika Anda menambahkan
Anda akan membuka
gedit
setiap kali Anda menggulir ke atas.Jadi sekarang Anda dapat mencoba salah satu dari yang berikut, pilih salah satu yang paling cocok untuk Anda. Dalam semua kasus
xdotool click 2
akan ditiru, ini adalah tombol tengah mouse, dan ini akan menempelkan terminal di dalam dan luar.mencegat 225 dari mouse Anda :
mencegat kode kunci 225 secara umum :
ganti semua
XF86Search
acara (kembalikan pengaturan mouse Anda ke pengaturan asli terlebih dahulu, sehingga Anda mendapatkanXF86Search
kembali):Mulai xbindkeys dan uji
Lari
dan lihat apakah itu berfungsi.
sumber