comment lier AltGr à <Ctrl> + <Alt>

11

J'essaie de créer un équivalent linux de la disposition du clavier ergonomique Telugu appelé Sarala (Hard la). Jusqu'à présent, j'ai pu cartographier toutes les clés. La disposition utilise les combinaisons de touches suivantes pour différents niveaux.

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

Alors que Linux utilise ce qui suit pour différents niveaux.

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

Pour pouvoir faire correspondre les combinaisons de touches avec ma disposition, je devrais mapper AltGravec un Ctrl+ Alt. J'ai cherché sans succès dans divers fichiers /usr/share/X11/xkb/. Est -ce que tout savoir corps comment je peux lier le ISO_Level3_Shiftavec Ctrl+ Alt?

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

Si vous voulez regarder la mise en page, c'est ici

ShaggyInjun
la source
2
jetez un œil ici askubuntu.com/questions/254424/…
αғsнιη
2
Merci, c'est très informatif mais ça parle de tout le reste sauf de la xkbconfiguration.
ShaggyInjun
Vous pouvez parcourir ce wiki depuis arch linux wiki et consulter la partie sur Alt et Altgr (niveau 3). Je ne sais pas si cela vous aidera, mais il semble y avoir beaucoup d'informations sur XKB
No Time
J'ai essayé cela, xkb ne parvient pas à se charger avec une erreur moins descriptive. Je n'ai pas l'erreur à portée de main, mais je peux la joindre plus tard.
ShaggyInjun

Réponses:

6

Vous devez définir un nouveau type xkb. Vous pouvez voir des exemples dans votre répertoire xkb / types (généralement /usr/share/X11/xkb/types). Là, vous pouvez définir des combinaisons arbitraires de modificateurs pour obtenir différents niveaux de décalage. Pour votre problème, vous pouvez utiliser quelque chose comme ceci:

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";
};

Ensuite, dans votre fichier de symboles, vous pouvez définir ce type comme valeur par défaut, ou définir ce type par clé. Notez que vous avez besoin que le type se trouve dans un fichier du répertoire des types et que la définition de clé dans un fichier du répertoire des symboles - xkb utilise une hiérarchie de système de fichiers stricte pour trouver chaque composant.

J'ai moi-même fait un peu de piratage des dispositions de clavier pour créer ma disposition personnalisée ( https://github.com/willghatch/hatchak ), qui a subi diverses itérations où j'ai expérimenté des choses étranges. Le XKB peut être assez finnicky et étrange à certains moments, mais c'est toujours le système de clavier le plus configurable que j'ai vu de loin. Les meilleures références si vous avez plus de problèmes sont:

[modifier: les liens originaux sont actuellement fermés, mais heureusement archive.org existe]

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

et

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

Attention - bien que ce soit la meilleure documentation que j'ai trouvée, elle laisse beaucoup de cas aux bords troubles. Bonne chance.

William Hatch
la source
Je pense que votre idée est vraiment utile, mais j'ai vraiment du mal à utiliser le type créé dans les fichiers de symboles par défaut comme vous l'avez mentionné. Les fichiers de symboles que j'ai sur mon ordinateur sont assez longs et je ne vois aucune ligne qui ressemble à une définition d'un type par défaut.
Dave
1
Vous pouvez définir une valeur par défaut pour une section dans un fichier de symboles en définissant key.type. Vous pouvez probablement voir un exemple sur /usr/share/X11/xkb/symbols/srvr_ctrl(ou quelque part comme ça), dans la section "no_srvr_keys". Voici ce que j'ai: xkb_symbols "no_srvr_keys" {key.type = "TWO_LEVEL"; clé <FK01> {[F1, F1]}; clé <FK02> {[F2, F2]}; <etc ...>};
William Hatch
Merci pour la réponse rapide. Je pense que je pourrai l'appliquer. Merci beaucoup d'avance.
Dave
Juste un retour pour tous ceux qui reviennent sur cette page, même longtemps plus tard. Pour moi, cette approche fonctionnait maintenant avec un Fedora nouvellement installé. Pour une raison inconnue (pour moi), cela n'a pas fonctionné avec Mint lorsque j'ai écrit ce commentaire ci-dessus. Mais maintenant, cela fonctionne et me fait gagner beaucoup de temps.
Dave
-1

D'après ce que j'ai l'impression, vous avez besoin d'une disposition de clavier prenant en charge AltGr, vous pouvez donc simplement changer le raccourci clavier dans "clavier> raccourcis> touche de caractères alternatifs" dans le menu de configuration. Normalement, vous pouvez le voir en changeant en une disposition qui "a des touches mortes" ou est écrite "touches mortes AltGr"


la source
Je ne demande pas un usage personnel, je dois expédier la mise en page. Malheureusement, c'est une mauvaise réponse. Merci cependant.
ShaggyInjun