Am 01.04.2011 03:32, schrieb Peter Eberhard:
Was dich so verwirrt, ist die (mMn schlecht gewählte) Bezeichnung der
Neo-Shift-Tasten Mod3 und Mod4. Die sind nämlich etwas völlig anderes
als die Mod1-5 des X window systems. Neo-Mod4 ist, in die Sprache der
Neo-Xkbmap übersetzt, tatsächlich ISO_Level5_Shift, und das wird vom
Neo-xkb-Treiber auf X-Mod3 gelegt (weil Mod4 schon für die Super-Tasten
vorgesehen ist).

Das ganze ist aber noch weit komplizierter:

Heilige Scheisse! ;)

Xmodmap ist im Prinzip veraltet. Es wurde schon mit X11R6.1 (1996) durch
die X Keyboard Extension (xkb) ersetzt, die sehr viel flexibler ist.
Ja, OK, aber da scheint es kein Werkzeug wie xmodmap zu geben, was die Änderung einzelner Tastenbelegungen erlaubt. Sieht alles seeehr „overengineered“ aus…
Habs mir grad noch genauer angeschaut. Grausig.

Xkb stellt aus Kompatibilitätsgründen, aber auch der Praxis wegen (wenn
man einzelne Tasten ummappen möchte, so wie du) auch noch die Xmodmap
zur Verfügung.

Ok, also doch xmodmap. ;)

Im von dir angeführten Beispiel:
keycode 40 = a A d D braceleft Greek_alpha Down Down U2200 NoSymbol eth ETH

a und A sind Neo (Gruppe 1, Levels 1 und 2)
d und D sind Qwertz (Gruppe 2, Levels 1 und 2)
Greek_alpha bis NoSymbol [leer] sind Neo, Levels 3-8 (Gruppe 1)
eth und ETH sind Qwertz (Gruppe 2), so wie es von Linux um zusätzliche
Zeichen erweitert wird (ð auf AltGr+d).

Ja OK, nur wird ein Script das die hartcodet natürlich nicht viel Sinn machen, da es nur bei mir und nur bei dem exakten Setup funktioniert. :)

Die komplette aktuelle xkbmap kannst du dir genauer anschauen, indem du
xkbcomp :0 neo.xkb

Ja, das war es, was ich sah, als ich vorhin „Grausig“ sagte. ;)

Eine einfache Zuordnung 0xa0 → Spalte 9 (die bei dir bei Taste 40
zutrifft) ist also nicht möglich.

Ich würd mir da mal nicht so sicher sein, weil… ;)

2) Wenn du bei der Neo-xkbmap bleiben willst, kannst du einfach
annehmen, Neo wäre die erste Gruppe, und die entsprechende
Spalten-Zuordnung vornehmen (Ebene 1+2 = Spalte 1+2, Ebene 3-6 = Spalten
5,7,6,9). Dann solltest du aber darauf hinweisen.

Das kann man ja schön in eine halbautomatisch generierte Konfigurationsdatei auslagern. Dann läufts auch überall, bis der Nutzer das Setup ändert. :)


3) Du könntest nicht die xmodmap, sondern die xkbmap ändern, die du wie
oben per xkbcomp erzeugst. […] Leider funktioniert das oft nicht, xkbcomp ist 
ziemlich
verbugt. Bei mir jedenfalls. […] Bei mir stürzt bei sowas gerne mal der 
X-Server ab – aber auch
nicht immer und nicht nachvollziehbar, ich bin noch nicht
dahintergekommen, warum.

Also ich hab hier grad das Update von XOrg 1.9.5 auf 1.10.0.901 vor, da der nVidia-Treiber das endlich unterstützt. Ich hab keine Lust auf Stabilitätsprobleme. Bin froh dass die zusammen mit der ATi-Karte jetzt nicht mehr in meinem System existieren. ^^

4) Du könntest die xkb-Dateien in /usr/share/X11/xkb/ ändern. Brauchst
dazu aber Administratorrechte, und für einfache Umbelegungen sollte man
auch nicht mit diesen Dateien rumspielen.

Genau. Dafür, denke ich mir jetzt, muss es doch sowas wie eine „$HOME/.xkb“ geben.

5) Du könntest ein echtes C-Programm
Iiiih, nee, Haskell oder garnicht. ;)
 schreiben, das auf Xkb-Routinen
zurückgreift, um die Zuordnung Modifier → Spalte zu finden. Die
Einzelheiten findest du in www.x.org/docs/XKB/XKBproto.pdf, übrigens
Pflichtlektüre, wenn du xkb wirklich tief verstehen willst.
Nee, will ich wirklich ganz wirklich auf garkeinen Fall. ^^
Ich will mich damit nur so wenig wie irgend möglich befassen, da ich nebenher noch die ganze Unreal-Engine, halb Haskell, Tonnen an APIs (und wenn ich Bock hab noch Quantenphysik ;)) lernen muss. Und dabei ist die *eigentliche* Arbeit garnicht mitgerechnet.

Ich schätze so wie das Script jetzt ist, reicht es dann erstmal. Es tut was es soll, und die paar Ausnahmen kann ich dann auch manuell machen, falls sie auftreten. (Bugs gibts jetzt eigentlich nur, wenn ein Zeichen auf der gleichen Taste doppelt belegt ist, oder die Taste vorher garnicht belegt war. Was ja bei NEO eher nicht vorkommt. :)

So sieht es aus. Meiner bescheidenen Meinung nach.

Und meiner Meinung hätte eine Consulting-Firma xkb nicht besser zu einem Kandidaten für thedailywtf.com machen können. Ganz Virtudyne und Paula Brillant verneigen sich. ;))

Trotzdem erstmal vielen vielen dank für die Hilfe, Peter. :)

Geniess die Sonne!

Navid


Antwort per Email an