]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Merge branch 'master' of https://github.com/sboesebeck/qmk_firmware
authorStephan Bösebeck <stephan.boesebeck@holidayinsider.com>
Sat, 2 Apr 2016 13:15:21 +0000 (15:15 +0200)
committerStephan Bösebeck <stephan.boesebeck@holidayinsider.com>
Sat, 2 Apr 2016 13:15:21 +0000 (15:15 +0200)
107 files changed:
1-setup-path-win.bat
BUILD_GUIDE.md
README.md
keyboard/alps64/Makefile
keyboard/alps64/keymap_hasu.c [deleted file]
keyboard/alps64/keymap_plain.c [deleted file]
keyboard/alps64/keymaps/default.c [new file with mode: 0644]
keyboard/alps64/keymaps/hasu.c [new file with mode: 0644]
keyboard/atomic/Makefile
keyboard/atomic/README.md
keyboard/atomic/keymaps/abienz.c [new file with mode: 0644]
keyboard/atomic/keymaps/default.c [new file with mode: 0644]
keyboard/atomic/keymaps/keymap_abienz.c [deleted file]
keyboard/atomic/keymaps/keymap_default.c [deleted file]
keyboard/atomic/keymaps/keymap_michelle.c [deleted file]
keyboard/atomic/keymaps/michelle.c [new file with mode: 0644]
keyboard/atreus/Makefile
keyboard/atreus/README.md
keyboard/atreus/keymaps/default.c [new file with mode: 0644]
keyboard/atreus/keymaps/gerb.c [new file with mode: 0644]
keyboard/atreus/keymaps/keymap_default.c [deleted file]
keyboard/atreus/keymaps/keymap_gerb.c [deleted file]
keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/README.md [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/dvorak_intl_squisher.hex [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout0.png [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout1.png [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout2.png [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keymap.c [new file with mode: 0644]
keyboard/ergodox_ez/keymaps/osx_de/keymap.c
keyboard/ergodox_ez/keymaps/osx_de/osx_de_highres.png
keyboard/gh60/Makefile
keyboard/gh60/Makefile.pjrc
keyboard/gh60/README.md
keyboard/gh60/keymap_hasu.c [deleted file]
keyboard/gh60/keymap_hhkb.c [deleted file]
keyboard/gh60/keymap_plain.c [deleted file]
keyboard/gh60/keymap_poker.c [deleted file]
keyboard/gh60/keymap_poker_bit.c [deleted file]
keyboard/gh60/keymap_poker_set.c [deleted file]
keyboard/gh60/keymap_spacefn.c [deleted file]
keyboard/gh60/keymaps/hasu.c [new file with mode: 0644]
keyboard/gh60/keymaps/hhkb.c [new file with mode: 0644]
keyboard/gh60/keymaps/plain.c [new file with mode: 0644]
keyboard/gh60/keymaps/poker.c [new file with mode: 0644]
keyboard/gh60/keymaps/poker_bit.c [new file with mode: 0644]
keyboard/gh60/keymaps/poker_set.c [new file with mode: 0644]
keyboard/gh60/keymaps/spacefn.c [new file with mode: 0644]
keyboard/hhkb/Makefile
keyboard/hhkb/Makefile.pjrc
keyboard/hhkb/Makefile.rn42
keyboard/hhkb/README.md
keyboard/hhkb/keymap_hasu.c [deleted file]
keyboard/hhkb/keymap_hhkb.c [deleted file]
keyboard/hhkb/keymap_jp.c [deleted file]
keyboard/hhkb/keymap_spacefn.c [deleted file]
keyboard/hhkb/keymaps/hasu.c [new file with mode: 0644]
keyboard/hhkb/keymaps/hhkb.c [new file with mode: 0644]
keyboard/hhkb/keymaps/jp.c [new file with mode: 0644]
keyboard/hhkb/keymaps/spacefn.c [new file with mode: 0644]
keyboard/hhkb_qmk/Makefile
keyboard/hhkb_qmk/README.md
keyboard/hhkb_qmk/keymaps/default.c [new file with mode: 0644]
keyboard/hhkb_qmk/keymaps/keymap_default.c [deleted file]
keyboard/hhkb_qmk/keymaps/keymap_lxol.c [deleted file]
keyboard/hhkb_qmk/keymaps/lxol.c [new file with mode: 0644]
keyboard/jd45/Makefile
keyboard/jd45/keymaps/default.c [new file with mode: 0644]
keyboard/jd45/keymaps/justin.c [new file with mode: 0644]
keyboard/jd45/keymaps/keymap_default.c [deleted file]
keyboard/jd45/keymaps/keymap_justin.c [deleted file]
keyboard/planck/Makefile
keyboard/planck/README.md
keyboard/planck/common_keymaps/keymap_mitch.c [deleted file]
keyboard/planck/keymaps/default/keymap.c
keyboard/planck/keymaps/tak3over.c [new file with mode: 0644]
keyboard/planck/old_keymap_files/common_keymaps/keymap_mitch.c [new file with mode: 0644]
keyboard/preonic/Makefile
keyboard/preonic/Makefile.pjrc [deleted file]
keyboard/preonic/PCB_GUIDE.md [deleted file]
keyboard/preonic/README.md
keyboard/preonic/__avr_gdbinit [deleted file]
keyboard/preonic/analog.c [deleted file]
keyboard/preonic/analog.h [deleted file]
keyboard/preonic/beeps.c [deleted file]
keyboard/preonic/beeps.h [deleted file]
keyboard/preonic/config.h
keyboard/preonic/config_definitions.h [deleted file]
keyboard/preonic/extended_keymap_common.c [deleted file]
keyboard/preonic/extended_keymap_common.h [deleted file]
keyboard/preonic/extended_keymaps/extended_keymap_default.c [deleted file]
keyboard/preonic/extended_keymaps/extended_keymap_lock.c [deleted file]
keyboard/preonic/flash-pcb.sh [new file with mode: 0755]
keyboard/preonic/keymap_midi.c [deleted file]
keyboard/preonic/keymap_midi.h [deleted file]
keyboard/preonic/keymaps/default/README.md [new file with mode: 0644]
keyboard/preonic/keymaps/default/keymap.c [new file with mode: 0644]
keyboard/preonic/keymaps/lock/README.md [new file with mode: 0644]
keyboard/preonic/keymaps/lock/keymap.c [new file with mode: 0644]
keyboard/preonic/led.c [deleted file]
keyboard/preonic/matrix.c [deleted file]
keyboard/preonic/preonic.c [new file with mode: 0644]
keyboard/preonic/preonic.h [new file with mode: 0644]
keyboard/preonic/preonic_pcb.hex [new file with mode: 0644]
keyboard/preonic/preonic_pcb_silent.hex [new file with mode: 0644]
quantum/keymap_extras/keymap_german_osx.h
quantum/keymap_midi.c
quantum/template/README.md

index 49fb00e149ac26aff74756939b4012521dc9411b..2c15857bb7a759c9eafd5a494b313c9520ae0f6b 100644 (file)
@@ -1,9 +1,71 @@
-@echo off
-setx /M path "%PATH%;C:\MinGW\bin;C:\MinGW\msys\1.0\bin" > nul 2>&1
-if NOT ["%errorlevel%"]==["0"] (
-       echo FAILED. Rerun with administrator privileges.
-       pause
-) else (
-       echo Success!
-       pause
-)
+@SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
+@ECHO OFF
+SET CMDLINERUNSTR=%SystemRoot%\system32\cmd.exe
+
+SET NEWPATH1="C:\MinGW\msys\1.0\bin"
+SET NEWPATH2="C:\MinGW\bin"
+
+:: Make sure paths exist
+IF NOT EXIST !NEWPATH1! (ECHO Path not found: %NEWPATH1% && GOTO ExitBatch)
+IF NOT EXIST !NEWPATH2! (ECHO Path not found: %NEWPATH2% && GOTO ExitBatch)
+
+:: Add paths
+CALL :AddPath %NEWPATH1%
+CALL :AddPath %NEWPATH2%
+
+:: Branch to UpdateEnv if we need to update
+IF DEFINED UPDATE (GOTO UpdateEnv)
+
+GOTO ExitBatch
+
+:: -----------------------------------------------------------------------------
+
+:UpdateEnv
+ECHO Making updated PATH go live . . .
+REG delete HKCU\Environment /F /V TEMPVAR > nul 2>&1
+setx TEMPVAR 1 > nul 2>&1
+REG delete HKCU\Environment /F /V TEMPVAR > nul 2>&1
+IF NOT !cmdcmdline! == !CMDLINERUNSTR! (CALL :KillExplorer)
+GOTO ExitBatch
+
+:: -----------------------------------------------------------------------------
+
+:ExitBatch
+ENDLOCAL
+PAUSE
+EXIT /b
+
+:: -----------------------------------------------------------------------------
+
+:AddPath <pathToAdd>
+ECHO %PATH% | FINDSTR /C:"%~1" > nul
+IF ERRORLEVEL 1 (
+       REG add "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /f /v PATH /t REG_SZ /d "%PATH%;%~1"  > nul 2>&1
+       IF ERRORLEVEL 0 (
+               ECHO Adding   %1 . . . Success!
+               SET "PATH=%PATH%;%~1"
+               SET UPDATE=1
+       ) ELSE (
+               ECHO Adding   %1 . . . FAILED. Run this script with administrator privileges.
+       )       
+) ELSE (
+       ECHO Skipping %1 - Already in PATH
+       )
+EXIT /b
+
+:: -----------------------------------------------------------------------------
+
+:KillExplorer
+
+ECHO Your desktop is being restarted, please wait. . .   
+ping -n 5 127.0.0.1 > NUL 2>&1   
+ECHO Killing process Explorer.exe. . .   
+taskkill /f /im explorer.exe   
+ECHO.   
+ECHO Your desktop is now loading. . .   
+ping -n 5 127.0.0.1 > NUL 2>&1   
+ECHO.   
+ping -n 5 127.0.0.1 > NUL 2>&1   
+START explorer.exe
+START explorer.exe %CD%
+EXIT /b
\ No newline at end of file
index 22df53c30d1f5c896e0e72df6172a93584678310..f7a57d2fc9b028e2de43d19b0f8858d6ea0182d9 100644 (file)
@@ -44,7 +44,10 @@ If you have any problems building the firmware, you can try using a tool called
 4. Once you're in the correct keyboard-specific folder, run the `make` command. This should output a lot of information about the build process.
 
 ## Customizing, Building, and Deploying Your Firmware
-1. Running the `make` command from your keyboard's folder will generate a .hex file based on the default keymap. All keymaps for a particular keyboard live in the `keymaps` folder in that keyboard's folder. To create your own keymap, copy `keymaps/default/keymap.c` to the `keymaps` folder, and rename it with your name, for example jack.c. Or, if you don't care about the ability to share your keymap with the community via GitHub, you can just modify the default keymap itself. Details on how to program keymap files can be found in other guides.
+
+Note: Some keyboard folders have non-standard organizations, and may not even support specifying alternate keymaps. Until these get reorganized, you will need to edit their default keymaps directly.
+
+1. Running the `make` command from your keyboard's folder will generate a .hex file based on the default keymap. All keymaps for a particular keyboard live in the `keymaps` folder in that keyboard's folder. To create your own keymap, copy `keymaps/default/keymap.c` to the `keymaps` folder, and rename it with your name, for example jack.c. Or, if you don't care about the ability to share your keymap with the community via GitHub, you can just modify the default keymap itself. Details on how to program keymap files can be found in other guides. 
 2. To build a keymap other than the default, type `KEYMAP=<name>` after `make`. So if I've named my keymap jack.c, the full command would be `make KEYMAP=jack`.
 3. How you deploy the firmware will depend on whether you are using a PCB or a Teensy. In both cases, you'll need to put the keyboard in bootloader mode, either by pressing a button on the PCB/Teensy or pressing the key with the `RESET` keycode. Then, if you're using a PCB, just run `make KEYMAP=<name> dfu` to both build and deploy the firmware. If you're using a Teensy, you'll probably need to take the <keyboardname>.hex file that make produces in the keyboard's folder, and deploy it using the [Teensy Loader.](https://www.pjrc.com/teensy/loader.html)
 
index 6a6bbed40b0097ba50b0168d8a554de56da5e719..98573306793ab5e534413e246ce74960596dff78 100644 (file)
--- a/README.md
+++ b/README.md
@@ -269,7 +269,7 @@ For this mod, you need an unused pin wiring to DI of WS2812 strip. After wiring
 
     RGBLIGHT_ENABLE = yes
 
-Please note that the underglow is not compatible with MIDI functions. So you cannot enable both of them at the same time.
+Please note that the underglow is not compatible with audio output. So you cannot enable both of them at the same time.
 
 Please add the following options into your config.h, and set them up according your hardware configuration.
 
@@ -309,4 +309,4 @@ what things are (and likely aren't) too risky.
 - EEPROM has around a 100000 write cycle.  You shouldn't rewrite the
   firmware repeatedly and continually; that'll burn the EEPROM
   eventually.
-                                       
\ No newline at end of file
+                                       
index e90dcedb673022f1aca9933402ed75ed63869071..7634c4280ebceee82b5a2726d3b196f861312fa0 100644 (file)
@@ -53,9 +53,9 @@ SRC = keymap_common.c \
        led.c
 
 ifdef KEYMAP
-    SRC := keymap_$(KEYMAP).c $(SRC)
+    SRC := keymaps/$(KEYMAP).c $(SRC)
 else
-    SRC := keymap_plain.c $(SRC)
+    SRC := keymaps/default.c $(SRC)
 endif
 
 CONFIG_H = config.h
diff --git a/keyboard/alps64/keymap_hasu.c b/keyboard/alps64/keymap_hasu.c
deleted file mode 100644 (file)
index d297d72..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-#include "keymap_common.h"
-
-/*
- * Hasu
- */
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    /* Default Layer
-     * ,-----------------------------------------------------------.
-     * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|   \   |
-     * |-----------------------------------------------------------|
-     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|Bspc |
-     * |-----------------------------------------------------------|
-     * |Ctrl  |  A|  S|  D|  F|  G|  H|  J|  K|  L|Fn3|  '|FN1     |
-     * |-----------------------------------------------------------|
-     * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|Fn2|Shift     |
-     * |-----------------------------------------------------------|
-     * |Ctrl |Gui |Alt  |       Space            |Alt   |Fn5 |Ctrl |
-     * `-----------------------------------------------------------'
-     */
-    [0] = KEYMAP_AEK( \
-        ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSLS, \
-        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSPC, \
-        LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   FN3, QUOT,FN1, \
-        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, FN2, RSFT, \
-        LCTL,LGUI,LALT,          FN4,                          RALT,FN5, FN0),
-
-    /* HHKB mode[HHKB Fn]
-     * ,-----------------------------------------------------------.
-     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|   `   |
-     * |-----------------------------------------------------------|
-     * |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |Del  |
-     * |-----------------------------------------------------------|
-     * |Contro|VoD|VoU|Mut|   |   |  *|  /|Hom|PgU|Lef|Rig|Enter   |
-     * |-----------------------------------------------------------|
-     * |Shift   |   |   |   |   |   |  +|  -|End|PgD|Dow|Shift     |
-     * |-----------------------------------------------------------|
-     * |Ctrl |Gui |Alt  |       Space            |Alt   |Fn5 |Ctrl |
-     * `-----------------------------------------------------------'
-     */ 
-    [1] = KEYMAP_AEK( \
-        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, GRV, \
-        CAPS,NO,  NO,  NO,  NO,  NO,  NO,  NO,  PSCR,SLCK,PAUS,UP,  NO,  DEL, \
-        LCTL,VOLD,VOLU,MUTE,NO,  NO,  PAST,PSLS,HOME,PGUP,LEFT,RGHT,TRNS, \
-        LSFT,NO,  NO,  NO,  NO,  NO,  PPLS,PMNS,END, PGDN,DOWN,RSFT, \
-        LCTL,LGUI,LALT,          TRNS,                         RALT,RGUI,TRNS),
-
-    /* Vi mode[Slash]
-     * ,-----------------------------------------------------------.
-     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Del    |
-     * |-----------------------------------------------------------|
-     * |Tab  |Hom|PgD|Up |PgU|End|Hom|PgD|PgUlEnd|   |   |   |Backs|
-     * |-----------------------------------------------------------|
-     * |Contro|   |Lef|Dow|Rig|   |Lef|Dow|Up |Rig|   |   |Return  |
-     * |-----------------------------------------------------------|
-     * |Shift   |   |   |   |   |   |Hom|PgD|PgUlEnd|Fn0|Shift     |
-     * |-----------------------------------------------------------|
-     * |Ctrl |Gui |Alt  |       Space            |Alt   |Fn5 |Ctrl |
-     * `-----------------------------------------------------------'
-     */
-    [2] = KEYMAP_AEK( \
-        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, GRV, \
-        TAB, HOME,PGDN,UP,  PGUP,END, HOME,PGDN,PGUP,END, NO,  NO,  NO,  DEL, \
-        LCTL,NO,  LEFT,DOWN,RGHT,NO,  LEFT,DOWN,UP,  RGHT,NO,  NO,  ENT, \
-        LSFT,NO,  NO,  NO,  NO,  NO,  HOME,PGDN,PGUP,END, FN2, RSFT, \
-        LCTL,LGUI,LALT,          SPC,                          RALT,RGUI,RCTL),
-
-    /* Mouse mode(IJKL)[Semicolon]
-     * ,-----------------------------------------------------------.
-     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
-     * |-----------------------------------------------------------|
-     * |Tab  |   |   |   |   |   |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T|
-     * |-----------------------------------------------------------|
-     * |Contro|   |   |   |   |   |Mb2|McL|McD|McR|Fn |   |Return  |
-     * |-----------------------------------------------------------|
-     * |Shift   |   |   |   |   |Mb3|Mb2|Mb1|Mb4|Mb5|   |Shift |   |
-     * |-----------------------------------------------------------|
-     * |Ctrl |Gui |Alt  |       Space            |Alt   |Fn5 |Ctrl |
-     * `-----------------------------------------------------------'
-     * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
-     */
-    [3] = KEYMAP_AEK( \
-        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, GRV, \
-        FN8, NO,  NO,  NO,  NO,  NO,  NO,  WH_D,MS_U,WH_U,RGHT,FN9, FN10,FN8, \
-        LCTL,ACL0,ACL1,ACL2,ACL2,NO,  NO,  MS_L,MS_D,MS_R,TRNS,NO,  ENT, \
-        LSFT,NO,  NO,  NO,  NO,  BTN3,BTN2,BTN1,FN9, FN10,NO,  RSFT, \
-        LCTL,LGUI,LALT,          BTN1,                         TRNS,TRNS,TRNS),
-
-    /* Layer 4: Mouse mode(IJKL)[Space]
-     * ,-----------------------------------------------------------.
-     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
-     * |-----------------------------------------------------------|
-     * |Tab  |   |   |   |   |   |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T|
-     * |-----------------------------------------------------------|
-     * |Contro|   |   |   |   |   |Mb2|McL|McD|McR|Mb1|   |Return  |
-     * |-----------------------------------------------------------|
-     * |Shift   |   |   |   |   |Mb3|Mb2|Mb1|Mb4|Mb5|   |Shift |   |
-     * |-----------------------------------------------------------|
-     * |Ctrl |Gui |Alt  |       Space            |Alt   |Fn5 |Ctrl |
-     * `-----------------------------------------------------------'
-     * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
-     */
-    [4] = KEYMAP_AEK( \
-        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, GRV, \
-        FN8, NO,  NO,  NO,  NO,  NO,  NO,  WH_D,MS_U,WH_U,RGHT,FN9, FN10,FN8, \
-        LCTL,VOLD,VOLU,MUTE,NO,  NO,  NO,  MS_L,MS_D,MS_R,BTN1,NO,  ENT, \
-        LSFT,NO,  NO,  NO,  NO,  BTN3,BTN2,BTN1,FN9, FN10,NO,  RSFT, \
-        LCTL,LGUI,LALT,          TRNS,                         TRNS,TRNS,TRNS),
-};
-
-
-/* id for user defined function/macro */
-enum function_id {
-    NONE,
-};
-
-enum macro_id {
-    ALT_TAB,
-};
-
-
-/*
- * Fn action definition
- */
-const uint16_t PROGMEM fn_actions[] = {
-    [0] = ACTION_LAYER_MOMENTARY(1),                  // HHKB layer
-    [1] = ACTION_LAYER_TAP_KEY(1, KC_ENTER),          // HHKB layer
-    [2] = ACTION_LAYER_TAP_KEY(2, KC_SLASH),          // Cursor layer with Slash*
-    [3] = ACTION_LAYER_TAP_KEY(3, KC_SCLN),           // Mousekey layer with Semicolon*
-    [4] = ACTION_LAYER_TAP_KEY(4, KC_SPC),            // Mousekey layer with Space
-    [5] = ACTION_LAYER_MOMENTARY(3),                  // Mousekey layer(IJKL)
-    [6] = ACTION_LAYER_TAP_KEY(MOD_RCTL, KC_ENT),      // RControl with tap Enter
-    [7] = ACTION_MODS_ONESHOT(MOD_LSFT),              // Oneshot Shift
-    [8] = ACTION_MACRO(ALT_TAB),                      // Application switching
-    [9] = ACTION_MODS_KEY(MOD_LALT, KC_LEFT),
-   [10] = ACTION_MODS_KEY(MOD_LALT, KC_RIGHT),
-};
-
-
-/*
- * Macro definition
- */
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-    switch (id) {
-        case ALT_TAB:
-            return (record->event.pressed ?
-                    MACRO( D(LALT), D(TAB), END ) :
-                    MACRO( U(TAB), END ));
-    }
-    return MACRO_NONE;
-}
diff --git a/keyboard/alps64/keymap_plain.c b/keyboard/alps64/keymap_plain.c
deleted file mode 100644 (file)
index a548991..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#include "keymap_common.h"
-
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    /* 0: qwerty */
-    KEYMAP( \
-        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, NUHS, BSPC, \
-        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
-        CAPS,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,ENT,  \
-        LSFT,NUBS,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,RSFT,ESC, \
-        LCTL,LGUI,LALT,          SPC,                     APP, RALT,RGUI,RCTL),
-};
-const uint16_t PROGMEM fn_actions[] = {};
diff --git a/keyboard/alps64/keymaps/default.c b/keyboard/alps64/keymaps/default.c
new file mode 100644 (file)
index 0000000..a548991
--- /dev/null
@@ -0,0 +1,12 @@
+#include "keymap_common.h"
+
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* 0: qwerty */
+    KEYMAP( \
+        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, NUHS, BSPC, \
+        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
+        CAPS,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,ENT,  \
+        LSFT,NUBS,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,RSFT,ESC, \
+        LCTL,LGUI,LALT,          SPC,                     APP, RALT,RGUI,RCTL),
+};
+const uint16_t PROGMEM fn_actions[] = {};
diff --git a/keyboard/alps64/keymaps/hasu.c b/keyboard/alps64/keymaps/hasu.c
new file mode 100644 (file)
index 0000000..d297d72
--- /dev/null
@@ -0,0 +1,151 @@
+#include "keymap_common.h"
+
+/*
+ * Hasu
+ */
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* Default Layer
+     * ,-----------------------------------------------------------.
+     * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|   \   |
+     * |-----------------------------------------------------------|
+     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|Bspc |
+     * |-----------------------------------------------------------|
+     * |Ctrl  |  A|  S|  D|  F|  G|  H|  J|  K|  L|Fn3|  '|FN1     |
+     * |-----------------------------------------------------------|
+     * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|Fn2|Shift     |
+     * |-----------------------------------------------------------|
+     * |Ctrl |Gui |Alt  |       Space            |Alt   |Fn5 |Ctrl |
+     * `-----------------------------------------------------------'
+     */
+    [0] = KEYMAP_AEK( \
+        ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSLS, \
+        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSPC, \
+        LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   FN3, QUOT,FN1, \
+        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, FN2, RSFT, \
+        LCTL,LGUI,LALT,          FN4,                          RALT,FN5, FN0),
+
+    /* HHKB mode[HHKB Fn]
+     * ,-----------------------------------------------------------.
+     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|   `   |
+     * |-----------------------------------------------------------|
+     * |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |Del  |
+     * |-----------------------------------------------------------|
+     * |Contro|VoD|VoU|Mut|   |   |  *|  /|Hom|PgU|Lef|Rig|Enter   |
+     * |-----------------------------------------------------------|
+     * |Shift   |   |   |   |   |   |  +|  -|End|PgD|Dow|Shift     |
+     * |-----------------------------------------------------------|
+     * |Ctrl |Gui |Alt  |       Space            |Alt   |Fn5 |Ctrl |
+     * `-----------------------------------------------------------'
+     */ 
+    [1] = KEYMAP_AEK( \
+        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, GRV, \
+        CAPS,NO,  NO,  NO,  NO,  NO,  NO,  NO,  PSCR,SLCK,PAUS,UP,  NO,  DEL, \
+        LCTL,VOLD,VOLU,MUTE,NO,  NO,  PAST,PSLS,HOME,PGUP,LEFT,RGHT,TRNS, \
+        LSFT,NO,  NO,  NO,  NO,  NO,  PPLS,PMNS,END, PGDN,DOWN,RSFT, \
+        LCTL,LGUI,LALT,          TRNS,                         RALT,RGUI,TRNS),
+
+    /* Vi mode[Slash]
+     * ,-----------------------------------------------------------.
+     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Del    |
+     * |-----------------------------------------------------------|
+     * |Tab  |Hom|PgD|Up |PgU|End|Hom|PgD|PgUlEnd|   |   |   |Backs|
+     * |-----------------------------------------------------------|
+     * |Contro|   |Lef|Dow|Rig|   |Lef|Dow|Up |Rig|   |   |Return  |
+     * |-----------------------------------------------------------|
+     * |Shift   |   |   |   |   |   |Hom|PgD|PgUlEnd|Fn0|Shift     |
+     * |-----------------------------------------------------------|
+     * |Ctrl |Gui |Alt  |       Space            |Alt   |Fn5 |Ctrl |
+     * `-----------------------------------------------------------'
+     */
+    [2] = KEYMAP_AEK( \
+        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, GRV, \
+        TAB, HOME,PGDN,UP,  PGUP,END, HOME,PGDN,PGUP,END, NO,  NO,  NO,  DEL, \
+        LCTL,NO,  LEFT,DOWN,RGHT,NO,  LEFT,DOWN,UP,  RGHT,NO,  NO,  ENT, \
+        LSFT,NO,  NO,  NO,  NO,  NO,  HOME,PGDN,PGUP,END, FN2, RSFT, \
+        LCTL,LGUI,LALT,          SPC,                          RALT,RGUI,RCTL),
+
+    /* Mouse mode(IJKL)[Semicolon]
+     * ,-----------------------------------------------------------.
+     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+     * |-----------------------------------------------------------|
+     * |Tab  |   |   |   |   |   |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T|
+     * |-----------------------------------------------------------|
+     * |Contro|   |   |   |   |   |Mb2|McL|McD|McR|Fn |   |Return  |
+     * |-----------------------------------------------------------|
+     * |Shift   |   |   |   |   |Mb3|Mb2|Mb1|Mb4|Mb5|   |Shift |   |
+     * |-----------------------------------------------------------|
+     * |Ctrl |Gui |Alt  |       Space            |Alt   |Fn5 |Ctrl |
+     * `-----------------------------------------------------------'
+     * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
+     */
+    [3] = KEYMAP_AEK( \
+        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, GRV, \
+        FN8, NO,  NO,  NO,  NO,  NO,  NO,  WH_D,MS_U,WH_U,RGHT,FN9, FN10,FN8, \
+        LCTL,ACL0,ACL1,ACL2,ACL2,NO,  NO,  MS_L,MS_D,MS_R,TRNS,NO,  ENT, \
+        LSFT,NO,  NO,  NO,  NO,  BTN3,BTN2,BTN1,FN9, FN10,NO,  RSFT, \
+        LCTL,LGUI,LALT,          BTN1,                         TRNS,TRNS,TRNS),
+
+    /* Layer 4: Mouse mode(IJKL)[Space]
+     * ,-----------------------------------------------------------.
+     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+     * |-----------------------------------------------------------|
+     * |Tab  |   |   |   |   |   |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T|
+     * |-----------------------------------------------------------|
+     * |Contro|   |   |   |   |   |Mb2|McL|McD|McR|Mb1|   |Return  |
+     * |-----------------------------------------------------------|
+     * |Shift   |   |   |   |   |Mb3|Mb2|Mb1|Mb4|Mb5|   |Shift |   |
+     * |-----------------------------------------------------------|
+     * |Ctrl |Gui |Alt  |       Space            |Alt   |Fn5 |Ctrl |
+     * `-----------------------------------------------------------'
+     * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
+     */
+    [4] = KEYMAP_AEK( \
+        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, GRV, \
+        FN8, NO,  NO,  NO,  NO,  NO,  NO,  WH_D,MS_U,WH_U,RGHT,FN9, FN10,FN8, \
+        LCTL,VOLD,VOLU,MUTE,NO,  NO,  NO,  MS_L,MS_D,MS_R,BTN1,NO,  ENT, \
+        LSFT,NO,  NO,  NO,  NO,  BTN3,BTN2,BTN1,FN9, FN10,NO,  RSFT, \
+        LCTL,LGUI,LALT,          TRNS,                         TRNS,TRNS,TRNS),
+};
+
+
+/* id for user defined function/macro */
+enum function_id {
+    NONE,
+};
+
+enum macro_id {
+    ALT_TAB,
+};
+
+
+/*
+ * Fn action definition
+ */
+const uint16_t PROGMEM fn_actions[] = {
+    [0] = ACTION_LAYER_MOMENTARY(1),                  // HHKB layer
+    [1] = ACTION_LAYER_TAP_KEY(1, KC_ENTER),          // HHKB layer
+    [2] = ACTION_LAYER_TAP_KEY(2, KC_SLASH),          // Cursor layer with Slash*
+    [3] = ACTION_LAYER_TAP_KEY(3, KC_SCLN),           // Mousekey layer with Semicolon*
+    [4] = ACTION_LAYER_TAP_KEY(4, KC_SPC),            // Mousekey layer with Space
+    [5] = ACTION_LAYER_MOMENTARY(3),                  // Mousekey layer(IJKL)
+    [6] = ACTION_LAYER_TAP_KEY(MOD_RCTL, KC_ENT),      // RControl with tap Enter
+    [7] = ACTION_MODS_ONESHOT(MOD_LSFT),              // Oneshot Shift
+    [8] = ACTION_MACRO(ALT_TAB),                      // Application switching
+    [9] = ACTION_MODS_KEY(MOD_LALT, KC_LEFT),
+   [10] = ACTION_MODS_KEY(MOD_LALT, KC_RIGHT),
+};
+
+
+/*
+ * Macro definition
+ */
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+    switch (id) {
+        case ALT_TAB:
+            return (record->event.pressed ?
+                    MACRO( D(LALT), D(TAB), END ) :
+                    MACRO( U(TAB), END ));
+    }
+    return MACRO_NONE;
+}
index e678b4efa88c533223f623db4540aa022ae59e93..da6d0ac60c241b7d6e87534af14e5918cc8f461d 100644 (file)
@@ -54,9 +54,9 @@ SRC = atomic.c \
        backlight.c 
 
 ifdef KEYMAP
-    SRC := keymaps/keymap_$(KEYMAP).c $(SRC)
+    SRC := keymaps/$(KEYMAP).c $(SRC)
 else
-    SRC := keymaps/keymap_default.c $(SRC)
+    SRC := keymaps/default.c $(SRC)
 endif
 
 CONFIG_H = config.h
index c8e83cf55a91c441adf6a909554262e2ebd2e8c4..0e42370ba62dd0f7016e699ad6f11077e61d753a 100644 (file)
@@ -16,10 +16,10 @@ Depending on which keymap you would like to use, you will have to compile slight
 To build with the default keymap, simply run `make`.
 
 ### Other Keymaps
-Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `keymap_<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
+Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a file in the keymaps folder named `<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
 
 To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like:
 ```
 $ make KEYMAP=[default|jack|<name>]
 ```
-Keymaps follow the format **__keymap\_\<name\>.c__** and are stored in the `keymaps` folder.
+Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
diff --git a/keyboard/atomic/keymaps/abienz.c b/keyboard/atomic/keymaps/abienz.c
new file mode 100644 (file)
index 0000000..589a64d
--- /dev/null
@@ -0,0 +1,36 @@
+#include "atomic.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = { /* Colemak */
+  { KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC, KC_NO   },
+  { KC_TAB,  CM_Q,    CM_W,    CM_F,    CM_P,    CM_G,    CM_J,    CM_L,    CM_U,    CM_Y,    CM_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL  },
+  { KC_BSPC, CM_A,    CM_R,    CM_S,    CM_T,    CM_D,    CM_H,    CM_N,    CM_E,    CM_I,    CM_O,    KC_QUOT, KC_ENT,  KC_NO,   KC_PGUP },
+  { KC_LSFT, CM_Z,    CM_X,    CM_C,    CM_V,    CM_B,    CM_K,    CM_M,    CM_COMM, CM_DOT,  CM_SLSH, KC_RSFT, KC_NO,   KC_UP,   KC_PGDN },
+  { KC_LCTL, KC_LGUI, KC_NO,   KC_LALT, FUNC(1), KC_SPC,  KC_NO,   KC_RALT, FUNC(2), KC_RGUI, KC_NO,   KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT },
+ },
+ [1] = { /* function */
+  { KC_GRV,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_BSPC, KC_NO   },
+  { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS },
+  { KC_TRNS, KC_TRNS, KC_TRNS, KC_SLEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS },
+  { KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MPLY },
+  { KC_TRNS, KC_TRNS, KC_NO,   KC_TRNS, FUNC(1), KC_TRNS, KC_NO,   KC_TRNS, FUNC(2), KC_TRNS, KC_NO,   KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT },
+ }
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_MOMENTARY(1),
+    [2] = ACTION_LAYER_MOMENTARY(1),
+
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) 
+{
+  // MACRODOWN only works in this function
+    switch(id) {
+      case 0:
+        return MACRODOWN(TYPE(KC_T), END);
+      break;
+    } 
+    return MACRO_NONE;
+};
+
diff --git a/keyboard/atomic/keymaps/default.c b/keyboard/atomic/keymaps/default.c
new file mode 100644 (file)
index 0000000..f37d9d9
--- /dev/null
@@ -0,0 +1,79 @@
+#include "atomic.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = { /* Qwerty */
+  { KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC, KC_DEL   },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+//                                                                                                                      ┌─ 2u ────────────┐
+//                                                                                                                      │   X             │
+//                                                                                                                      └─────────────────┘
+  { KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL   },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 2u ────────────┐                                                                                                  ┌─ 2u ────────────┐
+// │   X             │                                                                                                  │   X             │
+// └─────────────────┘                                                                                                  └─────────────────┘
+  { KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_ENT,  KC_ENT,  KC_PGUP  },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 2u ────────────┐                                                                                         ┌─ 2u ────────────┐
+// │   X             │                                                                                         │   X             │
+// └─────────────────┘                                                                                         └─────────────────┘
+//                                                                                                                      ┌─ 2u ────────────┐
+//                                                                                                                      │   X             │
+//                                                                                                                      └─────────────────┘
+  { KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM,  KC_DOT,  KC_SLSH, KC_RSFT, KC_RSFT, KC_UP,  KC_PGDN  },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+//                                                                                                    ┌─ 2u ────────────┐
+//                                                                                                    │   X             │
+//                                                                                                    └─────────────────┘
+// ┌─ 2u ────────────┐                                                                                         ┌─ 2u ────────────┐
+// │   X             │                                                                                         │   X             │
+// └─────────────────┘                                                                                         └─────────────────┘
+//                                                                                                                      ┌─ 2u ────────────┐
+//                                                                                                                      │   X             │
+//                                                                                                                      └─────────────────┘
+  { BL_STEP, KC_LCTL, KC_LALT, KC_LGUI, KC_LGUI,  KC_SPC,  KC_SPC,  KC_RGUI, KC_RGUI,  KC_RALT, KC_RCTL, BL_STEP, KC_LEFT, KC_DOWN, KC_RGHT  },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 1.25u ──┬ 1.25u ───┬─── 1.25u ┬─── 1.25u ─┬─ 2u ────────────┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬──── 1.25u ┐
+// │   X      │ X        │        X │      X    │   X             │   X      │ X        │        X │      X    │
+// └──────────┴──────────┴──────────┴───────────┴─────────────────┴──────────┴──────────┴──────────┴───────────┘
+//                                                                ┌─ 2u ────────────┐
+//                                                                │   X             │
+//                                                                └─────────────────┘
+//                                  ┌───────────────────── 6.25u ────────────────────────────┐
+//                                  │                        X                               │
+//                                  └────────────────────────────────────────────────────────┘
+//                       ┌─────────────────────── 6.25u ──────────────────────────┬─ 1.25u ──┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬── 1.25u ──┐
+//                       │                          X                             │     X    │   X      │ X        │        X │      X    │
+//                       └────────────────────────────────────────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┘
+ }
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_MOMENTARY(2),  // to RAISE
+    [2] = ACTION_LAYER_MOMENTARY(3),  // to LOWER
+
+    [3] = ACTION_DEFAULT_LAYER_SET(0),
+    [4] = ACTION_DEFAULT_LAYER_SET(1),
+
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) 
+{
+  // MACRODOWN only works in this function
+    switch(id) {
+      case 0:
+        return MACRODOWN(TYPE(KC_T), END);
+      break;
+    } 
+    return MACRO_NONE;
+};
diff --git a/keyboard/atomic/keymaps/keymap_abienz.c b/keyboard/atomic/keymaps/keymap_abienz.c
deleted file mode 100644 (file)
index 589a64d..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#include "atomic.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = { /* Colemak */
-  { KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC, KC_NO   },
-  { KC_TAB,  CM_Q,    CM_W,    CM_F,    CM_P,    CM_G,    CM_J,    CM_L,    CM_U,    CM_Y,    CM_SCLN, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL  },
-  { KC_BSPC, CM_A,    CM_R,    CM_S,    CM_T,    CM_D,    CM_H,    CM_N,    CM_E,    CM_I,    CM_O,    KC_QUOT, KC_ENT,  KC_NO,   KC_PGUP },
-  { KC_LSFT, CM_Z,    CM_X,    CM_C,    CM_V,    CM_B,    CM_K,    CM_M,    CM_COMM, CM_DOT,  CM_SLSH, KC_RSFT, KC_NO,   KC_UP,   KC_PGDN },
-  { KC_LCTL, KC_LGUI, KC_NO,   KC_LALT, FUNC(1), KC_SPC,  KC_NO,   KC_RALT, FUNC(2), KC_RGUI, KC_NO,   KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT },
- },
- [1] = { /* function */
-  { KC_GRV,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_BSPC, KC_NO   },
-  { KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS },
-  { KC_TRNS, KC_TRNS, KC_TRNS, KC_SLEP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS },
-  { KC_TRNS, KC_TRNS, KC_TRNS, KC_CALC, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_MPLY },
-  { KC_TRNS, KC_TRNS, KC_NO,   KC_TRNS, FUNC(1), KC_TRNS, KC_NO,   KC_TRNS, FUNC(2), KC_TRNS, KC_NO,   KC_TRNS, KC_MPRV, KC_VOLD, KC_MNXT },
- }
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_MOMENTARY(1),
-    [2] = ACTION_LAYER_MOMENTARY(1),
-
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) 
-{
-  // MACRODOWN only works in this function
-    switch(id) {
-      case 0:
-        return MACRODOWN(TYPE(KC_T), END);
-      break;
-    } 
-    return MACRO_NONE;
-};
-
diff --git a/keyboard/atomic/keymaps/keymap_default.c b/keyboard/atomic/keymaps/keymap_default.c
deleted file mode 100644 (file)
index f37d9d9..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-#include "atomic.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = { /* Qwerty */
-  { KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_MINS, KC_EQL,  KC_BSPC, KC_DEL   },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-//                                                                                                                      ┌─ 2u ────────────┐
-//                                                                                                                      │   X             │
-//                                                                                                                      └─────────────────┘
-  { KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL   },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 2u ────────────┐                                                                                                  ┌─ 2u ────────────┐
-// │   X             │                                                                                                  │   X             │
-// └─────────────────┘                                                                                                  └─────────────────┘
-  { KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_ENT,  KC_ENT,  KC_PGUP  },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 2u ────────────┐                                                                                         ┌─ 2u ────────────┐
-// │   X             │                                                                                         │   X             │
-// └─────────────────┘                                                                                         └─────────────────┘
-//                                                                                                                      ┌─ 2u ────────────┐
-//                                                                                                                      │   X             │
-//                                                                                                                      └─────────────────┘
-  { KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM,  KC_DOT,  KC_SLSH, KC_RSFT, KC_RSFT, KC_UP,  KC_PGDN  },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-//                                                                                                    ┌─ 2u ────────────┐
-//                                                                                                    │   X             │
-//                                                                                                    └─────────────────┘
-// ┌─ 2u ────────────┐                                                                                         ┌─ 2u ────────────┐
-// │   X             │                                                                                         │   X             │
-// └─────────────────┘                                                                                         └─────────────────┘
-//                                                                                                                      ┌─ 2u ────────────┐
-//                                                                                                                      │   X             │
-//                                                                                                                      └─────────────────┘
-  { BL_STEP, KC_LCTL, KC_LALT, KC_LGUI, KC_LGUI,  KC_SPC,  KC_SPC,  KC_RGUI, KC_RGUI,  KC_RALT, KC_RCTL, BL_STEP, KC_LEFT, KC_DOWN, KC_RGHT  },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 1.25u ──┬ 1.25u ───┬─── 1.25u ┬─── 1.25u ─┬─ 2u ────────────┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬──── 1.25u ┐
-// │   X      │ X        │        X │      X    │   X             │   X      │ X        │        X │      X    │
-// └──────────┴──────────┴──────────┴───────────┴─────────────────┴──────────┴──────────┴──────────┴───────────┘
-//                                                                ┌─ 2u ────────────┐
-//                                                                │   X             │
-//                                                                └─────────────────┘
-//                                  ┌───────────────────── 6.25u ────────────────────────────┐
-//                                  │                        X                               │
-//                                  └────────────────────────────────────────────────────────┘
-//                       ┌─────────────────────── 6.25u ──────────────────────────┬─ 1.25u ──┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬── 1.25u ──┐
-//                       │                          X                             │     X    │   X      │ X        │        X │      X    │
-//                       └────────────────────────────────────────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┘
- }
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_MOMENTARY(2),  // to RAISE
-    [2] = ACTION_LAYER_MOMENTARY(3),  // to LOWER
-
-    [3] = ACTION_DEFAULT_LAYER_SET(0),
-    [4] = ACTION_DEFAULT_LAYER_SET(1),
-
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) 
-{
-  // MACRODOWN only works in this function
-    switch(id) {
-      case 0:
-        return MACRODOWN(TYPE(KC_T), END);
-      break;
-    } 
-    return MACRO_NONE;
-};
diff --git a/keyboard/atomic/keymaps/keymap_michelle.c b/keyboard/atomic/keymaps/keymap_michelle.c
deleted file mode 100644 (file)
index 2364c46..0000000
+++ /dev/null
@@ -1,183 +0,0 @@
-#include "atomic.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
- [0] = { /* Dvorak */
-  { KC_ESC, KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_LBRC, KC_RBRC,  KC_BSPC, KC_NO   },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-//                                                                                                                      ┌─ 2u ────────────┐
-//                                                                                                                      │   X             │
-//                                                                                                                      └─────────────────┘
-  { KC_TAB, KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_SLSH, KC_EQL, KC_INS, KC_DEL   },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 2u ────────────┐                                                                                                  ┌─ 2u ────────────┐
-// │   X             │                                                                                                  │   X             │
-// └─────────────────┘                                                                                                  └─────────────────┘
-  { KC_CAPS, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,   KC_MINS,  KC_ENT,  KC_NO,  KC_PGUP  },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 2u ────────────┐                                                                                         ┌─ 2u ────────────┐
-// │   X             │                                                                                         │   X             │
-// └─────────────────┘                                                                                         └─────────────────┘
-//                                                                                                                      ┌─ 2u ────────────┐
-//                                                                                                                      │   X             │
-//                                                                                                                      └─────────────────┘
-  { KC_LSFT, KC_SCLN,  KC_Q,   KC_J,    KC_K,   KC_X,    KC_B,    KC_M,    KC_W,    KC_V,     KC_Z,    KC_RSFT, KC_NO, KC_UP,  KC_PGDN  },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-//                                                                                                    ┌─ 2u ────────────┐
-//                                                                                                    │   X             │
-//                                                                                                    └─────────────────┘
-// ┌─ 2u ────────────┐                                                                                         ┌─ 2u ────────────┐
-// │   X             │                                                                                         │   X             │
-// └─────────────────┘                                                                                         └─────────────────┘
-//                                                                                                                      ┌─ 2u ────────────┐
-//                                                                                                                      │   X             │
-//                                                                                                                      └─────────────────┘
-  { KC_LCTL, MO(1),   KC_NO,  KC_LALT,  KC_NO,   KC_NO,  KC_SPC,   KC_NO,   KC_NO,   KC_NO,   KC_LGUI, MO(2),  KC_LEFT, KC_DOWN, KC_RGHT  },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 1.25u ──┬ 1.25u ───┬─── 1.25u ┬─── 1.25u ─┬─ 2u ────────────┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬──── 1.25u ┐
-// │   X      │ X        │        X │      X    │   X             │   X      │ X        │        X │      X    │
-// └──────────┴──────────┴──────────┴───────────┴─────────────────┴──────────┴──────────┴──────────┴───────────┘
-//                                                                ┌─ 2u ────────────┐
-//                                                                │   X             │
-//                                                                └─────────────────┘
-//                                  ┌───────────────────── 6.25u ────────────────────────────┐
-//                                  │                        X                               │
-//                                  └────────────────────────────────────────────────────────┘
-//                       ┌─────────────────────── 6.25u ──────────────────────────┬─ 1.25u ──┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬── 1.25u ──┐
-//                       │                          X                             │     X    │   X      │ X        │        X │      X    │
-//                       └────────────────────────────────────────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┘
- },
- [1] = { /* Qwerty + F keys */
-  { KC_ESC, KC_F1,   KC_F2,    KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_BSPC, KC_NO   },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-//                                                                                                                      ┌─ 2u ────────────┐
-//                                                                                                                      │   X             │
-//                                                                                                                      └─────────────────┘
-  { KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_INS, KC_DEL   },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 2u ────────────┐                                                                                                  ┌─ 2u ────────────┐
-// │   X             │                                                                                                  │   X             │
-// └─────────────────┘                                                                                                  └─────────────────┘
-  { KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_ENT,  KC_NO,  KC_PGUP  },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 2u ────────────┐                                                                                         ┌─ 2u ────────────┐
-// │   X             │                                                                                         │   X             │
-// └─────────────────┘                                                                                         └─────────────────┘
-//                                                                                                                      ┌─ 2u ────────────┐
-//                                                                                                                      │   X             │
-//                                                                                                                      └─────────────────┘
-  { KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM,  KC_DOT,  KC_SLSH, KC_RSFT, KC_NO,  KC_UP,  KC_PGDN  },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-//                                                                                                    ┌─ 2u ────────────┐
-//                                                                                                    │   X             │
-//                                                                                                    └─────────────────┘
-// ┌─ 2u ────────────┐                                                                                         ┌─ 2u ────────────┐
-// │   X             │                                                                                         │   X             │
-// └─────────────────┘                                                                                         └─────────────────┘
-//                                                                                                                      ┌─ 2u ────────────┐
-//                                                                                                                      │   X             │
-//                                                                                                                      └─────────────────┘
-  { KC_LCTL, KC_TRNS, KC_NO,   KC_LALT,  KC_NO,   KC_NO,  KC_SPC,   KC_NO,   KC_NO,   KC_NO,   KC_LGUI, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT  },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 1.25u ──┬ 1.25u ───┬─── 1.25u ┬─── 1.25u ─┬─ 2u ────────────┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬──── 1.25u ┐
-// │   X      │ X        │        X │      X    │   X             │   X      │ X        │        X │      X    │
-// └──────────┴──────────┴──────────┴───────────┴─────────────────┴──────────┴──────────┴──────────┴───────────┘
-//                                                                ┌─ 2u ────────────┐
-//                                                                │   X             │
-//                                                                └─────────────────┘
-//                                  ┌───────────────────── 6.25u ────────────────────────────┐
-//                                  │                        X                               │
-//                                  └────────────────────────────────────────────────────────┘
-//                       ┌─────────────────────── 6.25u ──────────────────────────┬─ 1.25u ──┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬── 1.25u ──┐
-//                       │                          X                             │     X    │   X      │ X        │        X │      X    │
-//                       └────────────────────────────────────────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┘
- },
- [2] = { /* Numpad + qwerty shortcut keys */
-  { KC_ESC, KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_P7,    KC_P8,   KC_P9,   KC_0,    KC_LBRC, KC_RBRC,  KC_BSPC, KC_NO   },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-//                                                                                                                      ┌─ 2u ────────────┐
-//                                                                                                                      │   X             │
-//                                                                                                                      └─────────────────┘
-  { KC_TAB, KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_P4,    KC_P5,   KC_P6,   KC_L,    KC_SLSH, KC_EQL, KC_INS, KC_DEL   },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 2u ────────────┐                                                                                                  ┌─ 2u ────────────┐
-// │   X             │                                                                                                  │   X             │
-// └─────────────────┘                                                                                                  └─────────────────┘
-  { KC_CAPS, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_P1,   KC_P2,   KC_P3,    KC_S,   KC_MINS,  KC_ENT,  KC_NO,  KC_PGUP  },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 2u ────────────┐                                                                                         ┌─ 2u ────────────┐
-// │   X             │                                                                                         │   X             │
-// └─────────────────┘                                                                                         └─────────────────┘
-//                                                                                                                      ┌─ 2u ────────────┐
-//                                                                                                                      │   X             │
-//                                                                                                                      └─────────────────┘
-  { KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,   KC_X,    KC_B,     KC_P0,   KC_P0,   KC_PENT, KC_Z,    KC_RSFT, KC_NO, KC_UP,  KC_PGDN  },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-//                                                                                                    ┌─ 2u ────────────┐
-//                                                                                                    │   X             │
-//                                                                                                    └─────────────────┘
-// ┌─ 2u ────────────┐                                                                                         ┌─ 2u ────────────┐
-// │   X             │                                                                                         │   X             │
-// └─────────────────┘                                                                                         └─────────────────┘
-//                                                                                                                      ┌─ 2u ────────────┐
-//                                                                                                                      │   X             │
-//                                                                                                                      └─────────────────┘
-  { KC_LCTL, KC_TRNS, KC_NO,  KC_LALT,  KC_NO,   KC_NO,  KC_SPC,   KC_NO,   KC_NO,   KC_NO,   KC_LGUI, KC_TRNS,  KC_LEFT, KC_DOWN, KC_RGHT  },
-// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
-// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
-// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
-// ┌─ 1.25u ──┬ 1.25u ───┬─── 1.25u ┬─── 1.25u ─┬─ 2u ────────────┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬──── 1.25u ┐
-// │   X      │ X        │        X │      X    │   X             │   X      │ X        │        X │      X    │
-// └──────────┴──────────┴──────────┴───────────┴─────────────────┴──────────┴──────────┴──────────┴───────────┘
-//                                                                ┌─ 2u ────────────┐
-//                                                                │   X             │
-//                                                                └─────────────────┘
-//                                  ┌───────────────────── 6.25u ────────────────────────────┐
-//                                  │                        X                               │
-//                                  └────────────────────────────────────────────────────────┘
-//                       ┌─────────────────────── 6.25u ──────────────────────────┬─ 1.25u ──┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬── 1.25u ──┐
-//                       │                          X                             │     X    │   X      │ X        │        X │      X    │
-//                       └────────────────────────────────────────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┘
- },
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) 
-{
-  // MACRODOWN only works in this function
-    switch(id) {
-      case 0:
-        return MACRODOWN(TYPE(KC_T), END);
-      break;
-    } 
-    return MACRO_NONE;
-};
diff --git a/keyboard/atomic/keymaps/michelle.c b/keyboard/atomic/keymaps/michelle.c
new file mode 100644 (file)
index 0000000..2364c46
--- /dev/null
@@ -0,0 +1,183 @@
+#include "atomic.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = { /* Dvorak */
+  { KC_ESC, KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_LBRC, KC_RBRC,  KC_BSPC, KC_NO   },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+//                                                                                                                      ┌─ 2u ────────────┐
+//                                                                                                                      │   X             │
+//                                                                                                                      └─────────────────┘
+  { KC_TAB, KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_SLSH, KC_EQL, KC_INS, KC_DEL   },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 2u ────────────┐                                                                                                  ┌─ 2u ────────────┐
+// │   X             │                                                                                                  │   X             │
+// └─────────────────┘                                                                                                  └─────────────────┘
+  { KC_CAPS, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,   KC_MINS,  KC_ENT,  KC_NO,  KC_PGUP  },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 2u ────────────┐                                                                                         ┌─ 2u ────────────┐
+// │   X             │                                                                                         │   X             │
+// └─────────────────┘                                                                                         └─────────────────┘
+//                                                                                                                      ┌─ 2u ────────────┐
+//                                                                                                                      │   X             │
+//                                                                                                                      └─────────────────┘
+  { KC_LSFT, KC_SCLN,  KC_Q,   KC_J,    KC_K,   KC_X,    KC_B,    KC_M,    KC_W,    KC_V,     KC_Z,    KC_RSFT, KC_NO, KC_UP,  KC_PGDN  },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+//                                                                                                    ┌─ 2u ────────────┐
+//                                                                                                    │   X             │
+//                                                                                                    └─────────────────┘
+// ┌─ 2u ────────────┐                                                                                         ┌─ 2u ────────────┐
+// │   X             │                                                                                         │   X             │
+// └─────────────────┘                                                                                         └─────────────────┘
+//                                                                                                                      ┌─ 2u ────────────┐
+//                                                                                                                      │   X             │
+//                                                                                                                      └─────────────────┘
+  { KC_LCTL, MO(1),   KC_NO,  KC_LALT,  KC_NO,   KC_NO,  KC_SPC,   KC_NO,   KC_NO,   KC_NO,   KC_LGUI, MO(2),  KC_LEFT, KC_DOWN, KC_RGHT  },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 1.25u ──┬ 1.25u ───┬─── 1.25u ┬─── 1.25u ─┬─ 2u ────────────┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬──── 1.25u ┐
+// │   X      │ X        │        X │      X    │   X             │   X      │ X        │        X │      X    │
+// └──────────┴──────────┴──────────┴───────────┴─────────────────┴──────────┴──────────┴──────────┴───────────┘
+//                                                                ┌─ 2u ────────────┐
+//                                                                │   X             │
+//                                                                └─────────────────┘
+//                                  ┌───────────────────── 6.25u ────────────────────────────┐
+//                                  │                        X                               │
+//                                  └────────────────────────────────────────────────────────┘
+//                       ┌─────────────────────── 6.25u ──────────────────────────┬─ 1.25u ──┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬── 1.25u ──┐
+//                       │                          X                             │     X    │   X      │ X        │        X │      X    │
+//                       └────────────────────────────────────────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┘
+ },
+ [1] = { /* Qwerty + F keys */
+  { KC_ESC, KC_F1,   KC_F2,    KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_BSPC, KC_NO   },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+//                                                                                                                      ┌─ 2u ────────────┐
+//                                                                                                                      │   X             │
+//                                                                                                                      └─────────────────┘
+  { KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, KC_RBRC, KC_INS, KC_DEL   },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 2u ────────────┐                                                                                                  ┌─ 2u ────────────┐
+// │   X             │                                                                                                  │   X             │
+// └─────────────────┘                                                                                                  └─────────────────┘
+  { KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, KC_ENT,  KC_NO,  KC_PGUP  },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 2u ────────────┐                                                                                         ┌─ 2u ────────────┐
+// │   X             │                                                                                         │   X             │
+// └─────────────────┘                                                                                         └─────────────────┘
+//                                                                                                                      ┌─ 2u ────────────┐
+//                                                                                                                      │   X             │
+//                                                                                                                      └─────────────────┘
+  { KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM,  KC_DOT,  KC_SLSH, KC_RSFT, KC_NO,  KC_UP,  KC_PGDN  },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+//                                                                                                    ┌─ 2u ────────────┐
+//                                                                                                    │   X             │
+//                                                                                                    └─────────────────┘
+// ┌─ 2u ────────────┐                                                                                         ┌─ 2u ────────────┐
+// │   X             │                                                                                         │   X             │
+// └─────────────────┘                                                                                         └─────────────────┘
+//                                                                                                                      ┌─ 2u ────────────┐
+//                                                                                                                      │   X             │
+//                                                                                                                      └─────────────────┘
+  { KC_LCTL, KC_TRNS, KC_NO,   KC_LALT,  KC_NO,   KC_NO,  KC_SPC,   KC_NO,   KC_NO,   KC_NO,   KC_LGUI, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT  },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 1.25u ──┬ 1.25u ───┬─── 1.25u ┬─── 1.25u ─┬─ 2u ────────────┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬──── 1.25u ┐
+// │   X      │ X        │        X │      X    │   X             │   X      │ X        │        X │      X    │
+// └──────────┴──────────┴──────────┴───────────┴─────────────────┴──────────┴──────────┴──────────┴───────────┘
+//                                                                ┌─ 2u ────────────┐
+//                                                                │   X             │
+//                                                                └─────────────────┘
+//                                  ┌───────────────────── 6.25u ────────────────────────────┐
+//                                  │                        X                               │
+//                                  └────────────────────────────────────────────────────────┘
+//                       ┌─────────────────────── 6.25u ──────────────────────────┬─ 1.25u ──┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬── 1.25u ──┐
+//                       │                          X                             │     X    │   X      │ X        │        X │      X    │
+//                       └────────────────────────────────────────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┘
+ },
+ [2] = { /* Numpad + qwerty shortcut keys */
+  { KC_ESC, KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_P7,    KC_P8,   KC_P9,   KC_0,    KC_LBRC, KC_RBRC,  KC_BSPC, KC_NO   },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+//                                                                                                                      ┌─ 2u ────────────┐
+//                                                                                                                      │   X             │
+//                                                                                                                      └─────────────────┘
+  { KC_TAB, KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_P4,    KC_P5,   KC_P6,   KC_L,    KC_SLSH, KC_EQL, KC_INS, KC_DEL   },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 2u ────────────┐                                                                                                  ┌─ 2u ────────────┐
+// │   X             │                                                                                                  │   X             │
+// └─────────────────┘                                                                                                  └─────────────────┘
+  { KC_CAPS, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_P1,   KC_P2,   KC_P3,    KC_S,   KC_MINS,  KC_ENT,  KC_NO,  KC_PGUP  },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 2u ────────────┐                                                                                         ┌─ 2u ────────────┐
+// │   X             │                                                                                         │   X             │
+// └─────────────────┘                                                                                         └─────────────────┘
+//                                                                                                                      ┌─ 2u ────────────┐
+//                                                                                                                      │   X             │
+//                                                                                                                      └─────────────────┘
+  { KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,   KC_X,    KC_B,     KC_P0,   KC_P0,   KC_PENT, KC_Z,    KC_RSFT, KC_NO, KC_UP,  KC_PGDN  },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+//                                                                                                    ┌─ 2u ────────────┐
+//                                                                                                    │   X             │
+//                                                                                                    └─────────────────┘
+// ┌─ 2u ────────────┐                                                                                         ┌─ 2u ────────────┐
+// │   X             │                                                                                         │   X             │
+// └─────────────────┘                                                                                         └─────────────────┘
+//                                                                                                                      ┌─ 2u ────────────┐
+//                                                                                                                      │   X             │
+//                                                                                                                      └─────────────────┘
+  { KC_LCTL, KC_TRNS, KC_NO,  KC_LALT,  KC_NO,   KC_NO,  KC_SPC,   KC_NO,   KC_NO,   KC_NO,   KC_LGUI, KC_TRNS,  KC_LEFT, KC_DOWN, KC_RGHT  },
+// ┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
+// │        │        │        │        │        │        │        │        │        │        │        │        │        │        │        │
+// └────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
+// ┌─ 1.25u ──┬ 1.25u ───┬─── 1.25u ┬─── 1.25u ─┬─ 2u ────────────┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬──── 1.25u ┐
+// │   X      │ X        │        X │      X    │   X             │   X      │ X        │        X │      X    │
+// └──────────┴──────────┴──────────┴───────────┴─────────────────┴──────────┴──────────┴──────────┴───────────┘
+//                                                                ┌─ 2u ────────────┐
+//                                                                │   X             │
+//                                                                └─────────────────┘
+//                                  ┌───────────────────── 6.25u ────────────────────────────┐
+//                                  │                        X                               │
+//                                  └────────────────────────────────────────────────────────┘
+//                       ┌─────────────────────── 6.25u ──────────────────────────┬─ 1.25u ──┬─ 1.25u ──┬─ 1.25u ──┬─── 1.25u ┬── 1.25u ──┐
+//                       │                          X                             │     X    │   X      │ X        │        X │      X    │
+//                       └────────────────────────────────────────────────────────┴──────────┴──────────┴──────────┴──────────┴───────────┘
+ },
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) 
+{
+  // MACRODOWN only works in this function
+    switch(id) {
+      case 0:
+        return MACRODOWN(TYPE(KC_T), END);
+      break;
+    } 
+    return MACRO_NONE;
+};
index 2e542d62eddf93b7901606aed42968e13feb8d3f..a6fddd70d2aaf4344c0a98c64432928112de2b66 100644 (file)
@@ -53,9 +53,9 @@ TARGET_DIR = .
 SRC = atreus.c
 
 ifdef KEYMAP
-    SRC := keymaps/keymap_$(KEYMAP).c $(SRC)
+    SRC := keymaps/$(KEYMAP).c $(SRC)
 else
-    SRC := keymaps/keymap_default.c $(SRC)
+    SRC := keymaps/default.c $(SRC)
 endif
 
 ifdef TEENSY2
index 4db7ac1203ba0835edd7820304b9c6a353f87530..aacf2841f4a7948cd5fdcc1dc77adfc4eae2eb28 100644 (file)
@@ -177,10 +177,10 @@ Depending on which keymap you would like to use, you will have to compile slight
 To build with the default keymap, simply run `make`.
 
 ### Other Keymaps
-Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `keymap_<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
+Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
 
 To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like:
 ```
 $ make KEYMAP=[default|jack|<name>]
 ```
-Keymaps follow the format **__keymap\_\<name\>.c__** and are stored in the `keymaps` folder.
+Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
diff --git a/keyboard/atreus/keymaps/default.c b/keyboard/atreus/keymaps/default.c
new file mode 100644 (file)
index 0000000..1c4280f
--- /dev/null
@@ -0,0 +1,51 @@
+// this is the style you want to emulate.
+// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
+
+#include "atreus.h"
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QW 0
+#define _RS 1
+#define _LW 2
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[_QW] = { /* Qwerty */
+  {KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,   KC_TRNS,  KC_Y,    KC_U,    KC_I,    KC_O,    KC_P    },
+  {KC_A,    KC_S,    KC_D,    KC_F,    KC_G,   KC_TRNS,  KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN },
+  {KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,   KC_LALT,  KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH },
+  {KC_ESC, KC_TAB, KC_LGUI,  KC_LSFT, KC_BSPC,  KC_LCTL, KC_SPC,  MO(_RS), KC_MINS, KC_QUOT, KC_ENT  }
+},
+[_RS] = { /* [> RAISE <] */
+  {KC_EXLM, KC_AT,   KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS, KC_PGUP, KC_7,    KC_8,   KC_9, KC_ASTR},
+  {KC_HASH, KC_DLR,  KC_LPRN, KC_RPRN, KC_GRV,  KC_TRNS, KC_PGDN, KC_4,    KC_5,   KC_6, KC_PLUS},
+  {KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_LALT, KC_AMPR, KC_1,    KC_2,   KC_3, KC_BSLS},
+  {TG(_LW), KC_INS,  KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC,  KC_TRNS, KC_DOT, KC_0, KC_EQL}
+},
+[_LW] = { /* [> LOWER <] */
+  {KC_INS,  KC_HOME, KC_UP,   KC_END,  KC_PGUP, KC_TRNS, KC_UP,   KC_F7,   KC_F8,   KC_F9,   KC_F10},
+  {KC_DELT, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, KC_TRNS, KC_DOWN, KC_F4,   KC_F5,   KC_F6,   KC_F11},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LALT, KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F12},
+  {KC_TRNS, KC_TRNS, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC,  DF(_QW), KC_TRNS, KC_TRNS, RESET}
+}};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+          if (record->event.pressed) {
+            register_code(KC_RSFT);
+          } else {
+            unregister_code(KC_RSFT);
+          }
+        break;
+      }
+    return MACRO_NONE;
+};
diff --git a/keyboard/atreus/keymaps/gerb.c b/keyboard/atreus/keymaps/gerb.c
new file mode 100644 (file)
index 0000000..1ba3942
--- /dev/null
@@ -0,0 +1,66 @@
+// This is the personal keymap of Chris Gerber (@gerbercj). I haven't worked out the kinks
+// with the Colemak and Dvorak support yet, but everything else works nicely.
+
+#include "atreus.h"
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QW 0
+#define _CM 1
+#define _DV 2
+#define _L1 3
+#define _L2 4
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+  [_QW] = { /* Qwerty */
+    {KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_NO,   KC_Y,    KC_U,    KC_I,    KC_O,    KC_P   },
+    {KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_NO,   KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN},
+    {KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_LALT, KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH},
+    {KC_ESC,  KC_TAB,  KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC,  MO(_L1), KC_MINS, KC_QUOT, KC_ENT }
+  },
+  [_CM] = { /* Colemak */
+    {KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_NO,   KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN},
+    {KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_NO,   KC_H,    KC_N,    KC_E,    KC_I,    KC_O   },
+    {KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_LALT, KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH},
+    {KC_ESC,  KC_TAB,  KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC,  MO(_L1), KC_MINS, KC_QUOT, KC_ENT }
+  },
+  [_DV] = { /* Dvorak */
+    {KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_NO,   KC_F,    KC_G,    KC_C,    KC_R,    KC_L   },
+    {KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_NO,   KC_D,    KC_H,    KC_T,    KC_N,    KC_S   },
+    {KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_LALT, KC_B,    KC_M,    KC_W,    KC_V,    KC_Z   },
+    {KC_ESC,  KC_TAB,  KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC,  MO(_L1), KC_MINS, KC_SLSH, KC_ENT }
+  },
+  [_L1] = { /* LAYER 1 */
+    {KC_INS,  KC_HOME, KC_UP,   KC_END,  KC_PGUP, KC_NO,   KC_VOLU, KC_7,    KC_8,    KC_9,    KC_LBRC},
+    {KC_DEL,  KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_NO,   KC_VOLD, KC_4,    KC_5,    KC_6,    KC_RBRC},
+    {KC_GRV,  KC_MPRV, KC_MPLY, KC_MNXT, KC_MINS, KC_LALT, KC_MUTE, KC_1,    KC_2,    KC_3,    KC_BSLS},
+    {TG(_L2), KC_APP,  KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC,  KC_TRNS, KC_DOT,  KC_0,    KC_EQL }
+  },
+  [_L2] = { /* LAYER 2 */
+    {KC_TRNS, KC_WH_L, KC_MS_U, KC_WH_R, KC_WH_U, KC_NO,   DF(_QW), KC_F7,   KC_F8,   KC_F9,   KC_F10 },
+    {KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, KC_NO,   DF(_CM), KC_F6,   KC_F5,   KC_F6,   KC_F11 },
+    {KC_BTN4, KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, KC_LALT, DF(_DV), KC_F1,   KC_F2,   KC_F3,   KC_F12 },
+    {KC_TRNS, KC_TRNS, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC,  KC_TRNS, KC_TRNS, KC_TRNS, RESET  }
+  }
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+          if (record->event.pressed) {
+            register_code(KC_RSFT);
+          } else {
+            unregister_code(KC_RSFT);
+          }
+        break;
+      }
+    return MACRO_NONE;
+};
diff --git a/keyboard/atreus/keymaps/keymap_default.c b/keyboard/atreus/keymaps/keymap_default.c
deleted file mode 100644 (file)
index 1c4280f..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-// this is the style you want to emulate.
-// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
-
-#include "atreus.h"
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-#define _QW 0
-#define _RS 1
-#define _LW 2
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[_QW] = { /* Qwerty */
-  {KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,   KC_TRNS,  KC_Y,    KC_U,    KC_I,    KC_O,    KC_P    },
-  {KC_A,    KC_S,    KC_D,    KC_F,    KC_G,   KC_TRNS,  KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN },
-  {KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,   KC_LALT,  KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH },
-  {KC_ESC, KC_TAB, KC_LGUI,  KC_LSFT, KC_BSPC,  KC_LCTL, KC_SPC,  MO(_RS), KC_MINS, KC_QUOT, KC_ENT  }
-},
-[_RS] = { /* [> RAISE <] */
-  {KC_EXLM, KC_AT,   KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS, KC_PGUP, KC_7,    KC_8,   KC_9, KC_ASTR},
-  {KC_HASH, KC_DLR,  KC_LPRN, KC_RPRN, KC_GRV,  KC_TRNS, KC_PGDN, KC_4,    KC_5,   KC_6, KC_PLUS},
-  {KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_LALT, KC_AMPR, KC_1,    KC_2,   KC_3, KC_BSLS},
-  {TG(_LW), KC_INS,  KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC,  KC_TRNS, KC_DOT, KC_0, KC_EQL}
-},
-[_LW] = { /* [> LOWER <] */
-  {KC_INS,  KC_HOME, KC_UP,   KC_END,  KC_PGUP, KC_TRNS, KC_UP,   KC_F7,   KC_F8,   KC_F9,   KC_F10},
-  {KC_DELT, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, KC_TRNS, KC_DOWN, KC_F4,   KC_F5,   KC_F6,   KC_F11},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LALT, KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F12},
-  {KC_TRNS, KC_TRNS, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_SPC,  DF(_QW), KC_TRNS, KC_TRNS, RESET}
-}};
-
-const uint16_t PROGMEM fn_actions[] = {
-
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-          if (record->event.pressed) {
-            register_code(KC_RSFT);
-          } else {
-            unregister_code(KC_RSFT);
-          }
-        break;
-      }
-    return MACRO_NONE;
-};
diff --git a/keyboard/atreus/keymaps/keymap_gerb.c b/keyboard/atreus/keymaps/keymap_gerb.c
deleted file mode 100644 (file)
index 1ba3942..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-// This is the personal keymap of Chris Gerber (@gerbercj). I haven't worked out the kinks
-// with the Colemak and Dvorak support yet, but everything else works nicely.
-
-#include "atreus.h"
-
-// Each layer gets a name for readability, which is then used in the keymap matrix below.
-// The underscores don't mean anything - you can have a layer called STUFF or any other name.
-// Layer names don't all need to be of the same length, obviously, and you can also skip them
-// entirely and just use numbers.
-#define _QW 0
-#define _CM 1
-#define _DV 2
-#define _L1 3
-#define _L2 4
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-  [_QW] = { /* Qwerty */
-    {KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_NO,   KC_Y,    KC_U,    KC_I,    KC_O,    KC_P   },
-    {KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_NO,   KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN},
-    {KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_LALT, KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH},
-    {KC_ESC,  KC_TAB,  KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC,  MO(_L1), KC_MINS, KC_QUOT, KC_ENT }
-  },
-  [_CM] = { /* Colemak */
-    {KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_NO,   KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN},
-    {KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_NO,   KC_H,    KC_N,    KC_E,    KC_I,    KC_O   },
-    {KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_LALT, KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH},
-    {KC_ESC,  KC_TAB,  KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC,  MO(_L1), KC_MINS, KC_QUOT, KC_ENT }
-  },
-  [_DV] = { /* Dvorak */
-    {KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_NO,   KC_F,    KC_G,    KC_C,    KC_R,    KC_L   },
-    {KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_NO,   KC_D,    KC_H,    KC_T,    KC_N,    KC_S   },
-    {KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_LALT, KC_B,    KC_M,    KC_W,    KC_V,    KC_Z   },
-    {KC_ESC,  KC_TAB,  KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC,  MO(_L1), KC_MINS, KC_SLSH, KC_ENT }
-  },
-  [_L1] = { /* LAYER 1 */
-    {KC_INS,  KC_HOME, KC_UP,   KC_END,  KC_PGUP, KC_NO,   KC_VOLU, KC_7,    KC_8,    KC_9,    KC_LBRC},
-    {KC_DEL,  KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_NO,   KC_VOLD, KC_4,    KC_5,    KC_6,    KC_RBRC},
-    {KC_GRV,  KC_MPRV, KC_MPLY, KC_MNXT, KC_MINS, KC_LALT, KC_MUTE, KC_1,    KC_2,    KC_3,    KC_BSLS},
-    {TG(_L2), KC_APP,  KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC,  KC_TRNS, KC_DOT,  KC_0,    KC_EQL }
-  },
-  [_L2] = { /* LAYER 2 */
-    {KC_TRNS, KC_WH_L, KC_MS_U, KC_WH_R, KC_WH_U, KC_NO,   DF(_QW), KC_F7,   KC_F8,   KC_F9,   KC_F10 },
-    {KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, KC_NO,   DF(_CM), KC_F6,   KC_F5,   KC_F6,   KC_F11 },
-    {KC_BTN4, KC_BTN1, KC_BTN2, KC_BTN3, KC_BTN4, KC_LALT, DF(_DV), KC_F1,   KC_F2,   KC_F3,   KC_F12 },
-    {KC_TRNS, KC_TRNS, KC_LGUI, KC_LSFT, KC_BSPC, KC_RCTL, KC_SPC,  KC_TRNS, KC_TRNS, KC_TRNS, RESET  }
-  }
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-          if (record->event.pressed) {
-            register_code(KC_RSFT);
-          } else {
-            unregister_code(KC_RSFT);
-          }
-        break;
-      }
-    return MACRO_NONE;
-};
diff --git a/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/README.md b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/README.md
new file mode 100644 (file)
index 0000000..984106f
--- /dev/null
@@ -0,0 +1,29 @@
+# ErgoDox EZ Dvorak International Squisher
+
+Dvorak layout adjusted with several (linux) applications in mind:
+
+* Easier Escape for VIM
+* Windows/Super key for awesome WM
+* Alt+Shift for international characters
+* PrintScreen for sys-rq
+* Insert for the X11 clip-board
+
+Major layer changes:
+
+* Common multimedia keys are integrated into layer 0, less common into layer 1
+* No mouse keys
+* Layer 2 is qwerty (for easier gaming & less fortunate keyboard users)
+
+Known issues:
+
+* Alt+Shift does not work reliably (depends on the X11 kb layout? Not
+  entirely clear...)
+
+![layer0](keyboard-layout0.png)
+![layer1](keyboard-layout1.png)
+![layer2](keyboard-layout2.png)
+
+## Changelog
+
+* 2016-03-29
+  * Initial release
diff --git a/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/dvorak_intl_squisher.hex b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/dvorak_intl_squisher.hex
new file mode 100644 (file)
index 0000000..bd70f58
--- /dev/null
@@ -0,0 +1,1127 @@
+:100000000C9465020C94AC020C94AC020C94AC02FF\r
+:100010000C94AC020C94AC020C94AC020C94AC02A8\r
+:100020000C94AC020C94AC020C94B50B0C94870CA1\r
+:100030000C94AC020C94AC020C94AC020C94AC0288\r
+:100040000C94AC020C943B210C94AC020C94AC02CA\r
+:100050000C94AC020C94C71A0C94AC020C94AC0235\r
+:100060000C94AC020C94AC020C94AC020C94AC0258\r
+:100070000C94AC020C94AC020C94AC020C94AC0248\r
+:100080000C94AC020C94AC020C94AC020C94AC0238\r
+:100090000C94AC020C94AC020C94AC020C94AC0228\r
+:1000A0000C94AC020C94AC020C94AC02F40C160D43\r
+:1000B000040E160D040E5B0D7E0D040ED30DE60D21\r
+:1000C000D110D11000110011431181119A139A130C\r
+:1000D0009A119A139B129B126E139A139A138513FB\r
+:1000E0000000F0A12E0029002A00E1003581000067\r
+:1000F0001E00340004003371E2004D001F00360082\r
+:1001000012001400E3002B002000370008000D004F\r
+:1001100050002C002100130018000E004F004A0070\r
+:1001200022001C000C001B0000006571B6004C0092\r
+:100130000000007F00000154AE004900000000777D\r
+:1001400000000254230009000700050000004600DB\r
+:1001500024000A000B00100052004B00250006008E\r
+:1001600017001A0051002800260015001100190080\r
+:100170002F00E51427000F0016001D7130004E00FF\r
+:10018000318238002D00E500C100000001000100AF\r
+:1001900001000100010000003A001E0220022202BC\r
+:1001A000010001003B001F022102230201000100A7\r
+:1001B0003C002F0226022F00AC0001003D0030025F\r
+:1001C00027023000AB0001003E003102350035024D\r
+:1001D000000001000100010000000100000001001A\r
+:1001E0000100010000000100000001003F0052007A\r
+:1001F00051002402000001004000240021001E00E4\r
+:100200000100A9004100250022001F003700010065\r
+:1002100042002600230020002700A80043002502FA\r
+:100220002E0231002E00AA0044004500010001000A\r
+:1002300001000000010001000100010001000000B8\r
+:100240000100140004001D710100010001001A00EA\r
+:1002500016001B0001000100010008000700060055\r
+:100260000100010001001500090019000100010052\r
+:10027000010017000A000500000001000100010054\r
+:100280000000010000000100010001000000010069\r
+:100290000000010001001C000B0011000000010023\r
+:1002A000010018000D0010000100010001000C0009\r
+:1002B0000E00360001000100010012000F0037009F\r
+:1002C00001000100010013003382387101000100B8\r
+:1002D00001000100010001000100000016034500BB\r
+:1002E000720067006F0044006F0078002000450036\r
+:1002F0005A00000016034500720067006F004400BA\r
+:100300006F007800200045005A0000000403090433\r
+:1003100009026D00040100A0FA09040000010301B4\r
+:100320000100092111010001223F00070581030896\r
+:10033000000A090401000103010200092111010062\r
+:1003400001224D000705820308000A09040200018A\r
+:100350000300000009211101000122360007058376\r
+:100360000308000A09040300010300000009211129\r
+:100370000100012239000705840310000112011059\r
+:100380000100000008EDFE07130100010200010555\r
+:10039000010906A101050719E029E71500250195C6\r
+:1003A0000875018102050819012905950575019156\r
+:1003B000029501750391010507190029771500259C\r
+:1003C00001957875018102C005010980A1018502AE\r
+:1003D00016010026B7001A01002AB7007510950112\r
+:1003E0008100C0050C0901A1018503160100269CAE\r
+:1003F000021A01002A9C02751095018100C00501B6\r
+:100400000902A1010901A100050919012905150029\r
+:10041000250195057501810295017503810105018D\r
+:10042000093009311581257F950275088106093843\r
+:100430001581257F950175088106050C0A3802157E\r
+:1004400081257F950175088106C0C005010906A1B7\r
+:1004500001050719E029E7150025019508750181B7\r
+:100460000295017508810105081901290595057591\r
+:100470000191029501750391010507190029FF15E6\r
+:100480000025FF950675088100C0000000000000EF\r
+:100490000000000000010204060A0F17202C3A4A4F\r
+:1004A0005D71879DB3C7DAE9F5FCFFFCF5E9DAC7B2\r
+:1004B000B39D87715D4A3A2C20170F0A060402018A\r
+:1004C0000000000000000000000011241FBECFEF5C\r
+:1004D000DAE0DEBFCDBF04B603FE27C08091EF0196\r
+:1004E0009091F001A091F101B091F2018730904B11\r
+:1004F000A740B04BD1F41092EF011092F00110928E\r
+:10050000F1011092F20114BE84B7877F84BF0FB649\r
+:10051000F894A895809160008861809360001092A3\r
+:1005200060000FBEE0E0FFE3099511E0A0E0B1E05C\r
+:10053000E8E1F6E402C005900D92A433B107D9F7C3\r
+:1005400021E0A4E3B1E001C01D92AF3EB207E1F7A4\r
+:100550000E94F6080C940A230C94000061110BC051\r
+:10056000FC018281882321F085EE0E94660F03C082\r
+:1005700085EE0E942E1080E090E00895089560912D\r
+:10058000B1017091B2018091B3019091B4010E94C8\r
+:10059000F01956985E9825982D9826982E982798A9\r
+:1005A0002F98813019F0823021F00895259A2D9AE4\r
+:1005B0000895269A2E9A08950C94BF0256985E9834\r
+:1005C00025982D9826982E9827982F988FEF90E0B1\r
+:1005D000909389008093880090938B0080938A0089\r
+:1005E00090938D0080938C00259A2D9A2FEF80E7B1\r
+:1005F00092E0215080409040E1F700C00000269A30\r
+:100600002E9A2FEF80E792E0215080409040E1F752\r
+:1006100000C00000279A2F9A2FEF80E792E0215028\r
+:1006200080409040E1F700C0000025982D982FEF02\r
+:1006300080E792E0215080409040E1F700C0000048\r
+:1006400026982E982FEF80E792E02150804090402E\r
+:10065000E1F700C0000027982F9856985E982598DB\r
+:100660002D9826982E9827982F98089589EA809398\r
+:10067000800089E08093810024982C983F988AB16B\r
+:100680008F748AB96E98479A8BB1806B8BB9769AC2\r
+:100690000E94DE020C94BE0280E2809300018091F1\r
+:1006A000340181110EC00E949B0381E080933401CC\r
+:1006B0002FEF83ED90E3215080409040E1F700C0A0\r
+:1006C000000080E40E94A1038093000181112EC0EC\r
+:1006D0000E94CB0380930001811128C00E94CB03AC\r
+:1006E00080930001811122C08FE30E94CB0380938D\r
+:1006F000000181111BC00E94C30380E40E94A1037A\r
+:1007000080930001811112C08CE00E94CB03809382\r
+:10071000000181110BC00E94CB0380930001811165\r
+:1007200005C08FE30E94CB03809300010E94C303A6\r
+:100730008091000108951092B9008AE08093B8007A\r
+:10074000089594EA9093BC009091BC0097FFFCCF71\r
+:100750009091B900987F983021F0903111F081E0AC\r
+:1007600008958093BB0084E88093BC008091BC0016\r
+:1007700087FFFCCF8091B900887F883111F08034E9\r
+:1007800071F780E0089584E98093BC008091BC00FB\r
+:1007900084FDFCCF08958093BB0084E88093BC0067\r
+:1007A0008091BC0087FFFCCF9091B900987F81E0D9\r
+:1007B000983209F480E0089584E88093BC00809129\r
+:1007C000BC0087FFFCCF8091BB00089580910001A1\r
+:1007D000811115C080E40E94A10380930001811162\r
+:1007E0000CC082E10E94CB0380930001811105C0FF\r
+:1007F0008FEF0E94CB03809300010E94C30384B15A\r
+:10080000807F84B985B1807F85B98AB1837F8AB9B9\r
+:100810008BB1837F8BB93E98469808950E944C0314\r
+:10082000809300010E94E60380B38C7080BB81B38B\r
+:10083000836F81BBA6E3B1E0E4E4F1E08EE08E0FCC\r
+:1008400011921D928E13FCCF0C943603BF92CF925F\r
+:10085000DF92EF92FF920F931F93CF93DF938091DC\r
+:100860000001882379F0809135018F5F80933501F5\r
+:10087000811108C00E944C0380930001811102C0C5\r
+:100880000E94DE0206E311E0C0E0D0E0DD24D39454\r
+:1008900082E0C82EEE24E394F12CC730D10500F598\r
+:1008A00080910001811164C080E40E94A1038093C3\r
+:1008B0000001811112C082E10E94CB0380930001EC\r
+:1008C00081110BC0C7010C2E01C0880F0A94EAF7F2\r
+:1008D00080950E94CB03809300010E94C30348C00F\r
+:1008E000CA30A1F028F4C83059F0C93061F005C011\r
+:1008F000CC3089F070F0CD3089F0209A289810C063\r
+:10090000219A29980DC0229A2A980AC0239A2B98D6\r
+:1009100007C0529A01C0539A5B9802C03E9A46980B\r
+:1009200090EA9A95F1F79FB1799902C082E001C0EF\r
+:1009300080E091709D25982B7C9902C084E001C0D5\r
+:1009400080E0892B7D9902C038E001C030E0832B24\r
+:100950007E9902C020E101C020E0822B9FB19095DA\r
+:10096000991F9927991F9295990F907E892B0FC0F7\r
+:1009700080910001811149C080E40E94A10380930D\r
+:100980000001882379F1B12C0E94C3038B2DF8015B\r
+:100990009081981719F08083C09201010E94E603AC\r
+:1009A00021960F5F1F4FCE30D10509F076CF809191\r
+:1009B0000101882361F1815080930101882339F07E\r
+:1009C0008FE99FE00197F1F700C0000020C0A4E488\r
+:1009D000B1E0E6E3F1E0CF01825F91919D938E1348\r
+:1009E000FCCF15C083E10E94CB03809300018111ED\r
+:1009F000CACF81E40E94A103809300018111C3CF7B\r
+:100A00000E94DC03B82EB094BFCF80E0C0CF0E941C\r
+:100A1000DC0281E0DF91CF911F910F91FF90EF9069\r
+:100A2000DF90CF90BF900895E82FF0E0EC5BFE4F91\r
+:100A30008081089508958B3B910578F4883A91055B\r
+:100A400040F5853A9105D0F48430910508F0B1C0A5\r
+:100A50008130910509F4ADC06BC0803E910508F46A\r
+:100A600067C0883E910508F4A4C09C01205F31094D\r
+:100A70002031310508F05CC090650895853A9105F4\r
+:100A800009F459C0863A910509F058C082E890E40B\r
+:100A90000895883A910509F454C0893A910509F4FA\r
+:100AA00053C08A3A910509F452C08B3A910509F472\r
+:100AB00051C08C3A910509F450C08D3A910509F462\r
+:100AC0004FC0803B910509F44EC08E3A910509F460\r
+:100AD0004DC08F3A910509F44CC0813B910509F452\r
+:100AE0004BC0823B910509F44AC0833B910509F450\r
+:100AF00049C0843B910509F448C0853B910509F440\r
+:100B000047C0863B910509F446C0873B910509F42F\r
+:100B100045C0883B910509F444C0893B910509F41F\r
+:100B200043C08A3B910509F442C080E094E40895F3\r
+:100B300080E090E0089581E890E4089583E890E4EF\r
+:100B4000089582EE94E4089589EE94E408958AEE7F\r
+:100B500094E4089585EB94E4089586EB94E4089575\r
+:100B600087EB94E408958CEC94E408958DEC94E480\r
+:100B7000089583E895E408958AE895E4089582E964\r
+:100B800095E4089584E995E4089581E296E4089552\r
+:100B900083E296E4089584E296E4089585E296E47B\r
+:100BA000089586E296E4089587E296E408958AE23D\r
+:100BB00096E40895089596E0799FF001112494E554\r
+:100BC000899FE00DF11D1124E60FF11DEE0FFF1FAF\r
+:100BD000EC51FF4F859194910895880F991FFC0166\r
+:100BE000E05AF040859194910895880F991FFC0177\r
+:100BF000E052FF4F85919491089526E0729FF00195\r
+:100C0000112444E5849FE00DF11D1124E60FF11D30\r
+:100C1000EE0FFF1FEC51FF4F859194919C013A9587\r
+:100C200021154FE1340708F41CC13F512115304113\r
+:100C300020F49F700E94F50508959C013053211502\r
+:100C4000304118F49927906C0895811520E592079A\r
+:100C500071F40E94BE134FEF84E39CE0415080404A\r
+:100C60009040E1F700C000000E94EC1AFAC0813009\r
+:100C700020E5920731F48091CD0181608093CD0110\r
+:100C8000F0C09C0130552115304108F051C0292F8A\r
+:100C900033272F70332721303105D9F4AC0143704D\r
+:100CA000552702C0220F331F4A95E2F73C68AC017A\r
+:100CB00064E0440F551F6A95E1F744275370242BD5\r
+:100CC000352B73E0880F991F7A95E1F78076992785\r
+:100CD0001DC02230310529F4982F8827816F906A32\r
+:100CE000089523303105A9F4AC014370552721E064\r
+:100CF00030E002C0220F331F4A95E2F73C6843E020\r
+:100D0000880F991F4A95E1F7807E9770822B932B6D\r
+:100D1000089524303105E1F4AC014370552721E0FA\r
+:100D200030E002C0220F331F4A95E2F73A68E7CF5E\r
+:100D30009C0130572115304118F49F70906208953E\r
+:100D40009C0130582115304118F49F70906A089525\r
+:100D5000803E9105E0F4803C910558F58133910582\r
+:100D600009F46FC048F48932910509F463C08A32EE\r
+:100D7000910509F46DC072C089339105E9F082389C\r
+:100D80009105D1F08533910509F44DC067C0833ECC\r
+:100D9000910581F138F4803E9105B9F0823E9105CC\r
+:100DA000D9F05CC0863E910561F1873E9105A1F1C5\r
+:100DB00055C00E94ED0508952091E00120FD02C07C\r
+:100DC00021FF4CC080EE90E049C08091E00180FF9F\r
+:100DD000F9CF89E390E042C08091E00182FF0EC02C\r
+:100DE0008091E00184FF03C080E090E037C083EE93\r
+:100DF00090E034C08091E00182FFF2CF82EE90E07B\r
+:100E00002DC08091E00183FF0BC08091E00184FD43\r
+:100E1000EBCF87EE90E022C08091E00183FFF5CF19\r
+:100E200086EE90E01BC08091E00185FF07C089E25B\r
+:100E300090E014C08091E00185FFF9CF85E390E058\r
+:100E40000DC08091E00186FF07C08AE290E006C0F5\r
+:100E50008091E00186FFF9CF81E390E00E941B05BD\r
+:100E60000895089508950C943207809162010895C1\r
+:100E7000CF93DF9300D01F92CDB7DEB79C01809156\r
+:100E8000E601843019F593E099833B832A8390939C\r
+:100E9000E9008FEF9091E800815095FD06C095ED37\r
+:100EA0009A95F1F700008111F5CF8091E80085FF58\r
+:100EB0000DC040E050E063E070E0CE0101960E947A\r
+:100EC000A5098091E8008E778093E8000F900F903D\r
+:100ED0000F90DF91CF910895CF93DF9300D01F92B1\r
+:100EE000CDB7DEB72091E601243021F522E0298339\r
+:100EF0009B838A8383E08093E9008FEF9091E800E1\r
+:100F0000815095FD06C095ED9A95F1F7000081118D\r
+:100F1000F5CF8091E80085FF0DC040E050E063E030\r
+:100F200070E0CE0101960E94A5098091E8008E77BD\r
+:100F30008093E8000F900F900F90DF91CF9108956C\r
+:100F40002091E6012430F1F422E02093E9002FEF14\r
+:100F50003091E800215035FD06C035ED3A95F1F7A6\r
+:100F600000002111F5CF2091E80025FF0BC040E0E3\r
+:100F700050E065E070E00E94A5098091E8008E775E\r
+:100F80008093E8000895CF93DF93EC019091E60100\r
+:100F9000943009F046C080910C018823D9F08091EB\r
+:100FA0000D018823B9F09093E9008FEF9091E8004C\r
+:100FB000815095FD06C095E19A95F1F700008111E9\r
+:100FC000F5CF8091E80085FF2CC040E050E060E163\r
+:100FD00070E017C081E08093E9008FEF9091E80006\r
+:100FE000815095FD06C095ED9A95F1F700008111AD\r
+:100FF000F5CF8091E80085FF14C040E050E068E044\r
+:1010000070E0CE010E94A5098091E8008E77809360\r
+:10101000E80080E1FE01A2E5B1E001900D928A9521\r
+:10102000E1F7DF91CF9108958091E501811109C029\r
+:101030000E943A0B0E94970B8091E200846080939B\r
+:10104000E20008951092E501089508950C94282176\r
+:101050000E94821A0E942E210E943D0E0C9433079A\r
+:1010600042E061EC81E00E94B40A42E061EC82E07F\r
+:101070000E94B40A42E061EC83E00E94B40A42E1BB\r
+:1010800061EC84E00C94B40A8091E801833009F4A7\r
+:1010900055C030F4813071F0823009F48EC008956B\r
+:1010A0008A3009F47AC08B3009F460C0893009F0C5\r
+:1010B0009CC020C08091E701813A09F096C08091E0\r
+:1010C000E800877F8093E8008091EB019091EC012C\r
+:1010D000892B21F460E182E591E003C060E080E0CB\r
+:1010E00090E070E00E94F0098091E8008B77809397\r
+:1010F000E80008958091E701813209F076C080917F\r
+:10110000EB019091EC01009719F0039709F06DC085\r
+:101110008091E800877F8093E8008091E80082FD5D\r
+:1011200005C08091E6018111F8CF5FC08091F10088\r
+:10113000809362018091E8008B7753C08091E70132\r
+:10114000813A09F052C08091EB019091EC01892B1A\r
+:1011500009F04BC08091E800877F8093E800809180\r
+:10116000E80080FFFCCF80910C0136C08091E70140\r
+:101170008132D9F58091EB019091EC01892BA9F591\r
+:101180008091E800877F8093E8000E94E90A8091BF\r
+:10119000E90180930C010C94BE138091E701813228\r
+:1011A00021F58091E800877F8093E8000E94E90A9A\r
+:1011B0008091EA018093630108958091E701813A6B\r
+:1011C000A1F48091E800877F8093E8008091E80097\r
+:1011D00080FFFCCF809163018093F1008091E80053\r
+:1011E0008E778093E8000C94E90A089584B7877F8E\r
+:1011F00084BF0FB6F894A8958091600088618093B1\r
+:101200006000109260000FBE90E080E80FB6F89486\r
+:1012100080936100909361000FBE0E948C0E0E942B\r
+:101220003A0B0E94970B8091E20084608093E20069\r
+:1012300078940E941D0E0E948E0E82E091E00E9422\r
+:10124000380E0E9416218091E601853069F40E94D3\r
+:10125000401A8091E4018823B1F30E946E1A88231A\r
+:1012600091F30E948F09EFCF0E94940EECCF292FAB\r
+:10127000332723303105C9F064F42130310581F082\r
+:101280002230310509F043C08DE690E020E133E0E3\r
+:1012900042C021323105F1F02232310541F137C02F\r
+:1012A00082E190E02DE733E036C099278130910547\r
+:1012B00041F08230910541F0892B49F5ECE0F3E0F3\r
+:1012C00005C0E4EFF2E002C0ECEDF2E0849190E0C2\r
+:1012D0009F0121C06430D8F4E62FF0E0EE0FFF1F2D\r
+:1012E000EE5DFE4F2081318189E090E014C06430D2\r
+:1012F00070F470E0FB01EE0FFF1FE65EFE4F2081F1\r
+:101300003181FB01EA5EFE4F808190E004C080E005\r
+:1013100090E020E030E0FA0131832083089580E1FD\r
+:1013200089BD82E189BD09B400FEFDCF8091D8005E\r
+:101330008F7D8093D8008091E00082608093E000F0\r
+:101340008091E00081FDFCCF0895CF92DF92EF9273\r
+:10135000FF920F931F93CF93DF93EC018B016A01F0\r
+:101360000E94080B811133C0C114D10439F0F60179\r
+:1013700080819181081B190BC80FD91FE12CF12C1A\r
+:101380000115110519F18091E80085FD16C08091C5\r
+:10139000E8008E778093E800C114D10449F0F6018B\r
+:1013A00080819181E80EF91EF182E08285E00FC014\r
+:1013B0000E94080B882321F30AC089918093F100D1\r
+:1013C00001501109FFEFEF1AFF0ADACF80E0DF9139\r
+:1013D000CF911F910F91FF90EF90DF90CF900895E4\r
+:1013E0002091ED013091EE012617370748F0611585\r
+:1013F000710539F42091E8002E772093E80001C0B0\r
+:10140000B90140E061157105A9F12091E60122239F\r
+:1014100009F443C0253009F442C02091E80023FDBF\r
+:1014200040C02091E80022FD32C02091E80020FF5A\r
+:10143000E9CF4091F3002091F20030E0342BFC0121\r
+:10144000CF016115710559F02830310540F48191C3\r
+:101450008093F100615071092F5F3F4FF1CF41E060\r
+:101460002830310509F040E02091E8002E772093E4\r
+:10147000E800C8CF4111C9CF0AC08091E601882396\r
+:1014800061F0853061F08091E80083FD0AC08091B1\r
+:10149000E80082FFF2CF80E0089582E0089583E0C3\r
+:1014A000089581E008952091ED013091EE01261715\r
+:1014B000370748F06115710539F42091E8002E775F\r
+:1014C0002093E80001C0B901FC0120E0611571051D\r
+:1014D00091F18091E601882309F440C0853009F438\r
+:1014E0003FC08091E80083FD3DC08091E80082FD0F\r
+:1014F0002FC08091E80080FFE9CF2091F300809118\r
+:10150000F20090E0922B6115710559F08830910539\r
+:1015100040F424912093F1003196615071090196B5\r
+:10152000F2CF21E0089709F020E08091E8008E7763\r
+:101530008093E800CBCF2111CCCF0AC08091E60187\r
+:10154000882361F0853061F08091E80083FD0AC056\r
+:101550008091E80082FFF2CF80E0089582E0089554\r
+:1015600083E0089581E00895982F973058F590937F\r
+:10157000E900981739F07091EC002091ED0050913E\r
+:10158000F00003C0242F762F50E021FF19C03091C6\r
+:10159000EB003E7F3093EB003091ED003D7F3093C8\r
+:1015A000ED003091EB0031603093EB007093EC0074\r
+:1015B0002093ED005093F0002091EE0027FF07C02C\r
+:1015C0009F5FD3CF8F708093E90081E0089580E022\r
+:1015D00008958091E70187FF11C08091E80082FDA6\r
+:1015E00005C08091E6018111F8CF11C08091E8001B\r
+:1015F0008B770BC08091E601882349F08091E80049\r
+:1016000080FFF8CF8091E8008E778093E8000895FE\r
+:101610002091E4003091E50095E64091EC00842FA4\r
+:10162000817040FF22C08091E80080FD1CC0809145\r
+:10163000E601882391F0853091F08091EB0085FDE3\r
+:1016400010C04091E4005091E5004217530729F380\r
+:101650009A01915011F784E0089582E0089583E0A3\r
+:10166000089581E0089580E008954091E80042FFE8\r
+:10167000DECF08950E94A80B0E94B00BE0EEF0E0D0\r
+:10168000808181608083E8EDF0E080818F778083C6\r
+:1016900019BCA7EDB0E08C918E7F8C9380818F7EFA\r
+:1016A00080831092E50108950F931F93CF93DF93EA\r
+:1016B0000E94A80B0E94B00BC8EDD0E088818F7704\r
+:1016C000888388818068888388818F7D888319BC1E\r
+:1016D0001092E6011092E2011092E4011092E301EF\r
+:1016E00000EE10E0F80180818B7F8083888181602B\r
+:1016F000888342E060E080E00E94B40AE1EEF0E01E\r
+:1017000080818E7F8083E2EEF0E080818160808343\r
+:10171000808188608083F80180818E7F80838881CA\r
+:1017200080618883DF91CF911F910F910895E8ED3B\r
+:10173000F0E080818F7E8083E7EDF0E08081816042\r
+:10174000808384E082BF81E08093E5010C94540B98\r
+:10175000E8EDF0E080818E7F80831092E2000895B2\r
+:101760001092DA001092E10008951F920F920FB6C6\r
+:101770000F9211242F933F934F935F936F937F9317\r
+:101780008F939F93AF93BF93EF93FF938091E1006B\r
+:1017900082FF0BC08091E20082FF07C08091E100D0\r
+:1017A0008B7F8093E1000E941C0E8091DA0080FF05\r
+:1017B0001FC08091D80080FF1BC08091DA008E7F0F\r
+:1017C0008093DA008091D90080FF0DC080E189BD4F\r
+:1017D00082E189BD09B400FEFDCF81E08093E6017E\r
+:1017E0000E94140805C019BC1092E6010E9422084C\r
+:1017F0008091E10080FF19C08091E20080FF15C058\r
+:101800008091E2008E7F8093E2008091E20080610F\r
+:101810008093E2008091D80080628093D80019BC48\r
+:1018200085E08093E6010E9426088091E10084FF14\r
+:1018300030C08091E20084FF2CC080E189BD82E14C\r
+:1018400089BD09B400FEFDCF8091D8008F7D8093C3\r
+:10185000D8008091E1008F7E8093E1008091E200CA\r
+:101860008F7E8093E2008091E20081608093E200AD\r
+:101870008091E201882311F084E007C08091E300A9\r
+:1018800087FD02C081E001C083E08093E6010E94F1\r
+:1018900028088091E10083FF29C08091E20083FF46\r
+:1018A00025C08091E100877F8093E10082E08093F2\r
+:1018B000E6011092E2018091E1008E7F8093E100C9\r
+:1018C0008091E2008E7F8093E2008091E20080614F\r
+:1018D0008093E20042E060E080E00E94B40A8091E0\r
+:1018E000F00088608093F0000E942508FF91EF913E\r
+:1018F000BF91AF919F918F917F916F915F914F9128\r
+:101900003F912F910F900FBE0F901F9018951F922F\r
+:101910000F920FB60F9211242F933F934F935F9323\r
+:101920006F937F938F939F93AF93BF93CF93DF93E7\r
+:10193000EF93FF93C091E900CF708091EC00D82F16\r
+:10194000D17080FDD0E81092E9008091F000877F8F\r
+:101950008093F00078940E94CB0C1092E900809163\r
+:10196000F00088608093F000CD2BCF70C093E90029\r
+:10197000FF91EF91DF91CF91BF91AF919F918F91A7\r
+:101980007F916F915F914F913F912F910F900FBE7B\r
+:101990000F901F9018951F93CF93DF93CDB7DEB7AD\r
+:1019A000AA970FB6F894DEBF0FBECDBFE7EEF1E009\r
+:1019B00088E08E0F9091F10091938E13FBCF0E94DF\r
+:1019C00044088091E80083FF1FC18091E701909156\r
+:1019D000E801492F50E04A30510508F015C1FA01DD\r
+:1019E000EA5AFF4F0C94BF22803881F0823809F008\r
+:1019F0000BC18091EB018F708093E9008091EB0027\r
+:101A000085FB882780F91092E90006C08091E301E8\r
+:101A10009091E401911182609091E800977F9093FA\r
+:101A2000E8008093F1001092F100C8C0282F2D7FAC\r
+:101A300009F0EAC0882319F0823061F0E5C0809196\r
+:101A4000E901813009F0E0C0933009F080E0809333\r
+:101A5000E4012BC08091E901811127C08091EB0145\r
+:101A60008F7009F4D1C08093E9002091EB0020FF32\r
+:101A70001CC0933021F48091EB00806214C09091DF\r
+:101A8000EB0090619093EB0021E030E0A90102C0EF\r
+:101A9000440F551F8A95E2F74093EA001092EA003E\r
+:101AA0008091EB0088608093EB001092E9008091B8\r
+:101AB000E800877F86C08111A7C01091E9011F77D8\r
+:101AC0008091E3008078812B8093E3008091E8008F\r
+:101AD000877F8093E8000E94E90A8091E80080FFF8\r
+:101AE000FCCF8091E30080688093E300111102C075\r
+:101AF00082E001C083E08093E60186C08058823096\r
+:101B000008F082C08091E9019091EA018C3D53E098\r
+:101B1000950779F583E08A838AE289834FB7F89441\r
+:101B2000DE01139620E03EE051E2E32FF0E0509317\r
+:101B30005700E49120FF03C0E295EF703F5FEF7024\r
+:101B40008E2F90E0EA3010F0C79601C0C0968D93BA\r
+:101B50009D932F5F243149F74FBF8091E800877F25\r
+:101B60008093E8006AE270E0CE0101960E94F009DD\r
+:101B700014C0AE014F5F5F4F6091EB010E943709C7\r
+:101B8000BC01892B09F440C09091E800977F9093A5\r
+:101B9000E80089819A810E94530A8091E8008B773E\r
+:101BA0008093E80031C0803879F58091E800877F24\r
+:101BB0008093E8008091E2018093F1008091E80039\r
+:101BC0008E778093E8000E94E90A1EC081111CC034\r
+:101BD0009091E9019230C0F48091E800877F809372\r
+:101BE000E8009093E2010E94E90A8091E2018111EC\r
+:101BF00006C08091E30087FD02C081E001C084E05F\r
+:101C00008093E6010E9430088091E80083FF0AC0BB\r
+:101C10008091E800877F8093E8008091EB008062EC\r
+:101C20008093EB00AA960FB6F894DEBF0FBECDBF2F\r
+:101C3000DF91CF911F9108950895CF938091E60190\r
+:101C40008823A1F0C091E900CF709091EC00892F1A\r
+:101C5000817090FD80E8C82B1092E9008091E80027\r
+:101C600083FD0E94CB0CCF70C093E900CF91089503\r
+:101C700090936901809368010895E0916801F09163\r
+:101C80006901309721F00190F081E02D099480E006\r
+:101C90000895E0916801F0916901309721F0028088\r
+:101CA000F381E02D09940895E0916801F0916901B4\r
+:101CB000309721F00480F581E02D0994089520915A\r
+:101CC0006601309167018217930771F09093670165\r
+:101CD00080936601E0916801F0916901309721F0ED\r
+:101CE0000680F781E02D09940895209164013091D8\r
+:101CF00065018217930771F09093650180936401E9\r
+:101D0000E0916801F0916901309721F00084F1853C\r
+:101D1000E02D0994089508950C948B0E0E94881A62\r
+:101D20000E940E040C944E1BCF92DF92EF92FF9212\r
+:101D30000F931F93CF93DF93CDB7DEB72B970FB6DB\r
+:101D4000F894DEBF0FBECDBF0E9426048BE6C82EDE\r
+:101D500081E0D82E00E010E0E02E802F0E941405D4\r
+:101D6000F60141916F01F42EF826B1F40F5F1F4F79\r
+:101D70000E30110589F78FEF89838A831B820E94B9\r
+:101D8000911A8160782F9D838C8349815A816B8160\r
+:101D90008D810E94370F40C09091CD0191FF04C00A\r
+:101DA0008B870E941A058B8520E030E04F2D50E094\r
+:101DB000922FBA01022E02C0759567950A94E2F738\r
+:101DC00060FF24C02E83EF8221E030E0690102C071\r
+:101DD000CC0CDD1C9A95E2F790E08C219D21892B9B\r
+:101DE00009F420E028870E94911A8160782F9A8751\r
+:101DF00089874E815F8168858A850E94370FF80147\r
+:101E0000E559FE4F8081C826C08206C02F5F3F4F34\r
+:101E10002630310569F6AACF0E94351E10916A015D\r
+:101E20000E943D0E1817A1F00E943D0E80936A019A\r
+:101E30002B960FB6F894DEBF0FBECDBFDF91CF91CA\r
+:101E40001F910F91FF90EF90DF90CF900C9433078C\r
+:101E50002B960FB6F894DEBF0FBECDBFDF91CF91AA\r
+:101E60001F910F91FF90EF90DF90CF900895CF9347\r
+:101E7000DF93CDB7DEB72B970FB6F894DEBF0FBE5A\r
+:101E8000CDBF4F83588769877A878B87DE0111968C\r
+:101E900086E0FD0111928A95E9F785E0FE0137960B\r
+:101EA00001900D928A95E1F749815A816B817C817D\r
+:101EB0008D819E810E9458162B960FB6F894DEBF36\r
+:101EC0000FBECDBFDF91CF9108950895CF938823A2\r
+:101ED00009F4C2C0C82F823859F40E943D0E81FD1A\r
+:101EE000BBC089E30E94F4180E94C11989E30CC0A9\r
+:101EF000833879F40E943D0E80FDAEC083E50E94D8\r
+:101F0000F4180E94C11983E50E943619CF910C94F0\r
+:101F1000C119843859F40E943D0E82FD9DC087E4AA\r
+:101F20000E94F4180E94C11987E4EECF8CEF8C0F49\r
+:101F3000813A48F48C2F0E947B2081118DC08C2F18\r
+:101F40000E94F418E3CF80E28C0F883048F4C77009\r
+:101F500081E001C0880FCA95EAF70E947A19D6CFAE\r
+:101F60008BE58C0F833078F4C53A29F0C63A31F00E\r
+:101F700083E890E005C081E890E002C082E890E04C\r
+:101F8000CF910C945F0E88E58C0F833108F064C00C\r
+:101F9000C83A39F1C93A41F1CA3A49F1CB3A51F15B\r
+:101FA000CC3A59F1CD3A61F1C03B69F1CE3A71F1C9\r
+:101FB000CF3A79F1C13B81F1C23B89F1C33B91F149\r
+:101FC000C43B99F1C53BA1F1C63BA9F1C73BB1F1B7\r
+:101FD000C83BB9F1C93BC1F1CA3BC9F180E090E00F\r
+:101FE00038C082EE90E035C089EE90E032C08AEED3\r
+:101FF00090E02FC085EB90E02CC086EB90E029C0EC\r
+:1020000087EB90E026C08CEC90E023C08DEC90E054\r
+:1020100020C083E891E01DC08AE891E01AC082E9FF\r
+:1020200091E017C084E991E014C081E292E011C010\r
+:1020300083E292E00EC084E292E00BC085E292E07F\r
+:1020400008C086E292E005C087E292E002C08AE220\r
+:1020500092E0CF910C94750ECF910895882309F4E6\r
+:102060004BC0823859F40E943D0E81FF45C089E380\r
+:102070000E94F4180E94C11989E30CC0833871F4DE\r
+:102080000E943D0E80FF38C083E50E94F4180E9434\r
+:10209000C11983E50E9436190C94C119843859F48A\r
+:1020A0000E943D0E82FF28C087E40E94F4180E941F\r
+:1020B000C11987E4EFCF9CEF980F913A58F390E263\r
+:1020C000980F983050F4877091E001C0990F8A956D\r
+:1020D000EAF7892F0E948019DFCF9BE5980F933094\r
+:1020E00020F480E090E00C945F0E885A833120F455\r
+:1020F00080E090E00C94750E0895882321F00E94F2\r
+:102100007A190C94C1190895882321F00E9480192E\r
+:102110000C94C1190895BF92CF92DF92EF92FF9273\r
+:102120000F931F93CF93DF9300D000D000D0CDB793\r
+:10213000DEB725E0FC01DE01119601900D922A9593\r
+:10214000E1F7FC01D08011810281258122952F7059\r
+:1021500043815481452B09F4EDC21F3F21F4FFEF69\r
+:10216000DF1609F4E7C27C012E830E94650FD98235\r
+:102170001A8389819A810E94B318182FB92E0E9460\r
+:10218000B2180E9479172E81002319F00E94971926\r
+:102190002E81EB2DE295EF70F0E0E05AFF4F0C94AA\r
+:1021A000BF228B2D807F9B2D9F70F92E882319F0E5\r
+:1021B000F29480EFF822002349F0FF2009F467C26F\r
+:1021C0008F2D0E948A190E94C11961C2812F0E941D\r
+:1021D0002E10FF2009F4AEC28F2D0E949019269672\r
+:1021E0000FB6F894DEBF0FBECDBFDF91CF911F9128\r
+:1021F0000F91FF90EF90DF90CF90BF900C94C1199A\r
+:102200003B2D307F8B2D8F70303211F08295807F87\r
+:10221000112319F0113021F12CC00023B9F0222331\r
+:1022200009F4A0C1213009F09DC126960FB6F8949B\r
+:10223000DEBF0FBECDBFDF91CF911F910F91FF90F9\r
+:10224000EF90DF90CF90BF900C94AA19222319F041\r
+:10225000213009F46FC28E830E94AD198E8196C120\r
+:10226000002321F0223008F065C27CC1211162C236\r
+:102270008DC1002321F0222309F474C108C2222356\r
+:1022800009F484C119C22B2D26952695237030E0C0\r
+:102290002115310521F021303105D1F04BC2002349\r
+:1022A00021F0812F9B2D937002C080E090E0269654\r
+:1022B0000FB6F894DEBF0FBECDBFDF91CF911F9157\r
+:1022C0000F91FF90EF90DF90CF90BF900C945F0E36\r
+:1022D000002321F0812F9B2D937002C080E090E0BD\r
+:1022E00026960FB6F894DEBF0FBECDBFDF91CF911B\r
+:1022F0001F910F91FF90EF90DF90CF90BF900C94C3\r
+:10230000750E812F002319F00E943D1D02C00E940E\r
+:10231000A51D26960FB6F894DEBF0FBECDBFDF9188\r
+:10232000CF911F910F91FF90EF90DF90CF90BF90D2\r
+:102330000C942A1E8B2D837009F07BC00111FAC109\r
+:10234000812F829586958770880F880F912F9F70B7\r
+:10235000C92ED12CE12CF12C082E04C0CC0CDD1C94\r
+:10236000EE1CFF1C0A94D2F714FF12C04FE050E09D\r
+:1023700060E070E004C0440F551F661F771F8A9508\r
+:10238000D2F7CB01BA01609570958095909503C006\r
+:1023900060E070E0CB012B2D269526952370422F0F\r
+:1023A00050E042305105D9F04330510569F16C29B4\r
+:1023B0007D298E299F294130510551F126960FB66E\r
+:1023C000F894DEBF0FBECDBFDF91CF911F910F916B\r
+:1023D000FF90EF90DF90CF90BF900C94A0176C29E6\r
+:1023E0007D298E299F2926960FB6F894DEBF0FBE51\r
+:1023F000CDBFDF91CF911F910F91FF90EF90DF90B4\r
+:10240000CF90BF900C94BC170E94A017C701B601D3\r
+:1024100026960FB6F894DEBF0FBECDBFDF91CF91E9\r
+:102420001F910F91FF90EF90DF90CF90BF900C9491\r
+:102430008417002319F08B2D817001C086958823A5\r
+:1024400009F478C1812F829586958770880F880F4F\r
+:10245000912F9F70C92ED12CE12CF12C082E04C095\r
+:10246000CC0CDD1CEE1CFF1C0A94D2F714FF12C02A\r
+:102470004FE050E060E070E004C0440F551F661F5D\r
+:10248000771F8A95D2F7CB01BA0160957095809538\r
+:10249000909503C060E070E0CB012B2D269526952A\r
+:1024A0002370422F50E042305105D9F0433051059E\r
+:1024B00069F16C297D298E299F294130510551F1FF\r
+:1024C00026960FB6F894DEBF0FBECDBFDF91CF9139\r
+:1024D0001F910F91FF90EF90DF90CF90BF900C94E1\r
+:1024E0007A186C297D298E299F2926960FB6F89493\r
+:1024F000DEBF0FBECDBFDF91CF911F910F91FF9037\r
+:10250000EF90DF90CF90BF900C9496180E947A18AD\r
+:10251000C701B60126960FB6F894DEBF0FBECDBF39\r
+:10252000DF91CF911F910F91FF90EF90DF90CF90AF\r
+:10253000BF900C945E18103FD1F118F4103E50F487\r
+:10254000A1C0123F09F463C008F44CC0133F09F462\r
+:1025500073C098C01F708B2D8F710023A1F00E9453\r
+:10256000F717812F26960FB6F894DEBF0FBECDBFAA\r
+:10257000DF91CF911F910F91FF90EF90DF90CF905F\r
+:10258000BF900C947D100E941818812F26960FB6CC\r
+:10259000F894DEBF0FBECDBFDF91CF911F910F9199\r
+:1025A000FF90EF90DF90CF90BF900C9484100023A9\r
+:1025B000A9F02111BFC08B2D8F7126960FB6F8940C\r
+:1025C000DEBF0FBECDBFDF91CF911F910F91FF9066\r
+:1025D000EF90DF90CF90BF900C943D18223008F020\r
+:1025E000A9C0E9CF0023A9F08B2D8F7126960FB6D5\r
+:1025F000F894DEBF0FBECDBFDF91CF911F910F9139\r
+:10260000FF90EF90DF90CF90BF900C94F7170023CE\r
+:1026100059F38B2D8F7126960FB6F894DEBF0FBE3F\r
+:10262000CDBFDF91CF911F910F91FF90EF90DF9081\r
+:10263000CF90BF900C941818002399F08B2D8F71B8\r
+:1026400026960FB6F894DEBF0FBECDBFDF91CF91B7\r
+:102650001F910F91FF90EF90DF90CF90BF900C945F\r
+:10266000E21726960FB6F894DEBF0FBECDBFDF91FE\r
+:10267000CF911F910F91FF90EF90DF90CF90BF907F\r
+:102680000C94D8170023A9F0222309F4ADCF812F91\r
+:1026900026960FB6F894DEBF0FBECDBFDF91CF9167\r
+:1026A0001F910F91FF90EF90DF90CF90BF900C940F\r
+:1026B000660F222309F4ADCF812F26960FB6F8942A\r
+:1026C000DEBF0FBECDBFDF91CF911F910F91FF9065\r
+:1026D000EF90DF90CF90BF900C942E104B2D4F7049\r
+:1026E000612FC7010E94AE0226960FB6F894DEBF96\r
+:1026F0000FBECDBFDF91CF911F910F91FF90EF9053\r
+:10270000DF90CF90BF900C94FC164B2D4F70612F33\r
+:10271000C70126960FB6F894DEBF0FBECDBFDF917E\r
+:10272000CF911F910F91FF90EF90DF90CF90BF90CE\r
+:102730000C94DA0526960FB6F894DEBF0FBECDBF17\r
+:10274000DF91CF911F910F91FF90EF90DF90CF908D\r
+:10275000BF9008950E9497190E94A7190E946C19B2\r
+:102760000E94C1190E94DA1E0E942A1E80E090E099\r
+:102770000E945F0E80E090E00C94750E0E94871915\r
+:102780000C94AA130E94B318292F22952F7030E0C1\r
+:102790002C3031054CF42A3031056CF422503109CB\r
+:1027A0002230310588F407C02C30310549F02F3034\r
+:1027B000310531F009C0803E48F0803F29F406C061\r
+:1027C00093FB882780F9089580E0089581E00895BB\r
+:1027D000CF93DF9300D000D01F92CDB7DEB70F901C\r
+:1027E0000F900F900F900F90DF91CF910895CF939E\r
+:1027F000DF9300D000D000D0CDB7DEB726960FB65D\r
+:10280000F894DEBF0FBECDBFDF91CF9108951F9327\r
+:10281000CF93DF93C091790116E080917A01C817B8\r
+:1028200099F0D0E01C9FF0011D9FF00D1124E55898\r
+:10283000FE4F4081518162817381848195810E9424\r
+:10284000F7132196C770E9CFDF91CF911F910895BB\r
+:102850004091AB015091AC016091AD017091AE011E\r
+:102860008091AF019091B0010C94F7138091B00169\r
+:1028700082958F7009F054C08091AD01882309F4CE\r
+:102880004FC080917901A0917A016091AB01709164\r
+:10289000AC014091AE015091AF01B6E08A1709F446\r
+:1028A0003FC090E041155105C1F17F3F11F46F3FEA\r
+:1028B000A1F1B89FF001B99FF00D1124E558FE4F2A\r
+:1028C000218172132AC02081621327C02281211125\r
+:1028D00024C0238134812417350710F42150310995\r
+:1028E000241B350B283C3105C0F42091B0012F701A\r
+:1028F00020612093B00126E0289FF001299FF00D70\r
+:102900001124E058FE4F80818F70806180838BEAB4\r
+:1029100091E00E948B100C94071401968770BECF33\r
+:102920000895CF92DF92EF92FF920F931F93CF9370\r
+:10293000DF93CDB7DEB762970FB6F894DEBF0FBE58\r
+:10294000CDBF8C0185E0F801DE011D9601900D924E\r
+:102950008A95E1F7D8014C9111965C9111971296E6\r
+:102960006C9112971396CD90DC9014973091AB0137\r
+:102970007091AC018091AE019091AF01009709F484\r
+:102980006BC17F3F19F43F3F09F466C1E090AD0190\r
+:10299000EE2009F4C0C02091B001C816D90628F075\r
+:1029A000F601E81BF90BCF0104C0809590958C0DC2\r
+:1029B0009D1DFF24F394883C910578F0F12C207F35\r
+:1029C00009F0C6C07C2DD98AC88A89890E94E8137B\r
+:1029D0008BEA91E00E948B10B1C0822F807F09F0BA\r
+:1029E00046C0751314C0341312C0611110C02F708B\r
+:1029F00020612093B0010E9428148BEA91E00E948C\r
+:102A00008B108091B001D80115968C932EC0CD28E3\r
+:102A100019F15F3F11F44F3FF9F0F62E61111CC020\r
+:102A20008091790120917A0136E0821709F45AC029\r
+:102A300090E0389FF001399FF00D1124E558FE4FCA\r
+:102A40007181571306C07081471303C072817111E1\r
+:102A500003C001968770E9CFF62E662309F418C1EA\r
+:102A60008091B00181608093B001F12C11C1751388\r
+:102A700008C0341306C0611104C08091B001D801B0\r
+:102A8000C3C04D875E878D859E856A8B0E94C21369\r
+:102A90006A898823E1F16623D1F12091B001822F68\r
+:102AA00082958F7090E0029774F08091AB019091C5\r
+:102AB000AC0198878F831986DB86CA862C87CE0166\r
+:102AC00007960E948B1086E0F801ABEAB1E0019016\r
+:102AD0000D928A95E1F70E9436140E942814FF2473\r
+:102AE000F394D6C04D875E878D859E850E94B3186E\r
+:102AF000292F22952F7030E0223031050CF0BCC018\r
+:102B00009F7009F0B6C0805E883008F4C1C0C8016B\r
+:102B10000E948B10E4CFC816D90608F453C0F60102\r
+:102B2000E81BF90BCF01883C910508F450C0F12C4B\r
+:102B30007C2DD98AC88A89890E94E813EBEAF1E0E2\r
+:102B400086E0DF011D928A95E9F70E942814A0C053\r
+:102B5000751314C0341312C0611110C08091B001FC\r
+:102B6000F8018583C8010E948B1086E0EBEAF1E052\r
+:102B7000DF011D928A95E9F7FE2C8AC04D875E879A\r
+:102B80008D859E856A8B0E94C2136A89882309F409\r
+:102B9000BECF662309F4BBCF2091B001822F82956E\r
+:102BA0008F7090E002970CF48ECF8091AB019091E2\r
+:102BB000AC019A8389831B82DD82CC822E83CE0175\r
+:102BC00001967FCF809590958C0D9D1DACCFF62EF4\r
+:102BD000662309F49CCF75132EC034132CC02091AA\r
+:102BE000B00120FD1FC0822F82958F70D9F0D801CF\r
+:102BF00015962C9315978F3049F08F5F982F9295EB\r
+:102C0000907F822F8F70892B15968C93C8010E941C\r
+:102C10008B1086E0F801ABEAB1E001900D928A9545\r
+:102C2000E1F793CF86E0F801ABEAB1E001900D92B5\r
+:102C30008A95E1F72DC04D875E878D859E850E9420\r
+:102C4000C213811140CF8091B00181608093B001A7\r
+:102C5000C8010E948B101CC0662309F458CF4D8711\r
+:102C60005E878D859E850E94C213882309F44FCF0D\r
+:102C70002ACF811148CF0CC0243031050CF047CF4A\r
+:102C80009F7009F440CFF8019581907F09F03BCF08\r
+:102C90008F2D62960FB6F894DEBF0FBECDBFDF91C9\r
+:102CA000CF911F910F91FF90EF90DF90CF900895FB\r
+:102CB0001F93CF93DF93CDB7DEB72C970FB6F89461\r
+:102CC000DEBF0FBECDBF4F83588769877A878B875A\r
+:102CD0009C87CE0107960E949114882369F08F810A\r
+:102CE00098852A853B85232BF1F19F3F09F063C02E\r
+:102CF0008F3F09F060C037C086E0FE013796DE01E5\r
+:102D0000119601900D928A95E1F76F817885EA8599\r
+:102D1000FB85309741F17F3F11F46F3F21F1209106\r
+:102D20007A0130E0C90101968770992740917901B5\r
+:102D300050E08417950709F447C069837A83FD83BF\r
+:102D4000EC8396E0929FD001939FB00D1124A5587B\r
+:102D5000BE4FFE01319601900D929A95E1F7809356\r
+:102D60007A010E94071416E08091790190917A010E\r
+:102D70008917C1F1189FC001112485589E4F0E94E8\r
+:102D80009114882379F1E09179011E9FF0011124BB\r
+:102D9000E558FE4F40815181628173818481958124\r
+:102DA0000E94F7138091790190E00196877099272E\r
+:102DB00080937901D9CF4F81588569857A858B8534\r
+:102DC0009C850E94F713CFCF0E94BE1310927A0108\r
+:102DD00010927901EBEAF1E086E0DF011D928A951D\r
+:102DE000E9F7C1CF2C960FB6F894DEBF0FBECDBF6A\r
+:102DF000DF91CF911F910895EF92FF920F931F9350\r
+:102E0000CF93DF938C01892B09F46CC0F12CEE2455\r
+:102E1000E394E8012196F8018491843740F48430EA\r
+:102E200008F051C0813081F0823019F15BC08537E4\r
+:102E300009F444C0A8F19CE7980F903708F052C0FD\r
+:102E40008F770E942E1041C00E5F1F4FFE01C4916C\r
+:102E500080E28C0F883048F4C7708E2D01C0880F37\r
+:102E6000CA95EAF70E949A1914C08C2F0E94660F27\r
+:102E70002DC00E5F1F4FFE01C49180E28C0F883081\r
+:102E800058F4C7708E2D01C0880FCA95EAF70E94CA\r
+:102E9000A0190E94C1191AC08C2F0E942E1016C0B2\r
+:102EA0000E5F1F4FFE01C491CC2381F08FE99FE09C\r
+:102EB0000197F1F700C00000C150F6CF0E5F1F4F21\r
+:102EC000FE01F49003C00E94660F8E018F2D8823AF\r
+:102ED00009F49FCFEFE9FFE03197F1F700C0000060\r
+:102EE0008150F5CFDF91CF911F910F91FF90EF901F\r
+:102EF000089508956093B5017093B6018093B7016A\r
+:102F00009093B8010C94AA130F931F930091B501ED\r
+:102F10001091B6012091B7013091B801DC01CB01CD\r
+:102F2000802B912BA22BB32B8093B5019093B601EC\r
+:102F3000A093B701B093B8011F910F910C94AA13FD\r
+:102F40000F931F930091B5011091B6012091B70125\r
+:102F50003091B801DC01CB0180239123A223B3235C\r
+:102F60008093B5019093B601A093B701B093B801D7\r
+:102F70001F910F910C94AA130F931F930091B50109\r
+:102F80001091B6012091B7013091B801DC01CB015D\r
+:102F900080279127A227B3278093B5019093B6018C\r
+:102FA000A093B701B093B8011F910F910C94AA138D\r
+:102FB0001092B1011092B2011092B3011092B401BB\r
+:102FC0000C94AA1341E050E060E070E004C0440FAC\r
+:102FD000551F661F771F8A95D2F74093B101509312\r
+:102FE000B2016093B3017093B4010C94AA1341E051\r
+:102FF00050E060E070E004C0440F551F661F771F6B\r
+:103000008A95D2F78091B1019091B201A091B3015C\r
+:10301000B091B401482B592B6A2B7B2B4093B10103\r
+:103020005093B2016093B3017093B4010C94AA134E\r
+:1030300041E050E060E070E004C0440F551F661F9F\r
+:10304000771F8A95D2F7409550956095709580913D\r
+:10305000B1019091B201A091B301B091B4014823A4\r
+:1030600059236A237B234093B1015093B2016093AB\r
+:10307000B3017093B4010C94AA1341E050E060E0F6\r
+:1030800070E004C0440F551F661F771F8A95D2F762\r
+:103090008091B1019091B201A091B301B091B401BE\r
+:1030A000482759276A277B274093B1015093B201E3\r
+:1030B0006093B3017093B4010C94AA130F931F9300\r
+:1030C0000091B1011091B2012091B3013091B4018E\r
+:1030D000DC01CB01802B912BA22BB32B8093B10170\r
+:1030E0009093B201A093B301B093B4011F910F91DB\r
+:1030F0000C94AA130F931F930091B1011091B20188\r
+:103100002091B3013091B401DC01CB0180239123E4\r
+:10311000A223B3238093B1019093B201A093B30192\r
+:10312000B093B4011F910F910C94AA130F931F93A6\r
+:103130000091B1011091B2012091B3013091B4011D\r
+:10314000DC01CB0180279127A227B3278093B1010F\r
+:103150009093B201A093B301B093B4011F910F916A\r
+:103160000C94AA130895CF92DF92EF92FF920F93DF\r
+:103170001F93CF93DF938C01C090B501D090B6011F\r
+:10318000E090B701F090B8014091B1015091B201C7\r
+:103190006091B3017091B401C42AD52AE62AF72AB6\r
+:1031A000CFE1D0E0D701C6010C2E04C0B695A7959B\r
+:1031B000979587950A94D2F780FF07C0B8018C2FA6\r
+:1031C0000E94FD058130910531F4219758F7B8012F\r
+:1031D00080E00E94FD05DF91CF911F910F91FF903C\r
+:1031E000EF90DF90CF90089590910C01992321F0FA\r
+:1031F00090910D01911109C020910E0130910F01A4\r
+:10320000F90132969FEF40E01FC0982F9695969552\r
+:1032100096959F3050F5E0910E01F0910F01E90F66\r
+:10322000F11D877021E030E0A90102C0440F551F55\r
+:103230008A95E2F7CA019181892B818308959F3F86\r
+:1032400039F04F5F4E3041F051915813F8CF0DC017\r
+:103250005111F7CF942FF5CF9F3F39F0F901E90FC6\r
+:10326000F11D97FDFA9582830895089590910C01C0\r
+:10327000992321F090910D01911109C020910E0127\r
+:1032800030910F01F9013296205F3F4F1FC0982FF8\r
+:103290009695969596959F30F0F4E0910E01F091F9\r
+:1032A0000F01E90FF11D877021E030E0A90102C094\r
+:1032B000440F551F8A95E2F7CA01809591818923B1\r
+:1032C000818308953196E217F30729F090819813CE\r
+:1032D000F9CF1082F7CF089581E090E0E0910E01E0\r
+:1032E000F0910F01E80FF91F1082019680319105CE\r
+:1032F000A9F708959091CC01892B8093CC01089572\r
+:1033000080959091CC0189238093CC0108951092EF\r
+:10331000CC0108959091CB01892B8093CB01089526\r
+:1033200080959091CB0189238093CB0108951092D1\r
+:10333000CB0108959091CA01892B8093CA01089509\r
+:1033400080959091CA0189238093CA0108951092B3\r
+:10335000CA0108958093B90108951092B9010895A2\r
+:1033600080910E0190910F01FC0131969C01205F2C\r
+:103370003F4F80E0919191118F5FE217F307D1F7F2\r
+:103380000895E0910E01F0910F018091CC018083AE\r
+:10339000E0910E01F0910F0190818091CB01892B7A\r
+:1033A0008083E0910E01F0910F0190818091CA011C\r
+:1033B000892B80838091B901882361F0E0910E010F\r
+:1033C000F0910F019081892B80830E94B0198111A7\r
+:1033D0001092B90180910E0190910F010C94490E49\r
+:1033E000CF92DF92EF92FF926C01EE24FF24C11482\r
+:1033F000D104E104F10421F0C701B60120E101C0CC\r
+:1034000020E0C72ED82EE92EFF24C114D104E104F8\r
+:10341000F10419F0285FC701B6016B017C0154E08B\r
+:10342000F694E794D794C7945A95D1F7C114D10470\r
+:10343000E104F10419F02C5FC701B6016B017C01B6\r
+:1034400042E0F694E794D794C7944A95D1F7C11413\r
+:10345000D104E104F10419F02E5FC701B601DC01CB\r
+:10346000CB01B695A79597958795892B8A2B8B2BA2\r
+:1034700009F02F5F822FFF90EF90DF90CF9008959B\r
+:103480008091E601843039F11092CE0120E488E188\r
+:1034900090E00FB6F894A895809360000FBE20933B\r
+:1034A000600080E00E94330783B7817F846083BF20\r
+:1034B00083B7816083BF7894889583B78E7F83BFFD\r
+:1034C0000FB6F894A89580916000886180936000A1\r
+:1034D000109260000FBE089508950895CF930E9442\r
+:1034E0006C1A0E9426040E946D1AC0E08C2F0E9464\r
+:1034F0001405811104C0CF5FCE30C1F701C081E057\r
+:10350000CF9108950E94BE130E943D0E0C94330784\r
+:1035100082E084BD93E095BD9AEF97BD80936E00E5\r
+:1035200008952FB7F8948091CF019091D001A09188\r
+:10353000D101B091D2012FBF0895CF92DF92EF92C7\r
+:10354000FF920F931F932FB7F8944091CF015091A2\r
+:10355000D0016091D1017091D2012FBF6A017B012E\r
+:10356000EE24FF248C0120E030E0C016D106E206F4\r
+:10357000F30610F4415051099A01281B390BC90177\r
+:103580001F910F91FF90EF90DF90CF9008951F92C1\r
+:103590000F920FB60F9211248F939F93AF93BF9307\r
+:1035A0008091CF019091D001A091D101B091D20131\r
+:1035B0000196A11DB11D8093CF019093D001A093DE\r
+:1035C000D101B093D201BF91AF919F918F910F9094\r
+:1035D0000FBE0F901F9018950E943A0BF8942FEF92\r
+:1035E00087EA91E6215080409040E1F700C000005A\r
+:1035F00087E090EBDC018093EF019093F001A093C2\r
+:10360000F101B093F2019CE088E10FB6F894A8951F\r
+:10361000809360000FBE90936000FFCFEF92FF9207\r
+:103620000F931F93CF93DF93D82FC0E08C2F0E946E\r
+:10363000140500E010E0E82EF12CC701002E02C0B6\r
+:10364000959587950A94E2F780FD06C00F5F1F4F9E\r
+:103650000630110591F709C0602F7C2F80E00E9491\r
+:10366000DB05D813F3CF81E004C0CF5FCE30F1F695\r
+:1036700080E0DF91CF911F910F91FF90EF9008951F\r
+:10368000CF93C82F8CE20E940E1B882321F08C2F31\r
+:10369000CF910C940E1B80E0CF910895CF930E94A0\r
+:1036A000951C811102C00E947B1CC5E6C15049F0E7\r
+:1036B0000E9426048FE39CE90197F1F700C0000007\r
+:1036C000F5CF89E20E94401B811113C18AE20E945A\r
+:1036D000401B81110E947B1C85E00E94401B8111D0\r
+:1036E0000E94EC1A0E94A01C8093CD0187E00E94EA\r
+:1036F000401B8823A9F18BE10E94401B882351F0D5\r
+:103700008091CD0181FB222720F991E0922790FB47\r
+:1037100081F90EC08EE00E94401B882361F08091E9\r
+:10372000CD0182FB222720F991E0922790FB82F9BC\r
+:103730008093CD0115C080E10E94401B9091CD0186\r
+:10374000882341F093FB222720F981E0822780FB28\r
+:1037500093F904C0892F809580FB90F99093CD0157\r
+:103760008091CD010E94A41C0E94B21C8093E001B4\r
+:1037700080EE0E94401B882341F08091E001982F49\r
+:10378000909590FB80F98093E00189E30E94401BB3\r
+:10379000882359F08091E00181FB222720F991E0F4\r
+:1037A000922790FB81F98093E00182EE0E94401BFA\r
+:1037B000882359F08091E00182FB222720F991E0D3\r
+:1037C000922790FB82F98093E00186EE0E94401BD5\r
+:1037D000882359F08091E00183FB222720F991E0B2\r
+:1037E000922790FB83F98093E00183EE0E94401BB7\r
+:1037F000882359F08091E00184FB222720F991E091\r
+:10380000922790FB84F98093E00185E30E94401B9E\r
+:10381000882359F08091E00185FB222720F991E06F\r
+:10382000922790FB85F98093E00181E30E94401B81\r
+:10383000882359F08091E00186FB222720F991E04E\r
+:10384000922790FB86F98093E00181E10E94401B62\r
+:10385000882359F08091E00187FB222720F991E02D\r
+:10386000922790FB87F98093E0018091E0010E940C\r
+:10387000B61C8091E00187FB882780F980930D01B9\r
+:1038800087E20E94401BC82F8EE10E94401B8111DD\r
+:10389000C2608FE10E94401B8111C46080E20E94DF\r
+:1038A000401B8111C86081E20E94401B8111C061F0\r
+:1038B00082E20E94401B8111C06283E20E94401B91\r
+:1038C0008111C06484E20E94401B882311F0C0680B\r
+:1038D00002C0CC2329F08C2F0E94AD1C6C2F03C09A\r
+:1038E0000E94A91C682F70E080E090E0CF910C94BA\r
+:1038F0007A17CF9108956DEE7EEF80E090E00E9400\r
+:10390000F52260E082E090E00E94E72260E083E040\r
+:1039100090E00E94E72260E084E090E00E94E722CD\r
+:1039200060E085E090E00C94E72280E090E00E9467\r
+:10393000E12221E08D3E9E4F09F020E0822F089584\r
+:1039400082E090E00C94D922682F82E090E00C9401\r
+:10395000E72283E090E00C94D922682F83E090E086\r
+:103960000C94E72284E090E00C94D922682F84E044\r
+:1039700090E00C94E7228091D50180FF0BC060910C\r
+:10398000130185E0689FB0011124759567957595C1\r
+:1039900067952BC081FF09C06091130185E0689F86\r
+:1039A000B00111247595679520C082FF07C0609112\r
+:1039B000130185E0689FB001112417C09091D601D2\r
+:1039C0009923D1F060911201961788F72091130185\r
+:1039D00085E0289F90011124929FA001939F500D94\r
+:1039E000112470E0CA010E94AB226038710540F4D6\r
+:1039F0006115710539F002C065E070E0862F089509\r
+:103A00008FE7089581E008958091D50180FF08C077\r
+:103A10006091110170E0759567957595679521C066\r
+:103A200081FF06C06091110170E07595679519C01E\r
+:103A300082FF04C06091110170E010C09091D60126\r
+:103A40009923C1F0609110019617A0F780911101A0\r
+:103A5000899FC001112470E00E94AB22603871057B\r
+:103A600028F46115710521F0862F08958FE70895D8\r
+:103A700081E0089561E070E0F4CF803F21F40E947E\r
+:103A8000BB1C819504C0813F29F40E94BB1C80931C\r
+:103A9000D9010895823F21F40E94BB1C819504C086\r
+:103AA000833F29F40E94BB1C8093D8010895893F6D\r
+:103AB00019F40E94041D05C08A3F31F40E94041DC0\r
+:103AC00081958093DA0108958B3F21F40E94041DB3\r
+:103AD000819504C08C3F29F40E94041D8093DB0172\r
+:103AE0000895843F21F48091D701816017C0853FFC\r
+:103AF00021F48091D701826011C0863F21F480912A\r
+:103B0000D70184600BC0873F21F48091D701886082\r
+:103B100005C0883F31F48091D70180618093D7013F\r
+:103B200008958D3F21F48091D50181600BC08E3FB7\r
+:103B300021F48091D501826005C08F3F29F48091E6\r
+:103B4000D50184608093D5010895803F39F4809138\r
+:103B5000D90187FF6CC01092D90169C0813F29F457\r
+:103B60008091D9011816BCF362C09091D801823FB0\r
+:103B700029F497FF5CC01092D80159C0833F19F413\r
+:103B80001916CCF354C0893F41F48091DA0118161C\r
+:103B90000CF04DC01092DA014AC08A3F29F480919E\r
+:103BA000DA0187FF44C0F6CF8B3F39F48091DB0107\r
+:103BB00087FF3DC01092DB013AC08C3F29F4809111\r
+:103BC000DB011816BCF333C0843F21F48091D70188\r
+:103BD0008E7F17C0853F21F48091D7018D7F11C062\r
+:103BE000863F21F48091D7018B7F0BC0873F21F462\r
+:103BF0008091D701877F05C0883F31F48091D7013C\r
+:103C00008F7E8093D70113C08D3F21F48091D50121\r
+:103C10008E7F0BC08E3F21F48091D5018D7F05C032\r
+:103C20008F3F29F48091D5018B7F8093D5018091BE\r
+:103C3000D80181110EC08091D90181110AC08091F3\r
+:103C4000DA01811106C08091DB01811102C010925E\r
+:103C5000D601089587ED91E00E94540E0E94911ABA\r
+:103C60009093D4018093D30108951F93CF93DF9352\r
+:103C70008091D3019091D4010E949D1AAC01909142\r
+:103C8000D601992321F02091140130E006C0209143\r
+:103C900015018AE0289F900111244217530708F468\r
+:103CA00085C08091D801C091D901D091DA011091DD\r
+:103CB000DB01811107C0C11175C0D11173C0111191\r
+:103CC00071C074C09F3F19F09F5F9093D601181682\r
+:103CD00024F40E94BB1C8093D8018091D80187FFF7\r
+:103CE00005C00E94BB1C81958093D8011C1624F44A\r
+:103CF0000E94BB1C8093D9018091D90187FF05C028\r
+:103D00000E94BB1C81958093D9016091D8016623E4\r
+:103D100031F1C091D901CC2311F1062E000C770BA3\r
+:103D2000880B990B0E94B22123E333E343E35FE363\r
+:103D30000E9416220E947A216093D8016C2FCC0F2A\r
+:103D4000770B880B990B0E94B22123E333E343E303\r
+:103D50005FE30E9416220E947A216093D9011D160A\r
+:103D600024F40E94041D8093DA018091DA0187FF18\r
+:103D700005C00E94041D81958093DA01111624F478\r
+:103D80000E94041D8093DB018091DB0187FF05C049\r
+:103D90000E94041D81958093DB01DF91CF911F91DB\r
+:103DA0000C942A1E9F3F09F08FCF97CFDF91CF91C0\r
+:103DB0001F910895E7EDF1E085E0DF011D928A95FE\r
+:103DC000E9F71092D6011092D5010895833081F160\r
+:103DD00028F4813059F08230D1F00895853009F40B\r
+:103DE00049C0B8F1863009F456C008958091150194\r
+:103DF000262F30E0280F311D2F3F310524F4680FA6\r
+:103E00006093150108958FEF8093150108958091B7\r
+:103E10001401262F30E0280F311D2F3F310524F4E7\r
+:103E2000680F6093140108958FEF80931401089533\r
+:103E300080911301262F30E0280F311D2F3F3105CF\r
+:103E400024F4680F6093130108958FEF809313019A\r
+:103E5000089580911201262F30E0280F311D2F3F49\r
+:103E6000310524F4680F6093120108958FEF809359\r
+:103E70001201089580911101262F30E0280F311D85\r
+:103E80002F3F310524F4680F6093110108958FEFDF\r
+:103E900080931101089580911001262F30E0280FA2\r
+:103EA000311D2F3F310524F4680F609310010895F0\r
+:103EB0008FEF809310010895833011F128F4813041\r
+:103EC00049F0823091F00895853081F120F18630FB\r
+:103ED000C1F1089580911501681720F4861B809325\r
+:103EE0001501089510921501089580911401681725\r
+:103EF00020F4861B809314010895109214010895F4\r
+:103F000080911301681720F4861B80931301089594\r
+:103F100010921301089580911201681720F4861BF6\r
+:103F20008093120108951092120108958091110159\r
+:103F3000681720F4861B80931101089510921101D7\r
+:103F4000089580911001681720F4861B809310015A\r
+:103F500008951092100108950F931F938D3109F465\r
+:103F60006AC008F03FC08E3009F484C0C0F48730C6\r
+:103F700009F46DC068F4863009F0B5C08091CD01B8\r
+:103F8000817F8E7F8093CD0181E08093DD01ACC085\r
+:103F9000883009F457C08B3009F46AC0A4C0863158\r
+:103FA00009F466C078F4803109F477C0813109F0F2\r
+:103FB0009AC00E94BE1390910D0181E089278093E1\r
+:103FC0000D0156C0893109F453C08B3109F08BC003\r
+:103FD0008091CD0181FB222720F991E0922790FB6F\r
+:103FE00081F951C0853309F475C048F4873209F46A\r
+:103FF00071C008F45EC0893209F46CC074C08334A7\r
+:1040000030F48A3308F053C0883391F16CC08334A4\r
+:1040100009F460C0883409F066C00E94BE130FEF37\r
+:1040200013ED20E3015010402040E1F700C00000F4\r
+:104030000E94EC1A1DC00E9434210E943D0E0E9475\r
+:10404000330716C00E94A01C0E94B21C11C09091A0\r
+:10405000CD01892F8095817080FB90F929F09660C1\r
+:1040600098609093CD0140C0997F977F9093CD0148\r
+:1040700081E03AC08091CD0182FB222720F991E0B6\r
+:10408000922790FB82F98093CD01992389F3809147\r
+:10409000CD0181608093CD01EBCF8091CD0183FB79\r
+:1040A000222720F991E0922790FB83F9ECCF8953E6\r
+:1040B00001C08D5141E050E060E070E08A019B0159\r
+:1040C00004C0000F111F221F331F8A95D2F7C901A8\r
+:1040D000B80104C061E070E080E090E00E947A17CF\r
+:1040E0000E94BE13C5CF80E01F910F91089580E01C\r
+:1040F000089580E00895CF93C82F8091DD0181302D\r
+:1041000079F018F08230E9F187C0E0910E01F0916A\r
+:104110000F018081813169F0823209F07FC009C0CE\r
+:10412000E0910E01F0910F018081813111F0823216\r
+:1041300061F48C2F0E947720811104C08C2F0E9483\r
+:10414000AC1F1DC081E090E01AC08C2F0E94792026\r
+:10415000811114C0C43179F048F4CB3079F0C0310A\r
+:1041600009F060C082E08093DD0108C0C93219F017\r
+:10417000C83321F057C01092DD0154C081E0817036\r
+:1041800053C0C93289F118F5C43171F1A8F4C730B0\r
+:1041900009F046C08AE08093150194E190931401E0\r
+:1041A00093E0909313018093120188E080931101B2\r
+:1041B00088E28093100134C0CE51C63088F5EC2FD0\r
+:1041C000F0E0E65DFE4F80818093DC0129C0CE34B3\r
+:1041D000E9F020F4CB3421F56AE013C0C13579F061\r
+:1041E000C235F1F461E00DC08091DC01882319F043\r
+:1041F0001092DC0115C081E08093DD0115C061E003\r
+:1042000006C08091DC010E94E61E0AC06AE080912F\r
+:10421000DC010E945C1F04C01092DD0180E004C03C\r
+:1042200081E002C080E0ABCFCF910895E1E8F0E0FB\r
+:104230008081886080838081816080838FB7F894DB\r
+:1042400093E09093890090ED909388008FBF08953C\r
+:10425000EFE6F0E08081826080830895EFE6F0E091\r
+:1042600080818D7F80830895EFE6F0E0908182E089\r
+:104270008927808308951F920F920FB60F92112401\r
+:104280002F933F934F935F936F937F938F939F935E\r
+:10429000AF93BF93EF93FF938091DE019091DF0185\r
+:1042A00001969093DF018093DE01811103C082E0CB\r
+:1042B0000E943307E091DF01E695E695F0E0E657CE\r
+:1042C000FB4FE4918091DE018E1303C080E00E94D9\r
+:1042D0003307FF91EF91BF91AF919F918F917F91A4\r
+:1042E0006F915F914F913F912F910F900FBE0F9063\r
+:1042F0001F9018950E9481216894B1110C9410228E\r
+:1043000008950E94F52188F09F5798F0B92F9927BA\r
+:10431000B751B0F0E1F0660F771F881F991F1AF0B0\r
+:10432000BA95C9F714C0B13091F00E940F22B1E0E4\r
+:1043300008950C940F22672F782F8827B85F39F0E3\r
+:10434000B93FCCF3869577956795B395D9F73EF449\r
+:1043500090958095709561957F4F8F4F9F4F0895F1\r
+:10436000E89409C097FB3EF490958095709561950F\r
+:104370007F4F8F4F9F4F9923A9F0F92F96E9BB27C5\r
+:104380009395F695879577956795B795F111F8CF41\r
+:10439000FAF4BB0F11F460FF1BC06F5F7F4F8F4FAC\r
+:1043A0009F4F16C0882311F096E911C0772321F0A2\r
+:1043B0009EE8872F762F05C0662371F096E8862F3A\r
+:1043C00070E060E02AF09A95660F771F881FDAF791\r
+:1043D000880F9695879597F9089557FD9058440F43\r
+:1043E000551F59F05F3F71F04795880F97FB991F54\r
+:1043F00061F09F3F79F08795089512161306140611\r
+:10440000551FF2CF4695F1DF08C01616170618069D\r
+:10441000991FF1CF86957105610508940895E89478\r
+:10442000BB2766277727CB0197F908950E94292299\r
+:104430000C949A220E948C2238F00E94932220F041\r
+:10444000952311F00C9483220C94892211240C944E\r
+:1044500010220E94ED2170F3959FC1F3950F50E05B\r
+:10446000551F629FF001729FBB27F00DB11D639F26\r
+:10447000AA27F00DB11DAA1F649F6627B00DA11DCC\r
+:10448000661F829F2227B00DA11D621F739FB00D72\r
+:10449000A11D621F839FA00D611D221F749F3327E2\r
+:1044A000A00D611D231F849F600D211D822F762F7B\r
+:1044B0006A2F11249F5750409AF0F1F088234AF058\r
+:1044C000EE0FFF1FBB1F661F771F881F91505040C4\r
+:1044D000A9F79E3F510580F00C9483220C94102282\r
+:1044E0005F3FE4F3983ED4F3869577956795B7954B\r
+:1044F000F795E7959F5FC1F7FE2B880F911D969565\r
+:10450000879597F9089597F99F6780E870E060E0D4\r
+:1045100008959FEF80EC089500240A94161617065C\r
+:1045200018060906089500240A94121613061406A4\r
+:1045300005060895092E0394000C11F4882352F007\r
+:10454000BB0F40F4BF2B11F460FF04C06F5F7F4FBF\r
+:104550008F4F9F4F089597FB072E16F4009407D0B6\r
+:1045600077FD09D00E94C52207FC05D03EF4909546\r
+:1045700081959F4F0895709561957F4F0895EE0F37\r
+:10458000FF1F0590F491E02D0994AA1BBB1B51E17C\r
+:1045900007C0AA1FBB1FA617B70710F0A61BB70BB3\r
+:1045A000881F991F5A95A9F780959095BC01CD0158\r
+:1045B0000895F999FECF92BD81BDF89A992780B5EB\r
+:1045C0000895A8E1B0E042E050E00C94FC22262FD0\r
+:1045D000F999FECF1FBA92BD81BD20BD0FB6F894E8\r
+:1045E000FA9AF99A0FBE019608950E94E722272FA2\r
+:1045F0000C94E822DC01CB01FC01F999FECF06C046\r
+:10460000F2BDE1BDF89A319600B40D924150504090\r
+:08461000B8F70895F894FFCFFC\r
+:1046180020023507C307A0076C0738070101BA0154\r
+:1046280028080A03140A3F4D36394B04FE03C80311\r
+:104638008F0322033B0354036D03010203040506A1\r
+:044648000708090056\r
+:00000001FF\r
diff --git a/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout0.png b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout0.png
new file mode 100644 (file)
index 0000000..6a36f9b
Binary files /dev/null and b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout0.png differ
diff --git a/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout1.png b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout1.png
new file mode 100644 (file)
index 0000000..c6e6d91
Binary files /dev/null and b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout1.png differ
diff --git a/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout2.png b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout2.png
new file mode 100644 (file)
index 0000000..23f56ff
Binary files /dev/null and b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keyboard-layout2.png differ
diff --git a/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keymap.c b/keyboard/ergodox_ez/keymaps/dvorak_intl_squisher/keymap.c
new file mode 100644 (file)
index 0000000..82f55b4
--- /dev/null
@@ -0,0 +1,185 @@
+#include "ergodox_ez.h"
+#include "debug.h"
+#include "action_layer.h"
+
+#define BASE 0 // default layer
+#define SYMB 1 // symbols
+#define MDIA 2 // media keys
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Keymap 0: Basic layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |   =    |   1  |   2  |   3  |   4  |   5  | BrBck|           | Play |   6  |   7  |   8  |   9  |   0  | \ / L2 |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * | Esc    |   '  |   ,  |   .  |   P  |   Y  | Del  |           | Ins  |   F  |   G  |   C  |   R  |   L  |   /    |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * | BkSp   |   A  |   O  |   E  |   U  |   I  |------|           |------|   D  |   H  |   T  |   N  |   S  |   -    |
+ * |--------+------+------+------+------+------| Hyper|           | Meh  |------+------+------+------+------+--------|
+ * | LShift |:/Ctrl|   Q  |   J  |   K  |   X  |      |           |      |   B  |   M  |   W  |   V  |Z/Ctrl| RShift |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |Grv/L1| LAlt | LGui | Left | Right|                                       |  Up  | Down |   [  |   ]  | ~L1  |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,---------------.
+ *                                        | App  | L1   |       | L2   |PrntScr |
+ *                                 ,------|------|------|       |------+--------+------.
+ *                                 |      |      | Home |       | PgUp |        |      |
+ *                                 | Space| Tab  |------|       |------| AltShf |Enter |
+ *                                 |      |      | End  |       | PgDn |        |      |
+ *                                 `--------------------'       `----------------------'
+ */
+// If it accepts an argument (i.e, is a function), it doesn't need KC_.
+// Otherwise, it needs KC_*
+[BASE] = KEYMAP(  // layer 0 : default
+        // left hand
+        KC_EQL,         KC_1,           KC_2,    KC_3,   KC_4,   KC_5,   KC_WBAK,
+        KC_ESC,         KC_QUOT,        KC_COMM, KC_DOT, KC_P,   KC_Y,   KC_DELT,
+        KC_BSPC,        KC_A,           KC_O,    KC_E,   KC_U,   KC_I,
+        KC_LSFT,        CTL_T(KC_SCLN), KC_Q,    KC_J,   KC_K,   KC_X,   ALL_T(KC_NO),
+        LT(SYMB,KC_GRV),KC_LALT,      KC_LGUI,  KC_LEFT,KC_RGHT,
+                                              CTL_T(KC_APP),  TG(1),
+                                                              KC_HOME,
+                                               KC_SPC,KC_TAB,KC_END,
+        // right hand
+             KC_MPLY,      KC_6,   KC_7,   KC_8,   KC_9,   KC_0,             LT(MDIA, KC_BSLS),
+             KC_INS,       KC_F,   KC_G,   KC_C,   KC_R,   KC_L,             KC_SLSH,
+                          KC_D,   KC_H,   KC_T,   KC_N,   KC_S,             KC_MINS,
+             MEH_T(KC_NO),KC_B,   KC_M,   KC_W,   KC_V,   CTL_T(KC_Z),      KC_RSFT,
+                                  KC_UP,  KC_DOWN,KC_LBRC,KC_RBRC,          KC_FN1,
+             TG(2),        KC_PSCREEN,
+             KC_PGUP,
+             KC_PGDN,RALT(KC_RSFT), KC_ENT
+    ), 
+/* Keymap 1: Symbol & Media Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |  F1  |  F2  |  F3  |  F4  |  F5  |      |           |      |  F6  |  F7  |  F8  |  F9  |  F10 |   F11  |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   !  |   @  |   {  |   }  |   |  |      |           |      |   Up |   7  |   8  |   9  |   *  |   F12  |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   #  |   $  |   (  |   )  |   `  |------|           |------| Down |   4  |   5  |   6  |   +  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   %  |   ^  |   [  |   ]  |   ~  |      |           |      |   &  |   1  |   2  |   3  |   \  |        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      | Prev | Next |                                       |      |    . |   0  |   =  |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |VolUp |      |      |
+ *                                 |      |      |------|       |------| Mute |      |
+ *                                 |      |      |      |       |VolDn |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// SYMBOLS
+[SYMB] = KEYMAP(
+       // left hand
+       KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
+       KC_TRNS,KC_EXLM,KC_AT,  KC_LCBR,KC_RCBR,KC_PIPE,KC_TRNS,
+       KC_TRNS,KC_HASH,KC_DLR, KC_LPRN,KC_RPRN,KC_GRV,
+       KC_TRNS,KC_PERC,KC_CIRC,KC_LBRC,KC_RBRC,KC_TILD,KC_TRNS,
+       KC_TRNS,KC_TRNS,KC_TRNS,KC_MPRV,KC_MNXT,
+                                       KC_TRNS,KC_TRNS,
+                                               KC_TRNS,
+                               KC_TRNS,KC_TRNS,KC_TRNS,
+       // right hand
+       KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
+       KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
+       KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
+                         KC_TRNS,KC_DOT,  KC_0,    KC_EQL,  KC_TRNS,
+       KC_TRNS, KC_TRNS,
+       KC_VOLU,
+       KC_VOLD, KC_MUTE, KC_TRNS
+),
+/* Keymap 2: QWERTY Layer
+ *
+ * ,--------------------------------------------------.           ,--------------------------------------------------.
+ * |        |      |      |      |      |      |      |           |      |      |      |      |      |      |        |
+ * |--------+------+------+------+------+-------------|           |------+------+------+------+------+------+--------|
+ * |        |   Q  |   W  |   E  |   R  |   T  |      |           |      |   Y  |   U  |   I  |   O  |   P  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |   A  |   S  |   D  |   F  |   G  |------|           |------|   H  |   J  |   K  |   L  |   ;  |        |
+ * |--------+------+------+------+------+------|      |           |      |------+------+------+------+------+--------|
+ * |        |Z/Ctrl|   X  |   C  |   V  |   B  |      |           |      |   N  |   M  |   ,  |   .  |//Ctrl|        |
+ * `--------+------+------+------+------+-------------'           `-------------+------+------+------+------+--------'
+ *   |      |      |      |      |      |                                       |      |      |      |      |      |
+ *   `----------------------------------'                                       `----------------------------------'
+ *                                        ,-------------.       ,-------------.
+ *                                        |      |      |       |      |      |
+ *                                 ,------|------|------|       |------+------+------.
+ *                                 |      |      |      |       |      |      |      |
+ *                                 |      |      |------|       |------|      |      |
+ *                                 |      |      |      |       |      |      |      |
+ *                                 `--------------------'       `--------------------'
+ */
+// MEDIA AND MOUSE
+KEYMAP(  // layer 0 : default
+        // left hand
+        KC_TRNS,        KC_TRNS,      KC_TRNS,   KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
+        KC_TRNS,        KC_Q,         KC_W,      KC_E,   KC_R,   KC_T,   KC_TRNS,
+        KC_TRNS,        KC_A,         KC_S,      KC_D,   KC_F,   KC_G,
+        KC_TRNS,        CTL_T(KC_Z),  KC_X,      KC_C,   KC_V,   KC_B,   KC_TRNS,
+        KC_TRNS,        KC_TRNS,      KC_TRNS,   KC_TRNS,KC_TRNS,
+                                           KC_TRNS, KC_TRNS,
+                                                    KC_TRNS,
+                                  KC_TRNS, KC_TRNS, KC_TRNS,
+        // right hand
+        KC_TRNS,     KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,          KC_TRNS,
+        KC_TRNS,     KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,             KC_TRNS,
+                     KC_H,   KC_J,   KC_K,   KC_L,   LT(MDIA, KC_SCLN),KC_TRNS,
+        KC_TRNS,     KC_N,   KC_M,   KC_COMM,KC_DOT, CTL_T(KC_SLSH),   KC_TRNS,
+                             KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,          KC_TRNS,
+        KC_TRNS, KC_TRNS,
+        KC_TRNS,
+        KC_TRNS, KC_TRNS, KC_TRNS
+    ),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [1] = ACTION_LAYER_TAP_TOGGLE(SYMB)                // FN1 - Momentary Layer 1 (Symbols)
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+        if (record->event.pressed) {
+          register_code(KC_RSFT);
+        } else {
+          unregister_code(KC_RSFT);
+        }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+// Runs just one time when the keyboard initializes.
+void matrix_init_user(void) {
+
+};
+
+// Runs constantly in the background, in a loop.
+void matrix_scan_user(void) {
+
+    uint8_t layer = biton32(layer_state);
+
+    ergodox_board_led_off();
+    ergodox_right_led_1_off();
+    ergodox_right_led_2_off();
+    ergodox_right_led_3_off();
+    switch (layer) {
+      // TODO: Make this relevant to the ErgoDox EZ.
+        case 1:
+            ergodox_right_led_1_on();
+            break;
+        case 2:
+            ergodox_right_led_2_on();
+            break;
+        default:
+            // none
+            break;
+    }
+
+};
index a1b47ae8be5d67d33222cc8b0dd12200ba50518b..dffcb21da3db485d84fa30f05160419b0fc40d61 100644 (file)
@@ -13,8 +13,8 @@
 #define M_CTRL_CMDV 1
 #define M_CTRL_CMDC 2
 #define M_MEH_SH_ACUT 3
-#define M_DE_PLUS_CTRLALT 12
-#define M_DE_CIRC_CTRLCMD 13
+#define M_DE_OSX_PLUS_CTRLALT 12
+#define M_DE_OSX_CIRC_CTRLCMD 13
 #define M_TOGGLE_5 14
 #define M_CTL_SFT_HASH 15
 #define M_LGUI_SHFT 16
@@ -55,21 +55,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 // Otherwise, it needs KC_*
 [BASE] = KEYMAP(  // layer 0 : default
         // left hand
-        KC_ESC,                  DE_1,         DE_2,   DE_3,   DE_4,   DE_5,   M(M_CTL_SFT_HASH),
-        KC_TAB,                  DE_Q,         DE_W,   DE_E,   DE_R,   DE_T,   KC_LGUI,
-        KC_LALT,                 DE_A,         DE_S,   DE_D,   DE_F,   DE_G,
-        KC_LSFT,                 CTL_T(DE_Y),  DE_X,   DE_C,   DE_V,   DE_B,   KC_LALT,
-        LT(SYMB,DE_LESS),        M(M_DE_CIRC_CTRLCMD),      M(M_DE_PLUS_CTRLALT), KC_UP,  KC_DOWN,
-                                                                               M(M_MEH_SH_ACUT),       TG(2),
+        KC_ESC,                  DE_OSX_1,         DE_OSX_2,   DE_OSX_3,   DE_OSX_4,   DE_OSX_5,   M(M_CTL_SFT_HASH),
+        KC_TAB,                  DE_OSX_Q,         DE_OSX_W,   DE_OSX_E,   DE_OSX_R,   DE_OSX_T,   KC_LGUI,
+        KC_LALT,                 DE_OSX_A,         DE_OSX_S,   DE_OSX_D,   DE_OSX_F,   DE_OSX_G,
+        KC_LSFT,                 CTL_T(DE_OSX_Y),  DE_OSX_X,   DE_OSX_C,   DE_OSX_V,   DE_OSX_B,   KC_LALT,
+        LT(SYMB,DE_OSX_LESS),        M(M_DE_OSX_CIRC_CTRLCMD),      M(M_DE_OSX_PLUS_CTRLALT), KC_UP,  KC_DOWN,
+                                                                               M(M_MEH_SH_ACUT),       TG(MDIA),
                                                                                                KC_HOME,
                                                                                KC_BSPC,KC_DEL,         LT(SMLY,KC_END),
         // right hand
-             M(M_CTL_SFT_HASH),  DE_6,  DE_7,   DE_8,   DE_9,   DE_0,   DE_SS,
-             KC_RGUI,     DE_Z,   DE_U,   DE_I,   DE_O,   DE_P,                DE_UE,
-                          DE_H,   DE_J,   DE_K,   DE_L,   DE_OE,               ALT_T(DE_AE),
-             KC_RALT,    DE_N,   DE_M,   DE_COMM,DE_DOT, CTL_T(DE_MINS),       KC_RSFT,
-                                  KC_LEFT,  KC_RIGHT,M(M_LGUI_SHFT),LALT(KC_LSFT),        LT(SYMB,DE_PLUS),
-             TG(4),      ALL_T(DE_ACUT),
+             M(M_CTL_SFT_HASH),  DE_OSX_6,  DE_OSX_7,   DE_OSX_8,   DE_OSX_9,   DE_OSX_0,   DE_OSX_SS,
+             KC_RGUI,     DE_OSX_Z,   DE_OSX_U,   DE_OSX_I,   DE_OSX_O,   DE_OSX_P,            DE_OSX_UE,
+                          DE_OSX_H,   DE_OSX_J,   DE_OSX_K,   DE_OSX_L,   DE_OSX_OE,           ALT_T(DE_OSX_AE),
+             KC_RALT,    DE_OSX_N,   DE_OSX_M,   DE_OSX_COMM,DE_OSX_DOT, CTL_T(DE_OSX_MINS),           KC_RSFT,
+                                  KC_LEFT,  KC_RIGHT,LGUI(KC_LSFT),LALT(KC_LSFT),        LT(SYMB,DE_OSX_PLUS),
+             TG(NUMB),   ALL_T(DE_OSX_ACUT),
              KC_PGUP,
              KC_PGDN,KC_ENT, KC_SPC
     ),
@@ -98,19 +98,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 [SYMB] = KEYMAP(
        // left hand
        KC_TRNS,KC_F1,  KC_F2,  KC_F3,  KC_F4,  KC_F5,  KC_TRNS,
-       KC_TRNS,DE_LESS,DE_MORE,DE_EXLM,DE_QST, KC_TRNS,KC_TRNS,
-       KC_TRNS,DE_HASH,DE_DLR, DE_BSLS,DE_SLSH,KC_DOT,
-       KC_TRNS,KC_TRNS,DE_LESS,DE_PERC,DE_PIPE,DE_TILD,KC_TRNS,
+       KC_TRNS,DE_OSX_LESS,DE_OSX_MORE,DE_OSX_EXLM,DE_OSX_QST, KC_TRNS,KC_TRNS,
+       KC_TRNS,DE_OSX_HASH,DE_OSX_DLR, DE_OSX_BSLS,DE_OSX_SLSH,KC_DOT,
+       KC_TRNS,KC_TRNS,DE_OSX_LESS,DE_OSX_PERC,DE_OSX_PIPE,DE_OSX_TILD,KC_TRNS,
        KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,
                                        KC_TRNS,KC_TRNS,
                                                KC_TRNS,
                                KC_TRNS,KC_DEL,KC_TRNS,
        // right hand
        M(M_TOGGLE_5), KC_F6, KC_F7,   KC_F8,  KC_F9,   KC_F10,   KC_F11,
-       KC_TRNS, LALT(LSFT(KC_7)),   LALT(KC_5),   LALT(KC_6),    DE_LESS,    DE_MORE, DE_EXLM,
-                DE_SLSH,              DE_LPRN,   DE_RPRN,    LALT(KC_8),    LALT(KC_9),  DE_HASH,
-       KC_TRNS, DE_PIPE, DE_TILD,  DE_CIRC,    KC_UP, DE_MINS,  LSFT(KC_4),
-                         DE_QUOT,   KC_LEFT,  KC_DOWN,    KC_RIGHT,  KC_TRNS,
+       KC_TRNS, LALT(LSFT(KC_7)),   LALT(KC_5),   LALT(KC_6),    DE_OSX_LESS,    DE_OSX_MORE, DE_OSX_EXLM,
+                DE_OSX_SLSH,              DE_OSX_LPRN,   DE_OSX_RPRN,    LALT(KC_8),    LALT(KC_9),  DE_OSX_HASH,
+       KC_TRNS, DE_OSX_PIPE, DE_OSX_TILD,  DE_OSX_CIRC,    KC_UP, DE_OSX_MINS,  LSFT(KC_4),
+                         DE_OSX_QUOT,   KC_LEFT,  KC_DOWN,    KC_RIGHT,  KC_TRNS,
        KC_F13, KC_F12,
        KC_F14,
        KC_F15, KC_TRNS, KC_TRNS
@@ -137,7 +137,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  *                                 `--------------------'       `--------------------'
  */
 // MEDIA AND MOUSE
-KEYMAP(
+[MDIA] = KEYMAP(
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
        KC_TRNS, KC_TRNS, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, KC_TRNS,
        KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D,
@@ -179,7 +179,7 @@ KEYMAP(
  *                                 |      |      |      |       |      |        |      |
  *                                 `--------------------'       `----------------------'
  */
-KEYMAP(
+[SMLY] = KEYMAP(
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
        KC_TRNS, KC_TRNS,    KC_TRNS,  KC_TRNS,    KC_TRNS,    KC_TRNS,    KC_TRNS,
        KC_TRNS, KC_TRNS,    KC_TRNS,  KC_TRNS,    KC_TRNS,    KC_TRNS,
@@ -199,7 +199,7 @@ KEYMAP(
        KC_TRNS, KC_TRNS, KC_TRNS
 ),
 //number pad
-KEYMAP(
+[NUMB] = KEYMAP(
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS,
        KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS,
@@ -211,9 +211,9 @@ KEYMAP(
        // right hand
        KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
        KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    LSFT(KC_RBRC), KC_F12,
-                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_RBRC, DE_MINS,
+                KC_DOWN, KC_4,   KC_5,    KC_6,    KC_RBRC, DE_OSX_MINS,
        KC_TRNS, LSFT(KC_6), KC_1,   KC_2,    KC_3,    LSFT(KC_7), KC_TRNS,
-                         KC_0,KC_DOT,  KC_COMM,    DE_EQL,  KC_TRNS,
+                         KC_0,KC_DOT,  KC_COMM,    DE_OSX_EQL,  KC_TRNS,
        KC_TRNS, KC_TRNS,
        KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS
@@ -240,7 +240,7 @@ KEYMAP(
  *                                 |      |      |  F4  |       |      |        |      |
  *                                 `--------------------'       `----------------------'
  */
-KEYMAP(
+[EGOS] = KEYMAP(
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
        KC_LSFT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
@@ -310,7 +310,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
                        if (timer_elapsed(start) > 150){
                                return MACRO(U(LCTRL),U(LSFT),U(LALT),END);
                        } else {
-                               return MACRO(U(LCTRL),U(LALT),T(EQL),U(LSFT),END); //cannot use DE_ACUT here, as macro needs KC_ prefix
+                               return MACRO(U(LCTRL),U(LALT),T(EQL),U(LSFT),END); //cannot use DE_OSX_ACUT here, as macro needs KC_ prefix
                        }
                }
                break;
@@ -333,7 +333,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
                        }
                }
                break;  
-       case M_DE_CIRC_CTRLCMD:
+       case M_DE_OSX_CIRC_CTRLCMD:
                if (record->event.pressed) {
                        start = timer_read();
                        return MACRO(D(LCTRL),D(LGUI),END);
@@ -345,7 +345,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
                        }
                }
                break;
-       case M_DE_PLUS_CTRLALT:
+       case M_DE_OSX_PLUS_CTRLALT:
                if (record->event.pressed) {
                        start = timer_read();
                        return MACRO(D(LCTRL),D(LALT),END);
index 1d5226974fd9c7f9896d46eaa9651c8fa8726acd..8e709ee260ed6b23e8dfbc3fff6089d582f3c8c8 100644 (file)
Binary files a/keyboard/ergodox_ez/keymaps/osx_de/osx_de_highres.png and b/keyboard/ergodox_ez/keymaps/osx_de/osx_de_highres.png differ
index daba0f6449001396a328342aefb64f57e9ad0d48..4c8f9dc8ab86a7653607cc32ea10eb7ea395681a 100644 (file)
@@ -53,9 +53,9 @@ SRC = keymap_common.c \
        led.c
 
 ifdef KEYMAP
-    SRC := keymap_$(KEYMAP).c $(SRC)
+    SRC := keymaps/$(KEYMAP).c $(SRC)
 else
-    SRC := keymap_poker.c $(SRC)
+    SRC := keymaps/poker.c $(SRC)
 endif
 
 CONFIG_H = config.h
index 11bd3b7840eae36da14795e748a0d0818649bf0b..8ed73a248d16081e9512cdf8e8fca971b7571844 100644 (file)
@@ -53,9 +53,9 @@ SRC = keymap_common.c \
        led.c
 
 ifdef KEYMAP
-    SRC := keymap_$(KEYMAP).c $(SRC)
+    SRC := keymaps/$(KEYMAP).c $(SRC)
 else
-    SRC := keymap_poker.c $(SRC)
+    SRC := keymaps/poker.c $(SRC)
 endif
 
 CONFIG_H = config.h
index 510cb5c8b65cf72a52b2472e4e8094d9cbe31e63..41a757ea3ae07f97310be8835f3747a9b57b2eec 100644 (file)
@@ -21,7 +21,7 @@ Use `make -f Makefile.pjrc` if you want to use PJRC stack but I find no reason t
 
 
 ## Keymap
-Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `keymap_<name>.c` and see keymap document(you can find in top README.md) and existent keymap files.
+Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `<name>.c` in the keymaps folder, and see keymap document(you can find in top README.md) and existent keymap files.
 
 To build firmware binary hex file with a certain keymap just do `make` with `KEYMAP` option like:
 
@@ -29,8 +29,8 @@ To build firmware binary hex file with a certain keymap just do `make` with `KEY
 
 
 ### 1  Poker
-[keymap_poker.c](keymap_poker.c) emulates original Poker layers
-while both [keymap_poker_bit.c](keymap_poker_bit.c) and [keymap_poker_set.c](keymap_poker_set.c) implements same layout in different way and they fix a minor issue of original Poker and enhance arrow keys.
+[poker.c](keymaps/poker.c) emulates original Poker layers
+while both [poker_bit.c](keymaps/poker_bit.c) and [poker_set.c](keymaps/poker_set.c) implement the same layout in different ways and they fix a minor issue of original Poker and enhance arrow keys.
 
     Fn + Esc = `
     Fn + {left, down, up, right}  = {home, pgdown, pgup, end}
@@ -63,7 +63,7 @@ while both [keymap_poker_bit.c](keymap_poker_bit.c) and [keymap_poker_set.c](key
 
 ### 2. Plain
 Without any Fn layer this will be useful if you want to use key remapping tool like AHK on host.
-See [keymap_plain.c](keymap_plain.c) for detail.
+See [plain.c](keymaps/plain.c) for detail.
 
 #### 1.0 Plain Default layer
     ,-----------------------------------------------------------.
@@ -80,11 +80,11 @@ See [keymap_plain.c](keymap_plain.c) for detail.
 
 
 ### 3. Hasu
-This is my favorite keymap with HHKB Fn, Vi cursor and Mousekey layer. See [keymap_hasu.c](keymap_hasu.c) for detail.
+This is my favorite keymap with HHKB Fn, Vi cursor and Mousekey layer. See [hasu.c](keymaps/hasu.c) for detail.
 
 
 ### 4. SpaceFN
-This layout proposed by spiceBar uses space bar to change layer with using Dual role key technique. See [keymap_spacefn.c](keymap_spacefn.c) and [SpaceFN discussion](http://geekhack.org/index.php?topic=51069.0).
+This layout proposed by spiceBar uses space bar to change layer with using Dual role key technique. See [spacefn.c](keymaps/spacefn.c) and [SpaceFN discussion](http://geekhack.org/index.php?topic=51069.0).
 
 #### 4.0 Default layer
     ,-----------------------------------------------------------.
@@ -113,7 +113,7 @@ This layout proposed by spiceBar uses space bar to change layer with using Dual
 
 
 ### 5. HHKB
-[keymap_hhkb.c](keymap_hhkb.c) emulates original HHKB layers.
+[hhkb.c](keymaps/hhkb.c) emulates original HHKB layers.
 #### 5.0: Default layer
     ,-----------------------------------------------------------.
     |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|  \|  `|
diff --git a/keyboard/gh60/keymap_hasu.c b/keyboard/gh60/keymap_hasu.c
deleted file mode 100644 (file)
index e6af285..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-#include "keymap_common.h"
-
-/*
- * Hasu
- */
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    /* Keymap 0: Default Layer
-     * ,-----------------------------------------------------------.
-     * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backsp |
-     * |-----------------------------------------------------------|
-     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \|
-     * |-----------------------------------------------------------|
-     * |Caps  |  A|  S|  D|  F|  G|  H|  J|  K|  L|Fn3|  '|Return  |
-     * |-----------------------------------------------------------|
-     * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|Fn2|Shift     |
-     * |-----------------------------------------------------------|
-     * |Ctrl|Gui |Alt |      Space             |Alt |Fn4 |Fn4 |Fn1 |
-     * `-----------------------------------------------------------'
-     */
-    KEYMAP_ANSI(
-        ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
-        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
-        LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   FN2, QUOT,     ENT,  \
-        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, FN1,           FN9,  \
-        LCTL,LGUI,LALT,          SPC,                     RALT,FN3, FN3, FN0),
-    /* Keymap 1: colemak */
-    KEYMAP_ANSI(
-        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
-        TAB, Q,   W,   F,   P,   G,   J,   L,   U,   Y,   SCLN,LBRC,RBRC,BSLS, \
-        BSPC,A,   R,   S,   T,   D,   H,   N,   E,   I,   O,   QUOT,     ENT,  \
-        LSFT,Z,   X,   C,   V,   B,   K,   M,   COMM,DOT, SLSH,          RSFT, \
-        LCTL,LGUI,LALT,          SPC,                     RALT,RGUI,APP, FN0),
-    /* Keymap 2: dvorak */
-    KEYMAP_ANSI(
-        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   LBRC,RBRC,BSPC, \
-        TAB, QUOT,COMM,DOT, P,   Y,   F,   G,   C,   R,   L,   SLSH,EQL, BSLS, \
-        CAPS,A,   O,   E,   U,   I,   D,   H,   T,   N,   S,   MINS,     ENT,  \
-        LSFT,SCLN,Q,   J,   K,   X,   B,   M,   W,   V,   Z,             RSFT, \
-        LCTL,LGUI,LALT,          SPC,                     RALT,RGUI,APP, FN0),
-    /* Keymap 3: workman */
-    KEYMAP_ANSI(
-        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
-        TAB, Q,   D,   R,   W,   B,   J,   F,   U,   P,   SCLN,LBRC,RBRC,BSLS, \
-        BSPC,A,   S,   H,   T,   G,   Y,   N,   E,   O,   I,   QUOT,     ENT,  \
-        LSFT,Z,   X,   M,   C,   V,   K,   L,   COMM,DOT, SLSH,          RSFT, \
-        LCTL,LGUI,LALT,          SPC,                     RALT,RGUI,APP, FN0),
-
-    /* Overlay 4: HHKB mode
-     * ,-----------------------------------------------------------.
-     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete |
-     * |-----------------------------------------------------------|
-     * |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |Inser|
-     * |-----------------------------------------------------------|
-     * |Contro|VoD|VoU|Mut|   |   |  *|  /|Hom|PgU|Lef|Rig|Enter   |
-     * |-----------------------------------------------------------|
-     * |Shift   |   |   |   |   |   |  +|  -|End|PgD|Dow|Shift     |
-     * |-----------------------------------------------------------|
-     * |Ctrl|Gui |Alt |      Space             |Alt |Gui |App |    |
-     * `-----------------------------------------------------------'
-     */
-    KEYMAP_ANSI(
-        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, DEL,  \
-        CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP,  TRNS,INS,  \
-        LCTL,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,     ENT,  \
-        LSFT,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,          RSFT, \
-        LCTL,LGUI,LALT,          SPC,                     RALT,RGUI,FN4, TRNS),
-    /* Overlay 5: Vi mode (Slash)
-     * ,-----------------------------------------------------------.
-     * |  `| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Backsp |
-     * |-----------------------------------------------------------|
-     * |Tab  |Hom|PgD|Up |PgU|End|Hom|PgD|PgU|End|   |   |   |     |
-     * |-----------------------------------------------------------|
-     * |Contro|   |Lef|Dow|Rig|   |Lef|Dow|Up |Rig|   |   |Return  |
-     * |-----------------------------------------------------------|
-     * |Shift   |   |   |   |   |   |Hom|PgD|PgU|End|   |Shift     |
-     * |-----------------------------------------------------------|
-     * |Ctrl|Gui |Alt |      Space             |Alt |Gui |App |Ctrl|
-     * `-----------------------------------------------------------'
-     */
-    KEYMAP_ANSI(
-        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, BSPC, \
-        TAB, HOME,PGDN,UP,  PGUP,END, HOME,PGDN,PGUP,END, TRNS,TRNS,TRNS,TRNS, \
-        LCTL,TRNS,LEFT,DOWN,RGHT,TRNS,LEFT,DOWN,UP,  RGHT,TRNS,TRNS,     ENT,  \
-        LSFT,TRNS,TRNS,TRNS,TRNS,TRNS,HOME,PGDN,PGUP,END, TRNS,          RSFT, \
-        LCTL,LGUI,LALT,          SPC,                     RALT,RGUI,APP, RCTL),
-    /* Overlay 6: Mouse mode (Semicolon/App)
-     * ,-----------------------------------------------------------.
-     * |  `| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Backsp |
-     * |-----------------------------------------------------------|
-     * |Tab  |   |   |   |   |   |MwL|MwD|MwU|MwR|   |   |   |     |
-     * |-----------------------------------------------------------|
-     * |Contro|   |Ac0|Ac1|Ac1|   |McL|McD|McU|McR|   |   |Return  |
-     * |-----------------------------------------------------------|
-     * |Shift   |   |   |   |   |Mb3|Mb2|Mb1|Mb4|Mb5|   |Shift     |
-     * |-----------------------------------------------------------|
-     * |Ctrl|Gui |Alt |      Space             |    |    |    |    |
-     * `-----------------------------------------------------------'
-     * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
-     */
-    KEYMAP_ANSI(
-        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, BSPC, \
-        TAB, TRNS,TRNS,TRNS,TRNS,TRNS,WH_L,WH_D,WH_U,WH_R,TRNS,TRNS,TRNS,TRNS, \
-        LCTL,TRNS,ACL0,ACL1,ACL2,TRNS,MS_L,MS_D,MS_U,MS_R,TRNS,TRNS,     ENT,  \
-        LSFT,TRNS,TRNS,TRNS,TRNS,BTN3,BTN2,BTN1,BTN4,BTN5,TRNS,          RSFT, \
-        LCTL,LGUI,LALT,          BTN1,                    TRNS,TRNS,TRNS,RCTL),
-    /* Overlay 7: Layout selector
-     * ,-----------------------------------------------------------.
-     * | Lq| Lc| Ld| Lw|   |   |   |   |   |   |   |   |   |       |
-     * |-----------------------------------------------------------|
-     * |     |Lq |Lw |   |   |   |   |   |   |   |   |   |   |     |
-     * |-----------------------------------------------------------|
-     * |      |   |   |Ld |   |   |   |   |   |   |   |   |        |
-     * |-----------------------------------------------------------|
-     * |        |   |   |Lc |   |   |   |   |   |   |   |          |
-     * |-----------------------------------------------------------|
-     * |    |    |    |                        |    |    |    |    |
-     * `-----------------------------------------------------------'
-     * Lq: set Qwerty layout
-     * Lc: set Colemak layout
-     * Ld: set Dvorak layout
-     * Lw: set Workman layout
-     */
-    KEYMAP_ANSI(
-        FN5, FN6, FN7, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,FN5, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,FN7, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,FN6, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          TRNS, \
-        TRNS,TRNS,TRNS,          TRNS,                    TRNS,TRNS,TRNS,TRNS),
-};
-
-/*
- * Fn action definition
- */
-const uint16_t PROGMEM fn_actions[] = {
-    [0] = ACTION_LAYER_MOMENTARY(4),
-    [1] = ACTION_LAYER_TAP_KEY(5, KC_SLASH),
-    [2] = ACTION_LAYER_TAP_KEY(6, KC_SCLN),
-    [3] = ACTION_LAYER_MOMENTARY(6),
-    [4] = ACTION_LAYER_MOMENTARY(7),   // to Layout selector
-    [5] = ACTION_DEFAULT_LAYER_SET(0),  // set qwerty layout
-    [6] = ACTION_DEFAULT_LAYER_SET(1),  // set colemak layout
-    [7] = ACTION_DEFAULT_LAYER_SET(2),  // set dvorak layout
-    [8] = ACTION_DEFAULT_LAYER_SET(3),  // set workman layout
-    [9] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_GRV),
-};
diff --git a/keyboard/gh60/keymap_hhkb.c b/keyboard/gh60/keymap_hhkb.c
deleted file mode 100644 (file)
index ce1b816..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-#include "keymap_common.h"
-
-/*
- * HHKB Layout
- */
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    /* 0: Default layer
-     * ,-----------------------------------------------------------.
-     * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|  \|  `|
-     * |-----------------------------------------------------------|
-     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|Bspc |
-     * |-----------------------------------------------------------|
-     * |Ctrl  |  A|  S|  D|  F|  G|  H|  J|  K|  L|Fn3|  '|Return  |
-     * |-----------------------------------------------------------|
-     * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift |Fn |
-     * |-----------------------------------------------------------|
-     * |    |Gui |Alt |      Space             |    |Alt |Gui |    |
-     * `-----------------------------------------------------------'
-     */
-    KEYMAP_HHKB(
-        ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSLS, GRV, \
-        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSPC,      \
-        LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     ENT,       \
-        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,     RSFT,FN0,       \
-        NO,  LGUI,LALT,          SPC,                     NO,  RALT,RGUI,NO),
-    /* 1: HHKB Fn layer
-     * ,-----------------------------------------------------------.
-     * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
-     * |-----------------------------------------------------------|
-     * |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |     |
-     * |-----------------------------------------------------------|
-     * |      |VoD|VoU|Mut|Ejc|   |  *|  /|Hom|PgU|Lef|Rig|Enter   |
-     * |-----------------------------------------------------------|
-     * |        |   |   |   |   |   |  +|  -|End|PgD|Dow|      |   |
-     * |-----------------------------------------------------------|
-     * |    |    |    |                        |    |    |    |    |
-     * `-----------------------------------------------------------'
-     */
-    KEYMAP_HHKB(
-        PWR, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL,  \
-        CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP,  TRNS,TRNS,      \
-        TRNS,VOLD,VOLU,MUTE,EJCT,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,     PENT,      \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,     TRNS,TRNS,      \
-        TRNS,TRNS,TRNS,          TRNS,                    TRNS,TRNS,TRNS,TRNS),
-};
-
-/*
- * Fn action definition
- */
-const uint16_t PROGMEM fn_actions[] = {
-    [0] = ACTION_LAYER_MOMENTARY(1),
-};
diff --git a/keyboard/gh60/keymap_plain.c b/keyboard/gh60/keymap_plain.c
deleted file mode 100644 (file)
index 3138c18..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#include "keymap_common.h"
-
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    /* 0: qwerty */
-    KEYMAP(ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
-           TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
-           CAPS,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,NO,  ENT,  \
-           LSFT,NO,  Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,NO,  RSFT, \
-           LCTL,LGUI,LALT,          SPC,                     RALT,RGUI,APP, RCTL),
-};
-const uint16_t PROGMEM fn_actions[] = {};
diff --git a/keyboard/gh60/keymap_poker.c b/keyboard/gh60/keymap_poker.c
deleted file mode 100644 (file)
index 7a612ee..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-#include "keymap_common.h"
-
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    /* 0: qwerty */
-    KEYMAP_ANSI(
-        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
-        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
-        CAPS,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     ENT,  \
-        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,          RSFT, \
-        LCTL,LGUI,LALT,          SPC,                     FN0, RGUI,APP, RCTL),
-    /* 1: colemak */
-    KEYMAP_ANSI(
-        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
-        TAB, Q,   W,   F,   P,   G,   J,   L,   U,   Y,   SCLN,LBRC,RBRC,BSLS, \
-        BSPC,A,   R,   S,   T,   D,   H,   N,   E,   I,   O,   QUOT,     ENT,  \
-        LSFT,Z,   X,   C,   V,   B,   K,   M,   COMM,DOT, SLSH,          RSFT, \
-        LCTL,LGUI,LALT,          SPC,                     FN0, RGUI,APP, RCTL),
-    /* 2: dvorak */
-    KEYMAP_ANSI(
-        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   LBRC,RBRC,BSPC, \
-        TAB, QUOT,COMM,DOT, P,   Y,   F,   G,   C,   R,   L,   SLSH,EQL, BSLS, \
-        CAPS,A,   O,   E,   U,   I,   D,   H,   T,   N,   S,   MINS,     ENT,  \
-        LSFT,SCLN,Q,   J,   K,   X,   B,   M,   W,   V,   Z,             RSFT, \
-        LCTL,LGUI,LALT,          SPC,                     FN0, RGUI,APP, RCTL),
-    /* 3: workman */
-    KEYMAP_ANSI(
-        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
-        TAB, Q,   D,   R,   W,   B,   J,   F,   U,   P,   SCLN,LBRC,RBRC,BSLS, \
-        BSPC,A,   S,   H,   T,   G,   Y,   N,   E,   O,   I,   QUOT,     ENT,  \
-        LSFT,Z,   X,   M,   C,   V,   K,   L,   COMM,DOT, SLSH,          RSFT, \
-        LCTL,LGUI,LALT,          SPC,                     FN0, RGUI,APP, RCTL),
-    /* 4: Poker with Arrow */
-    KEYMAP_ANSI(
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          UP,   \
-        TRNS,TRNS,TRNS,          TRNS,                    TRNS,LEFT,DOWN,RGHT),
-    /* 5: Poker with Esc */
-    KEYMAP_ANSI(
-        ESC, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          TRNS, \
-        TRNS,TRNS,TRNS,          TRNS,                    TRNS,TRNS,TRNS,TRNS),
-    /* 6: Poker Fn
-     * ,-----------------------------------------------------------.
-     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|       |
-     * |-----------------------------------------------------------|
-     * |     |FnQ| Up|   |   |   |   |   |   |Cal|   |Hom|Ins|FnL  |
-     * |-----------------------------------------------------------|
-     * |      |Lef|Dow|Rig|   |   |Psc|Slk|Pau|   |Tsk|End|        |
-     * |-----------------------------------------------------------|
-     * |        |Del|   |Web|Mut|VoU|VoD|   |PgU|PgD|Del|          |
-     * |-----------------------------------------------------------|
-     * |    |    |    |         FnS            |    |    |    |    |
-     * `-----------------------------------------------------------'
-     * Fn:  to Fn overlay
-     * FnL: to Layout selector overaly
-     * FnQ: toggle Esc overlay
-     * FnS: toggle Arrow overlay
-     */
-    KEYMAP_ANSI(
-        ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS, \
-        TRNS,FN2, UP,  TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, FN4,  \
-        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN3, END,      TRNS, \
-        TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL,           TRNS, \
-        TRNS,TRNS,TRNS,          FN1,                     TRNS,TRNS,TRNS,TRNS),
-    /* 7: Layout selector
-     * ,-----------------------------------------------------------.
-     * | Lq| Lc| Ld| Lw|   |   |   |   |   |   |   |   |   |       |
-     * |-----------------------------------------------------------|
-     * |     |Lq |Lw |   |   |   |   |   |   |   |   |   |   |     |
-     * |-----------------------------------------------------------|
-     * |      |   |   |Ld |   |   |   |   |   |   |   |   |        |
-     * |-----------------------------------------------------------|
-     * |        |   |   |Lc |   |   |   |   |   |   |   |          |
-     * |-----------------------------------------------------------|
-     * |    |    |    |                        |    |    |    |    |
-     * `-----------------------------------------------------------'
-     * Lq: set Qwerty layout
-     * Lc: set Colemak layout
-     * Ld: set Dvorak layout
-     * Lw: set Workman layout
-     */
-    KEYMAP_ANSI(
-        FN5, FN6, FN7, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,FN5, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,FN7, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,FN6, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          TRNS, \
-        TRNS,TRNS,TRNS,          TRNS,                    TRNS,TRNS,TRNS,TRNS),
-};
-const uint16_t PROGMEM fn_actions[] = {
-    /* Poker Layout */
-    [0] = ACTION_LAYER_MOMENTARY(6),  // to Fn overlay
-    [1] = ACTION_LAYER_TOGGLE(4),     // toggle arrow overlay
-    [2] = ACTION_LAYER_TOGGLE(5),     // toggle Esc overlay
-    [3] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // Task(RControl,RShift+Esc)
-    [4] = ACTION_LAYER_MOMENTARY(7),  // to Layout selector
-    [5] = ACTION_DEFAULT_LAYER_SET(0),  // set qwerty layout
-    [6] = ACTION_DEFAULT_LAYER_SET(1),  // set colemak layout
-    [7] = ACTION_DEFAULT_LAYER_SET(2),  // set dvorak layout
-    [8] = ACTION_DEFAULT_LAYER_SET(3),  // set workman layout
-};
diff --git a/keyboard/gh60/keymap_poker_bit.c b/keyboard/gh60/keymap_poker_bit.c
deleted file mode 100644 (file)
index b8870fd..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-#include "keymap_common.h"
-
-// Poker fix with toggle and bit operation
-// Fn + Esc = `
-// Fn + {left, down, up, right}  = {home, pgdown, pgup, end}
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    /* 0: qwerty */
-    KEYMAP_ANSI(
-        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
-        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
-        LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     ENT,  \
-        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,          RSFT, \
-        LCTL,LGUI,LALT,          SPC,                     FN0, RGUI,APP, RCTL),
-    /* 4: Poker Default + Fn'd */
-    [4] = KEYMAP_ANSI(
-        TRNS,F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS, \
-        CAPS,FN2, UP,  TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
-        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN4, END,      TRNS, \
-        TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL,           TRNS, \
-        TRNS,TRNS,TRNS,          FN1,                     TRNS,TRNS,TRNS,TRNS),
-    /* 5: Poker with Arrow */
-    KEYMAP_ANSI(
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          PGUP, \
-        TRNS,TRNS,TRNS,          TRNS,                    FN3, HOME,PGDN,END),
-    /* 6: Poker with Esc */
-    KEYMAP_ANSI(
-        ESC, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          TRNS, \
-        TRNS,TRNS,TRNS,          TRNS,                    TRNS,TRNS,TRNS,TRNS),
-    /* 7: Poker with Arrow + Fn'd */
-    KEYMAP_ANSI(
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          UP,   \
-        TRNS,TRNS,TRNS,          TRNS,                    TRNS,LEFT,DOWN,RGHT),
-};
-const uint16_t PROGMEM fn_actions[] = {
-    /* Poker Layout */
-    [0] = ACTION_LAYER_BIT_XOR(1, 0b0101, ON_BOTH),   // Poker Fn(with fix for Esc)
-    [1] = ACTION_LAYER_TOGGLE(5),                     // Poker Arrow toggle
-    [2] = ACTION_LAYER_TOGGLE(6),                     // Poker Esc toggle
-    [3] = ACTION_LAYER_BIT_XOR(1, 0b1101, ON_BOTH),   // Poker Fn(with fix for Arrow)
-    [4] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // FN3 Task(RControl,RShift+Esc)
-};
diff --git a/keyboard/gh60/keymap_poker_set.c b/keyboard/gh60/keymap_poker_set.c
deleted file mode 100644 (file)
index aaa31fc..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-#include "keymap_common.h"
-
-// Poker fix with set(state transition)
-// Fn + Esc = `
-// Fn + {left, down, up, right}  = {home, pgdown, pgup, end}
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    /* 0: qwerty */
-    KEYMAP_ANSI(
-        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
-        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
-        LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     ENT,  \
-        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,          RSFT, \
-        LCTL,LGUI,LALT,          SPC,                     FN0, RGUI,APP, RCTL),
-    /* 1: Poker with Arrow */
-    KEYMAP_ANSI(
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          UP,   \
-        TRNS,TRNS,TRNS,          TRNS,                    FN1, LEFT,DOWN,RGHT),
-    /* 2: Poker with Esc */
-    KEYMAP_ANSI(
-        ESC, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          TRNS, \
-        TRNS,TRNS,TRNS,          TRNS,                    FN2, TRNS,TRNS,TRNS),
-    /* 3: Poker with Arrow and Esc */
-    KEYMAP_ANSI(
-        ESC, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          UP,   \
-        TRNS,TRNS,TRNS,          TRNS,                    FN3, LEFT,DOWN,RGHT),
-    /* 4: Poker Fn'd */
-    KEYMAP_ANSI(
-        ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS, \
-        TRNS,FN6, UP,  TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
-        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END,      TRNS, \
-        TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL,           TRNS, \
-        TRNS,TRNS,TRNS,          FN5,                     FN4, TRNS,TRNS,TRNS),
-    /* 5: Poker Fn'd arrow */
-    KEYMAP_ANSI(
-        ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS, \
-        TRNS,FN7, UP,  TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
-        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END,      TRNS, \
-        TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL,           PGUP, \
-        TRNS,TRNS,TRNS,          FN4,                     FN5, HOME,PGDN,END),
-    /* 6: Poker Fn'd Esc */
-    KEYMAP_ANSI(
-        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS, \
-        TRNS,FN4, UP,  TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
-        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END,      TRNS, \
-        TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL,           TRNS, \
-        TRNS,TRNS,TRNS,          FN7,                     FN6, TRNS,TRNS,TRNS),
-    /* 7: Poker Fn'd Arrow + Esc */
-    KEYMAP_ANSI(
-        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS, \
-        TRNS,FN5, UP,  TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
-        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END,      TRNS, \
-        TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL,           PGUP, \
-        TRNS,TRNS,TRNS,          FN6,                     FN7, HOME,PGDN,END),
-};
-
-/*
- * Fn action definition
- */
-const uint16_t PROGMEM fn_actions[] = {
-    /* Poker Layout */
-    [0] = ACTION_LAYER_SET(4, ON_PRESS),     // FN0 move to Fn'd             when press
-    [1] = ACTION_LAYER_SET(5, ON_PRESS),     // FN1 move to Fn'd arrow       when press
-    [2] = ACTION_LAYER_SET(6, ON_PRESS),     // FN2 move to Fn'd Esc         when press
-    [3] = ACTION_LAYER_SET(7, ON_PRESS),     // FN3 move to Fn'd arrow + Esc when press
-
-    //[4] = ACTION_LAYER_CLEAR(ON_RELEASE),    // FN4 clear overlay            when release
-    [4] = ACTION_LAYER_SET(0, ON_RELEASE),   // FN4 clear overlay            when release
-    [5] = ACTION_LAYER_SET(1, ON_RELEASE),   // FN5 move to arrow            when release
-    [6] = ACTION_LAYER_SET(2, ON_RELEASE),   // FN6 move to Esc              when release
-    [7] = ACTION_LAYER_SET(3, ON_RELEASE),   // FN7 move to arrow + Esc      when release
-
-    [8] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // FN8 Task(RControl,RShift+Esc)
-};
diff --git a/keyboard/gh60/keymap_spacefn.c b/keyboard/gh60/keymap_spacefn.c
deleted file mode 100644 (file)
index 8077dce..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-#include "keymap_common.h"
-
-/*
- * SpaceFN
- * http://geekhack.org/index.php?topic=51069.0
- */
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    /* Keymap 0: Default Layer
-     * ,-----------------------------------------------------------.
-     * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backsp |
-     * |-----------------------------------------------------------|
-     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \|
-     * |-----------------------------------------------------------|
-     * |Caps  |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return  |
-     * |-----------------------------------------------------------|
-     * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |
-     * |-----------------------------------------------------------|
-     * |Ctrl|Gui |Alt |      Space             |Alt |Gui |App |Ctrl|
-     * `-----------------------------------------------------------'
-     */
-    KEYMAP_ANSI(
-        ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
-        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
-        CAPS,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     ENT,  \
-        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,          RSFT, \
-        LCTL,LGUI,LALT,          FN0,                     RALT,RGUI,APP, RCTL),
-
-    /* Overlay 1: SpaceFN
-     * ,-----------------------------------------------------------.
-     * |`  | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete |
-     * |-----------------------------------------------------------|
-     * |     |   |   |   |   |   |   |Hom|Up |End|Psc|Slk|Pau|Ins  |
-     * |-----------------------------------------------------------|
-     * |      |   |   |   |   |   |PgU|Lef|Dow|Rig|   |   |        |
-     * |-----------------------------------------------------------|
-     * |        |   |   |   |   |Spc|PgD|`  |~  |   |   |          |
-     * |-----------------------------------------------------------|
-     * |    |    |    |                        |    |    |    |    |
-     * `-----------------------------------------------------------'
-     */
-    KEYMAP_ANSI(
-        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, DEL,  \
-        TRNS,TRNS,TRNS,ESC, TRNS,TRNS,TRNS,HOME,UP,  END, PSCR,SLCK,PAUS,INS,  \
-        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PGUP,LEFT,DOWN,RGHT,TRNS,TRNS,     TRNS, \
-        TRNS,TRNS,TRNS,TRNS,TRNS,SPC, PGDN,GRV, FN1, TRNS,TRNS,          TRNS, \
-        TRNS,TRNS,TRNS,          TRNS,                    TRNS,TRNS,TRNS,TRNS),
-};
-
-/*
- * Fn action definition
- */
-const uint16_t PROGMEM fn_actions[] = {
-    [0] = ACTION_LAYER_TAP_KEY(1, KC_SPACE),
-    [1] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV),    // tilde
-};
diff --git a/keyboard/gh60/keymaps/hasu.c b/keyboard/gh60/keymaps/hasu.c
new file mode 100644 (file)
index 0000000..e6af285
--- /dev/null
@@ -0,0 +1,145 @@
+#include "keymap_common.h"
+
+/*
+ * Hasu
+ */
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* Keymap 0: Default Layer
+     * ,-----------------------------------------------------------.
+     * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backsp |
+     * |-----------------------------------------------------------|
+     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \|
+     * |-----------------------------------------------------------|
+     * |Caps  |  A|  S|  D|  F|  G|  H|  J|  K|  L|Fn3|  '|Return  |
+     * |-----------------------------------------------------------|
+     * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|Fn2|Shift     |
+     * |-----------------------------------------------------------|
+     * |Ctrl|Gui |Alt |      Space             |Alt |Fn4 |Fn4 |Fn1 |
+     * `-----------------------------------------------------------'
+     */
+    KEYMAP_ANSI(
+        ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
+        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
+        LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   FN2, QUOT,     ENT,  \
+        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, FN1,           FN9,  \
+        LCTL,LGUI,LALT,          SPC,                     RALT,FN3, FN3, FN0),
+    /* Keymap 1: colemak */
+    KEYMAP_ANSI(
+        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
+        TAB, Q,   W,   F,   P,   G,   J,   L,   U,   Y,   SCLN,LBRC,RBRC,BSLS, \
+        BSPC,A,   R,   S,   T,   D,   H,   N,   E,   I,   O,   QUOT,     ENT,  \
+        LSFT,Z,   X,   C,   V,   B,   K,   M,   COMM,DOT, SLSH,          RSFT, \
+        LCTL,LGUI,LALT,          SPC,                     RALT,RGUI,APP, FN0),
+    /* Keymap 2: dvorak */
+    KEYMAP_ANSI(
+        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   LBRC,RBRC,BSPC, \
+        TAB, QUOT,COMM,DOT, P,   Y,   F,   G,   C,   R,   L,   SLSH,EQL, BSLS, \
+        CAPS,A,   O,   E,   U,   I,   D,   H,   T,   N,   S,   MINS,     ENT,  \
+        LSFT,SCLN,Q,   J,   K,   X,   B,   M,   W,   V,   Z,             RSFT, \
+        LCTL,LGUI,LALT,          SPC,                     RALT,RGUI,APP, FN0),
+    /* Keymap 3: workman */
+    KEYMAP_ANSI(
+        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
+        TAB, Q,   D,   R,   W,   B,   J,   F,   U,   P,   SCLN,LBRC,RBRC,BSLS, \
+        BSPC,A,   S,   H,   T,   G,   Y,   N,   E,   O,   I,   QUOT,     ENT,  \
+        LSFT,Z,   X,   M,   C,   V,   K,   L,   COMM,DOT, SLSH,          RSFT, \
+        LCTL,LGUI,LALT,          SPC,                     RALT,RGUI,APP, FN0),
+
+    /* Overlay 4: HHKB mode
+     * ,-----------------------------------------------------------.
+     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete |
+     * |-----------------------------------------------------------|
+     * |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |Inser|
+     * |-----------------------------------------------------------|
+     * |Contro|VoD|VoU|Mut|   |   |  *|  /|Hom|PgU|Lef|Rig|Enter   |
+     * |-----------------------------------------------------------|
+     * |Shift   |   |   |   |   |   |  +|  -|End|PgD|Dow|Shift     |
+     * |-----------------------------------------------------------|
+     * |Ctrl|Gui |Alt |      Space             |Alt |Gui |App |    |
+     * `-----------------------------------------------------------'
+     */
+    KEYMAP_ANSI(
+        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, DEL,  \
+        CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP,  TRNS,INS,  \
+        LCTL,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,     ENT,  \
+        LSFT,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,          RSFT, \
+        LCTL,LGUI,LALT,          SPC,                     RALT,RGUI,FN4, TRNS),
+    /* Overlay 5: Vi mode (Slash)
+     * ,-----------------------------------------------------------.
+     * |  `| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Backsp |
+     * |-----------------------------------------------------------|
+     * |Tab  |Hom|PgD|Up |PgU|End|Hom|PgD|PgU|End|   |   |   |     |
+     * |-----------------------------------------------------------|
+     * |Contro|   |Lef|Dow|Rig|   |Lef|Dow|Up |Rig|   |   |Return  |
+     * |-----------------------------------------------------------|
+     * |Shift   |   |   |   |   |   |Hom|PgD|PgU|End|   |Shift     |
+     * |-----------------------------------------------------------|
+     * |Ctrl|Gui |Alt |      Space             |Alt |Gui |App |Ctrl|
+     * `-----------------------------------------------------------'
+     */
+    KEYMAP_ANSI(
+        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, BSPC, \
+        TAB, HOME,PGDN,UP,  PGUP,END, HOME,PGDN,PGUP,END, TRNS,TRNS,TRNS,TRNS, \
+        LCTL,TRNS,LEFT,DOWN,RGHT,TRNS,LEFT,DOWN,UP,  RGHT,TRNS,TRNS,     ENT,  \
+        LSFT,TRNS,TRNS,TRNS,TRNS,TRNS,HOME,PGDN,PGUP,END, TRNS,          RSFT, \
+        LCTL,LGUI,LALT,          SPC,                     RALT,RGUI,APP, RCTL),
+    /* Overlay 6: Mouse mode (Semicolon/App)
+     * ,-----------------------------------------------------------.
+     * |  `| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Backsp |
+     * |-----------------------------------------------------------|
+     * |Tab  |   |   |   |   |   |MwL|MwD|MwU|MwR|   |   |   |     |
+     * |-----------------------------------------------------------|
+     * |Contro|   |Ac0|Ac1|Ac1|   |McL|McD|McU|McR|   |   |Return  |
+     * |-----------------------------------------------------------|
+     * |Shift   |   |   |   |   |Mb3|Mb2|Mb1|Mb4|Mb5|   |Shift     |
+     * |-----------------------------------------------------------|
+     * |Ctrl|Gui |Alt |      Space             |    |    |    |    |
+     * `-----------------------------------------------------------'
+     * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
+     */
+    KEYMAP_ANSI(
+        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, BSPC, \
+        TAB, TRNS,TRNS,TRNS,TRNS,TRNS,WH_L,WH_D,WH_U,WH_R,TRNS,TRNS,TRNS,TRNS, \
+        LCTL,TRNS,ACL0,ACL1,ACL2,TRNS,MS_L,MS_D,MS_U,MS_R,TRNS,TRNS,     ENT,  \
+        LSFT,TRNS,TRNS,TRNS,TRNS,BTN3,BTN2,BTN1,BTN4,BTN5,TRNS,          RSFT, \
+        LCTL,LGUI,LALT,          BTN1,                    TRNS,TRNS,TRNS,RCTL),
+    /* Overlay 7: Layout selector
+     * ,-----------------------------------------------------------.
+     * | Lq| Lc| Ld| Lw|   |   |   |   |   |   |   |   |   |       |
+     * |-----------------------------------------------------------|
+     * |     |Lq |Lw |   |   |   |   |   |   |   |   |   |   |     |
+     * |-----------------------------------------------------------|
+     * |      |   |   |Ld |   |   |   |   |   |   |   |   |        |
+     * |-----------------------------------------------------------|
+     * |        |   |   |Lc |   |   |   |   |   |   |   |          |
+     * |-----------------------------------------------------------|
+     * |    |    |    |                        |    |    |    |    |
+     * `-----------------------------------------------------------'
+     * Lq: set Qwerty layout
+     * Lc: set Colemak layout
+     * Ld: set Dvorak layout
+     * Lw: set Workman layout
+     */
+    KEYMAP_ANSI(
+        FN5, FN6, FN7, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,FN5, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,FN7, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
+        TRNS,TRNS,TRNS,FN6, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          TRNS, \
+        TRNS,TRNS,TRNS,          TRNS,                    TRNS,TRNS,TRNS,TRNS),
+};
+
+/*
+ * Fn action definition
+ */
+const uint16_t PROGMEM fn_actions[] = {
+    [0] = ACTION_LAYER_MOMENTARY(4),
+    [1] = ACTION_LAYER_TAP_KEY(5, KC_SLASH),
+    [2] = ACTION_LAYER_TAP_KEY(6, KC_SCLN),
+    [3] = ACTION_LAYER_MOMENTARY(6),
+    [4] = ACTION_LAYER_MOMENTARY(7),   // to Layout selector
+    [5] = ACTION_DEFAULT_LAYER_SET(0),  // set qwerty layout
+    [6] = ACTION_DEFAULT_LAYER_SET(1),  // set colemak layout
+    [7] = ACTION_DEFAULT_LAYER_SET(2),  // set dvorak layout
+    [8] = ACTION_DEFAULT_LAYER_SET(3),  // set workman layout
+    [9] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_GRV),
+};
diff --git a/keyboard/gh60/keymaps/hhkb.c b/keyboard/gh60/keymaps/hhkb.c
new file mode 100644 (file)
index 0000000..ce1b816
--- /dev/null
@@ -0,0 +1,52 @@
+#include "keymap_common.h"
+
+/*
+ * HHKB Layout
+ */
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* 0: Default layer
+     * ,-----------------------------------------------------------.
+     * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|  \|  `|
+     * |-----------------------------------------------------------|
+     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|Bspc |
+     * |-----------------------------------------------------------|
+     * |Ctrl  |  A|  S|  D|  F|  G|  H|  J|  K|  L|Fn3|  '|Return  |
+     * |-----------------------------------------------------------|
+     * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift |Fn |
+     * |-----------------------------------------------------------|
+     * |    |Gui |Alt |      Space             |    |Alt |Gui |    |
+     * `-----------------------------------------------------------'
+     */
+    KEYMAP_HHKB(
+        ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSLS, GRV, \
+        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSPC,      \
+        LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     ENT,       \
+        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,     RSFT,FN0,       \
+        NO,  LGUI,LALT,          SPC,                     NO,  RALT,RGUI,NO),
+    /* 1: HHKB Fn layer
+     * ,-----------------------------------------------------------.
+     * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+     * |-----------------------------------------------------------|
+     * |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |     |
+     * |-----------------------------------------------------------|
+     * |      |VoD|VoU|Mut|Ejc|   |  *|  /|Hom|PgU|Lef|Rig|Enter   |
+     * |-----------------------------------------------------------|
+     * |        |   |   |   |   |   |  +|  -|End|PgD|Dow|      |   |
+     * |-----------------------------------------------------------|
+     * |    |    |    |                        |    |    |    |    |
+     * `-----------------------------------------------------------'
+     */
+    KEYMAP_HHKB(
+        PWR, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL,  \
+        CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS,UP,  TRNS,TRNS,      \
+        TRNS,VOLD,VOLU,MUTE,EJCT,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,     PENT,      \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,     TRNS,TRNS,      \
+        TRNS,TRNS,TRNS,          TRNS,                    TRNS,TRNS,TRNS,TRNS),
+};
+
+/*
+ * Fn action definition
+ */
+const uint16_t PROGMEM fn_actions[] = {
+    [0] = ACTION_LAYER_MOMENTARY(1),
+};
diff --git a/keyboard/gh60/keymaps/plain.c b/keyboard/gh60/keymaps/plain.c
new file mode 100644 (file)
index 0000000..3138c18
--- /dev/null
@@ -0,0 +1,11 @@
+#include "keymap_common.h"
+
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* 0: qwerty */
+    KEYMAP(ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
+           TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
+           CAPS,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,NO,  ENT,  \
+           LSFT,NO,  Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,NO,  RSFT, \
+           LCTL,LGUI,LALT,          SPC,                     RALT,RGUI,APP, RCTL),
+};
+const uint16_t PROGMEM fn_actions[] = {};
diff --git a/keyboard/gh60/keymaps/poker.c b/keyboard/gh60/keymaps/poker.c
new file mode 100644 (file)
index 0000000..7a612ee
--- /dev/null
@@ -0,0 +1,104 @@
+#include "keymap_common.h"
+
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* 0: qwerty */
+    KEYMAP_ANSI(
+        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
+        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
+        CAPS,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     ENT,  \
+        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,          RSFT, \
+        LCTL,LGUI,LALT,          SPC,                     FN0, RGUI,APP, RCTL),
+    /* 1: colemak */
+    KEYMAP_ANSI(
+        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
+        TAB, Q,   W,   F,   P,   G,   J,   L,   U,   Y,   SCLN,LBRC,RBRC,BSLS, \
+        BSPC,A,   R,   S,   T,   D,   H,   N,   E,   I,   O,   QUOT,     ENT,  \
+        LSFT,Z,   X,   C,   V,   B,   K,   M,   COMM,DOT, SLSH,          RSFT, \
+        LCTL,LGUI,LALT,          SPC,                     FN0, RGUI,APP, RCTL),
+    /* 2: dvorak */
+    KEYMAP_ANSI(
+        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   LBRC,RBRC,BSPC, \
+        TAB, QUOT,COMM,DOT, P,   Y,   F,   G,   C,   R,   L,   SLSH,EQL, BSLS, \
+        CAPS,A,   O,   E,   U,   I,   D,   H,   T,   N,   S,   MINS,     ENT,  \
+        LSFT,SCLN,Q,   J,   K,   X,   B,   M,   W,   V,   Z,             RSFT, \
+        LCTL,LGUI,LALT,          SPC,                     FN0, RGUI,APP, RCTL),
+    /* 3: workman */
+    KEYMAP_ANSI(
+        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
+        TAB, Q,   D,   R,   W,   B,   J,   F,   U,   P,   SCLN,LBRC,RBRC,BSLS, \
+        BSPC,A,   S,   H,   T,   G,   Y,   N,   E,   O,   I,   QUOT,     ENT,  \
+        LSFT,Z,   X,   M,   C,   V,   K,   L,   COMM,DOT, SLSH,          RSFT, \
+        LCTL,LGUI,LALT,          SPC,                     FN0, RGUI,APP, RCTL),
+    /* 4: Poker with Arrow */
+    KEYMAP_ANSI(
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          UP,   \
+        TRNS,TRNS,TRNS,          TRNS,                    TRNS,LEFT,DOWN,RGHT),
+    /* 5: Poker with Esc */
+    KEYMAP_ANSI(
+        ESC, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          TRNS, \
+        TRNS,TRNS,TRNS,          TRNS,                    TRNS,TRNS,TRNS,TRNS),
+    /* 6: Poker Fn
+     * ,-----------------------------------------------------------.
+     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|       |
+     * |-----------------------------------------------------------|
+     * |     |FnQ| Up|   |   |   |   |   |   |Cal|   |Hom|Ins|FnL  |
+     * |-----------------------------------------------------------|
+     * |      |Lef|Dow|Rig|   |   |Psc|Slk|Pau|   |Tsk|End|        |
+     * |-----------------------------------------------------------|
+     * |        |Del|   |Web|Mut|VoU|VoD|   |PgU|PgD|Del|          |
+     * |-----------------------------------------------------------|
+     * |    |    |    |         FnS            |    |    |    |    |
+     * `-----------------------------------------------------------'
+     * Fn:  to Fn overlay
+     * FnL: to Layout selector overaly
+     * FnQ: toggle Esc overlay
+     * FnS: toggle Arrow overlay
+     */
+    KEYMAP_ANSI(
+        ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS, \
+        TRNS,FN2, UP,  TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, FN4,  \
+        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN3, END,      TRNS, \
+        TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL,           TRNS, \
+        TRNS,TRNS,TRNS,          FN1,                     TRNS,TRNS,TRNS,TRNS),
+    /* 7: Layout selector
+     * ,-----------------------------------------------------------.
+     * | Lq| Lc| Ld| Lw|   |   |   |   |   |   |   |   |   |       |
+     * |-----------------------------------------------------------|
+     * |     |Lq |Lw |   |   |   |   |   |   |   |   |   |   |     |
+     * |-----------------------------------------------------------|
+     * |      |   |   |Ld |   |   |   |   |   |   |   |   |        |
+     * |-----------------------------------------------------------|
+     * |        |   |   |Lc |   |   |   |   |   |   |   |          |
+     * |-----------------------------------------------------------|
+     * |    |    |    |                        |    |    |    |    |
+     * `-----------------------------------------------------------'
+     * Lq: set Qwerty layout
+     * Lc: set Colemak layout
+     * Ld: set Dvorak layout
+     * Lw: set Workman layout
+     */
+    KEYMAP_ANSI(
+        FN5, FN6, FN7, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,FN5, FN8, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,FN7, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
+        TRNS,TRNS,TRNS,FN6, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          TRNS, \
+        TRNS,TRNS,TRNS,          TRNS,                    TRNS,TRNS,TRNS,TRNS),
+};
+const uint16_t PROGMEM fn_actions[] = {
+    /* Poker Layout */
+    [0] = ACTION_LAYER_MOMENTARY(6),  // to Fn overlay
+    [1] = ACTION_LAYER_TOGGLE(4),     // toggle arrow overlay
+    [2] = ACTION_LAYER_TOGGLE(5),     // toggle Esc overlay
+    [3] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // Task(RControl,RShift+Esc)
+    [4] = ACTION_LAYER_MOMENTARY(7),  // to Layout selector
+    [5] = ACTION_DEFAULT_LAYER_SET(0),  // set qwerty layout
+    [6] = ACTION_DEFAULT_LAYER_SET(1),  // set colemak layout
+    [7] = ACTION_DEFAULT_LAYER_SET(2),  // set dvorak layout
+    [8] = ACTION_DEFAULT_LAYER_SET(3),  // set workman layout
+};
diff --git a/keyboard/gh60/keymaps/poker_bit.c b/keyboard/gh60/keymaps/poker_bit.c
new file mode 100644 (file)
index 0000000..b8870fd
--- /dev/null
@@ -0,0 +1,50 @@
+#include "keymap_common.h"
+
+// Poker fix with toggle and bit operation
+// Fn + Esc = `
+// Fn + {left, down, up, right}  = {home, pgdown, pgup, end}
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* 0: qwerty */
+    KEYMAP_ANSI(
+        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
+        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
+        LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     ENT,  \
+        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,          RSFT, \
+        LCTL,LGUI,LALT,          SPC,                     FN0, RGUI,APP, RCTL),
+    /* 4: Poker Default + Fn'd */
+    [4] = KEYMAP_ANSI(
+        TRNS,F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS, \
+        CAPS,FN2, UP,  TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
+        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN4, END,      TRNS, \
+        TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL,           TRNS, \
+        TRNS,TRNS,TRNS,          FN1,                     TRNS,TRNS,TRNS,TRNS),
+    /* 5: Poker with Arrow */
+    KEYMAP_ANSI(
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          PGUP, \
+        TRNS,TRNS,TRNS,          TRNS,                    FN3, HOME,PGDN,END),
+    /* 6: Poker with Esc */
+    KEYMAP_ANSI(
+        ESC, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          TRNS, \
+        TRNS,TRNS,TRNS,          TRNS,                    TRNS,TRNS,TRNS,TRNS),
+    /* 7: Poker with Arrow + Fn'd */
+    KEYMAP_ANSI(
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          UP,   \
+        TRNS,TRNS,TRNS,          TRNS,                    TRNS,LEFT,DOWN,RGHT),
+};
+const uint16_t PROGMEM fn_actions[] = {
+    /* Poker Layout */
+    [0] = ACTION_LAYER_BIT_XOR(1, 0b0101, ON_BOTH),   // Poker Fn(with fix for Esc)
+    [1] = ACTION_LAYER_TOGGLE(5),                     // Poker Arrow toggle
+    [2] = ACTION_LAYER_TOGGLE(6),                     // Poker Esc toggle
+    [3] = ACTION_LAYER_BIT_XOR(1, 0b1101, ON_BOTH),   // Poker Fn(with fix for Arrow)
+    [4] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // FN3 Task(RControl,RShift+Esc)
+};
diff --git a/keyboard/gh60/keymaps/poker_set.c b/keyboard/gh60/keymaps/poker_set.c
new file mode 100644 (file)
index 0000000..aaa31fc
--- /dev/null
@@ -0,0 +1,82 @@
+#include "keymap_common.h"
+
+// Poker fix with set(state transition)
+// Fn + Esc = `
+// Fn + {left, down, up, right}  = {home, pgdown, pgup, end}
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* 0: qwerty */
+    KEYMAP_ANSI(
+        GRV, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
+        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
+        LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     ENT,  \
+        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,          RSFT, \
+        LCTL,LGUI,LALT,          SPC,                     FN0, RGUI,APP, RCTL),
+    /* 1: Poker with Arrow */
+    KEYMAP_ANSI(
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          UP,   \
+        TRNS,TRNS,TRNS,          TRNS,                    FN1, LEFT,DOWN,RGHT),
+    /* 2: Poker with Esc */
+    KEYMAP_ANSI(
+        ESC, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          TRNS, \
+        TRNS,TRNS,TRNS,          TRNS,                    FN2, TRNS,TRNS,TRNS),
+    /* 3: Poker with Arrow and Esc */
+    KEYMAP_ANSI(
+        ESC, TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,          UP,   \
+        TRNS,TRNS,TRNS,          TRNS,                    FN3, LEFT,DOWN,RGHT),
+    /* 4: Poker Fn'd */
+    KEYMAP_ANSI(
+        ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS, \
+        TRNS,FN6, UP,  TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
+        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END,      TRNS, \
+        TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL,           TRNS, \
+        TRNS,TRNS,TRNS,          FN5,                     FN4, TRNS,TRNS,TRNS),
+    /* 5: Poker Fn'd arrow */
+    KEYMAP_ANSI(
+        ESC, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS, \
+        TRNS,FN7, UP,  TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
+        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END,      TRNS, \
+        TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL,           PGUP, \
+        TRNS,TRNS,TRNS,          FN4,                     FN5, HOME,PGDN,END),
+    /* 6: Poker Fn'd Esc */
+    KEYMAP_ANSI(
+        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS, \
+        TRNS,FN4, UP,  TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
+        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END,      TRNS, \
+        TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL,           TRNS, \
+        TRNS,TRNS,TRNS,          FN7,                     FN6, TRNS,TRNS,TRNS),
+    /* 7: Poker Fn'd Arrow + Esc */
+    KEYMAP_ANSI(
+        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS, \
+        TRNS,FN5, UP,  TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,CALC,TRNS,HOME,INS, TRNS, \
+        TRNS,LEFT,DOWN,RGHT,TRNS,TRNS,PSCR,SLCK,PAUS,TRNS,FN8, END,      TRNS, \
+        TRNS,DEL, TRNS,WHOM,MUTE,VOLU,VOLD,TRNS,PGUP,PGDN,DEL,           PGUP, \
+        TRNS,TRNS,TRNS,          FN6,                     FN7, HOME,PGDN,END),
+};
+
+/*
+ * Fn action definition
+ */
+const uint16_t PROGMEM fn_actions[] = {
+    /* Poker Layout */
+    [0] = ACTION_LAYER_SET(4, ON_PRESS),     // FN0 move to Fn'd             when press
+    [1] = ACTION_LAYER_SET(5, ON_PRESS),     // FN1 move to Fn'd arrow       when press
+    [2] = ACTION_LAYER_SET(6, ON_PRESS),     // FN2 move to Fn'd Esc         when press
+    [3] = ACTION_LAYER_SET(7, ON_PRESS),     // FN3 move to Fn'd arrow + Esc when press
+
+    //[4] = ACTION_LAYER_CLEAR(ON_RELEASE),    // FN4 clear overlay            when release
+    [4] = ACTION_LAYER_SET(0, ON_RELEASE),   // FN4 clear overlay            when release
+    [5] = ACTION_LAYER_SET(1, ON_RELEASE),   // FN5 move to arrow            when release
+    [6] = ACTION_LAYER_SET(2, ON_RELEASE),   // FN6 move to Esc              when release
+    [7] = ACTION_LAYER_SET(3, ON_RELEASE),   // FN7 move to arrow + Esc      when release
+
+    [8] = ACTION_MODS_KEY(MOD_RCTL|MOD_RSFT, KC_ESC), // FN8 Task(RControl,RShift+Esc)
+};
diff --git a/keyboard/gh60/keymaps/spacefn.c b/keyboard/gh60/keymaps/spacefn.c
new file mode 100644 (file)
index 0000000..8077dce
--- /dev/null
@@ -0,0 +1,55 @@
+#include "keymap_common.h"
+
+/*
+ * SpaceFN
+ * http://geekhack.org/index.php?topic=51069.0
+ */
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* Keymap 0: Default Layer
+     * ,-----------------------------------------------------------.
+     * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backsp |
+     * |-----------------------------------------------------------|
+     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \|
+     * |-----------------------------------------------------------|
+     * |Caps  |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return  |
+     * |-----------------------------------------------------------|
+     * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |
+     * |-----------------------------------------------------------|
+     * |Ctrl|Gui |Alt |      Space             |Alt |Gui |App |Ctrl|
+     * `-----------------------------------------------------------'
+     */
+    KEYMAP_ANSI(
+        ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSPC, \
+        TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS, \
+        CAPS,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,     ENT,  \
+        LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,          RSFT, \
+        LCTL,LGUI,LALT,          FN0,                     RALT,RGUI,APP, RCTL),
+
+    /* Overlay 1: SpaceFN
+     * ,-----------------------------------------------------------.
+     * |`  | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Delete |
+     * |-----------------------------------------------------------|
+     * |     |   |   |   |   |   |   |Hom|Up |End|Psc|Slk|Pau|Ins  |
+     * |-----------------------------------------------------------|
+     * |      |   |   |   |   |   |PgU|Lef|Dow|Rig|   |   |        |
+     * |-----------------------------------------------------------|
+     * |        |   |   |   |   |Spc|PgD|`  |~  |   |   |          |
+     * |-----------------------------------------------------------|
+     * |    |    |    |                        |    |    |    |    |
+     * `-----------------------------------------------------------'
+     */
+    KEYMAP_ANSI(
+        GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, DEL,  \
+        TRNS,TRNS,TRNS,ESC, TRNS,TRNS,TRNS,HOME,UP,  END, PSCR,SLCK,PAUS,INS,  \
+        TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PGUP,LEFT,DOWN,RGHT,TRNS,TRNS,     TRNS, \
+        TRNS,TRNS,TRNS,TRNS,TRNS,SPC, PGDN,GRV, FN1, TRNS,TRNS,          TRNS, \
+        TRNS,TRNS,TRNS,          TRNS,                    TRNS,TRNS,TRNS,TRNS),
+};
+
+/*
+ * Fn action definition
+ */
+const uint16_t PROGMEM fn_actions[] = {
+    [0] = ACTION_LAYER_TAP_KEY(1, KC_SPACE),
+    [1] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV),    // tilde
+};
index 5a179bd24da994f5a75eb6c543255ce5d7605ab9..d434246cef3d22618d996aeaea550b4ed02c8023 100644 (file)
@@ -129,17 +129,17 @@ NKRO_ENABLE = yes         # USB Nkey Rollover
 # Keymap file
 #
 ifdef KEYMAP
-    SRC := keymap_$(KEYMAP).c $(SRC)
+    SRC := keymaps/$(KEYMAP).c $(SRC)
 else
     ifdef HHKB_JP
-       SRC := keymap_jp.c $(SRC)
+       SRC := keymaps/jp.c $(SRC)
     else 
-       SRC := keymap_hhkb.c $(SRC)
+       SRC := keymaps/hhkb.c $(SRC)
     endif
 endif
 
 
-ifneq (, $(or $(findstring keymap_jp.c, $(SRC)), $(findstring yes, $(HHKB_JP))))
+ifneq (, $(or $(findstring jp.c, $(SRC)), $(findstring yes, $(HHKB_JP))))
     OPT_DEFS += -DHHKB_JP
 endif
 
index 7d0f8c3a9c097c2e6abd2e1c95efe5710921b341..403a8ec60ab0965323a7725aa89fc0d978df8526 100644 (file)
@@ -18,9 +18,9 @@ SRC =   keymap_common.c \
        led.c
 
 ifdef KEYMAP
-    SRC := keymap_$(KEYMAP).c $(SRC)
+    SRC := keymaps/$(KEYMAP).c $(SRC)
 else
-    SRC := keymap_hasu.c $(SRC)
+    SRC := keymaps/hasu.c $(SRC)
 endif
 
 CONFIG_H = config.h
index cbb2b744c9652db6bb22f571b69c9ef7fa010fbe..a730442af027872789568e9d1bf9e072edd0d96e 100644 (file)
@@ -122,17 +122,17 @@ COMMAND_ENABLE = yes      # Commands for debug and configuration
 # Keymap file
 #
 ifdef KEYMAP
-    SRC := keymap_$(KEYMAP).c $(SRC)
+    SRC := keymaps/$(KEYMAP).c $(SRC)
 else
     ifdef HHKB_JP
-       SRC := keymap_jp.c $(SRC)
+       SRC := keymaps/jp.c $(SRC)
     else 
-       SRC := keymap_hhkb.c $(SRC)
+       SRC := keymaps/hhkb.c $(SRC)
     endif
 endif
 
 
-ifneq (, $(or $(findstring keymap_jp.c, $(SRC)), $(findstring yes, $(HHKB_JP))))
+ifneq (, $(or $(findstring jp.c, $(SRC)), $(findstring yes, $(HHKB_JP))))
     OPT_DEFS += -DHHKB_JP
 endif
 
index fcd72e194111b529fe1e8d00d00c9e5bfaeb6c4d..e20c23d8236d886d4869e14e51678ee07b2ef281 100644 (file)
@@ -76,7 +76,7 @@ Use [Teensy Loader] if your controller is Teensy/Teensy++.
 
 
 ##Keymap
-To define your own keymap create file named `keymap_<name>.c` and see [keymap document](../../doc/keymap.md) and existent keymap files.
+To define your own keymap create a file in the keymaps folder named `<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
 
 
 ##Hardware
diff --git a/keyboard/hhkb/keymap_hasu.c b/keyboard/hhkb/keymap_hasu.c
deleted file mode 100644 (file)
index a5602de..0000000
+++ /dev/null
@@ -1,282 +0,0 @@
-/* 
- * Hasu: my personal keymap
- */
-#include "keymap_common.h"
-
-
-#ifdef KEYMAP_SECTION_ENABLE
-const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] __attribute__ ((section (".keymap.keymaps"))) = {
-#else
-const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
-#endif
-    /* Layer 0: Default Layer
-     * ,-----------------------------------------------------------.
-     * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|  \|  `|
-     * |-----------------------------------------------------------|
-     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|Backs|
-     * |-----------------------------------------------------------|
-     * |Contro|  A|  S|  D|  F|  G|  H|  J|  K|  L|Fn3|  '|Fn6     |
-     * |-----------------------------------------------------------|
-     * |Fn7     |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|Fn2|Shift |Fn1|
-     * `-----------------------------------------------------------'
-     *       |Gui|Alt  |         Fn4           |Fn5  |Gui|
-     *       `-------------------------------------------'
-     */
-    [0] = \
-    KEYMAP(ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSLS,GRV, \
-           TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSPC, \
-           LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   FN3, QUOT,FN6, \
-           FN7, Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, FN2, RSFT,FN1, \
-                LGUI,LALT,          FN4,                FN5, RGUI),
-
-    /* Layer 1: HHKB mode[HHKB Fn]
-     * ,-----------------------------------------------------------.
-     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
-     * |-----------------------------------------------------------|
-     * |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |Backs|
-     * |-----------------------------------------------------------|
-     * |Contro|VoD|VoU|Mut|   |   |  *|  /|Hom|PgU|Lef|Rig|Enter   |
-     * |-----------------------------------------------------------|
-     * |Shift   |   |   |   |   |   |  +|  -|End|PgD|Dow|Shift |   |
-     * `-----------------------------------------------------------'
-     *       |Gui|Alt  |         Space         |Alt  |Gui|
-     *       `-------------------------------------------'
-     */ 
-    [1] = \
-    KEYMAP(GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
-           CAPS,NO,  NO,  NO,  NO,  NO,  NO,  NO,  PSCR,SLCK,PAUS, UP,  NO,  BSPC, \
-           LCTL,VOLD,VOLU,MUTE,NO,  NO,  PAST,PSLS,HOME,PGUP,LEFT,RGHT,ENT, \
-           LSFT,NO,  NO,  NO,  NO,  NO,  PPLS,PMNS,END, PGDN,DOWN,RSFT,TRNS, \
-                LGUI,LALT,          TRNS,               RALT,RGUI),
-
-    /* Layer 2: Vi mode[Slash]
-     * ,-----------------------------------------------------------.
-     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
-     * |-----------------------------------------------------------|
-     * |Tab  |Hom|PgD|Up |PgU|End|Hom|PgD|PgUlEnd|   |   |   |Backs|
-     * |-----------------------------------------------------------|
-     * |Contro|   |Lef|Dow|Rig|   |Lef|Dow|Up |Rig|   |   |Return  |
-     * |-----------------------------------------------------------|
-     * |Shift   |   |   |   |   |   |Hom|PgD|PgUlEnd|Fn0|Shift |   |
-     * `-----------------------------------------------------------'
-     *       |Gui|Alt  |          Space        |Alt  |Gui|
-     *       `-------------------------------------------'
-     */
-    [2] = \
-    KEYMAP(GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
-           TAB, HOME,PGDN,UP,  PGUP,END, HOME,PGDN,PGUP,END, NO,  NO,  NO,  BSPC, \
-           LCTL,NO,  LEFT,DOWN,RGHT,NO,  LEFT,DOWN,UP,  RGHT,NO,  NO,  ENT, \
-           LSFT,NO,  NO,  NO,  NO,  NO,  HOME,PGDN,PGUP,END, FN2, RSFT,TRNS, \
-                LGUI,LALT,          SPC,                RALT,RGUI),
-
-    /* Layer 3: Mouse mode(IJKL)[Semicolon]
-     * ,-----------------------------------------------------------.
-     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
-     * |-----------------------------------------------------------|
-     * |Tab  |   |   |   |   |   |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T|
-     * |-----------------------------------------------------------|
-     * |Contro|   |   |   |   |   |Mb2|McL|McD|McR|Fn |   |Return  |
-     * |-----------------------------------------------------------|
-     * |Shift   |   |   |   |   |Mb3|Mb2|Mb1|Mb4|Mb5|   |Shift |   |
-     * `-----------------------------------------------------------'
-     *      |Gui |Alt  |          Mb1          |Fn   |Fn |
-     *      `--------------------------------------------'
-     * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
-     */
-    [3] = \
-    KEYMAP(GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
-           FN8, NO,  NO,  NO,  NO,  NO,  WH_L,WH_D,MS_U,WH_U,WH_R,FN9, FN10,FN8, \
-           LCTL,ACL0,ACL1,ACL2,ACL2,NO,  NO,  MS_L,MS_D,MS_R,FN3, NO,  ENT, \
-           LSFT,NO,  NO,  NO,  NO,  BTN3,BTN2,BTN1,FN9, FN10,NO,  RSFT,TRNS, \
-                LGUI,LALT,          BTN1,               TRNS,TRNS),
-
-    /* Layer 4: Mouse mode(IJKL)[Space]
-     * ,-----------------------------------------------------------.
-     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
-     * |-----------------------------------------------------------|
-     * |Tab  |   |   |   |   |   |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T|
-     * |-----------------------------------------------------------|
-     * |Contro|   |   |   |   |   |Mb2|McL|McD|McR|Mb1|   |Return  |
-     * |-----------------------------------------------------------|
-     * |Shift   |   |   |   |   |Mb3|Mb2|Mb1|Mb4|Mb5|   |Shift |   |
-     * `-----------------------------------------------------------'
-     *      |Gui |Alt  |          Mb1          |Fn   |Fn |
-     *      `--------------------------------------------'
-     * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
-     */
-    [4] = \
-    KEYMAP(GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
-           FN8, NO,  NO,  NO,  NO,  NO,  WH_L,WH_D,MS_U,WH_U,WH_R,BTN4,BTN5,FN8, \
-           LCTL,VOLD,VOLU,MUTE,NO,  NO,  NO,  MS_L,MS_D,MS_R,BTN1,NO,  ENT, \
-           LSFT,NO,  NO,  NO,  NO,  BTN3,BTN2,BTN1,FN9, FN10,NO,  RSFT,TRNS, \
-                LGUI,LALT,          TRNS,               TRNS,TRNS),
-
-#if 0
-    /* Layer 3: Mouse mode(HJKL)[Semicolon]
-     * ,-----------------------------------------------------------.
-     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
-     * |-----------------------------------------------------------|
-     * |Tab  |   |   |   |   |   |MwL|MwD|MwU|MwR|   |   |   |Backs|
-     * |-----------------------------------------------------------|
-     * |Contro|   |   |   |   |   |McL|McD|McU|McR|Fn0|   |Return  |
-     * |-----------------------------------------------------------|
-     * |Shift   |   |   |   |   |Mb3|Mb2|Mb1|Mb4|Mb5|   |Shift |   |
-     * `-----------------------------------------------------------'
-     *      |Gui |Alt  |          Mb1          |Alt  |Fn0|
-     *      `--------------------------------------------'
-     * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel 
-     */
-    KEYMAP(GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
-           TAB, NO,  NO,  NO,  NO,  NO,  NO,  WH_D,WH_U,RGHT,NO,  NO,  NO,  BSPC, \
-           LCTL,NO,  ACL0,ACL1,ACL2,NO,  MS_L,MS_D,MS_U,MS_R,TRNS,QUOT,ENT, \
-           LSFT,NO,  NO,  NO,  NO,  BTN3,BTN2,BTN1,FN9, FN10,SLSH,RSFT,NO, \
-                LGUI,LALT,          BTN1,               RALT,TRNS),
-
-    /* Layer4: Mouse mode(HJKL)[Space]
-     * ,-----------------------------------------------------------.
-     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
-     * |-----------------------------------------------------------|
-     * |Tab  |   |   |   |   |   |MwL|MwD|MwU|MwR|   |Wbk|Wfr|Alt-T|
-     * |-----------------------------------------------------------|
-     * |Contro|   |   |   |   |   |McL|McD|McU|McR|Fn0|   |Return  |
-     * |-----------------------------------------------------------|
-     * |Shift   |   |   |   |   |Mb3|Mb2|Mb1|Mb4|Mb5|   |Shift |   |
-     * `-----------------------------------------------------------'
-     *      |Gui |Alt  |          Fn0          |Alt  |Fn0|
-     *      `--------------------------------------------'
-     * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel 
-     */
-    KEYMAP(GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
-           FN8, NO,  NO,  NO,  NO,  NO,  NO,  WH_D,WH_U,RGHT,NO,  FN9, FN10,FN8, \
-           LCTL,NO,  ACL0,ACL1,ACL2,NO,  MS_L,MS_D,MS_U,MS_R,BTN1,NO,  ENT, \
-           LSFT,NO,  NO,  NO,  NO,  BTN3,BTN2,BTN1,FN9, FN10,NO,  RSFT,NO, \
-                LGUI,LALT,          TRNS,               RALT,RGUI),
-#endif
-#if 0
-    /* Layer x: Matias half-qwerty keyboard style[Space]
-     * ,-----------------------------------------------------------.
-     * |  -|  0|  9|  8|  7|  6|  5|  4|  3|  2|  1|   |   |   |Esc|
-     * |-----------------------------------------------------------|
-     * |Backs|  P|  O|  I|  U|  Y|  T|  R|  E|  W|  Q|   |   |Tab  |
-     * |-----------------------------------------------------------|
-     * |Contro|  ;|  L|  K|  J|  H|  G|  F|  D|  S|  A|Con|Control |
-     * |-----------------------------------------------------------|
-     * |Shift   |  /|  .|  ,|  M|  N|  B|  V|  C|  X|  Z|Shift |   |
-     * `-----------------------------------------------------------'
-     *      |Gui |Alt  |          Fn0          |Alt  |Gui|
-     *      `--------------------------------------------'
-     */
-    KEYMAP(MINS,0,   9,   8,   7,   6,   5,   4,   3,   2,   1,   NO,  NO,  NO,  ESC, \
-           BSPC,P,   O,   I,   U,   Y,   T,   R,   E,   W,   Q,   NO,  NO,  TAB, \
-           LCTL,SCLN,L,   K,   J,   H,   G,   F,   D,   S,   A,   RCTL,RCTL, \
-           LSFT,SLSH,DOT, COMM,M,   N,   B,   V,   C,   X,   Z,   RSFT,NO, \
-                LGUI,LALT,          TRNS,               RALT,RGUI),
-#endif
-};
-
-
-
-/* id for user defined functions */
-enum function_id {
-    LSHIFT_LPAREN,
-};
-
-enum macro_id {
-    HELLO,
-    VOLUP,
-    ALT_TAB,
-};
-
-
-/*
- * Fn action definition
- */
-#ifdef KEYMAP_SECTION_ENABLE
-const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = {
-#else
-const uint16_t fn_actions[] PROGMEM = {
-#endif
-    [0] = ACTION_DEFAULT_LAYER_SET(0),                // Default layer(not used)
-    [1] = ACTION_LAYER_TAP_TOGGLE(1),                 // HHKB layer(toggle with 5 taps)
-    [2] = ACTION_LAYER_TAP_KEY(2, KC_SLASH),          // Cursor layer with Slash*
-    [3] = ACTION_LAYER_TAP_KEY(3, KC_SCLN),           // Mousekey layer with Semicolon*
-    [4] = ACTION_LAYER_TAP_KEY(4, KC_SPC),            // Mousekey layer with Space
-    [5] = ACTION_LAYER_MOMENTARY(4),                  // Mousekey layer(IJKL)
-    [6] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENT),      // RControl with tap Enter
-    [7] = ACTION_MODS_ONESHOT(MOD_LSFT),              // Oneshot Shift
-    [8] = ACTION_MACRO(ALT_TAB),                      // Application switching
-    [9] = ACTION_MODS_KEY(MOD_LALT, KC_LEFT),
-   [10] = ACTION_MODS_KEY(MOD_LALT, KC_RIGHT),
-
-//  [x] = ACTION_LMOD_TAP_KEY(KC_LCTL, KC_BSPC),        // LControl with tap Backspace
-//  [x] = ACTION_LMOD_TAP_KEY(KC_LCTL, KC_ESC),         // LControl with tap Esc
-//  [x] = ACTION_FUNCTION_TAP(LSHIFT_LPAREN),           // Function: LShift with tap '('
-//  [x] = ACTION_MACRO(HELLO),                          // Macro: say hello
-//  [x] = ACTION_MACRO(VOLUP),                          // Macro: media key
-};
-
-
-/*
- * Macro definition
- */
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-    switch (id) {
-        case HELLO:
-            return (record->event.pressed ?
-                    MACRO( I(0), T(H), T(E), T(L), T(L), W(255), T(O), END ) :
-                    MACRO_NONE );
-        case VOLUP:
-            return (record->event.pressed ?
-                    MACRO( D(VOLU), U(VOLU), END ) :
-                    MACRO_NONE );
-        case ALT_TAB:
-            return (record->event.pressed ?
-                    MACRO( D(LALT), D(TAB), END ) :
-                    MACRO( U(TAB), END ));
-    }
-    return MACRO_NONE;
-}
-
-
-
-/*
- * user defined action function
- */
-void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-    if (record->event.pressed) dprint("P"); else dprint("R");
-    dprintf("%d", record->tap.count);
-    if (record->tap.interrupted) dprint("i");
-    dprint("\n");
-
-    switch (id) {
-        case LSHIFT_LPAREN:
-            // Shift parentheses example: LShft + tap '('
-            // http://stevelosh.com/blog/2012/10/a-modern-space-cadet/#shift-parentheses
-            // http://geekhack.org/index.php?topic=41989.msg1304899#msg1304899
-            if (record->event.pressed) {
-                if (record->tap.count > 0 && !record->tap.interrupted) {
-                    if (record->tap.interrupted) {
-                        dprint("tap interrupted\n");
-                        register_mods(MOD_BIT(KC_LSHIFT));
-                    }
-                } else {
-                    register_mods(MOD_BIT(KC_LSHIFT));
-                }
-            } else {
-                if (record->tap.count > 0 && !(record->tap.interrupted)) {
-                    add_weak_mods(MOD_BIT(KC_LSHIFT));
-                    send_keyboard_report();
-                    register_code(KC_9);
-                    unregister_code(KC_9);
-                    del_weak_mods(MOD_BIT(KC_LSHIFT));
-                    send_keyboard_report();
-                    record->tap.count = 0;  // ad hoc: cancel tap
-                } else {
-                    unregister_mods(MOD_BIT(KC_LSHIFT));
-                }
-            }
-            break;
-    }
-}
diff --git a/keyboard/hhkb/keymap_hhkb.c b/keyboard/hhkb/keymap_hhkb.c
deleted file mode 100644 (file)
index 86ad0f5..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * HHKB Layout
- */
-#include "keymap_common.h"
-
-
-#ifdef KEYMAP_SECTION_ENABLE
-const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] __attribute__ ((section (".keymap.keymaps"))) = {
-#else
-const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
-#endif
-    /* Layer 0: Default Layer
-     * ,-----------------------------------------------------------.
-     * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|  \|  `|
-     * |-----------------------------------------------------------|
-     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|Backs|
-     * |-----------------------------------------------------------|
-     * |Contro|  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Enter   |
-     * |-----------------------------------------------------------|
-     * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift |Fn0|
-     * `-----------------------------------------------------------'
-     *       |Alt|Gui  |         Space         |Gui  |Alt|
-     *       `-------------------------------------------'
-     */
-    KEYMAP(ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSLS,GRV,   \
-           TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSPC,       \
-           LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,ENT,             \
-           LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,RSFT,FN0,             \
-                LALT,LGUI,          SPC,                RGUI,RALT),
-
-    /* Layer 1: HHKB mode (HHKB Fn)
-     * ,-----------------------------------------------------------.
-     * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
-     * |-----------------------------------------------------------|
-     * |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |Backs|
-     * |-----------------------------------------------------------|
-     * |      |VoD|VoU|Mut|   |   |  *|  /|Hom|PgU|Lef|Rig|Enter   |
-     * |-----------------------------------------------------------|
-     * |        |   |   |   |   |   |  +|  -|End|PgD|Dow|      |   |
-     * `-----------------------------------------------------------'
-     *       |   |     |                       |     |   |
-     *       `-------------------------------------------'
-     */
-    KEYMAP(PWR, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL,   \
-           CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS, UP, TRNS, BSPC,      \
-           TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,PENT,            \
-           TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,TRNS,TRNS,            \
-                TRNS,TRNS,          TRNS,               TRNS,TRNS),
-};
-
-
-
-/*
- * Fn action definition
- */
-#ifdef KEYMAP_SECTION_ENABLE
-const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = {
-    [0]  = ACTION_LAYER_MOMENTARY(1),
-    [1]  = ACTION_LAYER_MOMENTARY(2),
-    [2]  = ACTION_LAYER_MOMENTARY(3),
-    [3]  = ACTION_LAYER_MOMENTARY(4),
-    [4]  = ACTION_LAYER_MOMENTARY(5),
-    [5]  = ACTION_LAYER_MOMENTARY(6),
-    [6]  = ACTION_LAYER_MOMENTARY(7),
-    [7]  = ACTION_LAYER_TOGGLE(1),
-    [8]  = ACTION_LAYER_TOGGLE(2),
-    [9]  = ACTION_LAYER_TOGGLE(3),
-    [10] = ACTION_LAYER_TAP_TOGGLE(1),
-    [11] = ACTION_LAYER_TAP_TOGGLE(2),
-    [12] = ACTION_LAYER_TAP_TOGGLE(3),
-    [13] = ACTION_LAYER_TAP_KEY(1, KC_A),
-    [14] = ACTION_LAYER_TAP_KEY(2, KC_F),
-    [15] = ACTION_LAYER_TAP_KEY(3, KC_J),
-    [16] = ACTION_LAYER_TAP_KEY(4, KC_SPACE),
-    [17] = ACTION_LAYER_TAP_KEY(5, KC_SCOLON),
-    [18] = ACTION_LAYER_TAP_KEY(6, KC_QUOTE),
-    [19] = ACTION_LAYER_TAP_KEY(7, KC_SLASH),
-    [20] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_SPACE),
-    [21] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_SPACE),
-    [22] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_QUOTE),
-    [23] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENTER),
-    [24] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_ESC),
-    [25] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_BSPACE),
-    [26] = ACTION_MODS_ONESHOT(MOD_LCTL),
-    [27] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_ESC),
-    [28] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_BSPACE),
-    [29] = ACTION_MODS_ONESHOT(MOD_LSFT),
-    [30] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ESC),
-    [31] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_BSPACE),
-};
-#else
-const uint16_t fn_actions[] PROGMEM = {
-    [0]  = ACTION_LAYER_MOMENTARY(1),
-};
-#endif
diff --git a/keyboard/hhkb/keymap_jp.c b/keyboard/hhkb/keymap_jp.c
deleted file mode 100644 (file)
index 48d0ee7..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/* 
- * HHKB JP Layout
- */
-#include "keymap_common.h"
-
-
-#ifdef KEYMAP_SECTION_ENABLE
-const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] __attribute__ ((section (".keymap.keymaps"))) = {
-#else
-const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
-#endif
-    /* Layer 0: Default Layer */
-    KEYMAP_JP(ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, JYEN,BSPC, \
-              TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC, \
-              LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,BSLS,ENT, \
-              LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,RO,  UP,  RSFT, \
-              FN0, ZKHK,LGUI,LALT,MHEN,     SPC,      HENK,KANA,RALT,FN0, LEFT,DOWN,RGHT),
-
-    /* Layer 1: HHKB mode (HHKB Fn)
-     * ,-----------------------------------------------------------.
-     * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
-     * |-----------------------------------------------------------|
-     * |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |     |
-     * |------------------------------------------------------`    |
-     * |      |VoD|VoU|Mut|   |   |  *|  /|Hom|PgU|Lef|Rig|   |    |
-     * |-----------------------------------------------------------|
-     * |       |   |   |   |   |   |  +|  -|End|PgD|Dow|   |   |   |
-     * |-----------------------------------------------------------|
-     * |   ||   |   |   |   |         |   |   |   |   ||   |   |   |
-     * `-----------------------------------------------------------'
-     */ 
-    KEYMAP_JP(PWR, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
-              CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS, UP, TRNS, \
-              TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,TRNS,PENT, \
-              TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,TRNS,TRNS,TRNS, \
-              TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS,     TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS),
-};
-
-
-
-/*
- * Fn action definition
- */
-#ifdef KEYMAP_SECTION_ENABLE
-const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = {
-#else
-const uint16_t fn_actions[] PROGMEM = {
-#endif
-    [0] = ACTION_LAYER_MOMENTARY(1),
-};
diff --git a/keyboard/hhkb/keymap_spacefn.c b/keyboard/hhkb/keymap_spacefn.c
deleted file mode 100644 (file)
index deff920..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * SpaceFN
- * http://geekhack.org/index.php?topic=51069.0
- */
-#include "keymap_common.h"
-
-
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    /* Layer 0: Default Layer
-     * ,-----------------------------------------------------------.
-     * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|  `|BSp|
-     * |-----------------------------------------------------------|
-     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \|
-     * |-----------------------------------------------------------|
-     * |Contro|  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Enter   |
-     * |-----------------------------------------------------------|
-     * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift |Fn0|
-     * `-----------------------------------------------------------'
-     *       |Gui|Alt  |         SpaceFN       |Alt  |Gui|
-     *       `-------------------------------------------'
-     */
-    KEYMAP(ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, GRV, BSPC,  \
-           TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS,       \
-           LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,ENT,             \
-           LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,RSFT,FN0,             \
-                LGUI,LALT,          FN1,                RALT,RGUI),
-
-    /* Layer 1: HHKB mode (HHKB Fn)
-     * ,-----------------------------------------------------------.
-     * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
-     * |-----------------------------------------------------------|
-     * |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |Backs|
-     * |-----------------------------------------------------------|
-     * |      |VoD|VoU|Mut|   |   |  *|  /|Hom|PgU|Lef|Rig|Enter   |
-     * |-----------------------------------------------------------|
-     * |        |   |   |   |   |   |  +|  -|End|PgD|Dow|      |   |
-     * `-----------------------------------------------------------'
-     *       |   |     |                       |     |   |
-     *       `-------------------------------------------'
-     */ 
-    KEYMAP(PWR, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL,   \
-           CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS, UP, TRNS, BSPC,      \
-           TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,PENT,            \
-           TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,TRNS,TRNS,            \
-                TRNS,TRNS,          SPC,                TRNS,TRNS),
-
-    /* Layer 2: SpaceFN
-     * ,-----------------------------------------------------------.
-     * |`  | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|   |Del|
-     * |-----------------------------------------------------------|
-     * |     |   |   |Esc|   |   |   |Hom|Up |End|Psc|Slk|Pau|Ins  |
-     * |-----------------------------------------------------------|
-     * |      |   |   |   |   |   |PgU|Lef|Dow|Rig|   |   |        |
-     * |-----------------------------------------------------------|
-     * |        |   |   |   |   |Spc|PgD|`  |~  |   |   |      |   |
-     * `-----------------------------------------------------------'
-     *       |   |     |                       |     |   |
-     *       `-------------------------------------------'
-     */
-    KEYMAP(GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS,DEL,   \
-           TRNS,TRNS,TRNS,ESC, TRNS,TRNS,TRNS,HOME,FN3, END, PSCR,SLCK,PAUS,INS,        \
-           TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PGUP,LEFT,DOWN,RGHT,TRNS,TRNS,TRNS,            \
-           TRNS,TRNS,TRNS,TRNS,TRNS,SPC, PGDN,GRV, FN2, TRNS,TRNS,TRNS,NO,              \
-                TRNS,TRNS,          TRNS,               TRNS,TRNS),
-};
-
-
-/*
- * user defined action function
- */
-enum function_id {
-    CTRL_SPACE_I,       // Ctrl + Up(SpaceFN) -> PgUp
-};
-
-void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-#   define MODS_CTRL_MASK   (MOD_BIT(KC_LCTRL)|MOD_BIT(KC_RCTRL))
-    static uint8_t ctrl_space_i_prev_ctrl;
-
-    switch (id) {
-        // Ctrl + Up(SpaceFN) -> PgUp
-        case CTRL_SPACE_I:
-            ctrl_space_i_prev_ctrl = get_mods()&MODS_CTRL_MASK;
-            if (record->event.pressed) {
-                if (ctrl_space_i_prev_ctrl) {
-                    del_mods(ctrl_space_i_prev_ctrl);   // remove Ctrl
-                    add_key(KC_PGUP);
-                    send_keyboard_report(); // send PgUp without Ctrl
-                    add_mods(ctrl_space_i_prev_ctrl);   // return Ctrl but not sent
-                } else {
-                    add_key(KC_UP);
-                    send_keyboard_report();
-                }
-            } else {
-                if (ctrl_space_i_prev_ctrl) {
-                    del_key(KC_PGUP);
-                    send_keyboard_report();
-                } else {
-                    del_key(KC_UP);
-                    send_keyboard_report();
-                }
-            }
-            break;
-    }
-}
-
-
-/*
- * Fn action definition
- */
-const uint16_t PROGMEM fn_actions[] = {
-    [0] = ACTION_LAYER_MOMENTARY(1),
-    [1] = ACTION_LAYER_TAP_KEY(2, KC_SPACE),
-    [2] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV),    // tilde
-    [3] = ACTION_FUNCTION(CTRL_SPACE_I),        // Ctrl + Up(SpaceFN) -> PgUp
-};
diff --git a/keyboard/hhkb/keymaps/hasu.c b/keyboard/hhkb/keymaps/hasu.c
new file mode 100644 (file)
index 0000000..a5602de
--- /dev/null
@@ -0,0 +1,282 @@
+/* 
+ * Hasu: my personal keymap
+ */
+#include "keymap_common.h"
+
+
+#ifdef KEYMAP_SECTION_ENABLE
+const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] __attribute__ ((section (".keymap.keymaps"))) = {
+#else
+const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
+#endif
+    /* Layer 0: Default Layer
+     * ,-----------------------------------------------------------.
+     * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|  \|  `|
+     * |-----------------------------------------------------------|
+     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|Backs|
+     * |-----------------------------------------------------------|
+     * |Contro|  A|  S|  D|  F|  G|  H|  J|  K|  L|Fn3|  '|Fn6     |
+     * |-----------------------------------------------------------|
+     * |Fn7     |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|Fn2|Shift |Fn1|
+     * `-----------------------------------------------------------'
+     *       |Gui|Alt  |         Fn4           |Fn5  |Gui|
+     *       `-------------------------------------------'
+     */
+    [0] = \
+    KEYMAP(ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSLS,GRV, \
+           TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSPC, \
+           LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   FN3, QUOT,FN6, \
+           FN7, Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, FN2, RSFT,FN1, \
+                LGUI,LALT,          FN4,                FN5, RGUI),
+
+    /* Layer 1: HHKB mode[HHKB Fn]
+     * ,-----------------------------------------------------------.
+     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+     * |-----------------------------------------------------------|
+     * |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |Backs|
+     * |-----------------------------------------------------------|
+     * |Contro|VoD|VoU|Mut|   |   |  *|  /|Hom|PgU|Lef|Rig|Enter   |
+     * |-----------------------------------------------------------|
+     * |Shift   |   |   |   |   |   |  +|  -|End|PgD|Dow|Shift |   |
+     * `-----------------------------------------------------------'
+     *       |Gui|Alt  |         Space         |Alt  |Gui|
+     *       `-------------------------------------------'
+     */ 
+    [1] = \
+    KEYMAP(GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
+           CAPS,NO,  NO,  NO,  NO,  NO,  NO,  NO,  PSCR,SLCK,PAUS, UP,  NO,  BSPC, \
+           LCTL,VOLD,VOLU,MUTE,NO,  NO,  PAST,PSLS,HOME,PGUP,LEFT,RGHT,ENT, \
+           LSFT,NO,  NO,  NO,  NO,  NO,  PPLS,PMNS,END, PGDN,DOWN,RSFT,TRNS, \
+                LGUI,LALT,          TRNS,               RALT,RGUI),
+
+    /* Layer 2: Vi mode[Slash]
+     * ,-----------------------------------------------------------.
+     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+     * |-----------------------------------------------------------|
+     * |Tab  |Hom|PgD|Up |PgU|End|Hom|PgD|PgUlEnd|   |   |   |Backs|
+     * |-----------------------------------------------------------|
+     * |Contro|   |Lef|Dow|Rig|   |Lef|Dow|Up |Rig|   |   |Return  |
+     * |-----------------------------------------------------------|
+     * |Shift   |   |   |   |   |   |Hom|PgD|PgUlEnd|Fn0|Shift |   |
+     * `-----------------------------------------------------------'
+     *       |Gui|Alt  |          Space        |Alt  |Gui|
+     *       `-------------------------------------------'
+     */
+    [2] = \
+    KEYMAP(GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
+           TAB, HOME,PGDN,UP,  PGUP,END, HOME,PGDN,PGUP,END, NO,  NO,  NO,  BSPC, \
+           LCTL,NO,  LEFT,DOWN,RGHT,NO,  LEFT,DOWN,UP,  RGHT,NO,  NO,  ENT, \
+           LSFT,NO,  NO,  NO,  NO,  NO,  HOME,PGDN,PGUP,END, FN2, RSFT,TRNS, \
+                LGUI,LALT,          SPC,                RALT,RGUI),
+
+    /* Layer 3: Mouse mode(IJKL)[Semicolon]
+     * ,-----------------------------------------------------------.
+     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+     * |-----------------------------------------------------------|
+     * |Tab  |   |   |   |   |   |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T|
+     * |-----------------------------------------------------------|
+     * |Contro|   |   |   |   |   |Mb2|McL|McD|McR|Fn |   |Return  |
+     * |-----------------------------------------------------------|
+     * |Shift   |   |   |   |   |Mb3|Mb2|Mb1|Mb4|Mb5|   |Shift |   |
+     * `-----------------------------------------------------------'
+     *      |Gui |Alt  |          Mb1          |Fn   |Fn |
+     *      `--------------------------------------------'
+     * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
+     */
+    [3] = \
+    KEYMAP(GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
+           FN8, NO,  NO,  NO,  NO,  NO,  WH_L,WH_D,MS_U,WH_U,WH_R,FN9, FN10,FN8, \
+           LCTL,ACL0,ACL1,ACL2,ACL2,NO,  NO,  MS_L,MS_D,MS_R,FN3, NO,  ENT, \
+           LSFT,NO,  NO,  NO,  NO,  BTN3,BTN2,BTN1,FN9, FN10,NO,  RSFT,TRNS, \
+                LGUI,LALT,          BTN1,               TRNS,TRNS),
+
+    /* Layer 4: Mouse mode(IJKL)[Space]
+     * ,-----------------------------------------------------------.
+     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+     * |-----------------------------------------------------------|
+     * |Tab  |   |   |   |   |   |MwL|MwD|McU|MwU|MwR|Wbk|Wfr|Alt-T|
+     * |-----------------------------------------------------------|
+     * |Contro|   |   |   |   |   |Mb2|McL|McD|McR|Mb1|   |Return  |
+     * |-----------------------------------------------------------|
+     * |Shift   |   |   |   |   |Mb3|Mb2|Mb1|Mb4|Mb5|   |Shift |   |
+     * `-----------------------------------------------------------'
+     *      |Gui |Alt  |          Mb1          |Fn   |Fn |
+     *      `--------------------------------------------'
+     * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
+     */
+    [4] = \
+    KEYMAP(GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
+           FN8, NO,  NO,  NO,  NO,  NO,  WH_L,WH_D,MS_U,WH_U,WH_R,BTN4,BTN5,FN8, \
+           LCTL,VOLD,VOLU,MUTE,NO,  NO,  NO,  MS_L,MS_D,MS_R,BTN1,NO,  ENT, \
+           LSFT,NO,  NO,  NO,  NO,  BTN3,BTN2,BTN1,FN9, FN10,NO,  RSFT,TRNS, \
+                LGUI,LALT,          TRNS,               TRNS,TRNS),
+
+#if 0
+    /* Layer 3: Mouse mode(HJKL)[Semicolon]
+     * ,-----------------------------------------------------------.
+     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+     * |-----------------------------------------------------------|
+     * |Tab  |   |   |   |   |   |MwL|MwD|MwU|MwR|   |   |   |Backs|
+     * |-----------------------------------------------------------|
+     * |Contro|   |   |   |   |   |McL|McD|McU|McR|Fn0|   |Return  |
+     * |-----------------------------------------------------------|
+     * |Shift   |   |   |   |   |Mb3|Mb2|Mb1|Mb4|Mb5|   |Shift |   |
+     * `-----------------------------------------------------------'
+     *      |Gui |Alt  |          Mb1          |Alt  |Fn0|
+     *      `--------------------------------------------'
+     * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel 
+     */
+    KEYMAP(GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
+           TAB, NO,  NO,  NO,  NO,  NO,  NO,  WH_D,WH_U,RGHT,NO,  NO,  NO,  BSPC, \
+           LCTL,NO,  ACL0,ACL1,ACL2,NO,  MS_L,MS_D,MS_U,MS_R,TRNS,QUOT,ENT, \
+           LSFT,NO,  NO,  NO,  NO,  BTN3,BTN2,BTN1,FN9, FN10,SLSH,RSFT,NO, \
+                LGUI,LALT,          BTN1,               RALT,TRNS),
+
+    /* Layer4: Mouse mode(HJKL)[Space]
+     * ,-----------------------------------------------------------.
+     * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+     * |-----------------------------------------------------------|
+     * |Tab  |   |   |   |   |   |MwL|MwD|MwU|MwR|   |Wbk|Wfr|Alt-T|
+     * |-----------------------------------------------------------|
+     * |Contro|   |   |   |   |   |McL|McD|McU|McR|Fn0|   |Return  |
+     * |-----------------------------------------------------------|
+     * |Shift   |   |   |   |   |Mb3|Mb2|Mb1|Mb4|Mb5|   |Shift |   |
+     * `-----------------------------------------------------------'
+     *      |Gui |Alt  |          Fn0          |Alt  |Fn0|
+     *      `--------------------------------------------'
+     * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel 
+     */
+    KEYMAP(GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
+           FN8, NO,  NO,  NO,  NO,  NO,  NO,  WH_D,WH_U,RGHT,NO,  FN9, FN10,FN8, \
+           LCTL,NO,  ACL0,ACL1,ACL2,NO,  MS_L,MS_D,MS_U,MS_R,BTN1,NO,  ENT, \
+           LSFT,NO,  NO,  NO,  NO,  BTN3,BTN2,BTN1,FN9, FN10,NO,  RSFT,NO, \
+                LGUI,LALT,          TRNS,               RALT,RGUI),
+#endif
+#if 0
+    /* Layer x: Matias half-qwerty keyboard style[Space]
+     * ,-----------------------------------------------------------.
+     * |  -|  0|  9|  8|  7|  6|  5|  4|  3|  2|  1|   |   |   |Esc|
+     * |-----------------------------------------------------------|
+     * |Backs|  P|  O|  I|  U|  Y|  T|  R|  E|  W|  Q|   |   |Tab  |
+     * |-----------------------------------------------------------|
+     * |Contro|  ;|  L|  K|  J|  H|  G|  F|  D|  S|  A|Con|Control |
+     * |-----------------------------------------------------------|
+     * |Shift   |  /|  .|  ,|  M|  N|  B|  V|  C|  X|  Z|Shift |   |
+     * `-----------------------------------------------------------'
+     *      |Gui |Alt  |          Fn0          |Alt  |Gui|
+     *      `--------------------------------------------'
+     */
+    KEYMAP(MINS,0,   9,   8,   7,   6,   5,   4,   3,   2,   1,   NO,  NO,  NO,  ESC, \
+           BSPC,P,   O,   I,   U,   Y,   T,   R,   E,   W,   Q,   NO,  NO,  TAB, \
+           LCTL,SCLN,L,   K,   J,   H,   G,   F,   D,   S,   A,   RCTL,RCTL, \
+           LSFT,SLSH,DOT, COMM,M,   N,   B,   V,   C,   X,   Z,   RSFT,NO, \
+                LGUI,LALT,          TRNS,               RALT,RGUI),
+#endif
+};
+
+
+
+/* id for user defined functions */
+enum function_id {
+    LSHIFT_LPAREN,
+};
+
+enum macro_id {
+    HELLO,
+    VOLUP,
+    ALT_TAB,
+};
+
+
+/*
+ * Fn action definition
+ */
+#ifdef KEYMAP_SECTION_ENABLE
+const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = {
+#else
+const uint16_t fn_actions[] PROGMEM = {
+#endif
+    [0] = ACTION_DEFAULT_LAYER_SET(0),                // Default layer(not used)
+    [1] = ACTION_LAYER_TAP_TOGGLE(1),                 // HHKB layer(toggle with 5 taps)
+    [2] = ACTION_LAYER_TAP_KEY(2, KC_SLASH),          // Cursor layer with Slash*
+    [3] = ACTION_LAYER_TAP_KEY(3, KC_SCLN),           // Mousekey layer with Semicolon*
+    [4] = ACTION_LAYER_TAP_KEY(4, KC_SPC),            // Mousekey layer with Space
+    [5] = ACTION_LAYER_MOMENTARY(4),                  // Mousekey layer(IJKL)
+    [6] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENT),      // RControl with tap Enter
+    [7] = ACTION_MODS_ONESHOT(MOD_LSFT),              // Oneshot Shift
+    [8] = ACTION_MACRO(ALT_TAB),                      // Application switching
+    [9] = ACTION_MODS_KEY(MOD_LALT, KC_LEFT),
+   [10] = ACTION_MODS_KEY(MOD_LALT, KC_RIGHT),
+
+//  [x] = ACTION_LMOD_TAP_KEY(KC_LCTL, KC_BSPC),        // LControl with tap Backspace
+//  [x] = ACTION_LMOD_TAP_KEY(KC_LCTL, KC_ESC),         // LControl with tap Esc
+//  [x] = ACTION_FUNCTION_TAP(LSHIFT_LPAREN),           // Function: LShift with tap '('
+//  [x] = ACTION_MACRO(HELLO),                          // Macro: say hello
+//  [x] = ACTION_MACRO(VOLUP),                          // Macro: media key
+};
+
+
+/*
+ * Macro definition
+ */
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+    switch (id) {
+        case HELLO:
+            return (record->event.pressed ?
+                    MACRO( I(0), T(H), T(E), T(L), T(L), W(255), T(O), END ) :
+                    MACRO_NONE );
+        case VOLUP:
+            return (record->event.pressed ?
+                    MACRO( D(VOLU), U(VOLU), END ) :
+                    MACRO_NONE );
+        case ALT_TAB:
+            return (record->event.pressed ?
+                    MACRO( D(LALT), D(TAB), END ) :
+                    MACRO( U(TAB), END ));
+    }
+    return MACRO_NONE;
+}
+
+
+
+/*
+ * user defined action function
+ */
+void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+    if (record->event.pressed) dprint("P"); else dprint("R");
+    dprintf("%d", record->tap.count);
+    if (record->tap.interrupted) dprint("i");
+    dprint("\n");
+
+    switch (id) {
+        case LSHIFT_LPAREN:
+            // Shift parentheses example: LShft + tap '('
+            // http://stevelosh.com/blog/2012/10/a-modern-space-cadet/#shift-parentheses
+            // http://geekhack.org/index.php?topic=41989.msg1304899#msg1304899
+            if (record->event.pressed) {
+                if (record->tap.count > 0 && !record->tap.interrupted) {
+                    if (record->tap.interrupted) {
+                        dprint("tap interrupted\n");
+                        register_mods(MOD_BIT(KC_LSHIFT));
+                    }
+                } else {
+                    register_mods(MOD_BIT(KC_LSHIFT));
+                }
+            } else {
+                if (record->tap.count > 0 && !(record->tap.interrupted)) {
+                    add_weak_mods(MOD_BIT(KC_LSHIFT));
+                    send_keyboard_report();
+                    register_code(KC_9);
+                    unregister_code(KC_9);
+                    del_weak_mods(MOD_BIT(KC_LSHIFT));
+                    send_keyboard_report();
+                    record->tap.count = 0;  // ad hoc: cancel tap
+                } else {
+                    unregister_mods(MOD_BIT(KC_LSHIFT));
+                }
+            }
+            break;
+    }
+}
diff --git a/keyboard/hhkb/keymaps/hhkb.c b/keyboard/hhkb/keymaps/hhkb.c
new file mode 100644 (file)
index 0000000..86ad0f5
--- /dev/null
@@ -0,0 +1,95 @@
+/*
+ * HHKB Layout
+ */
+#include "keymap_common.h"
+
+
+#ifdef KEYMAP_SECTION_ENABLE
+const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] __attribute__ ((section (".keymap.keymaps"))) = {
+#else
+const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
+#endif
+    /* Layer 0: Default Layer
+     * ,-----------------------------------------------------------.
+     * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|  \|  `|
+     * |-----------------------------------------------------------|
+     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|Backs|
+     * |-----------------------------------------------------------|
+     * |Contro|  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Enter   |
+     * |-----------------------------------------------------------|
+     * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift |Fn0|
+     * `-----------------------------------------------------------'
+     *       |Alt|Gui  |         Space         |Gui  |Alt|
+     *       `-------------------------------------------'
+     */
+    KEYMAP(ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, BSLS,GRV,   \
+           TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSPC,       \
+           LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,ENT,             \
+           LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,RSFT,FN0,             \
+                LALT,LGUI,          SPC,                RGUI,RALT),
+
+    /* Layer 1: HHKB mode (HHKB Fn)
+     * ,-----------------------------------------------------------.
+     * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+     * |-----------------------------------------------------------|
+     * |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |Backs|
+     * |-----------------------------------------------------------|
+     * |      |VoD|VoU|Mut|   |   |  *|  /|Hom|PgU|Lef|Rig|Enter   |
+     * |-----------------------------------------------------------|
+     * |        |   |   |   |   |   |  +|  -|End|PgD|Dow|      |   |
+     * `-----------------------------------------------------------'
+     *       |   |     |                       |     |   |
+     *       `-------------------------------------------'
+     */
+    KEYMAP(PWR, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL,   \
+           CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS, UP, TRNS, BSPC,      \
+           TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,PENT,            \
+           TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,TRNS,TRNS,            \
+                TRNS,TRNS,          TRNS,               TRNS,TRNS),
+};
+
+
+
+/*
+ * Fn action definition
+ */
+#ifdef KEYMAP_SECTION_ENABLE
+const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = {
+    [0]  = ACTION_LAYER_MOMENTARY(1),
+    [1]  = ACTION_LAYER_MOMENTARY(2),
+    [2]  = ACTION_LAYER_MOMENTARY(3),
+    [3]  = ACTION_LAYER_MOMENTARY(4),
+    [4]  = ACTION_LAYER_MOMENTARY(5),
+    [5]  = ACTION_LAYER_MOMENTARY(6),
+    [6]  = ACTION_LAYER_MOMENTARY(7),
+    [7]  = ACTION_LAYER_TOGGLE(1),
+    [8]  = ACTION_LAYER_TOGGLE(2),
+    [9]  = ACTION_LAYER_TOGGLE(3),
+    [10] = ACTION_LAYER_TAP_TOGGLE(1),
+    [11] = ACTION_LAYER_TAP_TOGGLE(2),
+    [12] = ACTION_LAYER_TAP_TOGGLE(3),
+    [13] = ACTION_LAYER_TAP_KEY(1, KC_A),
+    [14] = ACTION_LAYER_TAP_KEY(2, KC_F),
+    [15] = ACTION_LAYER_TAP_KEY(3, KC_J),
+    [16] = ACTION_LAYER_TAP_KEY(4, KC_SPACE),
+    [17] = ACTION_LAYER_TAP_KEY(5, KC_SCOLON),
+    [18] = ACTION_LAYER_TAP_KEY(6, KC_QUOTE),
+    [19] = ACTION_LAYER_TAP_KEY(7, KC_SLASH),
+    [20] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_SPACE),
+    [21] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_SPACE),
+    [22] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_QUOTE),
+    [23] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENTER),
+    [24] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_ESC),
+    [25] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_BSPACE),
+    [26] = ACTION_MODS_ONESHOT(MOD_LCTL),
+    [27] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_ESC),
+    [28] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_BSPACE),
+    [29] = ACTION_MODS_ONESHOT(MOD_LSFT),
+    [30] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ESC),
+    [31] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_BSPACE),
+};
+#else
+const uint16_t fn_actions[] PROGMEM = {
+    [0]  = ACTION_LAYER_MOMENTARY(1),
+};
+#endif
diff --git a/keyboard/hhkb/keymaps/jp.c b/keyboard/hhkb/keymaps/jp.c
new file mode 100644 (file)
index 0000000..48d0ee7
--- /dev/null
@@ -0,0 +1,50 @@
+/* 
+ * HHKB JP Layout
+ */
+#include "keymap_common.h"
+
+
+#ifdef KEYMAP_SECTION_ENABLE
+const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] __attribute__ ((section (".keymap.keymaps"))) = {
+#else
+const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
+#endif
+    /* Layer 0: Default Layer */
+    KEYMAP_JP(ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, JYEN,BSPC, \
+              TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC, \
+              LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,BSLS,ENT, \
+              LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,RO,  UP,  RSFT, \
+              FN0, ZKHK,LGUI,LALT,MHEN,     SPC,      HENK,KANA,RALT,FN0, LEFT,DOWN,RGHT),
+
+    /* Layer 1: HHKB mode (HHKB Fn)
+     * ,-----------------------------------------------------------.
+     * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+     * |-----------------------------------------------------------|
+     * |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |     |
+     * |------------------------------------------------------`    |
+     * |      |VoD|VoU|Mut|   |   |  *|  /|Hom|PgU|Lef|Rig|   |    |
+     * |-----------------------------------------------------------|
+     * |       |   |   |   |   |   |  +|  -|End|PgD|Dow|   |   |   |
+     * |-----------------------------------------------------------|
+     * |   ||   |   |   |   |         |   |   |   |   ||   |   |   |
+     * `-----------------------------------------------------------'
+     */ 
+    KEYMAP_JP(PWR, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL, \
+              CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS, UP, TRNS, \
+              TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,TRNS,PENT, \
+              TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,TRNS,TRNS,TRNS, \
+              TRNS,TRNS,TRNS,TRNS,TRNS,     TRNS,     TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS),
+};
+
+
+
+/*
+ * Fn action definition
+ */
+#ifdef KEYMAP_SECTION_ENABLE
+const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = {
+#else
+const uint16_t fn_actions[] PROGMEM = {
+#endif
+    [0] = ACTION_LAYER_MOMENTARY(1),
+};
diff --git a/keyboard/hhkb/keymaps/spacefn.c b/keyboard/hhkb/keymaps/spacefn.c
new file mode 100644 (file)
index 0000000..deff920
--- /dev/null
@@ -0,0 +1,116 @@
+/*
+ * SpaceFN
+ * http://geekhack.org/index.php?topic=51069.0
+ */
+#include "keymap_common.h"
+
+
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    /* Layer 0: Default Layer
+     * ,-----------------------------------------------------------.
+     * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|  `|BSp|
+     * |-----------------------------------------------------------|
+     * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \|
+     * |-----------------------------------------------------------|
+     * |Contro|  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Enter   |
+     * |-----------------------------------------------------------|
+     * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift |Fn0|
+     * `-----------------------------------------------------------'
+     *       |Gui|Alt  |         SpaceFN       |Alt  |Gui|
+     *       `-------------------------------------------'
+     */
+    KEYMAP(ESC, 1,   2,   3,   4,   5,   6,   7,   8,   9,   0,   MINS,EQL, GRV, BSPC,  \
+           TAB, Q,   W,   E,   R,   T,   Y,   U,   I,   O,   P,   LBRC,RBRC,BSLS,       \
+           LCTL,A,   S,   D,   F,   G,   H,   J,   K,   L,   SCLN,QUOT,ENT,             \
+           LSFT,Z,   X,   C,   V,   B,   N,   M,   COMM,DOT, SLSH,RSFT,FN0,             \
+                LGUI,LALT,          FN1,                RALT,RGUI),
+
+    /* Layer 1: HHKB mode (HHKB Fn)
+     * ,-----------------------------------------------------------.
+     * |Pwr| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
+     * |-----------------------------------------------------------|
+     * |Caps |   |   |   |   |   |   |   |Psc|Slk|Pus|Up |   |Backs|
+     * |-----------------------------------------------------------|
+     * |      |VoD|VoU|Mut|   |   |  *|  /|Hom|PgU|Lef|Rig|Enter   |
+     * |-----------------------------------------------------------|
+     * |        |   |   |   |   |   |  +|  -|End|PgD|Dow|      |   |
+     * `-----------------------------------------------------------'
+     *       |   |     |                       |     |   |
+     *       `-------------------------------------------'
+     */ 
+    KEYMAP(PWR, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, INS, DEL,   \
+           CAPS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PSCR,SLCK,PAUS, UP, TRNS, BSPC,      \
+           TRNS,VOLD,VOLU,MUTE,TRNS,TRNS,PAST,PSLS,HOME,PGUP,LEFT,RGHT,PENT,            \
+           TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PPLS,PMNS,END, PGDN,DOWN,TRNS,TRNS,            \
+                TRNS,TRNS,          SPC,                TRNS,TRNS),
+
+    /* Layer 2: SpaceFN
+     * ,-----------------------------------------------------------.
+     * |`  | F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|   |Del|
+     * |-----------------------------------------------------------|
+     * |     |   |   |Esc|   |   |   |Hom|Up |End|Psc|Slk|Pau|Ins  |
+     * |-----------------------------------------------------------|
+     * |      |   |   |   |   |   |PgU|Lef|Dow|Rig|   |   |        |
+     * |-----------------------------------------------------------|
+     * |        |   |   |   |   |Spc|PgD|`  |~  |   |   |      |   |
+     * `-----------------------------------------------------------'
+     *       |   |     |                       |     |   |
+     *       `-------------------------------------------'
+     */
+    KEYMAP(GRV, F1,  F2,  F3,  F4,  F5,  F6,  F7,  F8,  F9,  F10, F11, F12, TRNS,DEL,   \
+           TRNS,TRNS,TRNS,ESC, TRNS,TRNS,TRNS,HOME,FN3, END, PSCR,SLCK,PAUS,INS,        \
+           TRNS,TRNS,TRNS,TRNS,TRNS,TRNS,PGUP,LEFT,DOWN,RGHT,TRNS,TRNS,TRNS,            \
+           TRNS,TRNS,TRNS,TRNS,TRNS,SPC, PGDN,GRV, FN2, TRNS,TRNS,TRNS,NO,              \
+                TRNS,TRNS,          TRNS,               TRNS,TRNS),
+};
+
+
+/*
+ * user defined action function
+ */
+enum function_id {
+    CTRL_SPACE_I,       // Ctrl + Up(SpaceFN) -> PgUp
+};
+
+void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+#   define MODS_CTRL_MASK   (MOD_BIT(KC_LCTRL)|MOD_BIT(KC_RCTRL))
+    static uint8_t ctrl_space_i_prev_ctrl;
+
+    switch (id) {
+        // Ctrl + Up(SpaceFN) -> PgUp
+        case CTRL_SPACE_I:
+            ctrl_space_i_prev_ctrl = get_mods()&MODS_CTRL_MASK;
+            if (record->event.pressed) {
+                if (ctrl_space_i_prev_ctrl) {
+                    del_mods(ctrl_space_i_prev_ctrl);   // remove Ctrl
+                    add_key(KC_PGUP);
+                    send_keyboard_report(); // send PgUp without Ctrl
+                    add_mods(ctrl_space_i_prev_ctrl);   // return Ctrl but not sent
+                } else {
+                    add_key(KC_UP);
+                    send_keyboard_report();
+                }
+            } else {
+                if (ctrl_space_i_prev_ctrl) {
+                    del_key(KC_PGUP);
+                    send_keyboard_report();
+                } else {
+                    del_key(KC_UP);
+                    send_keyboard_report();
+                }
+            }
+            break;
+    }
+}
+
+
+/*
+ * Fn action definition
+ */
+const uint16_t PROGMEM fn_actions[] = {
+    [0] = ACTION_LAYER_MOMENTARY(1),
+    [1] = ACTION_LAYER_TAP_KEY(2, KC_SPACE),
+    [2] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV),    // tilde
+    [3] = ACTION_FUNCTION(CTRL_SPACE_I),        // Ctrl + Up(SpaceFN) -> PgUp
+};
index 8bd44100b76837cf4b6f6ca9f92ba12a917aa786..21ba261a2315b68a719f233bda576141f2ddfec5 100644 (file)
@@ -54,9 +54,9 @@ SRC = hhkb_qmk.c \
       matrix.c
 
 ifdef KEYMAP
-    SRC := keymaps/keymap_$(KEYMAP).c $(SRC)
+    SRC := keymaps/keymaps/$(KEYMAP).c $(SRC)
 else
-    SRC := keymaps/keymap_default.c $(SRC)
+    SRC := keymaps/keymaps/default.c $(SRC)
 endif
 
 CONFIG_H = config.h
index 606025c411c486eee95bfe5506f0577767e53f68..389407b3aaf3d5d73c20afffea918855ff897b38 100644 (file)
@@ -171,10 +171,10 @@ Depending on which keymap you would like to use, you will have to compile slight
 To build with the default keymap, simply run `make`.
 
 ### Other Keymaps
-Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `keymap_<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
+Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a file in the keymaps folder named `<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
 
 To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like:
 ```
 $ make KEYMAP=[default|jack|<name>]
 ```
-Keymaps follow the format **__keymap\_\<name\>.c__** and are stored in the `keymaps` folder.
+Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
diff --git a/keyboard/hhkb_qmk/keymaps/default.c b/keyboard/hhkb_qmk/keymaps/default.c
new file mode 100644 (file)
index 0000000..bcd8ead
--- /dev/null
@@ -0,0 +1,78 @@
+/*  -*-  eval: (turn-on-orgtbl); -*-
+ * default HHKB Layout
+ */
+#include "hhkb_qmk.h"
+
+#define BASE 0
+#define HHKB 1
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+    /* BASE Level: Default Layer
+     |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
+     | Esc   | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | -     | =   | \     | ` |
+     |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
+     | Tab   | Q | W | E | R | T | Y | U | I | O | P | [     | ]   | Backs |   |
+     |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
+     | Cont  | A | S | D | F | G | H | J | K | L | ; | '     | Ent |       |   |
+     |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
+     | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Fn0 |       |   |
+     |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
+
+            |------+------+-----------------------+------+------|
+            | LAlt | LGUI | ******* Space ******* | RGUI | RAlt |
+            |------+------+-----------------------+------+------|
+    */
+
+  [BASE] = KEYMAP(  //  default layer
+  KC_ESC,   KC_1,  KC_2,  KC_3,  KC_4,  KC_5,  KC_6,  KC_7,  KC_8,     KC_9,    KC_0,     KC_MINS,  KC_EQL,    KC_BSLS,  KC_GRV, \
+  KC_TAB,   KC_Q,  KC_W,  KC_E,  KC_R,  KC_T,  KC_Y,  KC_U,  KC_I,     KC_O,    KC_P,     KC_LBRC,  KC_RBRC,   KC_BSPC,          \
+  KC_LCTL,  KC_A,  KC_S,  KC_D,  KC_F,  KC_G,  KC_H,  KC_J,  KC_K,     KC_L,    KC_SCLN,  KC_QUOT,  KC_ENT,                      \
+  KC_LSFT,  KC_Z,  KC_X,  KC_C,  KC_V,  KC_B,  KC_N,  KC_M,  KC_COMM,  KC_DOT,  KC_SLSH,  KC_RSFT,  MO(HHKB),                    \
+                    KC_LALT,  KC_LGUI,  /*        */ KC_SPC,      KC_RGUI,  KC_RALT),
+
+
+
+    /* Layer HHKB: HHKB mode (HHKB Fn)
+      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+      | Pwr  | F1  | F2  | F3  | F4 | F5 | F6 | F7 | F8  | F9  | F10 | F11 | F12   | Ins   | Del |
+      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+      | Caps |     |     |     |    |    |    |    | Psc | Slk | Pus | Up  |       | Backs |     |
+      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+      |      | VoD | VoU | Mut |    |    | *  | /  | Hom | PgU | Lef | Rig | Enter |       |     |
+      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+      |      |     |     |     |    |    | +  | -  | End | PgD | Dow |     |       |       |     |
+      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+
+                 |------+------+----------------------+------+------+
+                 | **** | **** | ******************** | **** | **** |
+                 |------+------+----------------------+------+------+
+
+     */
+
+  [HHKB] = KEYMAP(
+  KC_PWR,   KC_F1,    KC_F2,    KC_F3,    KC_F4,    KC_F5,    KC_F6,    KC_F7,    KC_F8,    KC_F9,    KC_F10,   KC_F11,   KC_F12,   KC_INS,   KC_DEL, \
+  KC_CAPS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_PSCR,  KC_SLCK,  KC_PAUS,  KC_UP,    KC_TRNS,  KC_BSPC,          \
+  KC_TRNS,  KC_VOLD,  KC_VOLU,  KC_MUTE,  KC_TRNS,  KC_TRNS,  KC_PAST,  KC_PSLS,  KC_HOME,  KC_PGUP,  KC_LEFT,  KC_RGHT,  KC_PENT,                    \
+  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_PPLS,  KC_PMNS,  KC_END,   KC_PGDN,  KC_DOWN,  KC_TRNS,  KC_TRNS,                    \
+                     KC_TRNS, KC_TRNS,           KC_TRNS,                KC_TRNS, KC_TRNS)};
+
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+          if (record->event.pressed) {
+            register_code(KC_RSFT);
+          } else {
+            unregister_code(KC_RSFT);
+          }
+        break;
+      }
+    return MACRO_NONE;
+};
diff --git a/keyboard/hhkb_qmk/keymaps/keymap_default.c b/keyboard/hhkb_qmk/keymaps/keymap_default.c
deleted file mode 100644 (file)
index bcd8ead..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/*  -*-  eval: (turn-on-orgtbl); -*-
- * default HHKB Layout
- */
-#include "hhkb_qmk.h"
-
-#define BASE 0
-#define HHKB 1
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-    /* BASE Level: Default Layer
-     |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
-     | Esc   | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | -     | =   | \     | ` |
-     |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
-     | Tab   | Q | W | E | R | T | Y | U | I | O | P | [     | ]   | Backs |   |
-     |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
-     | Cont  | A | S | D | F | G | H | J | K | L | ; | '     | Ent |       |   |
-     |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
-     | Shift | Z | X | C | V | B | N | M | , | . | / | Shift | Fn0 |       |   |
-     |-------+---+---+---+---+---+---+---+---+---+---+-------+-----+-------+---|
-
-            |------+------+-----------------------+------+------|
-            | LAlt | LGUI | ******* Space ******* | RGUI | RAlt |
-            |------+------+-----------------------+------+------|
-    */
-
-  [BASE] = KEYMAP(  //  default layer
-  KC_ESC,   KC_1,  KC_2,  KC_3,  KC_4,  KC_5,  KC_6,  KC_7,  KC_8,     KC_9,    KC_0,     KC_MINS,  KC_EQL,    KC_BSLS,  KC_GRV, \
-  KC_TAB,   KC_Q,  KC_W,  KC_E,  KC_R,  KC_T,  KC_Y,  KC_U,  KC_I,     KC_O,    KC_P,     KC_LBRC,  KC_RBRC,   KC_BSPC,          \
-  KC_LCTL,  KC_A,  KC_S,  KC_D,  KC_F,  KC_G,  KC_H,  KC_J,  KC_K,     KC_L,    KC_SCLN,  KC_QUOT,  KC_ENT,                      \
-  KC_LSFT,  KC_Z,  KC_X,  KC_C,  KC_V,  KC_B,  KC_N,  KC_M,  KC_COMM,  KC_DOT,  KC_SLSH,  KC_RSFT,  MO(HHKB),                    \
-                    KC_LALT,  KC_LGUI,  /*        */ KC_SPC,      KC_RGUI,  KC_RALT),
-
-
-
-    /* Layer HHKB: HHKB mode (HHKB Fn)
-      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
-      | Pwr  | F1  | F2  | F3  | F4 | F5 | F6 | F7 | F8  | F9  | F10 | F11 | F12   | Ins   | Del |
-      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
-      | Caps |     |     |     |    |    |    |    | Psc | Slk | Pus | Up  |       | Backs |     |
-      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
-      |      | VoD | VoU | Mut |    |    | *  | /  | Hom | PgU | Lef | Rig | Enter |       |     |
-      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
-      |      |     |     |     |    |    | +  | -  | End | PgD | Dow |     |       |       |     |
-      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
-
-                 |------+------+----------------------+------+------+
-                 | **** | **** | ******************** | **** | **** |
-                 |------+------+----------------------+------+------+
-
-     */
-
-  [HHKB] = KEYMAP(
-  KC_PWR,   KC_F1,    KC_F2,    KC_F3,    KC_F4,    KC_F5,    KC_F6,    KC_F7,    KC_F8,    KC_F9,    KC_F10,   KC_F11,   KC_F12,   KC_INS,   KC_DEL, \
-  KC_CAPS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_PSCR,  KC_SLCK,  KC_PAUS,  KC_UP,    KC_TRNS,  KC_BSPC,          \
-  KC_TRNS,  KC_VOLD,  KC_VOLU,  KC_MUTE,  KC_TRNS,  KC_TRNS,  KC_PAST,  KC_PSLS,  KC_HOME,  KC_PGUP,  KC_LEFT,  KC_RGHT,  KC_PENT,                    \
-  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_PPLS,  KC_PMNS,  KC_END,   KC_PGDN,  KC_DOWN,  KC_TRNS,  KC_TRNS,                    \
-                     KC_TRNS, KC_TRNS,           KC_TRNS,                KC_TRNS, KC_TRNS)};
-
-
-const uint16_t PROGMEM fn_actions[] = {
-
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-          if (record->event.pressed) {
-            register_code(KC_RSFT);
-          } else {
-            unregister_code(KC_RSFT);
-          }
-        break;
-      }
-    return MACRO_NONE;
-};
diff --git a/keyboard/hhkb_qmk/keymaps/keymap_lxol.c b/keyboard/hhkb_qmk/keymaps/keymap_lxol.c
deleted file mode 100644 (file)
index 3256fda..0000000
+++ /dev/null
@@ -1,208 +0,0 @@
-/*  -*-  eval: (turn-on-orgtbl); -*-
- * lxol HHKB Layout
- */
-#include "hhkb_qmk.h"
-
-#define BASE 0
-#define WIN 1
-#define HHKB 2
-#define RGUILEV 3
-#define LGUILEV 4
-#define RALTLEV 5
-#define LALTLEV 6
-
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-
-    /* Layer 0: Default Layer
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Esc    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0   | -     | =        | \     | ` |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Tab    | Q | W | E | R | T | Y | U | I | O | P   | [     | ]        | Backs |   |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Contro | A | S | D | F | G | H | J | K | L | ;   | '     | RCtl/Ent |       |   |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Shift  | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0      |       |   |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-
-                 |------+------+-------+------+------|
-                 | LAlt | LGUI | Space | RGUI | RAlt |
-                 |------+------+-------+------+------|
-    */
-
-  [BASE] = KEYMAP(  // layer 0 : default
-
-
-  KC_ESC,   KC_1,              KC_2,              KC_3,  KC_4,  KC_5,  KC_6,  KC_7,  KC_8,     KC_9,              KC_0,                 KC_MINS,  KC_EQL,    KC_BSLS,  KC_GRV,  \
-  KC_TAB,   KC_Q,              KC_W,              KC_E,  KC_R,  KC_T,  KC_Y,  KC_U,  KC_I,     KC_O,              KC_P,                 KC_LBRC,  KC_RBRC,   KC_BSPC,  \
-  KC_LCTL,  LT(LALTLEV,KC_A),  LT(LGUILEV,KC_S),  KC_D,  KC_F,  KC_G,  KC_H,  KC_J,  KC_K,     LT(RGUILEV,KC_L),  LT(RALTLEV,KC_SCLN),  KC_QUOT,  KC_FN0,    \
-  KC_LSFT,  KC_Z,              KC_X,              KC_C,  KC_V,  KC_B,  KC_N,  KC_M,  KC_COMM,  KC_DOT,            KC_SLSH,              KC_RSFT,  MO(HHKB),  \
-      KC_LALT, KC_LGUI, KC_SPC,                KC_RGUI, KC_RALT),
-
-
-
-    /* Layer 1: HHKB mode (HHKB Fn)
-      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
-      | Pwr  | F1  | F2  | F3  | F4 | F5 | F6 | F7 | F8  | F9  | F10 | F11 | F12   | Ins   | Del |
-      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
-      | Caps |     |     |     |    |    |    |    | Psc | Slk | Pus | Up  |       | Backs |     |
-      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
-      |      | VoD | VoU | Mut |    |    | *  | /  | Hom | PgU | Lef | Rig | Enter |       |     |
-      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
-      |      |     |     |     |    |    | +  | -  | End | PgD | Dow |     |       |       |     |
-      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
-
-                      |---+---+---+---+---|
-                      |   |   |   |   |   |
-                      |---+---+---+---+---|
-     */
-
-  [HHKB] = KEYMAP(
-  KC_PWR,   KC_F1,    KC_F2,    KC_F3,    KC_F4,    KC_F5,    KC_F6,    KC_F7,    KC_F8,    KC_F9,    KC_F10,   KC_F11,   KC_F12,   KC_INS,   KC_DEL, \
-  KC_CAPS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_PSCR,  KC_SLCK,  KC_PAUS,  KC_UP,    KC_TRNS,  KC_BSPC,          \
-  KC_TRNS,  KC_VOLD,  KC_VOLU,  KC_MUTE,  KC_TRNS,  KC_TRNS,  KC_PAST,  KC_PSLS,  KC_HOME,  KC_PGUP,  KC_LEFT,  KC_RGHT,  KC_PENT,                    \
-  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_PPLS,  KC_PMNS,  KC_END,   KC_PGDN,  KC_DOWN,  KC_TRNS,  KC_TRNS,                    \
-  KC_TRNS, KC_TRNS,           KC_TRNS,                KC_TRNS, KC_TRNS),
-
-
-    /* Layer LGUI: All keys with RGUI modifier
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Esc    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0   | -     | =        | \     | ` |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Tab    | Q | W | E | R | T | Y | U | I | O | P   | [     | ]        | Backs |   |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Contro | A | S | D | F | G | H | J | K |   | ;   | '     | RCtl/Ent |       |   |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Shift  | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0      |       |   |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-
-                 |------+------+-------+------+------|
-                 | LAlt | LGUI | Space | RGUI | RAlt |
-                 |------+------+-------+------+------|
-    */
-
-  [RGUILEV] = KEYMAP(  // Right GUI layer  by KC_L
-
-  RGUI(KC_ESC),   RGUI(KC_1),  RGUI(KC_2),  RGUI(KC_3),  RGUI(KC_4),  RGUI(KC_5),  RGUI(KC_6),  RGUI(KC_7),  RGUI(KC_8),     RGUI(KC_9),    RGUI(KC_0),     RGUI(KC_MINS),  RGUI(KC_EQL),   RGUI(KC_BSLS),  RGUI(KC_GRV),  \
-  RGUI(KC_TAB),   RGUI(KC_Q),  RGUI(KC_W),  RGUI(KC_E),  RGUI(KC_R),  RGUI(KC_T),  RGUI(KC_Y),  RGUI(KC_U),  RGUI(KC_I),     RGUI(KC_O),    RGUI(KC_P),     RGUI(KC_LBRC),  RGUI(KC_RBRC),  RGUI(KC_BSPC),  \
-  RGUI(KC_LCTL),  RGUI(KC_A),  RGUI(KC_S),  RGUI(KC_D),  RGUI(KC_F),  RGUI(KC_G),  RGUI(KC_H),  RGUI(KC_J),  RGUI(KC_K),     KC_TRNS,       KC_TRNS,        RGUI(KC_QUOT),  KC_FN0,         \
-  RGUI(KC_LSFT),  RGUI(KC_Z),  RGUI(KC_X),  RGUI(KC_C),  RGUI(KC_V),  RGUI(KC_B),  RGUI(KC_N),  RGUI(KC_M),  RGUI(KC_COMM),  RGUI(KC_DOT),  RGUI(KC_SLSH),  RGUI(KC_RSFT),  KC_TRNS,        \
-      KC_LALT, KC_LGUI, RGUI(KC_SPC),               KC_RGUI, KC_RALT),
-
-    /* Layer LGUI: All keys with LGUI modifier
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Esc    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0   | -     | =        | \     | ` |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Tab    | Q | W | E | R | T | Y | U | I | O | P   | [     | ]        | Backs |   |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Contro | A | S | D | F | G | H | J | K |   | ;   | '     | RCtl/Ent |       |   |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Shift  | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0      |       |   |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-
-                 |------+------+-------+------+------|
-                 | LAlt | LGUI | Space | LGUI | RAlt |
-                 |------+------+-------+------+------|
-    */
-
-  [LGUILEV] = KEYMAP(  // Right GUI layer  by KC_L
-
-  LGUI(KC_ESC),   LGUI(KC_1),  LGUI(KC_2),  LGUI(KC_3),  LGUI(KC_4),  LGUI(KC_5),  LGUI(KC_6),  LGUI(KC_7),  LGUI(KC_8),     LGUI(KC_9),    LGUI(KC_0),     LGUI(KC_MINS),  LGUI(KC_EQL),   LGUI(KC_BSLS),  LGUI(KC_GRV),  \
-  LGUI(KC_TAB),   LGUI(KC_Q),  LGUI(KC_W),  LGUI(KC_E),  LGUI(KC_R),  LGUI(KC_T),  LGUI(KC_Y),  LGUI(KC_U),  LGUI(KC_I),     LGUI(KC_O),    LGUI(KC_P),     LGUI(KC_LBRC),  LGUI(KC_RBRC),  LGUI(KC_BSPC),  \
-  LGUI(KC_LCTL),  KC_TRNS,     KC_TRNS,     LGUI(KC_D),  LGUI(KC_F),  LGUI(KC_G),  LGUI(KC_H),  LGUI(KC_J),  LGUI(KC_K),     LGUI(KC_L),    LGUI(KC_SCLN),  LGUI(KC_QUOT),  KC_FN0,         \
-  KC_LSFT,        LGUI(KC_Z),  LGUI(KC_X),  LGUI(KC_C),  LGUI(KC_V),  LGUI(KC_B),  LGUI(KC_N),  LGUI(KC_M),  LGUI(KC_COMM),  LGUI(KC_DOT),  LGUI(KC_SLSH),  KC_RSFT,        KC_TRNS,        \
-      KC_LALT, KC_LGUI, LGUI(KC_SPC),               KC_LGUI, KC_RALT),
-
-    /* Layer LALT: All keys with RALT modifier
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Esc    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0   | -     | =        | \     | ` |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Tab    | Q | W | E | R | T | Y | U | I | O | P   | [     | ]        | Backs |   |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Contro | A | S | D | F | G | H | J | K |   | ;   | '     | RCtl/Ent |       |   |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Shift  | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0      |       |   |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-
-                 |------+------+-------+------+------|
-                 | LAlt | LGUI | Space | RGUI | RAlt |
-                 |------+------+-------+------+------|
-    */
-
-  [RALTLEV] = KEYMAP(  // Right ALT layer  by KC_L
-
-  RALT(KC_ESC),   RALT(KC_1),  RALT(KC_2),  RALT(KC_3),  RALT(KC_4),  RALT(KC_5),  RALT(KC_6),  RALT(KC_7),  RALT(KC_8),     RALT(KC_9),    RALT(KC_0),     RALT(KC_MINS),  RALT(KC_EQL),   RALT(KC_BSLS),  RALT(KC_GRV),  \
-  RALT(KC_TAB),   RALT(KC_Q),  RALT(KC_W),  RALT(KC_E),  RALT(KC_R),  RALT(KC_T),  RALT(KC_Y),  RALT(KC_U),  RALT(KC_I),     RALT(KC_O),    RALT(KC_P),     RALT(KC_LBRC),  RALT(KC_RBRC),  RALT(KC_BSPC),  \
-  RALT(KC_LCTL),  RALT(KC_A),  RALT(KC_S),  RALT(KC_D),  RALT(KC_F),  RALT(KC_G),  RALT(KC_H),  RALT(KC_J),  RALT(KC_K),     KC_TRNS,       KC_TRNS,        RALT(KC_QUOT),  KC_FN0,         \
-  RALT(KC_LSFT),  RALT(KC_Z),  RALT(KC_X),  RALT(KC_C),  RALT(KC_V),  RALT(KC_B),  RALT(KC_N),  RALT(KC_M),  RALT(KC_COMM),  RALT(KC_DOT),  RALT(KC_SLSH),  RALT(KC_RSFT),  KC_TRNS,        \
-      KC_LALT, KC_LGUI, RALT(KC_SPC),               KC_RGUI, KC_RALT),
-
-    /* Layer LALT: All keys with LALT modifier
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Esc    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0   | -     | =        | \     | ` |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Tab    | Q | W | E | R | T | Y | U | I | O | P   | [     | ]        | Backs |   |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Contro | A | S | D | F | G | H | J | K |   | ;   | '     | RCtl/Ent |       |   |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-     | Shift  | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0      |       |   |
-     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
-
-                 |------+------+-------+------+------|
-                 | LAlt | LGUI | Space | LGUI | RAlt |
-                 |------+------+-------+------+------|
-    */
-
-  [LALTLEV] = KEYMAP(  // Right ALT layer  by KC_L
-
-  LALT(KC_ESC),   LALT(KC_1),  LALT(KC_2),  LALT(KC_3),  LALT(KC_4),  LALT(KC_5),  LALT(KC_6),  LALT(KC_7),  LALT(KC_8),     LALT(KC_9),    LALT(KC_0),     LALT(KC_MINS),  LALT(KC_EQL),   LALT(KC_BSLS),  LALT(KC_GRV),  \
-  LALT(KC_TAB),   LALT(KC_Q),  LALT(KC_W),  LALT(KC_E),  LALT(KC_R),  LALT(KC_T),  LALT(KC_Y),  LALT(KC_U),  LALT(KC_I),     LALT(KC_O),    LALT(KC_P),     LALT(KC_LBRC),  LALT(KC_RBRC),  LALT(KC_BSPC),  \
-  LALT(KC_LCTL),  KC_TRNS,     KC_TRNS,     LALT(KC_D),  LALT(KC_F),  LALT(KC_G),  LALT(KC_H),  LALT(KC_J),  LALT(KC_K),     LALT(KC_L),    LALT(KC_SCLN),  LALT(KC_QUOT),  KC_FN0,         \
-  KC_LSFT,        LALT(KC_Z),  LALT(KC_X),  LALT(KC_C),  LALT(KC_V),  LALT(KC_B),  LALT(KC_N),  LALT(KC_M),  LALT(KC_COMM),  LALT(KC_DOT),  LALT(KC_SLSH),  KC_RSFT,        KC_TRNS,        \
-      KC_LALT, KC_LGUI, LALT(KC_SPC),               KC_LGUI, KC_RALT),
-
-
-    /* Layer WIN: Win layer
-     |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
-     | Esc    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | -     | =        | \     | ` |
-     |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
-     | Tab    | Q | W | E | R | T | Y | U | I | O | P | [     | ]        | Backs |   |
-     |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
-     | Contro | A | S | D | F | G | H | J | K | L | ; | '     | RCtl/Ent |       |   |
-     |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
-     | Shift  | Z | X | C | V | B | N | M | , | . | / | Shift | Fn0      |       |   |
-     |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
-
-                 |------+------+-------+------+------|
-                 | LGui | LAlt | Space | RGui | Ralt |
-                 |------+------+-------+------+------|
-    */
-
-  [WIN] = KEYMAP(  // BASE level with swapped GUI/ALT
-
-
-  KC_ESC,   KC_1,              KC_2,              KC_3,  KC_4,  KC_5,  KC_6,  KC_7,  KC_8,     KC_9,              KC_0,                 KC_MINS,  KC_EQL,    KC_BSLS,  KC_GRV,  \
-  KC_TAB,   KC_Q,              KC_W,              KC_E,  KC_R,  KC_T,  KC_Y,  KC_U,  KC_I,     KC_O,              KC_P,                 KC_LBRC,  KC_RBRC,   KC_BSPC,  \
-  KC_LCTL,  LT(LGUILEV,KC_A),  LT(LALTLEV,KC_S),  KC_D,  KC_F,  KC_G,  KC_H,  KC_J,  KC_K,     LT(RALTLEV,KC_L),  LT(RGUILEV,KC_SCLN),  KC_QUOT,  KC_FN0,    \
-  KC_LSFT,  KC_Z,              KC_X,              KC_C,  KC_V,  KC_B,  KC_N,  KC_M,  KC_COMM,  KC_DOT,            KC_SLSH,              KC_RSFT,  MO(HHKB),  \
-                 KC_RGUI, KC_RALT, KC_SPC,                KC_RALT, KC_RGUI)};
-
-
-const uint16_t PROGMEM fn_actions[] = {
-    [0] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENT)      // RControl with tap Enter*
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-          if (record->event.pressed) {
-            register_code(KC_RSFT);
-          } else {
-            unregister_code(KC_RSFT);
-          }
-        break;
-      }
-    return MACRO_NONE;
-};
diff --git a/keyboard/hhkb_qmk/keymaps/lxol.c b/keyboard/hhkb_qmk/keymaps/lxol.c
new file mode 100644 (file)
index 0000000..3256fda
--- /dev/null
@@ -0,0 +1,208 @@
+/*  -*-  eval: (turn-on-orgtbl); -*-
+ * lxol HHKB Layout
+ */
+#include "hhkb_qmk.h"
+
+#define BASE 0
+#define WIN 1
+#define HHKB 2
+#define RGUILEV 3
+#define LGUILEV 4
+#define RALTLEV 5
+#define LALTLEV 6
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+    /* Layer 0: Default Layer
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Esc    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0   | -     | =        | \     | ` |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Tab    | Q | W | E | R | T | Y | U | I | O | P   | [     | ]        | Backs |   |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Contro | A | S | D | F | G | H | J | K | L | ;   | '     | RCtl/Ent |       |   |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Shift  | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0      |       |   |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+
+                 |------+------+-------+------+------|
+                 | LAlt | LGUI | Space | RGUI | RAlt |
+                 |------+------+-------+------+------|
+    */
+
+  [BASE] = KEYMAP(  // layer 0 : default
+
+
+  KC_ESC,   KC_1,              KC_2,              KC_3,  KC_4,  KC_5,  KC_6,  KC_7,  KC_8,     KC_9,              KC_0,                 KC_MINS,  KC_EQL,    KC_BSLS,  KC_GRV,  \
+  KC_TAB,   KC_Q,              KC_W,              KC_E,  KC_R,  KC_T,  KC_Y,  KC_U,  KC_I,     KC_O,              KC_P,                 KC_LBRC,  KC_RBRC,   KC_BSPC,  \
+  KC_LCTL,  LT(LALTLEV,KC_A),  LT(LGUILEV,KC_S),  KC_D,  KC_F,  KC_G,  KC_H,  KC_J,  KC_K,     LT(RGUILEV,KC_L),  LT(RALTLEV,KC_SCLN),  KC_QUOT,  KC_FN0,    \
+  KC_LSFT,  KC_Z,              KC_X,              KC_C,  KC_V,  KC_B,  KC_N,  KC_M,  KC_COMM,  KC_DOT,            KC_SLSH,              KC_RSFT,  MO(HHKB),  \
+      KC_LALT, KC_LGUI, KC_SPC,                KC_RGUI, KC_RALT),
+
+
+
+    /* Layer 1: HHKB mode (HHKB Fn)
+      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+      | Pwr  | F1  | F2  | F3  | F4 | F5 | F6 | F7 | F8  | F9  | F10 | F11 | F12   | Ins   | Del |
+      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+      | Caps |     |     |     |    |    |    |    | Psc | Slk | Pus | Up  |       | Backs |     |
+      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+      |      | VoD | VoU | Mut |    |    | *  | /  | Hom | PgU | Lef | Rig | Enter |       |     |
+      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+      |      |     |     |     |    |    | +  | -  | End | PgD | Dow |     |       |       |     |
+      |------+-----+-----+-----+----+----+----+----+-----+-----+-----+-----+-------+-------+-----|
+
+                      |---+---+---+---+---|
+                      |   |   |   |   |   |
+                      |---+---+---+---+---|
+     */
+
+  [HHKB] = KEYMAP(
+  KC_PWR,   KC_F1,    KC_F2,    KC_F3,    KC_F4,    KC_F5,    KC_F6,    KC_F7,    KC_F8,    KC_F9,    KC_F10,   KC_F11,   KC_F12,   KC_INS,   KC_DEL, \
+  KC_CAPS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_PSCR,  KC_SLCK,  KC_PAUS,  KC_UP,    KC_TRNS,  KC_BSPC,          \
+  KC_TRNS,  KC_VOLD,  KC_VOLU,  KC_MUTE,  KC_TRNS,  KC_TRNS,  KC_PAST,  KC_PSLS,  KC_HOME,  KC_PGUP,  KC_LEFT,  KC_RGHT,  KC_PENT,                    \
+  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_PPLS,  KC_PMNS,  KC_END,   KC_PGDN,  KC_DOWN,  KC_TRNS,  KC_TRNS,                    \
+  KC_TRNS, KC_TRNS,           KC_TRNS,                KC_TRNS, KC_TRNS),
+
+
+    /* Layer LGUI: All keys with RGUI modifier
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Esc    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0   | -     | =        | \     | ` |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Tab    | Q | W | E | R | T | Y | U | I | O | P   | [     | ]        | Backs |   |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Contro | A | S | D | F | G | H | J | K |   | ;   | '     | RCtl/Ent |       |   |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Shift  | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0      |       |   |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+
+                 |------+------+-------+------+------|
+                 | LAlt | LGUI | Space | RGUI | RAlt |
+                 |------+------+-------+------+------|
+    */
+
+  [RGUILEV] = KEYMAP(  // Right GUI layer  by KC_L
+
+  RGUI(KC_ESC),   RGUI(KC_1),  RGUI(KC_2),  RGUI(KC_3),  RGUI(KC_4),  RGUI(KC_5),  RGUI(KC_6),  RGUI(KC_7),  RGUI(KC_8),     RGUI(KC_9),    RGUI(KC_0),     RGUI(KC_MINS),  RGUI(KC_EQL),   RGUI(KC_BSLS),  RGUI(KC_GRV),  \
+  RGUI(KC_TAB),   RGUI(KC_Q),  RGUI(KC_W),  RGUI(KC_E),  RGUI(KC_R),  RGUI(KC_T),  RGUI(KC_Y),  RGUI(KC_U),  RGUI(KC_I),     RGUI(KC_O),    RGUI(KC_P),     RGUI(KC_LBRC),  RGUI(KC_RBRC),  RGUI(KC_BSPC),  \
+  RGUI(KC_LCTL),  RGUI(KC_A),  RGUI(KC_S),  RGUI(KC_D),  RGUI(KC_F),  RGUI(KC_G),  RGUI(KC_H),  RGUI(KC_J),  RGUI(KC_K),     KC_TRNS,       KC_TRNS,        RGUI(KC_QUOT),  KC_FN0,         \
+  RGUI(KC_LSFT),  RGUI(KC_Z),  RGUI(KC_X),  RGUI(KC_C),  RGUI(KC_V),  RGUI(KC_B),  RGUI(KC_N),  RGUI(KC_M),  RGUI(KC_COMM),  RGUI(KC_DOT),  RGUI(KC_SLSH),  RGUI(KC_RSFT),  KC_TRNS,        \
+      KC_LALT, KC_LGUI, RGUI(KC_SPC),               KC_RGUI, KC_RALT),
+
+    /* Layer LGUI: All keys with LGUI modifier
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Esc    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0   | -     | =        | \     | ` |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Tab    | Q | W | E | R | T | Y | U | I | O | P   | [     | ]        | Backs |   |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Contro | A | S | D | F | G | H | J | K |   | ;   | '     | RCtl/Ent |       |   |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Shift  | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0      |       |   |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+
+                 |------+------+-------+------+------|
+                 | LAlt | LGUI | Space | LGUI | RAlt |
+                 |------+------+-------+------+------|
+    */
+
+  [LGUILEV] = KEYMAP(  // Right GUI layer  by KC_L
+
+  LGUI(KC_ESC),   LGUI(KC_1),  LGUI(KC_2),  LGUI(KC_3),  LGUI(KC_4),  LGUI(KC_5),  LGUI(KC_6),  LGUI(KC_7),  LGUI(KC_8),     LGUI(KC_9),    LGUI(KC_0),     LGUI(KC_MINS),  LGUI(KC_EQL),   LGUI(KC_BSLS),  LGUI(KC_GRV),  \
+  LGUI(KC_TAB),   LGUI(KC_Q),  LGUI(KC_W),  LGUI(KC_E),  LGUI(KC_R),  LGUI(KC_T),  LGUI(KC_Y),  LGUI(KC_U),  LGUI(KC_I),     LGUI(KC_O),    LGUI(KC_P),     LGUI(KC_LBRC),  LGUI(KC_RBRC),  LGUI(KC_BSPC),  \
+  LGUI(KC_LCTL),  KC_TRNS,     KC_TRNS,     LGUI(KC_D),  LGUI(KC_F),  LGUI(KC_G),  LGUI(KC_H),  LGUI(KC_J),  LGUI(KC_K),     LGUI(KC_L),    LGUI(KC_SCLN),  LGUI(KC_QUOT),  KC_FN0,         \
+  KC_LSFT,        LGUI(KC_Z),  LGUI(KC_X),  LGUI(KC_C),  LGUI(KC_V),  LGUI(KC_B),  LGUI(KC_N),  LGUI(KC_M),  LGUI(KC_COMM),  LGUI(KC_DOT),  LGUI(KC_SLSH),  KC_RSFT,        KC_TRNS,        \
+      KC_LALT, KC_LGUI, LGUI(KC_SPC),               KC_LGUI, KC_RALT),
+
+    /* Layer LALT: All keys with RALT modifier
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Esc    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0   | -     | =        | \     | ` |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Tab    | Q | W | E | R | T | Y | U | I | O | P   | [     | ]        | Backs |   |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Contro | A | S | D | F | G | H | J | K |   | ;   | '     | RCtl/Ent |       |   |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Shift  | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0      |       |   |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+
+                 |------+------+-------+------+------|
+                 | LAlt | LGUI | Space | RGUI | RAlt |
+                 |------+------+-------+------+------|
+    */
+
+  [RALTLEV] = KEYMAP(  // Right ALT layer  by KC_L
+
+  RALT(KC_ESC),   RALT(KC_1),  RALT(KC_2),  RALT(KC_3),  RALT(KC_4),  RALT(KC_5),  RALT(KC_6),  RALT(KC_7),  RALT(KC_8),     RALT(KC_9),    RALT(KC_0),     RALT(KC_MINS),  RALT(KC_EQL),   RALT(KC_BSLS),  RALT(KC_GRV),  \
+  RALT(KC_TAB),   RALT(KC_Q),  RALT(KC_W),  RALT(KC_E),  RALT(KC_R),  RALT(KC_T),  RALT(KC_Y),  RALT(KC_U),  RALT(KC_I),     RALT(KC_O),    RALT(KC_P),     RALT(KC_LBRC),  RALT(KC_RBRC),  RALT(KC_BSPC),  \
+  RALT(KC_LCTL),  RALT(KC_A),  RALT(KC_S),  RALT(KC_D),  RALT(KC_F),  RALT(KC_G),  RALT(KC_H),  RALT(KC_J),  RALT(KC_K),     KC_TRNS,       KC_TRNS,        RALT(KC_QUOT),  KC_FN0,         \
+  RALT(KC_LSFT),  RALT(KC_Z),  RALT(KC_X),  RALT(KC_C),  RALT(KC_V),  RALT(KC_B),  RALT(KC_N),  RALT(KC_M),  RALT(KC_COMM),  RALT(KC_DOT),  RALT(KC_SLSH),  RALT(KC_RSFT),  KC_TRNS,        \
+      KC_LALT, KC_LGUI, RALT(KC_SPC),               KC_RGUI, KC_RALT),
+
+    /* Layer LALT: All keys with LALT modifier
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Esc    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0   | -     | =        | \     | ` |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Tab    | Q | W | E | R | T | Y | U | I | O | P   | [     | ]        | Backs |   |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Contro | A | S | D | F | G | H | J | K |   | ;   | '     | RCtl/Ent |       |   |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+     | Shift  | Z | X | C | V | B | N | M | , | . | Fn2 | Shift | Fn0      |       |   |
+     |--------+---+---+---+---+---+---+---+---+---+-----+-------+----------+-------+---|
+
+                 |------+------+-------+------+------|
+                 | LAlt | LGUI | Space | LGUI | RAlt |
+                 |------+------+-------+------+------|
+    */
+
+  [LALTLEV] = KEYMAP(  // Right ALT layer  by KC_L
+
+  LALT(KC_ESC),   LALT(KC_1),  LALT(KC_2),  LALT(KC_3),  LALT(KC_4),  LALT(KC_5),  LALT(KC_6),  LALT(KC_7),  LALT(KC_8),     LALT(KC_9),    LALT(KC_0),     LALT(KC_MINS),  LALT(KC_EQL),   LALT(KC_BSLS),  LALT(KC_GRV),  \
+  LALT(KC_TAB),   LALT(KC_Q),  LALT(KC_W),  LALT(KC_E),  LALT(KC_R),  LALT(KC_T),  LALT(KC_Y),  LALT(KC_U),  LALT(KC_I),     LALT(KC_O),    LALT(KC_P),     LALT(KC_LBRC),  LALT(KC_RBRC),  LALT(KC_BSPC),  \
+  LALT(KC_LCTL),  KC_TRNS,     KC_TRNS,     LALT(KC_D),  LALT(KC_F),  LALT(KC_G),  LALT(KC_H),  LALT(KC_J),  LALT(KC_K),     LALT(KC_L),    LALT(KC_SCLN),  LALT(KC_QUOT),  KC_FN0,         \
+  KC_LSFT,        LALT(KC_Z),  LALT(KC_X),  LALT(KC_C),  LALT(KC_V),  LALT(KC_B),  LALT(KC_N),  LALT(KC_M),  LALT(KC_COMM),  LALT(KC_DOT),  LALT(KC_SLSH),  KC_RSFT,        KC_TRNS,        \
+      KC_LALT, KC_LGUI, LALT(KC_SPC),               KC_LGUI, KC_RALT),
+
+
+    /* Layer WIN: Win layer
+     |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
+     | Esc    | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | -     | =        | \     | ` |
+     |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
+     | Tab    | Q | W | E | R | T | Y | U | I | O | P | [     | ]        | Backs |   |
+     |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
+     | Contro | A | S | D | F | G | H | J | K | L | ; | '     | RCtl/Ent |       |   |
+     |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
+     | Shift  | Z | X | C | V | B | N | M | , | . | / | Shift | Fn0      |       |   |
+     |--------+---+---+---+---+---+---+---+---+---+---+-------+----------+-------+---|
+
+                 |------+------+-------+------+------|
+                 | LGui | LAlt | Space | RGui | Ralt |
+                 |------+------+-------+------+------|
+    */
+
+  [WIN] = KEYMAP(  // BASE level with swapped GUI/ALT
+
+
+  KC_ESC,   KC_1,              KC_2,              KC_3,  KC_4,  KC_5,  KC_6,  KC_7,  KC_8,     KC_9,              KC_0,                 KC_MINS,  KC_EQL,    KC_BSLS,  KC_GRV,  \
+  KC_TAB,   KC_Q,              KC_W,              KC_E,  KC_R,  KC_T,  KC_Y,  KC_U,  KC_I,     KC_O,              KC_P,                 KC_LBRC,  KC_RBRC,   KC_BSPC,  \
+  KC_LCTL,  LT(LGUILEV,KC_A),  LT(LALTLEV,KC_S),  KC_D,  KC_F,  KC_G,  KC_H,  KC_J,  KC_K,     LT(RALTLEV,KC_L),  LT(RGUILEV,KC_SCLN),  KC_QUOT,  KC_FN0,    \
+  KC_LSFT,  KC_Z,              KC_X,              KC_C,  KC_V,  KC_B,  KC_N,  KC_M,  KC_COMM,  KC_DOT,            KC_SLSH,              KC_RSFT,  MO(HHKB),  \
+                 KC_RGUI, KC_RALT, KC_SPC,                KC_RALT, KC_RGUI)};
+
+
+const uint16_t PROGMEM fn_actions[] = {
+    [0] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENT)      // RControl with tap Enter*
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+          if (record->event.pressed) {
+            register_code(KC_RSFT);
+          } else {
+            unregister_code(KC_RSFT);
+          }
+        break;
+      }
+    return MACRO_NONE;
+};
index 076dced82902cadf95c2d650f13aadb47facf08e..f6a8d10c583bda4bef5d19bc08154eed70e233fe 100644 (file)
@@ -54,9 +54,9 @@ SRC = jd45.c \
        backlight.c 
 
 ifdef KEYMAP
-    SRC := keymaps/keymap_$(KEYMAP).c $(SRC)
+    SRC := keymaps/keymaps/(KEYMAP).c $(SRC)
 else
-    SRC := keymaps/keymap_default.c $(SRC)
+    SRC := keymaps/keymaps/default.c $(SRC)
 endif
 
 CONFIG_H = config.h
diff --git a/keyboard/jd45/keymaps/default.c b/keyboard/jd45/keymaps/default.c
new file mode 100644 (file)
index 0000000..05dd46e
--- /dev/null
@@ -0,0 +1,31 @@
+#include "jd45.h"
+#include "backlight.h"
+
+/* this keymap is to provide a basic keyboard layout for testing the matrix
+ * for more practical and complicated keymap refer to other keymaps in the same folder
+ */
+/* JD45 keymap definition macro
+ */
+#define KEYMAP( \
+    K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, K13, \
+       K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, K25, \
+       K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, K37, \
+       K38, K39, K40, K41, K42, K43, K44, K45, K46, K47 \
+) { \
+    { KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K10, KC_##K11, KC_##K12, KC_##K13 }, \
+    { KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_NO    }, \
+    { KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_NO    }, \
+    { KC_##K38, KC_##K39, KC_##K40, KC_##K41, KC_##K42, KC_NO,    KC_##K43, KC_NO,    KC_##K44, KC_##K45, KC_##K46, KC_##K47, KC_NO    }  \
+}
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = KEYMAP(
+  ESC,   Q,    W,    E,    R,    T,    Y,    U,    I,    O,    P,     QUOT, BSPC,
+  TAB,   A,    S,    D,    F,    G,    H,    J,    K,    L,    SCLN,  ENT,
+  LSFT,  Z,    X,    C,    V,    B,    N,    M,    COMM, DOT,  SLSH,  RSFT,
+  PAUSE, LCTL, LALT, DEL,  SPC,  DEL,  LEFT, UP,   DOWN, RIGHT ),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
diff --git a/keyboard/jd45/keymaps/justin.c b/keyboard/jd45/keymaps/justin.c
new file mode 100644 (file)
index 0000000..f261b54
--- /dev/null
@@ -0,0 +1,101 @@
+#include "jd45.h"
+#include "backlight.h"
+
+/* JD45 keymap definition macro
+ */
+#define KEYMAP( \
+    K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, K13, \
+       K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, K25, \
+       K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, K37, \
+       K38, K39, K40, K41, K42, K43, K44, K45, K46, K47 \
+) { \
+    { KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K10, KC_##K11, KC_##K12, KC_##K13 }, \
+    { KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_NO    }, \
+    { KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_NO    }, \
+    { KC_##K38, KC_##K39, KC_##K40, KC_##K41, KC_##K42, KC_NO,    KC_##K43, KC_NO,    KC_##K44, KC_##K45, KC_##K46, KC_##K47, KC_NO    }  \
+}
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = KEYMAP(
+  ESC,  Q,    W,    F,    P,    G,    J,    L,    U,    Y,    SCLN, QUOT, BSPC,
+  FN8,  A,    R,    S,    T,    D,    H,    N,    E,    I,    O,     ENT,
+  LSFT, Z,    X,    C,    V,    B,    K,    M,    COMM, DOT,  SLSH,  FN6,
+  FN4, LGUI, FN7, FN2,  FN1,  SPC,  FN5,  RALT,  FN3, FN0 ),
+[1] = KEYMAP(
+  TRNS, FN10, FN11, FN12, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, UP, DEL,
+  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, HOME, PGUP, LEFT, RGHT,
+  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, END,  PGDN, DOWN, TRNS,
+  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS ),
+[2] = KEYMAP(
+  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,    7,    8,    9,    0, TRNS, TRNS,
+  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, LBRC,    4,    5,    6,  DOT, TRNS,
+  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, RBRC,    1,    2,    3, BSLS, TRNS,
+  TRNS,FN29, TRNS, TRNS, TRNS, PAUSE,  EQL, MINS, TRNS, TRNS ),
+[3] = KEYMAP(
+  TRNS, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12,
+  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
+  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
+  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS ),
+[4] = KEYMAP(
+  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,    7,    8,    9,    0, TRNS, TRNS,
+  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, LBRC,    4,    5,    6,  DOT, TRNS,
+  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, RBRC,    1,    2,    3, BSLS, TRNS,
+  TRNS,FN29, TRNS, TRNS, TRNS, PAUSE,  EQL, MINS, TRNS, TRNS ),
+};
+
+enum macro_id {
+   PSWD1,
+   PSWD2,
+   PSWD3,
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [0] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_MINS),
+    [1] = ACTION_LAYER_MOMENTARY(1),  // FN1
+    [2] = ACTION_LAYER_MOMENTARY(2),  // FN2
+    [3] = ACTION_LAYER_MOMENTARY(3),  // FN3
+    [4] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_GRV),
+    [5] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_RGUI),
+    [6] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_CAPS),
+    [7] = ACTION_LAYER_MODS(4, MOD_LSFT),  // FN4
+    [8] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_TAB),
+
+    [10] = ACTION_MACRO(PSWD1),
+    [11] = ACTION_MACRO(PSWD2),
+    [12] = ACTION_MACRO(PSWD3),
+    
+    [29] = ACTION_BACKLIGHT_TOGGLE(),
+    [30] = ACTION_BACKLIGHT_INCREASE(),
+    [31] = ACTION_BACKLIGHT_DECREASE()
+    
+};
+
+/*
+ * Macro definition
+ */
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+    switch (id) {
+        case PSWD1:
+            return (record->event.pressed ?
+                    MACRO( I(0), T(1), T(2), T(3), T(4), T(5), T(6), T(7), T(8), T(ENT), END ) :
+                    MACRO_NONE );
+        case PSWD2:
+            return (record->event.pressed ?
+                    MACRO( I(0), T(1), T(2), T(3), T(4), T(5), T(6), T(7), T(8), T(ENT), END ) :
+                    MACRO_NONE );
+        case PSWD3:
+            return (record->event.pressed ?
+                    MACRO( I(0), T(1), T(2), T(3), T(4), T(5), T(6), T(7), T(8), T(ENT), END ) :
+                    MACRO_NONE );
+        //case VOLUP:
+        //    return (record->event.pressed ?
+        //            MACRO( D(VOLU), U(VOLU), END ) :
+        //            MACRO_NONE );
+        //case ALT_TAB:
+        //    return (record->event.pressed ?
+        //            MACRO( D(LALT), D(TAB), END ) :
+        //            MACRO( U(TAB), END ));
+    }
+    return MACRO_NONE;
+}
diff --git a/keyboard/jd45/keymaps/keymap_default.c b/keyboard/jd45/keymaps/keymap_default.c
deleted file mode 100644 (file)
index 05dd46e..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#include "jd45.h"
-#include "backlight.h"
-
-/* this keymap is to provide a basic keyboard layout for testing the matrix
- * for more practical and complicated keymap refer to other keymaps in the same folder
- */
-/* JD45 keymap definition macro
- */
-#define KEYMAP( \
-    K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, K13, \
-       K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, K25, \
-       K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, K37, \
-       K38, K39, K40, K41, K42, K43, K44, K45, K46, K47 \
-) { \
-    { KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K10, KC_##K11, KC_##K12, KC_##K13 }, \
-    { KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_NO    }, \
-    { KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_NO    }, \
-    { KC_##K38, KC_##K39, KC_##K40, KC_##K41, KC_##K42, KC_NO,    KC_##K43, KC_NO,    KC_##K44, KC_##K45, KC_##K46, KC_##K47, KC_NO    }  \
-}
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = KEYMAP(
-  ESC,   Q,    W,    E,    R,    T,    Y,    U,    I,    O,    P,     QUOT, BSPC,
-  TAB,   A,    S,    D,    F,    G,    H,    J,    K,    L,    SCLN,  ENT,
-  LSFT,  Z,    X,    C,    V,    B,    N,    M,    COMM, DOT,  SLSH,  RSFT,
-  PAUSE, LCTL, LALT, DEL,  SPC,  DEL,  LEFT, UP,   DOWN, RIGHT ),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-
-};
diff --git a/keyboard/jd45/keymaps/keymap_justin.c b/keyboard/jd45/keymaps/keymap_justin.c
deleted file mode 100644 (file)
index f261b54..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-#include "jd45.h"
-#include "backlight.h"
-
-/* JD45 keymap definition macro
- */
-#define KEYMAP( \
-    K01, K02, K03, K04, K05, K06, K07, K08, K09, K10, K11, K12, K13, \
-       K14, K15, K16, K17, K18, K19, K20, K21, K22, K23, K24, K25, \
-       K26, K27, K28, K29, K30, K31, K32, K33, K34, K35, K36, K37, \
-       K38, K39, K40, K41, K42, K43, K44, K45, K46, K47 \
-) { \
-    { KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K10, KC_##K11, KC_##K12, KC_##K13 }, \
-    { KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_NO    }, \
-    { KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K36, KC_##K37, KC_NO    }, \
-    { KC_##K38, KC_##K39, KC_##K40, KC_##K41, KC_##K42, KC_NO,    KC_##K43, KC_NO,    KC_##K44, KC_##K45, KC_##K46, KC_##K47, KC_NO    }  \
-}
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = KEYMAP(
-  ESC,  Q,    W,    F,    P,    G,    J,    L,    U,    Y,    SCLN, QUOT, BSPC,
-  FN8,  A,    R,    S,    T,    D,    H,    N,    E,    I,    O,     ENT,
-  LSFT, Z,    X,    C,    V,    B,    K,    M,    COMM, DOT,  SLSH,  FN6,
-  FN4, LGUI, FN7, FN2,  FN1,  SPC,  FN5,  RALT,  FN3, FN0 ),
-[1] = KEYMAP(
-  TRNS, FN10, FN11, FN12, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, UP, DEL,
-  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, HOME, PGUP, LEFT, RGHT,
-  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, END,  PGDN, DOWN, TRNS,
-  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS ),
-[2] = KEYMAP(
-  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,    7,    8,    9,    0, TRNS, TRNS,
-  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, LBRC,    4,    5,    6,  DOT, TRNS,
-  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, RBRC,    1,    2,    3, BSLS, TRNS,
-  TRNS,FN29, TRNS, TRNS, TRNS, PAUSE,  EQL, MINS, TRNS, TRNS ),
-[3] = KEYMAP(
-  TRNS, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12,
-  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
-  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
-  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS ),
-[4] = KEYMAP(
-  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,    7,    8,    9,    0, TRNS, TRNS,
-  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, LBRC,    4,    5,    6,  DOT, TRNS,
-  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, RBRC,    1,    2,    3, BSLS, TRNS,
-  TRNS,FN29, TRNS, TRNS, TRNS, PAUSE,  EQL, MINS, TRNS, TRNS ),
-};
-
-enum macro_id {
-   PSWD1,
-   PSWD2,
-   PSWD3,
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [0] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_MINS),
-    [1] = ACTION_LAYER_MOMENTARY(1),  // FN1
-    [2] = ACTION_LAYER_MOMENTARY(2),  // FN2
-    [3] = ACTION_LAYER_MOMENTARY(3),  // FN3
-    [4] = ACTION_MODS_TAP_KEY(MOD_LSFT, KC_GRV),
-    [5] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_RGUI),
-    [6] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_CAPS),
-    [7] = ACTION_LAYER_MODS(4, MOD_LSFT),  // FN4
-    [8] = ACTION_MODS_TAP_KEY(MOD_LCTL, KC_TAB),
-
-    [10] = ACTION_MACRO(PSWD1),
-    [11] = ACTION_MACRO(PSWD2),
-    [12] = ACTION_MACRO(PSWD3),
-    
-    [29] = ACTION_BACKLIGHT_TOGGLE(),
-    [30] = ACTION_BACKLIGHT_INCREASE(),
-    [31] = ACTION_BACKLIGHT_DECREASE()
-    
-};
-
-/*
- * Macro definition
- */
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-    switch (id) {
-        case PSWD1:
-            return (record->event.pressed ?
-                    MACRO( I(0), T(1), T(2), T(3), T(4), T(5), T(6), T(7), T(8), T(ENT), END ) :
-                    MACRO_NONE );
-        case PSWD2:
-            return (record->event.pressed ?
-                    MACRO( I(0), T(1), T(2), T(3), T(4), T(5), T(6), T(7), T(8), T(ENT), END ) :
-                    MACRO_NONE );
-        case PSWD3:
-            return (record->event.pressed ?
-                    MACRO( I(0), T(1), T(2), T(3), T(4), T(5), T(6), T(7), T(8), T(ENT), END ) :
-                    MACRO_NONE );
-        //case VOLUP:
-        //    return (record->event.pressed ?
-        //            MACRO( D(VOLU), U(VOLU), END ) :
-        //            MACRO_NONE );
-        //case ALT_TAB:
-        //    return (record->event.pressed ?
-        //            MACRO( D(LALT), D(TAB), END ) :
-        //            MACRO( U(TAB), END ));
-    }
-    return MACRO_NONE;
-}
index 307b0c7f4fe4443e056c25958c8521e747337d23..03d26017617f4ce625924b6bac352c4177bc4188 100644 (file)
@@ -143,7 +143,7 @@ BACKLIGHT_ENABLE = yes  # Enable keyboard backlight functionality
 # AUDIO_ENABLE = YES           # Audio output on port C6
 # UNICODE_ENABLE = YES                 # Unicode
 # BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
-# RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.  Do not enable this with MIDI at the same time.
+# RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
 
 ifdef BACKLIGHT_ENABLE
        SRC += backlight.c
index 3ba0cc1527384cd1aeb0f85efdee3f1799769abb..d9a1e3beeebd6e6e8e50b49a697972641cc437b2 100644 (file)
@@ -16,13 +16,13 @@ Depending on which keymap you would like to use, you will have to compile slight
 To build with the default keymap, simply run `make`.
 
 ### Other Keymaps
-Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
+Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `<name>.c` in the keymaps folder, and see keymap document (you can find in top README.md) and existent keymap files.
 
 To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like:
 ```
 $ make KEYMAP=[default|jack|<name>]
 ```
-Keymaps follow the format **__<name\>.c__** and are stored in the `keymaps` folder.
+Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
 
 ### Notable forks (which some of the keymap files are from)
 - [Shane's Fork](https://github.com/shanecelis/tmk_keyboard/tree/master/keyboard/planck)
diff --git a/keyboard/planck/common_keymaps/keymap_mitch.c b/keyboard/planck/common_keymaps/keymap_mitch.c
deleted file mode 100644 (file)
index f7df7bb..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-#include "keymap_common.h"
-
-const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = KEYMAP(
-  TAB,  Q,    W,    E,    R,    T,    Y,    U,    I,    O,    P,    BSPC,
-  LCTL, A,    S,    D,    F,    G,    H,    J,    K,    L,    SCLN, QUOT,
-  LSFT, Z,    X,    C,    V,    B,    N,    M,    COMM, DOT,  SLSH, FN3,
-  ESC,  DEL,  LALT, LGUI, FN2,  SPC,        FN1,  LEFT, DOWN, UP,   RGHT),
-[1] = KEYMAP(
-  GRV,  GRV,  FN22, FN19, FN10, TRNS, TRNS, 7,    8,    9,    0,    BSPC,
-  TRNS, LBRC, RBRC, FN23, FN24, TRNS, TRNS, 4,    5,    6,    TRNS, BSLS,
-  TRNS, MINS, FN20, EQL,  FN21, TRNS, TRNS, 1,    2,    3,    TRNS, ENT,
-  TRNS, TRNS, TRNS, TRNS, TRNS, SPC,        FN1,  TRNS, PGDN, PGUP, TRNS),
-[2] = KEYMAP(
-  FN26, FN10, FN11, FN12, FN13, FN14, FN15, FN17, FN18, FN19, FN10, DEL,
-  TRNS, TRNS, MUTE, VOLD, VOLU, TRNS, BSPC, FN14, FN15, FN16, TRNS, FN25,
-  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN11, FN12, FN13, TRNS, ENT,
-  TRNS, TRNS, TRNS, TRNS, FN2,  ENT,        TRNS, TRNS, PGDN, PGUP, TRNS),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-  [1] = ACTION_LAYER_MOMENTARY(1),  // Switch layer raise
-  [2] = ACTION_LAYER_MOMENTARY(2),  // Switch layer lower
-
-  [3] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ENT), // Right shift serves as Enter on tap
-
-  // Numeric shift modifiers
-  [10] = ACTION_MODS_KEY(MOD_LSFT, KC_0),
-  [11] = ACTION_MODS_KEY(MOD_LSFT, KC_1),
-  [12] = ACTION_MODS_KEY(MOD_LSFT, KC_2),
-  [13] = ACTION_MODS_KEY(MOD_LSFT, KC_3),
-  [14] = ACTION_MODS_KEY(MOD_LSFT, KC_4),
-  [15] = ACTION_MODS_KEY(MOD_LSFT, KC_5),
-  [16] = ACTION_MODS_KEY(MOD_LSFT, KC_6),
-  [17] = ACTION_MODS_KEY(MOD_LSFT, KC_7),
-  [18] = ACTION_MODS_KEY(MOD_LSFT, KC_8),
-  [19] = ACTION_MODS_KEY(MOD_LSFT, KC_9),
-
-  // Other shift modifiers
-  [20] = ACTION_MODS_KEY(MOD_LSFT, KC_MINS), // _
-  [21] = ACTION_MODS_KEY(MOD_LSFT, KC_EQL),  // +
-  [22] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV),  // ~
-  [23] = ACTION_MODS_KEY(MOD_LSFT, KC_LBRC), // {
-  [24] = ACTION_MODS_KEY(MOD_LSFT, KC_RBRC), // }
-  [25] = ACTION_MODS_KEY(MOD_LSFT, KC_BSLS), // |
-
-  // Switch windows in app
-  [26] = ACTION_MODS_KEY(MOD_LGUI, KC_GRV),
-};
index d995eb9e5857541053e72014fc063523d75154af..988deee99d67d0ae35eb2e64a9f675a196880fc7 100644 (file)
@@ -76,7 +76,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * ,-----------------------------------------------------------------------------------.
  * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |
  * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   -  |   =  |   [  |   ]  |  \   |
+ * | Esc  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   -  |   =  |   [  |   ]  |  \   |
  * |------+------+------+------+------+------|------+------+------+------+------+------|
  * | Shift|  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |Qwerty|Colemk|Dvorak| Reset|Enter |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
@@ -94,7 +94,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * ,-----------------------------------------------------------------------------------.
  * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Bksp |
  * |------+------+------+------+------+-------------+------+------+------+------+------|
- * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   _  |   +  |   {  |   }  |  |   |
+ * | Esc  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   _  |   +  |   {  |   }  |  |   |
  * |------+------+------+------+------+------|------+------+------+------+------+------|
  * | Shift|  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |Qwerty|Colemk|Dvorak| Reset|Enter |
  * |------+------+------+------+------+------+------+------+------+------+------+------|
diff --git a/keyboard/planck/keymaps/tak3over.c b/keyboard/planck/keymaps/tak3over.c
new file mode 100644 (file)
index 0000000..c49af7d
--- /dev/null
@@ -0,0 +1,136 @@
+// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
+// this is the style you want to emulate.
+//
+// Custom style by tak3over.  Dropped the dvorak layer as it was not being used by me. Shifted over
+// keys to make room for a second function key on the left side.  Now has a keypad and most all
+// standard keyboard keys. Including Delete. See TK layer.
+
+#include "planck.h"
+#ifdef BACKLIGHT_ENABLE
+  #include "backlight.h"
+#endif
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QW 0
+#define _CM 1
+#define _TK 2
+#define _LW 3
+#define _RS 4
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+/* Qwerty
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  "   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt  | GUI  | TK   |Raise |    Space    |Lower | Left | Down |  Up  |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_QW] = {
+  {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC},
+  {KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
+  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT },
+  {KC_LCTL, KC_LALT, KC_LGUI, MO(_TK), MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+
+/* Colemak
+ * ,-----------------------------------------------------------------------------------.
+ * | Tab  |   Q  |   W  |   F  |   P  |   G  |   J  |   L  |   U  |   Y  |   ;  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |   A  |   R  |   S  |   T  |   D  |   H  |   N  |   E  |   I  |   O  |  "   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt  | GUI  | TK   |Raise |    Space    |Lower | Left | Down |  Up  |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_CM] = {
+  {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
+  {KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT},
+  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT },
+  {KC_LCTL, KC_LALT, KC_LGUI, MO(_TK), MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+
+/* TenKey, Arrow, and Function key Layer
+ * ,-----------------------------------------------------------------------------------.
+ * |  `   |   1  |   2  |   3  |   4  |   5  |  6   |   7  |   8  |   9  |   0  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  | Left | Up   | Down | Right| Del  |   *  |   4  |   5  |   6  |   +  |  /   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift| Home | PGUP | PGDN | End  | Ins  |   .  |   1  |   2  |   3  |   -  |Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt  | GUI  | TK   |Raise |    Space    |Lower | Left | Down |  Up  |Right |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_TK] = {
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_ESC,  KC_LEFT, KC_UP,   KC_DOWN, KC_RGHT, KC_DEL,  KC_ASTR, KC_4,    KC_5,    KC_6,    KC_PLUS, KC_SLSH},
+  {KC_LSFT, KC_HOME, KC_PGUP, KC_PGDN, KC_END,  KC_INS,  KC_DOT,  KC_1,    KC_2,    KC_3,    KC_MINS, KC_ENT },
+  {KC_LCTL, KC_LALT, KC_LGUI, MO(_TK), MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+
+/* Raise
+ * ,-----------------------------------------------------------------------------------.
+ * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   -  |   =  |   [  |   ]  |  \   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |Qwerty|Colemk|Brite | Reset|Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt  | GUI  |  TK  |Raise |    Space    |Lower | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_RS] = {
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
+  {KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  DF(_QW), DF(_CM), M(0),    RESET,   KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+
+/* Lower
+ * ,-----------------------------------------------------------------------------------.
+ * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Bksp |
+ * |------+------+------+------+------+-------------+------+------+------+------+------|
+ * | Esc  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   _  |   +  |   {  |   }  |  |   |
+ * |------+------+------+------+------+------|------+------+------+------+------+------|
+ * | Shift|  F7  |  F8  |  F9  |  F10 |  F11 |  F12 |Qwerty|Colemk|Brite | Reset|Enter |
+ * |------+------+------+------+------+------+------+------+------+------+------+------|
+ * | Ctrl | Alt  | GUI  |  TK  |Raise |    Space    |Lower | Next | Vol- | Vol+ | Play |
+ * `-----------------------------------------------------------------------------------'
+ */
+[_LW] = {
+  {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
+  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
+  {KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  DF(_QW), DF(_CM), M(0),    RESET,   KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+}
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+          if (record->event.pressed) {
+            register_code(KC_RSFT);
+            #ifdef BACKLIGHT_ENABLE
+              backlight_step();
+            #endif
+          } else {
+            unregister_code(KC_RSFT);
+          }
+        break;
+      }
+    return MACRO_NONE;
+};
diff --git a/keyboard/planck/old_keymap_files/common_keymaps/keymap_mitch.c b/keyboard/planck/old_keymap_files/common_keymaps/keymap_mitch.c
new file mode 100644 (file)
index 0000000..f7df7bb
--- /dev/null
@@ -0,0 +1,49 @@
+#include "keymap_common.h"
+
+const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = KEYMAP(
+  TAB,  Q,    W,    E,    R,    T,    Y,    U,    I,    O,    P,    BSPC,
+  LCTL, A,    S,    D,    F,    G,    H,    J,    K,    L,    SCLN, QUOT,
+  LSFT, Z,    X,    C,    V,    B,    N,    M,    COMM, DOT,  SLSH, FN3,
+  ESC,  DEL,  LALT, LGUI, FN2,  SPC,        FN1,  LEFT, DOWN, UP,   RGHT),
+[1] = KEYMAP(
+  GRV,  GRV,  FN22, FN19, FN10, TRNS, TRNS, 7,    8,    9,    0,    BSPC,
+  TRNS, LBRC, RBRC, FN23, FN24, TRNS, TRNS, 4,    5,    6,    TRNS, BSLS,
+  TRNS, MINS, FN20, EQL,  FN21, TRNS, TRNS, 1,    2,    3,    TRNS, ENT,
+  TRNS, TRNS, TRNS, TRNS, TRNS, SPC,        FN1,  TRNS, PGDN, PGUP, TRNS),
+[2] = KEYMAP(
+  FN26, FN10, FN11, FN12, FN13, FN14, FN15, FN17, FN18, FN19, FN10, DEL,
+  TRNS, TRNS, MUTE, VOLD, VOLU, TRNS, BSPC, FN14, FN15, FN16, TRNS, FN25,
+  TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN11, FN12, FN13, TRNS, ENT,
+  TRNS, TRNS, TRNS, TRNS, FN2,  ENT,        TRNS, TRNS, PGDN, PGUP, TRNS),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+  [1] = ACTION_LAYER_MOMENTARY(1),  // Switch layer raise
+  [2] = ACTION_LAYER_MOMENTARY(2),  // Switch layer lower
+
+  [3] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ENT), // Right shift serves as Enter on tap
+
+  // Numeric shift modifiers
+  [10] = ACTION_MODS_KEY(MOD_LSFT, KC_0),
+  [11] = ACTION_MODS_KEY(MOD_LSFT, KC_1),
+  [12] = ACTION_MODS_KEY(MOD_LSFT, KC_2),
+  [13] = ACTION_MODS_KEY(MOD_LSFT, KC_3),
+  [14] = ACTION_MODS_KEY(MOD_LSFT, KC_4),
+  [15] = ACTION_MODS_KEY(MOD_LSFT, KC_5),
+  [16] = ACTION_MODS_KEY(MOD_LSFT, KC_6),
+  [17] = ACTION_MODS_KEY(MOD_LSFT, KC_7),
+  [18] = ACTION_MODS_KEY(MOD_LSFT, KC_8),
+  [19] = ACTION_MODS_KEY(MOD_LSFT, KC_9),
+
+  // Other shift modifiers
+  [20] = ACTION_MODS_KEY(MOD_LSFT, KC_MINS), // _
+  [21] = ACTION_MODS_KEY(MOD_LSFT, KC_EQL),  // +
+  [22] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV),  // ~
+  [23] = ACTION_MODS_KEY(MOD_LSFT, KC_LBRC), // {
+  [24] = ACTION_MODS_KEY(MOD_LSFT, KC_RBRC), // }
+  [25] = ACTION_MODS_KEY(MOD_LSFT, KC_BSLS), // |
+
+  // Switch windows in app
+  [26] = ACTION_MODS_KEY(MOD_LGUI, KC_GRV),
+};
index 0145e44bc6b2697b5e1508e7fbb14014af1f1b92..89c48e50a9c94f28812b490f3a89983b0959ad3e 100644 (file)
@@ -27,7 +27,7 @@
 # make flip-ee = Download the eeprom file to the device, using Atmel FLIP
 #                (must have Atmel FLIP installed).
 #
-# make debug = Start either simulavr or avarice as specified for debugging, 
+# make debug = Start either simulavr or avarice as specified for debugging,
 #              with avr-gdb or avr-insight as the front end for debugging.
 #
 # make filename.s = Just compile filename.c into the assembler code only.
 #----------------------------------------------------------------------------
 
 # Target file name (without extension).
-TARGET = preonic_lufa
+TARGET = preonic
+
 
 # Directory common source filess exist
 TOP_DIR = ../..
+TMK_DIR = ../../tmk_core
 
 # Directory keyboard dependent files exist
 TARGET_DIR = .
 
 # # project specific files
-SRC = extended_keymap_common.c \
-       matrix.c \
-       led.c \
-       backlight.c
+SRC = preonic.c
+
+ifdef keymap
+       KEYMAP = $(keymap)
+endif
 
 ifdef KEYMAP
-    SRC := extended_keymaps/extended_keymap_$(KEYMAP).c $(SRC)
+ifneq ("$(wildcard keymaps/$(KEYMAP).c)","")
+       KEYMAP_FILE = keymaps/$(KEYMAP).c
 else
-    SRC := extended_keymaps/extended_keymap_default.c $(SRC)
+ifneq ("$(wildcard keymaps/$(KEYMAP)/keymap.c)","")
+       KEYMAP_FILE = keymaps/$(KEYMAP)/keymap.c
+else
+$(error Keymap file does not exist)
+endif
 endif
+else
+ifneq ("$(wildcard keymaps/default.c)","")
+       KEYMAP_FILE = keymaps/default.c
+else
+       KEYMAP_FILE = keymaps/default/keymap.c
+endif
+endif
+SRC := $(KEYMAP_FILE) $(SRC)
 
 CONFIG_H = config.h
 
@@ -120,24 +136,26 @@ EXTRAKEY_ENABLE = yes     # Audio control and System control(+450)
 CONSOLE_ENABLE = yes   # Console for debug(+400)
 COMMAND_ENABLE = yes    # Commands for debug and configuration
 # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
-#SLEEP_LED_ENABLE = yes  # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes              # USB Nkey Rollover - not yet supported in LUFA
+# SLEEP_LED_ENABLE = yes  # Breathing sleep LED during USB suspend
+# NKRO_ENABLE = yes            # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
 BACKLIGHT_ENABLE = yes  # Enable keyboard backlight functionality
-MIDI_ENABLE = yes              # MIDI controls
-BACKLIGHT_ENABLE = yes
-
-ifdef MIDI_ENABLE
-       SRC += keymap_midi.c \
-                  beeps.c
+# MIDI_ENABLE = YES            # MIDI controls
+# AUDIO_ENABLE = YES           # Audio output on port C6
+# UNICODE_ENABLE = YES                 # Unicode
+# BLUETOOTH_ENABLE = yes # Enable Bluetooth with the Adafruit EZ-Key HID
+# RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight.  Do not enable this with MIDI at the same time.
+
+ifdef BACKLIGHT_ENABLE
+       SRC += backlight.c
 endif
 
+
 # Optimize size but this may cause error "relocation truncated to fit"
 #EXTRALDFLAGS = -Wl,--relax
 
 # Search Path
 VPATH += $(TARGET_DIR)
 VPATH += $(TOP_DIR)
+VPATH += $(TMK_DIR)
 
-include $(TOP_DIR)/protocol/lufa.mk
-include $(TOP_DIR)/common.mk
-include $(TOP_DIR)/rules.mk
+include $(TOP_DIR)/quantum/quantum.mk
diff --git a/keyboard/preonic/Makefile.pjrc b/keyboard/preonic/Makefile.pjrc
deleted file mode 100644 (file)
index be83ba1..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-#----------------------------------------------------------------------------
-# On command line:
-#
-# make all = Make software.
-#
-# make clean = Clean out built project files.
-#
-# make coff = Convert ELF to AVR COFF.
-#
-# make extcoff = Convert ELF to AVR Extended COFF.
-#
-# make program = Download the hex file to the device.
-#                Please customize your programmer settings(PROGRAM_CMD)
-#
-# make teensy = Download the hex file to the device, using teensy_loader_cli.
-#               (must have teensy_loader_cli installed).
-#
-# make dfu = Download the hex file to the device, using dfu-programmer (must
-#            have dfu-programmer installed).
-#
-# make flip = Download the hex file to the device, using Atmel FLIP (must
-#             have Atmel FLIP installed).
-#
-# make dfu-ee = Download the eeprom file to the device, using dfu-programmer
-#               (must have dfu-programmer installed).
-#
-# make flip-ee = Download the eeprom file to the device, using Atmel FLIP
-#                (must have Atmel FLIP installed).
-#
-# make debug = Start either simulavr or avarice as specified for debugging, 
-#              with avr-gdb or avr-insight as the front end for debugging.
-#
-# make filename.s = Just compile filename.c into the assembler code only.
-#
-# make filename.i = Create a preprocessed source file for use in submitting
-#                   bug reports to the GCC project.
-#
-# To rebuild project do "make clean" then "make all".
-#----------------------------------------------------------------------------
-
-# Target file name (without extension).
-TARGET = gh60_pjrc
-
-# Directory common source filess exist
-TOP_DIR = ../..
-
-# Directory keyboard dependent files exist
-TARGET_DIR = .
-
-# project specific files
-SRC =  keymap_common.c \
-       matrix.c \
-       led.c
-
-ifdef KEYMAP
-    SRC := keymap_$(KEYMAP).c $(SRC)
-else
-    SRC := keymap_jack.c $(SRC)
-endif
-
-CONFIG_H = config.h
-
-
-# MCU name, you MUST set this to match the board you are using
-# type "make clean" after changing this, so all files will be rebuilt
-MCU = atmega32u4
-#MCU = at90usb1286
-
-
-# Processor frequency.
-#   Normally the first thing your program should do is set the clock prescaler,
-#   so your program will run at the correct speed.  You should also set this
-#   variable to same clock speed.  The _delay_ms() macro uses this, and many
-#   examples use this variable to calculate timings.  Do not add a "UL" here.
-F_CPU = 16000000
-
-
-# Boot Section Size in *bytes*
-#   Teensy halfKay   512
-#   Atmel DFU loader 4096
-#   LUFA bootloader  4096
-OPT_DEFS += -DBOOTLOADER_SIZE=4096
-
-
-# Build Options
-#   comment out to disable the options.
-#
-BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
-MOUSEKEY_ENABLE = yes  # Mouse keys(+5000)
-EXTRAKEY_ENABLE = yes  # Audio control and System control(+600)
-CONSOLE_ENABLE = yes    # Console for debug
-COMMAND_ENABLE = yes    # Commands for debug and configuration
-SLEEP_LED_ENABLE = yes  # Breathing sleep LED during USB suspend
-NKRO_ENABLE = yes      # USB Nkey Rollover(+500)
-#PS2_MOUSE_ENABLE = yes        # PS/2 mouse(TrackPoint) support
-
-
-# Search Path
-VPATH += $(TARGET_DIR)
-VPATH += $(TOP_DIR)
-
-include $(TOP_DIR)/protocol/pjrc.mk
-include $(TOP_DIR)/common.mk
-include $(TOP_DIR)/rules.mk
-
-plain: OPT_DEFS += -DKEYMAP_PLAIN
-plain: all
-
-poker: OPT_DEFS += -DKEYMAP_POKER
-poker: all
-
-poker_set: OPT_DEFS += -DKEYMAP_POKER_SET
-poker_set: all
-
-poker_bit: OPT_DEFS += -DKEYMAP_POKER_BIT
-poker_bit: all
diff --git a/keyboard/preonic/PCB_GUIDE.md b/keyboard/preonic/PCB_GUIDE.md
deleted file mode 100644 (file)
index c3004c7..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-# Planck Firmware Guide
-
-## Setting up the environment
-
-### Windows
-1. Install [WinAVR Tools](http://sourceforge.net/projects/winavr/) for AVR GCC compiler.
-2. Install [DFU-Programmer][dfu-prog] (the -win one).
-3. Start DFU bootloader on the chip first time you will see 'Found New Hardware Wizard' to install driver. If you install device driver properly you can find chip name like 'ATmega32U4' under 'LibUSB-Win32 Devices' tree on 'Device Manager'. If not you will need to update its driver on 'Device Manager' to the `dfu-programmer` driver.
-
-### Mac
-1. Install [CrossPack](http://www.obdev.at/products/crosspack/index.html) or install Xcode from the App Store and install the Command Line Tools from `Xcode->Preferences->Downloads`.
-2. Install [DFU-Programmer][dfu-prog].
-
-### Linux
-1. Install AVR GCC with your favorite package manager.
-2. Install [DFU-Programmer][dfu-prog].
-
-##Verify Your Installation
-1. Clone the following repository: https://github.com/jackhumbert/tmk_keyboard
-2. Open a Terminal and `cd` into `tmk_keyboard/keyboard/planck`
-3. Run `make`. This should output a lot of information about the build process.
-
-## Using the built-in functions
-
-Here is a list of some of the functions available from the command line:
-
-* `make clean`: clean the environment - may be required in-between builds
-* `make`: compile the code
-* `make COMMON=true`: compile with the common (non-extended) keymap
-* `make MATRIX=<matrix_file>`: compile with the referenced matrix file. Default if unspecified is `matrix_pcb.c`. For handwired boards, use `matrix_handwired.c`.
-* `make KEYMAP=<keymap>`: compile with the extended keymap file `extended_keymaps/extended_keymap_<keymap>.c`
-* `make COMMON=true KEYMAP=<keymap>`: compile with the common keymap file `common_keymaps/keymap_<keymap>.c`
-* `make dfu`: build and flash the layout to the PCB
-* `make dfu-force`: build and force-flash the layout to the PCB (may be require for first flash)
-
-Generally, the instructions to flash the PCB are as follows:
-
-1. Make changes to the appropriate keymap file
-2. Save the file
-3. `make clean`
-4. Press the reset button on the PCB/press the key with the `RESET` keycode
-5. `make <arguments> dfu` - use the necessary `KEYMAP=<keymap>` and/or `COMMON=true` arguments here.
-
-## Extended keymap
-
-### Keymap
-
-Unlike the common keymap, prefixing the keycodes with `KC_` is required. A full list of the keycodes is available [here](https://github.com/jackhumbert/tmk_keyboard/blob/master/doc/keycode.txt). For the keycodes available only in the extended keymap, see this [header file](https://github.com/jackhumbert/tmk_keyboard/blob/master/keyboard/planck/extended_keymap_common.h).
-
-You can use modifiers with keycodes like this:
-
-    LCTL(KC_C)
-    
-Which will generate Ctrl+c. These are daisy-chainable, meaning you can do things like:
-
-    LCTL(LALT(KC_C))
-    
-That will generate Ctrl+Alt+c. The entire list of these functions is here:
-
-* `LCTL()`: Left control
-* `LSFT()` / `S()`: Left shift
-* `LALT()`: Left alt/opt
-* `LGUI()`: Left win/cmd
-* `RCTL()`: Right control
-* `RSFT()`: Right shift
-* `RALT()`: Right alt/opt
-* `RGUI()`: Right win/cmd
-
-`S(KC_1)`-like entries are useful in writing keymaps for the Planck.
-
-### Other keycodes
-
-A number of other keycodes have been added that you may find useful:
-
-* `CM_<key>`: the Colemak equivalent of a key (in place of `KC_<key>`), when using Colemak in software (`CM_O` generates `KC_SCLN`)
-* `RESET`: jump to bootloader for flashing (same as press the reset button)
-* `BL_STEP`: step through the backlight brightnesses
-* `BL_<0-15>`: set backlight brightness to 0-15
-* `BL_DEC`: lower the backlight brightness
-* `BL_INC`: raise the backlight brightness
-* `BL_TOGG`: toggle the backlight on/off
-
-### Function layers
-
-The extended keymap extends the number of function layers from 32 to the near-infinite value of 256. Rather than using `FN<num>` notation (still available, but limited to `FN0`-`FN31`), you can use the `FUNC(<num>)` notation. `F(<num>)` is a shortcut for this.
-
-The function actions are unchanged, and you can see the full list of them [here](https://github.com/jackhumbert/tmk_keyboard/blob/master/common/action_code.h). They are explained in detail [here](https://github.com/jackhumbert/tmk_keyboard/blob/master/doc/keymap.md#2-action).
-
-### Macros
-
-Macros have been setup in the `extended_keymaps/extended_keymaps_default.c` file so that you can use `M(<num>)` to access a macro in the `action_get_macro` section on your keymap. The switch/case structure you see here is required, and is setup for `M(0)` - you'll need to copy and paste the code to look like this (e.g. to support `M(3)`):
-
-    switch(id) {
-      case 0:
-        return MACRODOWN(TYPE(KC_A), END);
-        break;
-      case 1:
-        return MACRODOWN(TYPE(KC_B), END);
-        break;
-      case 2:
-        return MACRODOWN(TYPE(KC_C), END);
-        break;
-      case 3:
-        return MACRODOWN(TYPE(KC_D), END);
-        break;
-    } 
-    return MACRO_NONE;
-
-`MACRODOWN()` is a shortcut for `(record->event.pressed ? MACRO(__VA_ARGS__) : MACRO_NONE)` which tells the macro to execute when the key is pressed. Without this, the macro will be executed on both the down and up stroke.
-
-[cygwin]:       https://www.cygwin.com/
-[mingw]:        http://www.mingw.org/
-[mhv]:          https://infernoembedded.com/products/avr-tools
-[winavr]:       http://winavr.sourceforge.net/
-[crosspack]:    http://www.obdev.at/products/crosspack/index.html
-[dfu-prog]:     http://dfu-programmer.sourceforge.net/
index ee824d26e0d16a50a62c3c72ae068011e3de7a55..4a33a3e4e08c37b23a3b912619d689e5ea224aa2 100644 (file)
@@ -1,56 +1,25 @@
-Planck keyboard firmware
+Preonic keyboard firmware
 ======================
-DIY/Assembled compact ortholinear 40% keyboard by [Ortholinear Keyboards](http://ortholinearkeyboards.com).
+DIY/Assembled compact ortholinear 50% keyboard by [Ortholinear Keyboards](http://ortholinearkeyboards.com).
 
-## Extended Keymap
-If you include extended_keymap_common.h instead of keymap_common.h at the top of your file, you'll have access to a bunch of goodies:
+## Quantum MK Firmware
 
-- Use `LSFT()`, `LCTL()`, et. al. (listed in extended_keymap_common.h) as modifiers for keys (daisy-chain-able)
-- Use `FUNC(1)` instead of `FN1` (etc.) to access the function layers beyond the 32 function layer limit
-- Use `CM_F` instead of `KC_F` to get the ColeMak equivilent for shortcuts (maps backwards)
-- Use `MACRODOWN()` instead of `MACRO()` to easily make a keydown macro (`CM_*` works here too)
+For the full Quantum feature list, see [the parent README.md](/README.md).
 
-### Some notes on usage:
+## Building
 
-- The `KEYMAP()` macro is unable to be used due to the bitwise modifications that take place - refer to extended_keymap_jack.c to see how to set things up with the `KC_` prefix
-- Keep an eye on the Makefile - this needs to include the correct files to work
-- Don't forget to use `const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {` instead of the 8bit equivilent
-
-## Build
-
-Follow [this guide](http://deskthority.net/workshop-f7/how-to-build-your-very-own-keyboard-firmware-t7177.html) to setup your development environment before anything else. Abbreviated instructions are provide at the [bottom of this document](https://github.com/rswiernik/tmk_keyboard/tree/rswiernik_dev/keyboard/planck#environment-setup)
-
-Download the whole firmware [here](https://github.com/jackhumbert/tmk_keyboard/archive/master.zip) and navigate to the keyboard/planck folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex that you can load with the Teensy app onto your Planck (once you've hit reset/shorted GND & RST). 
+Download or clone the whole firmware and navigate to the keyboard/preonic folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use `make dfu` to program your PCB once you hit the reset button. 
 
 Depending on which keymap you would like to use, you will have to compile slightly differently.
 
-####Default
-To build with the default keymap, simply move to the tmk\_keyboard/keyboard/planck/ and run `make` as follows:
-```
-$ make
-```
-
-## Keymap
-Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `keymap_<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
-    
-####**Extended Keymaps**
+### Default
+To build with the default keymap, simply run `make`.
 
-To build the firmware binary hex file with an extended keymap just do `make` with `KEYMAP` option like:
-```
-$ make KEYMAP=[common|jack|<name>]
-```
-_The only applicable keymaps will work with this option._ Extended keymaps follow the format **__extended\_keymap\_\<name\>.c__**
+### Other Keymaps
+Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap, create a file in the keymaps folder named `<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
 
-####**Common Keymaps**
-
-Building with a common keymap is as simple as adding the COMMON option. Note that only 
+To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like:
 ```
-$ make KEYMAP=[common|jack|<name>] COMMON=true
+$ make KEYMAP=[default|jack|<name>]
 ```
-_The only applicable keymaps will work with this option._ Common keymaps follow the format **__keymap\_\<name\>.c__**
-
-## Notable TMK forks (which some of the keymap files are from)
-- [Shane's Fork](https://github.com/shanecelis/tmk_keyboard/tree/master/keyboard/planck)
-- [Pierre's Fork](https://github.com/pcarrier/tmk_keyboard/blob/pcarrier/planck/keyboard/gh60/keymap_planck.c)
-- [Nathan's Fork](https://github.com/nathanrosspowell/tmk_keyboard/tree/planck-jack/keyboard/planck)
-- [Matthew's Fork](https://github.com/pepers/tmk_keyboard/tree/master/keyboard/planck_grid)
+Keymaps follow the format **__\<name\>.c__** and are stored in the `keymaps` folder.
diff --git a/keyboard/preonic/__avr_gdbinit b/keyboard/preonic/__avr_gdbinit
deleted file mode 100644 (file)
index afc51e6..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-define reset
-SIGNAL SIGHUP
-end
-file planck_lufa.elf
-target remote localhost:4242
-break main
diff --git a/keyboard/preonic/analog.c b/keyboard/preonic/analog.c
deleted file mode 100644 (file)
index 49b84ee..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-// Simple analog to digitial conversion
-
-#include <avr/io.h>
-#include <avr/pgmspace.h>
-#include <stdint.h>
-#include "analog.h"
-
-
-static uint8_t aref = (1<<REFS0); // default to AREF = Vcc
-
-
-void analogReference(uint8_t mode)
-{
-       aref = mode & 0xC0;
-}
-
-
-// Arduino compatible pin input
-int16_t analogRead(uint8_t pin)
-{
-#if defined(__AVR_ATmega32U4__)
-       static const uint8_t PROGMEM pin_to_mux[] = {
-               0x00, 0x01, 0x04, 0x05, 0x06, 0x07,
-               0x25, 0x24, 0x23, 0x22, 0x21, 0x20};
-       if (pin >= 12) return 0;
-       return adc_read(pgm_read_byte(pin_to_mux + pin));
-#elif defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__)
-       if (pin >= 8) return 0;
-       return adc_read(pin);
-#else
-       return 0;
-#endif
-}
-
-// Mux input
-int16_t adc_read(uint8_t mux)
-{
-#if defined(__AVR_AT90USB162__)
-       return 0;
-#else
-       uint8_t low;
-
-       ADCSRA = (1<<ADEN) | ADC_PRESCALER;             // enable ADC
-       ADCSRB = (1<<ADHSM) | (mux & 0x20);             // high speed mode
-       ADMUX = aref | (mux & 0x1F);                    // configure mux input
-       ADCSRA = (1<<ADEN) | ADC_PRESCALER | (1<<ADSC); // start the conversion
-       while (ADCSRA & (1<<ADSC)) ;                    // wait for result
-       low = ADCL;                                     // must read LSB first
-       return (ADCH << 8) | low;                       // must read MSB only once!
-#endif
-}
-
-
diff --git a/keyboard/preonic/analog.h b/keyboard/preonic/analog.h
deleted file mode 100644 (file)
index 9b95a93..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#ifndef _analog_h_included__
-#define _analog_h_included__
-
-#include <stdint.h>
-
-void analogReference(uint8_t mode);
-int16_t analogRead(uint8_t pin);
-int16_t adc_read(uint8_t mux);
-
-#define ADC_REF_POWER     (1<<REFS0)
-#define ADC_REF_INTERNAL  ((1<<REFS1) | (1<<REFS0))
-#define ADC_REF_EXTERNAL  (0)
-
-// These prescaler values are for high speed mode, ADHSM = 1
-#if F_CPU == 16000000L
-#define ADC_PRESCALER ((1<<ADPS2) | (1<<ADPS1))
-#elif F_CPU == 8000000L
-#define ADC_PRESCALER ((1<<ADPS2) | (1<<ADPS0))
-#elif F_CPU == 4000000L
-#define ADC_PRESCALER ((1<<ADPS2))
-#elif F_CPU == 2000000L
-#define ADC_PRESCALER ((1<<ADPS1) | (1<<ADPS0))
-#elif F_CPU == 1000000L
-#define ADC_PRESCALER ((1<<ADPS1))
-#else
-#define ADC_PRESCALER ((1<<ADPS0))
-#endif
-
-// some avr-libc versions do not properly define ADHSM
-#if defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB1286__)
-#if !defined(ADHSM)
-#define ADHSM (7)
-#endif
-#endif
-
-#endif
diff --git a/keyboard/preonic/beeps.c b/keyboard/preonic/beeps.c
deleted file mode 100644 (file)
index 8ffd70f..0000000
+++ /dev/null
@@ -1,246 +0,0 @@
-#include "beeps.h"
-#include <math.h>
-#include <avr/pgmspace.h>
-#include <avr/interrupt.h>
-#include <avr/io.h>
-
-#define PI 3.14159265
-
-void delay_us(int count) {
-  while(count--) {
-    _delay_us(1);
-  }
-}
-
-int voices = 0;
-double frequency = 0;
-int volume = 0;
-int position = 0;
-
-double frequencies[8] = {0, 0, 0, 0, 0, 0, 0, 0};
-int volumes[8] = {0, 0, 0, 0, 0, 0, 0, 0};
-bool sliding = false;
-#define RANGE 1000
-volatile int i=0; //elements of the wave
-
-
-void beeps() {
-    play_notes();
-}
-
-void send_freq(double freq, int vol) {
-    int duty = (((double)F_CPU) / freq);
-    ICR3 = duty; // Set max to the period
-    OCR3A = duty >> (0x10 - vol); // Set compare to half the period
-}
-
-void stop_all_notes() {
-    voices = 0;
-    TCCR3A = 0;
-    TCCR3B = 0;
-    frequency = 0;
-    volume = 0;
-
-    for (int i = 0; i < 8; i++) {
-        frequencies[i] = 0;
-        volumes[i] = 0;
-    }
-}
-
-void stop_note(double freq) {
-    for (int i = 7; i >= 0; i--) {
-        if (frequencies[i] == freq) {
-            frequencies[i] = 0;
-            volumes[i] = 0;
-            for (int j = i; (j < 7); j++) {
-                frequencies[j] = frequencies[j+1];
-                frequencies[j+1] = 0;
-                volumes[j] = volumes[j+1];
-                volumes[j+1] = 0;
-            }
-        }
-    }
-    voices--;
-    if (voices < 0)
-        voices = 0;
-    if (voices == 0) {
-        TCCR3A = 0;
-        TCCR3B = 0;
-        frequency = 0;
-        volume = 0;
-    } else {
-        double freq = frequencies[voices - 1];
-        int vol = volumes[voices - 1];
-        if (frequency < freq) {
-            sliding = true;
-            for (double f = frequency; f <= freq; f += ((freq - frequency) / 500.0)) {
-                send_freq(f, vol);
-            }
-            sliding = false;
-        } else if (frequency > freq) {
-            sliding = true;
-            for (double f = frequency; f >= freq; f -= ((frequency - freq) / 500.0)) {
-                send_freq(f, vol);
-            }
-            sliding = false;
-        }
-        send_freq(freq, vol);
-        frequency = freq;
-        volume = vol;
-    }
-}
-
-void init_notes() {
-    // TCCR1A = (1 << COM1A1) | (0 << COM1A0) | (1 << WGM11) | (1 << WGM10);
-    // TCCR1B = (1 << COM1B1) | (0 << COM1A0) | (1 << WGM13) | (1 << WGM12) | (0 << CS12) | (0 << CS11) | (1 << CS10);
-
-    // DDRC |= (1<<6); 
-
-    // TCCR3A = (1 << COM3A1) | (0 << COM3A0) | (1 << WGM31) | (0 << WGM30);
-    // TCCR3B = (1 << WGM33) | (1 << WGM32) | (0 << CS32) | (0 << CS31) | (1 << CS30);
-
-    // ICR3 = 0xFFFF; 
-    // OCR3A = (int)((float)wave[i]*ICR3/RANGE); //go to next array element
-
-
-    // cli();
-
-    // /* Enable interrupt on timer2 == 127, with clk/8 prescaler. At 16MHz,
-    //    this gives a timer interrupt at 15625Hz. */
-    // TIMSK3 = (1 << OCIE3A);
-
-    // /* clear/reset timer on match */
-    // // TCCR3A = 1<<WGM31 | 0<<WGM30;  CTC mode, reset on match 
-    // // TCCR3B = 0<<CS32 | 1<<CS31 | 0<<CS30; /* clk, /8 prescaler */
-
-    // TCCR3A = (1 << COM3A1) | (0 << COM3A0) | (1 << WGM31) | (0 << WGM30);
-    // TCCR3B = (0 << WGM33) | (0 << WGM32) | (0 << CS32) | (0 << CS31) | (1 << CS30);
-
-
-    // TCCR1A = (1 << COM1A1) | (0 << COM1A0) | (1 << WGM11) | (0 << WGM10);
-    // TCCR1B = (1 << WGM12) | (0 << CS12) | (0 << CS11) | (1 << CS10);
-    // // SPCR = 0x50;
-    // // SPSR = 0x01;
-    // DDRC |= (1<<6);
-    // // ICR3 = 0xFFFF; 
-    // // OCR3A=80;
-    // PORTC |= (1<<6);
-
-    // sei();
-}
-
-// #define highByte(c) ((c >> 8) & 0x00FF)
-// #define lowByte(c) (c & 0x00FF)
-
-ISR(TIMER3_COMPA_vect) {
-
-    if (ICR3 > 0 && !sliding) {
-        switch (position) {
-            case 0: {
-                int duty = (((double)F_CPU) / (frequency));
-                ICR3 = duty; // Set max to the period
-                OCR3A = duty >> 1; // Set compare to half the period
-                break;
-            }
-            case 1: {
-                int duty = (((double)F_CPU) / (frequency*2));
-                ICR3 = duty; // Set max to the period
-                OCR3A = duty >> 1; // Set compare to half the period
-                break;
-            }
-            case 2: {
-                int duty = (((double)F_CPU) / (frequency*3));
-                ICR3 = duty; // Set max to the period
-                OCR3A = duty >> 1; // Set compare to half the period
-                break;
-            }
-        }
-        position = (position + 1) % 3;
-    }
-//     /* OCR2A has been cleared, per TCCR2A above */
-//     // OCR3A = 127;
-
-//     // pos1 += incr1;
-//     // pos2 += incr2;
-//     // pos3 += incr3;
-
-//     // sample = sinewave[highByte(pos1)] + sinewave[highByte(pos2)] + sinewave[highByte(pos3)];
-
-//     // OCR3A = sample;
-
-
-//     OCR3A=pgm_read_byte(&sinewave[pos1]);
-//     pos1++;
-//     // PORTC &= ~(1<<6);
-
-//     /* buffered, 1x gain, active mode */
-//     // SPDR = highByte(sample) | 0x70;
-//     // while (!(SPSR & (1<<SPIF)));
-
-//     // SPDR = lowByte(sample);
-//     // while (!(SPSR & (1<<SPIF)));
-
-//     // PORTC |= (1<<6);
-}
-
-void play_note(double freq, int vol) {
-
-    if (freq > 0) {
-        DDRC |= (1<<6); 
-
-        TCCR3A = (1 << COM3A1) | (0 << COM3A0) | (1 << WGM31) | (0 << WGM30);
-        TCCR3B = (1 << WGM33) | (1 << WGM32) | (0 << CS32) | (1 << CS31) | (0 << CS30);
-
-        if (frequency != 0) {
-            if (frequency < freq) {
-                for (double f = frequency; f <= freq; f += ((freq - frequency) / 500.0)) {
-                    send_freq(f, vol);
-                }
-            } else if (frequency > freq) {
-                for (double f = frequency; f >= freq; f -= ((frequency - freq) / 500.0)) {
-                    send_freq(f, vol);
-                }
-            }
-        }
-        send_freq(freq, vol);
-        frequency = freq;
-        volume = vol;
-
-        frequencies[voices] = frequency;
-        volumes[voices] = volume;
-        voices++;
-    }
-    // ICR3 = 0xFFFF;
-    // for (int i = 0; i < 10000; i++) {
-    //     OCR3A = round((sin(i*freq)*.5)+.5)*0xFFFF;
-    //     // _delay_us(50);
-    // }
-
-    // TCCR3A = 0;
-    // TCCR3B = 0;
-}
-
-// void note(int x, float length) {
-//     DDRC |= (1<<6);
-//  int t = (int)(440*pow(2,-x/12.0)); // starting note
-//     for (int y = 0; y < length*1000/t; y++) { // note length
-//         PORTC |= (1<<6);
-//         delay_us(t);
-//         PORTC &= ~(1<<6);
-//         delay_us(t);
-//     }
-//  PORTC &= ~(1<<6);
-// }
-
-// void true_note(float x, float y, float length) {
-//  for (uint32_t i = 0; i < length * 50; i++) {
-//      uint32_t v = (uint32_t) (round(sin(PI*2*i*640000*pow(2, x/12.0))*.5+1 + sin(PI*2*i*640000*pow(2, y/12.0))*.5+1) / 2 * pow(2, 8)); 
-//      for (int u = 0; u < 8; u++) {
-//          if (v & (1 << u) && !(PORTC&(1<<6)))
-//              PORTC |= (1<<6);
-//          else if (PORTC&(1<<6))
-//              PORTC &= ~(1<<6);
-//      }
-//  }
-//  PORTC &= ~(1<<6);
-// }
\ No newline at end of file
diff --git a/keyboard/preonic/beeps.h b/keyboard/preonic/beeps.h
deleted file mode 100644 (file)
index 378983c..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#include <stdint.h>
-#include <stdbool.h>
-#include <avr/io.h>
-#include <util/delay.h>
-
-void note(int x, float length);
-void beeps();
-void true_note(float x, float y, float length);
-void play_note(double freq, int vol);
-void stop_note(double freq);
-void stop_all_notes();
-void init_notes();
\ No newline at end of file
index cad269c9d4c91fa747e55afdc926a68d2d3eb6e2..5528667fa726187d1743571b4b343476a71cfcb7 100644 (file)
@@ -18,11 +18,11 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #ifndef CONFIG_H
 #define CONFIG_H
 
-#include "config_definitions.h"
+#include "config_common.h"
 
 /* USB Device descriptor parameter */
 #define VENDOR_ID       0xFEED
-#define PRODUCT_ID      0x6062
+#define PRODUCT_ID      0x6061
 #define DEVICE_VER      0x0001
 #define MANUFACTURER    Ortholinear Keyboards
 #define PRODUCT         The Preonic Keyboard
@@ -34,7 +34,10 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 /* Planck PCB default pin-out */
 #define COLS (int []){ F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 }
-#define ROWS (int []){ D1, D0, D5, B5, B6 }
+#define ROWS (int []){ D2, D5, B5, B6, D3 }
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
 
 /* define if matrix has ghost */
 //#define MATRIX_HAS_GHOST
@@ -55,6 +58,15 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
     keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
 )
 
+/* ws2812 RGB LED */
+#define ws2812_PORTREG  PORTD
+#define ws2812_DDRREG   DDRD
+#define ws2812_pin PD1
+#define RGBLED_NUM 28     // Number of LEDs
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+#define RGBLIGHT_VAL_STEP 17
+
 /*
  * Feature disable options
  *  These options are also useful to firmware size reduction.
diff --git a/keyboard/preonic/config_definitions.h b/keyboard/preonic/config_definitions.h
deleted file mode 100644 (file)
index fd138b8..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-#ifndef CONFIG_DEFINITIONS_H
-#define CONFIG_DEFINITIONS_H
-
-#define B0 0x20
-#define B1 0x21
-#define B2 0x22
-#define B3 0x23
-#define B4 0x24
-#define B5 0x25
-#define B6 0x26
-#define B7 0x27
-#define C0 0x30
-#define C1 0x31
-#define C2 0x32
-#define C3 0x33
-#define C4 0x34
-#define C5 0x35
-#define C6 0x36
-#define C7 0x37
-#define D0 0x40
-#define D1 0x41
-#define D2 0x42
-#define D3 0x43
-#define D4 0x44
-#define D5 0x45
-#define D6 0x46
-#define D7 0x47
-#define E0 0x50
-#define E1 0x51
-#define E2 0x52
-#define E3 0x53
-#define E4 0x54
-#define E5 0x55
-#define E6 0x56
-#define E7 0x57
-#define F0 0x60
-#define F1 0x61
-#define F2 0x62
-#define F3 0x63
-#define F4 0x64
-#define F5 0x65
-#define F6 0x66
-#define F7 0x67
-
-
-
-
-
-#endif
-
diff --git a/keyboard/preonic/extended_keymap_common.c b/keyboard/preonic/extended_keymap_common.c
deleted file mode 100644 (file)
index 4fa80de..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
-Copyright 2012,2013 Jun Wako <wakojun@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "extended_keymap_common.h"
-#include "report.h"
-#include "keycode.h"
-#include "action_layer.h"
-#include "action.h"
-#include "action_macro.h"
-#include "debug.h"
-#include "backlight.h"
-#include "keymap_midi.h"
-#include <lufa.h>
-
-static action_t keycode_to_action(uint16_t keycode);
-
-/* converts key to action */
-action_t action_for_key(uint8_t layer, keypos_t key)
-{
-       // 16bit keycodes - important
-    uint16_t keycode = keymap_key_to_keycode(layer, key);
-
-    if (keycode >= 0x0100 && keycode < 0x2000) {
-       // Has a modifier
-       action_t action;
-       // Split it up
-       action.code = ACTION_MODS_KEY(keycode >> 8, keycode & 0xFF);
-       return action;
-       } else if (keycode >= 0x2000 && keycode < 0x3000) {
-               // Is a shortcut for function layer, pull last 12bits
-        return keymap_func_to_action(keycode & 0xFFF);
-       } else if (keycode >= 0x3000 && keycode < 0x4000) {
-       action_t action;
-       action.code = ACTION_MACRO(keycode & 0xFF);
-       return action;
-       } else if (keycode >= BL_0 & keycode <= BL_15) {
-        action_t action;
-        action.code = ACTION_BACKLIGHT_LEVEL(keycode & 0x000F);
-        return action;
-    } else if (keycode == BL_DEC) {
-        action_t action;
-        action.code = ACTION_BACKLIGHT_DECREASE();
-        return action;
-    } else if (keycode == BL_INC) {
-        action_t action;
-        action.code = ACTION_BACKLIGHT_INCREASE();
-        return action;
-    } else if (keycode == BL_TOGG) {
-        action_t action;
-        action.code = ACTION_BACKLIGHT_TOGGLE();
-        return action;
-    } else if (keycode == BL_STEP) {
-        action_t action;
-        action.code = ACTION_BACKLIGHT_STEP();
-        return action;
-    } else if (keycode == RESET) {
-        bootloader_jump();
-        return;
-    } else if (keycode == DEBUG) {
-        print("\nDEBUG: enabled.\n");
-        debug_enable = true;
-        return;
-    } else if (keycode >= 0x6000 && keycode < 0x7000) {
-        action_t action;
-        action.code =  ACTION_FUNCTION_OPT(keycode & 0xFF, (keycode & 0x0F00) >> 8);
-        return action;
-    }
-
-    switch (keycode) {
-        case KC_FN0 ... KC_FN31:
-            return keymap_fn_to_action(keycode);
-#ifdef BOOTMAGIC_ENABLE
-        case KC_CAPSLOCK:
-        case KC_LOCKING_CAPS:
-            if (keymap_config.swap_control_capslock || keymap_config.capslock_to_control) {
-                return keycode_to_action(KC_LCTL);
-            }
-            return keycode_to_action(keycode);
-        case KC_LCTL:
-            if (keymap_config.swap_control_capslock) {
-                return keycode_to_action(KC_CAPSLOCK);
-            }
-            return keycode_to_action(KC_LCTL);
-        case KC_LALT:
-            if (keymap_config.swap_lalt_lgui) {
-                if (keymap_config.no_gui) {
-                    return keycode_to_action(ACTION_NO);
-                }
-                return keycode_to_action(KC_LGUI);
-            }
-            return keycode_to_action(KC_LALT);
-        case KC_LGUI:
-            if (keymap_config.swap_lalt_lgui) {
-                return keycode_to_action(KC_LALT);
-            }
-            if (keymap_config.no_gui) {
-                return keycode_to_action(ACTION_NO);
-            }
-            return keycode_to_action(KC_LGUI);
-        case KC_RALT:
-            if (keymap_config.swap_ralt_rgui) {
-                if (keymap_config.no_gui) {
-                    return keycode_to_action(ACTION_NO);
-                }
-                return keycode_to_action(KC_RGUI);
-            }
-            return keycode_to_action(KC_RALT);
-        case KC_RGUI:
-            if (keymap_config.swap_ralt_rgui) {
-                return keycode_to_action(KC_RALT);
-            }
-            if (keymap_config.no_gui) {
-                return keycode_to_action(ACTION_NO);
-            }
-            return keycode_to_action(KC_RGUI);
-        case KC_GRAVE:
-            if (keymap_config.swap_grave_esc) {
-                return keycode_to_action(KC_ESC);
-            }
-            return keycode_to_action(KC_GRAVE);
-        case KC_ESC:
-            if (keymap_config.swap_grave_esc) {
-                return keycode_to_action(KC_GRAVE);
-            }
-            return keycode_to_action(KC_ESC);
-        case KC_BSLASH:
-            if (keymap_config.swap_backslash_backspace) {
-                return keycode_to_action(KC_BSPACE);
-            }
-            return keycode_to_action(KC_BSLASH);
-        case KC_BSPACE:
-            if (keymap_config.swap_backslash_backspace) {
-                return keycode_to_action(KC_BSLASH);
-            }
-            return keycode_to_action(KC_BSPACE);
-#endif
-        default:
-            return keycode_to_action(keycode);
-    }
-}
-
-
-/* Macro */
-__attribute__ ((weak))
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-    return MACRO_NONE;
-}
-
-/* Function */
-__attribute__ ((weak))
-void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-}
-
-/* translates keycode to action */
-static action_t keycode_to_action(uint16_t keycode)
-{
-    action_t action;
-    switch (keycode) {
-        case KC_A ... KC_EXSEL:
-        case KC_LCTRL ... KC_RGUI:
-            action.code = ACTION_KEY(keycode);
-            break;
-        case KC_SYSTEM_POWER ... KC_SYSTEM_WAKE:
-            action.code = ACTION_USAGE_SYSTEM(KEYCODE2SYSTEM(keycode));
-            break;
-        case KC_AUDIO_MUTE ... KC_WWW_FAVORITES:
-            action.code = ACTION_USAGE_CONSUMER(KEYCODE2CONSUMER(keycode));
-            break;
-        case KC_MS_UP ... KC_MS_ACCEL2:
-            action.code = ACTION_MOUSEKEY(keycode);
-            break;
-        case KC_TRNS:
-            action.code = ACTION_TRANSPARENT;
-            break;
-        default:
-            action.code = ACTION_NO;
-            break;
-    }
-    return action;
-}
-
-
-/* translates key to keycode */
-uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key)
-{
-       // Read entire word (16bits)
-    return pgm_read_word(&keymaps[(layer)][(key.row)][(key.col)]);
-}
-
-/* translates Fn keycode to action */
-action_t keymap_fn_to_action(uint16_t keycode)
-{
-    return (action_t){ .code = pgm_read_word(&fn_actions[FN_INDEX(keycode)]) };
-}
-
-action_t keymap_func_to_action(uint16_t keycode)
-{
-       // For FUNC without 8bit limit
-    return (action_t){ .code = pgm_read_word(&fn_actions[(int)keycode]) };
-}
diff --git a/keyboard/preonic/extended_keymap_common.h b/keyboard/preonic/extended_keymap_common.h
deleted file mode 100644 (file)
index 7ccfa1b..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
-Copyright 2012,2013 Jun Wako <wakojun@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef KEYMAP_H
-#define KEYMAP_H
-
-#include <stdint.h>
-#include <stdbool.h>
-#include "action.h"
-#include <avr/pgmspace.h>
-#include "keycode.h"
-#include "keymap.h"
-#include "action_macro.h"
-#include "report.h"
-#include "host.h"
-// #include "print.h"
-#include "debug.h"
-
-#ifdef BOOTMAGIC_ENABLE
-/* NOTE: Not portable. Bit field order depends on implementation */
-typedef union {
-    uint16_t raw;
-    struct {
-        bool swap_control_capslock:1;
-        bool capslock_to_control:1;
-        bool swap_lalt_lgui:1;
-        bool swap_ralt_rgui:1;
-        bool no_gui:1;
-        bool swap_grave_esc:1;
-        bool swap_backslash_backspace:1;
-        bool nkro:1;
-    };
-} keymap_config_t;
-keymap_config_t keymap_config;
-#endif
-
-
-/* translates key to keycode */
-uint16_t keymap_key_to_keycode(uint8_t layer, keypos_t key);
-
-/* translates Fn keycode to action */
-action_t keymap_fn_to_action(uint16_t keycode);
-
-/* translates Fn keycode to action */
-action_t keymap_func_to_action(uint16_t keycode);
-
-extern const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS];
-extern const uint16_t fn_actions[];
-
-// Ability to use mods in layouts
-#define LCTL(kc) kc | 0x0100
-#define LSFT(kc) kc | 0x0200
-#define LALT(kc) kc | 0x0400
-#define LGUI(kc) kc | 0x0800
-#define RCTL(kc) kc | 0x1100
-#define RSFT(kc) kc | 0x1200
-#define RALT(kc) kc | 0x1400
-#define RGUI(kc) kc | 0x1800
-
-// Alias for function layers than expand past FN31
-#define FUNC(kc) kc | 0x2000
-
-// Aliases
-#define S(kc) LSFT(kc)
-#define F(kc) FUNC(kc)
-
-// For software implementation of colemak
-#define CM_Q    KC_Q
-#define CM_W    KC_W
-#define CM_F    KC_E
-#define CM_P    KC_R
-#define CM_G    KC_T
-#define CM_J    KC_Y
-#define CM_L    KC_U
-#define CM_U    KC_I
-#define CM_Y    KC_O
-#define CM_SCLN KC_P
-
-#define CM_A    KC_A
-#define CM_R    KC_S
-#define CM_S    KC_D
-#define CM_T    KC_F
-#define CM_D    KC_G
-#define CM_H    KC_H
-#define CM_N    KC_J
-#define CM_E    KC_K
-#define CM_I    KC_L
-#define CM_O    KC_SCLN
-
-#define CM_Z    KC_Z
-#define CM_X    KC_X
-#define CM_C    KC_C
-#define CM_V    KC_V
-#define CM_B    KC_B
-#define CM_K    KC_N
-#define CM_M    KC_M
-#define CM_COMM KC_COMM
-#define CM_DOT  KC_DOT
-#define CM_SLSH KC_SLSH
-
-// Make it easy to support these in macros
-#define KC_CM_Q    CM_Q    
-#define KC_CM_W    CM_W    
-#define KC_CM_F    CM_F    
-#define KC_CM_P    CM_P    
-#define KC_CM_G    CM_G    
-#define KC_CM_J    CM_J    
-#define KC_CM_L    CM_L    
-#define KC_CM_U    CM_U    
-#define KC_CM_Y    CM_Y    
-#define KC_CM_SCLN CM_SCLN 
-
-#define KC_CM_A    CM_A    
-#define KC_CM_R    CM_R    
-#define KC_CM_S    CM_S    
-#define KC_CM_T    CM_T    
-#define KC_CM_D    CM_D    
-#define KC_CM_H    CM_H    
-#define KC_CM_N    CM_N    
-#define KC_CM_E    CM_E    
-#define KC_CM_I    CM_I    
-#define KC_CM_O    CM_O    
-
-#define KC_CM_Z    CM_Z    
-#define KC_CM_X    CM_X    
-#define KC_CM_C    CM_C    
-#define KC_CM_V    CM_V    
-#define KC_CM_B    CM_B    
-#define KC_CM_K    CM_K    
-#define KC_CM_M    CM_M    
-#define KC_CM_COMM CM_COMM 
-#define KC_CM_DOT  CM_DOT  
-#define KC_CM_SLSH CM_SLSH 
-
-#define M(kc) kc | 0x3000
-
-#define MACRODOWN(...) (record->event.pressed ? MACRO(__VA_ARGS__) : MACRO_NONE)
-
-#define BL_ON 0x4009
-#define BL_OFF 0x4000
-#define BL_0 0x4000
-#define BL_1 0x4001
-#define BL_2 0x4002
-#define BL_3 0x4003
-#define BL_4 0x4004
-#define BL_5 0x4005
-#define BL_6 0x4006
-#define BL_7 0x4007
-#define BL_8 0x4008
-#define BL_9 0x4009
-#define BL_10 0x400A
-#define BL_11 0x400B
-#define BL_12 0x400C
-#define BL_13 0x400D
-#define BL_14 0x400E
-#define BL_15 0x400F
-#define BL_DEC 0x4010
-#define BL_INC 0x4011
-#define BL_TOGG 0x4012
-#define BL_STEP 0x4013
-
-#define RESET 0x5000
-#define DEBUG 0x5001
-
-#define MIDI(n) n | 0x6000
-
-#endif
diff --git a/keyboard/preonic/extended_keymaps/extended_keymap_default.c b/keyboard/preonic/extended_keymaps/extended_keymap_default.c
deleted file mode 100644 (file)
index b52f60f..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-#include "extended_keymap_common.h"
-#include "backlight.h"
-#include "lufa.h"
-#include "debug.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = { /* Qwerty */
-  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,   KC_DEL},
-  {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,   KC_BSPC},
-  {KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN,  KC_QUOT},
-  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT},
-  {M(0), KC_LCTL, KC_LALT, KC_LGUI, FUNC(2),    KC_SPC,   KC_SPC,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
-                                                // Space is repeated to accommadate for both spacebar wiring positions
-},
-[1] = { /* Colemak */
-  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,   KC_DEL},
-  {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
-  {KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,     KC_QUOT},
-  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT},
-  {KC_FN3, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2),    KC_SPC,   KC_SPC,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
-},
-[2] = { /* RAISE */
-  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,   KC_DEL},
-  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
-  {KC_TRNS, FUNC(3), FUNC(4), RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
-  {KC_TRNS, KC_F11,  KC_F12,  KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS, KC_TRNS},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS,   KC_TRNS,  FUNC(1),   KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
-},
-[3] = { /* LOWER */
-  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,   KC_DEL},
-  {S(KC_GRV),  S(KC_1),    S(KC_2),    S(KC_3),    S(KC_4),    S(KC_5),    S(KC_6),    S(KC_7),    S(KC_8),    S(KC_9),    S(KC_0), KC_BSPC},
-  {KC_TRNS, FUNC(3), FUNC(4), RESET, KC_TRNS, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL),  S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)},
-  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_TRNS},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2),   KC_TRNS,   KC_TRNS,   KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
-},
-[4] = { /* TENKEY */
-  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,   KC_DEL},
-  {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_KP_7,    KC_KP_8,    KC_KP_9,    KC_P,   KC_BSPC},
-  {KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_KP_4,    KC_KP_5,    KC_KP_6,    KC_SCLN,  KC_QUOT},
-  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_KP_1,    KC_KP_2,    KC_KP_3,  KC_SLSH, KC_ENT},
-  {KC_TRNS, KC_LCTL, KC_LALT, KC_LGUI, KC_TRNS,    KC_SPC,   KC_SPC, KC_KP_0,   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
-}
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_MOMENTARY(2),  // to RAISE
-    [2] = ACTION_LAYER_MOMENTARY(3),  // to LOWER
-
-    [3] = ACTION_DEFAULT_LAYER_SET(0),
-    [4] = ACTION_DEFAULT_LAYER_SET(1),
-
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) 
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:   
-        if (record->event.pressed) {
-          register_code(KC_RSFT);
-          midi_send_noteon(&midi_device, 1, 64, 127);
-          backlight_step();
-        } else {
-          unregister_code(KC_RSFT);
-          midi_send_noteoff(&midi_device, 1, 64, 127);
-        }
-        break;
-      } 
-    return MACRO_NONE;
-};
diff --git a/keyboard/preonic/extended_keymaps/extended_keymap_lock.c b/keyboard/preonic/extended_keymaps/extended_keymap_lock.c
deleted file mode 100644 (file)
index ec7bc77..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-#include "extended_keymap_common.h"
-#include "backlight.h"
-#include "action_layer.h"
-#include "keymap_midi.h"
-#include "beeps.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = { /* Qwerty */
-  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,   KC_BSPC},
-  {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,   KC_BSPC},
-  {KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN,  KC_QUOT},
-  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT},
-  {M(0), KC_LCTL, KC_LALT, KC_LGUI, FUNC(2),    KC_SPC,   KC_SPC,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
-                                                // Space is repeated to accommadate for both spacebar wiring positions
-},
-[1] = { /* Colemak */
-  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,   KC_BSPC},
-  {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
-  {KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,     KC_QUOT},
-  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT},
-  {KC_FN3, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2),    KC_SPC,   KC_SPC,    FUNC(1),   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
-},
-[2] = { /* RAISE */
-  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,   KC_BSPC},
-  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
-  {KC_TRNS, FUNC(3), FUNC(4), RESET, KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
-  {KC_TRNS, KC_F11,  KC_F12,  KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS,   KC_TRNS, KC_TRNS},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,    KC_TRNS,   KC_TRNS,  FUNC(1),   KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
-},
-[3] = { /* LOWER */
-  {KC_GRV,  S(KC_1),    S(KC_2),    S(KC_3),    S(KC_4),    S(KC_5),    S(KC_6),    S(KC_7),    S(KC_8),    S(KC_9),    S(KC_0),   KC_BSPC},
-  {S(KC_GRV),  S(KC_1),    S(KC_2),    S(KC_3),    S(KC_4),    S(KC_5),    S(KC_6),    S(KC_7),    S(KC_8),    S(KC_9),    S(KC_0), KC_BSPC},
-  {KC_TRNS, FUNC(3), FUNC(4), RESET, KC_TRNS, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL),  S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)},
-  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_TRNS},
-  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2),   KC_TRNS,   KC_TRNS,   KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
-},
-[4] = { /* TENKEY */
-  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,   KC_BSPC},
-  {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_KP_7,    KC_KP_8,    KC_KP_9,    KC_P,   KC_BSPC},
-  {KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_KP_4,    KC_KP_5,    KC_KP_6,    KC_SCLN,  KC_QUOT},
-  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_KP_1,    KC_KP_2,    KC_KP_3,  KC_SLSH, KC_ENT},
-  {KC_TRNS, KC_LCTL, KC_LALT, KC_LGUI, KC_TRNS,    KC_SPC,   KC_SPC, KC_KP_0,   KC_LEFT, KC_DOWN, KC_UP,  KC_RGHT}
-},
-[5] = {
-  { MIDI12 },
-  { MIDI12 },
-  { MIDI12 },
-  { MIDI12 },
-  {M(0), KC_LCTL, KC_LALT, KC_LGUI, FUNC(2),    KC_SPC,   KC_SPC,    FUNC(1),   MIDI, MIDI, MIDI,  MIDI}
-}
-
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [1] = ACTION_LAYER_MOMENTARY(2),  // to RAISE
-    [2] = ACTION_LAYER_MOMENTARY(3),  // to LOWER
-
-    [3] = ACTION_DEFAULT_LAYER_SET(0),
-    [4] = ACTION_DEFAULT_LAYER_SET(1),
-
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) 
-{
-      switch(id) {
-        case 0:   
-        if (record->event.pressed) {
-          // register_code(KC_RSFT);
-          backlight_set(BACKLIGHT_LEVELS);
-          default_layer_and(0); 
-          default_layer_or((1<<5));
-        } else {
-          // unregister_code(KC_RSFT);
-          backlight_set(0);
-          default_layer_and(0); 
-          default_layer_or(0);
-        }
-        break;
-      } 
-    return MACRO_NONE;
-};
diff --git a/keyboard/preonic/flash-pcb.sh b/keyboard/preonic/flash-pcb.sh
new file mode 100755 (executable)
index 0000000..8b59b83
--- /dev/null
@@ -0,0 +1,3 @@
+dfu-programmer atmega32u4 erase --force
+dfu-programmer atmega32u4 flash preonic_pcb.hex
+dfu-programmer atmega32u4 reset
\ No newline at end of file
diff --git a/keyboard/preonic/keymap_midi.c b/keyboard/preonic/keymap_midi.c
deleted file mode 100644 (file)
index a0fa599..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
-Copyright 2015 Jack Humbert <jack.humb@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "extended_keymap_common.h"
-#include "keymap_midi.h"
-#include <lufa.h>
-
-uint8_t starting_note = 0x0C;
-int offset = 7;
-
-void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-    if (id != 0) {
-        if (record->event.pressed) {
-            midi_send_noteon(&midi_device, opt, (id & 0xFF), 127);
-        } else {
-            midi_send_noteoff(&midi_device, opt, (id & 0xFF), 127);
-        }
-    }
-
-    if (record->event.key.col == (MATRIX_COLS - 1) && record->event.key.row == (MATRIX_ROWS - 1)) {
-        if (record->event.pressed) {
-            starting_note++;
-            play_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[0 + offset])/12.0+(MATRIX_ROWS - 1)), 0xC);
-            midi_send_cc(&midi_device, 0, 0x7B, 0);
-            midi_send_cc(&midi_device, 1, 0x7B, 0);
-            midi_send_cc(&midi_device, 2, 0x7B, 0);
-            midi_send_cc(&midi_device, 3, 0x7B, 0);
-            midi_send_cc(&midi_device, 4, 0x7B, 0);
-            return;
-        } else {
-            stop_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[0 + offset])/12.0+(MATRIX_ROWS - 1)));
-            stop_all_notes();
-            return;
-        }
-    }
-    if (record->event.key.col == (MATRIX_COLS - 2) && record->event.key.row == (MATRIX_ROWS - 1)) {
-        if (record->event.pressed) {
-            starting_note--;
-            play_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[0 + offset])/12.0+(MATRIX_ROWS - 1)), 0xC);
-            midi_send_cc(&midi_device, 0, 0x7B, 0);
-            midi_send_cc(&midi_device, 1, 0x7B, 0);
-            midi_send_cc(&midi_device, 2, 0x7B, 0);
-            midi_send_cc(&midi_device, 3, 0x7B, 0);
-            midi_send_cc(&midi_device, 4, 0x7B, 0);
-            return;
-        } else {
-            stop_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[0 + offset])/12.0+(MATRIX_ROWS - 1)));
-            stop_all_notes();
-            return;
-        }
-    }
-
-    if (record->event.key.col == (MATRIX_COLS - 3) && record->event.key.row == (MATRIX_ROWS - 1) && record->event.pressed) {
-        offset++;
-        midi_send_cc(&midi_device, 0, 0x7B, 0);
-        midi_send_cc(&midi_device, 1, 0x7B, 0);
-        midi_send_cc(&midi_device, 2, 0x7B, 0);
-        midi_send_cc(&midi_device, 3, 0x7B, 0);
-        midi_send_cc(&midi_device, 4, 0x7B, 0);
-        stop_all_notes();
-        for (int i = 0; i <= 7; i++) {
-            play_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[i + offset])/12.0+(MATRIX_ROWS - 1)), 0xC);
-            _delay_us(80000);
-            stop_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[i + offset])/12.0+(MATRIX_ROWS - 1)));
-            _delay_us(8000);
-        }
-        return;
-    }
-    if (record->event.key.col == (MATRIX_COLS - 4) && record->event.key.row == (MATRIX_ROWS - 1) && record->event.pressed) {
-        offset--;
-        midi_send_cc(&midi_device, 0, 0x7B, 0);
-        midi_send_cc(&midi_device, 1, 0x7B, 0);
-        midi_send_cc(&midi_device, 2, 0x7B, 0);
-        midi_send_cc(&midi_device, 3, 0x7B, 0);
-        midi_send_cc(&midi_device, 4, 0x7B, 0);
-        stop_all_notes();
-        for (int i = 0; i <= 7; i++) {
-            play_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[i + offset])/12.0+(MATRIX_ROWS - 1)), 0xC);
-            _delay_us(80000);
-            stop_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[i + offset])/12.0+(MATRIX_ROWS - 1)));
-            _delay_us(8000);
-        }
-        return;
-    }
-
-    if (record->event.pressed) {
-        // midi_send_noteon(&midi_device, record->event.key.row, starting_note + SCALE[record->event.key.col], 127);
-        midi_send_noteon(&midi_device, 0, (starting_note + SCALE[record->event.key.col + offset])+12*(MATRIX_ROWS - record->event.key.row), 127);
-        play_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF);
-    } else {
-        // midi_send_noteoff(&midi_device, record->event.key.row, starting_note + SCALE[record->event.key.col], 127);
-        midi_send_noteoff(&midi_device, 0, (starting_note + SCALE[record->event.key.col + offset])+12*(MATRIX_ROWS - record->event.key.row), 127);
-        stop_note(((double)261.6)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)));
-    }
-}
\ No newline at end of file
diff --git a/keyboard/preonic/keymap_midi.h b/keyboard/preonic/keymap_midi.h
deleted file mode 100644 (file)
index c5917f8..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
-Copyright 2015 Jack Humbert <jack.humb@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef KEYMAP_MIDI_H
-#define KEYMAP_MIDI_H
-
-#define MIDI 0x6000
-#define MIDI12 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000, 0x6000
-
-#define CHNL(note, channel) (note + (channel << 8))
-
-#define SCALE (int []){ 0 + (12*0), 2 + (12*0), 4 + (12*0), 5 + (12*0), 7 + (12*0), 9 + (12*0), 11 + (12*0), \
-                                               0 + (12*1), 2 + (12*1), 4 + (12*1), 5 + (12*1), 7 + (12*1), 9 + (12*1), 11 + (12*1), \
-                                               0 + (12*2), 2 + (12*2), 4 + (12*2), 5 + (12*2), 7 + (12*2), 9 + (12*2), 11 + (12*2), \
-                                               0 + (12*3), 2 + (12*3), 4 + (12*3), 5 + (12*3), 7 + (12*3), 9 + (12*3), 11 + (12*3), \
-                                               0 + (12*4), 2 + (12*4), 4 + (12*4), 5 + (12*4), 7 + (12*4), 9 + (12*4), 11 + (12*4), }
-
-#define N_CN1  (0x600C + (12 * -1) + 0 )
-#define N_CN1S (0x600C + (12 * -1) + 1 )
-#define N_DN1F (0x600C + (12 * -1) + 1 )
-#define N_DN1  (0x600C + (12 * -1) + 2 )
-#define N_DN1S (0x600C + (12 * -1) + 3 )
-#define N_EN1F (0x600C + (12 * -1) + 3 )
-#define N_EN1  (0x600C + (12 * -1) + 4 )
-#define N_FN1  (0x600C + (12 * -1) + 5 )
-#define N_FN1S (0x600C + (12 * -1) + 6 )
-#define N_GN1F (0x600C + (12 * -1) + 6 )
-#define N_GN1  (0x600C + (12 * -1) + 7 )
-#define N_GN1S (0x600C + (12 * -1) + 8 )
-#define N_AN1F (0x600C + (12 * -1) + 8 )
-#define N_AN1  (0x600C + (12 * -1) + 9 )
-#define N_AN1S (0x600C + (12 * -1) + 10)
-#define N_BN1F (0x600C + (12 * -1) + 10)
-#define N_BN1  (0x600C + (12 * -1) + 11)
-#define N_C0   (0x600C + (12 *  0) + 0 )
-#define N_C0S  (0x600C + (12 *  0) + 1 )
-#define N_D0F  (0x600C + (12 *  0) + 1 )
-#define N_D0   (0x600C + (12 *  0) + 2 )
-#define N_D0S  (0x600C + (12 *  0) + 3 )
-#define N_E0F  (0x600C + (12 *  0) + 3 )
-#define N_E0   (0x600C + (12 *  0) + 4 )
-#define N_F0   (0x600C + (12 *  0) + 5 )
-#define N_F0S  (0x600C + (12 *  0) + 6 )
-#define N_G0F  (0x600C + (12 *  0) + 6 )
-#define N_G0   (0x600C + (12 *  0) + 7 )
-#define N_G0S  (0x600C + (12 *  0) + 8 )
-#define N_A0F  (0x600C + (12 *  0) + 8 )
-#define N_A0   (0x600C + (12 *  0) + 9 )
-#define N_A0S  (0x600C + (12 *  0) + 10)
-#define N_B0F  (0x600C + (12 *  0) + 10)
-#define N_B0   (0x600C + (12 *  0) + 11)
-#define N_C1   (0x600C + (12 *  1) + 0 )
-#define N_C1S  (0x600C + (12 *  1) + 1 )
-#define N_D1F  (0x600C + (12 *  1) + 1 )
-#define N_D1   (0x600C + (12 *  1) + 2 )
-#define N_D1S  (0x600C + (12 *  1) + 3 )
-#define N_E1F  (0x600C + (12 *  1) + 3 )
-#define N_E1   (0x600C + (12 *  1) + 4 )
-#define N_F1   (0x600C + (12 *  1) + 5 )
-#define N_F1S  (0x600C + (12 *  1) + 6 )
-#define N_G1F  (0x600C + (12 *  1) + 6 )
-#define N_G1   (0x600C + (12 *  1) + 7 )
-#define N_G1S  (0x600C + (12 *  1) + 8 )
-#define N_A1F  (0x600C + (12 *  1) + 8 )
-#define N_A1   (0x600C + (12 *  1) + 9 )
-#define N_A1S  (0x600C + (12 *  1) + 10)
-#define N_B1F  (0x600C + (12 *  1) + 10)
-#define N_B1   (0x600C + (12 *  1) + 11)
-#define N_C2   (0x600C + (12 *  2) + 0 )
-#define N_C2S  (0x600C + (12 *  2) + 1 )
-#define N_D2F  (0x600C + (12 *  2) + 1 )
-#define N_D2   (0x600C + (12 *  2) + 2 )
-#define N_D2S  (0x600C + (12 *  2) + 3 )
-#define N_E2F  (0x600C + (12 *  2) + 3 )
-#define N_E2   (0x600C + (12 *  2) + 4 )
-#define N_F2   (0x600C + (12 *  2) + 5 )
-#define N_F2S  (0x600C + (12 *  2) + 6 )
-#define N_G2F  (0x600C + (12 *  2) + 6 )
-#define N_G2   (0x600C + (12 *  2) + 7 )
-#define N_G2S  (0x600C + (12 *  2) + 8 )
-#define N_A2F  (0x600C + (12 *  2) + 8 )
-#define N_A2   (0x600C + (12 *  2) + 9 )
-#define N_A2S  (0x600C + (12 *  2) + 10)
-#define N_B2F  (0x600C + (12 *  2) + 10)
-#define N_B2   (0x600C + (12 *  2) + 11)
-#define N_C3   (0x600C + (12 *  3) + 0 )
-#define N_C3S  (0x600C + (12 *  3) + 1 )
-#define N_D3F  (0x600C + (12 *  3) + 1 )
-#define N_D3   (0x600C + (12 *  3) + 2 )
-#define N_D3S  (0x600C + (12 *  3) + 3 )
-#define N_E3F  (0x600C + (12 *  3) + 3 )
-#define N_E3   (0x600C + (12 *  3) + 4 )
-#define N_F3   (0x600C + (12 *  3) + 5 )
-#define N_F3S  (0x600C + (12 *  3) + 6 )
-#define N_G3F  (0x600C + (12 *  3) + 6 )
-#define N_G3   (0x600C + (12 *  3) + 7 )
-#define N_G3S  (0x600C + (12 *  3) + 8 )
-#define N_A3F  (0x600C + (12 *  3) + 8 )
-#define N_A3   (0x600C + (12 *  3) + 9 )
-#define N_A3S  (0x600C + (12 *  3) + 10)
-#define N_B3F  (0x600C + (12 *  3) + 10)
-#define N_B3   (0x600C + (12 *  3) + 11)
-#define N_C4   (0x600C + (12 *  4) + 0 )
-#define N_C4S  (0x600C + (12 *  4) + 1 )
-#define N_D4F  (0x600C + (12 *  4) + 1 )
-#define N_D4   (0x600C + (12 *  4) + 2 )
-#define N_D4S  (0x600C + (12 *  4) + 3 )
-#define N_E4F  (0x600C + (12 *  4) + 3 )
-#define N_E4   (0x600C + (12 *  4) + 4 )
-#define N_F4   (0x600C + (12 *  4) + 5 )
-#define N_F4S  (0x600C + (12 *  4) + 6 )
-#define N_G4F  (0x600C + (12 *  4) + 6 )
-#define N_G4   (0x600C + (12 *  4) + 7 )
-#define N_G4S  (0x600C + (12 *  4) + 8 )
-#define N_A4F  (0x600C + (12 *  4) + 8 )
-#define N_A4   (0x600C + (12 *  4) + 9 )
-#define N_A4S  (0x600C + (12 *  4) + 10)
-#define N_B4F  (0x600C + (12 *  4) + 10)
-#define N_B4   (0x600C + (12 *  4) + 11)
-#define N_C5   (0x600C + (12 *  5) + 0 )
-#define N_C5S  (0x600C + (12 *  5) + 1 )
-#define N_D5F  (0x600C + (12 *  5) + 1 )
-#define N_D5   (0x600C + (12 *  5) + 2 )
-#define N_D5S  (0x600C + (12 *  5) + 3 )
-#define N_E5F  (0x600C + (12 *  5) + 3 )
-#define N_E5   (0x600C + (12 *  5) + 4 )
-#define N_F5   (0x600C + (12 *  5) + 5 )
-#define N_F5S  (0x600C + (12 *  5) + 6 )
-#define N_G5F  (0x600C + (12 *  5) + 6 )
-#define N_G5   (0x600C + (12 *  5) + 7 )
-#define N_G5S  (0x600C + (12 *  5) + 8 )
-#define N_A5F  (0x600C + (12 *  5) + 8 )
-#define N_A5   (0x600C + (12 *  5) + 9 )
-#define N_A5S  (0x600C + (12 *  5) + 10)
-#define N_B5F  (0x600C + (12 *  5) + 10)
-#define N_B5   (0x600C + (12 *  5) + 11)
-#define N_C6   (0x600C + (12 *  6) + 0 )
-#define N_C6S  (0x600C + (12 *  6) + 1 )
-#define N_D6F  (0x600C + (12 *  6) + 1 )
-#define N_D6   (0x600C + (12 *  6) + 2 )
-#define N_D6S  (0x600C + (12 *  6) + 3 )
-#define N_E6F  (0x600C + (12 *  6) + 3 )
-#define N_E6   (0x600C + (12 *  6) + 4 )
-#define N_F6   (0x600C + (12 *  6) + 5 )
-#define N_F6S  (0x600C + (12 *  6) + 6 )
-#define N_G6F  (0x600C + (12 *  6) + 6 )
-#define N_G6   (0x600C + (12 *  6) + 7 )
-#define N_G6S  (0x600C + (12 *  6) + 8 )
-#define N_A6F  (0x600C + (12 *  6) + 8 )
-#define N_A6   (0x600C + (12 *  6) + 9 )
-#define N_A6S  (0x600C + (12 *  6) + 10)
-#define N_B6F  (0x600C + (12 *  6) + 10)
-#define N_B6   (0x600C + (12 *  6) + 11)
-#define N_C7   (0x600C + (12 *  7) + 0 )
-#define N_C7S  (0x600C + (12 *  7) + 1 )
-#define N_D7F  (0x600C + (12 *  7) + 1 )
-#define N_D7   (0x600C + (12 *  7) + 2 )
-#define N_D7S  (0x600C + (12 *  7) + 3 )
-#define N_E7F  (0x600C + (12 *  7) + 3 )
-#define N_E7   (0x600C + (12 *  7) + 4 )
-#define N_F7   (0x600C + (12 *  7) + 5 )
-#define N_F7S  (0x600C + (12 *  7) + 6 )
-#define N_G7F  (0x600C + (12 *  7) + 6 )
-#define N_G7   (0x600C + (12 *  7) + 7 )
-#define N_G7S  (0x600C + (12 *  7) + 8 )
-#define N_A7F  (0x600C + (12 *  7) + 8 )
-#define N_A7   (0x600C + (12 *  7) + 9 )
-#define N_A7S  (0x600C + (12 *  7) + 10)
-#define N_B7F  (0x600C + (12 *  7) + 10)
-#define N_B7   (0x600C + (12 *  7) + 11)
-#define N_C8   (0x600C + (12 *  8) + 0 )
-#define N_C8S  (0x600C + (12 *  8) + 1 )
-#define N_D8F  (0x600C + (12 *  8) + 1 )
-#define N_D8   (0x600C + (12 *  8) + 2 )
-#define N_D8S  (0x600C + (12 *  8) + 3 )
-#define N_E8F  (0x600C + (12 *  8) + 3 )
-#define N_E8   (0x600C + (12 *  8) + 4 )
-#define N_F8   (0x600C + (12 *  8) + 5 )
-#define N_F8S  (0x600C + (12 *  8) + 6 )
-#define N_G8F  (0x600C + (12 *  8) + 6 )
-#define N_G8   (0x600C + (12 *  8) + 7 )
-#define N_G8S  (0x600C + (12 *  8) + 8 )
-#define N_A8F  (0x600C + (12 *  8) + 8 )
-#define N_A8   (0x600C + (12 *  8) + 9 )
-#define N_A8S  (0x600C + (12 *  8) + 10)
-#define N_B8F  (0x600C + (12 *  8) + 10)
-#define N_B8   (0x600C + (12 *  8) + 11)
-#define N_C8   (0x600C + (12 *  8) + 0 )
-#define N_C8S  (0x600C + (12 *  8) + 1 )
-#define N_D8F  (0x600C + (12 *  8) + 1 )
-#define N_D8   (0x600C + (12 *  8) + 2 )
-#define N_D8S  (0x600C + (12 *  8) + 3 )
-#define N_E8F  (0x600C + (12 *  8) + 3 )
-#define N_E8   (0x600C + (12 *  8) + 4 )
-#define N_F8   (0x600C + (12 *  8) + 5 )
-#define N_F8S  (0x600C + (12 *  8) + 6 )
-#define N_G8F  (0x600C + (12 *  8) + 6 )
-#define N_G8   (0x600C + (12 *  8) + 7 )
-#define N_G8S  (0x600C + (12 *  8) + 8 )
-#define N_A8F  (0x600C + (12 *  8) + 8 )
-#define N_A8   (0x600C + (12 *  8) + 9 )
-#define N_A8S  (0x600C + (12 *  8) + 10)
-#define N_B8F  (0x600C + (12 *  8) + 10)
-#define N_B8   (0x600C + (12 *  8) + 11)
-
-#endif
\ No newline at end of file
diff --git a/keyboard/preonic/keymaps/default/README.md b/keyboard/preonic/keymaps/default/README.md
new file mode 100644 (file)
index 0000000..d2f43bb
--- /dev/null
@@ -0,0 +1,34 @@
+# The Default Planck Layout
+
+    const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    [_QW] = { /* Qwerty */
+      {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC},
+      {KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
+      {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT },
+      {M(0),    KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+    },
+    [_CM] = { /* Colemak */
+      {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
+      {KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT},
+      {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT },
+      {M(0),    KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+    },
+    [_DV] = { /* Dvorak */
+      {KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC},
+      {KC_ESC,  KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH},
+      {KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_ENT },
+      {M(0),    KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+    },
+    [_RS] = { /* RAISE */
+      {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+      {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
+      {KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  DF(_QW), DF(_CM), DF(_DV), RESET,   KC_TRNS},
+      {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+    },
+    [_LW] = { /* LOWER */
+      {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
+      {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
+      {KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  DF(_QW), DF(_CM), DF(_DV), RESET,   KC_TRNS},
+      {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+    }
+    };
\ No newline at end of file
diff --git a/keyboard/preonic/keymaps/default/keymap.c b/keyboard/preonic/keymaps/default/keymap.c
new file mode 100644 (file)
index 0000000..392197f
--- /dev/null
@@ -0,0 +1,96 @@
+// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
+// this is the style you want to emulate.
+
+#include "preonic.h"
+#ifdef BACKLIGHT_ENABLE
+  #include "backlight.h"
+#endif
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QW 0
+#define _CM 1
+#define _DV 2
+#define _LW 3
+#define _RS 4
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[_QW] = { /* Qwerty */
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC},
+  {KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
+  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT },
+  {M(0),    KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+[_CM] = { /* Colemak */
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
+  {KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT},
+  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT },
+  {M(0),    KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+[_DV] = { /* Dvorak */
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC},
+  {KC_ESC,  KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH},
+  {KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_ENT },
+  {M(0),    KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+[_RS] = { /* RAISE */
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
+  {KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  DF(_QW), DF(_CM), DF(_DV), RESET,   KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+[_LW] = { /* LOWER */
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
+  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
+  {KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  DF(_QW), DF(_CM), DF(_DV), RESET,   KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+}
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+float start_up[][2] = {
+  {440.0*pow(2.0,(67)/12.0), 600},
+  {0, 50},
+  {440.0*pow(2.0,(64)/12.0), 400},
+  {0, 50},
+  {440.0*pow(2.0,(55)/12.0), 400},
+  {0, 50},
+  {440.0*pow(2.0,(60)/12.0), 400},
+  {0, 50},
+  {440.0*pow(2.0,(64)/12.0), 1000},
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+          if (record->event.pressed) {
+            register_code(KC_RSFT);
+            #ifdef BACKLIGHT_ENABLE
+              backlight_step();
+            #endif
+          } else {
+            unregister_code(KC_RSFT);
+          }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+void * matrix_init_user(void) {
+#ifdef AUDIO_ENABLE
+    init_notes();
+    play_notes(&start_up, 9, false);
+#endif
+}
diff --git a/keyboard/preonic/keymaps/lock/README.md b/keyboard/preonic/keymaps/lock/README.md
new file mode 100644 (file)
index 0000000..d21cb99
--- /dev/null
@@ -0,0 +1,3 @@
+# Lock layout
+
+This layout is designed for having a lock switch in the lower-left-hand corner, and for experimenting with MIDI/audio features. It's constantly in development, so don't expect anything to work/be documented correctly!
\ No newline at end of file
diff --git a/keyboard/preonic/keymaps/lock/keymap.c b/keyboard/preonic/keymaps/lock/keymap.c
new file mode 100644 (file)
index 0000000..e253f25
--- /dev/null
@@ -0,0 +1,105 @@
+// This is the canonical layout file for the Quantum project. If you want to add another keyboard,
+// this is the style you want to emulate.
+
+#include "preonic.h"
+#ifdef BACKLIGHT_ENABLE
+  #include "backlight.h"
+#endif
+#include "action_layer.h"
+
+// Each layer gets a name for readability, which is then used in the keymap matrix below.
+// The underscores don't mean anything - you can have a layer called STUFF or any other name.
+// Layer names don't all need to be of the same length, obviously, and you can also skip them
+// entirely and just use numbers.
+#define _QW 0
+#define _CM 1
+#define _DV 2
+#define _LW 3
+#define _RS 4
+#define _MI 5
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[_QW] = { /* Qwerty */
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC},
+  {KC_ESC,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT},
+  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT },
+  {M(0),    KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+[_CM] = { /* Colemak */
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC},
+  {KC_ESC,  KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT},
+  {KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_ENT },
+  {M(0),    KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+[_DV] = { /* Dvorak */
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC},
+  {KC_ESC,  KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH},
+  {KC_LSFT, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_ENT },
+  {M(0),    KC_LCTL, KC_LALT, KC_LGUI, MO(_LW), KC_SPC,  KC_SPC,  MO(_RS), KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT}
+},
+[_RS] = { /* RAISE */
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS},
+  {KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  DF(_QW), DF(_CM), DF(_DV), RESET,   KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+[_LW] = { /* LOWER */
+  {KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC},
+  {KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC},
+  {KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE},
+  {KC_TRNS, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  DF(_QW), DF(_CM), DF(_DV), RESET,   KC_TRNS},
+  {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+},
+[_MI] = { /* MIDI */
+  {MIDI12},
+  {MIDI12},
+  {MIDI12},
+  {MIDI12},
+  {M(0), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MIDI, MIDI, MIDI,  MIDI}
+}
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+float start_up[][2] = {
+  {440.0*pow(2.0,(67)/12.0), 600},
+  {0, 50},
+  {440.0*pow(2.0,(64)/12.0), 400},
+  {0, 50},
+  {440.0*pow(2.0,(55)/12.0), 400},
+  {0, 50},
+  {440.0*pow(2.0,(60)/12.0), 400},
+  {0, 50},
+  {440.0*pow(2.0,(64)/12.0), 1000},
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+          if (record->event.pressed) {
+            register_code(KC_RSFT);
+            #ifdef BACKLIGHT_ENABLE
+              backlight_step();
+            #endif
+            default_layer_state = 1<<5;
+          } else {
+            unregister_code(KC_RSFT);
+            default_layer_state = 1<<0;
+          }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+void * matrix_init_user(void) {
+    init_notes();
+    play_notes(&start_up, 9, false);
+}
diff --git a/keyboard/preonic/led.c b/keyboard/preonic/led.c
deleted file mode 100644 (file)
index 2c05746..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <avr/io.h>
-#include "stdint.h"
-#include "led.h"
-
-
-void led_set(uint8_t usb_led)
-{
-    // // Using PE6 Caps Lock LED
-    // if (usb_led & (1<<USB_LED_CAPS_LOCK))
-    // {
-    //     // Output high.
-    //     DDRE |= (1<<6);
-    //     PORTE |= (1<<6);
-    // }
-    // else
-    // {
-    //     // Output low.
-    //     DDRE &= ~(1<<6);
-    //     PORTE &= ~(1<<6);
-    // }
-}
diff --git a/keyboard/preonic/matrix.c b/keyboard/preonic/matrix.c
deleted file mode 100644 (file)
index 98ef55e..0000000
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
-Copyright 2012 Jun Wako 
-Generated by planckkeyboard.com (2014 Jack Humbert)
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-/*
- * scan matrix
- */
-#include <stdint.h>
-#include <stdbool.h>
-#include <avr/io.h>
-#include <util/delay.h>
-#include "print.h"
-#include "debug.h"
-#include "util.h"
-#include "matrix.h"
-
-#ifndef DEBOUNCE
-#   define DEBOUNCE 10
-#endif
-static uint8_t debouncing = DEBOUNCE;
-
-/* matrix state(1:on, 0:off) */
-static matrix_row_t matrix[MATRIX_ROWS];
-static matrix_row_t matrix_debouncing[MATRIX_ROWS];
-
-static matrix_row_t read_cols(void);
-static void init_cols(void);
-static void unselect_rows(void);
-static void select_row(uint8_t row);
-
-inline
-uint8_t matrix_rows(void)
-{
-    return MATRIX_ROWS;
-}
-
-inline
-uint8_t matrix_cols(void)
-{
-    return MATRIX_COLS;
-}
-
-void matrix_init(void)
-{
-    // To use PORTF disable JTAG with writing JTD bit twice within four cycles.
-    MCUCR |= (1<<JTD);
-    MCUCR |= (1<<JTD);
-
-    backlight_init_ports();
-
-    // Turn status LED on
-    DDRE |= (1<<6);
-    PORTE |= (1<<6);
-
-    // initialize row and col
-    unselect_rows();
-    init_cols();
-
-    // initialize matrix state: all keys off
-    for (uint8_t i=0; i < MATRIX_ROWS; i++) {
-        matrix[i] = 0;
-        matrix_debouncing[i] = 0;
-    }
-}
-
-
-uint8_t matrix_scan(void)
-{
-    for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
-        select_row(i);
-        _delay_us(30);  // without this wait read unstable value.
-        matrix_row_t cols = read_cols();
-        if (matrix_debouncing[i] != cols) {
-            matrix_debouncing[i] = cols;
-            if (debouncing) {
-                debug("bounce!: "); debug_hex(debouncing); debug("\n");
-            }
-            debouncing = DEBOUNCE;
-        }
-        unselect_rows();
-    }
-
-    if (debouncing) {
-        if (--debouncing) {
-            _delay_ms(1);
-        } else {
-            for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
-                matrix[i] = matrix_debouncing[i];
-            }
-        }
-    }
-
-    return 1;
-}
-
-bool matrix_is_modified(void)
-{
-    if (debouncing) return false;
-    return true;
-}
-
-inline
-bool matrix_is_on(uint8_t row, uint8_t col)
-{
-    return (matrix[row] & ((matrix_row_t)1<col));
-}
-
-inline
-matrix_row_t matrix_get_row(uint8_t row)
-{
-    return matrix[row];
-}
-
-void matrix_print(void)
-{
-    print("\nr/c 0123456789ABCDEF\n");
-    for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
-        phex(row); print(": ");
-        pbin_reverse16(matrix_get_row(row));
-        print("\n");
-    }
-}
-
-uint8_t matrix_key_count(void)
-{
-    uint8_t count = 0;
-    for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
-        count += bitpop16(matrix[i]);
-    }
-    return count;
-}
-
-static void init_cols(void)
-{
-    int B = 0, C = 0, D = 0, E = 0, F = 0;
-    for(int x = 0; x < MATRIX_COLS; x++) { 
-        int col = COLS[x];
-        if ((col & 0xF0) == 0x20) { 
-            B |= (1<<(col & 0x0F)); 
-        } else if ((col & 0xF0) == 0x30) { 
-            C |= (1<<(col & 0x0F)); 
-        } else if ((col & 0xF0) == 0x40) { 
-            D |= (1<<(col & 0x0F)); 
-        } else if ((col & 0xF0) == 0x50) { 
-            E |= (1<<(col & 0x0F)); 
-        } else if ((col & 0xF0) == 0x60) { 
-            F |= (1<<(col & 0x0F)); 
-        } 
-    }
-    DDRB &= ~(B); PORTB |= (B);
-    DDRC &= ~(C); PORTC |= (C); 
-    DDRD &= ~(D); PORTD |= (D);
-    DDRE &= ~(E); PORTE |= (E);
-    DDRF &= ~(F); PORTF |= (F);
-}
-
-static matrix_row_t read_cols(void)
-{
-    matrix_row_t result = 0;
-    for(int x = 0; x < MATRIX_COLS; x++) {     
-        int col = COLS[x];
-        if ((col & 0xF0) == 0x20) { 
-            result |= (PINB&(1<<(col & 0x0F)) ? 0 : (1<<x)); 
-        } else if ((col & 0xF0) == 0x30) { 
-            result |= (PINC&(1<<(col & 0x0F)) ? 0 : (1<<x)); 
-        } else if ((col & 0xF0) == 0x40) { 
-            result |= (PIND&(1<<(col & 0x0F)) ? 0 : (1<<x)); 
-        } else if ((col & 0xF0) == 0x50) { 
-            result |= (PINE&(1<<(col & 0x0F)) ? 0 : (1<<x)); 
-        } else if ((col & 0xF0) == 0x60) { 
-            result |= (PINF&(1<<(col & 0x0F)) ? 0 : (1<<x)); 
-        } 
-    }
-    return result;
-}
-
-static void unselect_rows(void)
-{
-    int B = 0, C = 0, D = 0, E = 0, F = 0;
-    for(int x = 0; x < MATRIX_ROWS; x++) { 
-        int row = ROWS[x];
-        if ((row & 0xF0) == 0x20) { 
-            B |= (1<<(row & 0x0F)); 
-        } else if ((row & 0xF0) == 0x30) { 
-            C |= (1<<(row & 0x0F)); 
-        } else if ((row & 0xF0) == 0x40) { 
-            D |= (1<<(row & 0x0F)); 
-        } else if ((row & 0xF0) == 0x50) { 
-            E |= (1<<(row & 0x0F)); 
-        } else if ((row & 0xF0) == 0x60) { 
-            F |= (1<<(row & 0x0F)); 
-        } 
-    }
-    DDRB &= ~(B); PORTB |= (B);
-    DDRC &= ~(C); PORTC |= (C); 
-    DDRD &= ~(D); PORTD |= (D);
-    DDRE &= ~(E); PORTE |= (E);
-    DDRF &= ~(F); PORTF |= (F);
-}
-
-static void select_row(uint8_t row)
-{
-    int row_pin = ROWS[row];
-    if ((row_pin & 0xF0) == 0x20) { 
-        DDRB  |= (1<<(row_pin & 0x0F));
-        PORTB &= ~(1<<(row_pin & 0x0F));
-    } else if ((row_pin & 0xF0) == 0x30) { 
-        DDRC  |= (1<<(row_pin & 0x0F));
-        PORTC &= ~(1<<(row_pin & 0x0F));
-    } else if ((row_pin & 0xF0) == 0x40) { 
-        DDRD  |= (1<<(row_pin & 0x0F));
-        PORTD &= ~(1<<(row_pin & 0x0F));
-    } else if ((row_pin & 0xF0) == 0x50) { 
-        DDRE  |= (1<<(row_pin & 0x0F));
-        PORTE &= ~(1<<(row_pin & 0x0F));
-    } else if ((row_pin & 0xF0) == 0x60) { 
-        DDRF  |= (1<<(row_pin & 0x0F));
-        PORTF &= ~(1<<(row_pin & 0x0F));
-    }  
-}
\ No newline at end of file
diff --git a/keyboard/preonic/preonic.c b/keyboard/preonic/preonic.c
new file mode 100644 (file)
index 0000000..a678f7b
--- /dev/null
@@ -0,0 +1,36 @@
+#include "preonic.h"
+
+__attribute__ ((weak))
+void * matrix_init_user(void) {
+
+};
+
+__attribute__ ((weak))
+void * matrix_scan_user(void) {
+
+};
+
+void * matrix_init_kb(void) {
+       #ifdef BACKLIGHT_ENABLE
+       backlight_init_ports();
+       #endif
+
+       #ifdef RGBLIGHT_ENABLE
+               rgblight_init();
+       #endif
+
+
+    // Turn status LED on
+    DDRE |= (1<<6);
+    PORTE |= (1<<6);
+
+       if (matrix_init_user) {
+               (*matrix_init_user)();
+       }
+};
+
+void * matrix_scan_kb(void) {
+       if (matrix_scan_user) {
+               (*matrix_scan_user)();
+       }
+};
diff --git a/keyboard/preonic/preonic.h b/keyboard/preonic/preonic.h
new file mode 100644 (file)
index 0000000..42d2123
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef PREONIC_H
+#define PREONIC_H
+
+#include "matrix.h"
+#include "keymap_common.h"
+#ifdef BACKLIGHT_ENABLE
+       #include "backlight.h"
+#endif
+#ifdef RGBLIGHT_ENABLE
+  #include "rgblight.h"
+#endif
+#include <stddef.h>
+#ifdef MIDI_ENABLE
+       #include <keymap_midi.h>
+#endif
+
+#define PREONIC_MIT( \
+       k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+       k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+       k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+       k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \
+       k40, k41, k42, k43, k44,    k45,   k47, k48, k49, k4a, k4b \
+) \
+{ \
+       { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
+       { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
+       { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
+       { k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3a, k3b }, \
+       { k40, k41, k42, k43, k44, k45, k45, k47, k48, k49, k4a, k4b } \
+}
+
+#define PREONIC_GRID( \
+       k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \
+       k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, \
+       k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, \
+       k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, \
+       k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b \
+) \
+{ \
+       { k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b }, \
+       { k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b }, \
+       { k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b }, \
+       { k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3a, k3b }, \
+       { k40, k41, k42, k43, k44, k45, k46, k47, k48, k49, k4a, k4b } \
+}
+
+void * matrix_init_user(void);
+void * matrix_scan_user(void);
+
+#endif
diff --git a/keyboard/preonic/preonic_pcb.hex b/keyboard/preonic/preonic_pcb.hex
new file mode 100644 (file)
index 0000000..5bdc190
--- /dev/null
@@ -0,0 +1,1702 @@
+:100000000C94D4020C9418030C9418030C94180349\r
+:100010000C9418030C9418030C9418030C941803F4\r
+:100020000C9418030C9418030C94E8160C94BA174B\r
+:100030000C946C290C9418030C9418030C9418035A\r
+:100040000C9418030C9418030C9418030C941803C4\r
+:100050000C9418030C94D9290C9418030C941803CD\r
+:100060000C9418030C9418030C9418030C941803A4\r
+:100070000C9418030C9418030C9418030C94180394\r
+:100080000C941C0E0C9418030C9418030C94180375\r
+:100090000C9418030C9418030C9418030C94180374\r
+:1000A0000C9418030C9418030C941803076342363D\r
+:1000B000B79BD8A71A39685618AEBAAB558C1D3CF9\r
+:1000C000B7CC5763BD6DEDFD753EF6177231BF00BD\r
+:1000D0000000803F08000000BE922449123EABAAF7\r
+:1000E000AA2ABECDCCCC4C3E00000080BEABAAAA52\r
+:1000F000AA3E00000000BF000000803F000000009A\r
+:1001000000084178D3BB4387D1133D190E3CC3BDD2\r
+:100110004282AD2B3E68EC8276BED98FE1A93E4C7F\r
+:1001200080EFFFBE01C4FF7F3F00000000003500EC\r
+:100130001E001F00200021002200230024002500B3\r
+:10014000260027002A002B0014001A0008001500C2\r
+:1001500017001C0018000C00120013002A002900D0\r
+:1001600004001600070009000A000B000D000E0035\r
+:100170000F0033003400E1001D001B0006001900D1\r
+:10018000050011001000360037003800280000304C\r
+:10019000E000E200E30003522C002C000452500067\r
+:1001A000510052004F0035001E001F0020002100AA\r
+:1001B0002200230024002500260027002A002B000F\r
+:1001C00014001A00090013000A000D000F001800A7\r
+:1001D0001C0033002A002900040015001600170037\r
+:1001E00007000B00110008000C0012003400E100B1\r
+:1001F0001D001B000600190005000E00100036004F\r
+:100200003700380028000030E000E200E30003522D\r
+:100210002C002C0004525000510052004F003500B9\r
+:100220001E001F00200021002200230024002500C2\r
+:10023000260027002A002B00340036003700130068\r
+:100240001C0009000A00060015000F002A00290002\r
+:1002500004001200080018000C0007000B00170033\r
+:10026000110016003800E100330014000D000E00EC\r
+:100270001B00050010001A0019001D0028000030A6\r
+:10028000E000E200E30003522C002C000452500076\r
+:10029000510052004F0035001E001F0020002100B9\r
+:1002A0002200230024002500260027002A00350212\r
+:1002B0001E021F0220022102220223022402250222\r
+:1002C000260227022A0001003A003B003C003D00C4\r
+:1002D0003E003F002D022E022F02300231020100AB\r
+:1002E00040004100420043004400450000530153D8\r
+:1002F0000253005001000100010001000100010053\r
+:10030000010001000100AB00AA00A900AE00350009\r
+:100310001E001F00200021002200230024002500D1\r
+:10032000260027002A0035001E001F0020002100A3\r
+:100330002200230024002500260027002A000100B7\r
+:100340003A003B003C003D003E003F002D002E00E7\r
+:100350002F00300031000100400041004200430006\r
+:1003600044004500005301530253005001000100B6\r
+:100370000100010001000100010001000100AB00CB\r
+:10038000AA00A900AE002A035400680065002000FE\r
+:100390005000720065006F006E006900630020006D\r
+:1003A0004B006500790062006F006100720064001C\r
+:1003B00000002C034F007200740068006F006C0096\r
+:1003C00069006E0065006100720020004B0065004E\r
+:1003D000790062006F006100720064007300000029\r
+:1003E000040309040902D000060100A0FA09040070\r
+:1003F000000103010100092111010001223F000752\r
+:1004000005810308000A0904010001030102000933\r
+:100410002111010001224D000705820308000A098D\r
+:10042000040200010300000009211101000122362D\r
+:10043000000705830308000A090403000203000003\r
+:10044000000921110100012220000705840320007A\r
+:100450000107050403200001090404000001010054\r
+:100460000009240100010900010509040500020139\r
+:1004700003000007240100014100062402010100DD\r
+:1004800006240202020009240301030102010009FB\r
+:1004900024030204010101000905060240000500D1\r
+:1004A0000005250101010905850240000500000540\r
+:1004B000250101031201100100000008EDFE61603A\r
+:1004C0000100010200010631FF0974A1010975153F\r
+:1004D0000025FF9520750881020976150025FF95F6\r
+:1004E0002075089102C005010980A101850216014D\r
+:1004F0000026B7001A01002AB70075109501810087\r
+:10050000C0050C0901A1018503160100269C021AF1\r
+:1005100001002A9C02751095018100C005010902A5\r
+:10052000A1010901A10005091901290515002501ED\r
+:100530009505750181029501750381010501093059\r
+:1005400009311581257F95027508810609381581C5\r
+:10055000257F950175088106050C0A38021581254D\r
+:100560007F950175088106C0C005010906A1010536\r
+:100570000719E029E7150025019508750181029505\r
+:100580000175088101050819012905950575019175\r
+:10059000029501750391010507190029FF15002532\r
+:1005A000FF950675088100C011241FBECFEFDAE069\r
+:1005B000DEBFCDBF04B603FE24C080910404909139\r
+:1005C0000504A0910604B09107048730904BA74022\r
+:1005D000B04BB9F410920404109205041092060472\r
+:1005E0001092070414BE84B7877F84BF88E10FB6DA\r
+:1005F000F89480936000109260000FBEE0E0F8E392\r
+:10060000099512E0A0E0B1E0EEE1F9E602C0059044\r
+:100610000D92A832B107D9F714E0A8E2B2E001C008\r
+:100620001D92A430B107E1F70E94A0130C948D3401\r
+:100630000C94000061110DC0FC018281882331F00F\r
+:1006400085EE0E94671E0E94683003C085EE0E94FE\r
+:100650002F1F80E090E008950E940F0E40E050E0D0\r
+:1006600069E070E080E091E00C94600F08950E94D2\r
+:1006700049036E9A769A8CE293E0892B11F00C94E0\r
+:100680002C03089586E393E0892B11F00C94360334\r
+:100690000895279A2F988FEF9FEF9093870080936C\r
+:1006A00086008AE08093800089E1809381000C9429\r
+:1006B000113081110BC080918000877F8093800072\r
+:1006C00010928D0010928C002F9808952F988330EF\r
+:1006D00041F4809180008860809380008FEF9FEFCD\r
+:1006E00012C09091800098609093800023E030E0E9\r
+:1006F000281B3109220F331F8FEF9FEF02C0969501\r
+:1007000087952A95E2F790938D0080938C00089549\r
+:100710008B3B910568F4883A910530F5853A91054F\r
+:10072000C0F48430910598F4019709F06FC071C04E\r
+:10073000803E910508F46AC0883E910540F09C0116\r
+:10074000205F31092031310508F060C05CC09C0198\r
+:10075000A1C0853A910509F45FC0863A910509F474\r
+:100760005EC023E830E496C0883A910509F45AC087\r
+:10077000893A910509F459C08A3A910509F458C09B\r
+:100780008B3A910509F457C08C3A910509F456C08B\r
+:100790008D3A910509F455C0803B910509F454C088\r
+:1007A0008E3A910509F453C08F3A910509F452C06D\r
+:1007B000813B910509F451C0823B910509F450C079\r
+:1007C000833B910509F44FC0843B910509F44EC069\r
+:1007D000853B910509F44DC0863B910509F44CC059\r
+:1007E000873B910509F44BC0883B910509F44AC049\r
+:1007F000893B910509F449C08A3B910509F048C03D\r
+:100800002AE236E447C09C01306544C020E030E075\r
+:1008100041C021E030E03EC021E830E43BC022E8A6\r
+:1008200030E438C022EE34E435C029EE34E432C07E\r
+:100830002AEE34E42FC025EB34E42CC026EB34E45C\r
+:1008400029C027EB34E426C02CEC34E423C02DEC83\r
+:1008500034E420C023E835E41DC02AE835E41AC09A\r
+:1008600022E935E417C024E935E414C021E236E476\r
+:1008700011C023E236E40EC024E236E40BC025E2C8\r
+:1008800036E408C026E236E405C027E236E402C0BA\r
+:1008900020E034E4C90108959CE0799FF00111241F\r
+:1008A0009CE3899FE00DF11D1124E60FF11DEE0F71\r
+:1008B000FF1FE25DFE4F25913491C9010895880F15\r
+:1008C000991F82559040FC0125913491C9010895EA\r
+:1008D000880F991F825D9E4FFC0125913491C901BB\r
+:1008E00008950E944C049C019A9581159F4110F433\r
+:1008F000C9010895C90190528115904128F4C90198\r
+:100900009F700E9468040895C90190538115904119\r
+:1009100020F4C9019927906C0895C901905440971B\r
+:1009200028F4C9018F709927946D0895203180E4CF\r
+:10093000380719F480E091ED0895213190E43907EA\r
+:1009400019F480E090ED0895223140E4340719F461\r
+:1009500080E092ED0895233180E4380719F480E0B7\r
+:1009600093ED0895211590E5390799F40E945623D7\r
+:1009700040E065E088E491E00E94600F2FEF44E3DF\r
+:100980008CE0215040408040E1F700C000000C9412\r
+:10099000FE29213090E5390731F48091F002816021\r
+:1009A0008093F0020895C90190558115904108F097\r
+:1009B00062C0432F55274F70552741305105F9F438\r
+:1009C000C90174E0880F991F7A95E1F78827937021\r
+:1009D000B901E3E0660F771FEA95E1F760767727C4\r
+:1009E000862B972B9C682370332702C0440F551F1A\r
+:1009F0002A95E2F74F715527842B952B08954230A5\r
+:100A0000510529F4922F8827816F906A0895433009\r
+:100A10005105B9F4C90153E0880F991F5A95E1F7C0\r
+:100A2000807E97702370332741E050E002C0440F6E\r
+:100A3000551F2A95E2F74F715527842B952B9C68FB\r
+:100A400008954430510589F5C90143E0880F991F85\r
+:100A50004A95E1F7807E97702370332741E050E09C\r
+:100A600002C0440F551F2A95E2F74F715527842B7A\r
+:100A7000952B9A680895C90190568115904118F4F4\r
+:100A8000C901906F0895C90190578115904120F4D4\r
+:100A9000C9019F7090620895C901905881159041D5\r
+:100AA00020F4C9019F70906A0895203E3105E0F45A\r
+:100AB000203C310568F52133310509F475C048F44F\r
+:100AC0002932310509F46BC02A32310509F07BC0A7\r
+:100AD00075C02933310501F122383105E9F025339C\r
+:100AE000310509F070C051C0233E3105B1F140F429\r
+:100AF000203E3105D1F0223E310509F064C01CC012\r
+:100B0000263E310579F1273E310509F05CC038C039\r
+:100B1000C9010E945F0408958091010380FD02C015\r
+:100B200081FF51C080EE90E04FC08091010380FFB3\r
+:100B3000F9CF89E390E048C08091010382FF0AC0A9\r
+:100B40008091010384FF03C080E090E03DC083EE0C\r
+:100B500090E03AC082EE90E037C08091010382FFBE\r
+:100B6000EFCFF8CF8091010383FF07C0809101038D\r
+:100B700084FDEACF87EE90E027C086EE90E024C0A7\r
+:100B80008091010383FFF2CFF8CF8091010385FFAD\r
+:100B900003C089E290E018C085E390E015C0809121\r
+:100BA000010385FDF9CFF5CF8091010386FF03C0D6\r
+:100BB0008AE290E009C081E390E006C080910103E1\r
+:100BC00086FDF9CFF5CFC9010E94880308950895E5\r
+:100BD0005F926F927F928F929F92AF92BF92CF92CD\r
+:100BE000DF92EF92FF920F931F93CF93DF93CDB7D6\r
+:100BF000DEB72A970FB6F894DEBF0FBECDBF9E01B9\r
+:100C00002F5F3F4F4E018BE0880E911C60E070E03B\r
+:100C100000E010E0E12CF12CC12CD12CA12CB12C46\r
+:100C20008AE0782E622E532E41E050E0E3E9F1E0B5\r
+:100C3000A62DB52D872D01900D928A95E1F7F9012A\r
+:100C4000819191919F01FC01E07FFF27E032F10546\r
+:100C500059F48F709927FA0102C0EE0FFF1F8A9591\r
+:100C6000E2F7AE2ABF2A37C0E033F10559F48F709E\r
+:100C70009927FA0102C0EE0FFF1F8A95E2F7CE2AEC\r
+:100C8000DF2A29C0E034F10559F48F709927FA0161\r
+:100C900002C0EE0FFF1F8A95E2F7EE2AFF2A1BC063\r
+:100CA000E035F10559F48F709927FA0102C0EE0F73\r
+:100CB000FF1F8A95E2F70E2B1F2B0DC0E036F105C2\r
+:100CC00051F48F709927FA0102C0EE0FFF1F8A9529\r
+:100CD000E2F76E2B7F2B2815390509F0A7CF94B1C9\r
+:100CE0008A2D8095892384B985B18A2985B997B1E0\r
+:100CF0008C2D8095892387B988B18C2988B99AB1C0\r
+:100D00008E2D809589238AB98BB18E298BB99DB19F\r
+:100D1000802F809589238DB98EB1802B8EB990B3A9\r
+:100D2000862F8095892380BB81B3862B81BB2A9631\r
+:100D30000FB6F894DEBF0FBECDBFDF91CF911F91EC\r
+:100D40000F91FF90EF90DF90CF90BF90AF909F906A\r
+:100D50008F907F906F905F9008955F926F927F92D7\r
+:100D60008F929F92AF92BF92CF92DF92EF92FF92BB\r
+:100D70000F931F93CF93DF93CDB7DEB768970FB66E\r
+:100D8000F894DEBF0FBECDBF85B7806885BF85B73D\r
+:100D9000806885BF0E94E8059E012F5F3F4F4E018E\r
+:100DA00089E1880E911C60E070E000E010E0E12C29\r
+:100DB000F12CC12CD12CA12CB12C98E1792E622ED2\r
+:100DC000532E41E050E0EDE9F1E0A62DB52D872D41\r
+:100DD00001900D928A95E1F7F901819191919F011E\r
+:100DE000FC01E07FFF27E032F10559F48F7099276D\r
+:100DF000FA0102C0EE0FFF1F8A95E2F7AE2ABF2A62\r
+:100E000037C0E033F10559F48F709927FA0102C019\r
+:100E1000EE0FFF1F8A95E2F7CE2ADF2A29C0E034C1\r
+:100E2000F10559F48F709927FA0102C0EE0FFF1FE8\r
+:100E30008A95E2F7EE2AFF2A1BC0E035F10559F446\r
+:100E40008F709927FA0102C0EE0FFF1F8A95E2F713\r
+:100E50000E2B1F2B0DC0E036F10551F48F70992732\r
+:100E6000FA0102C0EE0FFF1F8A95E2F76E2B7F2B6F\r
+:100E70002815390509F0A7CF94B18A2D80958923CB\r
+:100E800084B985B18A2985B997B18C2D809589233C\r
+:100E900087B988B18C2988B99AB18E2D809589231C\r
+:100EA0008AB98BB18E298BB99DB1802F809589230A\r
+:100EB0008DB98EB1802B8EB990B3862F8095892302\r
+:100EC00080BB81B3862B81BB10922902109228022D\r
+:100ED000109233021092320210922B0210922A02C8\r
+:100EE000109235021092340210922D0210922C02B0\r
+:100EF000109237021092360210922F0210922E0298\r
+:100F0000109239021092380210923102109230027F\r
+:100F100010923B0210923A0287E393E0892BB9F0DA\r
+:100F200068960FB6F894DEBF0FBECDBFDF91CF91AC\r
+:100F30001F910F91FF90EF90DF90CF90BF90AF90F7\r
+:100F40009F908F907F906F905F900C94370368967E\r
+:100F50000FB6F894DEBF0FBECDBFDF91CF911F91CA\r
+:100F60000F91FF90EF90DF90CF90BF90AF909F9048\r
+:100F70008F907F906F905F9008955F926F927F92B5\r
+:100F80008F929F92AF92BF92CF92DF92EF92FF9299\r
+:100F90000F931F93CF93DF93CDB7DEB7A2970FB612\r
+:100FA000F894DEBF0FBECDBF7E0149E1E40EF11C17\r
+:100FB00022E3C22E22E0D22E5E0153E2A50EB11C26\r
+:100FC0003AE0532E470101E010E048E1642E55E07D\r
+:100FD000752EE3E9F1E0D401852D01900D928A95FB\r
+:100FE000E1F7F701819191917F019C01207F3327E7\r
+:100FF0002032310589F424B18F709927A80102C0ED\r
+:10100000440F551F8A95E2F7CA01242B24B995B1E4\r
+:101010008095892385B94FC02033310589F427B1E4\r
+:101020008F709927F80102C0EE0FFF1F8A95E2F733\r
+:10103000CF012E2B27B998B18095892388B93BC061\r
+:101040002034310589F42AB18F709927A80102C094\r
+:10105000440F551F8A95E2F7CA01242B2AB99BB188\r
+:10106000809589238BB927C02035310589F42DB1AE\r
+:101070008F709927F80102C0EE0FFF1F8A95E2F7E3\r
+:10108000CF012E2B2DB99EB1809589238EB913C027\r
+:101090002036310581F420B38F709927A80102C052\r
+:1010A000440F551F8A95E2F7CA01242B20BB91B348\r
+:1010B0008095892381BB50EA5A95F1F7BE016F5F95\r
+:1010C0007F4F80E090E020E030E0EDE9F1E0DE01EC\r
+:1010D0001196462D01900D924A95E1F7FB01419141\r
+:1010E0005191BF01FA01E07FFF27E032F10511F4D1\r
+:1010F000E3B113C0E033F10511F4E6B10EC0E03402\r
+:10110000F10511F4E9B109C0E035F10511F4ECB1D4\r
+:1011100004C0E036F105B9F4EFB1F0E04F705527A7\r
+:1011200002C0F595E7954A95E2F7E0FD08C0A801F1\r
+:10113000022E02C0440F551F0A94E2F702C040E09D\r
+:1011400050E0842B952B2F5F3F4F2C30310509F059\r
+:10115000BCCFF601208131812817390721F0918316\r
+:101160008083709270010E94E805F2E0CF0ED11CDE\r
+:10117000EA14FB0409F02DCF809170018823A1F1BE\r
+:10118000815080937001882339F08FE99FE00197A7\r
+:10119000F1F700C0000028C0809132029091330224\r
+:1011A0009093290280932802809134029091350215\r
+:1011B00090932B0280932A028091360290913702FD\r
+:1011C00090932D0280932C028091380290913902E5\r
+:1011D00090932F0280932E0280913A0290913B02CD\r
+:1011E000909331028093300282E493E0892B11F0D6\r
+:1011F0000E94420381E0A2960FB6F894DEBF0FBEB4\r
+:10120000CDBFDF91CF911F910F91FF90EF90DF90B5\r
+:10121000CF90BF90AF909F908F907F906F905F9096\r
+:101220000895E82FF0E0EE0FFF1FE85DFD4F80818D\r
+:10123000918108950895CF92DF92EF92FF920F93DC\r
+:101240001F93CF93DF93CDB7DEB7CC5BD2400FB601\r
+:10125000F894DEBF0FBECDBF8C01862F642F88238C\r
+:1012600079F0F80192812FE7482F992329F083E044\r
+:1012700093E00E94C41904C083E093E00E94D41953\r
+:10128000F80180818B3091F59181943009F0A8C2EA\r
+:101290009281809173019923B1F08F5F80937301E4\r
+:1012A00096E4E5EBF1E0DE01A958BD4F01900D9207\r
+:1012B0009A95E1F7E0917101F0917201EE0FFF1F35\r
+:1012C00027E732E036C096E4E5EBF1E0DE01AF5C03\r
+:1012D000BD4F01900D929A95E1F7E0917101F09167\r
+:1012E0007201EE0FFF1F21E332E093C08A3009F054\r
+:1012F000CBC0F8019181943009F072C29281809143\r
+:101300007301992309F473C081508093730196E4AB\r
+:10131000E5EBF1E0DE01A551BE4F01900D929A95EB\r
+:10132000E1F7E0917101F0917201EE0FFF1F2BEEDA\r
+:1013300031E02C0F3D1FE20FF31F60817181680FB8\r
+:10134000711D882777FD8095982F0E94AC3120E091\r
+:1013500030E040E451E40E94113120E030E040E808\r
+:1013600050E40E94A9309B01AC0160E070E080E095\r
+:1013700090E40E94C33221E230ED42E053E40E9447\r
+:1013800060324CE050E00E94BB0F20E04BE760E091\r
+:1013900083E093E00E94B41920E04BE761E083E032\r
+:1013A00093E00E94B41920E04BE762E083E093E011\r
+:1013B0000E94B41920E04BE763E083E093E00E94D1\r
+:1013C000B41920E04BE764E083E093E0C454DD4FC0\r
+:1013D0000FB6F894DEBF0FBECDBFDF91CF911F9146\r
+:1013E0000F91FF90EF90DF90CF900C94B41996E49A\r
+:1013F000E5EBF1E0DE01AB55BE4F01900D929A9501\r
+:10140000E1F7E0917101F0917201EE0FFF1F25EA03\r
+:1014100031E02C0F3D1FE20FF31F60817181680FD7\r
+:10142000711D882777FD8095982F0E94AC3120E0B0\r
+:1014300030E040E451E40E94113120E030E040E827\r
+:1014400050E40E94A9309B01AC0160E070E080E0B4\r
+:1014500090E40E94C33221E230ED42E053E40E9466\r
+:1014600060320E94EB0CC454DD4F0FB6F894DEBF1F\r
+:101470000FBECDBFDF91CF911F910F91FF90EF90E5\r
+:10148000DF90CF900C94BE0C893009F0D3C0F801E6\r
+:101490009181943009F0A4C19281992309F4A0C1EB\r
+:1014A00080917101909172010196909372018093E5\r
+:1014B000710120E04BE760E083E093E00E94B41903\r
+:1014C00020E04BE761E083E093E00E94B41920E064\r
+:1014D0004BE762E083E093E00E94B41920E04BE721\r
+:1014E00063E083E093E00E94B41920E04BE764E0FE\r
+:1014F00083E093E00E94B4190E94BE0C00E010E06B\r
+:10150000E6E4FE2E80917301E5EBF1E0DE01A15AE5\r
+:10151000BE4F9F2D01900D929A95E1F7E0917101D8\r
+:10152000F0917201E00FF11FEE0FFF1F2FE531E088\r
+:101530002C0F3D1FE20FF31F60817181680F711D39\r
+:10154000882777FD8095982F0E94AC3120E030E00D\r
+:1015500040E451E40E94113120E030E040E850E4E2\r
+:101560000E94A9309B01AC0160E070E080E090E453\r
+:101570000E94C33221E230ED42E053E40E94603227\r
+:101580004CE050E00E94BB0F3FEF87EE93E03150FC\r
+:1015900080409040E1F700C0000080917301E5EBCE\r
+:1015A000F1E0DE01A75EBE4F9F2D01900D929A954E\r
+:1015B000E1F7E0917101F0917201E00FF11FEE0F80\r
+:1015C000FF1F29E131E02C0F3D1FE20FF31F608167\r
+:1015D0007181680F711D882777FD8095982F0E9473\r
+:1015E000AC3120E030E040E451E40E94113120E0D1\r
+:1015F00030E040E850E40E94A9309B01AC0160E07B\r
+:1016000070E080E090E40E94C33221E230ED42E0DD\r
+:1016100053E40E9460320E94EB0C8FEF9CE701972D\r
+:10162000F1F700C000000F5F1F4F0830110509F0EF\r
+:1016300069CF94C1883009F0D3C0F801918194300A\r
+:1016400009F0CEC09281992309F4CAC0809171013A\r
+:10165000909172010197909372018093710120E043\r
+:101660004BE760E083E093E00E94B41920E04BE791\r
+:1016700061E083E093E00E94B41920E04BE762E070\r
+:1016800083E093E00E94B41920E04BE763E083E03D\r
+:1016900093E00E94B41920E04BE764E083E093E01C\r
+:1016A0000E94B4190E94BE0C00E010E056E4F52E32\r
+:1016B00080917301E5EBF1E0DE01AD52BF4F9F2D4C\r
+:1016C00001900D929A95E1F7E0917101F09172010C\r
+:1016D000E00FF11FEE0FFF1F23ED30E02C0F3D1F39\r
+:1016E000E20FF31F60817181680F711D882777FDFC\r
+:1016F0008095982F0E94AC3120E030E040E451E426\r
+:101700000E94113120E030E040E850E40E94A9300E\r
+:101710009B01AC0160E070E080E090E40E94C33285\r
+:1017200021E230ED42E053E40E9460324CE050E0B0\r
+:101730000E94BB0F3FEF87EE93E031508040904016\r
+:10174000E1F700C0000080917301E5EBF1E0DE01FC\r
+:10175000A357BF4F9F2D01900D929A95E1F7E0910D\r
+:101760007101F0917201E00FF11FEE0FFF1F2DE8E4\r
+:1017700030E02C0F3D1FE20FF31F60817181680F75\r
+:10178000711D882777FD8095982F0E94AC3120E04D\r
+:1017900030E040E451E40E94113120E030E040E8C4\r
+:1017A00050E40E94A9309B01AC0160E070E080E051\r
+:1017B00090E40E94C33221E230ED42E053E40E9403\r
+:1017C00060320E94EB0C8FEF9CE70197F1F700C0AD\r
+:1017D00000000F5F1F4F0830110509F069CFBEC030\r
+:1017E000F801228190917301222309F45DC026E45F\r
+:1017F000E5EBF1E0DE01A95BBF4F01900D922A9568\r
+:10180000E1F7E0917101F0917201E80FF11DEE0F27\r
+:10181000FF1F27E430E02C0F3D1FE20FF31F608114\r
+:101820007181690F711D882777FD8095982F0E941F\r
+:10183000AC3120E030E040E451E40E9411316B0112\r
+:101840007C01F801818165E070E0681B71098827DF\r
+:1018500077FD8095982F0E94AC319B01AC01C701A8\r
+:10186000B6010E94A9309B01AC0160E070E080E00D\r
+:1018700090E40E94C33221E230ED42E053E40E9442\r
+:1018800060324FE050E0C454DD4F0FB6F894DEBF35\r
+:101890000FBECDBFDF91CF911F910F91FF90EF90C1\r
+:1018A000DF90CF900C94BB0F26E4E5EBF1E0DE0176\r
+:1018B000119601900D922A95E1F7E0917101F09156\r
+:1018C0007201E80FF11DEE0FFF1F21E030E02C0F39\r
+:1018D0003D1FE20FF31F60817181690F711D882721\r
+:1018E00077FD8095982F0E94AC3120E030E040E4F5\r
+:1018F00051E40E9411316B017C01F801818165E0A6\r
+:1019000070E0681B7109882777FD8095982F0E94E9\r
+:10191000AC319B01AC01C701B6010E94A9309B010B\r
+:10192000AC0160E070E080E090E40E94C33221E20C\r
+:1019300030ED42E053E40E946032C454DD4F0FB6F4\r
+:10194000F894DEBF0FBECDBFDF91CF911F910F91F5\r
+:10195000FF90EF90DF90CF900C94EB0CC454DD4FD0\r
+:101960000FB6F894DEBF0FBECDBFDF91CF911F91B0\r
+:101970000F91FF90EF90DF90CF9008951092870223\r
+:1019800010928602809171008D7F8093710080910A\r
+:1019900090008F7780939000109248021092470237\r
+:1019A00010928002109281021092820210928302A1\r
+:1019B00010927F0210927E02EEE5F2E0AEE4B2E019\r
+:1019C00011921192119211921D921D9282E0EE37A6\r
+:1019D000F807B1F708956F927F928F929F92AF921E\r
+:1019E000BF92CF92DF92EF92FF920F931F93CF930C\r
+:1019F000DF936B017C010EE712E04CE5A42E42E080\r
+:101A0000B42EC7E0D0E0A7019601F801929182912F\r
+:101A1000729162918F010E940D31882349F02197C4\r
+:101A2000F2E0AF1AB108CF3F8FEFD80761F734C0AB\r
+:101A3000F8011082118212821382F5011182108244\r
+:101A4000FE01EE0FFF1FEE0FFF1FE25AFD4FDE01FA\r
+:101A5000AA0FBB1FA25BBD4FCE011AC001964481E5\r
+:101A600055816681778140835183628373831482B9\r
+:101A700015821682178212962D913C91139711961A\r
+:101A80003C932E9313961C921E92129734961296A4\r
+:101A90008730910519F7C3CF809186029091870214\r
+:101AA000019797FD05C0909387028093860204C03A\r
+:101AB0001092870210928602E0918602F0918702CE\r
+:101AC0003097C9F4809171008D7F8093710080916F\r
+:101AD00090008F7780939000109280021092810284\r
+:101AE000109282021092830210927F0210927E0264\r
+:101AF0001092470285C03197DF01AA0FBB1FAA0FC2\r
+:101B0000BB1FA25ABD4FCD90DD90ED90FC90EE0F23\r
+:101B1000FF1FE25BFD4FC081D18160908002709019\r
+:101B200081028090820290908302A7019601662D27\r
+:101B3000772D882D992D0E940D3187FF25C0262DE8\r
+:101B4000372D482D592DC701B6010E94A83020E03D\r
+:101B500030E04AEF54E40E9411315B018C012A2DE0\r
+:101B60003B2D402F512F662D772D882D992D0E94CA\r
+:101B7000A9303B014C01A7019601772D992D0E94B8\r
+:101B80000D31181664F72EC0A7019601662D772D2A\r
+:101B9000882D992D0E945C32181634F5A701960104\r
+:101BA000662D772D882D992D0E94A83020E030E0F9\r
+:101BB0004AEF54E40E9411315B018C012A2D3B2D28\r
+:101BC000402F512F662D772D882D992D0E94A830FA\r
+:101BD0003B014C01A7019601772D992D0E945C32A3\r
+:101BE00087FFECCF10924D02C0928002D09281020A\r
+:101BF000E0928202F0928302D0937F02C0937E0231\r
+:101C0000DF91CF911F910F91FF90EF90DF90CF90D8\r
+:101C1000BF90AF909F908F907F906F9008953E9A65\r
+:101C2000E1E7F0E080818D7F808382E08093900007\r
+:101C30008AE18093910008951F920F920FB60F9240\r
+:101C40001124CF92DF92EF92FF922F933F934F9305\r
+:101C50005F936F937F938F939F93AF93BF93CF9334\r
+:101C6000DF93EF93FF9380914702882309F479C0B3\r
+:101C700020E030E0A90160918002709181028091A2\r
+:101C80008202909183020E945C3218160CF069C0A7\r
+:101C900020E030E040E251E46091490270914A0254\r
+:101CA00080914B0290914C020E945C321816BCF459\r
+:101CB00080918402909185020196609186027091D4\r
+:101CC00087020E9448349093850280938402109288\r
+:101CD000490210924A0210924B0210924C02C0919B\r
+:101CE0008402D0918502CC0FDD1FCC0FDD1FC25ABC\r
+:101CF000DD4F288139814A815B8160E074E284E7AD\r
+:101D00009BE40E9411310E94793170939700609397\r
+:101D10009600288139814A815B8160E074E284E722\r
+:101D20009BE40E9411310E947931759567957093FB\r
+:101D300099006093980020E030E040E85FE3609114\r
+:101D4000490270914A0280914B0290914C020E948C\r
+:101D5000A9306093490270934A0280934B0290939A\r
+:101D60004C0280914802882309F493C0C09043023A\r
+:101D7000D0904402E0904502F090460220E030E02E\r
+:101D8000A901C701B6010E945C321816F4F4A7013C\r
+:101D9000960160E074E284E79BE40E9411310E94A6\r
+:101DA00079317093970060939600A701960160E0E7\r
+:101DB00074E284E79BE40E9411310E9479317595A9\r
+:101DC0006795709399006093980060913D027091BF\r
+:101DD0003E026F5F7F4F70933E0260933D0280E052\r
+:101DE00090E00E94AA3120913F0230914002409140\r
+:101DF0004102509142020E945C3287FD4AC08091AC\r
+:101E00003C028F5F80933C029091F0038917A0F011\r
+:101E10008091F503882319F010923C020DC0809147\r
+:101E200071008D7F80937100809190008F778093F7\r
+:101E30009000109248022DC0E091F103F091F2035E\r
+:101E400080913C0298E0899FE00DF11D1124808172\r
+:101E50009181A281B3818093430290934402A09325\r
+:101E60004502B093460220E030E040E85EE3648142\r
+:101E70007581868197810E94603260933F027093E2\r
+:101E80004002809341029093420210923E021092CF\r
+:101E90003D02FF91EF91DF91CF91BF91AF919F9163\r
+:101EA0008F917F916F915F914F913F912F91FF9013\r
+:101EB000EF90DF90CF900F900FBE0F901F9018956E\r
+:101EC0000F931F93CF93DF9300D0CDB7DEB78C0174\r
+:101ED00080914702882331F04A8369830E94BE0CB7\r
+:101EE00069814A8181E0809348021093F203009354\r
+:101EF000F1036093F0034093F503109249021092AE\r
+:101F00004A0210924B0210924C0210923C02F801CD\r
+:101F10004081518162817381409343025093440216\r
+:101F2000609345027093460220E030E040E85EE3B3\r
+:101F300064817581868197810E94603260933F023F\r
+:101F400070934002809341029093420210923E02AD\r
+:101F500010923D02809171008260809371008091A7\r
+:101F600090008068809390000F900F90DF91CF9148\r
+:101F70001F910F9108956F927F928F929F92AF92CF\r
+:101F8000BF92CF92DF92EF92FF920F931F93CF9366\r
+:101F9000DF936B017C01EA018091480281110E946C\r
+:101FA000BE0C81E08093470220E030E0A901C70128\r
+:101FB000B6010E945C3218160CF09AC06090800244\r
+:101FC00070908102809082029090830220E030E045\r
+:101FD000A901662D772D882D992D0E940D31811133\r
+:101FE00028C0C0928002D0928102E0928202F092D8\r
+:101FF0008302D0937F02C0937E02809186029091EB\r
+:102000008702FC01EE0FFF1FEE0FFF1FE25AFD4F8C\r
+:10201000C082D182E282F382FC01EE0FFF1FE25BFD\r
+:10202000FD4FD183C08301969093870280938602EF\r
+:102030005FC0A7019601662D772D882D992D0E94EE\r
+:102040000D3187FF25C0262D372D482D592DC7016D\r
+:10205000B6010E94A83020E030E04AEF54E40E942C\r
+:1020600011315B018C012A2D3B2D402F512F662D04\r
+:10207000772D882D992D0E94A9303B014C01A70195\r
+:102080009601772D992D0E940D31181664F7A9CF6E\r
+:10209000A7019601662D772D882D992D0E945C321F\r
+:1020A00018160CF09ECFA7019601662D772D882D6E\r
+:1020B000992D0E94A83020E030E04AEF54E40E94BD\r
+:1020C00011315B018C012A2D3B2D402F512F662DA4\r
+:1020D000772D882D992D0E94A8303B014C01A70136\r
+:1020E0009601772D992D0E945C3287FFECCF79CF36\r
+:1020F000809171008260809371008091900080686F\r
+:1021000080939000DF91CF911F910F91FF90EF90FE\r
+:10211000DF90CF90BF90AF909F908F907F906F9007\r
+:102120000895809191020895CF93DF9300D01F927C\r
+:10213000CDB7DEB72091FA03243021F523E02983BF\r
+:102140009B838A832093E9008FEF06C095ED9A95D3\r
+:10215000F1F70000882329F09091E800815095FF65\r
+:10216000F5CF8091E80085FF0DC040E050E063E0CE\r
+:1021700070E0CE0101960E947E148091E8008E7777\r
+:102180008093E8000F900F900F90DF91CF9108950A\r
+:10219000CF93DF9300D01F92CDB7DEB72091FA0323\r
+:1021A000243029F522E029839B838A8383E080936E\r
+:1021B000E9008FEF06C095ED9A95F1F700008823AE\r
+:1021C00029F09091E800815095FFF5CF8091E800CB\r
+:1021D00085FF0DC040E050E063E070E0CE01019665\r
+:1021E0000E947E148091E8008E778093E8000F9023\r
+:1021F0000F900F90DF91CF9108952091FA03243032\r
+:10220000F9F422E02093E9002FEF06C035ED3A956E\r
+:10221000F1F70000222329F03091E800215035FF2A\r
+:10222000F5CF2091E80025FF0BC040E050E065E0CD\r
+:1022300070E00E947E148091E8008E778093E80021\r
+:102240000895CF93DF93EC018091FA03843041F538\r
+:1022500081E08093E9008FEF06C095ED9A95F1F744\r
+:102260000000882329F09091E800815095FFF5CF78\r
+:102270008091E80085FF14C040E050E068E070E025\r
+:10228000CE010E947E148091E8008E778093E80052\r
+:1022900088E0FE01A9E8B2E001900D928A95E1F78D\r
+:1022A000DF91CF910895BF92CF92DF92EF92FF928C\r
+:1022B0000F931F93CF93DF937C01B62EE90100E0CB\r
+:1022C00010E0C42ED12C0BC04991202F2B0D2F775D\r
+:1022D0004F776FE0C7010E94B4190F5F1F4F0C15B5\r
+:1022E0001D0594F3DF91CF911F910F91FF90EF9017\r
+:1022F000DF90CF90BF90089570E06F5F7F4F6F7059\r
+:1023000077270C94B4190F931F93CF93C42F633086\r
+:10231000710509F04AC0842F807F803849F18039E7\r
+:1023200009F043C0622F6F7770E080E090E00E9478\r
+:10233000AC3120E030E040E451E40E9411319B01D7\r
+:10234000AC0160E070E080E090E40E94C3320F775F\r
+:1023500010E023E0159507952A95E1F72DEC3CEC6C\r
+:1023600042E053E40E946032A8010E94BB0F1DC0EE\r
+:10237000622F6F7770E080E090E00E94AC3120E047\r
+:1023800030E040E451E40E9411319B01AC0160E077\r
+:1023900070E080E090E40E94C3322DEC3CEC42E01F\r
+:1023A00053E40E9460320E94EB0CCC3F29F4CF91A1\r
+:1023B0001F910F910C94BE0CCF911F910F91089516\r
+:1023C0000F931F93CF93DF93CDB7DEB727970FB649\r
+:1023D000F894DEBF0FBECDBF8C0114C08A810E946D\r
+:1023E0008E199A819D839B819E839C819F838111FD\r
+:1023F0001EC089818430B1F08730A1F08630A1F011\r
+:102400008530A1F0BE016F5F7F4F84E791E00E94AD\r
+:10241000FB1C8111E3CF84E791E00E94EC1C0E9439\r
+:1024200067190DC083E003C082E001C081E0AE0106\r
+:102430004B5F5F4F682FC8010E94211AE3CF279698\r
+:102440000FB6F894DEBF0FBECDBFDF91CF911F91C5\r
+:102450000F910895EF92FF920F93CF93DF9300D0E7\r
+:1024600000D000D0CDB7DEB77B014A832B830C832D\r
+:10247000842F2E834D830E948E192E814D818111D0\r
+:102480001BC082E0E816F10479F083E0E816F1045D\r
+:1024900021F0EA94EF2821F50BC0073F11F487E003\r
+:1024A00001C084E089830BC0273FD9F786E0FACFCB\r
+:1024B000473FB9F785E0F6CF42954F704983BE019B\r
+:1024C0006F5F7F4F84E791E00E94B11C84E791E049\r
+:1024D0000E94CF1C84E791E00E94EC1C0E946719C7\r
+:1024E00026960FB6F894DEBF0FBECDBFDF91CF9119\r
+:1024F0000F91FF90EF9008958091F903811109C029\r
+:102500000E946D160E94CA168091E200846080933A\r
+:10251000E20008951092F9030895089508950C9427\r
+:102520006129809192028F5F8093920262E30E9400\r
+:102530002834911135C01092920280919302882321\r
+:1025400079F18091FA03843049F58091E9008F7028\r
+:102550009091EC0090FF02C090E801C090E0982BB1\r
+:1025600084E08093E9008091EB0080FF14C08091AB\r
+:10257000EE0087FD03C00FC01092F1008091E800CB\r
+:1025800085FDFACF8091E80080FF05C08091E800CA\r
+:102590008E778093E8009F709093E90010929302E9\r
+:1025A000089542E061EC81E00E94E31542E061ECB5\r
+:1025B00082E00E94E31542E061EC83E00E94E315B3\r
+:1025C00042E261EC84E00E94E31542E361E885E0C9\r
+:1025D0000E94E31542E360E886E00C94E3158091E5\r
+:1025E000FC03833009F454C030F4813071F0823040\r
+:1025F00009F0A5C08CC08A3009F479C08B3009F489\r
+:102600005FC0893009F09BC020C08091FB03813AF4\r
+:1026100009F095C08091E800877F8093E800809161\r
+:10262000FF0390910004892B21F060E080E090E0AE\r
+:1026300003C068E089E892E070E00E941C15809178\r
+:10264000E8008B778093E80008958091FB03813246\r
+:1026500009F075C08091FF0390910004892B09F067\r
+:102660006EC08091E800877F8093E80005C080916C\r
+:10267000FA03882309F463C08091E80082FFF7CF52\r
+:102680008091F100809391028091E8008B7753C094\r
+:102690008091FB03813A09F052C08091FF03909131\r
+:1026A0000004892B09F04BC08091E800877F80935C\r
+:1026B000E8008091E80080FFFCCF80918A0136C05D\r
+:1026C0008091FB038132D9F58091FF039091000442\r
+:1026D000892BA9F58091E800877F8093E8000E940C\r
+:1026E0001A168091FD0380938A010C9456238091E1\r
+:1026F000FB03813221F58091E800877F8093E80019\r
+:102700000E941A168091FE0380938802089580919A\r
+:10271000FB03813AA1F48091E800877F8093E80071\r
+:102720008091E80080FFFCCF809188028093F100C7\r
+:102730008091E8008E778093E8000C941A16089533\r
+:1027400083E093E00E94F0196AE272E183E093E093\r
+:102750000E94461A60EE71E183E093E00E944A1AFB\r
+:1027600084B7877F84BF88E10FB6F89480936000B8\r
+:10277000109260000FBE90E080E80FB6F89480934E\r
+:102780006100909361000FBE0E94741D0E946D163F\r
+:102790000E94CA168091E20084608093E2007894DF\r
+:1027A00063E871E183E093E00E94EC196CE771E16A\r
+:1027B00083E093E00E94E41963E571E183E093E034\r
+:1027C0000E94E8190E940F0E0E9467190E94761D50\r
+:1027D00080E891E00E94201D0BC00E941E2980917C\r
+:1027E000F803882329F00E94492981110E94681466\r
+:1027F0008091FA03853089F383E093E00E94F91B0E\r
+:102800000E94801DF5CF292F332723303105B1F0E9\r
+:102810004CF42130310509F44DC02230310509F066\r
+:102820004EC007C02132310541F12232310591F10C\r
+:1028300046C0E0EDF0E084EE93E045C0992781309A\r
+:10284000910569F08230910589F0892B09F037C034\r
+:10285000E0EEF3E0E491F0E080EE93E034C0E2EBF0\r
+:10286000F3E0E491F0E082EB93E02DC0E6E8F3E0E2\r
+:10287000E491F0E086E893E026C0643000F5E62FAE\r
+:10288000F0E0EE0FFF1FE550FE4F80819181E9E0FF\r
+:10289000F0E019C0643098F4E62FF0E0DF01AA0FF1\r
+:1028A000BB1FAD5FBD4F8D919C91E55FFD4FE081FA\r
+:1028B000F0E009C0E2E1F0E084EB94E004C0E0E085\r
+:1028C000F0E080E090E0DA018D939C93CF010895D1\r
+:1028D00080E189BD82E189BD09B400FEFDCF809110\r
+:1028E000D8008F7D8093D8008091E0008260809333\r
+:1028F000E0008091E00081FDFCCF0895BF92CF926F\r
+:10290000DF92EF92FF920F931F93CF93DF937C019F\r
+:102910008B01EA010E943B16B82E811133C020972B\r
+:1029200031F028813981021B130BE20EF31EC12CFA\r
+:10293000D12C23C08091E80085FD15C08091E8006E\r
+:102940008E778093E800209749F0888199818C0DDB\r
+:102950009D1D9983888325E0B22E14C00E943B16EA\r
+:10296000882359F00EC0F70181917F018093F10017\r
+:1029700001501109FFEFCF1ADF0A01151105D1F639\r
+:1029800001C0B82E8B2DDF91CF911F910F91FF9039\r
+:10299000EF90DF90CF90BF900895BF92CF92DF92DB\r
+:1029A000EF92FF920F931F93CF93DF937C018B01E4\r
+:1029B000EA010E943B16B82E811133C0209731F0F6\r
+:1029C00028813981021B130BE20EF31EC12CD12C7E\r
+:1029D00023C08091E80085FD15C08091E8008B77C9\r
+:1029E0008093E800209749F0888199818C0D9D1D86\r
+:1029F0009983888345E0B42E14C00E943B16882337\r
+:102A000059F00EC08091F100F70181937F010150D0\r
+:102A10001109FFEFCF1ADF0A01151105D1F601C028\r
+:102A2000B82E8B2DDF91CF911F910F91FF90EF90DA\r
+:102A3000DF90CF90BF90089540910104509102041F\r
+:102A40004617570748F06115710539F44091E800C1\r
+:102A50004E774093E80001C0BA01FC0140E033C06A\r
+:102A60008091FA03882309F444C0853009F443C0F7\r
+:102A70008091E80083FD41C08091E80082FD33C071\r
+:102A80008091E80080FF1FC09091F3008091F200D8\r
+:102A9000392F20E0A901482BCA0106C0419140937B\r
+:102AA000F1006150710901966115710519F08830C6\r
+:102AB0009105A0F341E0089709F040E08091E8001B\r
+:102AC0008E778093E8006115710551F64111C8CFEA\r
+:102AD0000AC08091FA03882361F0853061F080910B\r
+:102AE000E80083FD0AC08091E80082FFF2CF80E019\r
+:102AF000089582E0089583E0089581E0089540916B\r
+:102B00000104509102044617570748F061157105FA\r
+:102B100039F44091E8004E774093E80001C0BA01D3\r
+:102B2000FC0140E034C08091FA03882309F445C0D9\r
+:102B3000853009F444C08091E80083FD42C0809153\r
+:102B4000E80082FD34C08091E80080FF20C09091B1\r
+:102B5000F3008091F200392F20E0A901482BCA012F\r
+:102B600007C044914093F10031966150710901967C\r
+:102B70006115710519F08830910598F341E00897C7\r
+:102B800009F040E08091E8008E778093E8006115BD\r
+:102B9000710549F64111C7CF0AC08091FA03882315\r
+:102BA00061F0853061F08091E80083FD0AC080917A\r
+:102BB000E80082FFF2CF80E0089582E0089583E08C\r
+:102BC000089581E00895982F2CC09093E9009817FC\r
+:102BD00039F07091EC002091ED005091F00003C0AD\r
+:102BE000242F762F50E021FD02C09F5F1AC0309144\r
+:102BF000EB003E7F3093EB003091ED003D7F309352\r
+:102C0000ED003091EB0031603093EB007093EC00FD\r
+:102C10002093ED005093F0002091EE0027FDE5CFCA\r
+:102C200007C0973090F28F708093E90081E008959B\r
+:102C300080E008958091FB0387FD05C08091E80046\r
+:102C400080FF0EC012C08091E80082FD05C0809117\r
+:102C5000FA038111F8CF08958091E8008B7708C0BE\r
+:102C60008091FA038111EACF08958091E8008E7770\r
+:102C70008093E80008958091E4009091E50045E696\r
+:102C80002091EC0020FD1FC023C02091FA032223D5\r
+:102C900091F0253091F02091EB0025FD10C020919E\r
+:102CA000E4003091E5002817390751F34150C9017C\r
+:102CB00039F784E0089582E0089583E0089581E083\r
+:102CC000089580E008952091E80020FFDECFF9CF3D\r
+:102CD0002091E80022FFD9CFF4CF0E94DB160E949A\r
+:102CE000E316E0EEF0E0808181608083E8EDF0E0C3\r
+:102CF00080818F77808319BCA7EDB0E08C918E7FA7\r
+:102D00008C9380818F7E80831092F90308950F93B6\r
+:102D10001F93CF93DF930E94DB160E94E316C8ED4A\r
+:102D2000D0E088818F7788838881806888838881D4\r
+:102D30008F7D888319BC1092FA031092F6031092CB\r
+:102D4000F8031092F70300EE10E0F80180818B7F0A\r
+:102D5000808388818160888342E060E080E00E9417\r
+:102D6000E315E1EEF0E080818E7F8083E2EEF0E01B\r
+:102D7000808181608083808188608083F801808188\r
+:102D80008E7F8083888180618883DF91CF911F91BE\r
+:102D90000F910895E8EDF0E080818F7E8083E7ED6C\r
+:102DA000F0E080818160808384E082BF81E0809355\r
+:102DB000F9030C948716E8EDF0E080818E7F808324\r
+:102DC0001092E20008951092DA001092E100089546\r
+:102DD0001F920F920FB60F9211242F933F934F9390\r
+:102DE0005F936F937F938F939F93AF93BF93EF9373\r
+:102DF000FF938091E10082FF0BC08091E20082FF8F\r
+:102E000007C08091E1008B7F8093E1000E949112C6\r
+:102E10008091DA0080FF1FC08091D80080FF1BC026\r
+:102E20008091DA008E7F8093DA008091D90080FF54\r
+:102E30000DC080E189BD82E189BD09B400FEFDCFEE\r
+:102E400081E08093FA030E947C1205C019BC1092A5\r
+:102E5000FA030E948A128091E10080FF19C08091DC\r
+:102E6000E20080FF15C08091E2008E7F8093E20037\r
+:102E70008091E20080618093E2008091D8008062BE\r
+:102E80008093D80019BC85E08093FA030E948E12CB\r
+:102E90008091E10084FF30C08091E20084FF2CC06B\r
+:102EA00080E189BD82E189BD09B400FEFDCF80913A\r
+:102EB000D8008F7D8093D8008091E1008F7E809331\r
+:102EC000E1008091E2008F7E8093E2008091E20039\r
+:102ED00081608093E2008091F603882311F084E002\r
+:102EE00007C08091E30087FF02C083E001C081E05A\r
+:102EF0008093FA030E948F128091E10083FF29C022\r
+:102F00008091E20083FF25C08091E100877F80935C\r
+:102F1000E10082E08093FA031092F6038091E100D1\r
+:102F20008E7F8093E1008091E2008E7F8093E200AB\r
+:102F30008091E20080618093E20042E060E080E006\r
+:102F40000E94E3158091F00088608093F0000E9459\r
+:102F50008D12FF91EF91BF91AF919F918F917F91D2\r
+:102F60006F915F914F913F912F910F900FBE0F90F6\r
+:102F70001F9018951F920F920FB60F9211242F9346\r
+:102F80003F934F935F936F937F938F939F93AF93F1\r
+:102F9000BF93CF93EF93FF938091E9008F7090914F\r
+:102FA000EC0090FF02C090E801C090E0C92FC82B50\r
+:102FB0001092E9008091F000877F8093F000789470\r
+:102FC0000E94FE171092E9008091F00088608093C3\r
+:102FD000F000CF70C093E900FF91EF91CF91BF91C6\r
+:102FE000AF919F918F917F916F915F914F913F91A1\r
+:102FF0002F910F900FBE0F901F9018951F93CF9396\r
+:10300000DF93CDB7DEB7AC970FB6F894DEBF0FBE37\r
+:10301000CDBFEBEFF3E08091F100819324E0E3304A\r
+:10302000F207C9F70E94EF128091E80083FF37C1D1\r
+:103030008091FB039091FC03953009F488C038F42B\r
+:103040009130B1F170F0933009F029C131C098305E\r
+:1030500009F4F8C0993009F404C1963009F01FC191\r
+:103060009DC0803821F0823809F019C108C08091D4\r
+:10307000F7039091F803992389F082600FC0809143\r
+:10308000FF03909100048F7099278093E90080914D\r
+:10309000EB0085FB882780F91092E9009091E80009\r
+:1030A000977F9093E8008093F1001092F100D5C0D3\r
+:1030B000882319F0823009F0F2C08F7121F082303C\r
+:1030C00009F0EDC00BC08091FD03813009F0E7C02D\r
+:1030D000933009F080E08093F8032FC08091FD03C6\r
+:1030E00081112BC08091FF03909100048F7099276C\r
+:1030F000009709F4D4C08093E9002091EB0020FFF1\r
+:103100001CC02091FC03233021F48091EB008062ED\r
+:1031100012C09091EB0090619093EB0021E030E0C1\r
+:1031200001C0220F8A95EAF72093EA001092EA0084\r
+:103130008091EB0088608093EB001092E900809111\r
+:10314000E800877F8093E8000E941A16A8C08111CA\r
+:10315000A6C08091FD039091FE038F779927182FC9\r
+:103160009091E3009078982B9093E3008091E80091\r
+:10317000877F8093E8000E941A168091E80080FF04\r
+:10318000FCCF8091E30080688093E300112311F06D\r
+:1031900083E001C082E08093FA0381C080588230CE\r
+:1031A00008F07DC08091FD039091FE038C3D23E0EB\r
+:1031B000920779F583E08A838AE289834FB7F8948E\r
+:1031C000DE01139620E03EE051E2E32FF0E0509361\r
+:1031D0005700E49120FF03C0E295EF703F5FEF706E\r
+:1031E0008E2F90E0EA3010F0C79601C0C0968D9304\r
+:1031F0009D932F5F243149F74FBF8091E800877F6F\r
+:103200008093E8006AE270E0CE0101960E941C15EE\r
+:1032100013C0AE01455D5F4F6091FF030E94031430\r
+:103220000097E9F12091E800277F2093E800BC0196\r
+:103230008BA59CA50E947F158091E8008B778093D9\r
+:10324000E8002DC0803859F58091E800877F809391\r
+:10325000E8008091F6038093F1008091E8008E777A\r
+:1032600071CF81111CC09091FD039230C0F4809108\r
+:10327000E800877F8093E8009093F6030E941A1677\r
+:103280008091F603811104C08091E30087FF02C0A2\r
+:1032900084E001C081E08093FA030E94D112809102\r
+:1032A000E80083FF0AC08091E800877F8093E800F0\r
+:1032B0008091EB0080628093EB00AC960FB6F8949F\r
+:1032C000DEBF0FBECDBFDF91CF911F910895CF9389\r
+:1032D0008091FA038823B1F08091E9008F7090917A\r
+:1032E000EC0090FF02C090E801C090E0C92FC82B0D\r
+:1032F0001092E9008091E80083FD0E94FE17CF70D4\r
+:10330000C093E900CF910895881F8827881F0895EA\r
+:1033100091E0883F08F490E0892F0895982F907FDE\r
+:10332000903B99F038F4903981F0903A71F09038F0\r
+:10333000C9F40BC0903DA1F018F4903C99F410C072\r
+:10334000903E19F0903F71F402C083E00895E82F99\r
+:10335000E15FEF3038F4F0E0E15FFD4F80810895E8\r
+:1033600082E0089580E008950F932F774F776F7074\r
+:10337000606BDC01ED91FC91022F242F462F63E05E\r
+:1033800070E009950F9108950F932F774F776F7025\r
+:103390006069DC01ED91FC91022F242F462F63E040\r
+:1033A00070E009950F9108950F932F774F776F7005\r
+:1033B0006068DC01ED91FC91022F242F462F63E021\r
+:1033C00070E009950F910895FC017383628308955D\r
+:1033D000FC01738F628F0895FC01758F648F0895CF\r
+:1033E000CF93DF93EC011DA21FA21EA2BC01685D5A\r
+:1033F0007F4F40EC88519F4F0E942D1C1B821A82E8\r
+:103400001D821C821F821E82198618861B861A86C0\r
+:103410001D861C861F861E86198A188A1B8A1A8A90\r
+:103420001D8A1C8A1F8A1E8A198E188E1B8E1A8E60\r
+:103430001D8E1C8E1F8E1E8E19A218A2DF91CF9199\r
+:103440000895CF92DF92FF920F931F93CF93DF9354\r
+:103450001F92CDB7DEB7F62E6A018C0108511F4FBF\r
+:1034600008C0F60161916F01C80149830E94341CB4\r
+:1034700049818C2D841B8F15A0F30F90DF91CF9184\r
+:103480001F910F91FF90DF90CF900895FC01718301\r
+:1034900060830895FC0171A360A30895AF92BF9269\r
+:1034A000CF92DF92EF92FF920F931F93CF93DF9310\r
+:1034B00000D01F92CDB7DEB77C016B01142FB22E66\r
+:1034C000A02EDC0195968C9195978430F1F45A9654\r
+:1034D000ED91FC915B97309709F4D8C0CB0101972F\r
+:1034E00063E070E00E943434DB01AA0FBB1FA60F1B\r
+:1034F000B71F49832A830B834C2D4A1B9E012F5FE4\r
+:103500003F4FBD01C7010995B1C06230710509F493\r
+:1035100053C06330710529F06130710509F09CC01A\r
+:1035200083C0842F807F803A01F130F48038B9F075\r
+:10353000803909F0ABC00DC0803EE9F0803F09F151\r
+:10354000803B09F0A3C0D7011296ED91FC9113972F\r
+:1035500023C0D7011496ED91FC9115971DC0D7019A\r
+:103560001696ED91FC91179717C0D7011896ED911B\r
+:10357000FC91199711C0D7011A96ED91FC911B97F8\r
+:103580000BC0423F09F082C0D7011C96ED91FC911F\r
+:103590001D97309731F47AC0309709F477C0123F05\r
+:1035A00021F42A2D4B2D62EF04C0612F6F702A2D5C\r
+:1035B0004B2DC70109955AC0842F807F803D59F05B\r
+:1035C000803F79F0803C09F061C0D7011E96ED91F3\r
+:1035D000FC911F9719C0D7015096ED91FC9151971E\r
+:1035E00013C0433F31F4D7015296ED91FC915397AC\r
+:1035F00008C0413F09F04AC0D7015496ED91FC91B3\r
+:103600005597309741F442C0309709F43FC0133FBB\r
+:1036100011F0113F19F44B2D612F03C0612F6F7012\r
+:103620004B2DC701099522C0842F0E948819882339\r
+:1036300031F0D7015696ED91FC91579707C0163F90\r
+:1036400029F5D7015896ED91FC9159973097F1F0F3\r
+:10365000612FC70109950AC064307105A8F416C02E\r
+:103660000A2D2B2D412FB601C7010995D7015E9672\r
+:10367000ED91FC915F97309789F00A2D2B2D412F0A\r
+:10368000B601C70109950AC0C12CD12CD7015C969F\r
+:10369000ED91FC915D97309719F7E8CF0F900F905F\r
+:1036A0000F90DF91CF911F910F91FF90EF90DF90DE\r
+:1036B000CF90BF90AF900895EF92FF920F931F931A\r
+:1036C000CF93DF93EC01162F862F0E948819882351\r
+:1036D00069F0FDA081E08DA300E020E0412F61E0D2\r
+:1036E00070E0CE010E944E1AFDA27CC0812F0E9484\r
+:1036F00084194DA1882309F440C0443029F01AA34D\r
+:1037000021E030E03FA32EA3812F0E948E1981304B\r
+:1037100031F070F0823051F0833059F507C08DA33D\r
+:1037200000E020E0412F61E070E01EC08DA35AC090\r
+:10373000103F19F0173FE9F404C084E08DA31AA3E9\r
+:103740003FC02EA13FA1C90163E070E00E94343464\r
+:103750008C0F9D1FFC0112A3B9016F5F7F4F7FA3E8\r
+:103760006EA30CA12BA14AA1CE010E944E1A1DA24C\r
+:1037700039C01DA21FA21EA235C0442399F12EA15B\r
+:103780003FA1C90163E070E00E9434347C01FE0176\r
+:10379000E80FF91F12A3B9016F5F7F4F7FA36EA3DC\r
+:1037A0008130910591F082E0E816F104D9F40CA182\r
+:1037B0002BA14AA1CE010E944E1A8DA1843091F016\r
+:1037C00081E090E09FA38EA30DC0423059F400E049\r
+:1037D0002BA14AA1CE010E944E1A8DA1843011F076\r
+:1037E000FFA2EEA2DF91CF911F910F91FF90EF907A\r
+:1037F0000895CF92DF92EF92FF920F931F93CF9392\r
+:10380000DF93EC01E8A1F9A1309709F009958E0149\r
+:1038100008511F4FC8010E94661CE12CF12CC82ED4\r
+:10382000D12C0FC060E0C8010E947A1C682FCE0125\r
+:103830000E945C1B61E0C8010E948B1C8FEFE81A9C\r
+:10384000F80AEC14FD0470F3DF91CF911F910F91F2\r
+:10385000FF90EF90DF90CF900895FC014283748336\r
+:1038600063831182108208950F931F93CF93DF9388\r
+:10387000EC01062F0E94AC1C182F298130E0C901F1\r
+:1038800001966A8170E00E944834488150E08417B4\r
+:10389000950729F4812F0E94AF1C80E012C0EB81B4\r
+:1038A000FC81E20FF31F00832981822F90E00196B3\r
+:1038B0006A8170E00E9448348983812F0E94AF1C86\r
+:1038C00081E0DF91CF911F910F910895CF93DF9306\r
+:1038D000EC010E94AC1C29819881291710F0C22F9D\r
+:1038E00002C0CA81C20FC91B0E94AF1C8C2FDF917E\r
+:1038F000CF910895FC012081862F90E0820F911DC9\r
+:10390000628170E00E9448340380F481E02DE80F6A\r
+:10391000F91F808108950F931F93CF93DF931F9218\r
+:10392000CDB7DEB78C0169830E94AC1C482FF8012B\r
+:1039300080816981262F30E0280F311D6281C90105\r
+:1039400070E00E9448348083842F0F90DF91CF91E4\r
+:103950001F910F910C94AF1C8FB7F89408958FBFEF\r
+:103960000895FC01CB012091FA032430B1F42181A8\r
+:103970002F702093E90040E050E064E070E00E9486\r
+:103980007E1481110BC09091E80095FD07C09091C5\r
+:10399000E8009E779093E800089582E008952091D2\r
+:1039A000FA032430A9F4FC0181818F708093E9002F\r
+:1039B0003091F3002091F200932F80E0822B892B2D\r
+:1039C00049F08091E8008E778093E8000C943B16D4\r
+:1039D00082E0089580E008952091FA03243051F4A4\r
+:1039E000FC0121812F702093E9002091E80020FD47\r
+:1039F0000C94CF1C0895FC01CB012091FA032430D4\r
+:103A000011F080E0089526812F702093E900209125\r
+:103A1000E80022FFF6CF2091E80025FFF2CF40E03A\r
+:103A200050E064E070E00E94CD148091E80085FDD4\r
+:103A300005C08091E8008B778093E80081E00895CD\r
+:103A400090939502809394020895E0919402F091EE\r
+:103A50009502309721F00190F081E02D099480E0EB\r
+:103A60000895E0919402F0919502309721F0028040\r
+:103A7000F381E02D09940895E0919402F09195026C\r
+:103A8000309721F00480F581E02D0994089520916C\r
+:103A90009602309197028217930771F090939702E4\r
+:103AA00080939602E0919402F0919502309721F074\r
+:103AB0000680F781E02D09940895209198023091B5\r
+:103AC00099028217930771F090939902809398025C\r
+:103AD000E0919402F0919502309721F00084F185F5\r
+:103AE000E02D0994089508950C94731D0E94952962\r
+:103AF0000E94AD060E94692A0C9411300C94E705CF\r
+:103B00005F926F927F928F929F92AF92BF92CF926D\r
+:103B1000DF92EF92FF920F931F93CF93DF93CDB776\r
+:103B2000DEB72A970FB6F894DEBF0FBECDBF0E9456\r
+:103B3000BD079AE9C92E92E0D92E00E010E0AA2430\r
+:103B4000A394B12C502E802F0E9411093C01F60144\r
+:103B5000E190F1906F01E826F926E114F10431F4C7\r
+:103B60000F5F1F4F0530110569F73AC08091F002D1\r
+:103B700081FD0E941A0920E030E04501022E02C0BA\r
+:103B8000880C991C0A94E2F7C4018E219F21892B8D\r
+:103B900009F12E835F826820792081E0672809F48B\r
+:103BA00080E088870E949E298160782F9A87898784\r
+:103BB0004E815F8168858A850E94391EF801EE0F6B\r
+:103BC000FF1FE656FD4F80819181882599259183BD\r
+:103BD000808316C02F5F3F4F2C30310571F6C0CF68\r
+:103BE0008FEF89838A831B820E949E298160782FB0\r
+:103BF0009D838C8349815A816B818D810E94391EFE\r
+:103C00000E94562D1091A4020E94251D1817D9F06C\r
+:103C10000E94251D8093A4022A960FB6F894DEBF59\r
+:103C20000FBECDBFDF91CF911F910F91FF90EF900D\r
+:103C3000DF90CF90BF90AF909F908F907F906F90CC\r
+:103C40005F900C947E1D2A960FB6F894DEBF0FBECF\r
+:103C5000CDBFDF91CF911F910F91FF90EF90DF903B\r
+:103C6000CF90BF90AF909F908F907F906F905F901C\r
+:103C70000895CF93DF93CDB7DEB72B970FB6F894A7\r
+:103C8000DEBF0FBECDBF4F83588769877A878B878A\r
+:103C9000DE01119686E0FD0111928A95E9F785E033\r
+:103CA000FE01379601900D928A95E1F749815A817C\r
+:103CB0006B817C818D819E810E9415262B960FB68B\r
+:103CC000F894DEBF0FBECDBFDF91CF910895CF93A3\r
+:103CD000C82F882309F4C1C0823859F40E94251DD9\r
+:103CE00081FDBBC089E30E947C280E94F82889E3FB\r
+:103CF0000CC0833879F40E94251D80FDAEC083E599\r
+:103D00000E947C280E94F82883E50E949E28CF917B\r
+:103D10000C94F828843859F40E94251D82FD9DC01A\r
+:103D200087E40E947C280E94F82887E4EECF845024\r
+:103D3000813A48F48C2F0E94732F81118EC08C2FF2\r
+:103D40000E947C28E4CF8C2F805E883050F4C770AE\r
+:103D500081E090E001C0880FCA95EAF70E94BF2871\r
+:103D6000D6CF8C2F855A833078F4C53A29F0C63ADD\r
+:103D700031F482E890E005C081E890E002C083E879\r
+:103D800090E0CF910C94471D8C2F885A833108F016\r
+:103D900064C0C83A39F1C93A41F1CA3A49F1CB3A5B\r
+:103DA00051F1CC3A59F1CD3A61F1C03B69F1CE3ACB\r
+:103DB00071F1CF3A79F1C13B81F1C23B89F1C33B4B\r
+:103DC00091F1C43B99F1C53BA1F1C63BA9F1C73BB9\r
+:103DD000B1F1C83BB9F1C93BC1F1CA3BC9F58AE2AF\r
+:103DE00092E038C082EE90E035C089EE90E032C0BB\r
+:103DF0008AEE90E02FC085EB90E02CC086EB90E03F\r
+:103E000029C087EB90E026C08CEC90E023C08DECBD\r
+:103E100090E020C083E891E01DC08AE891E01AC0DC\r
+:103E200082E991E017C084E991E014C081E292E058\r
+:103E300011C083E292E00EC084E292E00BC085E202\r
+:103E400092E008C086E292E005C087E292E002C0FC\r
+:103E500080E090E0CF910C945D1DCF910895882370\r
+:103E600009F44DC0823859F40E94251D81FF47C0D6\r
+:103E700089E30E947C280E94F82889E30CC08338DB\r
+:103E800071F40E94251D80FF3AC083E50E947C28C2\r
+:103E90000E94F82883E50E949E280C94F828843814\r
+:103EA00059F40E94251D82FF2AC087E40E947C28C5\r
+:103EB0000E94F82887E4EFCF982F9450913A08F4A5\r
+:103EC000EACF982F905E983058F4282F277081E021\r
+:103ED00090E001C0880F2A95EAF70E94C528DDCF3F\r
+:103EE000982F955A933020F480E090E00C94471D71\r
+:103EF000885A833120F480E090E00C945D1D089591\r
+:103F0000882321F00E94BF280C94F8280895882364\r
+:103F100021F00E94C5280C94F8280895BF92CF92F2\r
+:103F2000DF92EF92FF920F931F93CF93DF93CDB762\r
+:103F3000DEB727970FB6F894DEBF0FBECDBF8C015A\r
+:103F400085E0F801DE01119601900D928A95E1F766\r
+:103F5000F80130812181F280558152955F70838113\r
+:103F60009481892B39F02F3F41F481E090E03F3F6D\r
+:103F700031F003C081E090E002C080E090E080FD7D\r
+:103F800073C339832A8389819A815E830E94392889\r
+:103F9000B92E8F830E9438280E9460272B2D2295EE\r
+:103FA0002F7030E05E816F812530310509F4E6C065\r
+:103FB0006CF4243031050CF0A2C04B2D407F8B2DCA\r
+:103FC0008F70223031050CF045C017C02C30310500\r
+:103FD0004CF42A3031050CF0E7C12830310509F0E6\r
+:103FE00043C3E5C02D30310509F4BAC20CF4A2C2B6\r
+:103FF0002F30310509F038C323C3182F411101C0F8\r
+:1040000002C01295107FFF2059F0112309F46BC2F2\r
+:10401000812F6F830E94CF280E94F8286F8163C28E\r
+:10402000862F0E942F1F112309F41EC3812F0E9487\r
+:10403000D52827960FB6F894DEBF0FBECDBFDF910F\r
+:10404000CF911F910F91FF90EF90DF90CF90BF9095\r
+:104050000C94F828403211F08295807F662319F085\r
+:10406000613071F523C0FF20B1F0511101C032C0A1\r
+:10407000513081F527960FB6F894DEBF0FBECDBF45\r
+:10408000DF91CF911F910F91FF90EF90DF90CF9034\r
+:10409000BF900C94DF28511101C003C0513009F4C6\r
+:1040A000E3C28E830E94E2288E819AC1FF2021F014\r
+:1040B000563008F0D9C20EC0553008F0D5C290C1B4\r
+:1040C000FF20C9F0552331F0F801958190FF0BC214\r
+:1040D0009F70958327960FB6F894DEBF0FBECDBFB5\r
+:1040E000DF91CF911F910F91FF90EF90DF90CF90D4\r
+:1040F000BF900C94801F552309F472C109C22B2D67\r
+:1041000026952695237030E02115310529F02130C0\r
+:10411000310509F0A9C219C0FF2021F0862F9B2D7F\r
+:10412000937002C080E090E027960FB6F894DEBF4F\r
+:104130000FBECDBFDF91CF911F910F91FF90EF90F8\r
+:10414000DF90CF90BF900C94471DFF2021F0862F69\r
+:104150009B2D937002C080E090E027960FB6F894F4\r
+:10416000DEBF0FBECDBFDF91CF911F910F91FF90AA\r
+:10417000EF90DF90CF90BF900C945D1D862FFF20B5\r
+:1041800019F00E945C2C02C00E94C42C27960FB626\r
+:10419000F894DEBF0FBECDBFDF91CF911F910F917D\r
+:1041A000FF90EF90DF90CF90BF900C944B2D8B2D14\r
+:1041B000837009F079C0F11057C2262F22952695F9\r
+:1041C0002770220F220F862F8F70C82ED12CE12C42\r
+:1041D000F12C022E04C0CC0CDD1CEE1CFF1C0A943A\r
+:1041E000D2F764FF10C06FE070E080E090E004C0A0\r
+:1041F000660F771F881F991F2A95D2F760957095D3\r
+:104200008095909503C060E070E0CB012B2D269542\r
+:1042100026952370422F50E042305105D9F04330AB\r
+:10422000510569F16C297D298E299F29413051055D\r
+:1042300051F127960FB6F894DEBF0FBECDBFDF91C8\r
+:10424000CF911F910F91FF90EF90DF90CF90BF9093\r
+:104250000C9475276C297D298E299F2927960FB6E6\r
+:10426000F894DEBF0FBECDBFDF91CF911F910F91AC\r
+:10427000FF90EF90DF90CF90BF900C9487270E9423\r
+:104280007527C701B60127960FB6F894DEBF0FBE9B\r
+:10429000CDBFDF91CF911F910F91FF90EF90DF90F5\r
+:1042A000CF90BF900C946327FF2019F08B2D817065\r
+:1042B00001C08695882309F4D7C1262F229526951B\r
+:1042C0002770220F220F862F8F70C82ED12CE12C41\r
+:1042D000F12C022E04C0CC0CDD1CEE1CFF1C0A9439\r
+:1042E000D2F764FF10C06FE070E080E090E004C09F\r
+:1042F000660F771F881F991F2A95D2F760957095D2\r
+:104300008095909503C060E070E0CB012B2D269541\r
+:1043100026952370422F50E042305105D9F04330AA\r
+:10432000510569F16C297D298E299F29413051055C\r
+:1043300051F127960FB6F894DEBF0FBECDBFDF91C7\r
+:10434000CF911F910F91FF90EF90DF90CF90BF9092\r
+:104350000C9414286C297D298E299F2927960FB645\r
+:10436000F894DEBF0FBECDBFDF91CF911F910F91AB\r
+:10437000FF90EF90DF90CF90BF900C9426280E9482\r
+:104380001428C701B60127960FB6F894DEBF0FBEFA\r
+:10439000CDBFDF91CF911F910F91FF90EF90DF90F4\r
+:1043A000CF90BF900C940228603F59F120F4603EFA\r
+:1043B00008F494C008C0623F09F467C0F0F1633F9D\r
+:1043C00009F08CC065C0162F1F708B2D8F71FF20D8\r
+:1043D00021F00E94AD27812F7DCE0E94C827812F1A\r
+:1043E00027960FB6F894DEBF0FBECDBFDF91CF91F9\r
+:1043F0001F910F91FF90EF90DF90CF90BF900C94A2\r
+:10440000871FFF20B1F0553008F02EC18B2D8F7122\r
+:1044100027960FB6F894DEBF0FBECDBFDF91CF91C8\r
+:104420001F910F91FF90EF90DF90CF90BF900C9471\r
+:10443000E727563008F018C1E9CFFF2099F08B2DFF\r
+:104440008F7127960FB6F894DEBF0FBECDBFDF91F8\r
+:10445000CF911F910F91FF90EF90DF90CF90BF9081\r
+:104460000C94AD278B2D8F7127960FB6F894DEBF75\r
+:104470000FBECDBFDF91CF911F910F91FF90EF90B5\r
+:10448000DF90CF90BF900C94C827F110EBCFD7CF1F\r
+:10449000FF2099F08B2D8F7127960FB6F894DEBF11\r
+:1044A0000FBECDBFDF91CF911F910F91FF90EF9085\r
+:1044B000DF90CF90BF900C949E2727960FB6F8946C\r
+:1044C000DEBF0FBECDBFDF91CF911F910F91FF9047\r
+:1044D000EF90DF90CF90BF900C949927FF20A9F028\r
+:1044E000552309F4ACCF862F27960FB6F894DEBF7C\r
+:1044F0000FBECDBFDF91CF911F910F91FF90EF9035\r
+:10450000DF90CF90BF900C94671E552309F4AACF7B\r
+:10451000862F27960FB6F894DEBF0FBECDBFDF9172\r
+:10452000CF911F910F91FF90EF90DF90CF90BF90B0\r
+:104530000C942F1F4B2D4F70C8010E941A03279611\r
+:104540000FB6F894DEBF0FBECDBFDF91CF911F91A4\r
+:104550000F91FF90EF90DF90CF90BF900C94CB26FF\r
+:10456000F11082C09B2D9F70492F50E042305105C1\r
+:1045700099F144F44115510569F04130510509F0B4\r
+:1045800073C019C043305105C1F14430510509F0E1\r
+:104590006BC044C027960FB6F894DEBF0FBECDBFE8\r
+:1045A000DF91CF911F910F91FF90EF90DF90CF900F\r
+:1045B000BF900C94223027960FB6F894DEBF0FBE42\r
+:1045C000CDBFDF91CF911F910F91FF90EF90DF90C2\r
+:1045D000CF90BF900C94393027960FB6F894DEBF79\r
+:1045E0000FBECDBFDF91CF911F910F91FF90EF9044\r
+:1045F000DF90CF90BF900C94553027960FB6F8946B\r
+:10460000DEBF0FBECDBFDF91CF911F910F91FF9005\r
+:10461000EF90DF90CF90BF900C946830862F279654\r
+:104620000FB6F894DEBF0FBECDBFDF91CF911F91C3\r
+:104630000F91FF90EF90DF90CF90BF900C948C3053\r
+:104640004B2D4F70C80127960FB6F894DEBF0FBEF2\r
+:10465000CDBFDF91CF911F910F91FF90EF90DF9031\r
+:10466000CF90BF900C941B0927960FB6F894DEBF2D\r
+:104670000FBECDBFDF91CF911F910F91FF90EF90B3\r
+:10468000DF90CF90BF9008950E94DC280E94B1284F\r
+:104690000E94F8280E94F72D0E944B2D80E090E0A8\r
+:1046A0000E94471D80E090E00C945D1D0E94CC2884\r
+:1046B0000C9444230E943928292F22952F7030E032\r
+:1046C0002C3031054CF42A3031056CF4225031097C\r
+:1046D0002230310590F407C02C30310551F02F30D5\r
+:1046E000310559F406C0803E10F0803F31F481E07E\r
+:1046F000089593FB882780F9089580E00895CF936B\r
+:10470000DF9300D000D01F92CDB7DEB70F900F908F\r
+:104710000F900F900F90DF91CF910895CF93DF937B\r
+:1047200000D000D000D0CDB7DEB726960FB6F894F3\r
+:10473000DEBF0FBECDBFDF91CF9108951F93CF9302\r
+:10474000DF93C091DB0216E012C0D0E01C9FF001A5\r
+:104750001D9FF00D1124E555FD4F4081518162816F\r
+:104760007381848195810E948E232196C7708091E8\r
+:10477000DC02C813EACFDF91CF911F9108954091D9\r
+:10478000A5025091A6026091A7027091A8028091A3\r
+:10479000A9029091AA020C948E230F931F93CF939A\r
+:1047A000DF938091AA0282958F7009F069C0809191\r
+:1047B000A702882309F464C0A091DB02D091DC0237\r
+:1047C000B091A502C091A6028091A8029091A90281\r
+:1047D00021E030E0BF3F11F020E030E0122FBC01BB\r
+:1047E0006095709506E04AC0009721F0CF3F29F40C\r
+:1047F000212F05C021E030E002C020E030E020FDA4\r
+:104800003BC04A2F50E0049FF001059FF00D11249A\r
+:10481000E555FD4F2181C2132FC02081B2132CC05A\r
+:104820002281211129C0238134812817390718F0EA\r
+:10483000281B390B02C0260F371F283C3105E0F436\r
+:104840008091AA028F7080618093AA0286E0849F83\r
+:10485000F001859FF00D1124E055FD4F80818F7090\r
+:104860008061808385EA92E00E948E1FDF91CF9164\r
+:104870001F910F910C949E23AF5FA770AD13B4CF1F\r
+:10488000DF91CF911F910F910895EF92FF920F93B7\r
+:104890001F93CF93DF93CDB7DEB762970FB6F8942F\r
+:1048A000DEBF0FBECDBF8C0185E0F801DE011D9695\r
+:1048B00001900D928A95E1F7D8014C9111965C9187\r
+:1048C000119712966C9112971396ED90FC90149795\r
+:1048D0007091A502E091A6028091A8029091A90290\r
+:1048E000009739F0EF3F41F421E030E07F3F31F0B5\r
+:1048F00003C021E030E002C020E030E020FD5CC1D8\r
+:104900002091A702222309F4F1C0E816F90628F045\r
+:104910009701281B390BC90104C0809590958E0D15\r
+:104920009F1D883C910508F098C08091AA02982F9D\r
+:10493000907F09F064C0E51314C0741312C06111B4\r
+:1049400010C08F7080618093AA020E94BF2385EA05\r
+:1049500092E00E948E1F8091AA02D80115968C9336\r
+:1049600043C1EF2839F05F3F41F481E090E04F3FD1\r
+:1049700031F003C081E090E002C080E090E080FD73\r
+:1049800003C081E0862702C080E090E080FF2EC057\r
+:104990008091DB022091DC0236E013C090E0389F6A\r
+:1049A000F001399FF00D1124E555FD4F718157132A\r
+:1049B00006C07081471303C07281671317C0019648\r
+:1049C00087708213EBCF12C19F7059F0882309F4CE\r
+:1049D0000BC107C09F7029F0F8019581907F09F401\r
+:1049E00003C1805E883008F4FFC0D2C0662309F49A\r
+:1049F000FBC08091AA0281608093AA02F5C0E513F2\r
+:104A000008C0741306C0611104C0D80115968C93B8\r
+:104A10009DC04D875E878D859E856A8B0E945A2337\r
+:104A20006A89882309F4B4C0662309F4B1C02091CF\r
+:104A3000AA02822F82958F7090E002970CF4C6C074\r
+:104A40008091A5029091A60298878F831986FB8694\r
+:104A5000EA862C87CE01079646C08091AA02982F3D\r
+:104A6000907F59F47E2DF98AE88A89890E947F23F4\r
+:104A700085EA92E00E948E1F95C0E51311C0741361\r
+:104A80000FC061110DC0F8018583C8010E948E1FFF\r
+:104A9000E5EAF2E086E0DF011D928A95E9F7A2C01F\r
+:104AA0004D875E878D859E856A8B0E945A236A8911\r
+:104AB000882309F46DC0662309F46AC02091AA0214\r
+:104AC000822F82958F7090E002970CF47FC08091C6\r
+:104AD000A5029091A6029A8389831B82FD82EC82B3\r
+:104AE0002E83CE0101960E948E1F70C0E816F90633\r
+:104AF00028F09701281B390BC90104C080959095B7\r
+:104B00008E0D9F1D883C910508F046C0662309F470\r
+:104B10003FC0E51330C074132EC02091AA0220FDBF\r
+:104B200021C0322F32953F70832F90E00097D1F053\r
+:104B3000D80115962C9315970F9741F0832F8F5F0F\r
+:104B40008295807F2F70282B15962C93C8010E9488\r
+:104B50008E1F86E0F801A5EAB2E001900D928A95D9\r
+:104B6000E1F73EC086E0F801A5EAB2E001900D92BF\r
+:104B70008A95E1F737C04D875E878D859E850E94B7\r
+:104B80005A23811123C08091AA0281608093AA02D6\r
+:104B9000C8010E948E1F26C07E2DF98AE88A898965\r
+:104BA0000E947F23E5EAF2E086E0DF011D928A950C\r
+:104BB000E9F70E94BF2318C0662351F34D875E8733\r
+:104BC0008D859E850E945A23882311F386E0F80183\r
+:104BD000A5EAB2E001900D928A95E1F70E94CD23FB\r
+:104BE0000E94BF2381E014C080E012C04D875E8721\r
+:104BF0008D859E850E943928292F22952F7030E0BF\r
+:104C0000223031050CF4E0CE243031050CF6E2CE32\r
+:104C100062960FB6F894DEBF0FBECDBFDF91CF9185\r
+:104C20001F910F91FF90EF9008951F93CF93DF9303\r
+:104C3000CDB7DEB72C970FB6F894DEBF0FBECDBF51\r
+:104C40004F83588769877A878B879C87CE01079621\r
+:104C50000E9445248823D9F02F8138858A859B8539\r
+:104C6000892B39F03F3F19F080E090E004C02F3FDE\r
+:104C7000D9F781E090E0892B09F06DC04F8158850C\r
+:104C800069857A858B859C850E948E2364C086E029\r
+:104C9000FE013796DE01119601900D928A95E1F79B\r
+:104CA000FF81E8854A855B854115510539F0EF3F65\r
+:104CB00041F481E090E0FF3F31F003C081E090E0FB\r
+:104CC00002C080E090E080FD46C02091DC0230E030\r
+:104CD000C9010196877099276091DB0270E0861701\r
+:104CE000970709F440C0F983EA835D834C8396E01B\r
+:104CF000929FD001939FB00D1124A555BD4FFE0189\r
+:104D0000319601900D929A95E1F78093DC020E9412\r
+:104D10009E2321C0189FC001112485559D4F0E94DC\r
+:104D20004524882371F1E091DB021E9FF0011124DC\r
+:104D3000E555FD4F40815181628173818481958168\r
+:104D40000E948E238091DB0290E001968770992764\r
+:104D50008093DB0201C016E08091DB029091DC02BF\r
+:104D60008913D8CF0EC00E9456231092DC021092F5\r
+:104D7000DB02E5EAF2E086E0DF011D928A95E9F7C1\r
+:104D8000EACF2C960FB6F894DEBF0FBECDBFDF91F1\r
+:104D9000CF911F910895DF92EF92FF920F931F938F\r
+:104DA000CF93DF93EC01009709F46EC0D12CEE2471\r
+:104DB000E394F12C8E010F5F1F4FFE018491843725\r
+:104DC00048F4843008F04CC0813071F0823009F032\r
+:104DD0005BC01EC0853709F43FC080F1982F9458FE\r
+:104DE000903708F051C03FC02296F8018491982F67\r
+:104DF000905E983050F48770FE2D01C0FF0F8A95A9\r
+:104E0000EAF78F2F0E94CF2813C00E94671E2FC081\r
+:104E10002296F8018491982F905E983060F4877004\r
+:104E2000FE2D01C0FF0F8A95EAF78F2F0E94D5282B\r
+:104E30000E94F8281CC00E942F1F19C02296F8015A\r
+:104E4000049107C08FE99FE00197F1F700C00000CF\r
+:104E500001500111F7CF0BC02296F801D49007C082\r
+:104E60000E94671E03C08F770E942F1FE8018D2DBF\r
+:104E700007C08150EFE9FFE03197F1F700C0000073\r
+:104E8000882309F497CFF5CFDF91CF911F910F9130\r
+:104E9000FF90EF90DF9008956093E1027093E2023B\r
+:104EA0008093E3029093E4020C9444236093DD0228\r
+:104EB0007093DE028093DF029093E0020C9444230F\r
+:104EC00008950C944C270F931F930091E1021091C9\r
+:104ED000E2022091E3023091E402602B712B822BDD\r
+:104EE000932B1F910F910C944C270F931F930091BC\r
+:104EF000E1021091E2022091E3023091E40260238A\r
+:104F00007123822393231F910F910C944C270F93AD\r
+:104F10001F930091E1021091E2022091E30230918F\r
+:104F2000E40260277127822793271F910F910C9429\r
+:104F30004C2760E070E0CB010C94562741E050E034\r
+:104F400060E070E004C0440F551F661F771F8A950C\r
+:104F5000D2F7CB01BA010C94562741E050E060E053\r
+:104F600070E004C0440F551F661F771F8A95D2F763\r
+:104F70008091DD029091DE02A091DF02B091E0020B\r
+:104F8000482B592B6A2B7B2BCB01BA010C9456274B\r
+:104F900041E050E060E070E004C0440F551F661F20\r
+:104FA000771F8A95D2F740955095609570958091BE\r
+:104FB000DD029091DE02A091DF02B091E002482371\r
+:104FC00059236A237B23CB01BA010C94562741E075\r
+:104FD00050E060E070E004C0440F551F661F771F6B\r
+:104FE0008A95D2F78091DD029091DE02A091DF02D6\r
+:104FF000B091E002482759276A277B27CB01BA01E5\r
+:105000000C9456270F931F930091DD021091DE023E\r
+:105010002091DF023091E002602B712B822B932BC9\r
+:105020001F910F910C9456270F931F930091DD024F\r
+:105030001091DE022091DF023091E00260237123A3\r
+:10504000822393231F910F910C9456270F931F9344\r
+:105050000091DD021091DE022091DF023091E0022A\r
+:1050600060277127822793271F910F910C94562751\r
+:105070000895CF92DF92EF92FF920F931F93CF93F9\r
+:10508000DF93EC01C090E102D090E202E090E302F5\r
+:10509000F090E4028091DD029091DE02A091DF02A7\r
+:1050A000B091E002C82AD92AEA2AFB2A0FE110E0CF\r
+:1050B000B701A601002E04C07695679557954795D0\r
+:1050C0000A94D2F740FF08C0BE01802F0E947104ED\r
+:1050D0008130910509F007C00150110948F7BE0160\r
+:1050E00080E00E947104DF91CF911F910F91FF909A\r
+:1050F000EF90DF90CF90089540918B0150918C01FB\r
+:1051000020E030E09FEFFA01E20FF31F62816817A1\r
+:10511000A1F09F3F19F4611101C0922F2F5F3F4F03\r
+:105120002630310581F707C0FA01E90FF11D97FD1F\r
+:10513000FA95828308959F3FB9F7089540918B01B6\r
+:1051400050918C0120E030E0FA01E20FF31F9281D0\r
+:10515000981301C012822F5F3F4F26303105A1F70F\r
+:10516000089581E090E0E0918B01F0918C01E80FCF\r
+:10517000F91F1082019688309105A9F70895909142\r
+:10518000E502982B9093E502089580959091E502B1\r
+:1051900098239093E50208951092E5020895909166\r
+:1051A000E602982B9093E602089580959091E6028E\r
+:1051B00098239093E60208951092E6020895809352\r
+:1051C000E70208951092E702089540918B015091F3\r
+:1051D0008C0120E030E080E0FA01E20FF31F9181C2\r
+:1051E00091118F5F2F5F3F4F27303105A9F7089549\r
+:1051F000E0918B01F0918C018091E5028083E09138\r
+:105200008B01F0918C0180819091E602892B808343\r
+:105210009091E702992361F0E0918B01F0918C016C\r
+:105220008081892B80830E94E52881110E94E228D9\r
+:1052300080918B0190918C010C94311D8091FA0327\r
+:10524000843021F11092F10220E488E190E00FB661\r
+:10525000F894A895809360000FBE2093600080E0D2\r
+:105260000E94590383B7817F846083BF83B78160C5\r
+:1052700083BF7894889583B78E7F83BF88E10FB60C\r
+:10528000F89480936000109260000FBE0895089516\r
+:105290000895CF9380E00E9459030E9447290E94FD\r
+:1052A000BD070E944829C0E08C2F0E941109892B5C\r
+:1052B00029F4CF5FC530C1F780E001C081E0CF9114\r
+:1052C00008950E94562380E00E9459030E941130E5\r
+:1052D0000E94251D0C94E7051F920F920FB60F92A6\r
+:1052E00011248F939F93AF93BF938091F10281110B\r
+:1052F00013C08091F2029091F302A091F402B09158\r
+:10530000F5024196A11DB11D8093F2029093F30224\r
+:10531000A093F402B093F502BF91AF919F918F914A\r
+:105320000F900FBE0F901F90189582E084BD93E000\r
+:1053300095BD9AEF97BD80936E0008958FB7F8944E\r
+:105340004091F2025091F3026091F4027091F502E3\r
+:105350008FBFCA010895CF92DF92EF92FF920F9311\r
+:105360001F932FB7F8944091F2025091F30260918D\r
+:10537000F4027091F5022FBF6A017B01EE24FF2435\r
+:105380008C0120E030E0C016D106E206F30620F0E2\r
+:105390009A01281B390B05C09C0120953095240FDC\r
+:1053A000351FC9011F910F91FF90EF90DF90CF90B3\r
+:1053B00008951F920F920FB60F9211248F939F930F\r
+:1053C000AF93BF938091F2029091F302A091F40207\r
+:1053D000B091F5020196A11DB11D8093F202909348\r
+:1053E000F302A093F402B093F502BF91AF919F91A5\r
+:1053F0008F910F900FBE0F901F9018950E946D1601\r
+:10540000F8942FEF87EA91E6215080409040E1F731\r
+:1054100000C0000087E090EBDC01809304049093CF\r
+:105420000504A0930604B09307042CE088E190E003\r
+:105430000FB6F894A895809360000FBE209360008B\r
+:10544000FFCFCF92DF92EF92FF920F931F93CF93F4\r
+:10545000DF93C82ED12C01E010E08D2D0E941109A0\r
+:105460007C01C0E0D0E098010C2E02C0220F331F57\r
+:105470000A94E2F72E213F21232B29F42196CC30E8\r
+:10548000D10589F708C06C2F7D2D80E00E944C0467\r
+:10549000C812F4CF06C0D39485E0D812DECF80E0E6\r
+:1054A00001C081E0DF91CF911F910F91FF90EF90AC\r
+:1054B000DF90CF900895CF93C82F8CE20E94212ACD\r
+:1054C000882321F08C2FCF910C94212A80E0CF915A\r
+:1054D0000895CF930E94AC2B811102C00E948D2BA6\r
+:1054E000C5E608C00E94BD078FE39CE90197F1F76C\r
+:1054F00000C00000C150B1F789E20E945B2A81110F\r
+:105500000AC18AE20E945B2A81110E948D2B85E0EC\r
+:105510000E945B2A81110E94FE290E94B72B809372\r
+:10552000F00287E00E945B2A882399F18BE10E94B8\r
+:105530005B2A882351F09091F00291FB882780F933\r
+:1055400021E0822780FB91F922C08EE00E945B2A35\r
+:10555000882351F09091F00292FB882780F921E096\r
+:10556000822780FB92F913C080E10E945B2A909110\r
+:10557000F002882341F093FB882780F921E08227FD\r
+:1055800080FB93F904C0892F809580FB90F990935C\r
+:10559000F0028091F0020E94BB2B0E94C92B8093E5\r
+:1055A000010380EE0E945B2A882341F08091010371\r
+:1055B000982F909590FB80F98093010389E30E94D6\r
+:1055C0005B2A882359F09091010391FB882780F989\r
+:1055D00021E0822780FB91F99093010382EE0E94E3\r
+:1055E0005B2A882359F09091010392FB882780F968\r
+:1055F00021E0822780FB92F99093010386EE0E94BE\r
+:105600005B2A882359F09091010393FB882780F946\r
+:1056100021E0822780FB93F99093010383EE0E949F\r
+:105620005B2A882359F09091010394FB882780F925\r
+:1056300021E0822780FB94F99093010385E30E9487\r
+:105640005B2A882359F09091010395FB882780F904\r
+:1056500021E0822780FB95F99093010381E30E946A\r
+:105660005B2A882359F09091010396FB882780F9E3\r
+:1056700021E0822780FB96F99093010381E10E944B\r
+:105680005B2A882359F09091010397FB882780F9C2\r
+:1056900021E0822780FB97F9909301038091010319\r
+:1056A0000E94CD2B87E20E945B2AC82F8EE10E94C8\r
+:1056B0005B2A8111C2608FE10E945B2A8111C46064\r
+:1056C00080E20E945B2A8111C86081E20E945B2A0D\r
+:1056D0008111C06182E20E945B2A8111C06283E273\r
+:1056E0000E945B2A8111C06484E20E945B2A8823A5\r
+:1056F00011F0C06802C0CC2329F08C2F0E94C42B6B\r
+:105700006C2F03C00E94C02B682F70E080E090E0F7\r
+:10571000CF910C946127CF9108956DEE7EEF80E0DC\r
+:1057200090E00E94783460E082E090E00E946A3469\r
+:1057300060E083E090E00E946A3460E084E090E002\r
+:105740000E946A3460E085E090E00E946A3460E084\r
+:1057500086E090E00C946A3480E090E00E9464342B\r
+:1057600021E08D3E9E4F09F020E0822F089582E0D7\r
+:1057700090E00C945C34682F82E090E00C946A34E2\r
+:1057800083E090E00C945C34682F83E090E00C940C\r
+:105790006A3484E090E00C945C34682F84E090E0FC\r
+:1057A0000C946A3486E090E00C945C34682F86E0B8\r
+:1057B00090E00C946A348091FE0280FF0BC06091EF\r
+:1057C000900185E0689FB0011124759567957595E6\r
+:1057D00067952AC081FF09C06091900185E0689FAC\r
+:1057E000B0011124759567951FC082FF07C06091B5\r
+:1057F000900185E0689FB001112416C04091F80225\r
+:105800004423C9F060918F01461788F720919001D9\r
+:1058100085E0289F90011124429FC001439F900D75\r
+:10582000112470E00E9448346038710540F461151D\r
+:10583000710539F002C065E070E0862F08958FE7AA\r
+:10584000089581E008958091FE0280FF08C0609174\r
+:105850008E0170E0759567957595679521C081FFFC\r
+:1058600006C060918E0170E07595679519C082FF42\r
+:1058700004C060918E0170E010C08091F80288230E\r
+:10588000C1F060918D018617A0F790918E01989FCD\r
+:10589000C001112470E00E9448346038710528F47A\r
+:1058A0006115710521F0862F08958FE7089581E035\r
+:1058B000089561E070E0F4CF803F21F40E94DB2B7B\r
+:1058C000819504C0813F29F40E94DB2B8093FB0269\r
+:1058D0000895823F21F40E94DB2B819504C0833F11\r
+:1058E00029F40E94DB2B8093FA020895893F19F472\r
+:1058F0000E94232C05C08A3F31F40E94232C8195FD\r
+:105900008093FC0208958B3F21F40E94232C819503\r
+:1059100004C08C3F29F40E94232C8093FD0208953B\r
+:10592000843F21F48091F902816017C0853F21F402\r
+:105930008091F902826011C0863F21F48091F902C2\r
+:1059400084600BC0873F21F48091F902886005C014\r
+:10595000883F31F48091F90280618093F9020895C3\r
+:105960008D3F21F48091FE0281600BC08E3F21F4B7\r
+:105970008091FE02826005C08F3F29F48091FE0273\r
+:1059800084608093FE020895803F29F48091FB0299\r
+:1059900087FF6EC007C0813F41F48091FB0218165B\r
+:1059A0000CF066C01092FB0263C09091FA02823F35\r
+:1059B00019F497FF5DC005C0833F31F419160CF050\r
+:1059C00057C01092FA0254C0893F31F48091FC0212\r
+:1059D00018160CF04DC006C08A3F39F48091FC02C5\r
+:1059E00087FF46C01092FC0243C08B3F29F4809190\r
+:1059F000FD0287FF3DC006C08C3F39F48091FD0257\r
+:105A00001816B4F51092FD0233C0843F21F4809142\r
+:105A1000F9028E7F05C0853F31F48091F9028D7FB8\r
+:105A20008093F90225C0863F21F48091F9028B7F93\r
+:105A3000F7CF873F21F48091F902877FF1CF883F2C\r
+:105A400021F48091F9028F7EEBCF8D3F21F480917C\r
+:105A5000FE028E7F0BC08E3F21F48091FE028D7F6F\r
+:105A600005C08F3F29F48091FE028B7F8093FE0258\r
+:105A70008091FA0281110EC08091FB0281110AC04F\r
+:105A80008091FC02811106C08091FD02811102C04B\r
+:105A90001092F802089589EF92E00E943C1D0E9446\r
+:105AA0009E299093F7028093F6020895CF938091F8\r
+:105AB000F6029091F7020E94AB294091F80244232C\r
+:105AC00021F02091910130E006C0209192015AE02E\r
+:105AD000259F900111248217930708F486C08091B6\r
+:105AE000FA0281110DC09091FB02911109C09091B1\r
+:105AF000FC02911105C09091FD02992309F475C033\r
+:105B00004F3F19F04F5F4093F802181624F40E949B\r
+:105B1000DB2B8093FA028091FA0287FF05C00E9476\r
+:105B2000DB2B81958093FA028091FB02181624F4F6\r
+:105B30000E94DB2B8093FB028091FB0287FF05C054\r
+:105B40000E94DB2B81958093FB026091FA02662311\r
+:105B500039F1C091FB02CC2319F1772767FD7095CD\r
+:105B6000872F972F0E94AC3123E333E343E35FE3B6\r
+:105B70000E9460320E9479316093FA026C2F77277D\r
+:105B800067FD7095872F972F0E94AC3123E333E395\r
+:105B900043E35FE30E9460320E9479316093FB022D\r
+:105BA0008091FC02181624F40E94232C8093FC029E\r
+:105BB0008091FC0287FF05C00E94232C8195809371\r
+:105BC000FC028091FD02181624F40E94232C80937D\r
+:105BD000FD028091FD0287FF05C00E94232C819564\r
+:105BE0008093FD02CF910C944B2DCF910895E9EF56\r
+:105BF000F2E085E0DF011D928A95E9F71092F80244\r
+:105C00001092FE020895833089F130F4813061F002\r
+:105C1000823009F06EC019C0853009F449C0B8F16E\r
+:105C2000863009F066C055C020919201862F90E021\r
+:105C3000820F911D8F3F910520F4620F60939201B6\r
+:105C400008958FEF80939201089520919101862FFE\r
+:105C500090E0820F911D8F3F910520F4620F6093B9\r
+:105C6000910108958FEF8093910108952091900103\r
+:105C7000862F90E0820F911D8F3F910520F4620FD7\r
+:105C80006093900108958FEF809390010895209183\r
+:105C90008F01862F90E0820F911D8F3F910520F498\r
+:105CA000620F60938F0108958FEF80938F010895A5\r
+:105CB00020918E01862F90E0820F911D8F3F9105DC\r
+:105CC00020F4620F60938E0108958FEF80938E0110\r
+:105CD000089520918D01862F90E0820F911D8F3FB6\r
+:105CE000910520F4620F60938D0108958FEF8093EA\r
+:105CF0008D010895833021F130F4813059F08230E4\r
+:105D000009F049C012C0853089F128F1863009F0C8\r
+:105D100042C037C080919201681720F4861B80939F\r
+:105D2000920108951092920108958091910168174F\r
+:105D300020F4861B8093910108951092910108959B\r
+:105D400080919001681720F4861B8093900108953C\r
+:105D500010929001089580918F01681720F4861B9E\r
+:105D600080938F01089510928F01089580918E0184\r
+:105D7000681720F4861B80938E01089510928E017F\r
+:105D8000089580918D01681720F4861B80938D0102\r
+:105D9000089510928D01089541E050E060E070E0B8\r
+:105DA00004C0440F551F661F771F8A95D2F7CB0199\r
+:105DB000BA010E9461270C945623873200F58E3178\r
+:105DC00008F086C08E3009F466C060F4873009F4AC\r
+:105DD0004DC018F4863049F531C0883041F18B3020\r
+:105DE00021F57BC0863109F478C018F48031E9F4DC\r
+:105DF0005CC0893109F471C08B31B9F442C0883379\r
+:105E000009F46BC048F4893209F460C0853309F4A1\r
+:105E10005DC0873251F45AC0833409F457C018F476\r
+:105E20008A3318F057C0883499F080E008950E94B2\r
+:105E3000B72B0E94C92B0E94D22B4FC08091F00239\r
+:105E4000817F8E7F8093F00281E08093FF0208952E\r
+:105E50000E9456232FEF83ED90E321508040904025\r
+:105E6000E1F700C000000E94FE2937C08091F002D7\r
+:105E700080FF03C0817F8E7F01C081608093F0022C\r
+:105E80002CC09091F00291FB882780F921E08227B5\r
+:105E900080FB91F913C09091F00292FB882780F962\r
+:105EA00021E0822780FB92F909C09091F00293FBD8\r
+:105EB000882780F921E0822780FB93F99093F002F4\r
+:105EC000882359F091609093F00207C080E003C0EE\r
+:105ED0008D5101C089530E94CC2E81E0089580E04D\r
+:105EE000089580E00895CF93C82F8091FF028130FC\r
+:105EF00071F020F0823009F089C037C0A0918B0189\r
+:105F0000B0918C018C91823209F082C007C0A091BF\r
+:105F10008B01B0918C018C91823249F48C2F0E94BC\r
+:105F20006F2F81111EC08C2F0E94DD2E1CC08C2F64\r
+:105F30000E94712F811115C0C43169F030F4CB304B\r
+:105F400081F0C03109F068C009C0C93221F0C833FE\r
+:105F500009F062C006C01092FF025EC082E080932A\r
+:105F6000FF0281E090E081705AC0C932C9F060F44C\r
+:105F7000C431B1F020F4C73009F04CC034C0CE5168\r
+:105F8000C63008F047C017C0CE3439F120F4CB3406\r
+:105F900009F040C01CC0C135C1F0C235D9F513C0ED\r
+:105FA00080910003882319F01092000333C081E030\r
+:105FB0008093FF0234C0EC2FF0E0E25EFD4F808161\r
+:105FC0008093000327C061E003C061E007C06AE07E\r
+:105FD000809100030E94032E1DC06AE0809100039F\r
+:105FE0000E947A2E17C08EE18093920182E3809303\r
+:105FF00091018AE08093900184E180938F0188E091\r
+:1060000080938E0188E280938D0104C01092FF027C\r
+:1060100080E005C081E003C080E090E0A4CFCF9194\r
+:1060200008950E94AC2B811102C00E948D2B0E940A\r
+:10603000D22B8093030480FF02C0869501C080E0CC\r
+:106040000C94590380910304982F9695292F30E0E2\r
+:10605000233031054CF49F5F990F8170892B81604B\r
+:10606000809303040E94D62B8091030486950C94A0\r
+:10607000590380910304982F969591F09158990FA8\r
+:106080008170892B809303048E7F91E009F490E066\r
+:106090008091030490FB80F9809303040E94D62B27\r
+:1060A0008091030486950C94590380910304982FE2\r
+:1060B000909590FB80F9809303040E94D62B8091E9\r
+:1060C000030480FF02C0869501C080E00C94590350\r
+:1060D00030910304232F26952F5F2F77822F90E096\r
+:1060E000317004972CF4220F232B2093030402C059\r
+:1060F0003093030480910304282F2E7F91E009F44C\r
+:1061000090E090FB80F9809303040E94D62B80914D\r
+:10611000030486950C94590320910304922F9695BD\r
+:106120009827990F822F8170892B809303048E7F8B\r
+:1061300091E009F490E08091030490FB80F9809352\r
+:1061400003040E94D62B8091030486950C94590376\r
+:106150005058BB27AA270ED075C166D130F06BD13D\r
+:1061600020F031F49F3F11F41EF45BC10EF4E09572\r
+:10617000E7FB51C1E92F77D180F3BA1762077307A4\r
+:106180008407950718F071F49EF58FC10EF4E09521\r
+:106190000B2EBA2FA02D0B01B90190010C01CA01E1\r
+:1061A000A0011124FF27591B99F0593F50F4503E8C\r
+:1061B00068F11A16F040A22F232F342F4427585F7E\r
+:1061C000F3CF469537952795A795F0405395C9F796\r
+:1061D0007EF41F16BA0B620B730B840BBAF091504E\r
+:1061E000A1F0FF0FBB1F661F771F881FC2F70EC0ED\r
+:1061F000BA0F621F731F841F48F4879577956795C0\r
+:10620000B795F7959E3F08F0B3CF9395880F08F0A8\r
+:106210009927EE0F979587950895D9D008F481E0D6\r
+:1062200008950CD00FC107D140F0FED030F021F41A\r
+:106230005F3F19F0F0C0511139C1F3C014D198F388\r
+:106240009923C9F35523B1F3951B550BBB27AA27F7\r
+:1062500062177307840738F09F5F5F4F220F331F69\r
+:10626000441FAA1FA9F333D00E2E3AF0E0E830D035\r
+:1062700091505040E695001CCAF729D0FE2F27D038\r
+:10628000660F771F881FBB1F261737074807AB0706\r
+:10629000B0E809F0BB0B802DBF01FF2793585F4F7B\r
+:1062A0002AF09E3F510568F0B6C000C15F3FECF395\r
+:1062B000983EDCF3869577956795B795F7959F5F40\r
+:1062C000C9F7880F911D9695879597F90895E1E094\r
+:1062D000660F771F881FBB1F621773078407BA07F3\r
+:1062E00020F0621B730B840BBA0BEE1F88F7E0954E\r
+:1062F000089504D06894B111D9C00895BCD088F035\r
+:106300009F5790F0B92F9927B751A0F0D1F0660FA1\r
+:10631000771F881F991F1AF0BA95C9F712C0B130BC\r
+:1063200081F0C3D0B1E00895C0C0672F782F8827CF\r
+:10633000B85F39F0B93FCCF3869577956795B395FB\r
+:10634000D9F73EF490958095709561957F4F8F4F6A\r
+:106350009F4F0895E89409C097FB3EF4909580956F\r
+:10636000709561957F4F8F4F9F4F9923A9F0F92F1B\r
+:1063700096E9BB279395F695879577956795B79599\r
+:10638000F111F8CFFAF4BB0F11F460FF1BC06F5F7F\r
+:106390007F4F8F4F9F4F16C0882311F096E911C091\r
+:1063A000772321F09EE8872F762F05C0662371F0B2\r
+:1063B00096E8862F70E060E02AF09A95660F771FC6\r
+:1063C000881FDAF7880F9695879597F90895990FA2\r
+:1063D0000008550FAA0BE0E8FEEF16161706E807AF\r
+:1063E000F907C0F012161306E407F50798F0621BD0\r
+:1063F000730B840B950B39F40A2661F0232B242BA5\r
+:10640000252B21F408950A2609F4A140A6958FEFC3\r
+:10641000811D811D089597F99F6780E870E060E015\r
+:1064200008959FEF80EC089500240A94161617062D\r
+:1064300018060906089500240A9412161306140675\r
+:1064400005060895092E0394000C11F4882352F0D8\r
+:10645000BB0F40F4BF2B11F460FF04C06F5F7F4F90\r
+:106460008F4F9F4F089557FD9058440F551F59F077\r
+:106470005F3F71F04795880F97FB991F61F09F3F31\r
+:1064800079F087950895121613061406551FF2CF5A\r
+:106490004695F1DF08C0161617061806991FF1CFAA\r
+:1064A00086957105610508940895E894BB276627D1\r
+:1064B0007727CB0197F908958ADF08F48FEF0895C5\r
+:1064C0000BD0C0CFB1DF28F0B6DF18F0952309F06C\r
+:1064D000A2CFA7CF1124EACFC6DFA0F3959FD1F3B7\r
+:1064E000950F50E0551F629FF001729FBB27F00D82\r
+:1064F000B11D639FAA27F00DB11DAA1F649F6627D7\r
+:10650000B00DA11D661F829F2227B00DA11D621F25\r
+:10651000739FB00DA11D621F839FA00D611D221FDF\r
+:10652000749F3327A00D611D231F849F600D211DC3\r
+:10653000822F762F6A2F11249F5750408AF0E1F066\r
+:1065400088234AF0EE0FFF1FBB1F661F771F881FAF\r
+:1065500091505040A9F79E3F510570F05CCFA6CFF7\r
+:106560005F3FECF3983EDCF3869577956795B7959A\r
+:10657000F795E7959F5FC1F7FE2B880F911D9695C4\r
+:10658000879597F90895FA01EE0FFF1F30962105C0\r
+:10659000310599F16115710561F48038BFE39B07FE\r
+:1065A00049F168949038810561F08038BFEF9B070E\r
+:1065B00041F0992342F5FF3FE1053105210511F135\r
+:1065C000E8940894E795D901AA2329F4AB2FBE2FAC\r
+:1065D000F85FD0F310C0FF5F70F4A695E0F7F739CD\r
+:1065E00050F019F0FF3A38F49F779F930CD00F903A\r
+:1065F00007FC905808953EF014CF60E070E080E80A\r
+:106600009FE308954FE79F775F934F933F932F93B7\r
+:106610009ED02F913F914F915F9152DF05C019F4A9\r
+:106620000EF0F9CE42CFFDCE26DFC8F39638C0F784\r
+:1066300007F80F92E8942BE33AEA48EB5FE74EDF66\r
+:106640000F920F920F924DB75EB70F92C0D0ECEA47\r
+:10665000F0E016D04F915F91EF91FF91E595EE1F1D\r
+:10666000FF1F49F0FE57E0684427EE0F441FFA95DC\r
+:10667000E1F74195550B32D00F9007FE26C00895E3\r
+:10668000DF93CF931F930F93FF92EF92DF927B01E3\r
+:106690008C01689405C0DA2EEF011EDFFE01E8943C\r
+:1066A000A5912591359145915591AEF3EF0162DDAC\r
+:1066B000FE019701A801DA9479F7DF90EF90FF903F\r
+:1066C0000F911F91CF91DF9108959B01AC0160E084\r
+:1066D00070E080E89FE3A5CD9ECEACC0CCDEE8F3B1\r
+:1066E0009923D9F3940F511DBBF39150504094F06E\r
+:1066F00059F0882332F0660F771F881F9150504061\r
+:10670000C1F79E3F510544F7880F911D96958795D7\r
+:1067100097F908955F3FACF0983E9CF0BB278695B3\r
+:1067200077956795B79508F4B1609395C1F7BB0F5E\r
+:1067300058F711F460FFE8CF6F5F7F4F8F4F9F4F87\r
+:10674000E3CFB4CE0EF076C06CCE689464CE93DE08\r
+:10675000C8F39923D1F3C6F3DF93CF931F930F931D\r
+:10676000FF92C92FDD2788232AF02197660F771F14\r
+:10677000881FDAF720E030E040E85FEB9FE38839DC\r
+:1067800020F0803E30F021968F77E3DCE4EDF0E0FE\r
+:1067900003C0DFDCE1E0F1E073DF8B01BE01EC015F\r
+:1067A000FB2E6F5771097595771F880B990BD4DDF8\r
+:1067B00028E132E741E35FE38FDEAF2D9801AE01C0\r
+:1067C000FF900F911F91CF91DF91D4DC3BCEFA0166\r
+:1067D000DC01AA0FBB1F9B01AC01BF5728F4222785\r
+:1067E0003327442750781FC0B75188F4AB2F0024BB\r
+:1067F000469537952795011CA395D2F3002069F0A3\r
+:10680000220F331F441FB395DAF30DD0A1CC6130B2\r
+:106810007105A0E88A07B94630F49B01AC016627F0\r
+:10682000772788279078309621F020833183428320\r
+:10683000538308959F3F31F0915020F487957795C9\r
+:106840006795B795880F911D9695879597F9089547\r
+:10685000991B79E004C0991F961708F0961B881FB2\r
+:106860007A95C9F780950895AA1BBB1B51E107C013\r
+:10687000AA1FBB1FA617B70710F0A61BB70B881FD0\r
+:10688000991F5A95A9F780959095BC01CD0108955F\r
+:1068900097FB072E16F4009407D077FD09D00E94CD\r
+:1068A000343407FC05D03EF4909581959F4F0895B0\r
+:1068B000709561957F4F0895F999FECF92BD81BD86\r
+:1068C000F89A992780B50895A8E1B0E042E050E039\r
+:1068D0000C947F34262FF999FECF1FBA92BD81BD4B\r
+:1068E00020BD0FB6F894FA9AF99A0FBE0196089552\r
+:1068F0000E946A34272F0C946B34DC01CB01FC011D\r
+:10690000F999FECF06C0F2BDE1BDF89A319600B408\r
+:0E6910000D9241505040B8F70895F894FFCF13\r
+:10691E0055D0A44600001644000000000000484276\r
+:10692E0061978A460000C8430000000000004842FC\r
+:10693E0055D024460000C843000000000000484225\r
+:10694E0000005C460000C843000000000000484202\r
+:10695E0061978A4600007A4455D0A4460000C84389\r
+:10696E00000000000000484200005C460000C843E2\r
+:10697E00000000000000484255D024460000164496\r
+:10698E000507000C058540000001064000000100CF\r
+:10699E0091102111FD10C810941001E8022808145E\r
+:1069AE000A321E42004500250026004300610060A9\r
+:1069BE000020003700640065006600670044004652\r
+:1069CE000024004700000002000400050007000933\r
+:1069DE00000B000C000E0010001100130015001724\r
+:1069EE000018001A001C001D001F002100230024A7\r
+:1069FE00002600280029002B002D002F0030003229\r
+:106A0E000034003500370039003B00F6030F042830\r
+:106A1E0004410469051C05E604C6043F4D362002F8\r
+:106A2E000302000001000101010101000101010248\r
+:086A3E00030405060708090026\r
+:00000001FF\r
diff --git a/keyboard/preonic/preonic_pcb_silent.hex b/keyboard/preonic/preonic_pcb_silent.hex
new file mode 100644 (file)
index 0000000..cc59d3f
--- /dev/null
@@ -0,0 +1,1189 @@
+:100000000C9465020C94A9020C94A9020C94A90208\r
+:100010000C94A9020C94A9020C94A9020C94A902B4\r
+:100020000C94A9020C94A9020C94430D0C94150E87\r
+:100030000C942B1C0C94A9020C94A9020C94A902F8\r
+:100040000C94A9020C94A9020C94A9020C94A90284\r
+:100050000C94A9020C94981C0C94A9020C94A9026B\r
+:100060000C94A9020C94A9020C94A9020C94A90264\r
+:100070000C94A9020C94A9020C94A9020C94A90254\r
+:100080000C94A9020C94A9020C94A9020C94A90244\r
+:100090000C94A9020C94A9020C94A9020C94A90234\r
+:1000A0000C94A9020C94A9020C94A90235001E001C\r
+:1000B0001F0020002100220023002400250026002C\r
+:1000C00027002A002B0014001A0008001500170052\r
+:1000D0001C0018000C00120013002A002900040064\r
+:1000E0001600070009000A000B000D000E000F00AB\r
+:1000F00033003400E1001D001B000600190005005C\r
+:100100001100100036003700380028000030E000F1\r
+:10011000E200E30003522C002C0004525000510076\r
+:1001200052004F0035001E001F0020002100220059\r
+:10013000230024002500260027002A002B0014009D\r
+:100140001A00090013000A000D000F0018001C001F\r
+:1001500033002A00290004001500160017000700CC\r
+:100160000B00110008000C0012003400E1001D001B\r
+:100170001B000600190005000E00100036003700B5\r
+:10018000380028000030E000E200E30003522C00B9\r
+:100190002C0004525000510052004F0035001E0048\r
+:1001A0001F0020002100220023002400250026003B\r
+:1001B00027002A002B0034003600370013001C00F3\r
+:1001C00009000A00060015000F002A00290004009B\r
+:1001D0001200080018000C0007000B0017001100A7\r
+:1001E00016003800E100330014000D000E001B0063\r
+:1001F000050010001A0019001D0028000030E00062\r
+:10020000E200E30003522C002C0004525000510085\r
+:1002100052004F0035001E001F0020002100220068\r
+:10022000230024002500260027002A0035021E0294\r
+:100230001F0220022102220223022402250226029A\r
+:1002400027022A0001003A003B003C003D003E002E\r
+:100250003F002D022E022F02300231020100400029\r
+:100260004100420043004400450000530153025343\r
+:100270000050010001000100010001000100010027\r
+:1002800001000100AB00AA00A900AE0035001E006D\r
+:100290001F0020002100220023002400250026004A\r
+:1002A00027002A0035001E001F0020002100220028\r
+:1002B000230024002500260027002A0001003A0020\r
+:1002C0003B003C003D003E003F002D002E002F0073\r
+:1002D0003000310001004000410042004300440072\r
+:1002E000450000530153025300500100010001007A\r
+:1002F000010001000100010001000100AB00AA00A3\r
+:10030000A900AE002A0354006800650020005000D8\r
+:10031000720065006F006E006900630020004B00F2\r
+:100320006500790062006F006100720064000000E7\r
+:100330002C034F007200740068006F006C006900AD\r
+:100340006E0065006100720020004B0065007900BE\r
+:1003500062006F006100720064007300000004031B\r
+:10036000090409027400040100A0FA090400000154\r
+:1003700003010100092111010001223F000705814D\r
+:100380000308000A09040100010301020009211108\r
+:10039000010001224D000705820308000A0904023A\r
+:1003A00000010300000009211101000122360007AD\r
+:1003B00005830308000A0904030002030000000982\r
+:1003C00021110100012220000705840320000107FC\r
+:1003D0000504032000011201100100000008EDFED9\r
+:1003E00061600100010200010631FF0974A10109E9\r
+:1003F00075150025FF9520750881020976150025E1\r
+:10040000FF952075089102C005010980A1018502B0\r
+:1004100016010026B7001A01002AB70075109501D1\r
+:100420008100C0050C0901A1018503160100269C6D\r
+:10043000021A01002A9C02751095018100C0050175\r
+:100440000902A1010901A1000509190129051500E9\r
+:10045000250195057501810295017503810105014D\r
+:10046000093009311581257F950275088106093803\r
+:100470001581257F950175088106050C0A3802153E\r
+:1004800081257F950175088106C0C005010906A177\r
+:1004900001050719E029E715002501950875018177\r
+:1004A0000295017508810105081901290595057551\r
+:1004B0000191029501750391010507190029FF15A6\r
+:1004C0000025FF950675088100C011241FBECFEFDF\r
+:1004D000DAE0DEBFCDBF04B603FE24C08091F10197\r
+:1004E0009091F201A091F301B091F4018730904B0B\r
+:1004F000A740B04BB9F41092F1011092F2011092A2\r
+:10050000F3011092F40114BE84B7877F84BF88E1A1\r
+:100510000FB6F89480936000109260000FBEE0E088\r
+:10052000F8E3099511E0A0E0B1E0E0EEF9E402C0E3\r
+:1005300005900D92A435B107D9F711E0A4E5B1E01B\r
+:1005400001C01D92A13FB107E1F70E94720A0C940D\r
+:10055000EE240C94000061110DC0FC0182818823FF\r
+:1005600031F085EE0E9426110E94272303C085EEFC\r
+:100570000E94EE1180E090E00895089508950E9491\r
+:10058000D1026E9A769A8DEB92E0892B11F00C9441\r
+:10059000BD0208958EEB92E0892B11F00C94BE02FF\r
+:1005A0000895279A2F988FEF9FEF9093870080935D\r
+:1005B00086008AE08093800089E1809381000C941A\r
+:1005C000D02281110BC080918000877F80938000B2\r
+:1005D00010928D0010928C002F9808952F988330E0\r
+:1005E00041F4809180008860809380008FEF9FEFBE\r
+:1005F00012C09091800098609093800023E030E0DA\r
+:10060000281B3109220F331F8FEF9FEF02C09695F1\r
+:1006100087952A95E2F790938D0080938C0008953A\r
+:100620008B3B910568F4883A910530F5853A910540\r
+:10063000C0F48430910598F4019709F06FC071C03F\r
+:10064000803E910508F46AC0883E910540F09C0107\r
+:10065000205F31092031310508F060C05CC09C0189\r
+:10066000A1C0853A910509F45FC0863A910509F465\r
+:100670005EC023E830E496C0883A910509F45AC078\r
+:10068000893A910509F459C08A3A910509F458C08C\r
+:100690008B3A910509F457C08C3A910509F456C07C\r
+:1006A0008D3A910509F455C0803B910509F454C079\r
+:1006B0008E3A910509F453C08F3A910509F452C05E\r
+:1006C000813B910509F451C0823B910509F450C06A\r
+:1006D000833B910509F44FC0843B910509F44EC05A\r
+:1006E000853B910509F44DC0863B910509F44CC04A\r
+:1006F000873B910509F44BC0883B910509F44AC03A\r
+:10070000893B910509F449C08A3B910509F048C02D\r
+:100710002AE236E447C09C01306544C020E030E066\r
+:1007200041C021E030E03EC021E830E43BC022E897\r
+:1007300030E438C022EE34E435C029EE34E432C06F\r
+:100740002AEE34E42FC025EB34E42CC026EB34E44D\r
+:1007500029C027EB34E426C02CEC34E423C02DEC74\r
+:1007600034E420C023E835E41DC02AE835E41AC08B\r
+:1007700022E935E417C024E935E414C021E236E467\r
+:1007800011C023E236E40EC024E236E40BC025E2B9\r
+:1007900036E408C026E236E405C027E236E402C0AB\r
+:1007A00020E034E4C901089508959CE0799FF001A8\r
+:1007B00011249CE3899FE00DF11D1124E60FF11D2A\r
+:1007C000EE0FFF1FE455FF4F25913491C9010895A5\r
+:1007D000880F991F845D9040FC0125913491C901D7\r
+:1007E0000895880F991F84559F4FFC0125913491DE\r
+:1007F000C90108950E94D5039C019A9581159F41D6\r
+:1008000010F4C9010895C90190528115904128F44E\r
+:10081000C9019F700E94F1030895C9019053811589\r
+:10082000904120F4C9019927906C0895C901905412\r
+:10083000409728F4C9018F709927946D089520314D\r
+:1008400080E4380719F480E091ED0895213190E4B7\r
+:10085000390719F480E090ED0895223140E434071F\r
+:1008600019F480E092ED0895233180E4380719F4FB\r
+:1008700080E093ED0895211590E5390769F40E9411\r
+:1008800015162FEF44E38CE0215040408040E1F703\r
+:1008900000C000000C94BD1C213090E5390731F4F4\r
+:1008A0008091D00181608093D0010895C901905555\r
+:1008B0008115904108F062C0432F55274F7055278E\r
+:1008C00041305105F9F4C90174E0880F991F7A95F8\r
+:1008D000E1F788279370B901E3E0660F771FEA9587\r
+:1008E000E1F760767727862B972B9C682370332758\r
+:1008F00002C0440F551F2A95E2F74F715527842BEC\r
+:10090000952B08954230510529F4922F8827816F45\r
+:10091000906A089543305105B9F4C90153E0880F36\r
+:10092000991F5A95E1F7807E97702370332741E035\r
+:1009300050E002C0440F551F2A95E2F74F7155272A\r
+:10094000842B952B9C6808954430510549F5C901C5\r
+:1009500043E0880F991F4A95E1F7807E97702370D6\r
+:10096000332741E050E002C0440F551F2A95E2F7BB\r
+:100970004F715527842B952B9A680895C90190577C\r
+:100980008115904120F4C9019F7090620895C901BA\r
+:1009900090588115904120F4C9019F70906A089584\r
+:1009A000203E3105E0F4203C310568F52133310566\r
+:1009B00009F475C048F42932310509F46BC02A32B4\r
+:1009C000310509F07BC075C02933310501F12238AA\r
+:1009D0003105E9F02533310509F070C051C0233EDF\r
+:1009E0003105B1F140F4203E3105D1F0223E310510\r
+:1009F00009F064C01CC0263E310579F1273E31055F\r
+:100A000009F05CC038C0C9010E94E80308958091D4\r
+:100A1000E10180FD02C081FF51C080EE90E04FC037\r
+:100A20008091E10180FFF9CF89E390E048C0809197\r
+:100A3000E10182FF0AC08091E10184FF03C080E0F0\r
+:100A400090E03DC083EE90E03AC082EE90E037C087\r
+:100A50008091E10182FFEFCFF8CF8091E10183FF28\r
+:100A600007C08091E10184FDEACF87EE90E027C0C6\r
+:100A700086EE90E024C08091E10183FFF2CFF8CFB1\r
+:100A80008091E10185FF03C089E290E018C085E311\r
+:100A900090E015C08091E10185FDF9CFF5CF8091FF\r
+:100AA000E10186FF03C08AE290E009C081E390E0A3\r
+:100AB00006C08091E10186FDF9CFF5CFC9010E9402\r
+:100AC0001003089508955F926F927F928F929F9284\r
+:100AD000AF92BF92CF92DF92EF92FF920F931F934C\r
+:100AE000CF93DF93CDB7DEB72A970FB6F894DEBF6A\r
+:100AF0000FBECDBF9E012F5F3F4F4E018BE0880E92\r
+:100B0000911C60E070E000E010E0E12CF12CC12CC1\r
+:100B1000D12CA12CB12C8AE0782E622E532E41E0EC\r
+:100B200050E0E4E1F1E0A62DB52D872D01900D9266\r
+:100B30008A95E1F7F901819191919F01FC01E07F94\r
+:100B4000FF27E032F10559F48F709927FA0102C0AE\r
+:100B5000EE0FFF1F8A95E2F7AE2ABF2A37C0E033B7\r
+:100B6000F10559F48F709927FA0102C0EE0FFF1FAB\r
+:100B70008A95E2F7CE2ADF2A29C0E034F10559F43C\r
+:100B80008F709927FA0102C0EE0FFF1F8A95E2F7D6\r
+:100B9000EE2AFF2A1BC0E035F10559F48F70992722\r
+:100BA000FA0102C0EE0FFF1F8A95E2F70E2B1F2BF2\r
+:100BB0000DC0E036F10551F48F709927FA0102C09B\r
+:100BC000EE0FFF1F8A95E2F76E2B7F2B2815390554\r
+:100BD00009F0A7CF94B18A2D8095892384B985B176\r
+:100BE0008A2985B997B18C2D8095892387B988B1D9\r
+:100BF0008C2988B99AB18E2D809589238AB98BB1B9\r
+:100C00008E298BB99DB1802F809589238DB98EB1A6\r
+:100C1000802B8EB990B3862F8095892380BB81B3BA\r
+:100C2000862B81BB2A960FB6F894DEBF0FBECDBFD0\r
+:100C3000DF91CF911F910F91FF90EF90DF90CF90B8\r
+:100C4000BF90AF909F908F907F906F905F9008952E\r
+:100C50005F926F927F928F929F92AF92BF92CF924C\r
+:100C6000DF92EF92FF920F931F93CF93DF93CDB755\r
+:100C7000DEB768970FB6F894DEBF0FBECDBF85B75D\r
+:100C8000806885BF85B7806885BF0E9463059E0127\r
+:100C90002F5F3F4F4E0189E1880E911C60E070E0AC\r
+:100CA00000E010E0E12CF12CC12CD12CA12CB12CB6\r
+:100CB00098E1792E622E532E41E050E0EEE1F1E012\r
+:100CC000A62DB52D872D01900D928A95E1F7F9019A\r
+:100CD000819191919F01FC01E07FFF27E032F105B6\r
+:100CE00059F48F709927FA0102C0EE0FFF1F8A9501\r
+:100CF000E2F7AE2ABF2A37C0E033F10559F48F700E\r
+:100D00009927FA0102C0EE0FFF1F8A95E2F7CE2A5B\r
+:100D1000DF2A29C0E034F10559F48F709927FA01D0\r
+:100D200002C0EE0FFF1F8A95E2F7EE2AFF2A1BC0D2\r
+:100D3000E035F10559F48F709927FA0102C0EE0FE2\r
+:100D4000FF1F8A95E2F70E2B1F2B0DC0E036F10531\r
+:100D500051F48F709927FA0102C0EE0FFF1F8A9598\r
+:100D6000E2F76E2B7F2B2815390509F0A7CF94B138\r
+:100D70008A2D8095892384B985B18A2985B997B14F\r
+:100D80008C2D8095892387B988B18C2988B99AB12F\r
+:100D90008E2D809589238AB98BB18E298BB99DB10F\r
+:100DA000802F809589238DB98EB1802B8EB990B319\r
+:100DB000862F8095892380BB81B3862B81BB1092BF\r
+:100DC00055011092540110925F0110925E01109231\r
+:100DD0005701109256011092610110926001109219\r
+:100DE0005901109258011092630110926201109201\r
+:100DF0005B0110925A0110926501109264011092E9\r
+:100E00005D0110925C0110926701109266018FEBF8\r
+:100E100092E0892BB9F068960FB6F894DEBF0FBE4A\r
+:100E2000CDBFDF91CF911F910F91FF90EF90DF9099\r
+:100E3000CF90BF90AF909F908F907F906F905F907A\r
+:100E40000C94BF0268960FB6F894DEBF0FBECDBFFC\r
+:100E5000DF91CF911F910F91FF90EF90DF90CF9096\r
+:100E6000BF90AF909F908F907F906F905F9008950C\r
+:100E70005F926F927F928F929F92AF92BF92CF922A\r
+:100E8000DF92EF92FF920F931F93CF93DF93CDB733\r
+:100E9000DEB7A2970FB6F894DEBF0FBECDBF7E01BE\r
+:100EA00049E1E40EF11C2EE5C22E21E0D22E5E01B6\r
+:100EB00053E2A50EB11C3AE0532E470101E010E0C9\r
+:100EC00048E1642E55E0752EE4E1F1E0D401852D72\r
+:100ED00001900D928A95E1F7F701819191917F013F\r
+:100EE0009C01207F33272032310589F424B18F7093\r
+:100EF0009927A80102C0440F551F8A95E2F7CA013D\r
+:100F0000242B24B995B18095892385B94FC020330E\r
+:100F1000310589F427B18F709927F80102C0EE0FCF\r
+:100F2000FF1F8A95E2F7CF012E2B27B998B1809544\r
+:100F3000892388B93BC02034310589F42AB18F70E8\r
+:100F40009927A80102C0440F551F8A95E2F7CA01EC\r
+:100F5000242B2AB99BB1809589238BB927C02035D2\r
+:100F6000310589F42DB18F709927F80102C0EE0F79\r
+:100F7000FF1F8A95E2F7CF012E2B2DB99EB18095E8\r
+:100F800089238EB913C02036310581F420B38F70C8\r
+:100F90009927A80102C0440F551F8A95E2F7CA019C\r
+:100FA000242B20BB91B38095892381BB50EA5A95AD\r
+:100FB000F1F7BE016F5F7F4F80E090E020E030E00E\r
+:100FC000EEE1F1E0DE011196462D01900D924A9579\r
+:100FD000E1F7FB0141915191BF01FA01E07FFF2749\r
+:100FE000E032F10511F4E3B113C0E033F10511F47F\r
+:100FF000E6B10EC0E034F10511F4E9B109C0E03505\r
+:10100000F10511F4ECB104C0E036F105B9F4EFB12B\r
+:10101000F0E04F70552702C0F595E7954A95E2F745\r
+:10102000E0FD08C0A801022E02C0440F551F0A941B\r
+:10103000E2F702C040E050E0842B952B2F5F3F4F3A\r
+:101040002C30310509F0BCCFF60120813181281701\r
+:10105000390721F091838083709200010E9463051B\r
+:10106000F2E0CF0ED11CEA14FB0409F02DCF8091E1\r
+:1010700000018823A1F1815080930001882339F079\r
+:101080008FE99FE00197F1F700C0000028C0809130\r
+:101090005E0190915F01909355018093540180917E\r
+:1010A0006001909161019093570180935601809166\r
+:1010B000620190916301909359018093580180914E\r
+:1010C00064019091650190935B0180935A01809136\r
+:1010D00066019091670190935D0180935C018AECB9\r
+:1010E00092E0892B11F00E94CA0281E0A2960FB60D\r
+:1010F000F894DEBF0FBECDBFDF91CF911F910F914E\r
+:10110000FF90EF90DF90CF90BF90AF909F908F9027\r
+:101110007F906F905F900895E82FF0E0EE0FFF1F33\r
+:10112000EC5AFE4F8081918108950895809171015C\r
+:101130000895CF93DF9300D01F92CDB7DEB72091F3\r
+:10114000E701243021F523E029839B838A832093C0\r
+:10115000E9008FEF06C095ED9A95F1F7000088231E\r
+:1011600029F09091E800815095FFF5CF8091E8003B\r
+:1011700085FF0DC040E050E063E070E0CE010196D5\r
+:101180000E94280B8091E8008E778093E8000F90F2\r
+:101190000F900F90DF91CF910895CF93DF9300D000\r
+:1011A0001F92CDB7DEB72091E701243029F522E068\r
+:1011B00029839B838A8383E08093E9008FEF06C0B5\r
+:1011C00095ED9A95F1F70000882329F09091E800B9\r
+:1011D000815095FFF5CF8091E80085FF0DC040E07C\r
+:1011E00050E063E070E0CE0101960E94280B8091F0\r
+:1011F000E8008E778093E8000F900F900F90DF91BA\r
+:10120000CF9108952091E7012430F9F422E0209352\r
+:10121000E9002FEF06C035ED3A95F1F700002223E3\r
+:1012200029F03091E800215035FFF5CF2091E800FA\r
+:1012300025FF0BC040E050E065E070E00E94280B05\r
+:101240008091E8008E778093E8000895CF93DF9334\r
+:10125000EC018091E701843041F581E08093E90061\r
+:101260008FEF06C095ED9A95F1F70000882329F0DD\r
+:101270009091E800815095FFF5CF8091E80085FFBF\r
+:1012800014C040E050E068E070E0CE010E94280BFE\r
+:101290008091E8008E778093E80088E0FE01A9E65F\r
+:1012A000B1E001900D928A95E1F7DF91CF91089519\r
+:1012B0008091E601811109C00E94C80C0E94250D91\r
+:1012C0008091E20084608093E20008951092E6012C\r
+:1012D0000895089508950C94201C809172018F5FE9\r
+:1012E0008093720162E30E948924911135C01092AB\r
+:1012F000720180917301882379F18091E701843034\r
+:1013000049F58091E9008F709091EC0090FF02C048\r
+:1013100090E801C090E0982B84E08093E9008091F0\r
+:10132000EB0080FF14C08091EE0087FD03C00FC06A\r
+:101330001092F1008091E80085FDFACF8091E800DD\r
+:1013400080FF05C08091E8008E778093E8009F7051\r
+:101350009093E90010927301089542E061EC81E0FE\r
+:101360000E943E0C42E061EC82E00E943E0C42E0B2\r
+:1013700061EC83E00E943E0C42E261EC84E00C945C\r
+:101380003E0C8091E901833009F454C030F481307F\r
+:1013900071F0823009F0A5C08CC08A3009F479C0A0\r
+:1013A0008B3009F45FC0893009F09BC020C0809168\r
+:1013B000E801813A09F095C08091E800877F809329\r
+:1013C000E8008091EC019091ED01892B21F060E023\r
+:1013D00080E090E003C068E089E691E070E00E9460\r
+:1013E000770B8091E8008B778093E80008958091D7\r
+:1013F000E801813209F075C08091EC019091ED0116\r
+:10140000892B09F06EC08091E800877F8093E80007\r
+:1014100005C08091E701882309F463C08091E8004A\r
+:1014200082FFF7CF8091F100809371018091E800F5\r
+:101430008B7753C08091E801813A09F052C08091C6\r
+:10144000EC019091ED01892B09F04BC08091E800EF\r
+:10145000877F8093E8008091E80080FFFCCF809137\r
+:101460000B0136C08091E8018132D9F58091EC0101\r
+:101470009091ED01892BA9F58091E800877F8093F9\r
+:10148000E8000E94750C8091EA0180930B010C9496\r
+:1014900015168091E801813221F58091E800877F5F\r
+:1014A0008093E8000E94750C8091EB0180936801A5\r
+:1014B00008958091E801813AA1F48091E800877F46\r
+:1014C0008093E8008091E80080FFFCCF8091680164\r
+:1014D0008093F1008091E8008E778093E8000C946F\r
+:1014E000750C089584B7877F84BF88E10FB6F894A0\r
+:1014F00080936000109260000FBE90E080E80FB60D\r
+:10150000F89480936100909361000FBE0E943310A5\r
+:101510000E94C80C0E94250D8091E2008460809397\r
+:10152000E20078940E94C20F0E94351081E091E0A1\r
+:101530000E94DF0F0BC00E94DD1B8091E501882314\r
+:1015400029F00E94081C81110E94120B8091E70172\r
+:10155000853089F30E943F10F9CF292F332723309C\r
+:101560003105B1F04CF42130310509F44DC0223081\r
+:10157000310509F04EC007C02132310541F1223258\r
+:10158000310591F146C0E4E7F0E082E693E045C022\r
+:1015900099278130910569F08230910589F0892B76\r
+:1015A00009F037C0EEE5F3E0E491F0E08EE593E07A\r
+:1015B00034C0E0E3F3E0E491F0E080E393E02DC099\r
+:1015C000E4E0F3E0E491F0E084E093E026C06430EE\r
+:1015D00000F5E62FF0E0EE0FFF1FEA5CFE4F808182\r
+:1015E0009181E9E0F0E019C0643098F4E62FF0E072\r
+:1015F000DF01AA0FBB1FA25CBE4F8D919C91EA5BDD\r
+:10160000FE4FE081F0E009C0E2E1F0E086ED93E01A\r
+:1016100004C0E0E0F0E080E090E0DA018D939C937C\r
+:10162000CF01089580E189BD82E189BD09B400FE42\r
+:10163000FDCF8091D8008F7D8093D8008091E0000D\r
+:1016400082608093E0008091E00081FDFCCF0895EE\r
+:10165000BF92CF92DF92EF92FF920F931F93CF939F\r
+:10166000DF937C018B01EA010E94960CB82E811158\r
+:1016700033C0209731F028813981021B130BE20E11\r
+:10168000F31EC12CD12C23C08091E80085FD15C02C\r
+:101690008091E8008E778093E800209749F0888158\r
+:1016A00099818C0D9D1D9983888325E0B22E14C0ED\r
+:1016B0000E94960C882359F00EC0F70181917F019A\r
+:1016C0008093F10001501109FFEFCF1ADF0A0115D5\r
+:1016D0001105D1F601C0B82E8B2DDF91CF911F914E\r
+:1016E0000F91FF90EF90DF90CF90BF9008954091C1\r
+:1016F000EE015091EF014617570748F0611571054B\r
+:1017000039F44091E8004E774093E80001C0BA01F7\r
+:10171000FC0140E033C08091E701882309F444C014\r
+:10172000853009F443C08091E80083FD41C0809179\r
+:10173000E80082FD33C08091E80080FF1FC09091D7\r
+:10174000F3008091F200392F20E0A901482BCA0153\r
+:1017500006C041914093F1006150710901966115F5\r
+:10176000710519F088309105A0F341E0089709F060\r
+:1017700040E08091E8008E778093E8006115710564\r
+:1017800051F64111C8CF0AC08091E701882361F06A\r
+:10179000853061F08091E80083FD0AC08091E80007\r
+:1017A00082FFF2CF80E0089582E0089583E00895FB\r
+:1017B00081E008954091EE015091EF0146175707DF\r
+:1017C00048F06115710539F44091E8004E77409377\r
+:1017D000E80001C0BA01FC0140E034C08091E7019B\r
+:1017E000882309F445C0853009F444C08091E8009D\r
+:1017F00083FD42C08091E80082FD34C08091E80002\r
+:1018000080FF20C09091F3008091F200392F20E0FA\r
+:10181000A901482BCA0107C044914093F1003196B9\r
+:101820006150710901966115710519F088309105B3\r
+:1018300098F341E0089709F040E08091E8008E7746\r
+:101840008093E8006115710549F64111C7CF0AC0C0\r
+:101850008091E701882361F0853061F08091E80094\r
+:1018600083FD0AC08091E80082FFF2CF80E00895F6\r
+:1018700082E0089583E0089581E00895982F2CC0B8\r
+:101880009093E900981739F07091EC002091ED00E9\r
+:101890005091F00003C0242F762F50E021FD02C0AC\r
+:1018A0009F5F1AC03091EB003E7F3093EB00309188\r
+:1018B000ED003D7F3093ED003091EB0031603093CF\r
+:1018C000EB007093EC002093ED005093F00020911A\r
+:1018D000EE0027FDE5CF07C0973090F28F70809320\r
+:1018E000E90081E0089580E008958091E80187FD96\r
+:1018F00005C08091E80080FF0EC012C08091E80012\r
+:1019000082FD05C08091E7018111F8CF0895809193\r
+:10191000E8008B7708C08091E7018111EACF089534\r
+:101920008091E8008E778093E80008958091E4002C\r
+:101930009091E50045E62091EC0020FD1FC023C0FA\r
+:101940002091E701222391F0253091F02091EB00C6\r
+:1019500025FD10C02091E4003091E50028173907DB\r
+:1019600051F34150C90139F784E0089582E00895A8\r
+:1019700083E0089581E0089580E008952091E800D3\r
+:1019800020FFDECFF9CF2091E80022FFD9CFF4CF9E\r
+:101990000E94360D0E943E0DE0EEF0E080818160F5\r
+:1019A0008083E8EDF0E080818F77808319BCA7ED1C\r
+:1019B000B0E08C918E7F8C9380818F7E808310929B\r
+:1019C000E60108950F931F93CF93DF930E94360D86\r
+:1019D0000E943E0DC8EDD0E088818F778883888192\r
+:1019E0008068888388818F7D888319BC1092E70185\r
+:1019F0001092E3011092E5011092E40100EE10E074\r
+:101A0000F80180818B7F808388818160888342E0B8\r
+:101A100060E080E00E943E0CE1EEF0E080818E7F8D\r
+:101A20008083E2EEF0E08081816080838081886045\r
+:101A30008083F80180818E7F8083888180618883A4\r
+:101A4000DF91CF911F910F910895E8EDF0E0808133\r
+:101A50008F7E8083E7EDF0E080818160808384E089\r
+:101A600082BF81E08093E6010C94E20CE8EDF0E0A7\r
+:101A700080818E7F80831092E20008951092DA00B8\r
+:101A80001092E10008951F920F920FB60F92112449\r
+:101A90002F933F934F935F936F937F938F939F9376\r
+:101AA000AF93BF93EF93FF938091E10082FF0BC050\r
+:101AB0008091E20082FF07C08091E1008B7F8093DC\r
+:101AC000E1000E946D098091DA0080FF1FC08091C3\r
+:101AD000D80080FF1BC08091DA008E7F8093DA00EF\r
+:101AE0008091D90080FF0DC080E189BD82E189BD70\r
+:101AF00009B400FEFDCF81E08093E7010E94580900\r
+:101B000005C019BC1092E7010E9466098091E100AE\r
+:101B100080FF19C08091E20080FF15C08091E20033\r
+:101B20008E7F8093E2008091E20080618093E200EA\r
+:101B30008091D80080628093D80019BC85E08093A2\r
+:101B4000E7010E946A098091E10084FF30C0809122\r
+:101B5000E20084FF2CC080E189BD82E189BD09B427\r
+:101B600000FEFDCF8091D8008F7D8093D8008091BA\r
+:101B7000E1008F7E8093E1008091E2008F7E809370\r
+:101B8000E2008091E20081608093E2008091E301B5\r
+:101B9000882311F084E007C08091E30087FF02C032\r
+:101BA00083E001C081E08093E7010E946B0980918E\r
+:101BB000E10083FF29C08091E20083FF25C080916E\r
+:101BC000E100877F8093E10082E08093E70110923B\r
+:101BD000E3018091E1008E7F8093E1008091E2003B\r
+:101BE0008E7F8093E2008091E20080618093E2002A\r
+:101BF00042E060E080E00E943E0C8091F00088604E\r
+:101C00008093F0000E946909FF91EF91BF91AF911D\r
+:101C10009F918F917F916F915F914F913F912F9104\r
+:101C20000F900FBE0F901F9018951F920F920FB636\r
+:101C30000F9211242F933F934F935F936F937F9352\r
+:101C40008F939F93AF93BF93CF93EF93FF93809125\r
+:101C5000E9008F709091EC0090FF02C090E801C005\r
+:101C600090E0C92FC82B1092E9008091F000877F87\r
+:101C70008093F00078940E94590E1092E9008091B0\r
+:101C8000F00088608093F000CF70C093E900FF916E\r
+:101C9000EF91CF91BF91AF919F918F917F916F9174\r
+:101CA0005F914F913F912F910F900FBE0F901F901A\r
+:101CB00018951F93CF93DF93CDB7DEB7AC970FB6D0\r
+:101CC000F894DEBF0FBECDBFE8EEF1E08091F100E9\r
+:101CD000819321E0E03FF207C9F70E94C10980919A\r
+:101CE000E80083FF37C18091E8019091E9019530C8\r
+:101CF00009F488C038F49130B1F170F0933009F0F4\r
+:101D000029C131C0983009F4F8C0993009F404C1F0\r
+:101D1000963009F01FC19DC0803821F0823809F04B\r
+:101D200019C108C08091E4019091E501992389F0DF\r
+:101D300082600FC08091EC019091ED018F70992726\r
+:101D40008093E9008091EB0085FB882780F9109251\r
+:101D5000E9009091E800977F9093E8008093F1006C\r
+:101D60001092F100D5C0882319F0823009F0F2C03A\r
+:101D70008F7121F0823009F0EDC00BC08091EA0133\r
+:101D8000813009F0E7C0933009F080E08093E501ED\r
+:101D90002FC08091EA0181112BC08091EC019091BC\r
+:101DA000ED018F709927009709F4D4C08093E90062\r
+:101DB0002091EB0020FF1CC02091E901233021F489\r
+:101DC0008091EB00806212C09091EB009061909343\r
+:101DD000EB0021E030E001C0220F8A95EAF7209362\r
+:101DE000EA001092EA008091EB0088608093EB009B\r
+:101DF0001092E9008091E800877F8093E8000E94BC\r
+:101E0000750CA8C08111A6C08091EA019091EB01E8\r
+:101E10008F779927182F9091E3009078982B9093C3\r
+:101E2000E3008091E800877F8093E8000E94750CB2\r
+:101E30008091E80080FFFCCF8091E3008068809370\r
+:101E4000E300112311F083E001C082E08093E701F9\r
+:101E500081C08058823008F07DC08091EA01909165\r
+:101E6000EB018C3D23E0920779F583E08A838AE2D7\r
+:101E700089834FB7F894DE01139620E03EE051E2EB\r
+:101E8000E32FF0E050935700E49120FF03C0E29568\r
+:101E9000EF703F5FEF708E2F90E0EA3010F0C79642\r
+:101EA00001C0C0968D939D932F5F243149F74FBF9A\r
+:101EB0008091E800877F8093E8006AE270E0CE01BD\r
+:101EC00001960E94770B13C0AE01455D5F4F609194\r
+:101ED000EC010E94AD0A0097E9F12091E800277F0C\r
+:101EE0002093E800BC018BA59CA50E94DA0B809191\r
+:101EF000E8008B778093E8002DC0803859F58091F9\r
+:101F0000E800877F8093E8008091E3018093F100EF\r
+:101F10008091E8008E7771CF81111CC09091EA0109\r
+:101F20009230C0F48091E800877F8093E80090931E\r
+:101F3000E3010E94750C8091E301811104C080913E\r
+:101F4000E30087FF02C084E001C081E08093E701E5\r
+:101F50000E94AD098091E80083FF0AC08091E800EB\r
+:101F6000877F8093E8008091EB0080628093EB0094\r
+:101F7000AC960FB6F894DEBF0FBECDBFDF91CF9108\r
+:101F80001F910895CF938091E7018823B1F080914C\r
+:101F9000E9008F709091EC0090FF02C090E801C0C2\r
+:101FA00090E0C92FC82B1092E9008091E80083FDD2\r
+:101FB0000E94590ECF70C093E900CF91089590937D\r
+:101FC0007501809374010895E0917401F091750199\r
+:101FD000309721F00190F081E02D099480E0089580\r
+:101FE000E0917401F0917501309721F00280F38146\r
+:101FF000E02D09940895E0917401F09175013097F6\r
+:1020000021F00480F581E02D099408952091760156\r
+:10201000309177018217930771F090937701809345\r
+:102020007601E0917401F0917501309721F00680FE\r
+:10203000F781E02D0994089520917801309179017C\r
+:102040008217930771F09093790180937801E09162\r
+:102050007401F0917501309721F00084F185E02D35\r
+:102060000994089508950C9432100E94541C0E9403\r
+:1020700028060E94281D0C94D0220C9462055F92C1\r
+:102080006F927F928F929F92AF92BF92CF92DF9288\r
+:10209000EF92FF920F931F93CF93DF93CDB7DEB7ED\r
+:1020A0002A970FB6F894DEBF0FBECDBF0E94380747\r
+:1020B0009AE7C92E91E0D92E00E010E0AA24A3945B\r
+:1020C000B12C502E802F0E948C083C01F601E1902B\r
+:1020D000F1906F01E826F926E114F10431F40F5F65\r
+:1020E0001F4F0530110569F73AC08091D00181FD7D\r
+:1020F0000E94950820E030E04501022E02C0880CC5\r
+:10210000991C0A94E2F7C4018E219F21892B09F1C1\r
+:102110002E835F826820792081E0672809F480E0BF\r
+:1021200088870E945D1C8160782F9A8789874E81FD\r
+:102130005F8168858A850E94F810F801EE0FFF1F05\r
+:10214000E658FE4F8081918188259925918380836F\r
+:1021500016C02F5F3F4F2C30310571F6C0CF8FEF87\r
+:1021600089838A831B820E945D1C8160782F9D83F6\r
+:102170008C8349815A816B818D810E94F8100E9465\r
+:102180001520109184010E94E40F1817D9F00E94C5\r
+:10219000E40F809384012A960FB6F894DEBF0FBE39\r
+:1021A000CDBFDF91CF911F910F91FF90EF90DF9006\r
+:1021B000CF90BF90AF909F908F907F906F905F90E7\r
+:1021C0000C943D102A960FB6F894DEBF0FBECDBF1B\r
+:1021D000DF91CF911F910F91FF90EF90DF90CF9003\r
+:1021E000BF90AF909F908F907F906F905F90089579\r
+:1021F000CF93DF93CDB7DEB72B970FB6F894DEBF42\r
+:102200000FBECDBF4F83588769877A878B87DE01E2\r
+:10221000119686E0FD0111928A95E9F785E0FE01AD\r
+:10222000379601900D928A95E1F749815A816B8129\r
+:102230007C818D819E810E94D4182B960FB6F894D4\r
+:10224000DEBF0FBECDBFDF91CF910895CF93C82FD2\r
+:10225000882309F4C1C0823859F40E94E40F81FD3B\r
+:10226000BBC089E30E943B1B0E94B71B89E30CC0E3\r
+:10227000833879F40E94E40F80FDAEC083E50E94AC\r
+:102280003B1B0E94B71B83E50E945D1BCF910C9402\r
+:10229000B71B843859F40E94E40F82FD9DC087E487\r
+:1022A0000E943B1B0E94B71B87E4EECF8450813A0B\r
+:1022B00048F48C2F0E94322281118EC08C2F0E94F4\r
+:1022C0003B1BE4CF8C2F805E883050F4C77081E0D8\r
+:1022D00090E001C0880FCA95EAF70E947E1BD6CF16\r
+:1022E0008C2F855A833078F4C53A29F0C63A31F4F8\r
+:1022F00082E890E005C081E890E002C083E890E0C9\r
+:10230000CF910C9406108C2F885A833108F064C04A\r
+:10231000C83A39F1C93A41F1CA3A49F1CB3A51F1D7\r
+:10232000CC3A59F1CD3A61F1C03B69F1CE3A71F145\r
+:10233000CF3A79F1C13B81F1C23B89F1C33B91F1C5\r
+:10234000C43B99F1C53BA1F1C63BA9F1C73BB1F133\r
+:10235000C83BB9F1C93BC1F1CA3BC9F58AE292E079\r
+:1023600038C082EE90E035C089EE90E032C08AEE4F\r
+:1023700090E02FC085EB90E02CC086EB90E029C068\r
+:1023800087EB90E026C08CEC90E023C08DEC90E0D1\r
+:1023900020C083E891E01DC08AE891E01AC082E97C\r
+:1023A00091E017C084E991E014C081E292E011C08D\r
+:1023B00083E292E00EC084E292E00BC085E292E0FC\r
+:1023C00008C086E292E005C087E292E002C080E0A9\r
+:1023D00090E0CF910C941C10CF910895882309F4BC\r
+:1023E0004DC0823859F40E94E40F81FF47C089E351\r
+:1023F0000E943B1B0E94B71B89E30CC0833871F419\r
+:102400000E94E40F80FF3AC083E50E943B1B0E94BC\r
+:10241000B71B83E50E945D1B0C94B71B843859F4ED\r
+:102420000E94E40F82FF2AC087E40E943B1B0E94A7\r
+:10243000B71B87E4EFCF982F9450913A08F4EACF76\r
+:10244000982F905E983058F4282F277081E090E004\r
+:1024500001C0880F2A95EAF70E94841BDDCF982FD0\r
+:10246000955A933020F480E090E00C940610885A3E\r
+:10247000833120F480E090E00C941C1008958823B0\r
+:1024800021F00E947E1B0C94B71B0895882321F035\r
+:102490000E94841B0C94B71B0895BF92CF92DF92C9\r
+:1024A000EF92FF920F931F93CF93DF93CDB7DEB7D9\r
+:1024B00027970FB6F894DEBF0FBECDBF8C0185E025\r
+:1024C000F801DE01119601900D928A95E1F7F8016D\r
+:1024D00030812181F280558152955F708381948192\r
+:1024E000892B39F02F3F41F481E090E03F3F31F0FC\r
+:1024F00003C081E090E002C080E090E080FD73C303\r
+:1025000039832A8389819A815E830E94F81AB92EC1\r
+:102510008F830E94F71A0E941F1A2B2D22952F706D\r
+:1025200030E05E816F812530310509F4E6C06CF43E\r
+:10253000243031050CF0A2C04B2D407F8B2D8F70C5\r
+:10254000223031050CF045C017C02C3031054CF459\r
+:102550002A3031050CF0E7C12830310509F043C3BA\r
+:10256000E5C02D30310509F4BAC20CF4A2C22F30F7\r
+:10257000310509F038C323C3182F411101C002C02F\r
+:102580001295107FFF2059F0112309F46BC2812F9F\r
+:102590006F830E948E1B0E94B71B6F8163C2862FC0\r
+:1025A0000E94EE11112309F41EC3812F0E94941B77\r
+:1025B00027960FB6F894DEBF0FBECDBFDF91CF9147\r
+:1025C0001F910F91FF90EF90DF90CF90BF900C94F0\r
+:1025D000B71B403211F08295807F662319F061307D\r
+:1025E00071F523C0FF20B1F0511101C032C051304C\r
+:1025F00081F527960FB6F894DEBF0FBECDBFDF91F1\r
+:10260000CF911F910F91FF90EF90DF90CF90BF90EF\r
+:102610000C949E1B511101C003C0513009F4E3C258\r
+:102620008E830E94A11B8E819AC1FF2021F056301B\r
+:1026300008F0D9C20EC0553008F0D5C290C1FF20B5\r
+:10264000C9F0552331F0F801958190FF0BC29F70BE\r
+:10265000958327960FB6F894DEBF0FBECDBFDF91EE\r
+:10266000CF911F910F91FF90EF90DF90CF90BF908F\r
+:102670000C943F12552309F472C109C22B2D2695E3\r
+:102680002695237030E02115310529F021303105E0\r
+:1026900009F0A9C219C0FF2021F0862F9B2D93704D\r
+:1026A00002C080E090E027960FB6F894DEBF0FBE20\r
+:1026B000CDBFDF91CF911F910F91FF90EF90DF90F1\r
+:1026C000CF90BF900C940610FF2021F0862F9B2DF9\r
+:1026D000937002C080E090E027960FB6F894DEBFBA\r
+:1026E0000FBECDBFDF91CF911F910F91FF90EF9063\r
+:1026F000DF90CF90BF900C941C10862FFF2019F014\r
+:102700000E941B1F02C00E94831F27960FB6F894D9\r
+:10271000DEBF0FBECDBFDF91CF911F910F91FF9014\r
+:10272000EF90DF90CF90BF900C940A208B2D837098\r
+:1027300009F079C0F11057C2262F229526952770EF\r
+:10274000220F220F862F8F70C82ED12CE12CF12C56\r
+:10275000022E04C0CC0CDD1CEE1CFF1C0A94D2F728\r
+:1027600064FF10C06FE070E080E090E004C0660F8E\r
+:10277000771F881F991F2A95D2F7609570958095CD\r
+:10278000909503C060E070E0CB012B2D2695269537\r
+:102790002370422F50E042305105D9F043305105AB\r
+:1027A00069F16C297D298E299F294130510551F10C\r
+:1027B00027960FB6F894DEBF0FBECDBFDF91CF9145\r
+:1027C0001F910F91FF90EF90DF90CF90BF900C94EE\r
+:1027D000341A6C297D298E299F2927960FB6F894E3\r
+:1027E000DEBF0FBECDBFDF91CF911F910F91FF9044\r
+:1027F000EF90DF90CF90BF900C94461A0E94341A4D\r
+:10280000C701B60127960FB6F894DEBF0FBECDBF45\r
+:10281000DF91CF911F910F91FF90EF90DF90CF90BC\r
+:10282000BF900C94221AFF2019F08B2D817001C0EB\r
+:102830008695882309F4D7C1262F229526952770DF\r
+:10284000220F220F862F8F70C82ED12CE12CF12C55\r
+:10285000022E04C0CC0CDD1CEE1CFF1C0A94D2F727\r
+:1028600064FF10C06FE070E080E090E004C0660F8D\r
+:10287000771F881F991F2A95D2F7609570958095CC\r
+:10288000909503C060E070E0CB012B2D2695269536\r
+:102890002370422F50E042305105D9F043305105AA\r
+:1028A00069F16C297D298E299F294130510551F10B\r
+:1028B00027960FB6F894DEBF0FBECDBFDF91CF9144\r
+:1028C0001F910F91FF90EF90DF90CF90BF900C94ED\r
+:1028D000D31A6C297D298E299F2927960FB6F89443\r
+:1028E000DEBF0FBECDBFDF91CF911F910F91FF9043\r
+:1028F000EF90DF90CF90BF900C94E51A0E94D31A0E\r
+:10290000C701B60127960FB6F894DEBF0FBECDBF44\r
+:10291000DF91CF911F910F91FF90EF90DF90CF90BB\r
+:10292000BF900C94C11A603F59F120F4603E08F446\r
+:1029300094C008C0623F09F467C0F0F1633F09F03A\r
+:102940008CC065C0162F1F708B2D8F71FF2021F05A\r
+:102950000E946C1A812F7DCE0E94871A812F2796A4\r
+:102960000FB6F894DEBF0FBECDBFDF91CF911F91A0\r
+:102970000F91FF90EF90DF90CF90BF900C94461294\r
+:10298000FF20B1F0553008F02EC18B2D8F712796A6\r
+:102990000FB6F894DEBF0FBECDBFDF91CF911F9170\r
+:1029A0000F91FF90EF90DF90CF90BF900C94A61AFC\r
+:1029B000563008F018C1E9CFFF2099F08B2D8F71A8\r
+:1029C00027960FB6F894DEBF0FBECDBFDF91CF9133\r
+:1029D0001F910F91FF90EF90DF90CF90BF900C94DC\r
+:1029E0006C1A8B2D8F7127960FB6F894DEBF0FBE31\r
+:1029F000CDBFDF91CF911F910F91FF90EF90DF90AE\r
+:102A0000CF90BF900C94871AF110EBCFD7CFFF2057\r
+:102A100099F08B2D8F7127960FB6F894DEBF0FBEFD\r
+:102A2000CDBFDF91CF911F910F91FF90EF90DF907D\r
+:102A3000CF90BF900C945D1A27960FB6F894DEBF26\r
+:102A40000FBECDBFDF91CF911F910F91FF90EF90FF\r
+:102A5000DF90CF90BF900C94581AFF20A9F0552317\r
+:102A600009F4ACCF862F27960FB6F894DEBF0FBEC1\r
+:102A7000CDBFDF91CF911F910F91FF90EF90DF902D\r
+:102A8000CF90BF900C942611552309F4AACF862F1E\r
+:102A900027960FB6F894DEBF0FBECDBFDF91CF9162\r
+:102AA0001F910F91FF90EF90DF90CF90BF900C940B\r
+:102AB000EE114B2D4F70C8010E94AB0227960FB646\r
+:102AC000F894DEBF0FBECDBFDF91CF911F910F9164\r
+:102AD000FF90EF90DF90CF90BF900C948A19F11087\r
+:102AE00082C09B2D9F70492F50E04230510599F1D3\r
+:102AF00044F44115510569F04130510509F073C0A6\r
+:102B000019C043305105C1F14430510509F06BC083\r
+:102B100044C027960FB6F894DEBF0FBECDBFDF913D\r
+:102B2000CF911F910F91FF90EF90DF90CF90BF90CA\r
+:102B30000C94E12227960FB6F894DEBF0FBECDBFEE\r
+:102B4000DF91CF911F910F91FF90EF90DF90CF9089\r
+:102B5000BF900C94F82227960FB6F894DEBF0FBEF4\r
+:102B6000CDBFDF91CF911F910F91FF90EF90DF903C\r
+:102B7000CF90BF900C94142327960FB6F894DEBF25\r
+:102B80000FBECDBFDF91CF911F910F91FF90EF90BE\r
+:102B9000DF90CF90BF900C942723862F27960FB6F7\r
+:102BA000F894DEBF0FBECDBFDF91CF911F910F9183\r
+:102BB000FF90EF90DF90CF90BF900C944B234B2D64\r
+:102BC0004F70C80127960FB6F894DEBF0FBECDBF79\r
+:102BD000DF91CF911F910F91FF90EF90DF90CF90F9\r
+:102BE000BF900C94D40327960FB6F894DEBF0FBEA7\r
+:102BF000CDBFDF91CF911F910F91FF90EF90DF90AC\r
+:102C0000CF90BF9008950E949B1B0E94701B0E9452\r
+:102C1000B71B0E94B6200E940A2080E090E00E942C\r
+:102C2000061080E090E00C941C100E948B1B0C940A\r
+:102C300003160E94F81A292F22952F7030E02C30AD\r
+:102C400031054CF42A3031056CF422503109223020\r
+:102C5000310590F407C02C30310551F02F3031058B\r
+:102C600059F406C0803E10F0803F31F481E00895B1\r
+:102C700093FB882780F9089580E00895CF93DF9330\r
+:102C800000D000D01F92CDB7DEB70F900F900F90FD\r
+:102C90000F900F90DF91CF910895CF93DF9300D0E5\r
+:102CA00000D000D0CDB7DEB726960FB6F894DEBFC1\r
+:102CB0000FBECDBFDF91CF9108951F93CF93DF93C8\r
+:102CC000C091BB0116E012C0D0E01C9FF0011D9F17\r
+:102CD000F00D1124E557FE4F4081518162817381CF\r
+:102CE000848195810E944D162196C7708091BC0108\r
+:102CF000C813EACFDF91CF911F91089540918501CC\r
+:102D000050918601609187017091880180918901BD\r
+:102D100090918A010C944D160F931F93CF93DF93DC\r
+:102D200080918A0182958F7009F069C08091870136\r
+:102D3000882309F464C0A091BB01D091BC01B0917B\r
+:102D40008501C0918601809188019091890121E0DF\r
+:102D500030E0BF3F11F020E030E0122FBC01609561\r
+:102D6000709506E04AC0009721F0CF3F29F4212F4B\r
+:102D700005C021E030E002C020E030E020FD3BC093\r
+:102D80004A2F50E0049FF001059FF00D1124E557F4\r
+:102D9000FE4F2181C2132FC02081B2132CC022818B\r
+:102DA000211129C0238134812817390718F0281BE5\r
+:102DB000390B02C0260F371F283C3105E0F4809103\r
+:102DC0008A018F70806180938A0186E0849FF00180\r
+:102DD000859FF00D1124E057FE4F80818F70806138\r
+:102DE000808385E891E00E944D12DF91CF911F9181\r
+:102DF0000F910C945D16AF5FA770AD13B4CFDF9148\r
+:102E0000CF911F910F910895EF92FF920F931F930F\r
+:102E1000CF93DF93CDB7DEB762970FB6F894DEBFDE\r
+:102E20000FBECDBF8C0185E0F801DE011D9601903B\r
+:102E30000D928A95E1F7D8014C9111965C9111970A\r
+:102E400012966C9112971396ED90FC9014977091D6\r
+:102E50008501E09186018091880190918901009718\r
+:102E600039F0EF3F41F421E030E07F3F31F003C023\r
+:102E700021E030E002C020E030E020FD5CC1209184\r
+:102E80008701222309F4F1C0E816F90628F097011A\r
+:102E9000281B390BC90104C0809590958E0D9F1D8C\r
+:102EA000883C910508F098C080918A01982F907F06\r
+:102EB00009F064C0E51314C0741312C0611110C08E\r
+:102EC0008F70806180938A010E947E1685E891E070\r
+:102ED0000E944D1280918A01D80115968C9343C1AE\r
+:102EE000EF2839F05F3F41F481E090E04F3F31F04F\r
+:102EF00003C081E090E002C080E090E080FD03C06C\r
+:102F000081E0862702C080E090E080FF2EC08091A3\r
+:102F1000BB012091BC0136E013C090E0389FF00166\r
+:102F2000399FF00D1124E557FE4F7181571306C0EC\r
+:102F30007081471303C07281671317C001968770B1\r
+:102F40008213EBCF12C19F7059F0882309F40BC193\r
+:102F500007C09F7029F0F8019581907F09F403C1A3\r
+:102F6000805E883008F4FFC0D2C0662309F4FBC03D\r
+:102F700080918A01816080938A01F5C0E51308C0C1\r
+:102F8000741306C0611104C0D80115968C939DC0BE\r
+:102F90004D875E878D859E856A8B0E9419166A898A\r
+:102FA000882309F4B4C0662309F4B1C020918A01D2\r
+:102FB000822F82958F7090E002970CF4C6C08091AA\r
+:102FC00085019091860198878F831986FB86EA8612\r
+:102FD0002C87CE01079646C080918A01982F907F5A\r
+:102FE00059F47E2DF98AE88A89890E943E1685E87F\r
+:102FF00091E00E944D1295C0E51311C074130FC0EB\r
+:1030000061110DC0F8018583C8010E944D12E5E8E9\r
+:10301000F1E086E0DF011D928A95E9F7A2C04D87B5\r
+:103020005E878D859E856A8B0E9419166A89882322\r
+:1030300009F46DC0662309F46AC020918A01822FC9\r
+:1030400082958F7090E002970CF47FC0809185018B\r
+:10305000909186019A8389831B82FD82EC822E8364\r
+:10306000CE0101960E944D1270C0E816F90628F0B4\r
+:103070009701281B390BC90104C0809590958E0DCE\r
+:103080009F1D883C910508F046C0662309F43FC0A7\r
+:10309000E51330C074132EC020918A0120FD21C099\r
+:1030A000322F32953F70832F90E00097D1F0D801F6\r
+:1030B00015962C9315970F9741F0832F8F5F82956C\r
+:1030C000807F2F70282B15962C93C8010E944D12DB\r
+:1030D00086E0F801A5E8B1E001900D928A95E1F74C\r
+:1030E0003EC086E0F801A5E8B1E001900D928A9516\r
+:1030F000E1F737C04D875E878D859E850E94191642\r
+:10310000811123C080918A01816080938A01C80166\r
+:103110000E944D1226C07E2DF98AE88A89890E9474\r
+:103120003E16E5E8F1E086E0DF011D928A95E9F7B9\r
+:103130000E947E1618C0662351F34D875E878D85E9\r
+:103140009E850E941916882311F386E0F801A5E8F0\r
+:10315000B1E001900D928A95E1F70E948C160E94D1\r
+:103160007E1681E014C080E012C04D875E878D8599\r
+:103170009E850E94F81A292F22952F7030E0223068\r
+:1031800031050CF4E0CE243031050CF6E2CE629627\r
+:103190000FB6F894DEBF0FBECDBFDF91CF911F9168\r
+:1031A0000F91FF90EF9008951F93CF93DF93CDB7CA\r
+:1031B000DEB72C970FB6F894DEBF0FBECDBF4F839E\r
+:1031C000588769877A878B879C87CE0107960E94EC\r
+:1031D00004178823D9F02F8138858A859B85892B10\r
+:1031E00039F03F3F19F080E090E004C02F3FD9F75D\r
+:1031F00081E090E0892B09F06DC04F815885698589\r
+:103200007A858B859C850E944D1664C086E0FE0100\r
+:103210003796DE01119601900D928A95E1F7FF81B4\r
+:10322000E8854A855B854115510539F0EF3F41F44A\r
+:1032300081E090E0FF3F31F003C081E090E002C008\r
+:1032400080E090E080FD46C02091BC0130E0C901E3\r
+:103250000196877099276091BB0170E086179707E8\r
+:1032600009F440C0F983EA835D834C8396E0929F22\r
+:10327000D001939FB00D1124A557BE4FFE0131968A\r
+:1032800001900D929A95E1F78093BC010E945D1622\r
+:1032900021C0189FC001112485579E4F0E9404171A\r
+:1032A000882371F1E091BB011E9FF0011124E557C5\r
+:1032B000FE4F4081518162817381848195810E949A\r
+:1032C0004D168091BB0190E00196877099278093FD\r
+:1032D000BB0101C016E08091BB019091BC01891334\r
+:1032E000D8CF0EC00E9415161092BC011092BB01DF\r
+:1032F000E5E8F1E086E0DF011D928A95E9F7EACF83\r
+:103300002C960FB6F894DEBF0FBECDBFDF91CF91E4\r
+:103310001F910895DF92EF92FF920F931F93CF9327\r
+:10332000DF93EC01009709F46EC0D12CEE24E394F6\r
+:10333000F12C8E010F5F1F4FFE018491843748F4FA\r
+:10334000843008F04CC0813071F0823009F05BC0ED\r
+:103350001EC0853709F43FC080F1982F94589037EC\r
+:1033600008F051C03FC02296F8018491982F905EDA\r
+:10337000983050F48770FE2D01C0FF0F8A95EAF750\r
+:103380008F2F0E948E1B13C00E9426112FC02296E1\r
+:10339000F8018491982F905E983060F48770FE2D2C\r
+:1033A00001C0FF0F8A95EAF78F2F0E94941B0E949D\r
+:1033B000B71B1CC00E94EE1119C02296F80104919F\r
+:1033C00007C08FE99FE00197F1F700C000000150AE\r
+:1033D0000111F7CF0BC02296F801D49007C00E94CC\r
+:1033E000261103C08F770E94EE11E8018D2D07C0D2\r
+:1033F0008150EFE9FFE03197F1F700C0000088232A\r
+:1034000009F497CFF5CFDF91CF911F910F91FF90E6\r
+:10341000EF90DF9008956093C1017093C201809393\r
+:10342000C3019093C4010C9403166093BD01709383\r
+:10343000BE018093BF019093C0010C9403160895C0\r
+:103440000C940B1A0F931F930091C1011091C201AC\r
+:103450002091C3013091C401602B712B822B932BDF\r
+:103460001F910F910C940B1A0F931F930091C101A0\r
+:103470001091C2012091C3013091C40160237123D6\r
+:10348000822393231F910F910C940B1A0F931F9378\r
+:103490000091C1011091C2012091C3013091C4017A\r
+:1034A00060277127822793271F910F910C940B1A85\r
+:1034B00060E070E0CB010C94151A41E050E060E050\r
+:1034C00070E004C0440F551F661F771F8A95D2F71E\r
+:1034D000CB01BA010C94151A41E050E060E070E0B5\r
+:1034E00004C0440F551F661F771F8A95D2F780913D\r
+:1034F000BD019091BE01A091BF01B091C001482BC8\r
+:10350000592B6A2B7B2BCB01BA010C94151A41E085\r
+:1035100050E060E070E004C0440F551F661F771F45\r
+:103520008A95D2F740955095609570958091BD0130\r
+:103530009091BE01A091BF01B091C00148235923D1\r
+:103540006A237B23CB01BA010C94151A41E050E0A9\r
+:1035500060E070E004C0440F551F661F771F8A9516\r
+:10356000D2F78091BD019091BE01A091BF01B091B1\r
+:10357000C001482759276A277B27CB01BA010C9441\r
+:10358000151A0F931F930091BD011091BE01209158\r
+:10359000BF013091C001602B712B822B932B1F91A7\r
+:1035A0000F910C94151A0F931F930091BD01109168\r
+:1035B000BE012091BF013091C0016023712382239D\r
+:1035C00093231F910F910C94151A0F931F93009141\r
+:1035D000BD011091BE012091BF013091C001602753\r
+:1035E0007127822793271F910F910C94151A089524\r
+:1035F000CF92DF92EF92FF920F931F93CF93DF93BF\r
+:10360000EC01C090C101D090C201E090C301F090E4\r
+:10361000C4018091BD019091BE01A091BF01B09104\r
+:10362000C001C82AD92AEA2AFB2A0FE110E0B70113\r
+:10363000A601002E04C076956795579547950A9484\r
+:10364000D2F740FF08C0BE01802F0E94FA038130EC\r
+:10365000910509F007C00150110948F7BE0180E04B\r
+:103660000E94FA03DF91CF911F910F91FF90EF908D\r
+:10367000DF90CF90089540910C0150910D0120E012\r
+:1036800030E09FEFFA01E20FF31F62816817A1F0AB\r
+:103690009F3F19F4611101C0922F2F5F3F4F2630D9\r
+:1036A000310581F707C0FA01E90FF11D97FDFA9581\r
+:1036B000828308959F3FB9F7089540910C0150917E\r
+:1036C0000D0120E030E0FA01E20FF31F9281981320\r
+:1036D00001C012822F5F3F4F26303105A1F70895B8\r
+:1036E00081E090E0E0910C01F0910D01E80FF91FED\r
+:1036F0001082019688309105A9F708959091C5012F\r
+:10370000982B9093C501089580959091C5019823B9\r
+:103710009093C50108951092C50108959091C60136\r
+:10372000982B9093C601089580959091C601982397\r
+:103730009093C60108951092C60108958093C70121\r
+:1037400008951092C701089540910C0150910D0108\r
+:1037500020E030E080E0FA01E20FF31F9181911147\r
+:103760008F5F2F5F3F4F27303105A9F70895E09114\r
+:103770000C01F0910D018091C5018083E0910C0155\r
+:10378000F0910D0180819091C601892B80839091E9\r
+:10379000C701992361F0E0910C01F0910D01808146\r
+:1037A000892B80830E94A41B81110E94A11B809100\r
+:1037B0000C0190910D010C94F00F8091E701843081\r
+:1037C00021F11092D10120E488E190E00FB6F89445\r
+:1037D000A895809360000FBE2093600080E00E9457\r
+:1037E000E10283B7817F846083BF83B7816083BF39\r
+:1037F0007894889583B78E7F83BF88E10FB6F8945D\r
+:1038000080936000109260000FBE0895089508959F\r
+:10381000CF9380E00E94E1020E94061C0E943807BC\r
+:103820000E94071CC0E08C2F0E948C08892B29F471\r
+:10383000CF5FC530C1F780E001C081E0CF9108952E\r
+:103840000E94151680E00E94E1020E94D0220E9490\r
+:10385000E40F0C9462051F920F920FB60F92112481\r
+:103860008F939F93AF93BF938091D101811113C028\r
+:103870008091D2019091D301A091D401B091D50152\r
+:103880004196A11DB11D8093D2019093D301A093C5\r
+:10389000D401B093D501BF91AF919F918F910F90BB\r
+:1038A0000FBE0F901F90189582E084BD93E095BDE8\r
+:1038B0009AEF97BD80936E0008958FB7F89440916A\r
+:1038C000D2015091D3016091D4017091D5018FBF85\r
+:1038D000CA010895CF92DF92EF92FF920F931F9348\r
+:1038E0002FB7F8944091D2015091D3016091D40147\r
+:1038F0007091D5012FBF6A017B01EE24FF248C015A\r
+:1039000020E030E0C016D106E206F30620F09A016E\r
+:10391000281B390B05C09C0120953095240F351FBD\r
+:10392000C9011F910F91FF90EF90DF90CF90089504\r
+:103930001F920F920FB60F9211248F939F93AF9304\r
+:10394000BF938091D2019091D301A091D401B09105\r
+:10395000D5010196A11DB11D8093D2019093D30191\r
+:10396000A093D401B093D501BF91AF919F918F9156\r
+:103970000F900FBE0F901F9018950E94C80CF894DE\r
+:103980002FEF87EA91E6215080409040E1F700C098\r
+:10399000000087E090EBDC018093F1019093F2014D\r
+:1039A000A093F301B093F4012CE088E190E00FB60E\r
+:1039B000F894A895809360000FBE20936000FFCF1D\r
+:1039C000CF92DF92EF92FF920F931F93CF93DF93EB\r
+:1039D000C82ED12C01E010E08D2D0E948C087C01B6\r
+:1039E000C0E0D0E098010C2E02C0220F331F0A94D1\r
+:1039F000E2F72E213F21232B29F42196CC30D1054B\r
+:103A000089F708C06C2F7D2D80E00E94D503C81275\r
+:103A1000F4CF06C0D39485E0D812DECF80E001C099\r
+:103A200081E0DF91CF911F910F91FF90EF90DF9098\r
+:103A3000CF900895CF93C82F8CE20E94E01C88237A\r
+:103A400021F08C2FCF910C94E01C80E0CF91089551\r
+:103A5000CF930E946B1E811102C00E944C1EC5E6CE\r
+:103A600008C00E9438078FE39CE90197F1F700C076\r
+:103A70000000C150B1F789E20E941A1D81110AC1EC\r
+:103A80008AE20E941A1D81110E944C1E85E00E944C\r
+:103A90001A1D81110E94BD1C0E94761E8093D001C8\r
+:103AA00087E00E941A1D882399F18BE10E941A1D5C\r
+:103AB000882351F09091D00191FB882780F921E073\r
+:103AC000822780FB91F922C08EE00E941A1D882374\r
+:103AD00051F09091D00192FB882780F921E0822754\r
+:103AE00080FB92F913C080E10E941A1D9091D001D1\r
+:103AF000882341F093FB882780F921E0822780FB0F\r
+:103B000093F904C0892F809580FB90F99093D001A0\r
+:103B10008091D0010E947A1E0E94881E8093E1014C\r
+:103B200080EE0E941A1D882341F08091E101982FB8\r
+:103B3000909590FB80F98093E10189E30E941A1D22\r
+:103B4000882359F09091E10191FB882780F921E0C9\r
+:103B5000822780FB91F99093E10182EE0E941A1D69\r
+:103B6000882359F09091E10192FB882780F921E0A8\r
+:103B7000822780FB92F99093E10186EE0E941A1D44\r
+:103B8000882359F09091E10193FB882780F921E087\r
+:103B9000822780FB93F99093E10183EE0E941A1D26\r
+:103BA000882359F09091E10194FB882780F921E066\r
+:103BB000822780FB94F99093E10185E30E941A1D0E\r
+:103BC000882359F09091E10195FB882780F921E045\r
+:103BD000822780FB95F99093E10181E30E941A1DF1\r
+:103BE000882359F09091E10196FB882780F921E024\r
+:103BF000822780FB96F99093E10181E10E941A1DD2\r
+:103C0000882359F09091E10197FB882780F921E002\r
+:103C1000822780FB97F99093E1018091E1010E9456\r
+:103C20008C1E87E20E941A1DC82F8EE10E941A1D69\r
+:103C30008111C2608FE10E941A1D8111C46080E26F\r
+:103C40000E941A1D8111C86081E20E941A1D811113\r
+:103C5000C06182E20E941A1D8111C06283E20E944B\r
+:103C60001A1D8111C06484E20E941A1D882311F07C\r
+:103C7000C06802C0CC2329F08C2F0E94831E6C2FB9\r
+:103C800003C00E947F1E682F70E080E090E0CF911B\r
+:103C90000C94201ACF9108956DEE7EEF80E090E0B5\r
+:103CA0000E94D92460E082E090E00E94CB2460E092\r
+:103CB00083E090E00E94CB2460E084E090E00E94EA\r
+:103CC000CB2460E085E090E00E94CB2460E086E0B9\r
+:103CD00090E00C94CB2480E090E00E94C52421E089\r
+:103CE0008D3E9E4F09F020E0822F089582E090E003\r
+:103CF0000C94BD24682F82E090E00C94CB2483E0E8\r
+:103D000090E00C94BD24682F83E090E00C94CB24C9\r
+:103D100084E090E00C94BD24682F84E090E00C9443\r
+:103D2000CB2486E090E00C94BD24682F86E090E0E0\r
+:103D30000C94CB248091DE0180FF0BC060911101B7\r
+:103D400085E0689FB0011124759567957595679515\r
+:103D50002AC081FF09C06091110185E0689FB00110\r
+:103D60001124759567951FC082FF07C060911101EE\r
+:103D700085E0689FB001112416C04091D80144230A\r
+:103D8000C9F060911001461788F72091110185E074\r
+:103D9000289F90011124429FC001439F900D112440\r
+:103DA00070E00E9495246038710540F4611571053A\r
+:103DB00039F002C065E070E0862F08958FE708951E\r
+:103DC00081E008958091DE0180FF08C060910F01BD\r
+:103DD00070E0759567957595679521C081FF06C060\r
+:103DE00060910F0170E07595679519C082FF04C05E\r
+:103DF00060910F0170E010C08091D8018823C1F05C\r
+:103E000060910E018617A0F790910F01989FC00155\r
+:103E1000112470E00E9495246038710528F4611522\r
+:103E2000710521F0862F08958FE7089581E00895A8\r
+:103E300061E070E0F4CF803F21F40E949A1E8195EA\r
+:103E400004C0813F29F40E949A1E8093DB010895EB\r
+:103E5000823F21F40E949A1E819504C0833F29F479\r
+:103E60000E949A1E8093DA010895893F19F40E94F6\r
+:103E7000E21E05C08A3F31F40E94E21E81958093C4\r
+:103E8000DC0108958B3F21F40E94E21E819504C05D\r
+:103E90008C3F29F40E94E21E8093DD010895843F47\r
+:103EA00021F48091D901816017C0853F21F4809170\r
+:103EB000D901826011C0863F21F48091D9018460CC\r
+:103EC0000BC0873F21F48091D901886005C0883FED\r
+:103ED00031F48091D90180618093D90108958D3F9B\r
+:103EE00021F48091DE0181600BC08E3F21F480912E\r
+:103EF000DE01826005C08F3F29F48091DE0184607D\r
+:103F00008093DE010895803F29F48091DB0187FFD3\r
+:103F10006EC007C0813F41F48091DB0118160CF0A0\r
+:103F200066C01092DB0163C09091DA01823F19F400\r
+:103F300097FF5DC005C0833F31F419160CF057C0E0\r
+:103F40001092DA0154C0893F31F48091DC011816D7\r
+:103F50000CF04DC006C08A3F39F48091DC0187FF28\r
+:103F600046C01092DC0143C08B3F29F48091DD01F3\r
+:103F700087FF3DC006C08C3F39F48091DD011816E3\r
+:103F8000B4F51092DD0133C0843F21F48091D90152\r
+:103F90008E7F05C0853F31F48091D9018D7F80935C\r
+:103FA000D90125C0863F21F48091D9018B7FF7CFBD\r
+:103FB000873F21F48091D901877FF1CF883F21F499\r
+:103FC0008091D9018F7EEBCF8D3F21F48091DE016E\r
+:103FD0008E7F0BC08E3F21F48091DE018D7F05C066\r
+:103FE0008F3F29F48091DE018B7F8093DE018091E9\r
+:103FF000DA0181110EC08091DB0181110AC080912C\r
+:10400000DC01811106C08091DD01811102C0109296\r
+:10401000D801089589ED91E00E94FB0F0E945D1C7C\r
+:104020009093D7018093D6010895CF938091D601C4\r
+:104030009091D7010E946A1C4091D801442321F03D\r
+:104040002091120130E006C0209113015AE0259F13\r
+:10405000900111248217930708F486C08091DA0139\r
+:1040600081110DC09091DB01911109C09091DC018B\r
+:10407000911105C09091DD01992309F475C04F3F5E\r
+:1040800019F04F5F4093D801181624F40E949A1E2D\r
+:104090008093DA018091DA0187FF05C00E949A1EA1\r
+:1040A00081958093DA018091DB01181624F40E9437\r
+:1040B0009A1E8093DB018091DB0187FF05C00E947F\r
+:1040C0009A1E81958093DB016091DA01662339F1B4\r
+:1040D000C091DB01CC2319F1772767FD7095872FFD\r
+:1040E000972F0E949A2323E333E343E35FE30E9485\r
+:1040F000FE230E9467236093DA016C2F772767FD08\r
+:104100007095872F972F0E949A2323E333E343E38D\r
+:104110005FE30E94FE230E9467236093DB0180918E\r
+:10412000DC01181624F40E94E21E8093DC018091C9\r
+:10413000DC0187FF05C00E94E21E81958093DC01AF\r
+:104140008091DD01181624F40E94E21E8093DD01A7\r
+:104150008091DD0187FF05C00E94E21E819580935A\r
+:10416000DD01CF910C940A20CF910895E9EDF1E0A3\r
+:1041700085E0DF011D928A95E9F71092D80110922F\r
+:10418000DE010895833089F130F4813061F08230AE\r
+:1041900009F06EC019C0853009F449C0B8F1863005\r
+:1041A00009F066C055C020911301862F90E0820F60\r
+:1041B000911D8F3F910520F4620F609313010895C4\r
+:1041C0008FEF80931301089520911201862F90E0C4\r
+:1041D000820F911D8F3F910520F4620F60931201B1\r
+:1041E00008958FEF80931201089520911101862F79\r
+:1041F00090E0820F911D8F3F910520F4620F609334\r
+:10420000110108958FEF80931101089520911001FD\r
+:10421000862F90E0820F911D8F3F910520F4620F51\r
+:104220006093100108958FEF8093100108952091FD\r
+:104230000F01862F90E0820F911D8F3F910520F492\r
+:10424000620F60930F0108958FEF80930F0108951F\r
+:1042500020910E01862F90E0820F911D8F3F9105D6\r
+:1042600020F4620F60930E0108958FEF80930E018A\r
+:104270000895833021F130F4813059F0823009F013\r
+:1042800049C012C0853089F128F1863009F042C05A\r
+:1042900037C080911301681720F4861B80931301A7\r
+:1042A000089510921301089580911201681720F467\r
+:1042B000861B809312010895109212010895809137\r
+:1042C0001101681720F4861B809311010895109244\r
+:1042D0001101089580911001681720F4861B8093C6\r
+:1042E0001001089510921001089580910F01681730\r
+:1042F00020F4861B80930F01089510920F010895FA\r
+:1043000080910E01681720F4861B80930E0108959A\r
+:1043100010920E01089541E050E060E070E004C0AA\r
+:10432000440F551F661F771F8A95D2F7CB01BA013C\r
+:104330000E94201A0C941516873200F58E3108F071\r
+:1043400086C08E3009F466C060F4873009F44DC031\r
+:1043500018F4863049F531C0883041F18B3021F5B1\r
+:104360007BC0863109F478C018F48031E9F45CC070\r
+:10437000893109F471C08B31B9F442C0883309F432\r
+:104380006BC048F4893209F460C0853309F45DC01C\r
+:10439000873251F45AC0833409F457C018F48A3371\r
+:1043A00018F057C0883499F080E008950E94761E76\r
+:1043B0000E94881E0E94911E4FC08091D001817F73\r
+:1043C0008E7F8093D00181E08093DF0108950E9469\r
+:1043D00015162FEF83ED90E3215080409040E1F7D8\r
+:1043E00000C000000E94BD1C37C08091D00180FF3A\r
+:1043F00003C0817F8E7F01C081608093D0012CC07B\r
+:104400009091D00191FB882780F921E0822780FBE1\r
+:1044100091F913C09091D00192FB882780F921E097\r
+:10442000822780FB92F909C09091D00193FB8827E5\r
+:1044300080F921E0822780FB93F99093D0018823B3\r
+:1044400059F091609093D00107C080E003C08D5176\r
+:1044500001C089530E948B2181E0089580E0089576\r
+:1044600080E00895CF93C82F8091DF01813071F0F3\r
+:1044700020F0823009F089C037C0A0910C01B091C2\r
+:104480000D018C91823209F082C007C0A0910C010D\r
+:10449000B0910D018C91823249F48C2F0E942E2212\r
+:1044A00081111EC08C2F0E949C211CC08C2F0E9449\r
+:1044B0003022811115C0C43169F030F4CB3081F065\r
+:1044C000C03109F068C009C0C93221F0C83309F011\r
+:1044D00062C006C01092DF015EC082E08093DF01FF\r
+:1044E00081E090E081705AC0C932C9F060F4C431F3\r
+:1044F000B1F020F4C73009F04CC034C0CE51C63002\r
+:1045000008F047C017C0CE3439F120F4CB3409F09D\r
+:1045100040C01CC0C135C1F0C235D9F513C080916F\r
+:10452000E001882319F01092E00133C081E080930C\r
+:10453000DF0134C0EC2FF0E0E65BFE4F808180931A\r
+:10454000E00127C061E003C061E007C06AE080913C\r
+:10455000E0010E94C2201DC06AE08091E0010E943B\r
+:10456000392117C08EE18093130182E380931201F9\r
+:104570008AE08093110184E18093100188E08093A8\r
+:104580000F0188E280930E0104C01092DF0180E0E9\r
+:1045900005C081E003C080E090E0A4CFCF910895F2\r
+:1045A0000E946B1E811102C00E944C1E0E94911E2F\r
+:1045B0008093F00180FF02C0869501C080E00C94DA\r
+:1045C000E1028091F001982F9695292F30E0233059\r
+:1045D00031054CF49F5F990F8170892B8160809326\r
+:1045E000F0010E94951E8091F00186950C94E102E5\r
+:1045F0008091F001982F969591F09158990F8170C4\r
+:10460000892B8093F0018E7F91E009F490E08091F6\r
+:10461000F00190FB80F98093F0010E94951E80913B\r
+:10462000F00186950C94E1028091F001982F90950D\r
+:1046300090FB80F98093F0010E94951E8091F0011B\r
+:1046400080FF02C0869501C080E00C94E1023091A9\r
+:10465000F001232F26952F5F2F77822F90E0317066\r
+:1046600004972CF4220F232B2093F00102C03093E7\r
+:10467000F0018091F001282F2E7F91E009F490E065\r
+:1046800090FB80F98093F0010E94951E8091F001CB\r
+:1046900086950C94E1022091F001922F969598272F\r
+:1046A000990F822F8170892B8093F0018E7F91E08A\r
+:1046B00009F490E08091F00190FB80F98093F00183\r
+:1046C0000E94951E8091F00186950C94E10204D021\r
+:1046D0006894B1118DC0089570D088F09F5790F004\r
+:1046E000B92F9927B751A0F0D1F0660F771F881F17\r
+:1046F000991F1AF0BA95C9F712C0B13081F077D07E\r
+:10470000B1E0089574C0672F782F8827B85F39F01B\r
+:10471000B93FCCF3869577956795B395D9F73EF475\r
+:1047200090958095709561957F4F8F4F9F4F08951D\r
+:10473000E89409C097FB3EF490958095709561953B\r
+:104740007F4F8F4F9F4F9923A9F0F92F96E9BB27F1\r
+:104750009395F695879577956795B795F111F8CF6D\r
+:10476000FAF4BB0F11F460FF1BC06F5F7F4F8F4FD8\r
+:104770009F4F16C0882311F096E911C0772321F0CE\r
+:104780009EE8872F762F05C0662371F096E8862F66\r
+:1047900070E060E02AF09A95660F771F881FDAF7BD\r
+:1047A000880F9695879597F9089557FD9058440F6F\r
+:1047B000551F59F05F3F71F04795880F97FB991F80\r
+:1047C00061F09F3F79F0879508951216130614063D\r
+:1047D000551FF2CF4695F1DF08C0161617061806CA\r
+:1047E000991FF1CF86957105610508940895E894A5\r
+:1047F000BB2766277727CB0197F908950BD078C0A0\r
+:1048000069D028F06ED018F0952309F05AC05FC027\r
+:104810001124EECFCADFA0F3959FD1F3950F50E09E\r
+:10482000551F629FF001729FBB27F00DB11D639F62\r
+:10483000AA27F00DB11DAA1F649F6627B00DA11D08\r
+:10484000661F829F2227B00DA11D621F739FB00DAE\r
+:10485000A11D621F839FA00D611D221F749F33271E\r
+:10486000A00D611D231F849F600D211D822F762FB7\r
+:104870006A2F11249F5750408AF0E1F088234AF0B4\r
+:10488000EE0FFF1FBB1F661F771F881F9150504000\r
+:10489000A9F79E3F510570F014C0AACF5F3FECF31B\r
+:1048A000983EDCF3869577956795B795F795E795EC\r
+:1048B0009F5FC1F7FE2B880F911D9695879597F9FD\r
+:1048C000089597F99F6780E870E060E008959FEF92\r
+:1048D00080EC089500240A94161617061806090697\r
+:1048E000089500240A941216130614060506089566\r
+:1048F000092E0394000C11F4882352F0BB0F40F4EE\r
+:10490000BF2B11F460FF04C06F5F7F4F8F4F9F4F2D\r
+:104910000895991B79E004C0991F961708F0961B1B\r
+:10492000881F7A95C9F78095089597FB072E16F48E\r
+:10493000009407D077FD09D00E94A92407FC05D078\r
+:104940003EF4909581959F4F0895709561957F4FA6\r
+:104950000895AA1BBB1B51E107C0AA1FBB1FA617C6\r
+:10496000B70710F0A61BB70B881F991F5A95A9F718\r
+:1049700080959095BC01CD010895F999FECF92BD27\r
+:1049800081BDF89A992780B50895A8E1B0E042E08A\r
+:1049900050E00C94E024262FF999FECF1FBA92BD67\r
+:1049A00081BD20BD0FB6F894FA9AF99A0FBE019610\r
+:1049B00008950E94CB24272F0C94CC24DC01CB013A\r
+:1049C000FC01F999FECF06C0F2BDE1BDF89A31961F\r
+:1049D00000B40D9241505040B8F70895F894FFCFBD\r
+:1049E00005960826090209CD08990801C80128087A\r
+:1049F000140A321E420045002500260043006100D3\r
+:104A00006000200037006400650066006700440015\r
+:104A100046002400470074038D03A603BF038B04E4\r
+:104A20003E040804E8033F4D362001020304050656\r
+:044A3000070809006A\r
+:00000001FF\r
index da91b4bf4619fdca7d6d929aa0a71408c1155cef..d0b77fb8033a34b6cbf730943ea9e0aee3eb97fe 100644 (file)
@@ -9,92 +9,92 @@
 // Alt gr
 
 // normal characters
-#define DE_Z KC_Y
-#define DE_Y KC_Z
+#define DE_OSX_Z KC_Y
+#define DE_OSX_Y KC_Z
 
-#define DE_A KC_A
-#define DE_B KC_B
-#define DE_C KC_C
-#define DE_D KC_D
-#define DE_E KC_E
-#define DE_F KC_F
-#define DE_G KC_G
-#define DE_H KC_H
-#define DE_I KC_I
-#define DE_J KC_J
-#define DE_K KC_K
-#define DE_L KC_L
-#define DE_M KC_M
-#define DE_N KC_N
-#define DE_O KC_O
-#define DE_P KC_P
-#define DE_Q KC_Q
-#define DE_R KC_R
-#define DE_S KC_S
-#define DE_T KC_T
-#define DE_U KC_U
-#define DE_V KC_V
-#define DE_W KC_W
-#define DE_X KC_X
+#define DE_OSX_A KC_A
+#define DE_OSX_B KC_B
+#define DE_OSX_C KC_C
+#define DE_OSX_D KC_D
+#define DE_OSX_E KC_E
+#define DE_OSX_F KC_F
+#define DE_OSX_G KC_G
+#define DE_OSX_H KC_H
+#define DE_OSX_I KC_I
+#define DE_OSX_J KC_J
+#define DE_OSX_K KC_K
+#define DE_OSX_L KC_L
+#define DE_OSX_M KC_M
+#define DE_OSX_N KC_N
+#define DE_OSX_O KC_O
+#define DE_OSX_P KC_P
+#define DE_OSX_Q KC_Q
+#define DE_OSX_R KC_R
+#define DE_OSX_S KC_S
+#define DE_OSX_T KC_T
+#define DE_OSX_U KC_U
+#define DE_OSX_V KC_V
+#define DE_OSX_W KC_W
+#define DE_OSX_X KC_X
 
-#define DE_0 KC_0
-#define DE_1 KC_1
-#define DE_2 KC_2
-#define DE_3 KC_3
-#define DE_4 KC_4
-#define DE_5 KC_5
-#define DE_6 KC_6
-#define DE_7 KC_7
-#define DE_8 KC_8
-#define DE_9 KC_9
+#define DE_OSX_0 KC_0
+#define DE_OSX_1 KC_1
+#define DE_OSX_2 KC_2
+#define DE_OSX_3 KC_3
+#define DE_OSX_4 KC_4
+#define DE_OSX_5 KC_5
+#define DE_OSX_6 KC_6
+#define DE_OSX_7 KC_7
+#define DE_OSX_8 KC_8
+#define DE_OSX_9 KC_9
 
-#define DE_DOT KC_DOT
-#define DE_COMM KC_COMM
+#define DE_OSX_DOT KC_DOT
+#define DE_OSX_COMM KC_COMM
 
-#define DE_SS KC_MINS
-#define DE_AE KC_QUOT
-#define DE_UE KC_LBRC
-#define DE_OE KC_SCLN
+#define DE_OSX_SS KC_MINS
+#define DE_OSX_AE KC_QUOT
+#define DE_OSX_UE KC_LBRC
+#define DE_OSX_OE KC_SCLN
 
-#define DE_CIRC KC_NUBS // accent circumflex ^ and ring °
-#define DE_ACUT KC_EQL // accent acute ´ and grave `
-#define DE_PLUS KC_RBRC // + and * and ~
-#define DE_HASH KC_BSLS // # and '
-#define DE_LESS KC_GRV // < and > and |
-#define DE_MINS KC_SLSH // - and _
+#define DE_OSX_CIRC KC_NUBS // accent circumflex ^ and ring °
+#define DE_OSX_ACUT KC_EQL // accent acute ´ and grave `
+#define DE_OSX_PLUS KC_RBRC // + and * and ~
+#define DE_OSX_HASH KC_BSLS // # and '
+#define DE_OSX_LESS KC_GRV // < and > and |
+#define DE_OSX_MINS KC_SLSH // - and _
 
 // shifted characters
-#define DE_RING LSFT(DE_CIRC) // °
-#define DE_EXLM LSFT(KC_1) // !
-#define DE_DQOT LSFT(KC_2) // "
-#define DE_PARA LSFT(KC_3) // §
-#define DE_DLR  LSFT(KC_4) // $
-#define DE_PERC LSFT(KC_5) // %
-#define DE_AMPR LSFT(KC_6) // &
-#define DE_SLSH LSFT(KC_7) // /
-#define DE_LPRN LSFT(KC_8) // (
-#define DE_RPRN LSFT(KC_9) // )
-#define DE_EQL  LSFT(KC_0) // =
-#define DE_QST  LSFT(DE_SS) // ?
-#define DE_GRV  LSFT(DE_ACUT) // `
-#define DE_ASTR LSFT(DE_PLUS) // *
-#define DE_QUOT LSFT(DE_HASH) // '
-#define DE_MORE LSFT(DE_LESS) // >
-#define DE_COLN LSFT(KC_DOT) // :
-#define DE_SCLN LSFT(KC_COMM) // ;
-#define DE_UNDS LSFT(DE_MINS) // _
+#define DE_OSX_RING LSFT(DE_OSX_CIRC) // °
+#define DE_OSX_EXLM LSFT(KC_1) // !
+#define DE_OSX_DQOT LSFT(KC_2) // "
+#define DE_OSX_PARA LSFT(KC_3) // §
+#define DE_OSX_DLR  LSFT(KC_4) // $
+#define DE_OSX_PERC LSFT(KC_5) // %
+#define DE_OSX_AMPR LSFT(KC_6) // &
+#define DE_OSX_SLSH LSFT(KC_7) // /
+#define DE_OSX_LPRN LSFT(KC_8) // (
+#define DE_OSX_RPRN LSFT(KC_9) // )
+#define DE_OSX_EQL  LSFT(KC_0) // =
+#define DE_OSX_QST  LSFT(DE_OSX_SS) // ?
+#define DE_OSX_GRV  LSFT(DE_OSX_ACUT) // `
+#define DE_OSX_ASTR LSFT(DE_OSX_PLUS) // *
+#define DE_OSX_QUOT LSFT(DE_OSX_HASH) // '
+#define DE_OSX_MORE LSFT(DE_OSX_LESS) // >
+#define DE_OSX_COLN LSFT(KC_DOT) // :
+#define DE_OSX_SCLN LSFT(KC_COMM) // ;
+#define DE_OSX_UNDS LSFT(DE_OSX_MINS) // _
 
 // Alt-ed characters
-#define DE_SQ2 LALT(KC_2) // ²
-#define DE_SQ3 LALT(KC_3) // ³
-#define DE_LCBR LALT(KC_8) // {
-#define DE_LBRC LALT(KC_5) // [
-#define DE_RBRC LALT(KC_6) // ]
-#define DE_RCBR LALT(KC_9) // }
-#define DE_BSLS LALT(LSFT(KC_7)) // backslash
-#define DE_AT  LALT(DE_L) // @
-#define DE_EURO LALT(KC_E) // €
-#define DE_TILD LALT(DE_N) // ~
-#define DE_PIPE LALT(DE_7) // |
+#define DE_OSX_SQ2 LALT(KC_2) // ²
+#define DE_OSX_SQ3 LALT(KC_3) // ³
+#define DE_OSX_LCBR LALT(KC_8) // {
+#define DE_OSX_LBRC LALT(KC_5) // [
+#define DE_OSX_RBRC LALT(KC_6) // ]
+#define DE_OSX_RCBR LALT(KC_9) // }
+#define DE_OSX_BSLS LALT(LSFT(KC_7)) // backslash
+#define DE_OSX_AT  LALT(DE_OSX_L) // @
+#define DE_OSX_EURO LALT(KC_E) // €
+#define DE_OSX_TILD LALT(DE_OSX_N) // ~
+#define DE_OSX_PIPE LALT(DE_OSX_7) // |
 
 #endif
index e37ea310398eb1929e263b6b4637d1ea46237d15..ac45d25892e780f523e2c7e3321ac49aa3b068f2 100644 (file)
@@ -99,11 +99,11 @@ void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
 
     if (record->event.pressed) {
        // midi_send_noteon(&midi_device, record->event.key.row, starting_note + SCALE[record->event.key.col], 127);
-        midi_send_noteon(&midi_device, 0, (starting_note + SCALE[record->event.key.col + offset])+12*(MATRIX_ROWS - record->event.key.row), 127);
+        // midi_send_noteon(&midi_device, 0, (starting_note + SCALE[record->event.key.col + offset])+12*(MATRIX_ROWS - record->event.key.row), 127);
         play_note(((double)261.626)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)), 0xF);
     } else {
         // midi_send_noteoff(&midi_device, record->event.key.row, starting_note + SCALE[record->event.key.col], 127);
-        midi_send_noteoff(&midi_device, 0, (starting_note + SCALE[record->event.key.col + offset])+12*(MATRIX_ROWS - record->event.key.row), 127);
+        // midi_send_noteoff(&midi_device, 0, (starting_note + SCALE[record->event.key.col + offset])+12*(MATRIX_ROWS - record->event.key.row), 127);
         stop_note(((double)261.626)*pow(2.0, -1.0)*pow(2.0,(starting_note + SCALE[record->event.key.col + offset])/12.0+(MATRIX_ROWS - record->event.key.row)));
     }
 }
\ No newline at end of file
index dc163a2f4b4dcb059cde9b85461c2164cb35e69c..39f9f59d10af7c86c2559408b2cee390bb6cd4c7 100644 (file)
@@ -15,7 +15,7 @@ Depending on which keymap you would like to use, you will have to compile slight
 To build with the default keymap, simply run `make`.
 
 ### Other Keymaps
-Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `<name>.c` and see keymap document (you can find in top README.md) and existent keymap files.
+Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create file named `<name>.c` in the keymaps folder, and see keymap document (you can find in top README.md) and existent keymap files.
 
 To build the firmware binary hex file with a keymap just do `make` with `KEYMAP` option like:
 ```