Re: [Neo] [ticket] #141: Neue xkbmap-Version s etzt xkbmap außer Gefecht

2009-10-12 Diskussionsfäden Peter Eberhard
Grummel, der Trac mag mich grad nicht, also hier:

Ich habe das Problem identifiziert. Ganz schön mühsam, durch den
Dschungel des Xkb-Protokolls zu schleichen.

In compat/level5 steht:

{{{
interpret ISO_Level5_Shift+Any {
useModMapMods= level1;
virtualModifier= LevelFive;
action= SetMods(modifiers=LevelFive);
};
}}}

Das bedeutet, dass den Tasten, die ein ISO_Level5_Shift als Keysym haben
''und'' denen irgendein realer Modifier zugeordnet ist, der virtuelle
Modifier LevelFive zugeordnet wird. Dadurch wird also LevelFive mit
diesem realen Modifier verbunden. Wegen ''useModMapMods=level1'' geht
das aber ''nur'' bei den Tasten, bei denen ISO_Level5_Shift ''im ersten
Level der ersten Gruppe'' steht.

Die Strategie des Neo-Treibers ist nun folgende: LevelFive muss mit dem
realen Mod3 assoziiert werden (oder jedenfalls mit irgendeinem
''freien'' Mod). Das tritt genau dann ein, wenn es irgendeine Taste
gibt, die sowohl LevelFive als auch Mod3 zugeordnet bekommt. Dazu nimmt
Neo die „virtuelle“ Taste MDSW, die nicht auf der Tastatur vorkommt.
Sie wird Mod3 zugeordnet und bekommt die Keysym ISO_Level5_Shift
verpasst. Dadurch soll sie dann in compat/level5 LevelFive zugeordnet
werden, und damit wäre LevelFive=Mod3.

Nur, dass im vorliegenden Szenario (Neo nicht als erste Gruppe) MDSW
wegen der Einschränkung ''useModMapMods= level1'' niemals was mit
LevelFive zu tun bekommt. Deswegen wird LevelFive keinem realen Modifier
mehr zugeordnet und wird deswegen nie berücksichtigt. Die Ebenen 4 und
6-8 sind damit nicht verfügbar.
Weil die AltGr-Taste im ersten de(basic)-Layout noch Mod5 zugewiesen
kriegt, das mit LevelThree assoziiert ist, erzeugt der rechte Neo-Mod4
die Zeichen der dritten Ebene.

Man beachte, dass Modifier-Zuordnungen für alle Gruppen gleichzeitig
gelten.

Abhilfe:
Die einfache Variante ist, in symbols/level5 für MDSW zu schreiben:
{{{
  key MDSW { virtualmodifiers = LevelFive };
  modifier_map Mod3 { MDSW };
}}}
Virtuelle Modifier kann man nämlich notfalls auch direkt in
xkb_symbols-Abschnitten zuweisen, da muss man nicht zwingend die
compatibility bemühen. Einziger Nachteil ist, dass man dieses Verhalten
dann nicht mehr über die Xmodmap ändern kann.
Da muss man dann auch gar nicht die Keysym ISO_Level5_Shift zuweisen,
das ist überflüssig.

Hab's aber noch nicht ausprobiert, ich hoffe mal, das klappt.

Alternativ könnte man vielleicht Mod3 direkt auf die level5-Tasten
mappen, aber da gibt es sicherlich schon einen Grund, warum das lieber
gelassen wird (z.B., dass das dann auch für Qwertz-Zweitlayout gilt und
man Mod3 da vielleicht lieber anderweitig verwendet).

Gruß, Peter






Re: [Neo] [ticket] #141: Neue xkbmap-Version s etzt xkbmap außer Gefecht

2009-10-12 Diskussionsfäden Peter Eberhard
Hallo,

Am Montag, den 12.10.2009, 10:11 +0200 schrieb Peter Eberhard:
 Deswegen wird LevelFive keinem realen Modifier
 mehr zugeordnet und wird deswegen nie berücksichtigt. Die Ebenen 4 und
 6-8 sind damit nicht verfügbar.

Stimmt nicht ganz: Weil auf einer höheren Ebene von RALT noch
ISO_Level5_Lock steht, für das die Einschränkung useModMapMods=level1
nicht gilt (warum auch immer), und RALT außerdem Mod5 ist, werden Mod5
und LevelFive assoziiert, und das ergibt dann auch die dritte Ebene,
weil Mod5 eben auch schon mit LevelThree zusammenhängt. LSGT erzeugt
damit dann auch die dritte Ebene.

 Abhilfe:
 Die einfache Variante ist, in symbols/level5 für MDSW zu schreiben:
 {{{
   key MDSW { virtualmodifiers = LevelFive };
   modifier_map Mod3 { MDSW };
 }}}

Wäre ja auch zu schön gewesen, wenn das funktionieren würde. Tut es aber
nicht, keine Ahnung wieso. Anscheinend zählen solche Vereinbarungen in
der symbols-Datei nicht für die virtuell-zu-real-Modifier-Map. Müsste
ich erst nochmal ins Protokoll schauen, ob das konform ist. Solche
Dinger wurden bisher sowieso nicht gebraucht, deshalb könnte es auch ein
Bug sein.

Bleibt die Möglichkeit, die Tasten gleich selbst mit den Mods zu belegen. 
Gibt’s da Erfahrungen?

Gruß, Peter





Re: [Neo] [ticket] #141: Neue xkbmap-Version s etzt xkbmap außer Gefecht

2009-05-29 Diskussionsfäden Benjamin Kellermann
Hi!

Am Freitag, den 29.05.2009, 11:06 +0200 schrieb Stephan Hilb:
 Wird Neo als erstes Layout gewählt:
  - Tasten, die durch das zweite Layout nicht neu definiert werden,
behalten die Belegung bei, die durch Neo gegeben wurde.
[…]
 hier kann Neo eigentlich nichts dafür. Würden diese Tasten in dem
 zweiten Layout nämlich definiert werden, sollte alles bestens tun.

eigentlich sollten doch die anderen Tasten auch irgendwo definiert
werden, man muss sie nur „neu laden“, was bei dem Wechsel auf den
standard-X-grp-change nicht passiert. Also ist es imho ein Bug im X und
bei freedesktop.org sollte ein Report erstellt werden… (genauso für den
anderen Fehler)
Vielleicht sollten wir vorübergehend irgendwo beschreiben, wie man sich
gleiche Funktionalität mit 2 Skripten macht, die asdf und uiae aufrufen
und damit alles Sicherstellen…
Das aufgerufene Skript könnte ja auch das icon ändern unter dem das
Skript auch nochmal auf der Taskleiste liegt, damit man die visuelle
Anzeige bekommt…
Vielleicht mach ich so was mal irgendwann (klingt mir nach ner
entspannten Stunde programmieren ;---))

Ben