Clavier

De Banane Atomic
Version datée du 31 décembre 2017 à 13:55 par Nicolas (discussion | contributions) (→‎Xbindkeys)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigationAller à la recherche

azerty vs querty

Azerty-qwerty.jpg

fr-latin9 (ISO 8859-15)

Fr-latin9.png

fr-latin1 (ISO 8859-1) vs fr-latin9 (ISO 8859-15)

Position 0xA4 0xA6 0xA8 0xB4 0xB8 0xBC 0xBD 0xBE
8859-1 ¤ ¦ ¨ ´ ¸ ¼ ½ ¾
8859-15 Š š Ž ž Œ œ Ÿ

fr-oss

Fr-oss.png

bépo

Bépo.png

Changer de configuration de clavier

Changez l'affectation des touches clavier pour Xorg

Mapping des keycodes: /usr/share/X11/xkb/keycodes/evdev Keycodes.png

Les noms des keysyms se trouvent dans /usr/include/X11/keysymdef.h, elles peuvent être facilement trouvées grâce à leurs codes unicode.

Ajouter une variante à un clavier existant

Ajoute une variante fr_nonum au clavier ch:

/usr/share/X11/xkb/symbols/ch
// ajouter à la fin du fichier
partial alphanumeric_keys
xkb_symbols "fr_nonum" {
    // modify the basic Swiss French layout
    include "ch(fr)"
    name[Group1]= "French (Switzerland, NoNum)";

    key <TLDE> { [ asciitilde,  degree,		section,	ellipsis ] };
 
    // remap 1 + | to ÷ ± | ¹
    key <AE01> { [ division,    plusminus,  	brokenbar,      onesuperior ] };
    key <AE02> { [ quotedbl,    at,         	at,             twosuperior ] };
    key <AE03> { [ numbersign,  star,       	numbersign,     threesuperior ] };
    key <AE04> { [ ccedilla,    Ccedilla,   	onequarter,     threequarters ] };
    key <AE05> { [ percent,     permille,    	fiveeighths,    fiveeighths ] };
    key <AE06> { [ ampersand,   bar,		notsign,        threequarters ] };
    key <AE07> { [ backslash,   slash,      	bar,            seveneighths ] };
    key <AE08> { [ parenleft,   bracketleft,	braceleft ] };
    key <AE09> { [ parenright,  bracketright,	braceright ] };
    key <AE10> { [ equal,       notequal,   	approxeq ] };
 
    key <AD07> { [ u,		U,		ugrave,		Ugrave ] };
    key <AD08> { [ i,		I,		infinity ] };
    key <AD11> { [ egrave,	Egrave ] };
    key <AD12> { [ exclam,	dead_diaeresis,	bracketright,	exclamdown ] };
 
    key <AC10> { [ eacute,	Eacute ] };
    key <AC11> { [ agrave,	Agrave ] };
 
    key <AB01> { [ y,		Y,		guillemotleft,	lessthanequal ] };
    key <AB02> { [ x,		X,		guillemotright,	greaterthanequal ] };
    key <AB03> { [ c,		C,		copyright ] };
 
    key <AB08> { [ coma,        semicolon,	leftarrow ] };
    key <AB09> { [ period,      colon,		downarrow,	uparrow ] };
    key <AB10> { [ underbar,    rightarrow,	implies,	ellipsis ] };
};
  • Le symbole ‰ permille U+2030 ne fonctionne pas.
  • Le symbole … ellipsis U+2026 ne fonctionne pas.
  • Le symbole ⁿ U+207F n'existe pas.

Rendre cette variante disponible dans la sélection des claviers

/usr/share/X11/xkb/rules/evdev.xml
<layout>
    <configItem>
        <name>ch</name>
    </configItem>
    <variantList>
	<variant>
	    <configItem>
		<name>fr_nonum</name>
		<description>French (Switzerland, NoNum)</description>
	    </configItem>
	</variant>
    </variantList>
</layout>

Configurer Xorg pour utiliser cette variante

/etc/X11/xorg.conf.d/20-keyboard-layout.conf
Section "InputClass"
	Identifier "evdev keyboard catchall"
	MatchIsKeyboard "on"
	MatchDevicePath "/dev/input/event*"
	Driver "evdev"
	Option "XkbModel" "pc105"
	Option "XkbLayout" "ch"
	Option "XkbVariant" "fr_nonum"
EndSection

Éviter que les fichiers ne soient écrasés par une mise à jour

Bash.svg
sudo mkdir /usr/share/X11/xkb/custom

sudo cp /usr/share/X11/xkb/rules/evdev.xml /usr/share/X11/xkb/custom/evdev.xml
sudo rm /usr/share/X11/xkb/rules/evdev.xml
sudo ln -s /usr/share/X11/xkb/custom/evdev.xml /usr/share/X11/xkb/rules/evdev.xml

sudo cp /usr/share/X11/xkb/symbols/ch /usr/share/X11/xkb/custom/ch
sudo rm /usr/share/X11/xkb/symbols/ch
sudo ln -s /usr/share/X11/xkb/custom/ch /usr/share/X11/xkb/symbols/ch

Ainsi lors d'une mise à jour, seuls les liens symboliques seront écrasés, il suffira de les recréer.

remap.sh
rm -f /usr/share/X11/xkb/rules/evdev.xml.bak
mv /usr/share/X11/xkb/rules/evdev.xml /usr/share/X11/xkb/rules/evdev.xml.bak
ln -s /usr/share/X11/xkb/custom/evdev.xml /usr/share/X11/xkb/rules/evdev.xml

rm -f /usr/share/X11/xkb/symbols/ch.bak
mv /usr/share/X11/xkb/symbols/ch /usr/share/X11/xkb/symbols/ch.bak
ln -s /usr/share/X11/xkb/custom/ch /usr/share/X11/xkb/symbols/ch
Bash.svg
sudo meld /usr/share/X11/xkb/custom/evdev.xml /usr/share/X11/xkb/rules/evdev.xml.bak
sudo meld /usr/share/X11/xkb/custom/ch /usr/share/X11/xkb/symbols/ch.bak

An Unreliable Guide to XKB Configuration

xkbcomp

Bash.svg
# générer le fichier .Xkeymap qui contient la configuration clavier actuelle
xkbcomp $DISPLAY ~/.Xkeymap
~/.Xkeymap
# remappe la touche 1 + | → + 1|
# <AE01> = 10;
key <AE01> {
    type= "FOUR_LEVEL",
    # symbols[Group1]= [               1,            plus,             bar,      exclamdown ]
    symbols[Group1]= [               plus,            1,             bar,      exclamdown ]
};

# remappe la touche § °
# <TLDE> = 49;
key <TLDE> {
    type= "FOUR_LEVEL",
    # symbols[Group1]= [         section,          degree,         notsign,         notsign ]
    symbols[Group1]= [          degree,         onehalf,      onequarter,   threequarters ]
};

Obtenir le code d'une touche

Utiliser xev:
Touche q → keycode 24 → <AD01> = 24; dans .Xkeymap

KeyPress event, serial 36, synthetic NO, window 0x2e00001,
    root 0x29f, subw 0x0, time 2945542, (656,359), root:(657,437),
    state 0x10, keycode 24 (keysym 0x71, q), same_screen YES,
    XLookupString gives 1 bytes: (71) "q"
    XmbLookupString gives 1 bytes: (71) "q"
    XFilterEvent returns: False

Exécuter xkbcomp au lancement de Xorg

~/.xinitrc
test -f ~/.Xkeymap && xkbcomp ~/.Xkeymap $DISPLAY

Xmodmap

Xmodmap (en) permet de modifier la disposition du clavier.

Bash.svg
# liste de l'affectation actuelle des touches
xmodmap -pke

# connaître le code des touches pressées
xev | sed -n 's/.*keycode *\([0-9]\+\)[^,]*, \([^)]\+\)).*$/keycode \1, keysym \2/p'

Le fichier ~/.Xmodmap contient la liste des réaffectations de touches à réaliser:

~/.Xmodmap
# code clavier 24
# normal | Maj | mode_switch | mode_switch + Maj | AltGr | AltGr + Maj | AltGr + mode_switch | AltGr + mode_switch + Maj
keycode   9 = Escape NoSymbol Escape
keycode  24 = a A a A acircumflex adiaeresis ae AE q Q
Gnome detecte automatiquement le fichier ~/.Xmodmap et demande s'il doit l'utiliser.

Xbindkeys

Permet d'associer un bouton à une commande ou de remapper un raccourci.

Changez l'affectation des touches clavier dans la console

Bash.svg
# création du dossier
sudo mkdir -p /usr/local/share/kbd/keymaps

# copie d'un keymap existant pour modification
sudo gunzip /usr/share/kbd/keymaps/i386/qwertz/fr_CH-latin1.map.gz -c > /usr/local/share/kbd/keymaps/fr_CH-custom.map
Les keymaps système se trouvent dans le dossier /usr/share/kbd/keymaps/
/usr/local/share/kbd/keymaps/fr_CH-nonum.map
# keymaps définit les colonnes des lignes keycode
#  0  none
#  1  Shift
#  2  AltGr
#  3  Shift+AltGr
#  4  Control
#  5  Shift+Control
#  6  AltGr+Control
#  7  Shift+AltGr+Control
#  8  Alt
#  9  Shift+Alt
# 10  AltGr+Alt
# 11  Shift+AltGr+Alt
# 12  Control+Alt
# 13  Shift+Control+Alt
# 14  AltGr+Control+Alt
# 15  Shift+AltGr+Control+Alt
keymaps 0-4,6,8,12
# keycode  XX = none    Shift    AltGr    Shift+AltGr    Control    AltGr+Control    Alt    Control+Alt

include "qwertz-layout"
include "linux-with-alt-and-altgr"
strings as usual

keycode   1 = degree            section
    shift control keycode   1 = ... # Shift + Ctrl
    altgr control keycode   1 = ... # Ctrl + AltGr
    alt           keycode   1 = ... # Alt
keycode   2 = division          plusminus
keycode   3 = quotedbl          at              at		onequarter
keycode   4 = numbersign        asterisk        numbersign
keycode   5 = ccedilla          Ccedilla	nul		onehalf
keycode   6 = percent           permille
keycode   7 = ampersand		ampersand	nul		threequarters
keycode   8 = backslash         slash
keycode   9 = parenleft         parenleft       cent
keycode  10 = parenright		parenright
keycode  11 = equal				equal
keycode  12 = apostrophe        question        dead_acute	questiondown
keycode  13 = dead_circumflex   dead_grave      dead_tilde

keycode  14 = Delete           Delete
	alt     keycode  14 = Meta_Delete
keycode  15 = Tab              Meta_Tab
	alt     keycode  15 = Meta_Tab
    
keycode  19 = +r                +R              registered
keycode  20 = +t                +T              trademark
keycode  22 = +t                +U              ugrave
keycode  24 = +o                +O             	oe		OE
keycode  26 = egrave            Egrave          bracketleft
keycode  27 = exclam            dead_diaeresis  bracketright    exclamdown

keycode  28 = Return
	alt     keycode  28 = Meta_Control_m
keycode  29 = Control

keycode  39 = eacute            Eacute
keycode  40 = agrave            Agrave          braceleft

keycode  41 = section          degree
	control keycode  41 = nul
	alt     keycode  41 = Meta_grave
keycode  42 = Shift
keycode  43 = dollar           sterling         braceright
	control keycode  43 = Control_backslash
	alt     keycode  43 = Meta_backslash

keycode  44 = +y                +Y               guillemotleft
keycode  45 = +x                +X               guillemotright
keycode  46 = +c                +C               copyright		cent
keycode  53 = underscore		minus

keycode  54 = Shift
keycode  56 = Alt
keycode  57 = space            space
	control keycode  57 = nul
	alt     keycode  57 = Meta_space
keycode  58 = Caps_Lock
keycode  86 = less             greater          backslash
	alt     keycode  86 = Meta_less
keycode  97 = Control
# adapted to X11 keymap
altgr keycode  18 = currency
#altgr keycode  46 = cent
Documentation man keymaps
Valeurs non acceptées:
  • oneeighth, threeeighths, fiveeighths, seveneighths
  • notequal, approxeq
  • infinity
  • lessthanequal, greaterthanequal
  • leftdoublequotemark, rightdoublequotemark, leftsinglequotemark, rightsinglequotemark
  • leftarrow, uparrow, rightarrow, downarrow
/etc/vconsole.conf
KEYMAP=/usr/local/share/kbd/keymaps/fr_CH-custom.map

Nom des caractères en anglais

Caractère Nom en français Nom en anglais
: deux points colon
; point-virgule semicolon
. point period, dot
, virgule comma
! point d'exclamation exclamation point, bang
? point d'interrogation question mark
() parenthèses parenthesis
[] crochets square brackets
{} accolades curly braces
" guillemets double quotes
' single quote
` back quote, backtick
# dièse sharp
& éperluette, et commercial ampersand
* étoile asterisk, star
- tiret, moins hyphen, minus, dash
_ tiret du bas underscore
| pipe, vertical bar
° Degree
§ micro, section
£ pounds sterling, pound symbol

XUL Typist

Programme permettant de s'entainer à la saisie clavier.