@ -18,68 +18,91 @@
# include "quantum.h"
# define ____ KC_NO
# define ___ KC_NO
/* This is a shortcut to help you visually see your layout.
*
* The first section contains all of the arguments representing the physical
* layout of the board and position of the keys .
*
* The second converts the arguments into a two - dimensional array which
* represents the switch matrix .
/*
* ┌ ─ ─ ─ ┬ ─ ─ ─ ┬ ─ ─ ─ ┬ ─ ─ ─ ┬ ─ ─ ─ ┬ ─ ─ ─ ┬ ─ ─ ─ ┬ ─ ─ ─ ┬ ─ ─ ─ ┬ ─ ─ ─ ┬ ─ ─ ─ ┬ ─ ─ ─ ┬ ─ ─ ─ ┬ ─ ─ ─ ┬ ─ ─ ─ ┬ ─ ─ ─ ┐ ┌ ─ ─ ─ ─ ─ ─ ─ ┐
* │ 00 │ 01 │ 02 │ 03 │ 04 │ 05 │ 06 │ 07 │ 08 │ 09 │ 0 A │ 0 B │ 0 C │ 0 D │ 0 E │ 0F │ │ 0 D │ 2u Backspace
* ├ ─ ─ ─ ┴ ─ ┬ ─ ┴ ─ ┬ ─ ┴ ─ ┬ ─ ┴ ─ ┬ ─ ┴ ─ ┬ ─ ┴ ─ ┬ ─ ┴ ─ ┬ ─ ┴ ─ ┬ ─ ┴ ─ ┬ ─ ┴ ─ ┬ ─ ┴ ─ ┬ ─ ┴ ─ ┬ ─ ┴ ─ ┬ ─ ┴ ─ ─ ─ ┼ ─ ─ ─ ┤ └ ─ ┬ ─ ─ ─ ─ ─ ┤
* │ 10 │ 11 │ 12 │ 13 │ 14 │ 15 │ 16 │ 17 │ 18 │ 19 │ 1 A │ 1 B │ 1 C │ 1 D │ 1F │ │ │
* 2.25 u ├ ─ ─ ─ ─ ─ ┴ ┬ ─ ─ ┴ ┬ ─ ─ ┴ ┬ ─ ─ ┴ ┬ ─ ─ ┴ ┬ ─ ─ ┴ ┬ ─ ─ ┴ ┬ ─ ─ ┴ ┬ ─ ─ ┴ ┬ ─ ─ ┴ ┬ ─ ─ ┴ ┬ ─ ─ ┴ ┬ ─ ─ ┴ ─ ─ ─ ─ ─ ┼ ─ ─ ─ ┤ ┌ ─ ─ ┴ ┐ 2 D │ ISO Enter
* LShift │ 20 │ 21 │ 22 │ 23 │ 24 │ 25 │ 26 │ 27 │ 28 │ 29 │ 2 A │ 2 B │ 2 D │ 2F │ │ 1 D │ │
* ┌ ─ ─ ─ ─ ─ ─ ─ ─ ┐ ├ ─ ─ ─ ─ ┬ ─ ┴ ─ ┬ ─ ┴ ─ ┬ ─ ┴ ─ ┬ ─ ┴ ─ ┬ ─ ┴ ─ ┬ ─ ┴ ─ ┬ ─ ┴ ─ ┬ ─ ┴ ─ ┬ ─ ┴ ─ ┬ ─ ┴ ─ ┬ ─ ┴ ─ ┬ ─ ┴ ─ ─ ─ ─ ┬ ─ ─ ─ ┼ ─ ─ ─ ┤ └ ─ ─ ─ ┴ ─ ─ ─ ─ ┘
* │ 30 │ │ 30 │ 31 │ 32 │ 33 │ 34 │ 35 │ 36 │ 37 │ 38 │ 39 │ 3 A │ 3 B │ 3 C │ 3 D │ 3F │
* └ ─ ─ ─ ─ ─ ─ ─ ─ ┘ ├ ─ ─ ─ ─ ┼ ─ ─ ─ ┴ ┬ ─ ─ ┴ ─ ┬ ─ ┴ ─ ─ ─ ┴ ─ ─ ─ ┴ ─ ─ ─ ┴ ─ ─ ─ ┴ ─ ─ ─ ┴ ─ ─ ┬ ┴ ─ ─ ─ ┼ ─ ─ ─ ┴ ┬ ─ ┬ ─ ─ ─ ┼ ─ ─ ─ ┼ ─ ─ ─ ┤
* │ 40 │ 41 │ 42 │ 46 │ 4 B │ 4 C │ │ 4 D │ 4 E │ 4F │
* └ ─ ─ ─ ─ ┴ ─ ─ ─ ─ ┴ ─ ─ ─ ─ ┴ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┴ ─ ─ ─ ─ ┴ ─ ─ ─ ─ ┴ ─ ┴ ─ ─ ─ ┴ ─ ─ ─ ┴ ─ ─ ─ ┘
* ┌ ─ ─ ─ ─ ─ ┬ ─ ─ ─ ┬ ─ ─ ─ ─ ─ ┬ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┬ ─ ─ ─ ─ ─ ┐
* │ 40 │ 41 │ 42 │ 46 │ 4 C │ Tsangan
* └ ─ ─ ─ ─ ─ ┴ ─ ─ ─ ┴ ─ ─ ─ ─ ─ ┴ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┴ ─ ─ ─ ─ ─ ┘
*/
# define LAYOUT_all( \
k000 , k001 , k002 , k003 , k004 , k005 , k006 , k007 , k008 , k009 , k010 , k011 , k012 , k013 , k014 , k015 , \
k100 , k101 , k102 , k103 , k104 , k105 , k106 , k107 , k108 , k109 , k110 , k111 , k112 , k113 , k115 , \
k200 , k201 , k202 , k203 , k204 , k205 , k206 , k207 , k208 , k209 , k210 , k211 , k213 , k215 , \
k300 , k301 , k302 , k303 , k304 , k305 , k306 , k307 , k308 , k309 , k310 , k311 , k312 , k313 , k315 , \
k400 , k401 , k402 , k406 , k411 , k412 , k413 , k414 , k415 \
k00 , k01 , k02 , k03 , k04 , k05 , k06 , k07 , k08 , k09 , k0A , k0B , k0C , k0D , k0E , k0F , \
k10 , k11 , k12 , k13 , k14 , k15 , k16 , k17 , k18 , k19 , k1A , k1B , k1C , k1D , k1F , \
k20 , k21 , k22 , k23 , k24 , k25 , k26 , k27 , k28 , k29 , k2A , k2B , k2D , k2F , \
k30 , k31 , k32 , k33 , k34 , k35 , k36 , k37 , k38 , k39 , k3A , k3B , k3C , k3D , k3F , \
k40 , k41 , k42 , k46 , k4B , k4C , k4D , k4E , k4F \
) { \
{ k00 , k01 , k02 , k03 , k04 , k05 , k06 , k07 , k08 , k09 , k0A , k0B , k0C , k0D , k0E , k0F } , \
{ k10 , k11 , k12 , k13 , k14 , k15 , k16 , k17 , k18 , k19 , k1A , k1B , k1C , k1D , ___ , k1F } , \
{ k20 , k21 , k22 , k23 , k24 , k25 , k26 , k27 , k28 , k29 , k2A , k2B , ___ , k2D , ___ , k2F } , \
{ k30 , k31 , k32 , k33 , k34 , k35 , k36 , k37 , k38 , k39 , k3A , k3B , k3C , k3D , ___ , k3F } , \
{ k40 , k41 , k42 , ___ , ___ , ___ , k46 , ___ , ___ , ___ , ___ , k4B , k4C , k4D , k4E , k4F } \
}
# define LAYOUT_65_ansi_blocker( \
k00 , k01 , k02 , k03 , k04 , k05 , k06 , k07 , k08 , k09 , k0A , k0B , k0C , k0D , k0F , \
k10 , k11 , k12 , k13 , k14 , k15 , k16 , k17 , k18 , k19 , k1A , k1B , k1C , k1D , k1F , \
k20 , k21 , k22 , k23 , k24 , k25 , k26 , k27 , k28 , k29 , k2A , k2B , k2D , k2F , \
k30 , k32 , k33 , k34 , k35 , k36 , k37 , k38 , k39 , k3A , k3B , k3C , k3D , k3F , \
k40 , k41 , k42 , k46 , k4B , k4C , k4D , k4E , k4F \
) { \
{ k000 , k001 , k002 , k003 , k004 , k005 , k006 , k007 , k008 , k009 , k010 , k011 , k012 , k013 , k014 , k015 } , \
{ k100 , k101 , k102 , k103 , k104 , k105 , k106 , k107 , k108 , k109 , k110 , k111 , k112 , k113 , ____ , k115 } , \
{ k200 , k201 , k202 , k203 , k204 , k205 , k206 , k207 , k208 , k209 , k210 , k211 , ____ , k213 , ____ , k215 } , \
{ k300 , k301 , k302 , k303 , k304 , k305 , k306 , k307 , k308 , k309 , k310 , k311 , k312 , k313 , ____ , k315 } , \
{ k400 , k401 , k402 , ____ , ____ , ____ , k406 , ____ , ____ , ____ , ____ , k411 , k412 , k413 , k414 , k415 } \
{ k00 , k01 , k02 , k03 , k04 , k05 , k06 , k07 , k08 , k09 , k0A , k0B , k0C , k0D , ___ , k0F } , \
{ k10 , k11 , k12 , k13 , k14 , k15 , k16 , k17 , k18 , k19 , k1A , k1B , k1C , k1D , ___ , k1F } , \
{ k20 , k21 , k22 , k23 , k24 , k25 , k26 , k27 , k28 , k29 , k2A , k2B , ___ , k2D , ___ , k2F } , \
{ k30 , ___ , k32 , k33 , k34 , k35 , k36 , k37 , k38 , k39 , k3A , k3B , k3C , k3D , ___ , k3F } , \
{ k40 , k41 , k42 , ___ , ___ , ___ , k46 , ___ , ___ , ___ , ___ , k4B , k4C , k4D , k4E , k4F } \
}
# define LAYOUT_ansi( \
k000 , k001 , k002 , k003 , k004 , k005 , k006 , k007 , k008 , k009 , k010 , k011 , k012 , k013 , k015 , \
k100 , k101 , k102 , k103 , k104 , k105 , k106 , k107 , k108 , k109 , k110 , k111 , k112 , k113 , k115 , \
k200 , k201 , k202 , k203 , k204 , k205 , k206 , k207 , k208 , k209 , k210 , k211 , k213 , k215 , \
k300 , k302 , k303 , k304 , k305 , k306 , k307 , k308 , k309 , k310 , k311 , k312 , k313 , k315 , \
k400 , k401 , k402 , k406 , k411 , k412 , k413 , k414 , k415 \
# define LAYOUT_65_ ansi_blocker_split_bs ( \
k00 , k01 , k02 , k03 , k04 , k05 , k06 , k07 , k08 , k09 , k0A , k0B , k0C , k0D , k0E , k0F , \
k10 , k11 , k12 , k13 , k14 , k15 , k16 , k17 , k18 , k19 , k1A , k1B , k1C , k1D , k1F , \
k20 , k21 , k22 , k23 , k24 , k25 , k26 , k27 , k28 , k29 , k2A , k2B , k2D , k2F , \
k30 , k32 , k33 , k34 , k35 , k36 , k37 , k38 , k39 , k3A , k3B , k3C , k3D , k3F , \
k40 , k41 , k42 , k46 , k4B , k4C , k4D , k4E , k4F \
) { \
{ k000 , k0 01 , k00 2 , k0 03 , k00 4 , k0 05 , k00 6 , k0 07 , k00 8 , k0 09 , k010 , k011 , k012 , k013 , ____ , k015 } , \
{ k100 , k10 1 , k10 2 , k10 3 , k10 4 , k10 5 , k10 6 , k10 7 , k10 8 , k10 9 , k110 , k111 , k112 , k113 , ____ , k115 } , \
{ k200 , k20 1 , k20 2 , k20 3 , k20 4 , k20 5 , k20 6 , k20 7 , k20 8 , k20 9 , k210 , k211 , ____ , k213 , ____ , k215 } , \
{ k300 , _ ___, k30 2 , k30 3 , k30 4 , k30 5 , k30 6 , k30 7 , k30 8 , k30 9 , k310 , k311 , k312 , k313 , ____ , k315 } , \
{ k400 , k40 1 , k40 2 , _ ___, ____ , _ ___, k40 6 , ____ , _ ___, _ ___, ____ , k411 , k412 , k413 , k414 , k415 } \
{ k00 , k01 , k02 , k03 , k04 , k05 , k06 , k07 , k08 , k09 , k0A , k0B , k0C , k0D , k0E , k0F } , \
{ k10 , k11 , k12 , k13 , k14 , k15 , k16 , k17 , k18 , k19 , k1A , k1B , k1C , k1D , ___ , k1F } , \
{ k20 , k21 , k22 , k23 , k24 , k25 , k26 , k27 , k28 , k29 , k2A , k2B , ___ , k2D , ___ , k2F } , \
{ k30 , ___ , k32 , k33 , k34 , k35 , k36 , k37 , k38 , k39 , k3A , k3B , k3C , k3D , ___ , k3F } , \
{ k40 , k41 , k42 , ___ , ___ , ___ , k46 , ___ , ___ , ___ , ___ , k4B , k4C , k4D , k4E , k4F } \
}
# define LAYOUT_ansi_splitbs ( \
k000 , k0 01 , k0 02 , k00 3 , k0 04 , k00 5 , k0 06 , k0 07 , k00 8 , k0 09 , k010 , k011 , k012 , k013 , k014 , k015 , \
k100 , k10 1 , k10 2 , k10 3 , k10 4 , k10 5 , k10 6 , k10 7 , k10 8 , k10 9 , k110 , k111 , k112 , k113 , k115 , \
k200 , k20 1 , k20 2 , k20 3 , k20 4 , k20 5 , k20 6 , k20 7 , k20 8 , k20 9 , k210 , k211 , k213 , k215 , \
k300 , k30 2 , k30 3 , k30 4 , k30 5 , k30 6 , k30 7 , k30 8 , k30 9 , k310 , k311 , k312 , k313 , k315 , \
k400 , k40 1 , k402 , k406 , k411 , k412 , k413 , k414 , k415 \
# define LAYOUT_65_iso_blocker ( \
k00 , k01 , k02 , k03 , k04 , k05 , k06 , k07 , k08 , k09 , k0A , k0B , k0C , k0D , k0F , \
k10 , k11 , k12 , k13 , k14 , k15 , k16 , k17 , k18 , k19 , k1A , k1B , k1C , k1F , \
k20 , k21 , k22 , k23 , k24 , k25 , k26 , k27 , k28 , k29 , k2A , k2B , k1D , k2D , k2F , \
k30 , k31 , k3 2, k33 , k34 , k35 , k36 , k37 , k38 , k39 , k3A , k3B , k3C , k3D , k3F , \
k40 , k41 , k42 , k46 , k4B , k4C , k4D , k4E , k4F \
) { \
{ k000 , k0 01 , k00 2 , k0 03 , k00 4 , k0 05 , k00 6 , k0 07 , k00 8 , k0 09 , k010 , k011 , k012 , k013 , k014 , k015 } , \
{ k100 , k10 1 , k10 2 , k10 3 , k10 4 , k10 5 , k10 6 , k10 7 , k10 8 , k10 9 , k110 , k111 , k112 , k113 , ____ , k115 } , \
{ k200 , k20 1 , k20 2 , k20 3 , k20 4 , k20 5 , k20 6 , k20 7 , k20 8 , k20 9 , k210 , k211 , ____ , k213 , ____ , k215 } , \
{ k300 , ____ , k30 2 , k30 3 , k30 4 , k30 5 , k30 6 , k30 7 , k30 8 , k30 9 , k310 , k311 , k312 , k313 , ____ , k315 } , \
{ k400 , k40 1 , k40 2 , _ ___, ____ , _ ___, k40 6 , ____ , _ ___, _ ___, ____ , k411 , k412 , k413 , k414 , k415 } \
{ k00 , k01 , k02 , k03 , k04 , k05 , k06 , k07 , k08 , k09 , k0A , k0B , k0C , k0D , ___ , k0F } , \
{ k10 , k11 , k12 , k13 , k14 , k15 , k16 , k17 , k18 , k19 , k1A , k1B , k1C , k1D , ___ , k1F } , \
{ k20 , k21 , k22 , k23 , k24 , k25 , k26 , k27 , k28 , k29 , k2A , k2B , ___ , k2D , ___ , k2F } , \
{ k30 , k31 , k32 , k33 , k34 , k35 , k36 , k37 , k38 , k39 , k3A , k3B , k3C , k3D , ___ , k3F } , \
{ k40 , k41 , k42 , ___ , ___ , ___ , k46 , ___ , ___ , ___ , ___ , k4B , k4C , k4D , k4E , k4F } \
}
# define LAYOUT_iso( \
k000 , k0 01 , k0 02 , k00 3 , k0 04 , k00 5 , k0 06 , k0 07 , k00 8 , k0 09 , k010 , k011 , k012 , k013 , k015 , \
k100 , k10 1 , k10 2 , k10 3 , k10 4 , k10 5 , k10 6 , k10 7 , k10 8 , k10 9 , k110 , k111 , k112 , k115 , \
k200 , k20 1 , k20 2 , k20 3 , k20 4 , k20 5 , k20 6 , k20 7 , k20 8 , k20 9 , k210 , k211 , k113 , k213 , k215 , \
k300 , k30 1 , k30 2 , k30 3 , k30 4 , k30 5 , k30 6 , k30 7 , k30 8 , k30 9 , k310 , k311 , k312 , k313 , k315 , \
k400 , k40 1 , k402 , k406 , k411 , k412 , k413 , k414 , k415 \
# define LAYOUT_65_ iso_blocker_split_bs ( \
k00 , k01 , k02 , k03 , k04 , k05 , k06 , k07 , k08 , k09 , k0A , k0B , k0C , k0D , k0E , k0F , \
k10 , k11 , k12 , k13 , k14 , k15 , k16 , k17 , k18 , k19 , k1A , k1B , k1C , k1F , \
k20 , k21 , k22 , k23 , k24 , k25 , k26 , k27 , k28 , k29 , k2A , k2B , k1D , k2D , k2F , \
k30 , k31 , k32 , k33 , k34 , k35 , k36 , k37 , k38 , k39 , k3A , k3B , k3C , k3D , k3F , \
k40 , k41 , k42 , k46 , k4B , k4C , k4D , k4E , k4F \
) { \
{ k000 , k0 01 , k00 2 , k0 03 , k00 4 , k0 05 , k00 6 , k0 07 , k00 8 , k0 09 , k010 , k011 , k012 , k013 , ____ , k015 } , \
{ k100 , k10 1 , k10 2 , k10 3 , k10 4 , k10 5 , k10 6 , k10 7 , k10 8 , k10 9 , k110 , k111 , k112 , k113 , ____ , k115 } , \
{ k200 , k20 1 , k20 2 , k20 3 , k20 4 , k20 5 , k20 6 , k20 7 , k20 8 , k20 9 , k210 , k211 , ____ , k213 , ____ , k215 } , \
{ k300 , k30 1 , k30 2 , k30 3 , k30 4 , k30 5 , k30 6 , k30 7 , k30 8 , k30 9 , k310 , k311 , k312 , k313 , ____ , k315 } , \
{ k400 , k40 1 , k40 2 , _ ___, ____ , _ ___, k40 6 , ____ , _ ___, _ ___, ____ , k411 , k412 , k413 , k414 , k415 } \
{ k00 , k01 , k02 , k03 , k04 , k05 , k06 , k07 , k08 , k09 , k0A , k0B , k0C , k0D , k0E , k0F } , \
{ k10 , k11 , k12 , k13 , k14 , k15 , k16 , k17 , k18 , k19 , k1A , k1B , k1C , k1D , ___ , k1F } , \
{ k20 , k21 , k22 , k23 , k24 , k25 , k26 , k27 , k28 , k29 , k2A , k2B , ___ , k2D , ___ , k2F } , \
{ k30 , k31 , k32 , k33 , k34 , k35 , k36 , k37 , k38 , k39 , k3A , k3B , k3C , k3D , ___ , k3F } , \
{ k40 , k41 , k42 , ___ , ___ , ___ , k46 , ___ , ___ , ___ , ___ , k4B , k4C , k4D , k4E , k4F } \
}