Come personalizzare i mapping della tastiera con Wayland


20

Uso Linux su un Macbook con una tastiera UK / GB e personalizzo la mappa dei tasti per risolvere alcuni problemi causati dalla strana tastiera Apple. Lo xmodmapfaccio per fare questo. Mi piacerebbe provare Wayland, ma xmodmapnon ci funziona. Come posso ottenere un risultato simile in Wayland? Il .Xmodmapfile che uso contiene quanto segue:

keycode  12 = 3 numbersign 3 sterling sterling sterling threesuperior sterling
clear Control
clear Mod4
add Control = Control_L Super_R
add Mod4 = Super_L
keysym Caps_Lock = NoSymbol Caps_Lock

Riga 1: sulle tastiere del Regno Unito Shift- 3è £, quindi # di solito ha una sua chiave vicino Return. Ma sul Mac # si ottiene con Altgr- 3. Come programmatore uso # molto più di £, quindi questa riga li scambia. Anche la selezione del layout degli Stati Uniti consente di ottenere questo risultato, ma farlo in Linux scambia anche alcune altre chiavi di uso comune, mentre in OS X quelle altre chiavi non sono interessate dagli Stati Uniti / Regno Unito.

Righe 2-5: fai in modo che il Cmdtasto destro si comporti come Destro Ctrl, perché questa tastiera non ha un Ctrltasto destro fisico .

Linea 6: CapsLockfunziona solo se lo si preme con Shift. Non specifico per Mac, questa dovrebbe essere un'opzione standard per tutti i sistemi operativi e le tastiere.


Sono a metà strada: a quanto pare Wayland usa xkb e xmodmap è comunque deprecato in X. Sfortunatamente xkb è notevolmente più complicato e GNOME non ha mai considerato che gli utenti potrebbero aver bisogno di personalizzarlo, quindi ho sollevato una seconda domanda .
realh,

Risposte:


11

Sfortunatamente modificare il database XKB di sistema /usr/share/X11/xkbè l'unico modo; dall'altra tua domanda sembra che tu abbia fatto funzionare quella parte.

La limitazione è dovuta principalmente all'immaturità di Wayland e alla supervisione del design in XKB.

  • Strumenti come setxkbmape xkbcompforniscono -Iun'opzione per aggiungere un database definito dall'utente per la ricerca (ad esempio ~/.xkbo ~/.config/xkb, con file e sottodirectory disposti come il database di sistema). Questi strumenti interagiscono con il server X, quindi potrebbero essere utili per configurare il Xwaylandlivello di compatibilità per l'esecuzione di applicazioni X in Wayland. Ma al momento non parlano i protocolli Wayland.

  • I protocolli Wayland stanno ancora maturando. Attualmente sembra che i protocolli input-methode text-inputsiano i più rilevanti ed entrambi sono instabili. Né menzionare nulla sull'alterazione di una keymap definita; questi dettagli sono lasciati al compositore.

  • GNOME e KDE forniscono entrambi daemon di impostazioni di gestione della tastiera che dovrebbero gestire le opzioni XKB del sistema, inclusa la modifica al volo. Per quanto ne so, non c'è modo di parlare delle personalizzazioni degli utenti. Per quanto ne so, Weston e altri compositori si affidano ai file di configurazione o alle variabili di ambiente per impostare le opzioni XKB all'avvio e non offrono alcun modo per cambiarle se non uscire e riavviare.

  • Anche nello stesso XKB, questo non è completamente supportato. Il tuo file di simboli personalizzati può contenere includealtri file di simboli di sistema. Ma al momento non ci sono includefunzionalità per i file delle regole XKB, quindi anche se avessi uno strumento che parlasse con il compositore di Wayland e cercasse le tue personalizzazioni personali, dovresti includere manualmente tutte le regole che vuoi usare (es. Copia rules/evdev*dal sistema XKB e modificarlo). libxkbcommonpresenta un problema aperto su questo argomento e un bug correlato .


1
Avrei dovuto chiarire che ora ho praticamente risolto questo problema. L'ho detto nell'altra domanda, ma l'informazione è un po 'sconnessa. Ho intenzione di documentarlo più chiaramente quando arrivo all'aggiunta di un blog al mio sito Web, quindi dovrò ricordare di collegarlo qui.
realh,

certo, ma era ancora una domanda senza risposta, quindi ho cercato di affrontare l'equivalente .Xmodmapdell'aspetto Wayland .
donchisciottesco

3
Ora l'ho documentato in dettaglio in un post sul blog .
realh,

5

Ho usato Interception Tools per Linux con successo per questo, e conosco persone che producono altri plugin anche per i loro mapping personalizzati . caps2esc è un primo plug-in di prova che uso quotidianamente e funziona sia su X che Wayland. Lo strumento è un po 'più basso del solito software di mappatura, ma abbastanza flessibile, e il mio piano per un prossimo plugin è uno strumento di mappatura di accordi generalizzato.

Disclaimer: sono l'autore.


Gli strumenti di intercettazione sembrano davvero interessanti! Grazie per il tuo lavoro!
balu

1
Non sono sicuro di come mi sento di eseguire tutti i miei input da tastiera tramite uno script Python
Ace.C

4

Per quelli che verranno qui nel 2018 (Ubuntu 17.10), la parte più critica di questo può essere realizzata usando lo strumento GNOME Tweak.

Gnome Tweak Tool> Tastiera e mouse> Opzioni di layout aggiuntive> Ctrl è mappato sui tasti Win (e sui soliti tasti Ctrl).


2
L'uso di "Gnome Tweak Tool" (qualunque cosa sia) imposta anche i nuovi mapping per altri gestori di Windows / ambienti / shell grafiche?
Mali Remorker,

Lo strumento Gnome Tweak non può rimappare Caps Lock.
Andyn,

@andyn my gnome-tweaks-3.34.0-1.fc31.noarchpuò rimappare Blocco maiuscole - ad es. 'Blocco maiuscole è anche un Ctrl', 'Rendi maiuscole una Esc aggiuntiva', 'Blocco maiuscole come Ctrl' e molti altri.
maxschlepzig,

2

Questa risposta ha la stessa idea della risposta di Quickotic ma solo con un esempio più dettagliato:

Gnome Tweaks ha un elenco di 20 o 30 modifiche alla tastiera che puoi fare tramite xkb. A volte puoi trovare il tweak che stai cercando di default. Nel mio caso, volevo scambiare il tasto dello schermo di stampa con Menu.

L'unica opzione per modificare la chiave di stampa disponibile tramite xkb era sostituirla con Win_R. Gunnar Hjalmarsson su questo thread mi ha suggerito di modificare le modifiche di xkb in modo che invece printcr / win_r facesse invece printcr / menu. Abbiamo elaborato una soluzione insieme e la ritrasmetterò qui:

Nel terminale, inserisci:

sudo su
nano /usr/share/X11/xkb/symbols/altwin

Nella parte inferiore del file troverai:

// Win is mapped to the PrtSc key (and the usual Win key).
partial modifier_keys
xkb_symbols "prtsc_rwin" {
    replace key <PRSC> { [ Super_R, Super_R ] };
    modifier_map Mod4 { <PRSC>, <RWIN> };
};

Elimina questa sezione e sostituiscila con questa:

// Menu is mapped to the PrtSc key (and the usual Win key).
xkb_symbols "prtsc_rwin" {
     replace key <PRSC> { [ Menu, Menu ] };
     modifier_map Mod4 { <PRSC>, <MENU> };
};

Per eliminare in nano, utilizzare il tasto Backspace (l'evidenziazione e l'eliminazione non funzionano). Per incollare, usa maiusc-ctrl-v. Per uscire e salvare, premere ctrl-x, selezionare Sì per sovrascrivere e premere Invio.

Reboot. In Gnome / Ubuntu Vai a gnome-tweak-tools In strumenti di tweak vai alla sezione Tastiera e mouse, premi il pulsante Opzioni di layout aggiuntive ed espandi il comportamento dei tasti Alt / Win. Selezionando l'opzione in fondo: Win è mappato su printcr (ricorda che abbiamo modificato proprio questo comportamento per scambiare stampa e Menu invece di stampare e vincere). (Sono sicuro che esiste un modo per attivare l'opzione xkb modificata in KDE ma non la uso, quindi non posso darti la procedura esatta).

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.