Bagaimana cara memungkinkan akor tombol keyboard untuk mengubah keymap sementara?


9

Aku benar-benar terbiasa dengan "Simultaneous Vi Mode" fungsi KeyRemap4MacBook yang memungkinkan Anda menekan terus sdan dtombol secara bersamaan dan kemudian menggunakan h, j, k, dan ltombol sebagai tombol panah. Ketika sdan dditekan bersamaan, tidak ada satau dperistiwa dipecat, tetapi ketika saya mengetik secara normal, saya tidak melihat adanya masalah keterlambatan dengan memukul satau secara dindividual.

Bagaimana saya bisa membuat ulang fungsi ini di Linux (khususnya RHEL 6.4)?

Beberapa ide yang saya punya:

  1. Jika s+ ddapat dipetakan untuk pengubah, maka kunci h, j, k, l+ modifikator bisa dipetakan sesuai. (Keyboard yang saya gunakan sekarang tidak memiliki tombol pengubah cadangan yang tersedia untuk digunakan, bukan s+ d, ditambah titik Mode Vi Simultan adalah untuk menjaga semua jari pada baris rumah. CapsLockSudah dipetakan ke Controldan Escape).

  2. Idealnya, saya akan menemukan cara untuk melakukan ini menggunakan pengaturan sistem atau sesuatu seperti keyboard XKB yang sudah saya gunakan. Jika itu tidak mungkin, mungkin sesuatu yang mirip dengan program xcape (yang saya gunakan dan yang memungkinkan kunci dipetakan ke berbagai penekanan tombol dan simbol kunci pengubah) dapat ditulis. xcapepemicu terlepas dari rilis kunci, jadi itu harus di-tweak untuk menjaga sdan dkunci agar tidak terlalu lambat.


Di RHEL 6.4? Apakah Anda menggunakan vim dari X atau melalui terminal?
Otheus

Oh, dan bagaimana Anda memetakan CapsLock ke Control AND Escape ??
Otheus

Peta CapsLock untuk Mengontrol dan kemudian menggunakan xcape (ditautkan di atas) untuk memetakan penekanan kontrol singkat ke Escape. Dalam pertanyaan itu, saya merujuk ke mode mirip-KeyRemap4MacBook, bukan untuk vim itu sendiri. Sejauh ini opsi paling menjanjikan yang saya temukan untuk apa yang saya cari adalah menggunakan modul Python Xlib dengan cara yang mirip dengan yang digunakan oleh Plover. Sejauh ini, saya belum punya banyak waktu untuk mengerjakan ini.
ws_e_c421

Jawaban:


2

Anda tidak dapat melakukan ini dengan alat standar, Anda harus menulis sesuatu (mungkin banyak xserver akan terpengaruh, dan jika Anda ingin ini berfungsi di luar X, akan ada perubahan kernel).

Alasan untuk ini adalah bahwa ide-ide desain didasarkan pada (dan dioptimalkan untuk) tidak termasuk pencatatan kunci biasa atau memancarkan karakter dari pengubah.


Saya masih melihat ini (butuh lebih banyak waktu). Saya menemukan proyek Plover yang tampaknya menyediakan templat untuk solusi berbasis X, tetapi saya ingin beralih ke Wayland sehingga saya berhenti melihat ke dalamnya. Baru-baru ini, saya menemukan caps2esc yang menggunakan libevdev dan libudev untuk mengambil dan memetakan ulang perangkat secara dinamis. Saya pikir pendekatan seperti ini bisa bekerja untuk chording selain memetakan kembali tetapi perlu diselidiki lebih lanjut (saya juga lebih suka solusi libinput).
ws_e_c421

Komentar libinput saya salah informasi. Saya pikir caps2esc bekerja dengan driver xf86-input-evdev yang merupakan alternatif untuk libinput, tetapi sebenarnya berfungsi pada tingkat libevdev yang merupakan perpustakaan tingkat rendah yang digunakan oleh kedua proyek. Perkakas untuk caps2esc telah di refactored ke dalam proyek alat intersepsi . Saya percaya plugin yang ditulis dengan baik untuk alat intersepsi dapat menyediakan fitur yang saya jelaskan. Ada dalam daftar saya untuk diselidiki.
ws_e_c421

2

Jadi setelah empat tahun, saya akhirnya memiliki konsep jawaban untuk pertanyaan ini. Jawabannya adalah dengan menggunakan Alat Intersepsi yang menggunakan libevdev untuk mengambil input keyboard dan melakukan pemrosesan sebelum mengirimkannya kembali. Mengenai pemetaan kunci simultan, saya telah membuat sebuah plugin kasar untuk Interception Alat disebut chorded keymap yang memungkinkan h, j, k, lbertindak seperti tombol panah saat sdan dditekan secara bersamaan.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.