Remap kombinasi tombol ke kombinasi lain, mis. Super + Ctrl + Shift + J -> Ctrl + Shift + Kiri

11

Saya ingin menerapkan lapisan kunci tambahan, sehingga saya dapat mengakses kunci non-alfanumerik tanpa harus menggerakkan pergelangan tangan saya.

Saya telah menggunakan Autokey untuk tujuan ini, tetapi pengalaman itu tidak memuaskan: kadang-kadang ada kelambatan dan membiarkan penekanan tombol asli masuk ke aplikasi tertentu.

Jadi saya butuh solusi tingkat rendah.

lolmaus - Andrey Mikhaylov
sumber
Anda mungkin harus membuat custom input driver virtual untuk melakukan ini yang saya kira akan ditulis dalam C
Amias
@Amias, bisa tolong jelaskan?
lolmaus - Andrey Mikhaylov
Anda dapat memiliki driver xinput yang menjalankan driver keyboard normal tetapi menginterpretasikan penekanan tombol sebelum meneruskannya ke xorg, ini akan memberi Anda kontrol penuh tetapi akan menjadi beberapa hari yang cukup kompleks bekerja untuk seorang programmer C.
Amias

Jawaban:

10

Cobalah kombinasi xbindkeys dan xvkbd . xbindkeys mendengarkan kunci dan mengirimkan terjemahan ke xvkbd.

sudo apt-get install xbindkeys xvkbd
xbindkeys --defaults > /home/your-user-name/.xbindkeysrc

Buka .xbindkeysrc di editor favorit Anda. Saya mengomentari semuanya, tapi ada baiknya merujuk jika diperlukan.

Untuk memeriksanya, saya mencoba memetakan Ctrl +; untuk Ctrl + V

"xvkbd -xsendevent -text "\Cv""
   control + semicolon

Saya berharap Anda mencari sesuatu seperti ini

"xvkbd -xsendevent -text "\C\S\[Left]""
  Super+Control+Shift+J

Simpan file, lalu jalankan xbindkeys

Untuk memuat ulang perubahan konfigurasi, saya mematikan proses xbindkeys lalu memulai kembali.

sintaks xbindkeys

Saya mencari kombinasi tombol dengan menggunakan GUI untuk xbindkeys

sudo apt-get install xbindkeys-config
xbindkeys-config

Setelah Anda menjalankannya, tekan Dapatkan Kunci untuk kombinasi untuk dimasukkan ke baris kedua file .xbindkeysrc Anda.

sintaks xvkbd

Dari manual:

\r - Return
\t - Tab
\b - Backspace
\e - Escape
\d - Delete
\S - Shift (modify the next character; please note that modify with ``\S'' will be ignored in many cases. For example, ``a\Cb\ScD\CE'' will be interpreted as a, Control-b, c, Shift-D, and Control-Shift-E.)
\C - Control (modify the next character)
\A - Alt (modify the next character)
\M - Meta (modify the next character)
\[keysym] - the keysym keysym (e.g., \[Left]), which will be processed in the similar matter with other general characters
\{keysym} - the keysym keysym (e.g., \{Left}), which will be processed in more primitive matter and can also be used for modofier keys such as Control_L, Meta_L, etc.; also, \{+keysym} and \{+keysym} will simulate press and release of the key, respectively [Version 3.3]
\Ddigit - delay digit * 100 ms
\xvalue - move mouse pointer (use "+" or "-" for relative motion)
\yvalue - move mouse pointer (use "+" or "-" for relative motion)
\mdigit - simulate click of the specified mouse button

Senang mendengar cara kerjanya dan jika kombinasi itu cocok untuk tujuan Anda. Ini terlihat bagus sebagai keymapper, tetapi tidak harus pelari makro.

Mark Hewitt
sumber
Hai @MarkHewitt! Terima kasih banyak atas tanggapan terperinci! Sayangnya, ini tidak bekerja untuk saya dengan sangat baik: penekanan tombol asli terus datang, yang merusak semuanya.
lolmaus - Andrey Mikhaylov