wie registriere ich eine Tastenkombination zum Eingeben eines diakritischen Zeichens in IceWM?

wie registriere ich eine Tastenkombination zum Eingeben eines diakritischen Zeichens in IceWM?

Ich versuche, Tastenkombinationen für die Eingabe gängiger diakritischer Zeichen einzurichten. Ich kann xdotool die diakritischen Zeichen in einem Terminal oder über die IceWM-Befehlsleiste (oder sogar über gmrun) eingeben lassen:

xdotool key Aacute

Aber die folgenden Tastenzuordnungen (in der IceWM-Schlüsseldatei) funktionieren nicht:

key "Ctrl+Alt+a"                  xdotool key Aacute
key "Ctrl+Alt+a"                  xdotool --delay 1000 key Aacute

Stattdessen sehe ich nur, dass der Cursor einmal blinkt, wenn ich die Tastenkombination eingebe (wenn ich mich im Terminal oder Texteditor befinde), aber sonst passiert nichts. Im Folgenden wird ein Popup angezeigt, der Tastencode selbst ist also korrekt:

key "Ctrl+Alt+a"                  zenity --info --text="shortcut works"

Kennt jemand eine Möglichkeit, die Tastenkombination zu registrieren, sodass das diakritische Zeichen tatsächlich in der aktiven Anwendung eingegeben wird?

Antwort1

Die Verwendung von setxkbmapoder xmodmapscheint das Richtige zu sein, aber FWIW und FTR habe ich festgestellt, dass Folgendes für mich funktioniert hat, nachdem ich auf diese Frage gestoßen bin. Ich hoffe, dass dies anderen hilft, die verwenden möchten xdotool.

Ich habe xdotool diese Tasten emulieren lassen, da ich sie nicht auf meiner Tastatur habe. Beachten Sie die Verwendung von , &um den Befehl im Hintergrund auszuführen, damit IceWM von der Verarbeitung des Hotkeys zurückkehren und Störungen mit xdotool vermeiden kann.

200 ms ist die kürzeste Verzögerung, die ich verwenden könnte, damit es immer noch zuverlässig funktioniert. Ich bin nicht sicher, ob das --clearmodifiersfür Ihren Anwendungsfall sinnvoll ist oder nicht.

key "Ctrl+Up"          xdotool sleep 0.2 key --clearmodifiers Page_Up &
key "Ctrl+Down"        xdotool sleep 0.2 key --clearmodifiers Page_Down &
key "Ctrl+Shift+Up"    xdotool sleep 0.2 key --clearmodifiers Home &
key "Ctrl+Shift+Down"  xdotool sleep 0.2 key --clearmodifiers End &

Beachten Sie auch, dass das Gedrückthalten dieser Tasten nicht zum erwarteten Wiederholungsverhalten führt (da IceWM-Hotkeys hierfür nicht die beste Wahl sind), aber für meine Zwecke ist das in Ordnung.

Antwort2

Meine ursprüngliche Lösung funktionierte nicht, also habe ich stattdessen die Tastaturbelegung geändert. Die standardmäßige US-Tastaturbelegung enthält nicht die diakritischen Zeichen, die ich brauche, die internationale Version jedoch schon. So probieren Sie es aus:

setxkbmap -layout 'us(intl)'

Aber die internationale Version verwendet standardmäßig Compose für bestimmte Tasten. Beispielsweise reagiert das Zeichen ' nicht mehr sofort. Also habe ich mich stattdessen dafür entschieden, meine eigene Tastaturbelegung basierend auf der US-Tastatur zu erstellen.

Ich habe eine neue Datei erstellt:/usr/share/X11/xkb/symbols/erik

partial default alphanumeric_keys
xkb_symbols "basic" {
  include "us"
  include "eurosign(5)"

    key <AC01> { [         a,          A,        aacute,           Aacute ] };
    key <AD03> { [         e,          E,        eacute,           Eacute ] };
    key <AD08> { [         i,          I,        iacute,           Iacute ] };
    key <AD09> { [         o,          O,        oacute,           Oacute ] };
    key <AD07> { [         u,          U,        uacute,           Uacute ] };

    key <RALT>  { type[Group1]="TWO_LEVEL", [ ISO_Level3_Shift, Multi_key ]   };  

    modifier_map Mod5   { <RALT> };
};

damit xkb die Änderungen übernimmt:

sudo dpkg-reconfigure xkb-data

um die Tastaturbelegung auszuprobieren:

setxkbmap -layout erik

Jetzt sollte Alt_gr + [aeiou] [áéíóú] eingeben.

Ich habe die Änderungen dauerhaft gemacht, indem ich den obigen Befehl beim Start mithilfe der Startdatei icewm aufgerufen habe. Ich denke, es sollte möglich sein, das Layout mithilfe des Tastaturumschalters Ihrer Distribution auszuwählen, aber ich habe das nicht getestet. Sie können die Datei gerne anders benennen, es sei denn, Sie möchten mir die große Ehre erweisen, Ihre Tastaturbelegung nach mir zu benennen. Vermeiden Sie nur unbedingt 2-stellige Codes, da alle Standardländerbelegungen so benannt sind.

Hinweise:
Beispiele finden Sie in den anderen Mapping-Dateien im Symbolverzeichnis.
Einige Ressourcen zum Verständnis des Dateiformats finden Sie hier:
https://www.x.org/wiki/XKB/

verwandte Informationen