Re: [Neo] XKB und die Ebene 4
> Das Gleiche passiert bei mir, wenn xkbcomp den monolitischen Treiber von > Andreas kompiliert. Auch da werden die „interpret“-Anweisungen einfach > ausgelassen. Ich habe das jetzt auch mit einer OpenSolaris 2009.6/x86 LiveCD gesehen: ein .xkb-File wird mit xkbcomp auf den Server geladen, die Belegung wird weitgehend übernommen, aber die Änderungen in «xkb_compartibiliy» nicht. Allerdings betrifft das nicht nur «Redirect»-Actions und exotische keycodes, sondern zum Beispiel auch «SetMods» und «ISO_Level3_Shift». Andreas
Re: [Neo] XKB und die Ebene 4
> Dabei wird zwar z.B. 0x110AE04 zu U0010AE04 umgeschrieben, aber der > Funktion tut das keinen Abbruch. Dann mache ich irgendetwas falsch. Werde mich damit nochmal intensiver auseinandersetzen. Trotzdem Danke für deine Bemühungen, es unter Ubuntu zu testen! Gruß, Stephan signature.asc Description: PGP signature
Re: [Neo] XKB und die Ebene 4
> Das Gleiche passiert bei mir, wenn xkbcomp den monolitischen Treiber von > Andreas kompiliert. Auch da werden die „interpret“-Anweisungen einfach > ausgelassen. Ich habe den monolithischen Treiber jetzt auch mit Ubuntu 9.04/amd64 (live von der CD) erfolgreich ausprobiert (mit der kleinen Anpassung für evdev gemäß dem Kommentar am Anfang des Treibers). Insbesondere bleiben die interpret-Anweisungen erhalten wenn man die xkbmap auf den Server läd: xkbcomp neo_ch_de_us.xkb :0 und sich dann wieder vom Server holt: xkbcomp :0 - Dabei wird zwar z.B. 0x110AE04 zu U0010AE04 umgeschrieben, aber der Funktion tut das keinen Abbruch. Andreas
Re: [Neo] XKB und die Ebene 4
> Das Gleiche passiert bei mir, wenn xkbcomp den monolitischen Treiber von > Andreas kompiliert. Auch da werden die „interpret“-Anweisungen einfach > ausgelassen. Was machst du beim kompilieren? Mit xkbcomp von .xkb nach .xkm (und zum anschauen zurück) wandeln? Bei mir verschwinden dabei die interpret-Anweisungen nicht; weder auf einem aktuellen NetBSD/i386 (mit XOrg 1.6.2RC1) noch auf IRIX 6.5.22. Kann man den Auslöser des Problems eingrenzen? Funktionert ein anderer Unicode-Bereich, funktioniert es mit anderen actions? Andreas
Re: [Neo] XKB und die Ebene 4
Am Wed, 24 Jun 2009 13:16:07 +0200 schrieb Stephan Hilb: > Ich werde mich gleich an die Arbeit machen und es mit dem offiziellen > Treiber testen. Meine Versuche haben bisher leider noch keine Früchte getragen. Die „interpret“-Anweisung wird von xkbcomp einfach ausgelassen (beim Exportieren ins xkb-Format taucht die Anweisung nicht mehr auf). Das Gleiche passiert bei mir, wenn xkbcomp den monolitischen Treiber von Andreas kompiliert. Auch da werden die „interpret“-Anweisungen einfach ausgelassen. Die Folge ist natürlich, dass statt der Aktion das jeweilige Unicode-Zeichen (bzw. sein Platzhalter) ausgegeben wird. Gruß, Stephan signature.asc Description: PGP signature
Re: [Neo] XKB und die Ebene 4
> Würde es nicht auf das Selbe hinauslaufen, wenn statt 0x110AB04 der > Keysym „Return“ verwendet wird und auch dieser dann in xkb_compat > interpretiert wird? Da gibt es zwei Probleme: Zum einen bemerken manche Programme (die die Xt-Library verwenden, z.B. xdm) die keysym auf der 4. Ebene und behandeln die Taste insgesamt als Returntaste, und dann funktionieren die anderen Ebenen nicht mehr. Zum anderen sollte man lieber keine Endloschleife keysym Return → Taste → keysym Return → … provozieren; ich bin nicht sicher, dass XKB sie bemerkt und abbricht. > PS: Soweit Wikipedia Recht behält > ( http://de.wikipedia.org/wiki/Liste_der_Unicode-Bl%C3%B6cke ), belegt > Unicode nur 0x0 bis 0x10, wobei die Private Use Area von F bis > 10 reicht. Wäre 0x110AB04 dann nicht außerhalb der Range? Die keysym ist 0x100+Unicodewert. Man kann 0x110AB04 auch als U10AB04 schreiben (siehe http://www.x.org/wiki/KeySyms). Andreas
Re: [Neo] XKB und die Ebene 4
Hallo, > In xkb_compatibility gibt es Regeln der Form: > > interpret 0x110AB04 { > action= Redirect(key=, clearMods=Mod2+Mod4); > }; > > und dazu passend in xkb_symbols > > key { > type= "NEO_A", > symbols[Group1]= [ p, > P, asciitilde, 0x110AB04, > Greek_pi,Greek_PI, 0x110AB04 ], Würde es nicht auf das Selbe hinauslaufen, wenn statt 0x110AB04 der Keysym „Return“ verwendet wird und auch dieser dann in xkb_compat interpretiert wird? Wenn ich mich recht entsinne, überschreibt eine „interpret“-Anweisung die ursprüngliche Bedeutung des Keysyms. Ansonsten finde ich die Idee sehr gut. Ich werde mich gleich an die Arbeit machen und es mit dem offiziellen Treiber testen. Gruß, Stephan PS: Soweit Wikipedia Recht behält ( http://de.wikipedia.org/wiki/Liste_der_Unicode-Bl%C3%B6cke ), belegt Unicode nur 0x0 bis 0x10, wobei die Private Use Area von F bis 10 reicht. Wäre 0x110AB04 dann nicht außerhalb der Range? signature.asc Description: PGP signature
[Neo] XKB und die Ebene 4
Liebe XKB-Neotiker, wie euch wohlbekannt ist gibt es mit mit den Steuertasten (im geringerem Maße auch mit dem Zahlenblock) auf Ebene 4 mit diversen Programmen (z.B. xterm) Schwierigkeiten. Ich habe in meinem monolithischen XKB-Treiber¹ einen Weg ausprobiert, der viele Probleme umgeht: In xkb_compatibility gibt es Regeln der Form: interpret 0x110AB04 { action= Redirect(key=, clearMods=Mod2+Mod4); }; und dazu passend in xkb_symbols key { type= "NEO_A", symbols[Group1]= [ p, P, asciitilde, 0x110AB04,Greek_pi,Greek_PI, 0x110AB04 ], und so weiter. 0x110AB04 ist ein willkürlicher Wert aus einem privaten Unicode-Bereich. Anwendungen bekommen diesen Wert nie zu Gesicht. Wird Ebene 4 von p gedrückt wird das Event Server-seitig umgebogen, so dass es Anwendungen vorkommt, als wäre die echte Returntaste (ohne Mod4 und ohne Mod4-Lock) gedrückt worden. Analoge Änderungen habe ich für alle Steuerzeichen und KP_-codes auf Ebene 4 gemacht. Bis auf drei Fälle kann man immer auf eine reale Taste umleiten; die Ausnahmen sind die Symbole KP_Decimal, Tab und Undo. Für die drei habe ich Pseudo-Tasten eingeführt (also Tasten mit keycodes die vom Hardwareteiber nie generiert werden) die dann genauso wie die realen behandelt werden. Ich glaube, man könnte dieses Schema auch im offiziellen XKB-Treiber benutzen, natürlich mit einigen Anpassungen (Mod4 wird LevelFive, Mod2 wird NumLock, die Ebenen sind den Levels anders zugeordnet). Andreas ¹ http://wettstae.home.solnet.ch/neo_ch_de_us.xkb.gz