Wie kann ich die linke und rechte Umschalttaste einzeln zuordnen?

10

Entschuldigen Sie zunächst meine Unkenntnis von X und XKB. Ich habe versucht, eine Lösung zusammen zu hacken, in der Hoffnung, das zu erreichen, was ich will, ohne ein detailliertes Verständnis dafür zu benötigen.

Ich versuche, unter Ubuntu 12.04 eine XKB-Tastaturzuordnung zu erstellen, mit der ich festlegen kann, welche der beiden Umschalttasten den Level2-Modifikator darstellt. Insbesondere sollte die 4Taste nur dann ein a erzeugen, $wenn die Rechtsverschiebung gehalten wird, nicht die linke.

Meine bisherige Lektüre:

Ich habe versucht, einen benutzerdefinierten Typ zu definieren und ihn dann in einer Symbolzuordnung explizit zu referenzieren:

/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 ]
  };

};

Ich wähle dann die Karte mit der Ubuntu Keyboard Layout GUI aus.

Dadurch wird natürlich die alphanumerische Tastatur außer der 4Taste deaktiviert , aber das Dollarzeichen kann weiterhin mit beiden Umschalttasten eingegeben werden.

Ich bin mir bewusst, dass ich eine massive Frage mit vielen nutzlosen Informationen schreibe, also höre ich hier auf. Bitte fragen Sie nach etwas, was ich verpasst habe.

Irgendwelche Ideen?

mbfisher
quelle

Antworten:

2

Ich weiß nicht, ob es die gewünschte Lösung ist, aber eine Möglichkeit, die linke Umschalttaste zu deaktivieren, wäre die Verwendung von xmodmap. Erstellen Sie eine Datei ~/.Xmodmapmit Inhalten

clear shift
add shift = Shift_R

und rennen xmodmap ~/.Xmodmap.


Siehe Kommentare / Chat:

Es kann zu Problemen kommen, wenn andere Änderungen an Ihrer xkbmap durch ein anderes Programm vorgenommen wurden. Daher setxkbmap uskann ein Zurücksetzen auf eine Standard-xkbmap mit so etwas wie erforderlich sein.

Wenn Sie möchten, dass einige Tasten nur auf eine Umschalttaste reagieren, können Sie Ihr aktuelles Tastaturlayout abrufen. Auf xmodmap -pke > .Xmodmapdiese Weise erhalten Sie .Xmodmapeine Liste aller Tasten in Form von keycode XX = functions. Bei dieser Zuordnung kann jeder Schlüsselcode auf der rechten Seite mehrere Funktionen haben. Jeder entspricht einem anderen Modifikator + dieser Taste. Sie können dann das Clear + Add von oben einfügen und so etwas hinzufügen add mod5 = Shift_L. Die rechte Umschalttaste würde dann mod2 entsprechen, während die linke mod5 wäre. Sie können dann fortfahren und die mod2-Funktionen der Tasten, die Sie mit der linken Umschalttaste aufrufen möchten, auf mod5 verschieben, indem Sie einfach NoSymbolLeerzeichen und Leerzeichen einfügen , bis Sie die rechte Spalte ( keycode 57 = n N-> keycode 57 = n NoSymbol NoSymbol NoSymbol N) erreichen.

Trudbert
quelle
Froh, dass ich Helfen kann. Hat es funktioniert?
Trudbert
Entschuldigung, anstrengender Tag. Ich habe nach dem Ausführen von xmodmap immer noch beide Umschalttasten zur Verfügung. Sollte ich noch etwas tun müssen, um die Änderung zu erhalten?
mbfisher
Versuchen Sie xmodmap -e "Clear Shift" danach sollten Sie keine Umschalttasten zur Verfügung haben, wenn das funktioniert, der Rest sollte auch funktionieren
Trudbert
Nein, ich habe immer noch Umschalttasten. # xmodmap -verbose -e "clear shift" ! 1: clear shift clear shift ! ! executing work queue ! clear shift
mbfisher
seltsam. Keine Fehlermeldung? clear sollte alles entfernen, was mit dem Modifikator verbunden ist, damit nichts mehr übrig bleibt. Ich werde in ungefähr einer Stunde das Linux-System in die Hände bekommen und es mir noch einmal ansehen.
Trudbert
2

Hier ist, was endlich funktioniert hat! Ich habe xmodmapeine ~/.XmodmapDatei anstelle einer xkb-Konfiguration verwendet.

~/.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

Die 2 kommentierten Zeilen (mit starren !) zeigen die Spaltenüberschriften vor und nach meinen Änderungen. Dadurch konnte ich Spalte 2 als Shift_L und Spalte 3 als Shift_R angeben, da ich shift_R als Mode_switch zugeordnet habe.

Die Änderungen werden durch Ausführen von:

 # setxkbmap us
 # xmodmap ~/.Xmodmap

setxkbmap usxmodmapLegt die Standard-US-Karte so fest, dass Sie von einer sauberen Tafel aus arbeiten, und hängt die benutzerdefinierten Änderungen daran an.

Wenn das umgesetzt !, @, #, $und %Zeichen können nur mit der rechten Shift - Taste eingegeben werden, und ^, &, *, (und )können nur mit der linken Shift - Taste eingegeben werden.

Ich kann jetzt fortfahren, indem ich alle Tasten auf der linken Seite der Tastatur zuordne, die nur durch die rechte Umschalttaste (dh die aplhabetischen Zeichen und ihre Änderungen in Großbuchstaben) geändert werden sollen, und umgekehrt. Diese Lösung bedeutet, dass ich nur die linke Seite neu zuordnen muss.

Weitere nützliche Links auf dem Weg:

Vielen Dank an @Trudbert, dass ich den größten Teil der Antwort erhalten habe!

mbfisher
quelle