Forum: PC-Programmierung Tastencodes unter Linux definieren


von Moriz (untertaucher)


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?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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
von Klaus (feelfree)


Lesenswert?

Moriz schrieb:
> Hat jemand einen Tipp?

Schon mal eine KI befragt? Wenn nein, warum nicht?

von Moriz (untertaucher)


Lesenswert?

Jörg W. schrieb:
> xkbcomp :0 state.xkb

liefert hier schlappe 2032 Zeilen Text – das soll ein Fortschritt sein?
Man muss schon ganz schön weltfremd sein, sowas auf die Benutzer los zu 
lassen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Moriz schrieb:
> Man muss schon ganz schön weltfremd sein, sowas auf die Benutzer los zu
> lassen.

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

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Btw., wenn du mal sagen würdest, was du genau ändern möchtest, könnte 
man dir vielleicht auch konkreter helfen.

von Moriz (untertaucher)


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
von Klaus (feelfree)


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
von Manuel H. (Firma: Universität Tartu) (xenos1984)


Lesenswert?

Ich nutze xmodmap um z.B. ein ß auf eine schwedische Tastatur zu zaubern 
mit AltGR + Akzent-Taste.

http://wiki.archlinux.org/title/Xmodmap

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Moriz schrieb:
> Gibt es irgendwo ein Kochrezept, wie man ein UnicodeZeichen auf eine
> Taste mappt?

Sag doch endlich, welches Zeichen auf welche Taste. Dann kann ich 
dir auch schreiben, welche der 2000 Zeilen du editieren musst. Die 
anderen 1999 lässt du einfach, wie sie sind.

von Bauform B. (bauformb)


Angehängte Dateien:

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.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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
von Εrnst B. (ernst)


Lesenswert?

Moriz schrieb:
> Früher konnte man mit XCompose

Geht doch immer noch. Auch unter Wayland,  KDE / Gnome…

~/.XCompose
1
include "%L"
2
<Multi_key> <colon> <asciicircum> : "👍"

Das File wird jetzt halt nicht mehr von X11 ausgewertet, sondern vom 
Compositor.

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.
von Klaus (feelfree)


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.

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

    Deine .XCompose im Home-Verzeichnis wird dann meist weiterhin 
beachtet.

2. 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

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

    Erstelle eine Datei ~/.Xmodmap:
    Bash

    keycode 26 = e E e E eurosign

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

    Lade es mit xmodmap ~/.Xmodmap.

3. 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

    // Syntax: key <CODE> { [ Normal, Shift, AltGr, AltGr+Shift ] };
    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?

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

    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?

von Norbert (der_norbert)


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!

von Klaus (feelfree)


Lesenswert?

Norbert schrieb:
> Was für ein selten dämliches Geschwätz!

Tja, woher die LLM das wohl gelernt hat? Ich habe da einen Verdacht.

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.
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Führt eure Dialoge bitte per PM weiter. Für das Thema des Threads ist 
das völlig uninteressant.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.