ajout kanata pour ergo-l

main
Gil Portenseigne 2026-07-21 08:46:25 +02:00
parent 721eec0498
commit eb999bb3eb
29 changed files with 1316 additions and 0 deletions

View File

@ -0,0 +1,186 @@
Arsenik Kanata
================================================================================
Installation
--------------------------------------------------------------------------------
- To get Arsenik, check out this repository with Git or
[download it][Download Arsenik].
- Launch `kanata.kbd` with Kanata.
- You can install Kanata by downloading a
[pre-built executable][Download Kanata].
- Follow the installation details of your operating system.
<details>
<summary>Windows</summary>
Windows users might prefer to download the `kanata_winIOv2.exe` version as it
fixes some weird bugs like <kbd>C</kbd> and <kbd>V</kbd> inversion.
*Note: This tip has been tested for version 1.6.1 of Kanata. In later versions the
`winIOv2` version might be the default.*
Put the `kanata_winIOv2.exe` in the Kanata Arsenik folder, run it and youre
good to go!
</details>
<details>
<summary>Linux</summary>
### Run Kanata without <code>sudo</code>
kanata needs to intercept `uinput` signals, which it cannot do without the
proper authorisations.
If you dont want to run `kanata` with `sudo`, youll need to allow Kanata to
read from `uinput`. This requires the users to be part of both `input` and
`uinput` groups.
For that, you first need to create a `uinput` group if it doesnt exist yet:
```bash
sudo groupadd -U $USERNAME uinput
```
where `$USERNAME` is the target user (or users in a comma-separated list). Then
add the target user (or users) to the group input:
```bash
sudo usermod -aG input $USERNAME
```
You can check after re-logging that both groups appear in the result of the
`groups` command launched as the target user.
Finally, you need to add a udev rule in `/etc/udev/rules.d/50-kanata.rules`:
```udev
KERNEL=="uinput", MODE="0660", GROUP="uinput", OPTIONS+="static_node=uinput"
```
### Making a user-side <code>systemd</code> service for Kanata
Note: This only works if `kanata` is able to run without `sudo` (and is using
`systemd`).
Using a `systemd service` allows running `kanata` as a daemon, possibly right
after logging in. Here is a template for a service file:
```
[Unit]
Description=Kanata keyboard remapper
Documentation=https://github.com/jtroo/kanata
[Service]
Environment=PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/bin
Environment=DISPLAY=:0
Environment=HOME=/path/to/home/folder
Type=simple
ExecStart=/usr/local/bin/kanata --cfg /path/to/kanata/config/file
Restart=no
[Install]
WantedBy=default.target
```
Copy-paste it into `~/.config/systemd/user/kanata.service`, fill in the
placeholders, then run one of the following commands:
- `systemctl --user start kanata.service` to manually start `kanata`
- `systemctl --user enable kanata.service` so `kanata` may autostart whenever
the current user logs in
- `systemctl --user status kanata.service` to check if `kanata` is running
</details>
<details>
<summary> macOS</summary>
### Karabiner DriverKit installation
Install the [Karabiner-DriverKit-VirtualHIDDevice](https://github.com/pqrs-org/Karabiner-DriverKit-VirtualHIDDevice/releases/tag/v4.3.0). Latest version (v5.0.0) is not working with Kanata.
To activate it:
```
/Applications/.Karabiner-VirtualHIDDevice-Manager.app/Contents/MacOS/Karabiner-VirtualHIDDevice-Manager activate
```
You may have to allow Kanata execution in the Privacy & Security panel from macOS settings.
As root, add the following content in `/Library/LaunchDaemons/org.pqrs.service.daemon.Karabiner-VirtualHIDDevice-Daemon.plist` file:
```
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>org.pqrs.service.daemon.Karabiner-VirtualHIDDevice-Daemon</string>
<key>KeepAlive</key>
<true/>
<key>ProcessType</key>
<string>Interactive</string>
<key>ProgramArguments</key>
<array>
<string>/Library/Application Support/org.pqrs/Karabiner-DriverKit-VirtualHIDDevice/Applications/Karabiner-VirtualHIDDevice-Daemon.app/Contents/MacOS/Karabiner-VirtualHIDDevice-Daemon</string>
</array>
</dict>
</plist>
```
A new item *Fumihiko Takayama* will be added in System Settings > Login Items.
Two Karabiner processes should be started:
```
sh-3.2# ps aux | grep -i karabiner | grep -v grep
_driverkit 26050 0.0 0.0 410598064 2256 ?? Ss 8:02PM 0:00.04 /Library/SystemExtensions/.../org.pqrs.Karabiner-DriverKit-VirtualHIDDevice.dext/org.pqrs.Karabiner-DriverKit-VirtualHIDDevice org.pqrs.Karabiner-DriverKit-VirtualHIDDevice 0x10002b929 org.pqrs.Karabiner-DriverKit-VirtualHIDDevice
root 25744 0.0 0.1 410756464 9872 ?? Ss 8:01PM 0:00.16 /Library/Application Support/org.pqrs/Karabiner-DriverKit-VirtualHIDDevice/Applications/Karabiner-VirtualHIDDevice-Daemon.app/Contents/MacOS/Karabiner-VirtualHIDDevice-Daemon
```
### Kanata installation
Download Kanata [here](https://github.com/jtroo/kanata/releases/tag/v1.7.0) and save it in a persistent directory.
Add a sudo rule in `/private/etc/sudoers.d/kanata` where `$USERNAME` is your username:
```
$USERNAME ALL=(ALL) NOPASSWD: /path/to/kanata/binary/kanata
```
To start Kanata at the beginning of the session, add a property list file in `~/Library/LaunchAgents/com.jtroo.kanata.plist` with the following content:
```
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.jtroo.kanata</string>
<key>ProgramArguments</key>
<array>
<string>sudo</string>
<string>/path/to/kanata/binary/kanata</string>
<string>--cfg</string>
<string>/path/to/kanata/config/file</string>
<string>-n</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
```
In system settings, search Login Items menu and select `sudo` service in *Allow in the Background* list.
You can restart Kanata with new configuration by disabling and enabling this service.
</details>
[Download Arsenik]: https://github.com/OneDeadKey/arsenik/releases
[Download Kanata]: https://github.com/jtroo/kanata/releases

View File

@ -0,0 +1,88 @@
;; Azerty Windows/Linux aliases
;; Works with AZERTY-fr. Needs a couple tweaks for the Belgian and Mac variants.
;; Navigation layer
(defalias
all C-q
sav C-s
cls C-z
ndo C-w
cut C-x
cpy C-c
pst C-v
0 S-0
1 S-1
2 S-2
3 S-3
4 S-4
5 S-5
6 S-6
7 S-7
8 S-8
9 S-9
, m
. S-,
)
;; Symbols layer
(defalias
^ (macro [ spc)
< <
> S-<
$ ]
% S-'
@ AG-0
& 1
* \
' 4
` (macro AG-7 spc)
{ AG-4
pl 5
pr -
} AG-=
= =
\ AG-8
+ S-=
- 6
/ S-.
'' 3
~ (macro AG-2 spc)
[ AG-5
] AG--
_ 8
# AG-3
| AG-6
! /
; ,
: .
? S-m
)
;; NumRow layer
(defalias
s0 0
s1 1
s2 2
s3 3
s4 4
s5 5
s6 6
s7 7
s8 8
s9 9
nbs (unicode ) ;; narrow non-break space
dk1 XX
dk2 XX
dk3 XX
dk4 XX
dk5 XX
)
;; vim: set ft=lisp:

View File

@ -0,0 +1,87 @@
;; Bépo Windows/Linux aliases
;; Navigation layer
(defalias
all C-a
sav C-k
cls C-]
ndo C-[
cut C-c
cpy C-h
pst C-u
0 S-0
1 S-1
2 S-2
3 S-3
4 S-4
5 S-5
6 S-6
7 S-7
8 S-8
9 S-9
, g
. v
)
;; Symbols layer
(defalias
^ AG-6
< AG-2
> AG-3
$ `
% =
@ 6
& AG-e
* 0
' AG-g
` S-=
{ AG-x
pl 4
pr 5
} AG-c
= -
\ AG-z
+ 7
- 8
/ AG-<
'' 1
~ AG-b
[ AG-4
] AG-5
_ AG-spc
# S-`
| AG-q
! S-y
; S-g
: S-v
? S-n
)
;; NumRow layer
(defalias
s0 0
s1 1
s2 2
s3 3
s4 4
s5 5
s6 6
s7 7
s8 8
s9 9
nbs S-spc ;; narrow no-break space
dk1 XX
dk2 XX
dk3 XX
dk4 XX
dk5 XX
)
;; vim: set ft=lisp:

View File

@ -0,0 +1,89 @@
;; ErgoL Windows/Linux aliases
;; Navigation layer
(defalias
all C-a
sav C-s
cls C-t
ndo C-z
cut C-x
cpy C-w
pst C-v
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
, .
. n
)
;; Symbols layer
(defalias
^ AG-q
< AG-w
> AG-e
$ AG-r
% AG-t
@ AG-y
& AG-u
* AG-i
' AG-o
` AG-p
{ AG-a
pl AG-s
pr AG-d
} AG-f
= AG-g
\ AG-h
+ AG-j
- AG-k
/ AG-l
'' AG-;
~ AG-z
[ AG-x
] AG-c
_ AG-v
# AG-b
| AG-n
! AG-m
; AG-,
: AG-.
? AG-/
)
;; NumRow layer
(defalias
s0 S-0
s1 S-1
s2 S-2
s3 S-3
s4 S-4
s5 S-5
s6 S-6
s7 S-7
s8 S-8
s9 S-9
nbs S-spc ;; narrow no-break space
1dk o
;; digits must be escaped, otherwise theyre interpreted as delays in ms
dk1 (macro @1dk @1)
dk2 (macro @1dk @2)
dk3 (macro @1dk @3)
dk4 (macro @1dk @4)
dk5 (macro @1dk @5)
)
;; vim: set ft=lisp:

View File

@ -0,0 +1,87 @@
;; Optimot Windows/Linux aliases
;; Navigation layer
(defalias
all C-a
sav C-k
cls C-v
ndo C-]
cut C-[
cpy C-m
pst C-/
0 S-0
1 S-1
2 S-2
3 S-3
4 S-4
5 S-5
6 S-6
7 S-7
8 S-8
9 S-9
, g
. c
)
;; Symbols layer
(defalias
^ (macro ' spc)
< AG-q
> AG-w
$ `
% S-=
@ -
& AG-j
* 6
' o
` AG-h
{ AG-u
pl 9
pr 0
} AG-i
= 8
\ AG-7
+ 5
- 4
/ 7
'' 3
~ (macro AG-; spc)
[ AG-9
] AG-0
_ S--
# =
| AG-[
! S-'
; S-g
: S-c
? S-o
)
;; NumRow layer
(defalias
s0 0
s1 1
s2 2
s3 3
s4 4
s5 5
s6 6
s7 7
s8 8
s9 9
nbs S-spc ;; narrow no-break space
dk1 XX
dk2 XX
dk3 XX
dk4 XX
dk5 XX
)
;; vim: set ft=lisp:

View File

@ -0,0 +1,89 @@
;; QwertyLafayette Windows/Linux aliases
;; Navigation layer
(defalias
all C-a
sav C-s
cls C-w
ndo C-z
cut C-x
cpy C-c
pst C-v
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
, ,
. .
)
;; Symbols layer
(defalias
^ AG-q
< AG-w
> AG-e
$ AG-r
% AG-t
@ AG-y
& AG-u
* AG-i
' AG-o
` AG-p
{ AG-a
pl AG-s
pr AG-d
} AG-f
= AG-g
\ AG-h
+ AG-j
- AG-k
/ AG-l
'' AG-;
~ AG-z
[ AG-x
] AG-c
_ AG-v
# AG-b
| AG-n
! AG-m
; AG-,
: AG-.
? AG-/
)
;; NumRow layer
(defalias
s0 S-0
s1 S-1
s2 S-2
s3 S-3
s4 S-4
s5 S-5
s6 S-6
s7 S-7
s8 S-8
s9 S-9
nbs S-spc ;; narrow no-break space
1dk ;
;; digits must be escaped, otherwise theyre interpreted as delays in ms
dk1 (macro @1dk @1)
dk2 (macro @1dk @2)
dk3 (macro @1dk @3)
dk4 (macro @1dk @4)
dk5 (macro @1dk @5)
)
;; vim: set ft=lisp:

View File

@ -0,0 +1,87 @@
;; Qwerty/Colemak macOS aliases
;; Navigation layer
(defalias
all M-a
sav M-s
cls M-w
ndo M-z
cut M-x
cpy M-c
pst M-v
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
, ,
. .
)
;; Symbols layer
(defalias
^ S-6
< S-,
> S-.
$ S-4
% S-5
@ S-2
& S-7
* S-8
' '
` `
{ S-[
pl S-9
pr S-0
} S-]
= =
\ \
+ S-=
- -
/ /
'' S-'
~ S-`
[ [
] ]
_ S--
# S-3
| S-\
! S-1
; ;
: S-;
? S-/
)
;; NumRow layer
(defalias
s0 S-0
s1 S-1
s2 S-2
s3 S-3
s4 S-4
s5 S-5
s6 S-6
s7 S-7
s8 S-8
s9 S-9
nbs spc ;; no narrow no-break space in Qwerty
dk1 XX
dk2 XX
dk3 XX
dk4 XX
dk5 XX
)
;; vim: set ft=lisp:

View File

@ -0,0 +1,88 @@
;; Qwerty/Colemak Windows/Linux aliases
;; Works with QWERTY-US, Colemak and others.
;; Navigation layer
(defalias
all C-a
sav C-s
cls C-w
ndo C-z
cut C-x
cpy C-c
pst C-v
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
, ,
. .
)
;; Symbols layer
(defalias
^ S-6
< S-,
> S-.
$ S-4
% S-5
@ S-2
& S-7
* S-8
' '
` `
{ S-[
pl S-9
pr S-0
} S-]
= =
\ \
+ S-=
- -
/ /
'' S-'
~ S-`
[ [
] ]
_ S--
# S-3
| S-\
! S-1
; ;
: S-;
? S-/
)
;; NumRow layer
(defalias
s0 S-0
s1 S-1
s2 S-2
s3 S-3
s4 S-4
s5 S-5
s6 S-6
s7 S-7
s8 S-8
s9 S-9
nbs spc ;; no narrow no-break space in Qwerty
dk1 XX
dk2 XX
dk3 XX
dk4 XX
dk5 XX
)
;; vim: set ft=lisp:

View File

@ -0,0 +1,88 @@
;; Qwertz Windows/Linux aliases
;; Works with QWERTZ-de. Needs a couple tweaks for other QWERTZ variants.
;; Navigation layer
(defalias
all C-a
sav C-s
cls C-w
ndo C-y
cut C-x
cpy C-c
pst C-v
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
, ,
. .
)
;; Symbols layer
(defalias
^ (macro grv spc)
< <
> S-<
$ S-4
% S-5
@ AG-q
& S-6
* S-]
' S-\
` (macro S-= spc)
{ AG-7
pl S-8
pr S-9
} AG-0
= S-0
\ AG--
+ ]
- /
/ S-7
'' S-2
~ AG-]
[ AG-8
] AG-9
_ S-/
# \
| AG-<
! S-1
; S-,
: S-.
? S--
)
;; NumRow layer
(defalias
s0 S-0
s1 S-1
s2 S-2
s3 S-3
s4 S-4
s5 S-5
s6 S-6
s7 S-7
s8 S-8
s9 S-9
nbs spc ;; no narrow no-break space in Qwerty
dk1 XX
dk2 XX
dk3 XX
dk4 XX
dk5 XX
)
;; vim: set ft=lisp:

View File

@ -0,0 +1,11 @@
;; Base layer: standard keyboard behavior
(deflayer base
_ _ _ _ _ _ _ _ _ _ _
q w e r t y u i o p
a s d f g h j k l ;
z x c v b < n m , . /
_ _ _
)
;; vim: set ft=lisp:

View File

@ -0,0 +1,23 @@
;; Base layer: the 3 main thumb keys become mod/taps
(deflayer base
_ _ _ _ _ _ _ _ _ _ _
q w e r t y u i o p
a s d f g h j k l ;
z x c v b < n m , . /
@alt @nav @sym
)
;; Timing variables are defined in `kanata.kbd` file.
(defalias
;; Main mod-tap: Nav layer when held, Space when tapped.
nav (tap-hold $tap_timeout $long_hold_timeout spc (layer-while-held navigation))
;; Space-cadet thumb keys: Alt/BackSpace, AltGr/Enter.
;; Acts as a modifier by default, or as BackSpace/Enter when tapped separately.
alt (tap-hold-press $tap_timeout $hold_timeout bspc _)
sym (tap-hold-press $tap_timeout $hold_timeout ret (layer-while-held symbols))
)
;; vim: set ft=lisp:

View File

@ -0,0 +1,31 @@
;; Base layer: layer-taps under the thumbs + home-row mods on SDF and JKL
(deflayer base
_ _ _ _ _ _ _ _ _ _ _
q w e r t y u i o p
a @ss @dd @ff g h @jj @kk @ll ;
z x c v b < n m , . /
@sft @nav @sym
)
;; Timing variables are defined in `kanata.kbd` file.
(defalias
;; Main mod-tap: Nav layer when held, Space when tapped.
nav (tap-hold $tap_timeout $long_hold_timeout spc (layer-while-held navigation))
;; Space-cadet thumb keys: Shift/BackSpace, AltGr/Enter.
;; Acts as a modifier by default, or as BackSpace/Enter when tapped separately.
sft (tap-hold-press $tap_timeout $hold_timeout bspc lsft)
sym (tap-hold-press $tap_timeout $hold_timeout ret (layer-while-held symbols))
;; Home-row mods
ss (tap-hold $tap_timeout $long_hold_timeout s lmet)
dd (tap-hold $tap_timeout $long_hold_timeout d lctl)
ff (tap-hold $tap_timeout $long_hold_timeout f lalt)
jj (tap-hold $tap_timeout $long_hold_timeout j lalt)
kk (tap-hold $tap_timeout $long_hold_timeout k rctl)
ll (tap-hold $tap_timeout $long_hold_timeout l rmet)
)
;; vim: set ft=lisp:

View File

@ -0,0 +1,17 @@
;; Num-Navigation layer:
;; - should inherit from NumPad
;; - left: one-handed shortcuts (Cmd/Ctrl-AZXCV) + Tab/S-Tab
;; - top: Super-num (i3/sway) or Alt-num (browser)
;; The `lrld` action stands for "live reload". This will re-parse everything
;; except for linux-dev, i.e. you cannot live reload and switch keyboard devices.
(deflayer navigation
M-1 M-2 M-3 M-4 M-5 lrld M-6 M-7 M-8 M-9 M-0
tab home up end pgup @/ @7 @8 @9 @run
@all lft down rght pgdn @- @4 @5 @6 @0
@ndo @cut @cpy @pst S-tab _ @, @1 @2 @3 @.
del _ esc
)
;; vim: set ft=lisp:

View File

@ -0,0 +1,48 @@
;; Vim-Navigation layer:
;; - right: Vim-like arrows on HJKL, home/end page up/down, mouse scroll
;; - left: one-hand shortcuts (Cmd/Ctrl-WASZXCV), Tab/Shift-Tab, prev/next
;; - top: Super-num (i3/sway) or Alt-num (browser), zoom in/out
;; The `lrld` action stands for "live reload". This will re-parse everything
;; except for linux-dev, i.e. you cannot live reload and switch keyboard devices.
(deflayer navigation
M-1 M-2 M-3 M-4 M-5 lrld M-6 M-7 M-8 M-9 M-0
@pad @cls bck fwd XX home pgdn pgup end @run
@all @sav S-tab tab XX lft down up rght @fun
@ndo @cut @cpy @pst XX _ @mwl @mwd @mwu @mwr XX
del _ esc
)
;; NumPad
(deflayer numpad
_ _ _ _ _ _ _ _ _ _ _
XX home up end pgup @/ @7 @8 @9 XX
XX lft down rght pgdn @- @4 @5 @6 @0
XX XX XX XX XX _ @, @1 @2 @3 @.
@std @nbs @std
)
;; function keys
(deflayer funpad
XX XX XX XX XX XX XX XX XX XX XX
f1 f2 f3 f4 XX XX XX XX XX XX
f5 f6 f7 f8 XX XX lalt lctl lmet _
f9 f10 f11 f12 XX XX XX XX XX XX XX
_ _ _
)
(defalias
std (layer-switch base)
pad (layer-switch numpad)
fun (layer-while-held funpad)
;; Mouse wheel emulation
mwu (mwheel-up 50 120)
mwd (mwheel-down 50 120)
mwl (mwheel-left 50 120)
mwr (mwheel-right 50 120)
)
;; vim: set ft=lisp:

View File

@ -0,0 +1,14 @@
;; Symbol layer: Lafayette/ErgoL AltGr programmation layer for the masses!
(deflayer symbols
AG-1 AG-2 AG-3 AG-4 AG-5 XX AG-6 AG-7 AG-8 AG-9 AG-0
@^ @< @> @$ @% @@ @& @* @' @`
@{ @pl @pr @} @= @\ @+ @- @/ @''
@~ @[ @] @_ @# XX @| @! @; @: @?
_ spc _
)
;; Note: this requires kanata 0.5+ to work properly.
;; kanata 0.4 does not release Shift soon enough for this layer to work.
;; vim: set ft=lisp:

View File

@ -0,0 +1,26 @@
;; Symbol layer: Lafayette/ErgoL AltGr programmation layer
;; but enables a NumRow.
(deflayer symbols
AG-1 AG-2 AG-3 AG-4 AG-5 XX AG-6 AG-7 AG-8 AG-9 AG-0
@^ @< @> @$ @% @@ @& @* @' @`
@{ @pl @pr @} @= @\ @+ @- @/ @''
@~ @[ @] @_ @# XX @| @! @; @: @?
@num spc _
)
;; Numrow layer
(deflayer numrow
_ _ _ _ _ _ _ _ _ _ _
@s1 @s2 @s3 @s4 @s5 @s6 @s7 @s8 @s9 @s0
@1 @2 @3 @4 @5 @6 @7 @8 @9 @0
@dk1 @dk2 @dk3 @dk4 @dk5 _ XX @- @, @. @/
_ @nbs @sym
)
(defalias
num (layer-toggle numrow)
)
;; vim: set ft=lisp:

View File

@ -0,0 +1,14 @@
;; Symbol layer: same as AltGr.
;; Concretely this does nothing, just let AltGr as-is for keyboard layouts
;; depending heavily on AltGr, like Bépo or simply Lafayette layouts like
;;ErgoL, which already have that layer baked in.
(deflayer symbols
AG-1 AG-2 AG-3 AG-4 AG-5 XX AG-6 AG-7 AG-8 AG-9 AG-0
AG-q AG-w AG-e AG-r AG-t AG-y AG-u AG-i AG-o AG-p
AG-a AG-s AG-d AG-f AG-g AG-h AG-j AG-k AG-l AG-;
AG-z AG-x AG-c AG-v AG-b AG-< AG-n AG-m AG-, AG-. AG-/
_ AG-spc _
)
;; vim: set ft=lisp:

View File

@ -0,0 +1,29 @@
;; Symbol layer: same as AltGr but enables a NumRow.
;; Concretely this does nothing, just let AltGr as-is for keyboard layouts
;; depending heavily on AltGr, like Bépo or simply Lafayette layouts like
;;ErgoL, which already have that layer baked in.
;; Except it adds an NumRow layer.
(deflayer symbols
AG-1 AG-2 AG-3 AG-4 AG-5 XX AG-6 AG-7 AG-8 AG-9 AG-0
AG-q AG-w AG-e AG-r AG-t AG-y AG-u AG-i AG-o AG-p
AG-a AG-s AG-d AG-f AG-g AG-h AG-j AG-k AG-l AG-;
AG-z AG-x AG-c AG-v AG-b AG-< AG-n AG-m AG-, AG-. AG-/
@num AG-spc _
)
;; Numrow layer
(deflayer numrow
_ _ _ _ _ _ _ _ _ _ _
@s1 @s2 @s3 @s4 @s5 @s6 @s7 @s8 @s9 @s0
@1 @2 @3 @4 @5 @6 @7 @8 @9 @0
@dk1 @dk2 @dk3 @dk4 @dk5 _ XX @- @, @. @/
_ @nbs @sym
)
(defalias
num (layer-toggle numrow)
)
;; vim: set ft=lisp:

View File

@ -0,0 +1,11 @@
;; `defsrc` defines the keys that will be intercepted by kanata.
(defsrc
1 2 3 4 5 bspc 6 7 8 9 0
q w e r t y u i o p
a s d f g h j k l ;
z x c v b < n m , . /
lmet spc rmet
)
;; vim: set ft=lisp:

View File

@ -0,0 +1,11 @@
;; angle-mod: the ISO key (a.k.a. LSGT or 102 key) becomes Z
(defsrc
1 2 3 4 5 bspc 6 7 8 9 0
q w e r t y u i o p
a s d f g h j k l ;
< z x c v b n m , . /
lmet spc rmet
)
;; vim: set ft=lisp:

View File

@ -0,0 +1,11 @@
;; ansi-angle-mod: left shift becomes Z
(defsrc
1 2 3 4 5 bspc 6 7 8 9 0
q w e r t y u i o p
a s d f g h j k l ;
lsft z x c v b n m , . /
lmet spc rmet
)
;; vim: set ft=lisp:

View File

@ -0,0 +1,14 @@
;; wide-angle-mod:
;; - left shift becomes Z
;; - the right hand is moved one key to the right
(defsrc
1 2 3 4 5 bspc 7 8 9 0 -
q w e r t u i o p [
a s d f g j k l ; '
lsft z x c v b m , . / rsft
lmet spc rmet
)
;; vim: set ft=lisp:

View File

@ -0,0 +1,14 @@
;; wide-angle-mod:
;; - the ISO key (a.k.a. LSGT or 102 key) becomes Z
;; - the right hand is moved one key to the right
(defsrc
1 2 3 4 5 bspc 7 8 9 0 -
q w e r t u i o p [
a s d f g j k l ; '
< z x c v b m , . / rsft
lmet spc rmet
)
;; vim: set ft=lisp:

View File

@ -0,0 +1,11 @@
;; `defsrc` defines the keys that will be intercepted by kanata.
(defsrc
1 2 3 4 5 bspc 6 7 8 9 0
q w e r t y u i o p
a s d f g h j k l ;
z x c v b < n m , . /
lalt spc ralt
)
;; vim: set ft=lisp:

View File

@ -0,0 +1,11 @@
;; angle-mod: the ISO key (a.k.a. LSGT or 102 key) becomes Z
(defsrc
1 2 3 4 5 bspc 6 7 8 9 0
q w e r t y u i o p
a s d f g h j k l ;
< z x c v b n m , . /
lalt spc ralt
)
;; vim: set ft=lisp:

View File

@ -0,0 +1,11 @@
;; ansi-angle-mod: left shift becomes Z
(defsrc
1 2 3 4 5 bspc 6 7 8 9 0
q w e r t y u i o p
a s d f g h j k l ;
lsft z x c v b n m , . /
lalt spc ralt
)
;; vim: set ft=lisp:

View File

@ -0,0 +1,13 @@
;; wide-angle-mod:
;; - left shift becomes Z
;; - the right hand is moved one key to the right
(defsrc
1 2 3 4 5 bspc 7 8 9 0 -
q w e r t u i o p [
a s d f g j k l ; '
lsft z x c v b m , . / rsft
lalt spc ralt
)
;; vim: set ft=lisp:

View File

@ -0,0 +1,13 @@
;; wide-angle-mod:
;; - the ISO key (a.k.a. LSGT or 102 key) becomes Z
;; - the right hand is moved one key to the right
(defsrc
1 2 3 4 5 bspc 7 8 9 0 -
q w e r t u i o p [
a s d f g j k l ; '
< z x c v b m , . / rsft
lalt spc ralt
)
;; vim: set ft=lisp:

View File

@ -0,0 +1,94 @@
;;==========================================================================;;
;; ;;
;; With Arsenik, choose the features you want for your keyboard: ;;
;; angle mods, Vim-like navigation layer, Mac/Azerty/Qwertz support, etc. ;;
;; ;;
;;==========================================================================;;
;; Every section is mandatory and should enable one and only one `include`
;; - enable each feature by un-commenting the related line.
;; - a commented line starts with ;;
;; Live-reload the configuration with Space+Backspace (requires layer-taps).
;; Timing variables for tap-hold effects.
(defvar
;; The key must be pressed twice in 200ms to enable repetitions.
tap_timeout 200
;; The key must be held 200ms to become a layer shift.
hold_timeout 200
;; Slightly higher value for typing keys, to prevent unexpected hold effect.
long_hold_timeout 300
)
;;-----------------------------------------------------------------------------
;; Original key arrangement on your keyboard: Mac or PC.
;; Choose here if you want to add an angle mod: ZXCVB are shifted to the left.
;; See https://colemakmods.github.io/ergonomic-mods/angle.html for more details.
(include defsrc/pc.kbd) ;; PC, standard finger assignment
;; (include defsrc/mac.kbd) ;; Mac, standard finger assignment
(include defsrc/pc_anglemod.kbd) ;; PC, ZXCVB are shifted to the left
;; (include defsrc/mac_anglemod.kbd) ;; Mac, ZXCVB are shifted to the left
;; (include defsrc/pc_wide_anglemod.kbd) ;; PC, angle-mod + right hand shifted by one key
;; (include defsrc/mac_wide_anglemod.kbd) ;; Mac, angle-mod + right hand shifted by one key
;;-----------------------------------------------------------------------------
;; `Base` layer: standard or dual keys? (layer-taps, homerow mods?)
;; If you just want angle mod, you still have to enable the standard base.
(include deflayer/base.kbd) ;; standard keyboard behavior
;; (include deflayer/base_lt.kbd) ;; layer-taps on both thumb keys
;; (include deflayer/base_lt_hrm.kbd) ;; layer-taps + home-row mods
;; Note: not enabling layer-taps here makes the rest of the file useless.
;;-----------------------------------------------------------------------------
;; `Symbols` layer
(include deflayer/symbols_noop.kbd) ;; AltGr stays as-is
;; (include deflayer/symbols_lafayette.kbd) ;; AltGr programmation layer like ErgoL
;; (include deflayer/symbols_noop_num.kbd) ;; AltGr stays as-is + NumRow layers
;; (include deflayer/symbols_lafayette_num.kbd) ;; AltGr prog layer + NumRow layers
;;-----------------------------------------------------------------------------
;; `Navigation` layer: ESDF or HJKL?
(include deflayer/navigation.kbd) ;; ESDF on the left, NumPad on the right
;; (include deflayer/navigation_vim.kbd) ;; HJKL + NumPad on [Space]+[Q]
;; Replace XX by the keyboard shortcut of your application launcher, if any.
;; Mapped on [Space]+[P] in both navigation layers.
;; (defalias run M-p) ;; [Command]-[P]
(defalias run XX) ;; do nothing
;;-----------------------------------------------------------------------------
;; Aliases for `Symbols` and `Navigation` layers
;; Depends on PC/Mac and keyboard layout
(include defalias/ergol_pc.kbd) ;; ErgoL PC
;; (include defalias/qwerty-lafayette_pc.kbd) ;; QwertyLafayette PC
;; (include defalias/qwerty_pc.kbd) ;; Qwerty / Colemak PC
;; (include defalias/qwerty_mac.kbd) ;; Qwerty / Colemak Mac
;; (include defalias/azerty_pc.kbd) ;; Azerty PC
;; (include defalias/qwertz_pc.kbd) ;; Qwertz PC
;; (include defalias/bepo_pc.kbd) ;; Bépo PC
;; (include defalias/optimot_pc.kbd) ;; Optimot PC
;;-----------------------------------------------------------------------------
;; Extra configuration
;; You should not modify this, only if you need to.
(defcfg
;; Enabled makes kanata process keys that are not defined in defsrc
;; Fixes altgr for Windows (see Arsenik issue #22)
process-unmapped-keys yes
windows-altgr cancel-lctl-press
)
;; vim: set ft=lisp: