Come consentire agli accordi dei tasti della tastiera di modificare temporaneamente la mappa dei tasti?


9

Ho davvero abituato alla funzionalità "Modalità Vi simultanea" di KeyRemap4MacBook che consente di premere e tenere premuto il se dcontemporaneamente i tasti e quindi utilizzare il h, j, k, e ltasti come i tasti freccia. Quando se dvengono premuti insieme, non so devento viene generato, ma quando digito Normalmente non notare eventuali problemi di ritardo con colpire so dsingolarmente.

Come potrei ricreare questa funzionalità in Linux (in particolare RHEL 6.4)?

Un paio di idee che ho avuto:

  1. Se s+ dpotrebbe essere rimappato a un modificatore, i tasti h, j, k, l+ modificatore potrebbe essere mappato conseguenza. (La tastiera che sto usando ora non ha alcun tasto modificatore di riserva disponibile da usare invece di s+ d, inoltre il punto della Modalità Vi simultanea è di tenere tutte le dita sulla riga home. CapsLockÈ già rimappato su Controle Escape).

  2. Idealmente, troverei un modo per farlo usando le impostazioni di sistema o qualcosa di simile alla tastiera XKB che sto già utilizzando. Se ciò non fosse possibile, forse potrebbe essere scritto qualcosa di simile al programma xcape (che sto usando e che consente di mappare le chiavi a diversi simboli di tasti di pressione e modificatori di tasti). xcapesi innesca dal rilascio dei tasti, quindi dovrebbe essere ottimizzato per evitare che i tasti se dsiano troppo lenti.


Su RHEL 6.4? Stai usando VIM da X o tramite terminale?
Otheus,

Oh, e come mappate CapsLock su Control AND Escape ??
Otheus,

Mappare CapsLock su Control e quindi usare xcape (collegato sopra) per mappare le brevi pressioni del controllo su Escape. Nella domanda, mi riferisco a una modalità simile a Vi di KeyRemap4MacBook, per non vim stesso. Finora l'opzione più promettente che ho trovato per quello che sto cercando è quella di utilizzare il modulo Python Xlib in un modo simile a quello usato da Plover. Finora non ho avuto molto tempo per lavorare su questo.
ws_e_c421

Risposte:


2

Non puoi farlo con gli strumenti standard, dovresti scrivere qualcosa (probabilmente molto xserver sarà interessato, e se vuoi che funzioni al di fuori di X, ci saranno cambiamenti nel kernel).

La ragione di ciò è che le idee su cui si basa (e ottimizzato) il progetto non includono l'accordo di tasti regolari o l'emissione di caratteri dai modificatori.


Sto ancora esaminando questo (ho bisogno di più tempo). Ho trovato il progetto Plover che sembrava fornire un modello per una soluzione basata su X, ma voglio passare a Wayland, quindi ho smesso di esaminarlo. Di recente, ho scoperto caps2esc che utilizza libevdev e libudev per afferrare e rimappare dinamicamente i dispositivi. Penso che un approccio come questo potrebbe funzionare per gli accordi oltre a rimappare, ma deve essere studiato ulteriormente (preferirei anche una soluzione Libinput).
ws_e_c421,

Il mio commento su libinput è stato male informato. Pensavo che caps2esc funzionasse con il driver xf86-input-evdev che è un'alternativa a libinput, ma in realtà funziona a livello di libevdev che è una libreria di livello inferiore usata da entrambi i progetti. Gli strumenti per caps2esc sono stati rifattorizzati nel progetto degli strumenti di intercettazione . Credo che un plugin ben scritto per gli strumenti di intercettazione potrebbe fornire la funzionalità che ho descritto. È sulla mia lista per indagare.
ws_e_c421,

2

Quindi, dopo quattro anni, ho finalmente una bozza di risposta a questa domanda. La risposta è usare gli strumenti di intercettazione che usano libevdev per afferrare l'input da tastiera ed elaborarlo prima di riemetterlo. Per quanto riguarda la mappatura dei tasti simultaneamente, ho fatto un plugin di massima per l'intercettazione strumenti chiamati chorded Keymap che lascia h, j, k, lsi comportano come i tasti freccia quando se dvengono premuti contemporaneamente.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.