#+TITLE: Bépo layer
#+HTML_HEAD_EXTRA:
#+CAPTION: logo
[[file:img/bepo.png]]
* Table of Contents :TOC_4_org:noexport:
- [[Description][Description]]
- [[Install][Install]]
- [[Variables][Variables]]
- [[Customization][Customization]]
- [[Mapping][Mapping]]
- [[Configurations][Configurations]]
- [[Keybindings][Keybindings]]
- [[Contributors][Contributors]]
- [[Sources][Sources]]
* Description
This layer changes the key bindings in spacemacs to be compatible with the [[http://bepo.fr/][bepo]]
keyboard layout. =bepo= is a keyboard layout optimized for the French language.
This package first switch traditional ~hjkl~ movement keys with ~ctsr~, and then
try to correct the bugs introduced by these changes in other modes/packages.
[[file:img/keymap.png]]
* Install
To use this configuration layer, add it to your =~/.spacemacs=. You will need to
add =bepo= to the existing =dotspacemacs-configuration-layers= list in this
file.
It is possible to customize the layer via some variables.
** Variables
This layer can be customized with two variables:
- bepo-set-enabled-configurations
- bepo-set-disabled-configurations
The first one is used to set the list of configurations to activate, and the
second one to prevent loading certain configurations. If the
=bepo-set-enabled-configurations= is nil, all configurations are loaded.
Otherwise, only the listed configurations are loaded. Any configuration listed
in =bepo-set-disabled-configurations= will never be loaded, whether it is in the
enabled list or not.
#+begin_src emacs-lisp
(setq-default dotspacemacs-configuration-layers '(
(bepo :variables bepo-set-disabled-configurations '(org magit))))
#+end_src
** Customization
It is possible to override or add bindings by defining in your own layer (or in
the =user-init=) some functions named =bepo/pre-config-= and
=bepo/post-config-=. They are respectively called just before and after
the actual configuration of keybindings. == is the name of the
configuration you want to customize, they are listed under [[Configurations]].
Note: If you define some of these functions in your own layer, be sure that the
=bepo= layer is placed after it in the =dotspacemacs-configuration-layers= list.
* Mapping
The mapping correction is the one proposed for vim on the official bepo [[http://bepo.fr/wiki/Vim#Principe][wiki]].
This layer tries to do the following changes when the following letters are used
for *doing a movement*:
- Map the movements keys under the right hand's fingers:
- ~c → h~
- ~t → j~
- ~s → k~
- ~r → l~
- Map lost functionalities back to some keys:
- ~h → r~
- ~j → t~
- ~k → s~
- ~l → c~
The equivalent remapping is also valid for uppercase letters, or ~CTRL+KEY~ when
they are used to represent a movement, or to keep the mnemonic between the
lower/upper-case consistent.
Some bepo keys are not used in traditional mapping, mainly because they are not
on the =en-us= keyboard layout. They are used as aliases for other shortcuts:
- Map unused ~é~ key as an alias of ~w~, more useful in vim mode:
- ~é → w~
- ~É → W~
- Map indentation on direct-access keys:
- ~» → >~
- ~« → <~
Some default configurations are also not optimal for vim, so the following
defaults are changed:
- Change =evil-escape= escape combination to something faster to type, while
being nearly nonexistent in French or English words:
- ~fd → gq~
- In =avy=, the key used to select words/lines are remapped to the 8 characters
under the fingers:
- ~a u i e t s r n~
- Add ~«~ and ~»~ as operators for =evil-surround=, surrounding text with the
specified symbols.
In some cases the key remapping will not follow these conventions, mainly
because there are better alternatives, or because some moves don't make sense.
#+begin_verse
Example: In the =magit= status buffer, the ~c~ is used for =commit= by default,
but if we want to follow the conventions, it should be remapped to "move left".
As it is not useful to move left on =magit= because operations are done line by
line the ~c~ is not remapped.
#+end_verse
Note: One difference exists with the wiki version: the ~w~ is *not* remapped to
~C-w~ to avoid having to change its meaning in other modes. Spacemacs provides
already a ~SPC w~ key binding for working with windows.
* Configurations
The available configurations are:
- ace-window
- avy
- buffer-move
- comint-mode
- company
- elfeed
- evil
- evil-escape
- evil-surround
- evil-evilified-state
- evil-window
- eyebrowse
- flycheck-error-list
- helm
- helm-buffers
- helm-files
- helm-locate
- ivy
- magit
- neotree
- org
- ranger
- spacemacs
* Keybindings
This layer is using functions that /automatically/ remap keybindings in a lot of
modes, so it's difficult to list all the keybindings changes.
- You chose to use a different keyboard layout.
- You chose to use the dark side by using evil (because they have :cookie: obviously).
- You chose to use a layer trying to solve the induced mess.
- The price you have to pay is the absence of a keybindings list.
* Contributors
- Fabien Dubosson
* Sources
The bepo logo and the keymap image come from the [[http://bepo.fr/][bepo]] official website. They are
licensed under the [[http://creativecommons.org/licenses/by-sa/3.0/deed.en][CC-BY-SA]].