> Ich habe Schwierigkeiten mit Neo (Xmodmap auf Linux) und Stumpwm (tiling > window manager für X) -- wie sie schon Mitte 2010 von Eric Wolf > berichtet wurden.
"Schwierigkeiten" ist für eine Problembeschreibung etwas vage... Leider kann ich kaum Lisp, aber diese Funktion in input.list scheint mir verdächtig: (defun keycode->character (code mods) (let ((idx (if (member :shift mods) 1 0))) (xlib:keysym->character *display* (xlib:keycode->keysym *display* code idx) 0))) Sieht so aus, als ob alle Modifier ausser Shift weggeworfen würden. Die Minimalvariante für xkbmap mit 3 Ebenen stelle ich mir so vor: (let ((idx (if (member :shift mods) 1 (if (member :mod5 mods) 2 0)))) Allgemeiner müsste man die Menge in mods in einen state überführen, mit dem xlib:keysym->character etwas anfangen kann. Die Funktion is-modifier ist schon vom Interface her fehlerhaft: Unter Xlib bestimmt die keysym, was ein Modifier ist und was nicht, hier wird aber mit dem keycode gearbeitet. Bei dem Zeugs, was sich mit Modifiern zu befassen scheint sehe ich nirgends etwas, was Gruppenumschaltung betrifft. Das wäre für xmodmap fatal, denn Ebene 3 ist mit Gruppenumschaltung gemacht (keysym Mode_switch). Aber um wirklich nachzuverfolgen, was hier als Modifier und als Konsequenz daraus wie behandelt wird sind meine Lisp-Kenntnisse zu schwach. Da du vermutlich Lisp besser verstehst als ich solltest du dir input.lisp genauer anschauen. Ich vermute hier starken Verbesserungsbedarf. keysyms.lisp sollte man auch mal wieder nachführen. Andreas