Come posso mappare il tasto Maiusc sinistro e destro singolarmente?


10

Prima di tutto, scusa la mia ignoranza di X e XKB; Ho cercato di mettere insieme una soluzione nella speranza di riuscire a ottenere ciò che voglio senza averne bisogno.

Sto cercando di creare una mappa della tastiera XKB su Ubuntu 12.04 che mi consenta di stabilire quale dei due tasti shift costituisce il modificatore Level2. In particolare, la 4chiave dovrebbe produrre un solo $quando si tiene il turno destro, non a sinistra.

La mia lettura finora:

Ho tentato di definire un tipo personalizzato e quindi di fare riferimento ad esso in modo esplicito in una mappa di simboli:

/usr/share/X11/xkb/types/mbfisher:

default xkb_types "mbfisher" {
  type "RIGHT_SHIFT" {
    modifiers = None+Shift_R;
    map[None] = Level1;
    map[Shift_R] = Level2;
  };
}

/usr/share/X11/xkb/symbols/mbfisher:

default
partial alphanumeric_keys
xkb_symbols "basic" {

  name[Group1]= "mbfisher";

  key <AE04> {
    type= "RIGHT_SHIFT",
    symbols[Group1]= [ 4,  dollar ]
  };

};

Sto quindi selezionando la mappa con la GUI di Ubuntu Keyboard Layout.

Ciò ovviamente disabilita la tastiera alfanumerica a parte il 4tasto, ma il simbolo del dollaro può ancora essere digitato con entrambi i tasti Maiusc.

Sono consapevole di scrivere una domanda enorme con molte informazioni inutili, quindi mi fermo qui; per favore, chiedete qualsiasi cosa mi sia sfuggita.

Qualche idea?

Risposte:


2

Non so se è la soluzione che desideri, ma una possibilità per disabilitare il tasto Maiusc sinistro sarebbe usare xmodmap. Crea un file ~/.Xmodmapcon i contenuti

clear shift
add shift = Shift_R

e corri xmodmap ~/.Xmodmap.


Vedi commenti / chat:

Potresti riscontrare problemi se ci sono altre modifiche apportate alla tua xkbmap da qualche altro programma, quindi setxkbmap uspuò essere necessario ripristinare una xkbmap predefinita con qualcosa di simile .

Se vuoi fare in modo che alcuni tasti rispondano a un solo tasto Maiusc, puoi ottenere il layout di tastiera corrente con xmodmap -pke > .Xmodmapquesto ti dà un .Xmodmapcon un elenco di tutti i tuoi tasti sotto forma di keycode XX = functions. In questo compito ogni codice chiave può avere diverse funzioni sul lato destro. Ciascuno corrisponde a un diverso modificatore + quella chiave. Puoi quindi inserire il clear + aggiungi dall'alto e aggiungere qualcosa di simile add mod5 = Shift_L. Il tasto shift destro corrisponderebbe a mod2 mentre quello sinistro sarebbe mod5. Puoi semplicemente andare avanti e spostare le funzioni mod2 dei tasti che vuoi chiamare con il tasto shift sinistro su mod5 semplicemente inserendo NoSymbole spazi fino a raggiungere la colonna di destra ( keycode 57 = n N-> keycode 57 = n NoSymbol NoSymbol NoSymbol N).


Felice di aiutare. Ha funzionato?
Trudbert,

Siamo spiacenti, giornata impegnativa. Ho ancora entrambi i tasti Maiusc disponibili dopo aver eseguito xmodmap, dovrei fare qualcos'altro per ottenere la modifica?
mbfisher,

Prova xmodmap -e "clear shift" dopo che non dovresti avere alcun tasto shift disponibile se funziona il resto dovrebbe funzionare anche
Trudbert

No, ho ancora i tasti MAIUSC. # xmodmap -verbose -e "clear shift" ! 1: clear shift clear shift ! ! executing work queue ! clear shift
mbfisher,

strano. Nessun messaggio di errore? clear dovrebbe rimuovere tutto ciò che è associato al modificatore, quindi non dovrebbe essere rimasto nulla. Metto le mani sul sistema linux tra circa un'ora e analizzerò di nuovo questo.
Trudbert,

2

Ecco cosa ha funzionato finalmente! Ho usato xmodmapun ~/.Xmodmapfile piuttosto che una configurazione xkb.

~/.Xmodmap:

clear Shift

! Key Shift+Key mode_switch+Key mode_switch+Shift+Key AltGr+Key AltGr+Shift+Key
! Key Shift_L+Key Shift_R+Key Shift_R+Shift_L+Key AltGr+Key AltGr+Shift_L+Key

keycode 10 = 1 1 exclam 1
keycode 11 = 2 2 at 2
keycode 12 = 3 3 numbersign 3
keycode 13 = 4 4 dollar 4
keycode 14 = 5 5 percent 5

keysym Shift_R = Mode_switch
add Shift = Shift_L

Le 2 righe commentate (fissando con !) mostrano le intestazioni di colonna prima e dopo le mie modifiche. Questo mi ha permesso di specificare col 2 come Shift_L e col 3 come Shift_R, poiché ho mappato shift_R come Mode_switch.

Le modifiche vengono eseguite eseguendo:

 # setxkbmap us
 # xmodmap ~/.Xmodmap

setxkbmap usimposta la mappa US predefinita in modo che tu stia lavorando da una lavagna pulita e xmodmapaccoda le modifiche personalizzate ad essa.

Quando viene implementato il !, @, #, $e %caratteri possono essere digitati solo con la chiave spostamento a destra, e ^, &, *, (e )possono essere digitati solo con il tasto shift sinistro.

Ora posso continuare mappando tutti i tasti sul lato sinistro della tastiera per essere modificati solo dal tasto shift destro (cioè i caratteri alfabetici e le loro modifiche maiuscole) e viceversa; questa soluzione significa che ho solo bisogno di rimappare il lato sinistro.

Altri link utili trovati lungo il percorso:

Grazie mille a @Trudbert per avermi indirizzato alla risposta!

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.