1199 lines
56 KiB
Markdown
1199 lines
56 KiB
Markdown
|
# Minivan
|
|||
|
A 40% keyboard made first by TheVan Keyboards
|
|||
|
_https://thevankeyboards.com_ now taken over by TKC
|
|||
|
_https://thekey.company_
|
|||
|
|
|||
|
![Minivan layout all](http://socialism.nl/misc/minivan/minivan-all-layers-visualization_vc.jpg)
|
|||
|
|
|||
|
Table of Contents
|
|||
|
=================
|
|||
|
|
|||
|
1 Overview
|
|||
|
1.1 Hardware compatibility
|
|||
|
1.2 Software compatibility
|
|||
|
2 'make' example
|
|||
|
3 Base layouts
|
|||
|
3.1 Normal layouts
|
|||
|
3.1.1 Qwerty
|
|||
|
3.1.2 Qwerty with arrows on Base
|
|||
|
3.1.3 Dvorak
|
|||
|
3.1.4 Dvorak²
|
|||
|
3.1.5 Colemak
|
|||
|
3.1.6 Workman
|
|||
|
3.2 Special layouts
|
|||
|
3.2.1 Numbers pad
|
|||
|
4 The common system
|
|||
|
4.1 Main features
|
|||
|
4.2 Layer access
|
|||
|
4.3 Layout in graphics
|
|||
|
4.4 Layout in text
|
|||
|
4.5 Movement layer options
|
|||
|
4.6 Numbers pad layer options
|
|||
|
5 Led colors for layers
|
|||
|
6 Compile options
|
|||
|
7 Language support
|
|||
|
7.1 Input methods
|
|||
|
7.2 Unicode symbols
|
|||
|
8 Speed measuring
|
|||
|
8.1 Speed Led color compilation assist
|
|||
|
9 Text size measuring
|
|||
|
9.1 Text size Usage
|
|||
|
10 Making your own base layer(s)
|
|||
|
11 Eviscerations
|
|||
|
12 Key associations
|
|||
|
13 Trouble shooting
|
|||
|
• Compiling
|
|||
|
• Unicode
|
|||
|
• Leds
|
|||
|
• Weird layer jumping
|
|||
|
• Difficult/impossible key combinations ?
|
|||
|
14 Why you want this layout
|
|||
|
15 BUGS
|
|||
|
16 Resources
|
|||
|
17 Author(s)
|
|||
|
|
|||
|
1 Overview
|
|||
|
==========
|
|||
|
_A layout for the demanding keyboard user (10 fingers / blind)._
|
|||
|
Designed for intuitive key placement, more symbols than standard English
|
|||
|
keyboard, speed and text size measuring.
|
|||
|
*400%* _the capability in_ *40%* _the size_ (by key function count).
|
|||
|
|
|||
|
For some ‛common layers’ (numbers pad, movement), different versions
|
|||
|
can be chosen than shown just below in this by layer view:
|
|||
|
|
|||
|
![Minivan illustration Overview layers](http://socialism.nl/misc/minivan/minivan-all-layers-clear-visualization_1500_vf.jpg)
|
|||
|
|
|||
|
By key view:
|
|||
|
|
|||
|
![Minivan illustration Overview layers by key](http://socialism.nl/misc/minivan/minivan-all-layers-clear-visualization-by-key_2000_vh.jpg)
|
|||
|
|
|||
|
1.1 Hardware compatibility
|
|||
|
==========================
|
|||
|
This keymap functions on _Minivan_ hardware variants with 44, 45 and
|
|||
|
46 keys.
|
|||
|
|
|||
|
It may be fairly easily ported to 12x12x12x[11|12|13] keyboards.
|
|||
|
|
|||
|
1.2 Software compatibility
|
|||
|
==========================
|
|||
|
This keymap relies on Unicode, in an attempt to avoid the
|
|||
|
“dead key” system for accented characters on many non-English keyboards.
|
|||
|
You need to have Unicode input working on your computer.
|
|||
|
|
|||
|
On a Linux computer operating system, this keymap is designed to work
|
|||
|
with this keyboard/language setting:
|
|||
|
|
|||
|
> setxkbmap -layout us
|
|||
|
> echo $LANG
|
|||
|
`en_US.UTF-8`
|
|||
|
|
|||
|
If that works for you, you can type the most important characters in
|
|||
|
the western European group of languages, native from the keyboard.
|
|||
|
|
|||
|
This keymap might not function as expected if you want to use a
|
|||
|
different keyboard language setting in your operating system.
|
|||
|
|
|||
|
See also chapter 6 _Language support_.
|
|||
|
|
|||
|
2 'make' example
|
|||
|
================
|
|||
|
… Download the repository, resolve software dependencies etc..
|
|||
|
… To change compile options: edit user_config.h (or `minifan_config_compact.h`)
|
|||
|
> cd […]/qmk_firmware
|
|||
|
> make thevankeyboards/minivan:josjoha
|
|||
|
> su
|
|||
|
# dfu-programmer atmega32u4 erase
|
|||
|
# dfu-programmer atmega32u4 flash thevankeyboards_minivan_josjoha.hex
|
|||
|
# dfu-programmer atmega32u4 start
|
|||
|
|
|||
|
This “Mini*fan*” layout is explained in several readme files, with
|
|||
|
links to the others files in this readme. The common system is explained
|
|||
|
in this readme.md file. The options for the letters and number/symbol
|
|||
|
layer pairs (two pairs in the dual layout) are explained in their
|
|||
|
separate readme file, see immediately below. Compile options are detailed
|
|||
|
in `./user_config.h`.
|
|||
|
|
|||
|
3 Base layouts
|
|||
|
==============
|
|||
|
Layouts are presented here in a sort of simplified keycaps view. If a
|
|||
|
base layer pair has its own user configuration options, they are located
|
|||
|
in `./base_NAME.h`.
|
|||
|
|
|||
|
3.1 Normal layouts
|
|||
|
------------------
|
|||
|
These are layouts for commonly used configurations, such as Qwerty or Dvorak.
|
|||
|
|
|||
|
3.1.1 Qwerty
|
|||
|
------------
|
|||
|
|
|||
|
![Minivan layout impression](http://socialism.nl/misc/minivan/minivan_keycapview_qwerty_vc.jpg)
|
|||
|
|
|||
|
For the readme about the Qwerty version, see ➡ ![base_qwerty.md](./base_qwerty.md) ⬅
|
|||
|
|
|||
|
3.1.2 Qwerty with arrows on Base
|
|||
|
--------------------------------
|
|||
|
|
|||
|
![Minivan layout impression](http://socialism.nl/misc/minivan/minivan_keycapview_qwerty_basearrow_vd.jpg)
|
|||
|
|
|||
|
For the readme about this Qwerty variation, see ➡ ![base_qwerty_basearrow.md](./base_qwerty_basearrow.md) ⬅
|
|||
|
|
|||
|
3.1.3 Dvorak
|
|||
|
-------------
|
|||
|
|
|||
|
![Minivan layout impression](http://socialism.nl/misc/minivan/minivan_keycapview_dvorak_vc.jpg)
|
|||
|
|
|||
|
For the readme about the Dvorak version, see ➡ ![base_dvorak.md](./base_dvorak.md) ⬅
|
|||
|
|
|||
|
3.1.4 Dvorak²
|
|||
|
-------------
|
|||
|
|
|||
|
![Minivan layout impression](http://socialism.nl/misc/minivan/minivan_keycapview_dvorak_descramble_vb.jpg)
|
|||
|
|
|||
|
Regular Dvorak for a computer already set to Dvorak.
|
|||
|
|
|||
|
For the readme about the Dvorak² version, see ➡ ![base_dvorak_descramble.md](./base_dvorak_descramble.md) ⬅
|
|||
|
|
|||
|
3.1.5 Colemak
|
|||
|
-------------
|
|||
|
|
|||
|
![Minivan layout impression](http://socialism.nl/misc/minivan/minivan_keycapview_colemak_vc.jpg)
|
|||
|
|
|||
|
For the readme about the Colemak version, see ➡ ![base_colemak.md](./base_colemak.md) ⬅
|
|||
|
|
|||
|
3.1.6 Workman
|
|||
|
-------------
|
|||
|
|
|||
|
![Minivan layout impression](http://socialism.nl/misc/minivan/minivan_keycapview_workman_va.jpg)
|
|||
|
|
|||
|
For the readme about the Workman version, see ➡ ![base_workman.md](./base_workman.md) ⬅
|
|||
|
|
|||
|
3.2 Special layouts
|
|||
|
===================
|
|||
|
These are unusual layouts. Most people will probably only want one of these on the ‛Alternate’ layout,
|
|||
|
with a normal layout on ‛Default’. How this works is explained below.
|
|||
|
|
|||
|
3.2.1 Numbers pad
|
|||
|
-----------------
|
|||
|
|
|||
|
![Minivan layout impression](http://socialism.nl/misc/minivan/minivan_keycapview_numpad_single_va.jpg)
|
|||
|
|
|||
|
For the readme about the Numpad version, see ➡ ![base_numpad.md](./base_numpad.md) ⬅
|
|||
|
|
|||
|
|
|||
|
4 The common system
|
|||
|
===================
|
|||
|
|
|||
|
![Minivan layout impression](http://socialism.nl/misc/minivan/minivan_keycapview_common_vc.jpg)
|
|||
|
|
|||
|
4.1 Main features
|
|||
|
-----------------
|
|||
|
• Dual layout. Several layouts to choose from (example: Qwerty
|
|||
|
and Dvorak dual layout). Easy to add more layouts.
|
|||
|
• Expanded character set with western European accented characters
|
|||
|
(ëøßœç…); sub- super-script numbers (¹₂…) quite a few additional
|
|||
|
symbols such as 《 ± • ☑ ❦ √ ┣ ≠ 》…
|
|||
|
• Typing speed measuring. Led changes color with your speed. You can
|
|||
|
ask for a report on your current and average typing speeds.
|
|||
|
• Text size measuring. If you want to type some amount of words or
|
|||
|
characters, the middle led will go from green to red as you go,
|
|||
|
and prevent you going over the limit.
|
|||
|
|
|||
|
4.2 Layer access
|
|||
|
----------------
|
|||
|
This graphic shows how layers are reached from the ‛Default base’ layer.
|
|||
|
|
|||
|
![Minivan layout Image associations](http://socialism.nl/misc/minivan/minivan-default-base-layer-activation_1500_vf.jpg)
|
|||
|
|
|||
|
You can switch between the default base layer (typically letters), and
|
|||
|
another base layer, the alternate base layer (also typically letters),
|
|||
|
on the `_RAR` layer with key ‛Other Base’. Each base layer comes
|
|||
|
with its own second layer, typically numbers-symbols. The other
|
|||
|
layers are used common between the default and alternate base layers.
|
|||
|
|
|||
|
The Base layers and their numbers layer are detailed in files beginning
|
|||
|
with `./base_…` (links below).
|
|||
|
|
|||
|
Layer overview: Defined in:
|
|||
|
|
|||
|
• Default Letters / Base ┓
|
|||
|
• Default Numbers-symbols ┃
|
|||
|
┣ ./base_….c/md files
|
|||
|
• Alternate Letters / Base ┃
|
|||
|
• Alternate numbers-symbols layout ┛
|
|||
|
|
|||
|
• Numbers pad ┓
|
|||
|
• Accented characters ┃
|
|||
|
• Additional Unicode characters ┃
|
|||
|
• More Additional Unicode characters ┣ ./keymap.c(etc)/readme.md
|
|||
|
• Movement arrows/mouse ┃ “The common system”
|
|||
|
• Function keys / layer toggles ┃
|
|||
|
• Power, media, Speed, Text size, etc. ┛
|
|||
|
|
|||
|
There are some additional layer switching keys due to key transparency
|
|||
|
artefacts, allowing for example to go back to ‛Base’ from a toggled `_MOV`
|
|||
|
layer with what is the ‛Enter’ key on Base.
|
|||
|
|
|||
|
4.3 Layout in graphics
|
|||
|
----------------------
|
|||
|
|
|||
|
![Minivan layout Image BASEdef](http://socialism.nl/misc/minivan/minivan_base_layer_hide_def_base_ve.jpg)
|
|||
|
Layer: `DEF_BASE`
|
|||
|
|
|||
|
![Minivan layout Image NSYdef](http://socialism.nl/misc/minivan/minivan_nsy_layer_hide_def_base_vb.jpg)
|
|||
|
Layer: `DEF_NSY`
|
|||
|
|
|||
|
![Minivan layout Image BASEalt](http://socialism.nl/misc/minivan/minivan_base_layer_hide_alt_base_ve.jpg)
|
|||
|
Layer: `ALT_BASE`
|
|||
|
|
|||
|
![Minivan layout Image NSYalt](http://socialism.nl/misc/minivan/minivan_nsy_layer_hide_alt_base_vb.jpg)
|
|||
|
Layer: `ALT_NSY`
|
|||
|
|
|||
|
![Minivan layout Image PAD](http://socialism.nl/misc/minivan/minivan_pad_layer_vc.jpg)
|
|||
|
Layer: `_PAD`
|
|||
|
|
|||
|
^ See below for a different configuration of the numbers pad keys. See above for a Base layout for a numbers pad.
|
|||
|
|
|||
|
![Minivan layout Image ACC](http://socialism.nl/misc/minivan/minivan_acc_layer_vd.jpg)
|
|||
|
Layer: `_ACC`
|
|||
|
|
|||
|
![Minivan layout Image DRA](http://socialism.nl/misc/minivan/minivan_dra_layer_vd.jpg)
|
|||
|
Layer: `_DRA`
|
|||
|
|
|||
|
![Minivan layout Image BON](http://socialism.nl/misc/minivan/minivan_bon_layer_vc.jpg)
|
|||
|
Layer: `_BON`
|
|||
|
|
|||
|
![Minivan layout Image FUN](http://socialism.nl/misc/minivan/minivan_fun_layer_vb.jpg)
|
|||
|
Layer: `_FUN`
|
|||
|
|
|||
|
![Minivan layout Image MOV](http://socialism.nl/misc/minivan/minivan_mov_layer_triangle_hw-basic-and-allkeys_vb.jpg)
|
|||
|
Layer: `_MOV`
|
|||
|
|
|||
|
^ There is an alternative flat arrow configuration for this layer (see below),
|
|||
|
and options to compile with the 'arrow' hardware layout.
|
|||
|
|
|||
|
![Minivan layout Image RAR](http://socialism.nl/misc/minivan/minivan_rar_layer_vc.jpg)
|
|||
|
Layer: `_RAR`
|
|||
|
|
|||
|
4.4 Layout in text
|
|||
|
------------------
|
|||
|
Layer _DEF_BASE (Letters layer, see ./base* files for what comes on ‛__’)
|
|||
|
| Right hand
|
|||
|
<pink2 <pinky<ring <middl<index<indx2| indx2>index>middl>ring> pinky>pinky2> // Keys by finger
|
|||
|
-o- <|> ... //-o- Base access
|
|||
|
Esc __ __ __ __ __ | __ __ __ __ __ Bksp
|
|||
|
Tab+LCtl __ __ __ __ __ | __ __ __ __ __ __
|
|||
|
LSht+_PAD __ __ __ __ __ | __ __ __ __ __ RSht+_FUN
|
|||
|
+_MOV⁵ | +_RAR⁶
|
|||
|
---------------------------------------------------------------------------------------
|
|||
|
Left+LAlt Del;_ACC _..._NSY(_DRA) Enter+_MOV| Space _..._NSY(_DRA) RGUI Right;_RAR
|
|||
|
hold hold₍₁,₂٭₎ hold | hold₍₁,₂٭₎ hold // switch type
|
|||
|
hold₍₂₎ ^-┃-----------------------+--------^ ┃ // ₁₎ both = _DRA
|
|||
|
┗━━━_BON━━━╋┅───────────┄┄┄«or»┄┄┄─+─────────┅┛ // ₂₎ both = _BON
|
|||
|
<1 ± <2 <3 <4 | 4> 3> 2> ± 1> // Keys by number
|
|||
|
^³ ^⁴ // Optional more keys
|
|||
|
(LGUI) (_MOV)
|
|||
|
|
|||
|
₁) Dual hold for _DRA, single hold for _..._NSY. Marked by: ^--…--^
|
|||
|
₂) Hold key “<2” with either٭ key “<3” or “3>” for _BON, single hold “<2” for _ACC. Marked: ┗━━…━━┛
|
|||
|
³) 'South paw' hardware configuration. Configurable, default shown.
|
|||
|
⁴) 'Arrow' hardware configuration Configurable, default shown.
|
|||
|
³ ⁴) There are two more optional hardware keys, to make it easier to compile for
|
|||
|
a 12x12x12x11 or 12x12x12x12 layouts.
|
|||
|
⁵) Left Shift when pressed with another key. Medium long: to toggle _PAD. Long: toggle _MOV.
|
|||
|
⁶) Right shift when pressed with another key. medium long: to toggle _FUN. Long: toggle _RAR.
|
|||
|
|
|||
|
Remarks: The left modifiers have a slight delay in combination with an outside pointer device (mouse, stylus).
|
|||
|
It seems this will be difficult to fix, because it is spread over two devices. To avoid the
|
|||
|
±0.2 second delay, activate a layer where the modifiers are direct (`_PAD`, `_MOV`), using the layer toggle on
|
|||
|
left shift.
|
|||
|
|
|||
|
The two keys with ';' (Del;`_ACC`, Right;`_RAR`) do not auto-repeat on double tap, like QMK normal layer-tap keys.
|
|||
|
|
|||
|
There is an uncluttered _Delete_ on `_PAD`, an uncluttered _Right_ arrow on the `_MOV` layer.
|
|||
|
|
|||
|
There is an uncluttered _Tab_ on both the `_DRA` and `_ACC` layers. They can be modified with _Control_ there.
|
|||
|
|
|||
|
Holding both `_..._NSY` keys left and right of the "split space bar" (enter, space) results in layer `_DRA`.
|
|||
|
|
|||
|
Holding either one of the just above mentioned `_..._NSY` layer keys (<3 and 3>), with the `_ACC` layer key
|
|||
|
(on <2) results in layer `_BON`.
|
|||
|
|
|||
|
- - -
|
|||
|
|
|||
|
Layer _..._NSY (Numbers and SYmbols, ./base* files for what comes on ‛__’)
|
|||
|
|
|||
|
<pink2 <pinky<ring <middl<index<indx2| indx2>index>middl>ring>pin>pink2>
|
|||
|
-*- <|> //(toggle) Access on _FUN
|
|||
|
BASE __ __ __ __ __ | __ __ __ __ __ Bspc
|
|||
|
Tab+LCtl __ __ __ __ __ | __ __ __ __ __ __+RCtl
|
|||
|
-+LSht __ __ __ __ __ | __ __ __ __ __ __+RSht
|
|||
|
---------------------------------------------------------------------------
|
|||
|
Left+LAlt ___ ___ Ent | . ___ RGUI Right+RAlt
|
|||
|
-*- <|> -*- //(hold) Access on _DEF_BASE
|
|||
|
<1 ± <2 <3 <4 | 4> 3> 2> ± 1>
|
|||
|
^ ^
|
|||
|
(LGUI) (_MOV)
|
|||
|
|
|||
|
- - -
|
|||
|
|
|||
|
Layer _FUN (F-keys, Layer access)
|
|||
|
|
|||
|
<pink2<pinky<ring <middl<index<indx2| indx2>index>middl>ring> pinky>pink2>
|
|||
|
toggl toggl set toggl toggl toggl | toggl toggl // Type of layer switch
|
|||
|
<|>
|
|||
|
BASE: NUMS: _PAD _ACC _DRA _BON | _MOV _RAR xxx xxx xxx Bspc //':' are dynamic ...
|
|||
|
LCtl F1 F2 F3 F4 F5 | F6 F7 F8 F9 F10 RCtl
|
|||
|
LSht F11 F12 F13 F14 F15 | F16 F17 F18 F19 F20 RSht
|
|||
|
---------------------------------------------------------------------*-- //-*- toggle on Base
|
|||
|
LAlt LCtl& LCtl& LSht& | FUN< +LCtl&LSht RGUI RAlt //... < toggle 'stay'
|
|||
|
LSht LAlt LAlt | &LAlt
|
|||
|
+xxx +xxx +xxx | +xxx
|
|||
|
<|>
|
|||
|
<1 ± <2 <3 <4 | 4> 3> 2> ± 1>
|
|||
|
^ ^
|
|||
|
(LGUI) (_MOV)
|
|||
|
|
|||
|
Remarks. FUN< toggles an immediate return to the Base layer after pressing an F-key,
|
|||
|
or staying on the `_FUN` layer. Right led yellow indicates F-layer stays active.
|
|||
|
|
|||
|
- - -
|
|||
|
|
|||
|
This is the _triangle_ configuration for arrows, arrow are on left hand (WASD):
|
|||
|
|
|||
|
Layer _MOV (MOVement, mouse movement on right hand)
|
|||
|
|
|||
|
<pinky2<pinky<ring <middl<index<indx2| indx2>index>middl>ring> pinky>pink2>
|
|||
|
<|>-*-
|
|||
|
Base PgDn Up PgUp Home Btn3 | xxx WhDn MsUp WhU WhLft Bksp
|
|||
|
LCtl Left Down Right End Btn1 | Btn1 MsLft MsDn MsRht WhRht RCtl
|
|||
|
LSht xxx Acc2 Acc1 Acc0 Btn2 | Btn2 Btn3 Btn4 Btn5 xxx RSht
|
|||
|
-------------------------------------------------------------------------
|
|||
|
LAlt Del Ent ___ | PgUp PgDn RGUI RAlt
|
|||
|
-*-<|>
|
|||
|
<1 ± <2 <3 <4 | 4> 3> 2> ± 1>
|
|||
|
^ ^
|
|||
|
(LGUI) (DOWN)
|
|||
|
|
|||
|
|
|||
|
Remarks. For the Minivan _arrow_ hardware layout with arrow cluster, you get this on ‛Base’:
|
|||
|
|
|||
|
(…)
|
|||
|
LSht+_PAD ;: qQ jJ kK xX | bB mM wW vV zZ RSht+_FUN
|
|||
|
-------------------------------------------------------------------------------
|
|||
|
Left+LAlt Del;_ACC _..._NSY(_DRA) Enter+_MOV| Space _..._NSY(_DRA) RGUI _MOV Right;_RAR
|
|||
|
^^^^ // new key (toggle)
|
|||
|
|
|||
|
… and this on `_MOV` for the _triangle_ configuration:
|
|||
|
|
|||
|
(…)
|
|||
|
LSht*- xxx Acc2 Acc1 Acc0 Btn2 | Btn2 Btn3 Btn4 Btn5 _Up_ RSht
|
|||
|
---------------------------------------------------------------------------
|
|||
|
LAlt Del Ent ___ | PgUp PgDn _Left__Down__Right_
|
|||
|
-*-<|>
|
|||
|
<1 ± <2 <3 <4 | 4> 3> 2> _±_ 1>
|
|||
|
^
|
|||
|
(LGUI)
|
|||
|
|
|||
|
… or this on `_MOV` for the _triangle_ arrow configuration with additional _navigation_ keys:
|
|||
|
|
|||
|
BASE PgDn Up PgUp Home _Btn4_ | xxx WhDn MsUp WhU WhLft Bksp
|
|||
|
LCtl Left Down Right End Btn1 | Btn1 MsLft MsDn MsRht WhRht RCtl
|
|||
|
LSht*- xxx Acc2 Acc1 Acc0 _Btn5_ | Btn2 Btn3 _Home__PgUp_ _Up_ _PgDn_
|
|||
|
---------------------------------------------------------------------------
|
|||
|
LAlt Del Ent ___ | PgUp _End_ _Left__Down__Right_
|
|||
|
-*-<|>
|
|||
|
<1 ± <2 <3 <4 | 4> 3> 2> _±_ 1>
|
|||
|
^
|
|||
|
(LGUI)
|
|||
|
|
|||
|
|
|||
|
This is the _flat_ configuration for arrows, arrow are on right hand:
|
|||
|
|
|||
|
<pinky2<pinky<ring <middl<index<indx2| indx2>index>middl>ring> pinky>pink2>
|
|||
|
<|>-*-
|
|||
|
BASE WLft WDn WUp WRht xxx | Btn3 PgUp Home End PgDn Bksp
|
|||
|
LCtl MLft MDn MUp MRht Btn1 | Btn1 Left Up Down Right RCtl
|
|||
|
LSht*- Btn5 Btn4 Btn3 Butn2 xxx | Btn2 Acc0 Acc1 Acc2 xxx RSht
|
|||
|
-------------------------------------------------------------------------
|
|||
|
LAlt Del Ent ___ | PgUp PgDn RGUI RAlt
|
|||
|
-*-<|>
|
|||
|
<1 ± <2 <3 <4 | 4> 3> 2> ± 1>
|
|||
|
^ ^
|
|||
|
(LGUI) (DOWN)
|
|||
|
|
|||
|
For the Minivan _arrow_ hardware layout with _flat_ arrow cluster, you get this on `_MOV`:
|
|||
|
|
|||
|
(…)
|
|||
|
BASE WLft WDn WUp WRht xxx | Btn3 PgUp Home End PgDn Bksp
|
|||
|
LCtl MLft MDn MUp MRht Btn1 | Btn1 Left Up Down Right RCtl
|
|||
|
LSht*- Btn5 Btn4 Btn3 Butn2 xxx | Btn2 Acc0 Acc1 Acc2 xxx RSht
|
|||
|
---------------------------------------------------------------------------
|
|||
|
LAlt Del Ent ___ | PgUp _Left_ _UP_ _Down__Right_
|
|||
|
-*-<|>
|
|||
|
<1 ± <2 <3 <4 | 4> 3> 2> _±_ 1>
|
|||
|
^
|
|||
|
(LGUI)
|
|||
|
|
|||
|
… or this on `_MOV` for the _flat_ arrow configuration with additional _navigation_ keys:
|
|||
|
|
|||
|
BASE WLft WDn WUp WRht xxx |_Acc2_ PgUp Home End PgDn Bksp
|
|||
|
LCtl MLft MDn MUp MRht Btn1 | Btn1 Left Up Down Right RCtl
|
|||
|
LSht*- Btn5 Btn4 Btn3 Butn2 xxx |_Acc1_ Acc0 _PgUp__Home__End_ _PgDn_
|
|||
|
---------------------------------------------------------------------------
|
|||
|
LAlt Del Ent ___ | PgUp _Left_ _UP_ _Down__Right_
|
|||
|
-*-<|>
|
|||
|
<1 ± <2 <3 <4 | 4> 3> 2> _±_ 1>
|
|||
|
^
|
|||
|
(LGUI)
|
|||
|
|
|||
|
… or this on `_MOV` for the _flat_ arrow configuration, […], and vi(1) layout:
|
|||
|
|
|||
|
<pinky2<pinky<ring <middl<index<indx2| indx2>index>middl>ring> pinky>pink2>
|
|||
|
<|>-*-
|
|||
|
BASE WLft WDn WUp WRht xxx |_Acc2_ PgUp Home End PgDn Bksp
|
|||
|
LCtl MLft MDn MUp MRht Btn1 | Left Down Up Right Btn1 RCtl // vi as in Qwerty
|
|||
|
LSht*- Btn5 Btn4 Btn3 Butn2 xxx |_Acc1_ Acc0 _PgUp__Home__End_ _PgDn_
|
|||
|
---------------------------------------------------------------------------
|
|||
|
LAlt Del Ent ___ | PgUp _Left_ _Down__Up_ _Right_ // vi as in Qwerty
|
|||
|
-*-<|>
|
|||
|
<1 ± <2 <3 <4 | 4> 3> 2> _±_ 1>
|
|||
|
^
|
|||
|
(LGUI)
|
|||
|
|
|||
|
For the 'arrow' hardware layout (additional key on the right), keys on the first
|
|||
|
row are sacrificed and lost. The right most key on the second row is also lost.
|
|||
|
The two keys on places 3 and 4 when counting from the right on the second row,
|
|||
|
are being moved to the spots for Btn2 and Btn3 on the hand that also has the
|
|||
|
arrows (those keys are otherwise twice defined for left and right hand).
|
|||
|
|
|||
|
- - -
|
|||
|
|
|||
|
_RAR (RARe keys. Power keys, Unicode mode, Alternate Base, Media, Brightness, Speed, Size, leds, …)
|
|||
|
|
|||
|
<pink2<pinky <ring <middl <indexx<indx2| indx2>index>middl>ring> pinky> pink2>
|
|||
|
<|> -*- //(toggle) on _FUN
|
|||
|
BASE Cnt/Mx Cnull CWmin CRprt Speed | SRprt Play Next Prev Stop RSht(•)
|
|||
|
CapsL Power• Wake• Sleep• Pause• ScrLk | PrtSc xxx Vol+ Vol- Mute Insert // • requires Shift
|
|||
|
☑ uLNX uBSD uOSX uWIN uWNC | xxx xxx Bri+ Bri- xxx APP // Ü(nicode) tester
|
|||
|
----------------------------------------------------------------------------
|
|||
|
SLed MLeds LGUI xxx | !Alter xxx RGUI ___ // Mid-led, Side-leds, !Alternate
|
|||
|
<|> -*- // (Hold) on Base
|
|||
|
<1 ± <2 <3 <4 | 4> 3> 2> ± 1>
|
|||
|
^ ^
|
|||
|
(LGUI) (_MOV)
|
|||
|
|
|||
|
Remarks. !Alter switches between normal and alternate Base layer.
|
|||
|
|
|||
|
☑ is a Unicode tester key. uLNX for Linux Unicode input encoding, uBSD
|
|||
|
for BSD Unix, uWIN for Windos, uWNC for another Windos encoding. The
|
|||
|
change is retained between on/off power cycles.
|
|||
|
|
|||
|
MLed switches on/off the middle led, SLeds switches on/off the side leds.
|
|||
|
|
|||
|
The keys marked with • require Shift to be activated, as a means of
|
|||
|
preventing accidents. Shift here is on (Base) 'Backspace' (upper/right key)
|
|||
|
which also reduces accidents (combinations which are never pressed
|
|||
|
normally). If you press these keys without 'shift' they print their own
|
|||
|
name between angled brackets. Example: pressing the 2nd key on the 3rd
|
|||
|
row prints `“<POWER>”`.
|
|||
|
|
|||
|
Bri+, Bri-: screen brightness (if your system supports it.)
|
|||
|
|
|||
|
Speed: toggles speed measuring on/off. SRprt: writes your speed.
|
|||
|
See topic about Speed measuring.
|
|||
|
|
|||
|
Cnt/Mx, Cnull CWmin, CRprt: text size measuring. See topic.
|
|||
|
|
|||
|
- - -
|
|||
|
|
|||
|
|
|||
|
Layer _PAD Numbers Pad (special symbol versions; regular '1' is not the same as this numpad '1', etc)
|
|||
|
|
|||
|
<pink2 <pinky<ring <middl<index<indx2| indx2>index>middl>ring> pinky>pink2>
|
|||
|
-*- <|> //(toggle) on _FUN
|
|||
|
BASE xxx xxx .DEL 4LEFT 2DOWN | 8UP 6RGHT * xxx xxx Bspc
|
|||
|
LCtl 1END 2DOWN 3PGDN 4LEFT 5 | 6RGHT 7HOME 8UP 9PGUP 0INS -
|
|||
|
LSht xxx xxx / xxx = | + 3PGDN 1END 7HOME 9PGUP RSht
|
|||
|
-*------------------------------------------------------------------------- //-*- toggle on Base
|
|||
|
LAlt Del Tab ENT | NUML xxx RGUI RAlt
|
|||
|
<|>
|
|||
|
<1 ± <2 <3 <4 | 4> 3> 2> ± 1>
|
|||
|
^ ^
|
|||
|
(LGUI) (_MOV)
|
|||
|
|
|||
|
Remarks: The keys between `.DEL` and `*`, `+` and `RSht` constitute sort of
|
|||
|
navigation clusters, to make it easier to find the number pad versions thereof.
|
|||
|
|
|||
|
This is the variety for `_PAD` layer, which resembles a numerical keypad:
|
|||
|
|
|||
|
Layer _PAD (Number pad, square layout)
|
|||
|
|
|||
|
<pink2 <pinky<ring <middl<index<indx2| indx2>index>middl>ring>pin>pink2>
|
|||
|
<|>
|
|||
|
BASE xxx xxx xxx xxx xxx | = 7HOME 8UP 9PGUP - Bspc
|
|||
|
LCtl xxx xxx xxx xxx xxx | * 4LEFT 5 6RGHT + RCtl
|
|||
|
LSht xxx xxx xxx xxx xxx | / 1END 2DOWN 3PGDN , RSht
|
|||
|
------------------------------------------------------------------------
|
|||
|
LAlt Del Tab ENT | NUML 0INS .DEL RAlt
|
|||
|
<|>
|
|||
|
<1 ± <2 <3 <4 | 4> 3> ± 2> 1>
|
|||
|
^ ^
|
|||
|
(LGUI) (RGUI)¹
|
|||
|
|
|||
|
₁) Note anomaly, see Base Numpad for details `./base_numpad.md`.
|
|||
|
Different placement and different meaning, compared to the usual common layers.
|
|||
|
|
|||
|
- - -
|
|||
|
|
|||
|
|
|||
|
Layer _ACC (ACCented characters, see _RAR layer for input modes)
|
|||
|
|
|||
|
<pink2 <pinky<ring <middl<index<indx2| indx2>index>middl>ring> pinky>pink2>
|
|||
|
-*- <|> //(toggle) on _FUN
|
|||
|
BASE áÁ óÓ éÉ úÚ íÍ | ýÝ ijIJ çÇ øØ åÅ Bksp
|
|||
|
LCTL(Tab) äÄ öÖ ëË üÜ ïÏ | ÿŸ œŒ æÆ ñÑ ß μ
|
|||
|
LSht àÀ òÒ èÈ ùÙ ìÌ | îÎ ûÛ êÊ ôÔ â RSht
|
|||
|
----------------------------------------------------------------------------
|
|||
|
LAlt ___ ___ Ent | Spc ___ ___ RAlt
|
|||
|
-*- <|> //(hold) on Base
|
|||
|
<1 ± <2 <3 <4 | 4> 3> 2> ± 1>
|
|||
|
… …
|
|||
|
|
|||
|
- - -
|
|||
|
|
|||
|
|
|||
|
Layer _DRA (DRAwings, whatever else (rendering width might vary in different applications))
|
|||
|
|
|||
|
<pink2<pinky<ring <middl<index<indx2| indx2>index>middl>ring> pinky>pink2>
|
|||
|
-*- <|> //(toggle) on _FUN
|
|||
|
BASE “„ ”≤ £≥ ∅ ¢ ±ƒ | ❦♥ 🙂🙁 👍👎 ⁽₍ ⁾₎ Bspc
|
|||
|
Tab ¹₁ ²₂ ³₃ ⁴₄ ⁵₅ | ⁶₆ ⁷₇ ⁸₈ ⁹₉ ⁰₀ RCTL
|
|||
|
LSht 「━ 」─ °〇 •§ …· | ☐☒ ☑🗹 ¿¡ 《┄ 》┅ RSht // ☐ ☒ ☑ 🗹 or ⮘ ⮙ ⮚ ⮛
|
|||
|
-------------------------------------------------------------------------
|
|||
|
LAlt ___ ___ Ent | Spc ___ ___ RAlt
|
|||
|
-*- <|> -*- //(hold) on Base
|
|||
|
<1 ± <2 <3 <4 | 4> 3> 2> ± 1>
|
|||
|
^ ^
|
|||
|
(LGUI) (_MOV)
|
|||
|
|
|||
|
Remarks. ☐ ☒ ☑ 🗹 or ⮘ ⮙ ⮚ ⮛
|
|||
|
- - -
|
|||
|
|
|||
|
Layer _BON (Bonus layer, a variety of more stuffs.)
|
|||
|
|
|||
|
<pink2<pinky<ring <middl<index<indx2| indx2>index>middl>ring> pinky>pink2>
|
|||
|
-*- <|> //(toggle) on _FUN
|
|||
|
BASE ‛ 🛠 ’ ⬆ ¤ 🄯 ∑ © ‰ ‱ | ★ ٭ 😊 ⍨ × ⃰ √ ⁻ ⁺ Bksp
|
|||
|
`~ ① ⬅ ② ⬇ ③ ➡ ④ ┏ ⑤ ┓ | ⑥ ┃ ⑦ ┇ ⑧ ╋ ⑨ ⓪ ∞ — ≈ // — is a dash (larger)
|
|||
|
LSht ‹ › ÷ ☞ ┗ ≠ ┛ | ✗ ┣ ✓ ┫ ⚠ « » RSht
|
|||
|
-------------------------------------------------------------------------
|
|||
|
Left ___ ___ Ent | Spc ___ ___ Right
|
|||
|
-*- -*- <|> -*- // Activation on Base
|
|||
|
<1 ± <2 <3 <4 | 4> 3> 2> ± 1>
|
|||
|
^ ^
|
|||
|
(LGUI) (_MOV)
|
|||
|
|
|||
|
- - -
|
|||
|
|
|||
|
4.5 Movement layer options
|
|||
|
--------------------------
|
|||
|
The movement layer (`_MOV`) has several configuration options. You
|
|||
|
can either have _triangle_ configuration arrows on the _left_ hand
|
|||
|
(with navigation keys around it), or a _flat_ arrow configuration on
|
|||
|
the _right_ hand (with navigation above it).
|
|||
|
|
|||
|
You can configure for the _arrow_ hardware layout (one additional hardware
|
|||
|
key on the right). The additional key on the Base layer can toggle to the
|
|||
|
movement layer, and than becomes part of the arrow cluster. For both
|
|||
|
versions (_triangle_ arrows left hand or _flat_ arrows right hand) you
|
|||
|
can compile this second arrow cluster to be completed with navigation keys
|
|||
|
(Home, End, PageUp, PageDown).
|
|||
|
|
|||
|
![Minivan layout Image MOV 3 defaultf](http://socialism.nl/misc/minivan/minivan_mov_layer_flat_hw-basic_vb.jpg)
|
|||
|
|
|||
|
![Minivan layout Image MOV 3b default](http://socialism.nl/misc/minivan/minivan_mov_layer_triangle_hw-basic_vb.jpg)
|
|||
|
|
|||
|
^ `#define ARROWS_TRIANGLE`
|
|||
|
|
|||
|
![Minivan illustration BASE towards 3](http://socialism.nl/misc/minivan/minivan_layer_illustration_base_mov_hw-arrow_vb.jpg)
|
|||
|
|
|||
|
^ Illustration of accessing the arrows/navigation with a key on the Base layer
|
|||
|
|
|||
|
![Minivan layout Image MOV 3b + arrow](http://socialism.nl/misc/minivan/minivan_mov_layer_hardw-arrow_triangle_vb.jpg)
|
|||
|
|
|||
|
^ `#define ARROWS_TRIANGLE`, `MORE_KEY__ARROW`, `MOREKEY2_ARROW_CLUSTER`, `MORE_key2 _MOV_UP`
|
|||
|
|
|||
|
![Minivan layout Image MOV 3b + navig](http://socialism.nl/misc/minivan/minivan_mov_layer_hardw-arrow_triangle_addnav_vb.jpg)
|
|||
|
|
|||
|
^ `#define ARROWS_TRIANGLE`, `MORE_KEY__ARROW`, `MOREKEY2_ARROW_CLUSTER`, `MOREKEY2_ADD_NAVIGATION`, `MORE_key2 _MOV_UP` (note change on previously BTN2/3)
|
|||
|
|
|||
|
![Minivan layout Image MOV 3 + arrows](http://socialism.nl/misc/minivan/minivan_mov_layer_hardw-arrow_flat_vb.jpg)
|
|||
|
|
|||
|
^ `#define MORE_KEY__ARROW`, `MOREKEY2_ARROW_CLUSTER`, `MORE_key2 _MOV_UP`
|
|||
|
|
|||
|
![Minivan layout Image MOV 3 + naviga](http://socialism.nl/misc/minivan/minivan_mov_layer_hardw-arrow_flat_addnav_vb.jpg)
|
|||
|
|
|||
|
^ `#define MORE_KEY__ARROW`, `MOREKEY2_ARROW_CLUSTER`, `MOREKEY2_ADD_NAVIGATION`, `MORE_key2 _MOV_UP` (note change on previously BTN2/3)
|
|||
|
|
|||
|
![Minivan layout Image MOV 3 vi arrow](http://socialism.nl/misc/minivan/minivan_mov_layer_vi_vb.jpg)
|
|||
|
|
|||
|
^ `#define` \[`MORE_KEY__ARROW`, `MOREKEY2_ARROW_CLUSTER`\] `VI_SWITCHERYDOO`, `#undef ARROWS_TRIANGLE`
|
|||
|
|
|||
|
4.6 Numbers pad layer options
|
|||
|
-----------------------------
|
|||
|
This concerns the numbers pad layer, the one that is part of the common layers.
|
|||
|
|
|||
|
![Minivan layout Image PAD](http://socialism.nl/misc/minivan/minivan_pad_layer_vc.jpg)
|
|||
|
|
|||
|
![Minivan layout Image PAD squared](http://socialism.nl/misc/minivan/minivan_pad_layer_squared_vb.jpg)
|
|||
|
|
|||
|
^ `#define NUMPAD_COMMON_SQUARE`
|
|||
|
|
|||
|
5 Led colors for layers
|
|||
|
=======================
|
|||
|
• letters Led: low-white/teal/off⁽¹⁾ _DEF_BASE "Default base"
|
|||
|
• letters (alternate) Led: off/teal/low-white _ALT_BASE "Alternate base"
|
|||
|
• numbers Led: blue/blue/blue _DEF_NSY "Default Numbers SYmbols"
|
|||
|
• numbers (alternate) Led: blue/blue/low-white _ALT_NSY "Alternate Numbers SYmbols"
|
|||
|
• number pad symbol versions Led: green/low-white/blue ⁽²⁾ _PAD "numbers PAD"
|
|||
|
• accented characters é, ø, ß … Led: cyan/cyan/cyan _ACC "ACCented"
|
|||
|
• Unicode symbols, ¹, ±, ° … Led: yellow/yellow/yellow _DRA "DRAwings"
|
|||
|
• Unicode symbols, ①, ‰, ÷ … Led: off/yellow/off _BON "Bonus"
|
|||
|
• function keys, Led: red/red/orange ⁽³⁾ _FUN "FUNction keys"
|
|||
|
• and a movement layer Led: green/green/green _MOV "MOVement"
|
|||
|
• keys like Power, Play, Led: white/purple/purple ⁽⁴⁾ _RAR "RARe keys"
|
|||
|
|
|||
|
Leds:
|
|||
|
• ⁽¹⁾ The low-white led is bright-white when capslock is on. Optionally the middle led (cyan) can
|
|||
|
show the color of the last layer that was active.
|
|||
|
• ⁽²⁾ The colors are reversed blue/low-white/green when numlock is on.
|
|||
|
Left led color memory aid: same as either numbers or movement layer for numlock on/off.
|
|||
|
• ⁽³⁾ The colors are reversed to orange/red/red when set to de-activate after one F-key press.
|
|||
|
• ⁽⁴⁾ The colors are reversed purple/purple/white, indicating which of the two base layers
|
|||
|
is active (see below).
|
|||
|
• Middle led: Breathing effect. When not breathing, keyboard is not working normally with the computer.
|
|||
|
- When speed measurement is active, the middle led color indicates the speed, unless
|
|||
|
text size counting set to a maximum is active.
|
|||
|
- When text size counting is active and set to a maximum amount, the middle led color
|
|||
|
indicates progress to the limit from green to red, flipping white/red on the limit.
|
|||
|
- When on Base layer it shows a teal color, or (compile option) the layer most recently active.
|
|||
|
- When the left/right leds are off, when on Base, it shows a teal color (not last active), even
|
|||
|
if so compiled.
|
|||
|
• Leds can be switched on/off on the _RAR layer (SLeds, MLed).
|
|||
|
|
|||
|
|
|||
|
6 Compile options
|
|||
|
=================
|
|||
|
Layout
|
|||
|
|
|||
|
• Several layouts to choose from: Qwerty, Dvorak, Colemak, Workman, Numpad.
|
|||
|
|
|||
|
• You can use the keyboard with two different letters/number-symbols layouts.
|
|||
|
|
|||
|
Hardware
|
|||
|
|
|||
|
• Hardware key configurations: _default_ (44), _arrow_ (45), _south paw_ (45), _arrow_ + _south paw_ (46).
|
|||
|
|
|||
|
![Minivan illustration 0](http://socialism.nl/misc/minivan/minivan_illustration_arrow_southpaw.jpg)
|
|||
|
(On the `_RAR` layer, the additional _south paw_ key is more to the right.)
|
|||
|
|
|||
|
• What the additional hardware keys for _arrow,_ _south paw_ should be.
|
|||
|
|
|||
|
Navigation cluster
|
|||
|
|
|||
|
• An arrow cluster for _arrow_ hardware configuration, on the `_MOV` layer.
|
|||
|
|
|||
|
• All navigation keys around _arrow_ hardware configuration arrow cluster on `_MOV` layer.
|
|||
|
|
|||
|
• Navigation cluster in a triangle (WASD) (left hand), or flat layout with optional vi(1) layout.
|
|||
|
|
|||
|
Numpad (in common layers)
|
|||
|
|
|||
|
• Numpad with numbers in a row.
|
|||
|
|
|||
|
• Numpad with layers in a block form.
|
|||
|
|
|||
|
Special functions
|
|||
|
|
|||
|
• Set speed measuring on/off at keyboard startup.
|
|||
|
|
|||
|
• Set text size measuring on/off at keyboard startup.
|
|||
|
|
|||
|
Changing symbols
|
|||
|
|
|||
|
• Switching the GUIs left/right, and some other specific key changes.
|
|||
|
|
|||
|
• Reduce firmware size/bloat: remove or eviscerate Unicode layer(s).
|
|||
|
|
|||
|
For the complete list, see `./user_config.h`.
|
|||
|
|
|||
|
7 Language support
|
|||
|
==================
|
|||
|
|
|||
|
7.1 Input methods
|
|||
|
=================
|
|||
|
There seem to generally be two ways in QMK for typing a language other than English.
|
|||
|
One is to use a language specific remapping on the computer operating side, and
|
|||
|
to use the QMK supplied symbols in the keymaps. This may include the use of a “dead key”.
|
|||
|
Presumably you can also still use the Unicode symbols.
|
|||
|
|
|||
|
⚠ *There are currently no such Base pair layouts available. If this is the method you want,
|
|||
|
you may want to look elsewhere.*
|
|||
|
|
|||
|
The other way is to type the additional symbols in Unicode. _The computer
|
|||
|
operating must understand these special sequences._ Several Unicode
|
|||
|
input modes are available, which can be changed while the keyboard is
|
|||
|
running. There is no need for a “dead key”. The language setting
|
|||
|
in the computer operating system can be set to English. This layout is
|
|||
|
designed for this method, to avoid the dead key problem.
|
|||
|
|
|||
|
7.2 Unicode symbols
|
|||
|
===================
|
|||
|
For the remainder of this chapter the Unicode input method is assumed.
|
|||
|
|
|||
|
You may be able to type your language, with the help of some of the Unicode
|
|||
|
layers and one of these layouts: Qwerty, Dvorak, Coleman, Workman. The following
|
|||
|
languages might work for you this way.
|
|||
|
|
|||
|
• Dutch (éëèïijí)
|
|||
|
• English (—“”‛’)
|
|||
|
• French (çœæéèàòùîûêôâëïüÿ)
|
|||
|
• German (äöüß)
|
|||
|
• Norwegian, Danish (œæøå, éêèëóêò, üáà …)
|
|||
|
• Spanish (¿¡ñ)
|
|||
|
• Swedish (äåö …)
|
|||
|
|
|||
|
The following quotation marks are available, which seems it would cover these languages:
|
|||
|
|
|||
|
'test' "test" “test” „test” ‛test’ ,test’¹ «test» ‹test› 《test》 「test」 — test
|
|||
|
|
|||
|
¹) Left side is a basic comma.
|
|||
|
|
|||
|
See the `_ACC` _accented characters_ layer for all characters with diacretic markings.
|
|||
|
If you miss a symbol, you could replace one you don't use and add it yourself (by
|
|||
|
reprogramming the source code).
|
|||
|
|
|||
|
8 Speed measuring
|
|||
|
=================
|
|||
|
‛Speed’ starts speed measuring.
|
|||
|
‛SRprt’ stands for ‛Speed Report’:
|
|||
|
• Tap to get your speed report.
|
|||
|
• Hold for a while for led color compilation (see below).
|
|||
|
☞ Text size counting (see below) middle led colors take precedence,
|
|||
|
when a maximum is set, over layer colors or speed measurement.
|
|||
|
|
|||
|
With the key ‛Speed’ on the `_RAR` layer, the speed of your latest
|
|||
|
completed batch of 25 keypresses is computed, as well as the average of
|
|||
|
all your batches of 25 keys. The speed is displayed as the color of the
|
|||
|
middle led, which otherwise shows the layer color. A bright white middle
|
|||
|
led indicates ‛Speed’ has just been activated.
|
|||
|
|
|||
|
With the key ‛SRprt’ (short for ‛Speed Report’), the keyboard
|
|||
|
will write your typing speed either in keystrokes per second (k/s)
|
|||
|
or words-per-minute (wpm), depending on your compilation configuration.
|
|||
|
|
|||
|
“Keystrokes per second” uses the following format: `<A k/s B.B k/s
|
|||
|
Cx25keys>`. A is the amount of key presses per second (k/s) of your
|
|||
|
last batch, B.B is your average over the last C batches of keys.
|
|||
|
When using “Words per minute”, A is in word-per-minute, B is also
|
|||
|
in words-per-minute: `<A wpm B wpm Cx25keys>`, no decimal precision.
|
|||
|
Example: <150wpm;108wpm20x25keys>
|
|||
|
|
|||
|
Batches with 0 k/s are not counted to the average. You can take a
|
|||
|
longer break without it affecting your average.
|
|||
|
|
|||
|
8.1 Speed Led color compilation assist
|
|||
|
--------------------------------------
|
|||
|
If you hold the ‛Speed Report’ key for one second, it will increment the
|
|||
|
speed, and led color accordingly. This can be helpful when configuring
|
|||
|
your speed measuring compile settings. This works best with speed
|
|||
|
measuring set off.
|
|||
|
|
|||
|
9 Text size measuring
|
|||
|
=====================
|
|||
|
‛Cnt/Mx’ stands for ‛Count/Maximum’:
|
|||
|
• Tap to start counting, tap again to suspend.
|
|||
|
• Hold > 0.5 seconds for maximum menu.
|
|||
|
‛Cnull’ stands for ‛Count null’:
|
|||
|
• Tap to set the counts to zero.
|
|||
|
‛CWmin’ stands for ‛Count Word minus’:
|
|||
|
• Tap to detract one word from the word count.
|
|||
|
• Hold > 0.5 seconds to detract 10 words.
|
|||
|
‛CRprt’ stands for ‛Count Report’:
|
|||
|
• Tap to get a counting report.
|
|||
|
☞ ‛Count’ and ‛Speed’ (see above) reports get added to the
|
|||
|
character count, but not to the word count.
|
|||
|
☞ Auto-repeating keys do not get counted as characters.
|
|||
|
|
|||
|
You can count your text by character and word, by activating the key
|
|||
|
‛Count’ on the `_RAR` layer. Pressing ‛Count’ again will suspend
|
|||
|
counting, pressing it yet again resumes where the count left off earlier.
|
|||
|
The middle led turns cyan when no maximum is set (see below),
|
|||
|
or to green when it is set.
|
|||
|
|
|||
|
You can set a maximum to type, with the ‛Cnt/Mx’ key. In your
|
|||
|
editor (or wherever typing these characters is harmless) you will get
|
|||
|
the following menu by pressing the ‛Cnt/MX’ key for at least half
|
|||
|
a second: `<Nc|w>`. In here: *N* stands for your numerical input, *c*
|
|||
|
for a maximum count in *characters* or *w* for a maximum in *words.*
|
|||
|
|
|||
|
Start typing a number, finish with either *c* or *w* to make the maximum
|
|||
|
be counted in either characters or words. If you want to leave the
|
|||
|
menu before giving *c* or *w*, enter a *dot* ‛.’ or ‛Escape’,
|
|||
|
which will leave the maximum value at 0 (zero). A maximum value of zero
|
|||
|
implies there is no maximum.
|
|||
|
|
|||
|
Setting a maximum of 1000 characters looks like so:
|
|||
|
|
|||
|
Hold ‛Cnt/MX’ results in: `<Nc|w>`
|
|||
|
Then type “1000” results in: `<Nc|w>1000`
|
|||
|
Then type “c” results in: `<Nc|w>1000->1000c`
|
|||
|
At this point the keyboard is out of this special input menu.
|
|||
|
|
|||
|
The keyboard indicates what it accepted as your input, by
|
|||
|
repeating the number, just before your last input is being printed.
|
|||
|
|
|||
|
With a maximum established, the middle led color goes from green to red,
|
|||
|
as you type. When the maximum is reached, the keyboard will output a
|
|||
|
Backspace character for every key you subsequently press, making it
|
|||
|
impossible to go any further, until text size counting has been disabled,
|
|||
|
or the count is reduced. The middle led changes color between red and
|
|||
|
white while at the maximum set size, for every new input character.
|
|||
|
|
|||
|
To get your word count report, press ‛CReport’ short for: ‛Count
|
|||
|
Report’. It comes in the form: `<Ac;Bw>`, where A is your character
|
|||
|
count, and B is your word count. Example: `<5420c;547w>`.
|
|||
|
|
|||
|
When a maximum is established, the report will only be given in
|
|||
|
either characters or words, and the maximum is given with it, like so:
|
|||
|
`<66w>[200w]`. 66 words have been written, a maximum of 200 words has
|
|||
|
been set.
|
|||
|
|
|||
|
If you have a maximum established and use it across different articles,
|
|||
|
you no longer have the total count. You can activate speed measuring,
|
|||
|
which in its report includes the total characters pressed.
|
|||
|
|
|||
|
9.1 Text size Usage
|
|||
|
-------------------
|
|||
|
It is assumed that you will take the report in the document you are
|
|||
|
editing, and then delete it. If you do character counting, the value of
|
|||
|
the report itself is added to the character count. Therefore you should
|
|||
|
delete that without using an auto-repeating on the deletion key. That
|
|||
|
way the characters are subtracted again.
|
|||
|
|
|||
|
If you count in words, the report is not added to the word count. You
|
|||
|
can delete it however you want.
|
|||
|
|
|||
|
This works the same for a ‛*Speed* Report’ you might like to take.
|
|||
|
You can take it in the document, and then delete it in the same,
|
|||
|
without affecting the text size counting in characters or words.
|
|||
|
When deleting keys with Backspace or Delete, the character count goes down
|
|||
|
accordingly, the word count does not.
|
|||
|
|
|||
|
Words are counted by counting Space and Enter key presses. Immediately
|
|||
|
repeating blanks do not add to the word count. You can only manually
|
|||
|
subtract from the word count, using the key ‛CWmin’ short for ‛Count
|
|||
|
Word minus’. This means that if you delete sections in your document,
|
|||
|
you need to manually subtract the same words.
|
|||
|
|
|||
|
Example: after typing something and then typing `<Enter>` twice to start a
|
|||
|
new paragraph, counts for one word. When deleting three words with their
|
|||
|
three blank areas, then tapping ‛Count Word minus’ three times,
|
|||
|
should result in an accurate word count. To add words to the count,
|
|||
|
type mock ones and then delete them: “x x x x” adds *three* words,
|
|||
|
“y y y ” also adds three words (three separate blank spaces).
|
|||
|
|
|||
|
Layer changes, shift and unusual/complex keys do not get counted.
|
|||
|
Navigation, arrow and mouse keys do not get counted. Auto-repeating
|
|||
|
of keys does not affect the *character* count, therefore should be avoided
|
|||
|
if you want to count in characters.
|
|||
|
|
|||
|
10 Making your own base layer(s)
|
|||
|
================================
|
|||
|
You can insert your own `_DEF_BASE`, `_DEF_NSY` and/or `_ALT_BASE`, `_ALT_NSY`
|
|||
|
Base plus number/symbols layer pairs, integrate it nicely with the rest
|
|||
|
of the code, and re-define a special characters layer to go with it if
|
|||
|
you want (etc). The idea is to make it easy to change the alphanumerical
|
|||
|
keys, while leaving the modifiers, layer switch keys etc. the same.
|
|||
|
`YOUR_KEYMAP` stands for a name you choose.
|
|||
|
|
|||
|
First we will look at a simple keymap, without its own configuration
|
|||
|
options or header file.
|
|||
|
|
|||
|
① Make a file named: `./base_YOUR_KEYMAP.c`), with at least
|
|||
|
those two layers: _..._BASE and _..._NSY. It is probably best to
|
|||
|
copy one of the existing `./base_....c` files, and edit that.
|
|||
|
|
|||
|
② Add a #define to `./user_config.h`:
|
|||
|
#define BASE_YOUR_KEYMAP__DEF_BASE
|
|||
|
#define BASE_YOUR_KEYMAP__ALT_BASE
|
|||
|
Under the topic ‛Base layers’ there is a comment to help you.
|
|||
|
|
|||
|
③ Edit ./keymap.c to have your new file #included, using your just defined
|
|||
|
preprocessor element. Close to the other #includes is a comment there to
|
|||
|
help you. Look just under the line with this, in ./keymap.c:
|
|||
|
|
|||
|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|||
|
(…)
|
|||
|
// // ⬇ insert your ./base_YOUR_KEYMAP.c #include here:
|
|||
|
|
|||
|
// # if defined(BASE_YOUR_KEYMAP__DEF_BASE) || defined(BASE_YOUR_KEYMAP__ALT_BASE)
|
|||
|
// # include "./base_YOUR_KEYMAP.c" // Your Keymap.
|
|||
|
// # endif
|
|||
|
|
|||
|
Now you have integrated your base layers alternative. To compile it:
|
|||
|
|
|||
|
④ _Activate_ your #define BASES_YOUR_KEYMAP__DEF_BASE or
|
|||
|
BASES_YOUR_KEYMAP__ALT_BASE in `./user_config.h`,
|
|||
|
_Remove_ any other base layers from being defined on the
|
|||
|
same spot _DEF_BASE or _ALT_BASE to prevent a conflict.
|
|||
|
|
|||
|
⑤ Check Pre-processing with:
|
|||
|
> gcc -E keymap.c | less
|
|||
|
|
|||
|
⑥ Compile and flash to your keyboard.
|
|||
|
|
|||
|
You can redefine any layer in your new `./base_YOUR_KEYMAP.c`
|
|||
|
You can do that by setting one or more of the `BASESFILE_LAYER_...` defines in
|
|||
|
your own `./base_YOUR_KEYMAP.c` file. See near the top of an existing
|
|||
|
`./base_....c` file for clues.
|
|||
|
`_ACC` in particular is a layer meant to augment a keymap with special
|
|||
|
characters for a given language/layout in the base layer(s). Perhaps you
|
|||
|
want to redefine it, for example.
|
|||
|
|
|||
|
Example: Having done the above points ① ➡ ④ for a `./base_YOUR_KEYMAP.c` file.
|
|||
|
Let's say you re-arranged keys on `_ACC` to suit ... French.
|
|||
|
|
|||
|
⑦ In your `./base_YOUR_KEYMAP.c`:
|
|||
|
#define `BASESFILE_LAYER_ACC`
|
|||
|
The `_ACC` in ./keymap.c will now be ignored.
|
|||
|
|
|||
|
You can re-define `_ACC` in your own file.
|
|||
|
|
|||
|
⑧ Copy an existing `_ACC` layer into `./base_YOUR_KEYMAP.c`
|
|||
|
Edit it so that French characters like ‛Ç’ ‛«»’, ‛œ’, ‛æ’,
|
|||
|
‛ô’, ‛é’ etc. are in positions that work best. You can look in
|
|||
|
`unicode_weurope.h` to find some Unicode points already defined.
|
|||
|
|
|||
|
⑨ Compile and flash to your keyboard.
|
|||
|
|
|||
|
Now we will look at a more complicated keymap, where you are also altering
|
|||
|
preprocessor constants defined in `./user_config.h`. (Warning, perhaps this
|
|||
|
is overkill … ;-)
|
|||
|
|
|||
|
Example: the `./base_numpad.c` has an option to entirely eviscerate the
|
|||
|
`_PAD` layer, for convenience. (Why is this even useful ? Good question !
|
|||
|
One reason could be that it can set up a default, so that anyone who chooses
|
|||
|
this `./base_numpad.c` Base layer, automatically is eviscerating the `_PAD`
|
|||
|
_common_ layer, without having to do anything else. On the downside, it
|
|||
|
could be confusing that one option is configured in two places.)
|
|||
|
|
|||
|
Having done the above points ⑦ ➡ ⑧ as well, let's say for some reason you
|
|||
|
need to reverse Left GUI and Right GUI.
|
|||
|
|
|||
|
⑨ Copy your User Configuration Block at the top of your `./base_YOUR_KEYMAP.c`
|
|||
|
and the GPL License, and place that in a new _header_ file:
|
|||
|
`./base_YOUR_KEYMAP.h`
|
|||
|
|
|||
|
① ⓪ Write the necessary code to set and unset the constant
|
|||
|
`SWITCH_GUIS` in your `./base_YOUR_KEYMAP.h` file You are encouraged
|
|||
|
to write code which overrides any setting in `./user_config.h, for
|
|||
|
those constants which you choose to affect, for simplicity sake.
|
|||
|
(This is not a C programming manual, so it won't get into this.)
|
|||
|
|
|||
|
① ① Look in `./user_config.h`, and #include your header file there, in
|
|||
|
a similar way as was done for your C code file. It should be just
|
|||
|
below the user configuration block, and has a template for you.
|
|||
|
|
|||
|
① ② Compile, flash and test.
|
|||
|
|
|||
|
① ③ It would be nice to put a remark on the general preprocessor constants
|
|||
|
which you might be affecting, that your keymap could be affecting them.
|
|||
|
You would edit the ./user_config.h comments with a short one line notice,
|
|||
|
such as:
|
|||
|
|
|||
|
*
|
|||
|
* ⚠ Note: ./base_YOUR_KEYMAP.h can overrides this setting, if compiled with that ‛Base’ layer.
|
|||
|
*/
|
|||
|
|
|||
|
Putting your `*.h` header file in `./user_config.h` isn't strictly
|
|||
|
necessary, unless you alter “general preprocessor constants”
|
|||
|
defined in `./user_config` (not local constants for your keymap only).
|
|||
|
|
|||
|
Perhaps a separate header file is overkill. On the other hand, whatever
|
|||
|
preprocessor logic is necessary after user configuration has been given,
|
|||
|
can be handled in one place, if #included as suggested. It allows you
|
|||
|
to override the settings in `./user_config.h` from your header file
|
|||
|
(because it is #included immediately below those). If a user is playing with
|
|||
|
keymaps Base compile choices, it could be convenient to play with
|
|||
|
`./base_YOUR_KEYMAP.h` settings, have everything that could be relevant
|
|||
|
close at hand, then forgetting about those settings once compiling
|
|||
|
with another Base layer, and be able to return to it with previous
|
|||
|
configuration already done.
|
|||
|
|
|||
|
You can also just #include your header file at the top of your
|
|||
|
`./base_YOUR_KEYMAP.h` file, if it does not touch anything else but your
|
|||
|
local keymap.
|
|||
|
|
|||
|
11 Eviscerations
|
|||
|
================
|
|||
|
Cutting down the keymap reduces the firmware size, and helps reducing
|
|||
|
mental clutter from having masses of symbols you might never want to use.
|
|||
|
|
|||
|
You can compile as a single layout. Define only a ‛Default’ base pair,
|
|||
|
and set `MINIFAN_SINGLE_LAYOUT` (`./user_config.h`). The leds for the
|
|||
|
base layers letters and numbers&symbols, will show up as they would for
|
|||
|
the ‛Alternate’ layer in a dual layout compilation.
|
|||
|
|
|||
|
You can remove the layers `_ACC`, `_DRA` and/or `_BON` (see
|
|||
|
`./user_config.h` around `REMOVE_ACC`).
|
|||
|
|
|||
|
You can remove a set of symbols from one or more of Unicode layers,
|
|||
|
such as not having box drawing characters on `_BON`, or no sub-script
|
|||
|
numbers on `_DRA`.
|
|||
|
|
|||
|
12 Key associations
|
|||
|
===================
|
|||
|
The keymap was designed to have the same or similar keys on the same key
|
|||
|
or close to it, on different layers. Sometimes the association goes by
|
|||
|
what finger is used, and/or on what row. For example the symbol ‛(’
|
|||
|
on the numbers-symbols layer (`_NSY`), becomes the symbol ‛⁽’ on
|
|||
|
another layer.
|
|||
|
|
|||
|
![Minivan layout Image associations](http://socialism.nl/misc/minivan/minivan-relationships_common_1500_vd.jpg)
|
|||
|
|
|||
|
13 Trouble shooting
|
|||
|
===================
|
|||
|
• Compiling
|
|||
|
|
|||
|
If the firmware is too large, you can try using a different version
|
|||
|
of the compiler, or you may have to reduce size by removing certain
|
|||
|
options.
|
|||
|
|
|||
|
• Unicode
|
|||
|
|
|||
|
Unicode is chaos: try going to `_RAR` layer, and hit the Unicode
|
|||
|
operating system buttons.
|
|||
|
|
|||
|
• Leds
|
|||
|
|
|||
|
Leds not working after flashing firmware: try going to `_RAR` layer,
|
|||
|
and hit the key MLeds and SLeds, which switch Leds on/off.
|
|||
|
|
|||
|
• Weird layer jumping
|
|||
|
|
|||
|
You weirdly end up on the `_PAD`, `_FUN` or some other layer while
|
|||
|
typing ? If you jump to layers which are on Shift key toggles, this
|
|||
|
is a typing mistake.
|
|||
|
|
|||
|
• Difficult/impossible key combinations ?
|
|||
|
|
|||
|
An example of a difficult key combination is: the modifier Control,
|
|||
|
Shift, or Alt, with media key “volume up” (or down, etc). It may
|
|||
|
work to press and hold “Control” (which should communicate “Control
|
|||
|
depressed”), then activate `_RAR` layer with the hold key (which
|
|||
|
communicates nothing to the computer attached to the keyboard),
|
|||
|
press and let go “volume up” (which should communicate just that), let
|
|||
|
go of the `_RAR` layer (which again communicates nothing), let go of
|
|||
|
the Control key (which should communicate “Control released”)..
|
|||
|
|
|||
|
14 Why you want this layout
|
|||
|
===========================
|
|||
|
☞ This layout seems easy to learn and predictable.
|
|||
|
|
|||
|
☞ The normally most used layer after letters is “numbers & symbols”
|
|||
|
(123…, !@#…, []/…, called `_NSY`). This layer you can access by either
|
|||
|
your left or right thumb, to spread fatigue.
|
|||
|
|
|||
|
☞ Right hand pinky is no longer overused, as it is on regular keyboards.
|
|||
|
|
|||
|
☞ 0-9 enumerations / numbers, they are on the same fingers as a standard
|
|||
|
keyboard.
|
|||
|
|
|||
|
☞ The symbols normally reached by shifting a number, are also still on
|
|||
|
the same fingers.
|
|||
|
|
|||
|
☞ Because one often uses an F-key only once, the layer can switch back
|
|||
|
to Base after an F-key is used.
|
|||
|
|
|||
|
☞ Modifier combination keys on `_FUN` layer for use with F-keys.
|
|||
|
|
|||
|
☞ The movement layer has a bunch of layout options, and allows for mouse
|
|||
|
use.
|
|||
|
|
|||
|
☞ The layer with Power buttons protects you from accidental keystrokes
|
|||
|
on the critical keys.
|
|||
|
|
|||
|
☞ If you need working with Control/Shift/Alt and a pointing device in
|
|||
|
right hand, you can quickly get uncluttered such keys by tapping left shift.
|
|||
|
|
|||
|
☞ The accented layer makes it possible to set the keyboard in a mode
|
|||
|
on the computer side without dead-keys.
|
|||
|
|
|||
|
☞ The second Unicode layer adds a fair amount of fun stuff to spice up
|
|||
|
your writing. Write H₂O, 2⁷·⁰=128, ±8 °C, §2.1, 2 ³/₈", a note⁴, £ 6.²⁵
|
|||
|
etc.
|
|||
|
|
|||
|
☞ The third Unicode layer adds a proper dash — and French style
|
|||
|
quotations «»‹› and other stuff. ① «Ça va bien», ② 5 × 3 ≠ 14,
|
|||
|
③ .083% ÷ 2 ≈ 4‱ ➡ 4.₁₅‱
|
|||
|
|
|||
|
┏━━━━━━┓
|
|||
|
┃ test ┃
|
|||
|
┅━╋━━━━━━┛
|
|||
|
┇ ④
|
|||
|
|
|||
|
☞ Speed and text size measuring, including to set a maximum on your text input.
|
|||
|
These are features not part off regular keyboards.
|
|||
|
|
|||
|
☞ Easy to create your own dual layout for letters / numbers.
|
|||
|
|
|||
|
☞ If you do want to reprogram the code, it has a lot of comments to make
|
|||
|
it easier to follow.
|
|||
|
|
|||
|
|
|||
|
15 BUGS
|
|||
|
=======
|
|||
|
No real bugs known currently. Just some minor issues …
|
|||
|
|
|||
|
The tilde ~ on the numbers-symbols layer should logically be reached on the second
|
|||
|
row without the need for _shift,_ however there seems to be a QMK limitation
|
|||
|
with this. No work around has been attempted as of yet. (It seems to be a minor issue;
|
|||
|
using shift for once seems OK.)
|
|||
|
|
|||
|
`LCTL_T` `( KC_TAB )` is not seen as a blank by word counting, use as Control is not
|
|||
|
ignored in character counting. (This minor issue is ignored for now. Tab is not
|
|||
|
normally used in text writing.)
|
|||
|
|
|||
|
The eviscerations may not have been worked out yet into the ultimate scrubbing of
|
|||
|
everything that may have become redundent, because it does complicate the code with
|
|||
|
a lot of #defines. Perhaps it should be done eventually, if there is an actual need.
|
|||
|
|
|||
|
|
|||
|
16 Resources
|
|||
|
============
|
|||
|
This links to an external file, with some development resources like
|
|||
|
Gimp .xcf files, pre-compiled hex files, …
|
|||
|
|
|||
|
[Resources](http://socialism.nl/misc/minivan/ "Additional resources")
|
|||
|
|
|||
|
17 Author(s)
|
|||
|
============
|
|||
|
This keymap.c was edited from the Minivan default, original LED
|
|||
|
support was copied/edited from ../jetpacktuxedo/ keymap. Thanks to
|
|||
|
QMK support for their help, especially Drashna.
|
|||
|
|
|||
|
_Personal note:_ This keymap came about because of a sudden need
|
|||
|
for a replacement keyboard. It took over a year to make (≈ 1.5 h/day).
|
|||
|
The goal became to make a good keymap for everyone without the time to
|
|||
|
make one, in the best keyboard format: “40%”.
|
|||
|
|
|||
|
![Keycaps blanks](http://socialism.nl/misc/minivan/keycaps_blanks_va.jpg)
|
|||
|
|
|||
|
Written on the Minivan: Jos Boersema. [contact](https://market.socialism.nl/author/ "get e-mail address there")
|
|||
|
|
|||
|
Contributions to this key map:
|
|||
|
- …
|
|||
|
|