Tastencodes unter Linux definieren

OP #8019022
Lesenswert?

Früher konnte man mit XCompose recht einfach unter Linux Tastenkombinationen für beliebige Zeichen definieren.

Nun wurde etwas "viel besseres" gebaut und in Linux eingebaut: XKB.

Leider ist diese eierlegende Wollmilchsau dermaßen kompliziert, dass es nix mehr ist, mit eben mal ein Zeichen auf eine Tastenkombination legen.

Ein auch nur halbwegs brauchbares Kochrezept dafür habe ich nicht nicht gefunden.

Hat jemand einen Tipp?

Moderator Persönliche Seite #8019026
Lesenswert?

Moriz schrieb:

Ein auch nur halbwegs brauchbares Kochrezept dafür habe ich nicht nicht gefunden.

1
xkbcomp :0 state.xkb
2
vi state.xkb # Das ändern, was du ändern willst
3
xkbcomp state.xkb :0

… wäre zumindest ein möglicher Weg.

xkb wurde aber nicht "in Linux eingebaut", sondern ist halt Bestandteil von X.org, und das nun auch schon viele Jahre. Als Autor wird in der man page "Erik Fortune, Silicon Graphics" genannt – SGI hat bis zum Jahr 2009 existiert.

: Bearbeitet durch Moderator
OP #8019038
Lesenswert?

Jörg W. schrieb:

Man kann auch einfach ewig nörgeln. Die Welt wird sich weiter drehen.

Besseren Rat hast Du nicht? Für solchen Scheiß einen Tag Quellenstudium investieren? Warum nicht gleich LibreOffice oder dergleichen über ein Schalterfeld oktal in den Speicher klimpern, bevor man seinen Einkaufszettel tippen kann?

Gibt es irgendwo ein Kochrezept, wie man ein UnicodeZeichen auf eine Taste mappt?

: Bearbeitet durch User
#8019040
Lesenswert?

Moriz schrieb:

Man muss schon ganz schön weltfremd sein,

wenn man von einem Forum erwartet, das schneller und besser beantwortet zu bekommen.

Extratipp: wenn dir die KI zu ausschweifend war, dann sag ihr, dass du eine knappe Antwort willst.

Ich wäre jedenfalls mit Gemini schon fertig, obwohl ich vom Thema deutlich weniger Ahnung als du habe.

: Bearbeitet durch User
#8019087
Lesenswert?

Die klassische Compose-Taste kann ich bei Debian auf die Menu-Taste legen. Mein /etc/default/keyboard:

1
# KEYBOARD CONFIGURATION FILE
2
# Consult the keyboard(5) manual page.
3

4
XKBMODEL="pc105"
5
XKBLAYOUT="eagle"
6
XKBVARIANT=""
7
XKBOPTIONS="compose:menu,terminate:ctrl_alt_bksp"
8
BACKSPACE="guess"

XKBMODEL und XKBLAYOUT sollte man erstmal nicht ändern, pc105 und eagle sind meine spezielle Einstellung. Dank terminate... kann ich den xserver auch wieder wie früher abschießen.

Vielleicht reicht dir das schon, immerhin gibt's damit « ø œ £ đ ¿¡ »

Noch spezieller ist mein XKBLAYOUT namens "eagle". Das ist genauso kryptisch wie "xkbcomp :0 state.xkb", aber viel kürzer ;) Und man sieht zum Beispiel ein paar Unicode-Zeichen und Zeichen wie infinity. Diese Datei gehört nach /usr/share/X11/xkb/symbols/ und wird in /etc/default/keyboard mit XKBLAYOUT aktiviert.

Das Layout ist für eine normale Tastatur mit US-Layout gedacht und macht aus den beiden Windows-Tasten ALT-Tasten für Umlaute und ¼€°¹²³. Häufig gebrauchte Zeichen wie [{/}] gibt's damit direkt und ä...ß gibt's mit WIN-a ... WIN-s und WIN-SHIFT-a macht auch was sinnvolles. Weil es eine linke und eine rechte Taste gibt, kann ich deutsche Texte fast wie auf einer deutschen Tastatur schreiben.

Das Layout heißt eagle, weil Cadsoft Eagle einen eigenen Font mitbringt und ich mal ein ∞ im Schaltplan haben wollte.

Angehängte Dateien:
Moderator Persönliche Seite #8019098
Lesenswert?

So ähnlich arbeite ich auch, nur mit 'ner deutschen Tastatur: äöü liefert [ \ ] bzw. mit Shift { | }, zusammen mit AltGr dann wirklich die Umlaute. Damit kann man prima programmieren, andererseits auch problemlos deutsche Texte schreiben.

So schlimm unverständlich, wie Moriz hier tut, ist xkb nun wirklich nicht, solange man nur existierende Vorlagen modifizieren muss. Eine neue von Null auf möchte ich aber auch nicht schreiben müssen. :-)

: Bearbeitet durch Moderator
Beitrag #8019535 wurde von einem Moderator gelöscht.
Beitrag #8019541 wurde von einem Moderator gelöscht.
Beitrag #8019551 wurde von einem Moderator gelöscht.
Beitrag #8019553 wurde von einem Moderator gelöscht.
#8019570
Lesenswert?

Moriz schrieb:

Früher konnte man mit XCompose recht einfach unter Linux Tastenkombinationen für beliebige Zeichen definieren.

Nun wurde etwas "viel besseres" gebaut und in Linux eingebaut: XKB.

Leider ist diese eierlegende Wollmilchsau dermaßen kompliziert, dass es nix mehr ist, mit eben mal ein Zeichen auf eine Tastenkombination legen.

Ein auch nur halbwegs brauchbares Kochrezept dafür habe ich nicht nicht gefunden.

Hat jemand einen Tipp?

Hab genau den Beitrag Gemini 3 (fast) gestellt.

Leider geht die Formatierung verloren:

Ich fühle deinen Schmerz. Der Wechsel von der intuitiven .XCompose zur "Architektur-Kathedrale" XKB fühlt sich oft so an, als würde man versuchen, ein Bild mit einem Presslufthammer aufzuhängen. XKB ist mächtig, ja, aber die Lernkurve ist eine senkrechte Wand.

Die gute Nachricht: Du musst XKB nicht komplett meistern, um ein paar Zeichen zu binden. Es gibt drei Wege, je nachdem, wie tief du in die System-Eingeweide greifen willst.

  1. Der "Schummel-Weg": XCompose behalten

Bevor wir uns an XKB die Zähne ausbeißen: XCompose ist nicht tot. Auch unter modernen Desktop-Umgebungen (Gnome, KDE) und sogar teilweise unter Wayland funktioniert es noch, sofern die Applikationen GTK oder Qt nutzen.

1
Stelle sicher, dass die Umgebungsvariable GTK_IM_MODULE=xim und QT_IM_MODULE=xim gesetzt ist.
2

3
Deine .XCompose im Home-Verzeichnis wird dann meist weiterhin beachtet.
  1. Der pragmatische Weg: xmodmap

Wenn du unter X11 arbeitest, ist xmodmap der heilige Gral für Leute, die keine Lust auf die XKB-Hölle haben. Es ist ein Wrapper, der die Komplexität versteckt.

Beispiel: Euro-Zeichen auf AltGr + E

1
Finde heraus, welchen Keycode die Taste hat: xev -event keyboard drücken.
2

3
Erstelle eine Datei ~/.Xmodmap:
4
Bash
5

6
keycode 26 = e E e E eurosign
7

8
(Die Spalten stehen für: Taste, Shift+Taste, Mode_switch+Taste, Mode_switch+Shift+Taste)
9

10
Lade es mit xmodmap ~/.Xmodmap.
  1. Das "Kochrezept" für XKB (Minimal-Invasiv)

Wenn du es wirklich über XKB machen willst (z.B. für Wayland-Kompatibilität über xkeyboard-config), ist dies der sauberste Weg ohne die Systemdateien zu zerschießen:

Du erstellst ein User-Layout.

Schritt 1: Ordner anlegen Bash

mkdir -p ~/.config/xkb/symbols

Schritt 2: Mapping-Datei erstellen Erstelle eine Datei namens mein_layout in diesem Ordner: Plaintext

xkb_symbols "custom" { include "de(basic)" // Basis ist die deutsche Tastatur

1
// Syntax: key <CODE> { [ Normal, Shift, AltGr, AltGr+Shift ] };
2
key <AD03> { [ e, E, eurosign, trademark ] };

};

Hinweis: <AD03> ist die physikalische Position der "E"-Taste (Reihe D, Taste 3).

Schritt 3: Aktivieren Du kannst dieses Layout mit setxkbmap testen: Bash

setxkbmap -layout "mein_layout(custom)" -print | xkbcomp -I$HOME/.config/xkb - $DISPLAY

Welchen Weg soll ich nehmen?

1
X11 & Bequemlichkeit: Bleib bei XCompose oder xmodmap. Es ist genau das "mal eben schnell", das du suchst.
2

3
Wayland (Gnome/KDE): Hier wird es haarig. Oft ist es einfacher, ein Tool wie Input Remapper (GUI-basiert) zu nutzen, das die Komplexität von XKB/Libinput komplett wegkapselt.

Soll ich dir für ein ganz bestimmtes Zeichen und eine bestimmte Taste den exakten Code für die ~/.Xmodmap heraussuchen?

#8019577
Lesenswert?

Klaus schrieb:

Hab genau den Beitrag Gemini 3 (fast) gestellt.

Leider geht die Formatierung verloren:

Ich fühle deinen Schmerz. Der Wechsel von der intuitiven .XCompose zur "Architektur-Kathedrale" XKB fühlt sich oft so an, als würde man versuchen, ein Bild mit einem Presslufthammer aufzuhängen. XKB ist mächtig, ja, aber die Lernkurve ist eine senkrechte Wand.

Was für ein selten dämliches Geschwätz!

Beitrag #8019687 wurde von einem Moderator gelöscht.
Beitrag #8019691 wurde von einem Moderator gelöscht.
Beitrag #8019694 wurde von einem Moderator gelöscht.
Beitrag #8019697 wurde von einem Moderator gelöscht.
Beitrag #8019704 wurde von einem Moderator gelöscht.
Beitrag #8019709 wurde von einem Moderator gelöscht.
Beitrag #8019710 wurde von einem Moderator gelöscht.
Beitrag #8019723 wurde von einem Moderator gelöscht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren