#+TITLE: Configuration du clavier
#+AUTHOR: Jean-Chistophe JAMEUX BERTHE
#+DESCRIPTION: Raccourci divers pour le confort d’utilisation du clavier
#+PROPERTY: header-args :tangle no :results silent

* Paramètres KMonad
** Nom des touches pour l’option de setxkbmap :
| compose:ralt        | Right Alt                  |
| compose:lwin        | Left Win                   |
| compose:lwin-altgr  | 3rd level of Left Win      |
| compose:rwin        | Right Win                  |
| compose:rwin-altgr  | 3rd level of Right Win     |
| compose:menu        | Menu (compose in KMonad)   |
| compose:menu-altgr  | 3rd level of Menu          |
| compose:lctrl       | Left Ctrl                  |
| compose:lctrl-altgr | 3rd level of Left Ctrl     |
| compose:rctrl       | Right Ctrl                 |
| compose:rctrl-altgr | 3rd level of Right Ctrl    |
| compose:caps        | Caps Lock                  |
| compose:caps-altgr  | 3rd level of Caps Lock     |
| compose:102         | The "< >" key              |
| compose:102-altgr   | 3rd level of the "< >" key |
| compose:paus        | Pause                      |
| compose:ins         | Insert                     |
| compose:prsc        | PrtSc                      |
** Initialisation
~cmp-seq-delay 5~ permet d’avoir 5ms de délai entre chaque suite de pression d’une compose-key.
La commande ~sudo libinput list-devices~ permet de lister les périphériques.
*** Clavier portable intégré
#+begin_src lisp :noweb yes :tangle home/.config/clavier.kbd
(defcfg
  input (device-file
         "/dev/input/by-path/platform-i8042-serio-0-event-kbd")
  output (uinput-sink
          "Sortie Kmonad principale"
          "sleep 1 && setxkbmap -option compose:paus")
  cmp-seq pause
  cmp-seq-delay 5
  fallthrough true
  allow-cmd true)
<<config>>
#+end_src
*** Clavier Casa Keys
#+begin_src bash :tangle home/.local/bin/clavier-casa-keys
#!/bin/bash
ADDR_CLAVIER=$(lsinput | grep -B 5 -m 1 "Casa Keys" | grep -m 1 "")
kmonad <(sed "s,ADDR_CLAVIER,$ADDR_CLAVIER," $HOME/.config/clavier-casa-keys.kbd)
#+end_src

#+begin_src lisp :noweb yes :tangle home/.config/clavier-casa-keys.kbd
(defcfg
  input (device-file "ADDR_CLAVIER")
  output (uinput-sink
          "Sortie Kmonad Casa Keys"
          "/usr/bin/sleep 1 && /usr/bin/setxkbmap -option compose:paus")
  cmp-seq pause
  cmp-seq-delay 5
  fallthrough true
  allow-cmd true)
<<config>>
#+end_src
*** Clavier MX Keys
#+begin_src bash :tangle home/.local/bin/clavier-mx-keys
#!/bin/bash
ADDR_CLAVIER=$(lsinput | grep -B 5 -m 1 "MX Keys Mini Keyboard" | grep -m 1 "")
kmonad <(sed "s,ADDR_CLAVIER,$ADDR_CLAVIER," $HOME/.config/clavier-mx-keys.kbd)
#+end_src

#+begin_src lisp :noweb yes :tangle home/.config/clavier-mx-keys.kbd
(defcfg
  input (device-file "ADDR_CLAVIER")
  output (uinput-sink
          "Sortie Kmonad MX Keys"
          "/usr/bin/sleep 1 && /usr/bin/setxkbmap -option compose:paus")
  cmp-seq pause
  cmp-seq-delay 5
  fallthrough true
  allow-cmd true)
<<config>>
#+end_src
* Alias
  s (tap-hold-next-release 300 s (layer-toggle nombres))
  a (tap-hold-next-release 300 a (layer-toggle navigation))
  nav (layer-add navigation)
  unv (layer-rem navigation)
  nbr (layer-add nombres)
  unb (layer-rem nombres)
#+begin_src lisp :noweb-ref config
(defalias
  j (tap-hold-next-release 300 j rsft)
  f (tap-hold-next-release 300 f lsft)
  d (tap-hold-next-release 300 d lctl)
  k (tap-hold-next-release 300 k lctl)
  s (tap-hold-next-release 300 s lalt)
  l (tap-hold-next-release 300 l lalt)
  a (tap-hold-next-release 300 a ralt)
  cps (tap-hold-next-release 300 caps lmet)
  pv (tap-hold-next-release 300 ; ralt)
  gll (tap-hold-next-release 300 ' lmet)
  g (tap-hold-next-release 300 g lmet)
  h (tap-hold-next-release 300 h lmet)
  spc (tap-hold-next-release 300 spc (layer-toggle slayer))
  fin #(ralt spc)
)
#+end_src
* Disposition de base
#+begin_src lisp :noweb-ref config
(defsrc
  esc   f1   f2   f3   f4   f5   f6   f7   f8   f9   f10  f11  f12  ins prnt del
  grv   1    2    3    4    5    6    7    8    9    0    -    =    bspc
  tab   q    w    e    r    t    y    u    i    o    p    [    ]    ret
  caps  a    s    d    f    g    h    j    k    l    ;    '    \
  lsft 102d  z    x    c    v    b    n    m    ,    .    /    rsft
  lctl lmet lalt            spc                 ralt rctl left up down right)
#+end_src

(deflayer
  _    _    _    _    _    _    _    _    _    _    _    _    _    _    _    _
  _    _    _    _    _    _    _    _    _    _    _    _    _    _
  _    _    _    _    _    _    _    _    _    _    _    _    _    _
  _    _    _    _    _    _    _    _    _    _    _    _    _
  _    _    _    _    _    _    _    _    _    _    _    _    _
  _    _    _              _                   _    _    _    _  _    _
)
* Disposition principale
#+begin_src lisp :noweb-ref config
(deflayer main
  esc  f1   f2   f3   f4   f5   f6   f7   f8   f9   f10  f11  f12  ins prnt del
  grv  1    2    3    4    5    6    7    8    9    0    -    =    bspc
  tab  q    w    e    r    t    y    u    i    o    p    [    ]    ret
  @cps @a   @s   @d   @f   @g   @h   @j   @k   @l   @pv  @gll \
  lsft 102d z    x    c    v    b    n    m    ,    .   /    rsft
  lctl lmet lalt           @spc                ralt rctl left up down right)
#+end_src
* Disposition sous l’espace
#+begin_src lisp :noweb-ref config
(deflayer slayer
  _    _    _    _    _    _    _    _    _    _    _    _    _    _    _    _
  _    _    _    _    _    _    _    _    pgup _    _    _    _    _
  esc  S-5  S-6  S-7  S-8  S-9  _    _    up   _    _    _    _    _
  S-0  S-1  S-2  S-3  S-4  _    home left down rght rght end  _
  _    _    _    _    _    _    _    _    pgdn pgdn _    _    _
  _    _    _              _                   _    _    _    _  _    _
)
#+end_src