Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 28/11/2019, à 13:44

Arbiel

[Résolu] Modification de l'agencement du clavier en ligne de commande

Bonjour

[Édit] Voir en #12 comment modifier temporairement la disposition du clavier par ligne de commande

J'ai écrit un script qui demande la saisie de mots en grec polytonique. Pour cette saisie, je suis obligé de basculer à la main sur la disposition de clavier appropriée. Cette disposition de clavier est incluse dans le fichier /usr/share/X11/xkb/symbols/fr (en réalité, j'ai créé un nouveau fichier dans mon espace personnel et je le monte sur le fichier /usr/share/X11/xkb/symbols/fr dans /etc/fstab)

// début ucg "Grec (polytonique, bépo façon Dvorak)" créé le 02/11/19 13:54:07 -- ne pas supprimer cette ligne qui marque le début du clavier
partial alphanumeric_keys alternate_group
xkb_symbols "gr1" {
name[Group1] = "Grec (polytonique, bépo façon Dvorak)";
include "level3(lalt_switch)"
include "level3(ralt_switch)"
…
…
};
// fin ucg "Grec (polytonique, bépo façon Dvorak)" -- ne pas supprimer cette ligne qui marque la fin du clavier

J'aimerais pouvoir effectuer cette basculement dans le script lui-même et revenir après la saisie à ma disposition bépo, par la commande appropriée, qui me semble être

setxkbmap

La lecture de la page de manuel ne m'a pas permis de comprendre comment l'utiliser.

Merci d'avance à quiconque pourra me mettre sur la voie.

Arbiel

Dernière modification par Arbiel (Le 02/12/2019, à 10:33)


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne

#2 Le 29/11/2019, à 17:04

bruno

Re : [Résolu] Modification de l'agencement du clavier en ligne de commande

Bonjour,

Pour passer le clavier en fr variante bépo :

setxkbmap -layout fr -variant bepo

Pour passer en fr variante oss :

setxkbmap -layout fr -variant oss

En grec variante polytonic

setxkbmap -layout gr -variant polytonic

Hors ligne

#3 Le 29/11/2019, à 22:20

Arbiel

Re : [Résolu] Modification de l'agencement du clavier en ligne de commande

Merci bruno.

Effectivement, à la suite de ta réponse, j'ai relu la page de manuel, dont j'avais mal interprété l'option "-layout", alors que l'explication pour "-variant" aurait dû me mettre sur la voie

man setxkbmap a écrit :


      -variant name
               Specifies which variant of the keyboard layout should  be  used
               to determine the components which make up the keyboard descrip‐
               tion. The -variant option may only be used once. Multiple vari‐
               ants  can  be  specified  as a comma-separated list and will be
               matched with the layouts specified with -layout.

puisqu'il y est fait mention de "keyboard layout".

Et la lecture du ficher evdev.xml aurait également pu me permettre de trouver tout seul la solution.

Pendant que j'y suis, sais-tu comment je peux obtenir les valeurs courantes de -layout et de -variant pour y revenir après les avoir modifiées ?


Arbiel

Dernière modification par Arbiel (Le 29/11/2019, à 23:30)


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne

#4 Le 29/11/2019, à 23:51

Arbiel

Re : [Résolu] Modification de l'agencement du clavier en ligne de commande

Je viens de m'apercevoir que la modification du clavier par setxkbmap inhibe les effets du contrôle qui permet le choix du clavier. J'ai réactivé ce contrôle en fermant puis réouvrant ma session.

Sais-tu comment faire par ligne de commande, ou comment restreindre l'effet de setxkbmap à un processus plutôt qu'à l'intégralité de la session ?

Arbiel


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne

#5 Le 30/11/2019, à 12:47

maxire

Re : [Résolu] Modification de l'agencement du clavier en ligne de commande

Salut,

Tu peux utiliser Xephyr en serveur X  embarqué dans ta session X réelle, exemple :

Xephyr :100 &
env display=:100 commande de lancement de ta session graphique en grec dans laquelle tu intègres la commande setxkbmap qui va bien

Maxire
Archlinux/Mate + Ubuntu 22.04 + Archlinux/Gnome sur poste de travail

Hors ligne

#6 Le 30/11/2019, à 12:59

maxire

Re : [Résolu] Modification de l'agencement du clavier en ligne de commande

Arbiel a écrit :

Pendant que j'y suis, sais-tu comment je peux obtenir les valeurs courantes de -layout et de -variant pour y revenir après les avoir modifiées ?

setxkbmap -query

C'est dans la page man !

Dernière modification par maxire (Le 30/11/2019, à 15:38)


Maxire
Archlinux/Mate + Ubuntu 22.04 + Archlinux/Gnome sur poste de travail

Hors ligne

#7 Le 30/11/2019, à 19:05

Arbiel

Re : [Résolu] Modification de l'agencement du clavier en ligne de commande

Bonsoir maxire

J'avais passé la commande avant de demander de l'aide. Elle ne permet pas de savoir quelle disposition du clavier est actuellement active.
[Édit] ce que j'ai rayé ci-dessus est faux : la disposition active est celle qui est énumérée en tête, à savoir, ici fr bepo

remi@remi-Vostro-3550:~$ setxkbmap -query
rules:      evdev
model:      pc105
layout:     fr,fr,fr
variant:    bepo,gr1,oss
options:    compose:menu
remi@remi-Vostro-3550:~$ 

En l'occurrence, ma disposition présente est fr bépo.

fr gr1 est ma disposition grecque polytonique, façon Dvorak, cad tout à fait personnelle, que j'ai insérée dans le fichier fr (je ne sais plus pourquoi)
fr oss, je ne sais pas ce que c'est car je n'ai activé par le contrôle des claviers que bépo et gr1.

Par ailleurs, j'ai inséré cette commande dans mon script pour y prendre dans les deux premières positions les symboles de mes claviers (fr bepo, fr gr1) au cas oǜ, dans le futur, je serais conduit à changer le contenu des fichiers. Je me suis retrouvé avec une seule valeur à savoir

rules:      evdev
model:      pc105
layout:     fr
variant:    bepo
options:    compose:menu

Peut-être avais-je auparavant exécuté la commande setxkbmap. C'est peut-être là que réside le problème de l'inhibition du contrôle.

Arbiel

Dernière modification par Arbiel (Le 30/11/2019, à 22:51)


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne

#8 Le 30/11/2019, à 19:29

maxire

Re : [Résolu] Modification de l'agencement du clavier en ligne de commande

Salut,

layout:     fr,fr,fr
variant:    bepo,gr1,oss

3 x fr + bepo,gr1 et oss donc 3 variantes actives en même temps, je ne suis pas certain que cela soit normal, tu as peut-être cassé quelque chose.
Ce que j'ai sous Mate :

[frankenstein@frankenstein ~]$ setxkbmap -query
rules:      evdev
model:      logitech_base
layout:     fr
variant:    oss_latin9
options:    kpdl:commaoss
[frankenstein@frankenstein ~]$

Tu peux tester l'utilisation de Xephyr, je l'ai testé sous Mate comme ceci :

Xephyr :100 &
env DISPLAY=:100 mate-terminal &

Dans la session de terminal ouverte dans la fenêtre Xephyr :

[frankenstein@frankenstein ~]$ setxkbmap -layout ....

J'ai alors une carte clavier différente de  la session d'accueil dans la session Xephyr.

Tu devrais pouvoir te débrouiller avec cela.

Dernière modification par maxire (Le 30/11/2019, à 19:29)


Maxire
Archlinux/Mate + Ubuntu 22.04 + Archlinux/Gnome sur poste de travail

Hors ligne

#9 Le 30/11/2019, à 22:25

Arbiel

Re : [Résolu] Modification de l'agencement du clavier en ligne de commande

J'ai fait quelques essais, sur la base d'informations que je n'avais pas essayé de comprendre, à savoir que plusieurs claviers (layout ?) peuvent être énumérés dans le paramètre -layout, et plusieurs variantes (variant ?) dans -variant

man setxkbmap a écrit :


       -layout name
               Specifies  the  name of the layout used to determine the compo‐
               nents which make  up  the  keyboard  description.  The  -layout
               option may only be used once. Multiple layouts can be specified
               as a comma-separated list.

      -variant name
               Specifies which variant of the keyboard layout should  be  used
               to determine the components which make up the keyboard descrip‐
               tion. The -variant option may only be used once. Multiple vari‐
               ants  can  be  specified  as a comma-separated list and will be
               matched with the layouts specified with -layout.

remi@remi-Vostro-3550:~$ setxkbmap -query
rules:      evdev
model:      pc105
layout:     fr,fr,fr
variant:    bepo,gr1,oss
options:    compose:menu
remi@remi-Vostro-3550:~$ setxkbmap -layout fr -variant bepo
remi@remi-Vostro-3550:~$ setxkbmap -query
rules:      evdev
model:      pc105
layout:     fr
variant:    bepo
options:    compose:menu
remi@remi-Vostro-3550:~$ setxkbmap -layout fr -variant bepo,gr1
remi@remi-Vostro-3550:~$ setxkbmap -query
rules:      evdev
model:      pc105
layout:     fr
variant:    bepo,gr1
options:    compose:menu

Arrivé à ce point, je me trouve en clavier azerty et non en clavier bépo. Mais l'information "will be matched with the layouts specified with -layout" implique qu'il doit y avoir autant de valeurs "layout" que de valeurs "variant" (to match = égaler)

Je poursuis alors avec

remi@remi-Vostro-3550:~$ setxkbmap -layout fr,fr -variant bepo,gr1
remi@remi-Vostro-3550:~$ setxkbmap -query
rules:      evdev
model:      pc105
layout:     fr,fr
variant:    bepo,gr1
options:    compose:menu

et là, je suis à nouveau en bépo. Ensuite

remi@remi-Vostro-3550:~$ setxkbmap -layout fr,fr -variant gr1,bepo
remi@remi-Vostro-3550:~$ setxkbmap -query
rules:      evdev
model:      pc105
layout:     fr,fr
variant:    gr1,bepo
options:    compose:menu

et là, je suis bien en clavier grec polytonique. Pour revenir à bépo, et y voir plus clair en ajoutant -verbose

remi@remi-Vostro-3550:~$ setxkbmap -layout fr,fr -variant bepo,gr1 -verbose 10
Setting verbose level to 10
locale is C
Warning! Multiple definitions of keyboard layout
         Using command line, ignoring X server
Warning! Multiple definitions of layout variant
         Using command line, ignoring X server
Trying to load rules file ./rules/evdev...
Trying to load rules file /usr/share/X11/xkb/rules/evdev...
Success.
Applied rules from evdev:
rules:      evdev
model:      pc105
layout:     fr,fr
variant:    bepo,gr1
options:    compose:menu
Trying to build keymap using the following components:
keycodes:   evdev+aliases(azerty)
types:      complete
compat:     complete
symbols:    pc+fr(bepo)+fr(gr1):2+inet(evdev)+compose(menu)
geometry:   pc(pc105)
remi@remi-Vostro-3550:~$ setxkbmap -layout fr,fr -variant gr1,bepo -verbose 10
Setting verbose level to 10
locale is C
Warning! Multiple definitions of keyboard layout
         Using command line, ignoring X server
Warning! Multiple definitions of layout variant
         Using command line, ignoring X server
Trying to load rules file ./rules/evdev...
Trying to load rules file /usr/share/X11/xkb/rules/evdev...
Success.
Applied rules from evdev:
rules:      evdev
model:      pc105
layout:     fr,fr
variant:    gr1,bepo
options:    compose:menu
Trying to build keymap using the following components:
keycodes:   evdev+aliases(azerty)
types:      complete
compat:     complete
symbols:    pc+fr(gr1)+fr(bepo):2+inet(evdev)+compose(menu)
geometry:   pc(pc105)
remi@remi-Vostro-3550:~$ setxkbmap -layout fr,fr -variant bepo,gr1
remi@remi-Vostro-3550:~$ setxkbmap -query
rules:      evdev
model:      pc105
layout:     fr,fr
variant:    bepo,gr1
options:    compose:menu

Il reste encore quelques points à élucider ;
1) pourquoi la commande "setxkbmap -layout fr -variant bepo,gr1" active-t-elle le clavier azerty, que je n'ai pas conservé dans le menu de l'interface graphique, alors que "setxkbmap -layout fr -variant bepo" fonctionne comme prévu
2) pourquoi l'interface graphique ne fonctionne-t-elle plus après l'exécution de setxkbmap, sauf à ce que je me sois trompé dans l'interprétation de mes tests ? est-ce la conséquence de "ignoring X server"  ?

Arbiel


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne

#10 Le 30/11/2019, à 22:30

Arbiel

Re : [Résolu] Modification de l'agencement du clavier en ligne de commande

remi@remi-Vostro-3550:~$ alias σετχκϐμαπ="setxkbmap -layout fr,fr -variant bepo,gr1 -verbose 10"
remi@remi-Vostro-3550:~$ σετχκϐμαπ
Setting verbose level to 10
locale is C
Warning! Multiple definitions of keyboard layout
         Using command line, ignoring X server
Warning! Multiple definitions of layout variant
         Using command line, ignoring X server
Trying to load rules file ./rules/evdev...
Trying to load rules file /usr/share/X11/xkb/rules/evdev...
Success.
Applied rules from evdev:
rules:      evdev
model:      pc105
layout:     fr,fr
variant:    bepo,gr1
options:    compose:menu
Trying to build keymap using the following components:
keycodes:   evdev+aliases(azerty)
types:      complete
compat:     complete
symbols:    pc+fr(bepo)+fr(gr1):2+inet(evdev)+compose(menu)
geometry:   pc(pc105)
remi@remi-Vostro-3550:~$


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne

#11 Le 01/12/2019, à 01:05

Arbiel

Re : [Résolu] Modification de l'agencement du clavier en ligne de commande

Mes derniers tests montrent que

a) "setxkbmap -layout … -variant …" modifie l'ordre dans lequel sont affichées les dispositions de clavier par "setxkbmap -query" et active la première d'entre elles, mais ne modifie par l'ordre dans lequel les dispositions sont classées dans l'interface graphique
b) l'interface graphique active la disposition choisie par l'utilisateur, sans impact sur la réponse donnée par "setxkbmap -query" ; on ne peut donc pas déduire la disposition active par l'analyse de la réponse de cette commande
c) l'interface graphique active la disposition choisie par l'utilisateur dans la mesure où la disposition affichée en tête par "setxkbmap -query" correspond à la disposition classée en tête dans l'interface graphique;
d) l'ordre dans lequel  "setxkbmap -query" affiche les dispositions du clavier est modifié lorsque l'utilisateur modifie l'ordre de présentation des dispositions par l'interface graphique.

Je n'ai pas su lire l'ordre des dispositions dans l'interface graphique.

tout ceci n'est pas très clair. Je vais y revenir plus tard.

Arbiel

Dernière modification par Arbiel (Le 01/12/2019, à 12:11)


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne

#12 Le 02/12/2019, à 10:25

Arbiel

Re : [Résolu] Modification de l'agencement du clavier en ligne de commande

Incohérence dans la gestion des dispositions de clavier
Les dispositions de clavier (constitution de la liste, activation d'une disposition) sont gérées par une interface graphique et par ligne de commande. Ces deux outils ne sont pas correctement intégrés (dans Ubuntu 18.04)
Par ligne de commande (setxkbmap), il est possible de définir la liste des dispositions:

setxkbmap -layout c1,c2,c3 -variant v1,v2,v3

Après exécution de cette commande, la disposition active devient la variante v1 de la disposition c1.
Mais le résultat de cette commande n'est pas répercutée vers l'interface graphique qui devient alors inutilisable. En particulier, les variantes v2 de la disposition c2 et v3 de c3 ne sont plus accessibles. La disposition du clavier reste "bloquée" sur la variant v1 de c1.
Pour modifier de façon temporaire la disposition du clavier, il faut alors, avant l'exécution de «setxkbmap», mémoriser la situation courante pour y revenir ensuite.

declare -gA  clavier
for v in layout variant; do clavier[${v}]="$(setxkbmap -query | grep ${v} | cut -d ":" -f 2  | tr -d [:space:] )"; done;
setxkbmap -layout y -variant z
execution_code_avec_saisie_clavieryz
setxkbmap -layout "${clavier[layout]}" -variant "${clavier[variant]}"

Enfin, si la disposition initiale n'était pas c1/v1, mais par exemple c2/v2 et que l'on veuille y revenir, il faut d'abord, par l'interface graphique, activer c1/v1, pour revenir ensuite à c2/v2, ou toute autre disposition.

Arbiel

Dernière modification par Arbiel (Le 02/12/2019, à 10:42)


Arbiel Perlacremaz
LDLC Aurore NK3S-8-S4 Ubuntu 20.04
Abandon d'azerty au profit de bépo, de google au profit de Lilo et de la messagerie électronique violable au profit de Protonmail, une messagerie chiffrée de poste de travail à poste de travail.

Hors ligne