Forum bépo

Forum des utilisateurs du bépo

Vous n'êtes pas identifié(e).

#1 21/6/2013 01:25:46

Fauve
Membres
Inscription : 16/8/2011
Messages : 25

[Résolu]Commande pour commuter entre deux dispositions

Ave,

Je cherches à faire une commande sous Linux qui me permette de commuter en deux dispositions distinctes. Par commuter j’entends qu’une telle commande applique la disposition B si c’est la A qui est active et inversement. L’interêt étant de l’affectée à un racourcis-clavier qui commuterait entre A et B par simple saisie. J’aimerais pour ce fait éviter autant que possible les logiciels de gestion de disposition (surtout s’ils relèvent de Gnome ou de KDE) ce qui, je m’y attends, ne me laisse que la possibilité d’un script.
J’aimerais toutefois savoir si une telle fonctionnalité ne serait pas gérée de base par setxkbmap ou une autre commande.

Merci par anticipation pour votre aide.

Vale.

Dernière modification par Fauve (22/6/2013 13:44:23)


weechat, i3, mutt, vimperator, gentoo, bépo, zsh, tmux, urxvt, cmus, zathura

Hors ligne

#2 21/6/2013 03:09:36

rat bière sé
Le vilain admin
Inscription : 15/3/2012
Messages : 809

Re : [Résolu]Commande pour commuter entre deux dispositions

Si j'ai bien saisi tu veux un script du genre :

if disposition_courante == bépo
setxkbmap fr bépo_arabe
else
setxkbmap fr bépo

OK ça ressemble à rien mais ça se résume à : Si la disposition en cours est bépo basculer sur bépo_arabe, sinon basculer sur bépo


J'ai regardé dans le man de setxkbmap mais rien trouvé dans ce genre.

Par contre en regardant ma config héritée de ma transition azerty/bépo j'ai la combinaison des deux shift ensemble qui change la disposition ou plutôt qui passe à la suivante dans la liste des paramètres clavier de xfce.
Avec ce lien tu as le fichier cible de liste indépendant du WM/DE
http://wiki.archlinux.fr/Xorg#Basculer_ … on_clavier

ou chez nous http://bepo.fr/wiki/Activation_X.Org#Ba … vol.C3.A9e

Bon ça demande les droits admin, contrairement à la liste des dispositions utilisé par un DE qui est située dans /home, donc le script peut être une solution plus transportable.

Dernière modification par rat bière sé (21/6/2013 03:30:31)


GNU/Linux depuis 2/2012 : Ubuntu→ Xubuntu 4/12→ Debian (Xfce) 10/12 + Cubian 10/13
BOINC (World Community Grid) depuis 4/11 - BÉPO depuis 3/12 - Vapoteur depuis 10/13
Claviers Cherry G80-3000 (MXClear), TIPRO MID KM128A (MXBlack) Noppo MID 87 ANSI (MXRed)
Kensington Orbit trackball (à gauche), Wacom Intuos3 A4

Hors ligne

#3 21/6/2013 09:22:20

Mimoza
Admin
Lieu : Terre
Inscription : 19/9/2012
Messages : 1 161

Re : [Résolu]Commande pour commuter entre deux dispositions

J'avais fait un petit script pour faire la bascule. A adapter librement wink

#!/bin/sh
if [ `setxkbmap -print | grep xkb_symbols | awk -F"+" '{print $2}'` = 'fr(bepo)' ] ;
then 
	setxkbmap fr ; 
else
	setxkbmap fr bepo ;
fi

Hors ligne

#4 21/6/2013 09:29:35

Laurent
Membres
Inscription : 9/8/2009
Messages : 711
Site Web

Re : [Résolu]Commande pour commuter entre deux dispositions

XavierC a écrit :

OK ça ressemble à rien mais ça se résume à : Si la disposition en cours est bépo basculer sur bépo_arabe, sinon basculer sur bépo

#!/bin/sh

if (xkbcomp -xkb -o - $DISPLAY | grep 'xkb_symbols.*bepo_arab' > /dev/null); then
    setxkbmap fr bepo
else
    setxkbmap bepo_arab
fi
XavierC a écrit :

Avec ce lien tu as le fichier cible de liste indépendant du WM/DE
http://wiki.archlinux.fr/Xorg#Basculer_ … on_clavier

ou chez nous http://bepo.fr/wiki/Activation_X.Org#Ba … vol.C3.A9e

Bon ça demande les droits admin, contrairement à la liste des dispositions utilisé par un DE qui est située dans /home, donc le script peut être une solution plus transportable.

Pas forcément… si la disposition est installée dans /usr/share/X11/xkb/symbols (sinon, c’est pour ça qu’il faut des droits admin) :

setxkbmap -layout fr,fr -variant bepo,oss -option grp:shifts_toggle

Les arguments de l’option -variant doivent être dans l’ordre correspondant à celles de l’option -layout.

Comme solution transportable, pour ma variante, j’ai fait un script Perl qui contient la disposition et la charge directement.

Dernière modification par Laurent (21/6/2013 09:40:27)

Hors ligne

#5 21/6/2013 19:21:28

Fauve
Membres
Inscription : 16/8/2011
Messages : 25

Re : [Résolu]Commande pour commuter entre deux dispositions

XavierC a écrit :

Si j'ai bien saisi tu veux un script du genre :

if disposition_courante == bépo
setxkbmap fr bépo_arabe
else
setxkbmap fr bépo


OK ça ressemble à rien mais ça se résume à : Si la disposition en cours est bépo basculer sur bépo_arabe, sinon basculer sur bépo

C’est effectivement le mécanisme que j’ai décris.


XavierC a écrit :

J'ai regardé dans le man de setxkbmap mais rien trouvé dans ce genre.

Par contre en regardant ma config héritée de ma transition azerty/bépo j'ai la combinaison des deux shift ensemble qui change la disposition ou plutôt qui passe à la suivante dans la liste des paramètres clavier de xfce.
Avec ce lien tu as le fichier cible de liste indépendant du WM/DE
http://wiki.archlinux.fr/Xorg#Basculer_ … on_clavier

C’est précisément ce comportement que je cherches à obtenir (en ayant toute fois la possibilité de choisir un autre déclencheur que shift+shift).

Je vais déjà voir ce que disent ces documentations.


weechat, i3, mutt, vimperator, gentoo, bépo, zsh, tmux, urxvt, cmus, zathura

Hors ligne

#6 21/6/2013 19:25:38

Fauve
Membres
Inscription : 16/8/2011
Messages : 25

Re : [Résolu]Commande pour commuter entre deux dispositions

D’amblais, lorsque je suis les instruction de la doc’ d’Archlinux, j’obtient l’erreur suivante :

[fauve@OperateurNoir ~ %] setxkbmap -layout "bepo,bepo-arab_MA_ary" -option "grp:shifts_toggle"
Error loading new keyboard description

Je précise que bepo-arab_MA_ary est installé sur mon système avec les dispositions ara.

Dernière modification par Fauve (21/6/2013 19:27:41)


weechat, i3, mutt, vimperator, gentoo, bépo, zsh, tmux, urxvt, cmus, zathura

Hors ligne

#7 21/6/2013 22:22:20

Laurent
Membres
Inscription : 9/8/2009
Messages : 711
Site Web

Re : [Résolu]Commande pour commuter entre deux dispositions

Fauve a écrit :

D’amblais, lorsque je suis les instruction de la doc’ d’Archlinux, j’obtient l’erreur suivante :

[fauve@OperateurNoir ~ %] setxkbmap -layout "bepo,bepo-arab_MA_ary" -option "grp:shifts_toggle"
Error loading new keyboard description

En même temps, si tu fais

setxkbmap -layout bepo

ça échoue aussi.
Il faut d’abord avoir les bonnes commandes pour les dispositions, ensuite seulement les grouper.
Pour le Bépo, c’est :

setxkbmap -layout fr -variant bepo
Fauve a écrit :

Je précise que bepo-arab_MA_ary est installé sur mon système avec les dispositions ara.

Du coup, la bonne commande serait plutôt :

setxkbmap -layout fr,ara -variant bepo,bepo-arab_MA_ary -option grp:shifts_toggle

Hors ligne

#8 22/6/2013 00:12:56

rat bière sé
Le vilain admin
Inscription : 15/3/2012
Messages : 809

Re : [Résolu]Commande pour commuter entre deux dispositions

Merci Laurent et Mimoza smile en effet pas besoin de script il suffit d'ajouter une commande setxkbmap au démarrage de la session

pour créer une touche ⌨ dédiée au basculement sur un clavier (Je pense notamment au TF) il est possible de créer une macro dans le clavier, celle-ci reproductible physiquement ou non, et de l'indiquer dans l'option grp de setxkbmap. Par contre faut voir ce qu'il est possible d'assigner dans cette option.


GNU/Linux depuis 2/2012 : Ubuntu→ Xubuntu 4/12→ Debian (Xfce) 10/12 + Cubian 10/13
BOINC (World Community Grid) depuis 4/11 - BÉPO depuis 3/12 - Vapoteur depuis 10/13
Claviers Cherry G80-3000 (MXClear), TIPRO MID KM128A (MXBlack) Noppo MID 87 ANSI (MXRed)
Kensington Orbit trackball (à gauche), Wacom Intuos3 A4

Hors ligne

#9 22/6/2013 00:38:04

robin_moussu
Membres
Inscription : 17/3/2013
Messages : 292

Re : [Résolu]Commande pour commuter entre deux dispositions

Faisant pas mal de test sous xkb, j’ai ajouter ces lignes dans mon .bashrc   

alias auie="setxkbmap -layout \"fr(azerty)\""      
alias bepo="setxkbmap -layout \"fr(bepo)\""        
alias azer="setxkbmap -layout \"fr(bepo)\""    

   
c’est super pratique pour basculer d’une dispo à l’autre. De plus j’utilise les alias suivant :

alias rmfr="sudo rm /var/lib/xkb/*"                  
alias vimfr="sudo vim /usr/share/X11/xkb/symbols/fr" 
alias lessfr=" less /usr/include/X11/keysymdef.h "   
alias compfr="xkbcomp /usr/share/X11/xkb/symbols/fr" 

De manière à tester rapidement mes modifications. Et enfin j’ai la ligne suivante dans mon .bashrc

setxkbmap -layout "fr(bepo)"            

Comme cela, dès que je lance une console (soit une fois toutes les dix minutes, i3 powa ( ¬‿¬) j’actualise mon keymap.
Une partie de ces astuces sont présentes dans le wiki, dans la section « truc et astuces ».

Hors ligne

#10 22/6/2013 01:25:27

Fauve
Membres
Inscription : 16/8/2011
Messages : 25

Re : [Résolu]Commande pour commuter entre deux dispositions

Laurent a écrit :

Du coup, la bonne commande serait plutôt :

setxkbmap -layout fr,ara -variant bepo,bepo-arab_MA_ary -option grp:shifts_toggle

C’est ce que je chérchaiiiiiiiis big_smile

Cependant (ben oui, parce que sinon ce serait trop facile), il y’aurait encore quelque détails à régler. Dans mon ancienne conf pour bépo j’ai « setxkbmap -symbols 'pc+fr(bepo)+capslock(swapescape)+compose(menu)+terminate(ctrl_alt_bksp)'" » qui fait en sorte que :

  • Le verrouillage majuscule et la touche échap soient permutés ;

  • La touche compose soit mappée sur la touche menu ;

  • Le raccourcis Ctrl-alt-baksp tue la console graphique en cours

J’ai, pour cela, tenté plusieurs variantes du paramettre « -symbols 'pc+fr(bepo)+capslock(swapescape)+compose(menu)+terminate(ctrl_alt_bksp)'" » ajouter en fin de la commande que tu as proposé sans sucés. Comment donc garder les trois comportements sus-cités avec cette nouvelle commande ?

Par ailleurs, je souhaite pouvoir commuter à l’aide du raccourcis Ctrl-Éspace plutôt que Shift². J’ai essayer pour ce fait le paramètre « -option grp:ctrl_space_toggle » sans sucés…

’Zauriez pas des idées là dessus ?

En tout cas, merci déjà pour le début de solution que vous m’avez donnez.


weechat, i3, mutt, vimperator, gentoo, bépo, zsh, tmux, urxvt, cmus, zathura

Hors ligne

#11 22/6/2013 02:09:28

rat bière sé
Le vilain admin
Inscription : 15/3/2012
Messages : 809

Re : [Résolu]Commande pour commuter entre deux dispositions

En faisant une petite recherche rapide, capslock(swapescape) compose(menu) et terminate(ctrl_alt_bksp) sont à utiliser avec -option aussi, pas avec -symbols

ÀMA “toggle” c'est pour les deux touches identiques pressées en même temps (ctrl, meta, alt et shift), si tu mets “ctrl_space” ça devrait suffir, non ?


Cette commande devrait marcher (j'ai pas testé)

setxkbmap -layout fr,ara -variant bepo,bepo-arab_MA_ary -option grp:ctrl_space capslock:swapescape compose:menu terminate:ctrl_alt_bksp

Edit : cette commande ne marche pas sauf compose (et pas testé terminate)

Dernière modification par rat bière sé (22/6/2013 02:22:54)


GNU/Linux depuis 2/2012 : Ubuntu→ Xubuntu 4/12→ Debian (Xfce) 10/12 + Cubian 10/13
BOINC (World Community Grid) depuis 4/11 - BÉPO depuis 3/12 - Vapoteur depuis 10/13
Claviers Cherry G80-3000 (MXClear), TIPRO MID KM128A (MXBlack) Noppo MID 87 ANSI (MXRed)
Kensington Orbit trackball (à gauche), Wacom Intuos3 A4

Hors ligne

#12 22/6/2013 02:30:12

robin_moussu
Membres
Inscription : 17/3/2013
Messages : 292

Re : [Résolu]Commande pour commuter entre deux dispositions

pas le temps de le faire ce soir, mais en modifiant directement le fichier xkb je sais le faire. Donc si tu trouve pas avec set xkbmap, je pourrais toujours te donner une autre solution.

Hors ligne

#13 22/6/2013 02:40:18

rat bière sé
Le vilain admin
Inscription : 15/3/2012
Messages : 809

Re : [Résolu]Commande pour commuter entre deux dispositions

c'est faisable vu que Fauve a déjà une précédente config qui le faisait, c'est juste la syntaxe qui a changée :  capslock(swapescape) ⇒ caps:swapescape (testé et adopté)


GNU/Linux depuis 2/2012 : Ubuntu→ Xubuntu 4/12→ Debian (Xfce) 10/12 + Cubian 10/13
BOINC (World Community Grid) depuis 4/11 - BÉPO depuis 3/12 - Vapoteur depuis 10/13
Claviers Cherry G80-3000 (MXClear), TIPRO MID KM128A (MXBlack) Noppo MID 87 ANSI (MXRed)
Kensington Orbit trackball (à gauche), Wacom Intuos3 A4

Hors ligne

#14 22/6/2013 02:46:56

robin_moussu
Membres
Inscription : 17/3/2013
Messages : 292

Re : [Résolu]Commande pour commuter entre deux dispositions

Un peu hors sujet, mais par hasard, est ce que quelqu’un a trouvé le moyen de faire des accord avec xkb ? Genre « e » et « t » en même temps produit « et », ou encore « s »« u » et « r » en même temps donne « sur ».

Hors ligne

#15 22/6/2013 03:13:00

rat bière sé
Le vilain admin
Inscription : 15/3/2012
Messages : 809

Re : [Résolu]Commande pour commuter entre deux dispositions

ça c'est pas plus de l'ordre de Compose ?

J'ai trouvé ceci qui indique où sont listées les options de setxkbmap http://betabug.ch/blogs/ch-athens/1242
En fait il n'y a que alt+space qui est disponible dans ton idée :

/usr/share/X11/xkb/rules/base.lst a écrit :


! option
  grp                  Key(s) to change layout
  grp:switch           Right Alt (while pressed)
  grp:lswitch          Left Alt (while pressed)
  grp:lwin_switch      Left Win (while pressed)
  grp:rwin_switch      Right Win (while pressed)
  grp:win_switch       Any Win key (while pressed)
  grp:caps_switch      Caps Lock (while pressed), Alt+Caps Lock does the original capslock action
  grp:rctrl_switch     Right Ctrl (while pressed)
  grp:toggle           Right Alt
  grp:lalt_toggle      Left Alt
  grp:caps_toggle      Caps Lock
  grp:shift_caps_toggle Shift+Caps Lock
  grp:shift_caps_switch Caps Lock (to first layout), Shift+Caps Lock (to last layout)
  grp:win_menu_switch  Left Win (to first layout), Right Win/Menu (to last layout)
  grp:lctrl_rctrl_switch Left Ctrl (to first layout), Right Ctrl (to last layout)
  grp:alt_caps_toggle  Alt+Caps Lock
  grp:shifts_toggle    Both Shift keys together
  grp:alts_toggle      Both Alt keys together
  grp:ctrls_toggle     Both Ctrl keys together
  grp:ctrl_shift_toggle Ctrl+Shift
  grp:lctrl_lshift_toggle Left Ctrl+Left Shift
  grp:rctrl_rshift_toggle Right Ctrl+Right Shift
  grp:ctrl_alt_toggle  Alt+Ctrl
  grp:alt_shift_toggle Alt+Shift
  grp:lalt_lshift_toggle Left Alt+Left Shift
  grp:alt_space_toggle Alt+Space
  grp:menu_toggle      Menu
  grp:lwin_toggle      Left Win
  grp:rwin_toggle      Right Win
  grp:lshift_toggle    Left Shift
  grp:rshift_toggle    Right Shift
  grp:lctrl_toggle     Left Ctrl
  grp:rctrl_toggle     Right Ctrl
  grp:sclk_toggle      Scroll Lock
  grp:lctrl_lwin_rctrl_menu LeftCtrl+LeftWin (to first layout), RightCtrl+Menu (to second layout)
  lv3                  Key to choose 3rd level


du coup ceci marche, avec alt+space au lieu de ctrl+space

setxkbmap -layout fr,ara -variant bepo,bepo-arab_MA_ary -option grp:alt_space_toggle caps:swapescape compose:menu terminate:ctrl_alt_bksp

Dernière modification par rat bière sé (22/6/2013 03:22:06)


GNU/Linux depuis 2/2012 : Ubuntu→ Xubuntu 4/12→ Debian (Xfce) 10/12 + Cubian 10/13
BOINC (World Community Grid) depuis 4/11 - BÉPO depuis 3/12 - Vapoteur depuis 10/13
Claviers Cherry G80-3000 (MXClear), TIPRO MID KM128A (MXBlack) Noppo MID 87 ANSI (MXRed)
Kensington Orbit trackball (à gauche), Wacom Intuos3 A4

Hors ligne

#16 22/6/2013 03:20:55

robin_moussu
Membres
Inscription : 17/3/2013
Messages : 292

Re : [Résolu]Commande pour commuter entre deux dispositions

Si j’ai bien compris (et c’est comme ça que j’utilise compose), c’est une touche après l’autre. Ce que je voudrais c’est plusieurs touches à la fois.

Hors ligne

#17 22/6/2013 13:43:38

Fauve
Membres
Inscription : 16/8/2011
Messages : 25

Re : [Résolu]Commande pour commuter entre deux dispositions

XavierC a écrit :

du coup ceci marche, avec alt+space au lieu de ctrl+space

setxkbmap -layout fr,ara -variant bepo,bepo-arab_MA_ary -option grp:alt_space_toggle caps:swapescape compose:menu terminate:ctrl_alt_bksp

Genial, merci big_smile C’était donc ctrl_space_swapp qui faisait merder toute la ligne.
Je ne pourrais pas opter pour Alt-Éspace quoique ce soit la possibilité qui se rapproche le plus de mon souhait car ce raccourcis est déjà affecté au lanceur d’application (dmenu). Dans la liste, le raccourcis qui me convient le mieux et pour lequel j’opte finalement est Shift+Ctrl.

Donc, ma configuration finale est la suivante :

setxkbmap -layout fr,ara -variant bepo,bepo-arab_MA_ary -option caps:swapescape compose:menu terminate:ctrl_alt_bksp grp:ctrl_shift_toggle

Encore merci à tous c’est (presque) parfait !


weechat, i3, mutt, vimperator, gentoo, bépo, zsh, tmux, urxvt, cmus, zathura

Hors ligne

#18 25/6/2013 23:03:31

Laurent
Membres
Inscription : 9/8/2009
Messages : 711
Site Web

Re : [Résolu]Commande pour commuter entre deux dispositions

Une possibilité qui ne va peut-être pas intéresser Fauve, s’il bascule souvent entre ses dispositions, mais qui va peut-être intéresser d’autres personnes : dédier Arrêt défil et sa led au changement de disposition. Vu où elle est généralement placée, ce n’est pas trop la touche qu’on heurte par erreur et franchement, quelle est la dernière fois qu’elle vous a été utile sous Linux ?

En ligne de commande :

setxkbmap fr,fr bepo,oss grp:sclk_toggle,grp_led:scroll

Soit dans le fichier de configuration :

Section "InputClass"
        Identifier "evdev keyboard catchall"
        MatchIsKeyboard "on"
        MatchDevicePath "/dev/input/event*"
        Driver "evdev"
        Option "XkbLayout" "fr,fr"
        Option "XkbVariant" "bepo,oss"
        Option "XkbOptions" "terminate:ctrl_alt_bksp,grp:sclk_toggle,grp_led:scroll"
EndSection

Dernière modification par Laurent (25/6/2013 23:41:20)

Hors ligne

Pied de page des forums