rimappa alt destra per comportarsi come ctrl destro


8

Sto cercando di rimappare il mio right altper comportarmi come il mio in right ctrlmodo da poter usare il pollice destro per premere il ctrlpulsante. Questo è Ubuntu 12.04.

Ho creato il file .Xmodmap nella mia cartella home con il seguente contenuto:

clear control
clear mod1
!keycode 64 = Alt_L Meta_L
keycode 108 = Alt_R Meta_R
add control = Control_L Control_R Alt_R
add mod1 = Alt_L Meta_L

Come puoi immaginare, la mia chiave alt sinistra ha il codice 64 e la mia left altchiave 108.

Questo in realtà funziona nel senso che il mio tasto alt destro si comporta come se premessi il ctrltasto.

Tuttavia, la mia altchiave sinistra ora non fa più nulla, il che significa che non ho più una altchiave. Questo è strano dato che xmodmapdà il seguente output:

xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69),  Alt_R (0x6c)
mod1        Alt_L (0x40),  Alt_L (0xcc),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3      
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

La cosa strana è che quando rimuovo il mapping Alt_R control, i alttasti funzionano.

(ad es., modifica la penultima riga in :)

add control = Control_L Control_R

Ora anche il mio alt destro si comporta come una altchiave che mi confonde. Dopo aver rimosso la mappatura Alt_R dalla linea di controllo, l'output di xmodmapdà:

xmodmap:  up to 4 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock        Caps_Lock (0x42)
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_L (0xcc),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3      
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)

Spero che voi ragazzi possiate aiutare.

ps. Ho usato questo sito Web come fonte.

Risposte:


6

Dovresti essere in grado di usare semplicemente Layout tastiera >> Opzioni >> Posizione tasto Ctrl >> Alt destra come Ctrl destra , ma questo non funziona. Questo è già stato presentato a Debian come Bug # 663218

1) Ricominciare eliminando ~ / .Xmodmap.

2) Notare che non è necessario cancellare Control e Mod1. Questo rende più semplice cambiare solo quello che vuoi. Il tuo ~ / .Xmodmap dovrebbe essere:

!Swap right control and right alt
remove Control = Control_R
remove Mod1 = Alt_R
keycode 105 = Alt_R
keycode 108 = Control_R
add Control = Control_R
add Mod1 = Alt_R

2

Se sei una delle persone sfortunate come me che non sono riuscite a ottenere xmodmap per cambiare a destra Alt con Ctrl destro, allora forse questo ti aiuterà.

Se premi Alt ee a destra e ottieni é allora questa soluzione è per te (ha bisogno di miglioramenti).

Esegui questo nel terminale (controlla i tuoi codici chiave con xev):

xmodmap -e "keycode 108 = Alt_R Meta_R Alt_R Meta_R"

quindi inserisci questo codice nella tua .Xmodmap:

remove Control = Control_R
remove Mod1 = Alt_R
keycode 105 = Alt_R
keycode 108 = Control_R
add Control = Control_R
add Mod1 = Alt_R

Questo codice imposta il tasto Alt_Gr su Alt_R, quindi scambia Alt_r con Ctrl_R.

Se si desidera che questo rimanga dopo il logout, inserire i seguenti comandi in uno qualsiasi dei file della shell di avvio, ad esempio ~ / .profile:

if [ -f $HOME/.Xmodmap ]; then
  xmodmap -e "keycode 108 = Alt_R Meta_R Alt_R Meta_R"
  /usr/bin/xmodmap $HOME/.Xmodmap
fi

fonti: domanda1 domanda2


1

Su Ubuntu 19.04, per rendere la mappatura a livello di sistema, è necessario modificare due file:

  • / Usr / share / X11 / xkb / simboli / altwin
  • / Usr / share / X11 / xkb / simboli / pc

Aggiungi la seguente sezione alla precedente:

// Ctrl is mapped to the Alt.
partial modifier_keys
xkb_symbols "right_alt" {
    key <LALT> { [ Alt_L, Meta_L ] };
    key <RALT> { type[Group1] = "TWO_LEVEL",
                 symbols[Group1] = [ Control_R, Control_R ] };
    modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R };
    modifier_map Control { <LCTL>, <RALT> };
};

E sostituire include "altwin(meta_alt)"al include "altwin(right_alt)"in quest'ultimo.


Questo risponde alla domanda e funziona. Ma la risposta accettata scambia l'alt destra e il destro ctrl. Questo non è stato originariamente chiesto, ma penso che sia una soluzione che molti stanno cercando (avere due controlli a destra non è così utile). Ti dispiacerebbe aggiungere come mappare il controllo giusto all'alt destra?
Tedward
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.