wie man AltGr an <Strg> + <Alt> bindet

10

Ich versuche, ein Linux-Äquivalent zum ergonomischen Telugu-Tastaturlayout namens Sarala (Hard la) zu erstellen. Bisher konnte ich alle Schlüssel zuordnen. Das Layout verwendet die folgenden Tastenkombinationen für verschiedene Ebenen.

None (Base): Level1
Shift: Level2
Ctrl + Alt: Level3
Ctrl + Alt + Shift:Level4

Wobei als Linux das Folgende für verschiedene Ebenen verwendet.

None (Base): Level1
Shift: Level2
RAlt: Level3
RAlt + Shift:Level4

Um die Tastenkombinationen mit meinem Layout abgleichen zu können, müsste ich AltGrmit einem Ctrl+ abbilden Alt. Ich habe erfolglos verschiedene Dateien in durchsucht /usr/share/X11/xkb/. Weiß jemand, wie ich das ISO_Level3_Shiftmit Ctrl+ binden kann Alt?

key <RALT>  {
    symbols[Group1]= [ Mode_switch, Multi_key  ],
    virtualMods= AltGr
};

Wenn Sie sich das Layout ansehen möchten, finden Sie es hier

ShaggyInjun
quelle
2
Werfen
Sie
2
Vielen Dank, das ist sehr informativ, aber es spricht über alles andere außer der xkbKonfiguration.
ShaggyInjun
Sie können dieses Wiki im Arch Linux Wiki durchsehen und sich den Teil über Alt und Altgr (Level 3) ansehen . Ich bin nicht sicher, ob dies Ihnen helfen wird, aber es scheint eine Menge Informationen über XKB
No Time
Ich habe versucht, dass xkb nicht mit einem nicht so beschreibenden Fehler geladen werden kann. Ich habe den Fehler nicht zur Hand, kann ihn aber später anhängen.
ShaggyInjun

Antworten:

6

Sie müssen einen neuen xkb-Typ definieren. Sie können Beispiele in Ihrem xkb / types-Verzeichnis sehen (normalerweise /usr/share/X11/xkb/types). Dort können Sie beliebige Kombinationen von Modifikatoren definieren, um unterschiedliche Verschiebungsstufen zu erhalten. Für Ihr Problem können Sie Folgendes verwenden:

type "C_A_to_L3" {
    modifiers = Control+Alt+Shift;
    map[None] = Level1;
    map[Shift] = Level2;
    map[Control+Alt] = Level3;
    map[Control+Alt+Shift] = Level4;
    level_name[Level1] = "Base";
    level_name[Level2] = "Shift";
    level_name[Level3] = "Alt Base";
    level_name[Level4] = "Shift Alt";
};

Dann können Sie in Ihrer Symboldatei diesen Typ als Standard festlegen oder pro Schlüssel festlegen, um welchen Typ es sich handelt. Beachten Sie, dass sich der Typ in einer Datei im Typverzeichnis und die Schlüsseldefinition in einer Datei im Symbolverzeichnis befinden muss. Xkb verwendet eine strenge Dateisystemhierarchie, um jede Komponente zu finden.

Ich habe selbst ein bisschen an Tastaturlayouts gehackt, um mein benutzerdefiniertes Layout ( https://github.com/willghatch/hatchak ) zu erstellen , das verschiedene Iterationen durchlaufen hat, in denen ich mit seltsamen Dingen experimentiert habe. XKB kann manchmal ziemlich finnicky und seltsam sein, aber es ist immer noch das konfigurierbarste Tastatursystem, das ich bei weitem gesehen habe. Die besten Referenzen, wenn Sie mehr Probleme haben, sind:

[Bearbeiten: Die ursprünglichen Links sind derzeit nicht verfügbar, aber zum Glück existiert archive.org]

https://web.archive.org/web/20150722164820/http://www.charvolant.org/~doug/xkb/html/index.html

und

https://web.archive.org/web/20190419170426/http://pascal.tsu.ru/en/xkb/

Achtung - das ist zwar die beste Dokumentation, die ich gefunden habe, aber es bleiben viele trübe Fälle übrig. Viel Glück.

William Hatch
quelle
Ich denke, Ihre Idee ist wirklich nützlich, aber ich habe wirklich Probleme, den erstellten Typ in den Symboldateien als Standard zu verwenden, wie Sie erwähnt haben. Die Symboldateien, die ich auf meinem Computer habe, sind ziemlich lang und ich sehe keine Zeile, die wie eine Definition eines Standardtyps aussieht.
Dave
1
Sie können einen Standard für einen Abschnitt innerhalb einer Symboldatei definieren, indem Sie diese festlegen key.type. Sie können wahrscheinlich ein Beispiel unter /usr/share/X11/xkb/symbols/srvr_ctrl(oder irgendwo so) im Abschnitt "no_srvr_keys" sehen. Folgendes habe ich: xkb_symbols "no_srvr_keys" {key.type = "TWO_LEVEL"; Taste <FK01> {[F1, F1]}; Schlüssel <FK02> {[F2, F2]}; <etc ...>};
William Hatch
Danke für die schnelle Antwort. Ich denke, ich werde das anwenden können. Vielen Dank im Voraus.
Dave
Nur als Feedback für alle, die noch lange später auf diese Seite zurückkehren. Für mich funktionierte dieser Ansatz jetzt mit einem neu installierten Fedora. Aus irgendeinem (mir) unbekannten Grund funktionierte es nicht mit Mint, als ich diesen Kommentar oben schrieb. Aber jetzt funktioniert es und spart mir viel Zeit.
Dave
-1

Soweit ich weiß, benötigen Sie ein Tastaturlayout, das AltGr unterstützt. Sie können also einfach den Hotkey unter "Tastatur> Tastenkombinationen> Taste für alternative Zeichen" im Konfigurationsmenü ändern. Normalerweise können Sie es sehen, indem Sie in ein Layout wechseln, das "tote Schlüssel" oder "AltGr tote Schlüssel" enthält.


quelle
Ich frage nicht nach persönlichem Gebrauch, ich muss das Layout versenden. Leider ist das eine schlechte Antwort. Vielen Dank jedoch.
ShaggyInjun