]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Update personal userspace and keymaps + improve custom functionality (#5289)
authorDrashna Jaelre <drashna@live.com>
Tue, 5 Mar 2019 23:07:13 +0000 (15:07 -0800)
committerGitHub <noreply@github.com>
Tue, 5 Mar 2019 23:07:13 +0000 (15:07 -0800)
* Change how desktop commands work

* Add DST_MOD_MASK as a config option

* DST_RMV → DST_REM

* Add melody96:konstantin keymap

* Update custom SEND_STRING

* Move feature flags from userspace into keyboard rules

* Use "Vo-", "Vo+" instead of "VoD", "VoU" in keymap comments

* Add RGB controls and numpad Unicode to Melody96 keymap

* Add RGB_SET keycode to Melody96 and RGB files to userspace

* Generate UNICODE and UNICODEMAP constants using macros

* Avoid collisions with X_* send string constants

* Use two spaces before inline comments

* Add _keymap versions of other custom Quantum functions

Not added: eeconfig_update_keymap, eeconfig_read_keymap

* Switch to UNICODEMAP in keyboard rules

* Make toggle_numpad a nested function in process_record_user

* Set Melody96 underglow color to Godspeed blue on EEPROM reset

* Remove most _keymap and _user definitions in userspace

Some keyboards misuse _user functions by defining them in the base files
instead of the corresponding _kb functions (especially led_set_user and
matrix_init_user). Until this is fixed (#5148), I've removed definitions
in my userspace that could cause linking collisions.

* Update GODSPEED_BLUE values and RGB mode keys

* Add GODSPEED_YELLOW color

* Set preferred intervals for rgblight effects

* Update tap dance function names

* Replace td_lshift_fn with generic td_mod_layer, add TD_RCTL_FN

Move TD_FN_RCTL after TD_RCTL_FN

* Replace td_fn_rctrl with generic td_layer_mod

* Add blank lines, prefer explicit initialization

* ACTION_TAP_DANCE_DOUBLE_MODS → ACTION_TAP_DANCE_DOUBLE_MOD

* Update Godspeed colors

* Add media controls to Melody96 keymap

* Add SysRq, Break combos and other keys to Melody96 keymap

86 files changed:
common_features.mk
docs/_summary.md
docs/config_options.md
docs/custom_quantum_functions.md
docs/feature_debounce_type.md
docs/features.md
docs/getting_started_make_guide.md
docs/hand_wire.md
keyboards/40percentclub/foobar/info.json
keyboards/atreus/keymaps/yttyx/README.md
keyboards/atreus/keymaps/yttyx/config.h
keyboards/atreus/keymaps/yttyx/keymap.c
keyboards/converter/numeric_keypad_IIe/config.h [new file with mode: 0644]
keyboards/converter/numeric_keypad_IIe/info.json [new file with mode: 0644]
keyboards/converter/numeric_keypad_IIe/keymaps/default/config.h [new file with mode: 0644]
keyboards/converter/numeric_keypad_IIe/keymaps/default/keymap.c [new file with mode: 0644]
keyboards/converter/numeric_keypad_IIe/keymaps/default/readme.md [new file with mode: 0644]
keyboards/converter/numeric_keypad_IIe/keymaps/newbold/config.h [new file with mode: 0644]
keyboards/converter/numeric_keypad_IIe/keymaps/newbold/keymap.c [new file with mode: 0644]
keyboards/converter/numeric_keypad_IIe/keymaps/newbold/readme.md [new file with mode: 0644]
keyboards/converter/numeric_keypad_IIe/numeric_keypad_IIe.c [new file with mode: 0644]
keyboards/converter/numeric_keypad_IIe/numeric_keypad_IIe.h [new file with mode: 0644]
keyboards/converter/numeric_keypad_IIe/readme.md [new file with mode: 0644]
keyboards/converter/numeric_keypad_IIe/rules.mk [new file with mode: 0644]
keyboards/converter/usb_usb/custom_matrix.cpp
keyboards/dz60/keymaps/edulpn/README.md [new file with mode: 0644]
keyboards/dz60/keymaps/edulpn/keymap.c [new file with mode: 0644]
keyboards/ergodash/rev2/keymaps/default/keymap.c
keyboards/hadron/ver2/keymaps/readme.md
keyboards/handwired/dactyl_manuform/5x6/5x6.h
keyboards/handwired/dactyl_manuform/5x6/info.json
keyboards/handwired/dactyl_manuform/5x7/5x7.h
keyboards/handwired/dactyl_manuform/5x7/info.json
keyboards/handwired/dactyl_manuform/6x6/6x6.h
keyboards/handwired/dactyl_manuform/6x6/info.json
keyboards/handwired/terminus_mini/info.json [new file with mode: 0644]
keyboards/handwired/terminus_mini/keymaps/default/keymap.c
keyboards/handwired/terminus_mini/readme.md
keyboards/handwired/terminus_mini/terminus_mini.h
keyboards/hecomi/alpha/info.json
keyboards/hs60/v2/keymaps/ansi/readme.md
keyboards/hs60/v2/keymaps/ansi_via/config.h [new file with mode: 0644]
keyboards/hs60/v2/keymaps/ansi_via/keymap.c [new file with mode: 0644]
keyboards/hs60/v2/keymaps/ansi_via/readme.md [new file with mode: 0644]
keyboards/hs60/v2/keymaps/ansi_via/rules.mk [new file with mode: 0644]
keyboards/hs60/v2/keymaps/default/readme.md
keyboards/hs60/v2/keymaps/default_via/keymap.c [new file with mode: 0644]
keyboards/hs60/v2/keymaps/default_via/readme.md [new file with mode: 0644]
keyboards/hs60/v2/keymaps/default_via/rules.mk [new file with mode: 0644]
keyboards/hs60/v2/keymaps/hhkb/readme.md
keyboards/hs60/v2/keymaps/hhkb_via/config.h [new file with mode: 0644]
keyboards/hs60/v2/keymaps/hhkb_via/keymap.c [new file with mode: 0644]
keyboards/hs60/v2/keymaps/hhkb_via/readme.md [new file with mode: 0644]
keyboards/hs60/v2/keymaps/hhkb_via/rules.mk [new file with mode: 0644]
keyboards/hs60/v2/keymaps/iso_andys8/rules.mk [new file with mode: 0644]
keyboards/hs60/v2/keymaps/stanrc85/rules.mk [new file with mode: 0644]
keyboards/hs60/v2/keymaps/win_osx_dual/rules.mk
keyboards/hs60/v2/rules.mk
keyboards/kbdfans/kbd67/rev1/keymaps/default/keymap.c
keyboards/niu_mini/keymaps/yttyx/keymap.c
keyboards/planck/keymaps/cbbrowne/readme.md [deleted file]
keyboards/planck/keymaps/cbbrowne/readme.org [new file with mode: 0644]
keyboards/planck/keymaps/vxid/config.h [new file with mode: 0644]
keyboards/planck/keymaps/vxid/keymap.c [new file with mode: 0644]
keyboards/planck/keymaps/vxid/readme.md [new file with mode: 0644]
keyboards/westfoxtrot/aanzee/info.json
keyboards/xd75/keymaps/cbbrowne/keymap.c
keyboards/xd75/keymaps/cbbrowne/rules.mk [new file with mode: 0644]
layouts/community/ortho_4x12/symbolic/README.md
layouts/community/ortho_4x12/symbolic/config.h
layouts/community/ortho_4x12/symbolic/keymap.c
quantum/audio/audio.c
quantum/audio/audio_arm.c
quantum/audio/audio_pwm.c
quantum/debounce/debounce_eager_pk.c [deleted file]
quantum/debounce/debounce_sym_g.c [deleted file]
quantum/debounce/eager_pk.c [new file with mode: 0644]
quantum/debounce/readme.md
quantum/debounce/sym_g.c [new file with mode: 0644]
show_options.mk
users/cbbrowne/cbbrowne.c [new file with mode: 0644]
users/cbbrowne/cbbrowne.h [new file with mode: 0644]
users/cbbrowne/rules.mk [new file with mode: 0644]
users/stanrc85/config.h
users/stanrc85/layer_rgb.c [new file with mode: 0644]
users/stanrc85/rules.mk

index f5bef3d5dd68b80b1f696c145155bd1f05cb6d3c..20c38ae82e50986e68c501b32082ada446779509 100644 (file)
@@ -298,19 +298,11 @@ ifneq ($(strip $(CUSTOM_MATRIX)), yes)
 endif
 
 DEBOUNCE_DIR:= $(QUANTUM_DIR)/debounce
-# Debounce Modules. If implemented in matrix.c, don't use these.
+# Debounce Modules. Set DEBOUNCE_TYPE=custom if including one manually.
 DEBOUNCE_TYPE?= sym_g
-VALID_DEBOUNCE_TYPES := sym_g eager_pk custom
-ifeq ($(filter $(DEBOUNCE_TYPE),$(VALID_DEBOUNCE_TYPES)),)
-    $(error DEBOUNCE_TYPE="$(DEBOUNCE_TYPE)" is not a valid debounce algorithm)
+ifneq ($(strip $(DEBOUNCE_TYPE)), custom)
+    QUANTUM_SRC += $(DEBOUNCE_DIR)/$(strip $(DEBOUNCE_TYPE)).c
 endif
-ifeq ($(strip $(DEBOUNCE_TYPE)), sym_g)
-    QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_sym_g.c
-else ifeq ($(strip $(DEBOUNCE_TYPE)), eager_pk)
-    QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_eager_pk.c
-endif
-
-
 
 ifeq ($(strip $(SPLIT_KEYBOARD)), yes)
     OPT_DEFS += -DSPLIT_KEYBOARD
index 09ea9e6e7967cd2679d850e901af09abc9475c0b..35936df00d13bbc8066605a0c5eb49d435ca89d0 100644 (file)
@@ -60,6 +60,7 @@
   * [Key Lock](feature_key_lock.md)
   * [Layouts](feature_layouts.md)
   * [Leader Key](feature_leader_key.md)
+  * [LED Matrix](feature_led_matrix.md)
   * [Macros](feature_macros.md)
   * [Mouse Keys](feature_mouse_keys.md)
   * [One Shot Keys](feature_advanced_keycodes.md#one-shot-keys)
index 8fa6e944f067704d49333edf806121e74075eb76..336feee8fd80e1e91eee8df873e424009bb8b612 100644 (file)
@@ -307,8 +307,8 @@ Use these to enable or disable building certain features. The more you have enab
   * Enables split keyboard support (dual MCU like the let's split and bakingpy's boards) and includes all necessary files located at quantum/split_common
 * `CUSTOM_MATRIX`
   * Allows replacing the standard matrix scanning routine with a custom one.
-* `CUSTOM_DEBOUNCE`
-  * Allows replacing the standard key debouncing routine with a custom one.
+* `DEBOUNCE_TYPE`
+  * Allows replacing the standard key debouncing routine with an alternative or custom one.
 * `WAIT_FOR_USB`
   * Forces the keyboard to wait for a USB connection to be established before it starts up
 * `NO_USB_STARTUP_CHECK`
index cc84e141f928d02b22062b1d485718e80a567c28..f291fc2d2141fe45e9aaeb80417ce95162d6827f 100644 (file)
@@ -321,7 +321,7 @@ uint32_t layer_state_set_user(uint32_t state) {
 ```
 ### `layer_state_set_*` Function Documentation
 
-* Keyboard/Revision: `void uint32_t layer_state_set_kb(uint32_t state)`
+* Keyboard/Revision: `uint32_t layer_state_set_kb(uint32_t state)`
 * Keymap: `uint32_t layer_state_set_user(uint32_t state)`
 
 The `state` is the bitmask of the active layers, as explained in the [Keymap Overview](keymap.md#keymap-layer-status)
index 82b3d7de1237cce25b48e9aeebbb80df2aa8b17f..5d4343f08b9b559b9ebb5e72f35de2953e0632bc 100644 (file)
@@ -2,45 +2,38 @@
 
 QMK supports multiple debounce algorithms through its debounce API.
 
-The underlying debounce algorithm is determined by which matrix.c file you are using.
-
 The logic for which debounce method called is below. It checks various defines that you have set in rules.mk
 
 ```
+DEBOUNCE_DIR:= $(QUANTUM_DIR)/debounce
 DEBOUNCE_TYPE?= sym_g
-VALID_DEBOUNCE_TYPES := sym_g eager_pk custom
-ifeq ($(filter $(DEBOUNCE_TYPE),$(VALID_DEBOUNCE_TYPES)),)
-    $(error DEBOUNCE_TYPE="$(DEBOUNCE_TYPE)" is not a valid debounce algorithm)
-endif
-ifeq ($(strip $(DEBOUNCE_TYPE)), sym_g)
-    QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_sym_g.c
-else ifeq ($(strip $(DEBOUNCE_TYPE)), eager_pk)
-    QUANTUM_SRC += $(DEBOUNCE_DIR)/debounce_eager_pk.c
+ifneq ($(strip $(DEBOUNCE_TYPE)), custom)
+    QUANTUM_SRC += $(DEBOUNCE_DIR)/$(strip $(DEBOUNCE_TYPE)).c
 endif
 ```
 
 # Debounce selection
 
-| DEBOUNCE_ALGO    | Description                                                 | What to do                    |
-| -------------    | ---------------------------------------------------         | ----------------------------- |
-| Not defined      | You are using the included matrix.c and debounce.c          | Nothing. Debounce_sym_g will be compiled, and used if necessary |
-| custom           | Use your own debounce.c                                     | ```SRC += debounce.c``` add your own debounce.c and implement necessary functions |
-| sym_g / eager_pk | You are using the included matrix.c and debounce.c          | Use an alternative debounce algorithm |
+| DEBOUNCE_TYPE    | Description                                          | What else is needed           |
+| -------------    | ---------------------------------------------------  | ----------------------------- |
+| Not defined      | Use the default algorithm, currently sym_g           | Nothing                       |
+| custom           | Use your own debounce.c                              | ```SRC += debounce.c``` add your own debounce.c and implement necessary functions |
+| anything_else    | Use another algorithm from quantum/debounce/*        | Nothing                       |
 
-**Regarding split keyboards**: 
+**Regarding split keyboards**:
 The debounce code is compatible with split keyboards.
 
 # Use your own debouncing code
 * Set ```DEBOUNCE_TYPE = custom ```.
 * Add ```SRC += debounce.c```
-* Add your own ```debounce.c```. Look at included ```debounce_sym_g.c```s for sample implementations.
+* Add your own ```debounce.c```. Look at current implementations in ```quantum/debounce``` for examples.
 * Debouncing occurs after every raw matrix scan.
 * Use num_rows rather than MATRIX_ROWS, so that split keyboards are supported correctly.
 
 # Changing between included debouncing methods
 You can either use your own code, by including your own debounce.c, or switch to another included one.
 Included debounce methods are:
-* debounce_eager_pk - debouncing per key. On any state change, response is immediate, followed by ```DEBOUNCE_DELAY``` millseconds of no further input for that key
-* debounce_sym_g - debouncing per keyboard. On any state change, a global timer is set. When ```DEBOUNCE_DELAY``` milliseconds of no changes has occured, all input changes are pushed.
+* eager_pk - debouncing per key. On any state change, response is immediate, followed by ```DEBOUNCE_DELAY``` millseconds of no further input for that key
+* sym_g - debouncing per keyboard. On any state change, a global timer is set. When ```DEBOUNCE_DELAY``` milliseconds of no changes has occured, all input changes are pushed.
 
 
index 9030500a2bb1383ad1573d6445ace589eaf5b6df..014d6ef107bde933b119e5b205987c36bf23d914 100644 (file)
@@ -17,6 +17,7 @@ QMK has a staggering number of features for building your keyboard. It can take
 * [Key Lock](feature_key_lock.md) - Lock a key in the "down" state.
 * [Layouts](feature_layouts.md) - Use one keymap with any keyboard that supports your layout.
 * [Leader Key](feature_leader_key.md) - Tap the leader key followed by a sequence to trigger custom behavior.
+* [LED Matrix](feature_led_matrix.md) - LED Matrix single color lights for per key lighting (Single Color, not RGB).
 * [Macros](feature_macros.md) - Send multiple key presses when pressing only one physical key.
 * [Mouse keys](feature_mouse_keys.md) - Control your mouse pointer from your keyboard.
 * [One Shot Keys](feature_advanced_keycodes.md#one-shot-keys) - Sticky Keys, lets hit a key rather than holding it.
index bb7e1e7e3b6f534516c0d00b31cdc39446aa0379..75eafd42ccca52cdb1f2c1c7b017f54b9cfa973f 100644 (file)
@@ -143,9 +143,9 @@ As there is no standard split communication driver for ARM-based split keyboards
 
 Lets you replace the default matrix scanning routine with your own code. You will need to provide your own implementations of matrix_init() and matrix_scan().
 
-`CUSTOM_DEBOUNCE`
+`DEBOUNCE_TYPE`
 
-Lets you replace the default key debouncing routine with your own code. You will need to provide your own implementation of debounce().
+Lets you replace the default key debouncing routine with an alternative one. If `custom` you will need to provide your own implementation.
 
 ## Customizing Makefile Options on a Per-Keymap Basis
 
index 697a508052117cdd4612de67c03514510b7a0311..d2cba770e27fe9c138f90a1af06efcc4ed122a64 100644 (file)
@@ -196,7 +196,7 @@ If you're more of a visual learner, or want some additional tips and something m
 
 From here, you should have a working keyboard once you program a firmware. Before we attach the Teensy permanently to the keyboard, let's quickly get some firmware loaded onto the Teensy so we can test each keyswitch.
 
-To start out, download [the firmware](https://github.com/qmk/qmk_firmware/) - we'll be using my (Jack's) fork of TMK called QMK/Quantum. We'll be doing a lot from the Terminal/command prompt, so get that open, along with a decent text editor like [Sublime Text](http://www.sublimetext.com/).
+To start out, download [the firmware](https://github.com/qmk/qmk_firmware/) - we'll be using my (Jack's) fork of TMK called QMK/Quantum. We'll be doing a lot from the Terminal/command prompt, so get that open, along with a decent text editor like [Sublime Text](http://www.sublimetext.com/) (paid) or [Visual Studio Code](https://code.visualstudio.com) (free).
 
 The first thing we're going to do is create a new project using the script in the root directory of the firmware. In your terminal, run this command with `<project_name>` replaced by the name of your project - it'll need to be different from any other project in the `keyboards/` folder:
 
index cb7f29b25613f48e04b12d9a15209c3211609fb9..6d722ae6ee86bcc2067ae2e88e356356f1960ddf 100644 (file)
@@ -2,10 +2,12 @@
     "keyboard_name": "foobar",
     "url": "",
     "maintainer": "qmk",
-    "width": 6,
-    "height": 2,
+    "width": 10,
+    "height": 3,
     "layouts": {
         "LAYOUT_macro": {
+            "width": 5,
+            "height": 3,
             "key_count": 15,
             "layout": [
               {"x":0, "y":0}, {"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0},
index 9ed9d6239b78f11ab180473ac1ed0419d8a02ef8..aac02c6c11f70c693bdb5fa1f40b453592dea4fe 100644 (file)
 # Overview
 
-A Balance 12 layout for the Atreus keyboard.
+This layout is based on Balance Twelve (mirror variant) by Sasha Viminitz. Please see [this page](https://mathematicalmulticore.wordpress.com/the-keyboard-layout-project/) 
+for more information. It's designed for left-handers who use their right hand for the mouse.
 
-Balance 12 was created by Sasha Viminitz. Please see [this page](https://mathematicalmulticore.wordpress.com/the-keyboard-layout-project/)
-for some background on the design of the layout.
+## To build
 
-* The variant used here is a mirror of the original for left-handers
-* The central column of punctuation keys has been moved elsewhere
-* Home positions for the left and right forefingers are *T* and *A* respectively
+```
+sudo make atreus:yttyx
+```
 
-## To build/flash
+## To flash (example)
 
-> make atreus:yttyx:avrdude
+```
+sudo avrdude -p atmega32u4 -c avr109 -U flash:w:atreus_yttyx.hex -P /dev/ttyACM0
+```
 
 ## Layers
 
 ### Base:
 
-      .----------------------------------.         .------------------------------.
-      | P    | L    | C    | D   | W     |         | U    | O   | Y   | K   | Q   |
-      +------+------+------+-----+-------|         |------+-----+-----+-----+-----|
-      | N    | R    | S    | T   | M     |         | A    | E   | I   | H   | V   |
-      +------+------+------+-----+-------|         |------+-----+-----+-----+-----|
-      | Z    | J    | F    | G   | B     |         | ,    | .   | ;   | X   | -   |
-      +------+------+------+-----+-------+---------+------+-----+-----+-----+-----|
-      | Shft | Ctl  | Alt  | BS  | Space | L1 | R1 | Shft | R2  | Win | Ctl | Alt |
-      '---------------------------------------------------------------------------'
-
-### L1:
-
-      .---------------------------------.         .--------------------------------.
-      | 1    | 2    | 3    | 4  | 5     |         | 6    | 7  | 8   | 9    | 0     |
-      |------+------+------+----+-------|         |------+----+-----+------+-------|
-      | Tab  | ?    | =    | -  | _     |         | '    | "  | +   | *    | Enter |
-      |------+------+------+----+-------|         |------+----+-----+------+-------|
-      | Esc  | !    | &    |    |       |         | ,    | .  | ;   |      | -     |
-      |------+------+------+----+-------+---------+------+----+-----+------+-------|
-      | Shft | Ctrl | Alt  | Bk | Space | L1 | R1 | Shft | R2 | Sup | Ctrl | Alt   |
-      '----------------------------------------------------------------------------'
-
-### R1:
-
-      .---------------------------------.         .-------------------------------.
-      | <    | >    | {   | }   | @     |         | $    | £  |     |      | R3   |
-      +------+------+-----+-----|-------|         |------+----+-----+------+------|
-      | [    | ]    | (   | )   | #     |         | '    | "  | ~   | `    | Caps |
-      |------+------+-----+-----+-------|         |------+----+-----+------+------|
-      | /    | \    | ^   | |   | %     |         | ,    | .  | ;   |      | PScn |
-      |------+------+-----+-----+-------+---------+------+----+-----+------+------|
-      | Shft | Ctrl | Alt | Del | Space | L1 | R1 | Shft | R2 | Sup | Ctrl | Alt  |
-      '---------------------------------------------------------------------------'
-
-### R2:
-
-      .-----------------------------------.         .--------------------.-----------------.
-      | F12  | F11  | F10  | F9   | Copy  |         | Home | Up   | End  | PgUp | Insert   |
-      |------+------+------+------+-------|         |------+------+------+------+----------|
-      | F8   | F7   | F6   | F5   | Paste |         | Left | Down | Right| PgDn | Enter    |
-      |------+------+------+------+-------|         |------+------+------+------+----------|
-      | F4   | F3   | F2   | F1   | Cut   |         | ^Tab |      | Tab  |      |          |
-      |------+------+------+------+-------+---------+------+------+------+------+----------|
-      | Shft | Ctrl | Alt  | Del  | Undo  | L1 | R1 | Shft | R2   | Sup  | Ctrl | WinRight |
-      '------------------------------------------------------------------------------------'
-
-### R3:
-
-      .----------------------------.         .------------------------.
-      | RESET |    |     |    |    |         |    |    |    |    | R3 |
-      |-------+----+-----+----+----|         |----+----+----+----+----|
-      |       |    |     |    |    |         |    |    |    |    |    |
-      |-------+----+-----+----+----|         |----+----+----+----+----|
-      |       |    |     |    |    |         |    |    |    |    |    |
-      |-------+----+-----+----+----+---------+----+----+----+----+----|
-      |       |    |     |    |    |    |    |    |    |    |    |    |
-      '---------------------------------------------------------------'
-
+    .--------.-------.-------.-------.--------.                           .-------.-------.-------.-------.------.
+    | P      | L     | C     | D     | W      |                           | U     | O     | Y     | K     | Q    |
+    |--------+-------+-------+-------+--------|                           |-------+-------+-------+-------+------|
+    | N      | R     | S     | T     | M      |                           | A     | E     | I     | H     | V    |
+    |--------+-------+-------+-------+--------|                           |-------+-------+-------+-------+------|
+    | Z Sft  | J Ctl | F Alt | G     | B      |                           | ,     | . Alt | ; Ctl | X Sft | Sup  |
+    '--------'-------'-------+-------+--------+-----.               .-----+-------+-------+-------'-------'------'
+                             | BS P1 | Spc P2 | P3  |               |     | Sft   |       |
+                             '-------'--------'-----'               '-----'-------'-------'
+
+### P1: Punctuation (1)
+
+
+    .--------.-------.-------.-------.-------.                              .------.-------.-------.-------.------.
+    | Esc    |       |       |       | RS    |                              | |    | /     | ^     | £     |  ~   |
+    |--------+-------+-------+-------+-------|                              |------+-------+-------+-------+------|
+    | Tab    |       |       |       |       |                              | &    | \     | `     | $     | Ent  |
+    |--------+-------+-------+-------+-------|                              |------+-------+-------+-------+------|
+    | Sft    | Ctl   | Alt   | Del   |       |                              | %    | Alt   | Ctl   | Sft   | Sup  |
+    '--------'-------'-------+-------+-------+-----.                  .-----+------+-------+-------'-------'------'
+                             | P1    |       |     |                  |     | Sft  |       |
+                             '-------'-------'-----'                  '-----'------'-------'
+
+### P2: Punctuation (2)
+
+    .-------.-------.-------.-------.-------.                               .-------.-------.-------.-------.------.
+    | Esc   |       | NC    | FV    |       |                               | (     | )     | "     | ?     |      |
+    |-------+-------+-------+-------+-------|                               |-------+-------+-------+-------+------|
+    | Tab   | Ctl-X | Ctl-C | Ctl-V | Ctl-Z |                               | {     | }     | '     | !     | Ent  |
+    |-------+-------+-------+-------+-------|                               |-------+-------+-------+-------+------|
+    | Sft   | Ctl   | Alt   | Del   | Ent   |                               | #     | Alt   | Ctl   | Sft   | Sup  |
+    '-------'-------'-------+-------+-------+-----.                   .-----+-------+-------+-------'-------'------'
+                            | BS    | P2    |     |                   |     | Sft   |       |
+                            '-------'-------'-----'                   '-----'-------'-------'
+
+### P3: Punctuation (3)
+
+    .-------.-------.-------.-------.-------.                             .------.-------.-------.-------.------.
+    | Esc   |       | Break | Pscr  | ScLk  |                             | <    | >     | +     | _     | =    |
+    |-------+-------+-------+-------+-------|                             |------+-------+-------+-------+------|
+    | Tab   |       |       | Caps  |       |                             | [    | ]     | *     | -     | Ent  |
+    |-------+-------+-------+-------+-------|                             |------+-------+-------+-------+------|
+    | Sft   | Ctl   | Alt   | Del   |       |                             | @    | Alt   | Ctl   | Sft   | Sup  |
+    '-------'-------'-------+-------+-------+-----.                 .-----+------+-------+-------'-------'------'
+                            | BS    |       | P3  |                 |     | Sft  |       |
+                            '-------'-------'-----'                 '-----'------'-------'
+
+### Numerals / Cursor control
+
+    .-------.-------.-------.------.-------.                              .------.-------.-------.------.------.
+    | 1     | 2     | 3     | 4    | 5     |                              | Home | Up    | End   | PgUp |      |
+    |-------+-------+-------+------+-------|                              |------+-------+-------+------+------|
+    | 6     | 7     | 8     | 9    | 0     |                              | Left | Down  | Right | PgDn |      |
+    |-------+-------+-------+------+-------|                              |------+-------+-------+------+------|
+    | Sft   | Ctl   | Alt   | Del  | .     |                              | Ins  | Alt   | Ctl   | Sft  | Sup  |
+    '-------'-------'-------+------+-------+-----.                  .-----+------+-------+-------'------'------'
+                            | BS   | BA    |     |                  |     | Sft  |       |
+                            '------'-------'-----'                  '-----'------'-------'
+
+### FV: Function keys / Cursor control (Vim)
+
+    .-------.------.-------.-----.-------.                                .------.-------.-----.-------.------.
+    | F1    | F2   | F3    | F4  | F5    |                                | 0    | K     | $   | Ctl-B |      |
+    |-------+------+-------+-----+-------|                                |------+-------+-----+-------+------|
+    | F6    | F7   | F8    | F9  | F10   |                                | H    | J     | L   | Ctl-F |      |
+    |-------+------+-------+-----+-------|                                |------+-------+-----+-------+------|
+    | Sft   | Ctl  | Alt   | F11 | F12   |                                |      | Alt   | Ctl | Sft   | Sup  |
+    '-------'------'-------+-----+-------+-----.                    .-----+------+-------+-----'-------'------'
+                           | BS  | BA    |     |                    |     | Sft  |       |
+                           '-----'-------'-----'                    '-----'------'-------'
+
+### RS: Reset
+
+    .-------.------.-------.-----.-------.                                .------.-------.-----.-------.------.
+    | RESET |      |       |     |       |                                |      |       |     |       |      |
+    |-------+------+-------+-----+-------|                                |------+-------+-----+-------+------|
+    |       |      |       |     |       |                                |      |       |     |       |      |
+    |-------+------+-------+-----+-------|                                |------+-------+-----+-------+------|
+    |       |      |       |     |       |                                |      |       |     |       |      |
+    '-------'------'-------+-----+-------+-----.                    .-----+------+-------+-----'-------'------'
+                           |     | BA    |     |                    |     |      |       |
+                           '-----'-------'-----'                    '-----'------'-------'
index 68e0225e0087be770cdff968d42f15df23513137..b9e113ec0bb48b5c1cf7874917e7a58d92526f86 100644 (file)
@@ -1,12 +1,4 @@
-#ifndef CONFIG_H
-#define CONFIG_H
-
-#define ONESHOT_TIMEOUT       500   // Time (in ms) before the one shot key is released
-
-// Disable some options to reduce firmware size
-#define NO_PRINT
-#define NO_ACTION_TAPPING
+#pragma once
+#define NO_ACTION_ONESHOT
 #define NO_ACTION_MACRO
 #define NO_ACTION_FUNCTION
-
-#endif
index 210bfd36bae74b1412346092d81bc81345c50b01..dad36cad9288565fc6ee219b69c43204be53f46b 100644 (file)
 #include QMK_KEYBOARD_H
 
 enum layers {
-  BASE,         // Balance Twelve
-  L1,           // (momentary)
-  R1,           // (momentary)
-  R2,           // (momentary)
-  R3            // (momentary)
+  BA,           // Base (Balance Twelve mirror variant)
+  P1,           // Punctuation (1)
+  P2,           // Punctuation (2)
+  P3,           // Punctuation (2)
+  NC,           // Numerals / Cursor control
+  FV,           // Function keys / Cursor control (Vim)
+  RS            // Reset
 };
 
-// Aliases from replicaJunction's atreus layout
-#define KCX_LST   LSFT(KC_TAB)
-#define KX_COPY   LCTL(KC_C)
-#define KX_CUT    LCTL(KC_X)
-#define KX_PAST   LCTL(KC_V)
-#define KX_UNDO   LCTL(KC_Z)
+// Abbreviations - base
+#define KX_P1_BSPC      LT(P1, KC_BSPC)
+#define KX_P2_SPC       LT(P2, KC_SPC)
 
-#define KX_AT     LSFT(KC_QUOT)
-#define KX_PIPE   LSFT(KC_NUBS)
-#define KX_WINR   LSFT(LGUI(KC_RGHT))   // Move window to next monitor (Windows)
+#define KX_SFT_Z        MT(MOD_LSFT, KC_Z)
+#define KX_CTL_J        MT(MOD_LCTL, KC_J)
+#define KX_ALT_F        MT(MOD_LALT, KC_F)
 
+#define KX_ALT_DOT      MT(MOD_LALT, KC_DOT)
+#define KX_CTL_SCLN     MT(MOD_LCTL, KC_SCLN)
+#define KX_SFT_X        MT(MOD_LSFT, KC_X)
 
+#define KX_AT           LSFT(KC_QUOT)
+#define KX_DQUOT        LSFT(KC_2)
+#define KX_PIPE         LSFT(KC_NUBS)
+#define KX_TILDA        LSFT(KC_NUHS)
+
 const uint16_t PROGMEM keymaps[][ MATRIX_ROWS ][ MATRIX_COLS ] = {
+  /*
+    .--------.-------.-------.-------.--------.                           .-------.-------.-------.-------.------.
+    | P      | L     | C     | D     | W      |                           | U     | O     | Y     | K     | Q    |
+    |--------+-------+-------+-------+--------|                           |-------+-------+-------+-------+------|
+    | N      | R     | S     | T     | M      |                           | A     | E     | I     | H     | V    |
+    |--------+-------+-------+-------+--------|                           |-------+-------+-------+-------+------|
+    | Z Sft  | J Ctl | F Alt | G     | B      |                           | ,     | . Alt | ; Ctl | X Sft | Sup  |
+    '--------'-------'-------+-------+--------+-----.               .-----+-------+-------+-------'-------'------'
+                             | BS P1 | Spc P2 | P3  |               |     | Sft   |       |
+                             '-------'--------'-----'               '-----'-------'-------'
+  */                                                               
+  [BA] = LAYOUT(                                                   
+    KC_P,     KC_L,     KC_C,     KC_D,       KC_W,                          KC_U,    KC_O,       KC_Y,        KC_K,     KC_Q,
+    KC_N,     KC_R,     KC_S,     KC_T,       KC_M,                          KC_A,    KC_E,       KC_I,        KC_H,     KC_V,
+    KX_SFT_Z, KX_CTL_J, KX_ALT_F, KC_G,       KC_B,                          KC_COMM, KX_ALT_DOT, KX_CTL_SCLN, KX_SFT_X, KC_LGUI,
+    XXXXXXX,  XXXXXXX,  XXXXXXX,  KX_P1_BSPC, KX_P2_SPC, MO(P3),    XXXXXXX, KC_RSFT, XXXXXXX,    XXXXXXX,     XXXXXXX,  XXXXXXX
+  ),
+
+  /* P1: Punctuation (1)
+    .--------.-------.-------.-------.-------.                              .------.-------.-------.-------.------.
+    | Esc    |       |       |       | RS    |                              | |    | /     | ^     | £     |  ~   |
+    |--------+-------+-------+-------+-------|                              |------+-------+-------+-------+------|
+    | Tab    |       |       |       |       |                              | &    | \     | `     | $     | Ent  |
+    |--------+-------+-------+-------+-------|                              |------+-------+-------+-------+------|
+    | Sft    | Ctl   | Alt   | Del   |       |                              | %    | Alt   | Ctl   | Sft   | Sup  |
+    '--------'-------'-------+-------+-------+-----.                  .-----+------+-------+-------'-------'------'
+                             | P1    |       |     |                  |     | Sft  |       |
+                             '-------'-------'-----'                  '-----'------'-------'
+  */
+  [P1] = LAYOUT(
+    KC_ESC,  XXXXXXX,    XXXXXXX,    XXXXXXX,  TO(RS),                         KX_PIPE, KC_SLSH, KC_CIRC, KC_HASH, KX_TILDA,  
+    KC_TAB,  XXXXXXX,    XXXXXXX,    XXXXXXX,  XXXXXXX,                        KC_AMPR, KC_NUBS, KC_GRV,  KC_DLR,  KC_ENT,
+    KC_LSFT, KC_LCTL,    KC_LALT,    KC_DEL,   XXXXXXX,                        KC_PERC, KC_LALT, KC_LCTL, KC_LSFT, _______,
+    XXXXXXX, XXXXXXX,    XXXXXXX,    _______,  XXXXXXX, XXXXXXX,      XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+  ),
 
/* Balance Twelve mirror variant (left-handed)
-  .--------------------------------.         .------------------------------.
-  | P    | L    | C   | D  | W     |         | U    | O  | Y   | K    | Q   |
-  +------+------+-----+----+-------|         |------+----+-----+------+-----|
-  | N    | R    | S   | T  | M     |         | A    | E  | I   | H    | V   |
-  +------+------+-----+----+-------|         |------+----+-----+------+-----|
-  | Z    | J    | F   | G  | B     |         | ,    | .  | ;   | X    | -   |
-  +------+------+-----+----+-------+---------+------+----+-----+------+-----|
-  | Shft | Ctrl | Alt | Bk | Space | L1 | R1 | Shft | R2 | Win | Ctrl | Alt |
-  '-------------------------------------------------------------------------'
 /* P2: Punctuation (2)
+    .-------.-------.-------.-------.-------.                               .-------.-------.-------.-------.------.
+    | Esc   |       | NC    | FV    |       |                               | (     | )     | "     | ?     |      |
+    |-------+-------+-------+-------+-------|                               |-------+-------+-------+-------+------|
+    | Tab   | Ctl-X | Ctl-C | Ctl-V | Ctl-Z |                               | {     | }     | '     | !     | Ent  |
+    |-------+-------+-------+-------+-------|                               |-------+-------+-------+-------+------|
+    | Sft   | Ctl   | Alt   | Del   | Ent   |                               | #     | Alt   | Ctl   | Sft   | Sup  |
+    '-------'-------'-------+-------+-------+-----.                   .-----+-------+-------+-------'-------'------'
+                            | BS    | P2    |     |                   |     | Sft   |       |
+                            '-------'-------'-----'                   '-----'-------'-------'
   */
-  [BASE] = LAYOUT(
-    KC_P,    KC_L,    KC_C,    KC_D,    KC_W,                   KC_U,          KC_O,   KC_Y,    KC_K,    KC_Q,
-    KC_N,    KC_R,    KC_S,    KC_T,    KC_M,                   KC_A,          KC_E,   KC_I,    KC_H,    KC_V,
-    KC_Z,    KC_J,    KC_F,    KC_G,    KC_B,                   KC_COMM,       KC_DOT, KC_SCLN, KC_X,    KC_MINS,
-    KC_LSFT, KC_LCTL, KC_LALT, KC_BSPC, KC_SPC, MO(L1), MO(R1), OSM(MOD_LSFT), MO(R2), KC_LWIN, KC_RCTL, KC_RALT
+  [P2] = LAYOUT(
+    KC_ESC,  XXXXXXX,    TO(NC),     TO(FV),     XXXXXXX,                      KC_LPRN, KC_RPRN, KX_DQUOT, KC_QUES, XXXXXXX,
+    KC_TAB,  LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), LCTL(KC_Z),                   KC_LCBR, KC_RCBR, KC_QUOT,  KC_EXLM, KC_ENT,
+    KC_LSFT, KC_LCTL,    KC_LALT,    KC_DEL,     KC_ENT,                       KC_NUHS, KC_LALT, KC_LCTL,  KC_LSFT, _______,
+    XXXXXXX, XXXXXXX,    XXXXXXX,    KC_BSPC,    _______,    XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX,  XXXXXXX, XXXXXXX
   ),
 
- /* L1
-  .---------------------------------.         .--------------------------------.
-  | 1    | 2    | 3    | 4  | 5     |         | 6    | 7  | 8   | 9    | 0     |
-  |------+------+------+----+-------|         |------+----+-----+------+-------|
-  | Tab  | ?    | =    | -  | _     |         | '    | "  | +   | *    | Enter |
-  |------+------+------+----+-------|         |------+----+-----+------+-------|
-  | Esc  | !    | &    |    |       |         | ,    | .  | ;   |      | -     |
-  |------+------+------+----+-------+---------+------+----+-----+------+-------|
-  | Shft | Ctrl | Alt  | Bk | Space | L1 | R1 | Shft | R2 | Sup | Ctrl | Alt   |
-  '----------------------------------------------------------------------------'
+  /* P3: Punctuation (3)
+    .-------.-------.-------.-------.-------.                             .------.-------.-------.-------.------.
+    | Esc   |       | Break | Pscr  | ScLk  |                             | <    | >     | +     | _     | =    |
+    |-------+-------+-------+-------+-------|                             |------+-------+-------+-------+------|
+    | Tab   |       |       | Caps  |       |                             | [    | ]     | *     | -     | Ent  |
+    |-------+-------+-------+-------+-------|                             |------+-------+-------+-------+------|
+    | Sft   | Ctl   | Alt   | Del   |       |                             | @    | Alt   | Ctl   | Sft   | Sup  |
+    '-------'-------'-------+-------+-------+-----.                 .-----+------+-------+-------'-------'------'
+                            | BS    |       | P3  |                 |     | Sft  |       |
+                            '-------'-------'-----'                 '-----'------'-------'
   */
-  [L1] = LAYOUT(
-    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                      KC_6,    KC_7,       KC_8,    KC_9,    KC_0,
-    KC_TAB,  KC_QUES, KC_EQL,  KC_MINS, KC_UNDS,                   KC_QUOT, LSFT(KC_2), KC_PLUS, KC_ASTR, KC_ENT,
-    KC_ESC,  KC_EXLM, KC_AMPR, XXXXXXX, XXXXXXX,                   _______, _______,    _______, XXXXXXX, _______,
-    _______, _______, _______, _______, _______, _______, _______, _______, _______,    _______, _______, _______
+  [P3] = LAYOUT(
+    KC_ESC,  XXXXXXX, KC_BRK,  KC_PSCR, KC_SLCK,                             KC_LABK, KC_RABK, KC_PLUS, KC_UNDS, KC_EQL,
+    KC_TAB,  XXXXXXX, XXXXXXX, KC_CAPS, XXXXXXX,                             KC_LBRC, KC_RBRC, KC_ASTR, KC_MINS, KC_ENT,
+    KC_LSFT, KC_LCTL, KC_LALT, KC_DEL,  XXXXXXX,                             KX_AT,   KC_LALT, KC_LCTL, KC_LSFT, _______,
+    XXXXXXX, XXXXXXX, XXXXXXX, KC_BSPC, XXXXXXX, _______,           XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
   ),
 
- /* R1
-  .---------------------------------.         .-------------------------------.
-  | <    | >    | {   | }   | @     |         | $    | £  |     |      | R3   |
-  +------+------+-----+-----|-------|         |------+----+-----+------+------|
-  | [    | ]    | (   | )   | #     |         | '    | "  | ~   | `    | Caps |
-  |------+------+-----+-----+-------|         |------+----+-----+------+------|
-  | /    | \    | ^   | |   | %     |         | ,    | .  | ;   |      | PScn |
-  |------+------+-----+-----+-------+---------+------+----+-----+------+------|
-  | Shft | Ctrl | Alt | Del | Space | L1 | R1 | Shft | R2 | Sup | Ctrl | Alt  |
-  '---------------------------------------------------------------------------'
+  /* NC: Numerals / Cursor control
+    .-------.-------.-------.------.-------.                              .------.-------.-------.------.------.
+    | 1     | 2     | 3     | 4    | 5     |                              | Home | Up    | End   | PgUp |      |
+    |-------+-------+-------+------+-------|                              |------+-------+-------+------+------|
+    | 6     | 7     | 8     | 9    | 0     |                              | Left | Down  | Right | PgDn |      |
+    |-------+-------+-------+------+-------|                              |------+-------+-------+------+------|
+    | Sft   | Ctl   | Alt   | Del  | .     |                              | Ins  | Alt   | Ctl   | Sft  | Sup  |
+    '-------'-------'-------+------+-------+-----.                  .-----+------+-------+-------'------'------'
+                            | BS   | BA    |     |                  |     | Sft  |       |
+                            '------'-------'-----'                  '-----'------'-------'
   */
-  [R1] = LAYOUT(
-    KC_LABK, KC_RABK,  KC_LCBR,  KC_RCBR, KX_AT,                     KC_DLR,  KC_HASH,    XXXXXXX,       XXXXXXX, MO(R3),
-    KC_LBRC, KC_RBRC,  KC_LPRN,  KC_RPRN, KC_NUHS,                   KC_QUOT, LSFT(KC_2), LSFT(KC_NUHS), KC_GRV,  KC_CAPS,
-    KC_SLSH, KC_NUBS,  KC_CIRC,  KX_PIPE, KC_PERC,                   _______, _______,    _______,       XXXXXXX, KC_PSCR,
-    _______, _______,  _______,  KC_DEL,  _______, _______, _______, _______, _______,    _______,       _______, _______
+  [NC] = LAYOUT(
+    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                                KC_HOME, KC_UP,   KC_END,  KC_PGUP, XXXXXXX,
+    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,                                KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, XXXXXXX,
+    KC_LSFT, KC_LCTL, KC_LALT, KC_DEL,  KC_DOT,                              KC_INS,  KC_LALT, KC_LCTL, KC_LSFT, _______,
+    XXXXXXX, XXXXXXX, XXXXXXX, KC_BSPC, TO(BA), XXXXXXX,            XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
   ),
 
- /* R2
-  .-----------------------------------.         .--------------------.-----------------.
-  | F12  | F11  | F10  | F9   | Copy  |         | Home | Up   | End  | PgUp | Insert   |
-  |------+------+------+------+-------|         |------+------+------+------+----------|
-  | F8   | F7   | F6   | F5   | Paste |         | Left | Down | Right| PgDn | Enter    |
-  |------+------+------+------+-------|         |------+------+------+------+----------|
-  | F4   | F3   | F2   | F1   | Cut   |         | ^Tab |      | Tab  |      |          |
-  |------+------+------+------+-------+---------+------+------+------+------+----------|
-  | Shft | Ctrl | Alt  | Del  | Undo  | L1 | R1 | Shft | R2   | Sup  | Ctrl | WinRight |
-  '------------------------------------------------------------------------------------'
+  /* FV: Function keys / Cursor control (Vim)
+    .-------.------.-------.-----.-------.                                .------.-------.-----.-------.------.
+    | F1    | F2   | F3    | F4  | F5    |                                | 0    | K     | $   | Ctl-B |      |
+    |-------+------+-------+-----+-------|                                |------+-------+-----+-------+------|
+    | F6    | F7   | F8    | F9  | F10   |                                | H    | J     | L   | Ctl-F |      |
+    |-------+------+-------+-----+-------|                                |------+-------+-----+-------+------|
+    | Sft   | Ctl  | Alt   | F11 | F12   |                                |      | Alt   | Ctl | Sft   | Sup  |
+    '-------'------'-------+-----+-------+-----.                    .-----+------+-------+-----'-------'------'
+                           | BS  | BA    |     |                    |     | Sft  |       |
+                           '-----'-------'-----'                    '-----'------'-------'
   */
-  [R2] = LAYOUT(
-    KC_F12,  KC_F11,  KC_F10,  KC_F9,  KX_COPY,                   KC_HOME, KC_UP,   KC_END,  KC_PGUP, KC_INS, 
-    KC_F8,   KC_F7,   KC_F6,   KC_F5,  KX_PAST,                   KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_ENT,
-    KC_F4,   KC_F3,   KC_F2,   KC_F1,  KX_CUT,                    KCX_LST, XXXXXXX, KC_TAB,  XXXXXXX, XXXXXXX, 
-    _______, _______, _______, KC_DEL, KX_UNDO, _______, _______, _______, _______, _______, _______, KX_WINR
+  [FV] = LAYOUT(
+    KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,                               KC_0,    KC_K,    KC_DLR,   LCTL(KC_B), XXXXXXX,
+    KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,                              KC_H,    KC_J,    KC_L,     LCTL(KC_F), XXXXXXX,
+    KC_LSFT, KC_LCTL, KC_LALT, KC_F11,  KC_F12,                              XXXXXXX, KC_LALT, KC_LCTL,  KC_LSFT,    _______,
+    XXXXXXX, XXXXXXX, XXXXXXX, KC_BSPC, TO(BA), XXXXXXX,            XXXXXXX, _______, XXXXXXX, XXXXXXX,  XXXXXXX,    XXXXXXX
   ),
 
- /* R3
-  .----------------------------.         .------------------------.
-  | RESET |    |     |    |    |         |    |    |    |    | R3 |
-  |-------+----+-----+----+----|         |----+----+----+----+----|
-  |       |    |     |    |    |         |    |    |    |    |    |
-  |-------+----+-----+----+----|         |----+----+----+----+----|
-  |       |    |     |    |    |         |    |    |    |    |    |
-  |-------+----+-----+----+----+---------+----+----+----+----+----|
-  |       |    |     |    |    |    |    |    |    |    |    |    |
-  '---------------------------------------------------------------'
+ /* RS: Reset
+    .-------.------.-------.-----.-------.                                .------.-------.-----.-------.------.
+    | RESET |      |       |     |       |                                |      |       |     |       |      |
+    |-------+------+-------+-----+-------|                                |------+-------+-----+-------+------|
+    |       |      |       |     |       |                                |      |       |     |       |      |
+    |-------+------+-------+-----+-------|                                |------+-------+-----+-------+------|
+    |       |      |       |     |       |                                |      |       |     |       |      |
+    '-------'------'-------+-----+-------+-----.                    .-----+------+-------+-----'-------'------'
+                           |     | BA    |     |                    |     |      |       |
+                           '-----'-------'-----'                    '-----'------'-------'
   */
-  [R3] = LAYOUT(
-    RESET,   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
-    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
-    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, 
-    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
+  [RS] = LAYOUT(
+    RESET,   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                             XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                             XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
+    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                             XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, 
+    XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, TO(BA),  XXXXXXX,           XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
   )
 };
 
diff --git a/keyboards/converter/numeric_keypad_IIe/config.h b/keyboards/converter/numeric_keypad_IIe/config.h
new file mode 100644 (file)
index 0000000..8cf0eaa
--- /dev/null
@@ -0,0 +1,101 @@
+/*
+Copyright 2019 Adam Newbold <adam@neatnik.net>
+
+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/>.
+*/
+
+#pragma once
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID       0xFEED
+#define PRODUCT_ID      0x0000
+#define DEVICE_VER      0x0001
+#define MANUFACTURER    Apple Inc.
+#define PRODUCT         Numeric Keypad IIe
+#define DESCRIPTION     "Numeric Keypad IIe, A2M2003"
+
+/*
+
+Pin Mappings
+============
+
+Dsub-15 Connection
+------------------
+
+          Dsub-15 (female)
+    ,-------------------------.
+    \ 08 07 06 05 04 03 02 01 /
+     \ 15 14 13 12 11 10 09  /
+      `---------------------'
+
+Header Pins
+-----------
+ _____________________________________
+|                                     |
+|  11  10  9  8  7  6  5  4  3  2  1  |
+|_____________________________________|
+
+
+Header / Matrix
+---------------
+
+Pin             Name        Description                                
+--------------------------------------------------------------
+1,2,5,3,4,6     Y0-Y5       Y-direction key-matrix connections
+7               NC                                          
+9,11,10,8       X4-X7       X-direction key-matrix connections
+
+
+Microcontroller Configuration
+-----------------------------
+
+(Pins are for an Arduino Micro)
+
++-----------------------------------+
+| Dsub-15 | Header | Matrix | Micro |
+|---------+--------+--------+-------|
+|   12    |   11   |   X5   |   B0  |
+|   11    |   10   |   X6   |   D3  |
+|   10    |    9   |   X4   |   B2  |
+|    9    |    8   |   X7   |   D2  |
+|   NC    |    7   |   NC   |   --  |
+|    7    |    6   |   Y5   |   E6  |
+|    6    |    5   |   Y2   |   D4  |
+|    5    |    4   |   Y4   |   D7  |
+|    3    |    3   |   Y3   |   C6  |
+|    2    |    2   |   Y1   |   D0  |
+|    1    |    1   |   Y0   |   D1  |
++-----------------------------------+
+
+Note: Dsub-15 pins 4, 8, 13, 14, and 15 are unused
+
+Reference
+---------
+
+https://deskthority.net/wiki/Apple_Numeric_Keypad_IIe
+https://geekhack.org/index.php?topic=78048.0
+http://wiki.apple2.org/index.php?title=Pinouts#Apple_.2F.2Fe_Numeric_Keypad_connector
+
+*/
+
+#define MATRIX_ROWS 4
+#define MATRIX_COLS 6
+#define MATRIX_ROW_PINS { B0, B2, D2, D3 }
+#define MATRIX_COL_PINS { D1, D0, D4, C6, D7, E6 }
+#define UNUSED_PINS
+#define DIODE_DIRECTION COL2ROW
+#define SOFT_SERIAL_PIN D0
+#define DEBOUNCING_DELAY 5
diff --git a/keyboards/converter/numeric_keypad_IIe/info.json b/keyboards/converter/numeric_keypad_IIe/info.json
new file mode 100644 (file)
index 0000000..f199069
--- /dev/null
@@ -0,0 +1,12 @@
+{
+    "keyboard_name": "Numeric Keypad IIe", 
+    "url": "", 
+    "maintainer": "qmk", 
+    "width": 7.5, 
+    "height": 4, 
+    "layouts": {
+        "LAYOUT": {
+            "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"7", "x":2, "y":0}, {"label":"8", "x":3, "y":0}, {"label":"9", "x":4, "y":0}, {"label":"(", "x":5.5, "y":0}, {"label":")", "x":6.5, "y":0}, {"label":"\u2190", "x":0, "y":1}, {"label":"4", "x":2, "y":1}, {"label":"5", "x":3, "y":1}, {"label":"6", "x":4, "y":1}, {"label":"\u2212", "x":5.5, "y":1}, {"label":"\u00f7", "x":6.5, "y":1}, {"label":"\u2192", "x":0, "y":2}, {"label":"1", "x":2, "y":2}, {"label":"2", "x":3, "y":2}, {"label":"3", "x":4, "y":2}, {"label":"+", "x":5.5, "y":2}, {"label":"\u00d7", "x":6.5, "y":2}, {"label":"Space", "x":0, "y":3}, {"label":"0", "x":1.5, "y":3, "w":1.5}, {"label":",", "x":3, "y":3}, {"label":".", "x":4, "y":3}, {"label":"Ret", "x":5.5, "y":3}, {"label":"Print", "x":6.5, "y":3}]
+        }
+    }
+}
diff --git a/keyboards/converter/numeric_keypad_IIe/keymaps/default/config.h b/keyboards/converter/numeric_keypad_IIe/keymaps/default/config.h
new file mode 100644 (file)
index 0000000..6676689
--- /dev/null
@@ -0,0 +1,19 @@
+/* Copyright 2019 Adam Newbold <adam@neatnik.net>
+ *
+ * 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/>.
+ */
+
+#pragma once
+
+// place overrides here
diff --git a/keyboards/converter/numeric_keypad_IIe/keymaps/default/keymap.c b/keyboards/converter/numeric_keypad_IIe/keymaps/default/keymap.c
new file mode 100644 (file)
index 0000000..a8f4553
--- /dev/null
@@ -0,0 +1,62 @@
+/* Copyright 2019 Adam Newbold <adam@neatnik.net>
+ *
+ * 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 QMK_KEYBOARD_H
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+  QMKBEST = SAFE_RANGE,
+  QMKURL
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/*
+ +-------+     +-------+-------+-------+  +-------+-------+
+ |  Esc  |     |  7    |  8    |  9    |  |  (    |  )    |
+ +-------+     +-------+-------+-------+  +-------+-------+
+ |  <--  |     |  4    |  5    |  6    |  |  -    |  /    |
+ +-------+     +-------+-------+-------+  +-------+-------+
+ |  -->  |     |  1    |  2    |  3    |  |  +    |  *    |
+ +-------+  +--+-------+-------+-------+  +-------+-------+
+ | Space |  |  0       |  ,    |  .    |  |  Ret  | Print |
+ +-------+  +----------+-------+-------+  +-------+-------+
+*/
+  [0] = LAYOUT(
+    KC_ESCAPE,  KC_KP_7,  KC_KP_8,      KC_KP_9,    KC_LEFT_PAREN,  KC_RIGHT_PAREN, \
+    KC_LEFT,    KC_KP_4,  KC_KP_5,      KC_KP_6,    KC_KP_MINUS,    KC_KP_SLASH, \
+    KC_RIGHT,   KC_KP_1,  KC_KP_2,      KC_KP_3,    KC_KP_PLUS,     KC_KP_ASTERISK, \
+    KC_SPACE,   KC_KP_0,  KC_KP_COMMA,  KC_KP_DOT,  KC_RETURN,      KC_QUESTION  \
+  ),
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  return true;
+}
+
+void keyboard_post_init_user(void) {
+
+}
+
+void matrix_init_user(void) {
+
+}
+
+void matrix_scan_user(void) {
+
+}
+
+void led_set_user(uint8_t usb_led) {
+
+}
diff --git a/keyboards/converter/numeric_keypad_IIe/keymaps/default/readme.md b/keyboards/converter/numeric_keypad_IIe/keymaps/default/readme.md
new file mode 100644 (file)
index 0000000..c58b09d
--- /dev/null
@@ -0,0 +1,3 @@
+# Numeric Keypad //e Default Keymap
+
+All keys perform their default functions displayed on the stock keycaps. Note that the "Print" key presses a question mark (?), which was the default behavior on the Apple //e (with ? the shorthand for the AppleSoft BASIC PRINT command).
diff --git a/keyboards/converter/numeric_keypad_IIe/keymaps/newbold/config.h b/keyboards/converter/numeric_keypad_IIe/keymaps/newbold/config.h
new file mode 100644 (file)
index 0000000..6676689
--- /dev/null
@@ -0,0 +1,19 @@
+/* Copyright 2019 Adam Newbold <adam@neatnik.net>
+ *
+ * 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/>.
+ */
+
+#pragma once
+
+// place overrides here
diff --git a/keyboards/converter/numeric_keypad_IIe/keymaps/newbold/keymap.c b/keyboards/converter/numeric_keypad_IIe/keymaps/newbold/keymap.c
new file mode 100644 (file)
index 0000000..e0f0455
--- /dev/null
@@ -0,0 +1,68 @@
+/* Copyright 2019 Adam Newbold <adam@neatnik.net>
+ *
+ * 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 QMK_KEYBOARD_H
+
+// Defines the keycodes used by our macros in process_record_user
+enum custom_keycodes {
+  QMKBEST = SAFE_RANGE,
+  QMKURL
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/*
+ +-------+     +-------+-------+-------+  +-------+-------+
+ |  Esc  |     |  7    |  8    |  9    |  |  (    |  )    |
+ +-------+     +-------+-------+-------+  +-------+-------+
+ |  <--  |     |  4    |  5    |  6    |  |  -    |  /    |
+ +-------+     +-------+-------+-------+  +-------+-------+
+ |  -->  |     |  1    |  2    |  3    |  |  +    |  *    |
+ +-------+  +--+-------+-------+-------+  +-------+-------+
+ | Space |  |  0       |  ,    |  .    |  |  Ret  | Print |
+ +-------+  +----------+-------+-------+  +-------+-------+
+*/
+  [0] = LAYOUT(
+    KC__MUTE,     KC_KP_7,  KC_KP_8,      KC_KP_9,    KC_LEFT_PAREN,  KC_RIGHT_PAREN, \
+    KC__VOLDOWN,  KC_KP_4,  KC_KP_5,      KC_KP_6,    KC_KP_MINUS,    KC_KP_SLASH, \
+    KC__VOLUP,    KC_KP_1,  KC_KP_2,      KC_KP_3,    KC_KP_PLUS,     KC_KP_ASTERISK, \
+    MO(1),        KC_KP_0,  KC_KP_COMMA,  KC_KP_DOT,  KC_RETURN,      KC_QUESTION  \
+  ),
+  [1] = LAYOUT(
+    KC_TRNS,      KC_TRNS,  KC_TRNS,      KC_TRNS,    KC_TRNS,        KC_TRNS, \
+    KC_BRMD,      KC_TRNS,  KC_TRNS,      KC_TRNS,    KC_TRNS,        KC_TRNS, \
+    KC_BRMU,      KC_TRNS,  KC_TRNS,      KC_TRNS,    KC_TRNS,        KC_TRNS, \
+    KC_TRNS,      KC_TRNS,  KC_TRNS,      KC_TRNS,    KC_TRNS,        RESET  \
+  ),
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  return true;
+}
+
+void keyboard_post_init_user(void) {
+
+}
+
+void matrix_init_user(void) {
+
+}
+
+void matrix_scan_user(void) {
+
+}
+
+void led_set_user(uint8_t usb_led) {
+
+}
diff --git a/keyboards/converter/numeric_keypad_IIe/keymaps/newbold/readme.md b/keyboards/converter/numeric_keypad_IIe/keymaps/newbold/readme.md
new file mode 100644 (file)
index 0000000..0bccfdb
--- /dev/null
@@ -0,0 +1,28 @@
+# @newbold's layout for the Numeric Keypad IIe
+
+Includes the standard layout for all keys except for the left-most column, which is remapped to these keys:
+
+ +-----------------+
+ |       Mute      |
+ +-----------------+
+ |   Volume Down   |
+ +-----------------+
+ |    Volume Up    |
+ +-----------------+
+ |     Function    |
+ +-----------------+
+ With Function held down:
+ +-----------------+
+ |       Mute      |
+ +-----------------+
+ | Brightness Down |
+ +-----------------+
+ |  Brightness Up  |
+ +-----------------+
+ |     Function    |
+ +-----------------+
+ And also with Function held down, "Print" (the lower right key) will trigger RESET (putting the controller into bootloader mode so it can be flashed).
\ No newline at end of file
diff --git a/keyboards/converter/numeric_keypad_IIe/numeric_keypad_IIe.c b/keyboards/converter/numeric_keypad_IIe/numeric_keypad_IIe.c
new file mode 100644 (file)
index 0000000..c29d85d
--- /dev/null
@@ -0,0 +1,43 @@
+/* Copyright 2019 Adam Newbold <adam@neatnik.net>
+ *
+ * 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 "numeric_keypad_IIe.h"
+
+void matrix_init_kb(void) {
+       // put your keyboard start-up code here
+       // runs once when the firmware starts up
+
+       matrix_init_user();
+}
+
+void matrix_scan_kb(void) {
+       // put your looping keyboard code here
+       // runs every cycle (a lot)
+
+       matrix_scan_user();
+}
+
+bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
+       // put your per-action keyboard code here
+       // runs for every action, just before processing by the firmware
+
+       return process_record_user(keycode, record);
+}
+
+void led_set_kb(uint8_t usb_led) {
+       // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
+
+       led_set_user(usb_led);
+}
diff --git a/keyboards/converter/numeric_keypad_IIe/numeric_keypad_IIe.h b/keyboards/converter/numeric_keypad_IIe/numeric_keypad_IIe.h
new file mode 100644 (file)
index 0000000..8892b55
--- /dev/null
@@ -0,0 +1,30 @@
+/* Copyright Adam Newbold <adam@neatnik.net>
+ *
+ * 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/>.
+ */
+
+#pragma once
+#include "quantum.h"
+
+#define LAYOUT( \
+    K_ESC,   K_7, K_8,     K_9,   K_LEFT_PARENS, K_RIGHT_PARENS, \
+    K_LEFT,  K_4, K_5,     K_6,   K_MINUS,       K_DIVIDE,       \
+    K_RIGHT, K_1, K_2,     K_3,   K_PLUS,        K_MULTIPLY,     \
+    K_SPACE, K_0, K_COMMA, K_DOT, K_RETURN,      K_PRINT         \
+){ \
+    { K_RIGHT_PARENS, K_ESC,   K_4,           K_5,     K_6,      K_7     },\
+    { K_DIVIDE,       K_LEFT,  K_0,           K_1,     K_2,      K_3     },\
+    { K_PRINT,        K_SPACE, K_LEFT_PARENS, K_MINUS, K_RETURN, K_COMMA },\
+    { K_MULTIPLY,     K_RIGHT, K_8,           K_9,     K_DOT,    K_PLUS  },\
+}
diff --git a/keyboards/converter/numeric_keypad_IIe/readme.md b/keyboards/converter/numeric_keypad_IIe/readme.md
new file mode 100644 (file)
index 0000000..9eba416
--- /dev/null
@@ -0,0 +1,16 @@
+# Numeric Keypad IIe
+
+![Numeric Keypad IIe](https://upload.wikimedia.org/wikipedia/commons/3/3b/Apple_Numeric_Keypad_IIe.jpg)
+
+This is a conversion project for the Numeric Keypad IIe, model A2M2003. This was an external keypad that connected to the Apple //e's motherboard (and as such, it lacked any kind of onboard controller).
+
+The reference conversion setup uses the keyboard's DB15 (VGA) fixed cable connected to a DB15 wiring terminal with breakout board ([this one](https://www.amazon.com/gp/product/B07437293Y/ref=ppx_yo_dt_b_asin_title_o02_s00?ie=UTF8&psc=1), specifically) and wired to an [Arduino Micro](https://store.arduino.cc/usa/arduino-micro).
+
+Keyboard Maintainer: [Adam Newbold](https://github.com/newbold)  
+Hardware Supported: Internal Numeric Keypad IIe PCB (Apple part 820.0081.c), ATmega32U4 microcontroller
+
+Make example for this keyboard (after setting up your build environment):
+
+    make converter/numeric_keypad_IIe:default
+
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
diff --git a/keyboards/converter/numeric_keypad_IIe/rules.mk b/keyboards/converter/numeric_keypad_IIe/rules.mk
new file mode 100644 (file)
index 0000000..f61a7d4
--- /dev/null
@@ -0,0 +1,76 @@
+# MCU name
+MCU = atmega32u4
+
+# Processor frequency.
+#     This will define a symbol, F_CPU, in all source code files equal to the
+#     processor frequency in Hz. You can then use this symbol in your source code to
+#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done
+#     automatically to create a 32-bit value in your source code.
+#
+#     This will be an integer division of F_USB below, as it is sourced by
+#     F_USB after it has run through any CPU prescalers. Note that this value
+#     does not *change* the processor frequency - it should merely be updated to
+#     reflect the processor speed set externally so that the code can use accurate
+#     software delays.
+F_CPU = 16000000
+
+#
+# LUFA specific
+#
+# Target architecture (see library "Board Types" documentation).
+ARCH = AVR8
+
+# Input clock frequency.
+#     This will define a symbol, F_USB, in all source code files equal to the
+#     input clock frequency (before any prescaling is performed) in Hz. This value may
+#     differ from F_CPU if prescaling is used on the latter, and is required as the
+#     raw input clock is fed directly to the PLL sections of the AVR for high speed
+#     clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
+#     at the end, this will be done automatically to create a 32-bit value in your
+#     source code.
+#
+#     If no clock division is performed on the input clock inside the AVR (via the
+#     CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
+F_USB = $(F_CPU)
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+
+# Bootloader selection
+#   Teensy       halfkay
+#   Pro Micro    caterina
+#   Atmel DFU    atmel-dfu
+#   LUFA DFU     lufa-dfu
+#   QMK DFU      qmk-dfu
+#   atmega32a    bootloadHID
+BOOTLOADER = caterina
+
+# If you don't know the bootloader type, then you can specify the
+# Boot Section Size in *bytes* by uncommenting out the OPT_DEFS line
+#   Teensy halfKay      512
+#   Teensy++ halfKay    1024
+#   Atmel DFU loader    4096
+#   LUFA bootloader     4096
+#   USBaspLoader        2048
+# OPT_DEFS += -DBOOTLOADER_SIZE=4096
+
+# Build Options
+#   change yes to no to disable
+#
+BOOTMAGIC_ENABLE = no      # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = yes       # Mouse keys(+4700)
+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 = no       # Breathing sleep LED during USB suspend
+# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+NKRO_ENABLE = no            # USB Nkey Rollover
+BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality on B7 by default
+RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
+MIDI_ENABLE = no            # MIDI support (+2400 to 4200, depending on config)
+UNICODE_ENABLE = no         # Unicode
+BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE = no           # Audio output on port C6
+FAUXCLICKY_ENABLE = no      # Use buzzer to emulate clicky switches
+HD44780_ENABLE = no            # Enable support for HD44780 based LCDs (+400)
index fba107c7cbacf716cec60bcf6d5db6b967e9e565..6f381aabf405cffedeeb3d16df21df290b99891a 100644 (file)
@@ -98,6 +98,7 @@ extern "C"
         kbd2.SetReportParser(0, (HIDReportParser*)&kbd_parser2);
         kbd3.SetReportParser(0, (HIDReportParser*)&kbd_parser3);
         kbd4.SetReportParser(0, (HIDReportParser*)&kbd_parser4);
+        matrix_init_quantum();
     }
 
     static void or_report(report_keyboard_t report) {
@@ -115,6 +116,24 @@ extern "C"
         }
     }
 
+    __attribute__ ((weak))
+    void matrix_init_kb(void) {
+        matrix_init_user();
+    }
+
+    __attribute__ ((weak))
+    void matrix_init_user(void) {
+    }
+
+    __attribute__ ((weak))
+    void matrix_scan_kb(void) {
+        matrix_scan_user();
+    }
+
+    __attribute__ ((weak))
+    void matrix_scan_user(void) {
+    }
+
     uint8_t matrix_scan(void) {
         static uint16_t last_time_stamp1 = 0;
         static uint16_t last_time_stamp2 = 0;
@@ -169,6 +188,7 @@ extern "C"
                 keyboard_set_leds(host_keyboard_leds());
             }
         }
+        matrix_scan_quantum();
         return 1;
     }
 
diff --git a/keyboards/dz60/keymaps/edulpn/README.md b/keyboards/dz60/keymaps/edulpn/README.md
new file mode 100644 (file)
index 0000000..221be72
--- /dev/null
@@ -0,0 +1,10 @@
+# Edulpn Tsangan Keymap for the DZ60 PCB
+
+## Additional Notes
+Tsangan 60% Keymap for DZ60 + Fn layer.
+
+### Layout
+![Edulpn Tsangan Keymap for the DZ60](https://i.imgur.com/z7HHeH7.png)
+
+## Build
+To build the default keymap, simply run `make dz60:edulpn`.
diff --git a/keyboards/dz60/keymaps/edulpn/keymap.c b/keyboards/dz60/keymaps/edulpn/keymap.c
new file mode 100644 (file)
index 0000000..74d7ca4
--- /dev/null
@@ -0,0 +1,18 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+       [0] = LAYOUT_60_tsangan_hhkb(
+               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_BSLS,        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_LBRC,        KC_RBRC,        KC_BSPC,
+               KC_CAPS,        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(1),
+               KC_LCTL,        KC_LGUI,        KC_LALT,                                                                                        KC_SPC,                                                                                                 KC_RALT,    KC_RGUI,    KC_RCTL
+       ),
+       [1] = LAYOUT_60_tsangan_hhkb(
+               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_TRNS,        RESET,
+               KC_TRNS,        RGB_TOG,        RGB_MOD,        RGB_HUI,        RGB_HUD,        RGB_SAI,        RGB_SAD,        RGB_VAI,        RGB_VAD,        KC_TRNS,        KC_TRNS,        KC_UP,          KC_TRNS,        KC_DEL,
+               KC_TRNS,        KC_MPLY,        KC_MPRV,        KC_MNXT,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_LEFT,        KC_RIGHT,                               KC_TRNS,
+               KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_TRNS,        KC_DOWN,                                KC_TRNS,        KC_TRNS,
+               KC_TRNS,        KC_TRNS,        KC_TRNS,                                                                                        KC_TRNS,                                                                                                KC_TRNS,    KC_TRNS,    KC_TRNS
+       )
+};
index 399e22f77837d5d3f20829913aae68c04d6daf52..b709ab7e98a4d97ff2ea26fd7bb6ee9ae8beb3a2 100644 (file)
@@ -38,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     KC_GRV,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_MINS,                        KC_EQL , KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSLS, \
     KC_TAB,  KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_DEL ,                        KC_BSPC, 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_SPC ,                        KC_ENT , KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSFT, \
-    KC_LCTL, KC_LGUI, KC_LALT, EISU,             LOWER,   KC_SPC ,_______,        _______,KC_ENT , RAISE,            KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT  \
+    KC_LCTL, KC_LGUI, KC_LALT, EISU,             LOWER,   KC_SPC ,KC_SPC,          KC_SPC,KC_ENT , RAISE,            KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT  \
   ),
 
   /* Lower
@@ -59,7 +59,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_UNDS,                        KC_PLUS, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE, \
     KC_TAB,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_DEL ,                        KC_BSPC, KC_H,    KC_J,    KC_K,    KC_L,    KC_COLN, KC_DQT , \
     KC_LSFT, KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_SPC ,                        KC_ENT , KC_N,    KC_M,    KC_LT,   KC_GT,   KC_QUES, KC_RSFT, \
-    KC_LCTL, KC_LGUI, KC_LALT, EISU,             LOWER,   KC_SPC ,_______,        _______,KC_ENT , RAISE,            KC_HOME, KC_PGDN, KC_PGUP, KC_END   \
+    KC_LCTL, KC_LGUI, KC_LALT, EISU,             LOWER,   KC_SPC ,KC_SPC,          KC_SPC,KC_ENT , RAISE,            KC_HOME, KC_PGDN, KC_PGUP, KC_END   \
   ),
 
   /* Raise
@@ -80,7 +80,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_UNDS,                        KC_PLUS, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE, \
     KC_TAB,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_DEL ,                        KC_BSPC, KC_H,    KC_J,    KC_K,    KC_L,    KC_COLN, KC_DQT , \
     KC_LSFT, KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_SPC ,                        KC_ENT , KC_N,    KC_M,    KC_LT,   KC_GT,   KC_QUES, KC_RSFT, \
-    KC_LCTL, KC_LGUI, KC_LALT, EISU,             LOWER,   KC_SPC ,_______,        _______,KC_ENT , RAISE,            KC_HOME, KC_PGDN, KC_PGUP, KC_END   \
+    KC_LCTL, KC_LGUI, KC_LALT, EISU,             LOWER,   KC_SPC ,KC_SPC,          KC_SPC,KC_ENT , RAISE,            KC_HOME, KC_PGDN, KC_PGUP, KC_END   \
   ),
 
   /* Adjust
index 54fb5f6d9e07f78e8837401d53afd9c6efb6bbc7..2f7641d185f51e0a02facd4bff4e88ef0aadb615 100644 (file)
@@ -20,4 +20,3 @@ When adding your keymap to this list, keep it organised alphabetically (select l
 # List of Planck keymaps
 
 * **default** default Planck layout
-* **cbbrowne** cbbrowne's Planck layout
\ No newline at end of file
index 72045cc29189aa62df5607d59082625423ccda3d..5292ca0972ee7c28eb9f034b60c01f4dbcfbbec7 100644 (file)
@@ -6,35 +6,33 @@
 #ifdef USE_I2C
 #include <stddef.h>
 #ifdef __AVR__
-       #include <avr/io.h>
-       #include <avr/interrupt.h>
+  #include <avr/io.h>
+  #include <avr/interrupt.h>
 #endif
 #endif
 
 #define LAYOUT_5x6(\
-       L00, L01, L02, L03, L04, L05,                    R00, R01, R02, R03, R04, R05, \
-       L10, L11, L12, L13, L14, L15,                    R10, R11, R12, R13, R14, R15, \
-       L20, L21, L22, L23, L24, L25,                    R20, R21, R22, R23, R24, R25, \
-       L30, L31, L32, L33, L34, L35,                    R30, R31, R32, R33, R34, R35, \
-                 L42, L43,                                        R42, R43,      \
-                        L44, L45,                    R40, R41,                \
-                        L54, L55,                    R50, R51,                          \
-              L52, L53,                                        R52, R53       \
-       ) \
-       { \
-               { L00, L01, L02, L03, L04, L05 }, \
-               { L10, L11, L12, L13, L14, L15 }, \
-               { L20, L21, L22, L23, L24, L25 }, \
-               { L30, L31, L32, L33, L34, L35 }, \
-               { KC_NO, KC_NO, L42, L43, L44, L45 }, \
-               { KC_NO, KC_NO, L52, L53, L54, L55 }, \
-\
-               { R00, R01, R02, R03, R04, R05 },    \
-               { R10, R11, R12, R13, R14, R15 },    \
-               { R20, R21, R22, R23, R24, R25 },    \
-               { R30, R31, R32, R33, R34, R35 },    \
-               { R40, R41, R42, R43, KC_NO, KC_NO },\
-               { R50, R51, R52, R53, KC_NO, KC_NO }, \
-   }
-
-
+  L00, L01, L02, L03, L04, L05,                          R00, R01, R02, R03, R04, R05, \
+  L10, L11, L12, L13, L14, L15,                          R10, R11, R12, R13, R14, R15, \
+  L20, L21, L22, L23, L24, L25,                          R20, R21, R22, R23, R24, R25, \
+  L30, L31, L32, L33, L34, L35,                          R30, R31, R32, R33, R34, R35, \
+            L42, L43,                                              R42, R43,           \
+                      L44, L45,                          R40, R41,                     \
+                                L54, L55,      R50, R51,                               \
+                                L52, L53,      R52, R53                                \
+  ) \
+  { \
+    { L00,   L01,   L02, L03, L04, L05 }, \
+    { L10,   L11,   L12, L13, L14, L15 }, \
+    { L20,   L21,   L22, L23, L24, L25 }, \
+    { L30,   L31,   L32, L33, L34, L35 }, \
+    { KC_NO, KC_NO, L42, L43, L44, L45 }, \
+    { KC_NO, KC_NO, L52, L53, L54, L55 }, \
+                                          \
+    { R00, R01, R02, R03, R04,   R05   }, \
+    { R10, R11, R12, R13, R14,   R15   }, \
+    { R20, R21, R22, R23, R24,   R25   }, \
+    { R30, R31, R32, R33, R34,   R35   }, \
+    { R40, R41, R42, R43, KC_NO, KC_NO }, \
+    { R50, R51, R52, R53, KC_NO, KC_NO }  \
+}
index d7aa3acee3991a56b6d56941518d0f356e78273c..14afc704cd2ebf60083fd65da6e5fafe78c2a6c6 100644 (file)
@@ -5,7 +5,7 @@
     "width": 17,
     "height": 8,
     "layouts": {
-        "LAYOUT": {
+        "LAYOUT_5x6": {
             "layout": [
                 {"label":"L00", "x":0, "y":0},
                 {"label":"L01", "x":1, "y":0},
index 95fd5bb1024447627e1916a222dbac6d6df89cab..88b68b31e660bd050ce341649a977f1b3327a021 100644 (file)
@@ -6,40 +6,40 @@
 #ifdef USE_I2C
 #include <stddef.h>
 #ifdef __AVR__
-       #include <avR/io.h>
-       #include <avR/inteRRupt.h>
+  #include <avR/io.h>
+  #include <avR/inteRRupt.h>
 #endif
 #endif
 
 #define LAYOUT_5x7( \
-               L11, L12, L13, L14, L15, L16, L17, \
-               L21, L22, L23, L24, L25, L26, L27, \
-               L31, L32, L33, L34, L35, L36, L37, \
-               L41, L42, L43, L44, L45, L46, \
-               L51, L52, L53, L54,           \
-                            L55, L56, \
-                            L65, L66, \
-                                   L63, L64, \
-               R11, R12, R13, R14, R15, R16, R17, \
-               R21, R22, R23, R24, R25, R26, R27, \
-               R31, R32, R33, R34, R35, R36, R37, \
-                    R42, R43, R44, R45, R46, R47, \
-                              R54, R55, R56, R57, \
-        R52, R53, \
-        R62, R63, \
-               R64, R65  \
-       ) \
-       { \
-               { L11, L12, L13, L14, L15, L16, L17 }, \
-               { L21, L22, L23, L24, L25, L26, L27 }, \
-               { L31, L32, L33, L34, L35, L36, L37 }, \
-               { L41, L42, L43, L44, L45, L46, KC_NO }, \
-               { L51, L52, L53, L54, L55, L56, KC_NO }, \
-               { KC_NO, KC_NO, L63, L64, L65, L66, KC_NO }, \
-               { R11, R12, R13, R14, R15, R16, R17 }, \
-               { R21, R22, R23, R24, R25, R26, R27 }, \
-               { R31, R32, R33, R34, R35, R36, R37 }, \
-               { KC_NO, R42, R43, R44, R45, R46, R47 }, \
-               { KC_NO, R52, R53, R54, R55, R56, R57 }, \
-               { KC_NO, R62, R63, R64, R65, KC_NO, KC_NO } \
-       }
+    L11, L12, L13, L14, L15, L16, L17,      \
+    L21, L22, L23, L24, L25, L26, L27,      \
+    L31, L32, L33, L34, L35, L36, L37,      \
+    L41, L42, L43, L44, L45, L46,           \
+    L51, L52, L53, L54,                     \
+                        L55, L56,           \
+                                  L65, L66, \
+                                  L63, L64, \
+         R11, R12, R13, R14, R15, R16, R17, \
+         R21, R22, R23, R24, R25, R26, R27, \
+         R31, R32, R33, R34, R35, R36, R37, \
+              R42, R43, R44, R45, R46, R47, \
+                        R54, R55, R56, R57, \
+              R52, R53,                     \
+    R62, R63,                               \
+    R64, R65                                \
+  ) \
+  { \
+    { L11,   L12,   L13, L14, L15, L16,   L17   }, \
+    { L21,   L22,   L23, L24, L25, L26,   L27   }, \
+    { L31,   L32,   L33, L34, L35, L36,   L37   }, \
+    { L41,   L42,   L43, L44, L45, L46,   KC_NO }, \
+    { L51,   L52,   L53, L54, L55, L56,   KC_NO }, \
+    { KC_NO, KC_NO, L63, L64, L65, L66,   KC_NO }, \
+    { R11,   R12,   R13, R14, R15, R16,   R17   }, \
+    { R21,   R22,   R23, R24, R25, R26,   R27   }, \
+    { R31,   R32,   R33, R34, R35, R36,   R37   }, \
+    { KC_NO, R42,   R43, R44, R45, R46,   R47   }, \
+    { KC_NO, R52,   R53, R54, R55, R56,   R57   }, \
+    { KC_NO, R62,   R63, R64, R65, KC_NO, KC_NO }  \
+}
index b4b2c7b797f9440291e182d2a54e815613c78b47..33ba1b0e796ba6d4632fff88972cbc2a3fabcd15 100644 (file)
@@ -3,9 +3,9 @@
     "url": "",
     "maintainer": "qmk",
     "width": 17,
-    "height": 16,
+    "height": 8,
     "layouts": {
-        "LAYOUT": {
+        "LAYOUT_5x7": {
             "layout": [
                 {"label":"L11", "x":0, "y":0},
                 {"label":"L12", "x":1, "y":0},
index c2980b3d318cf6c69fbe875effef053046e862ab..039e6b40dfb0da6f051037b15c96e537a6b8f88e 100644 (file)
@@ -7,38 +7,36 @@
 #ifdef USE_I2C
 #include <stddef.h>
 #ifdef __AVR__
-       #include <avr/io.h>
-       #include <avr/interrupt.h>
+  #include <avr/io.h>
+  #include <avr/interrupt.h>
 #endif
 #endif
 
 #define LAYOUT_6x6(\
-       L00, L01, L02, L03, L04, L05,                    R00, R01, R02, R03, R04, R05, \
-       L10, L11, L12, L13, L14, L15,                    R10, R11, R12, R13, R14, R15, \
-       L20, L21, L22, L23, L24, L25,                    R20, R21, R22, R23, R24, R25, \
-       L30, L31, L32, L33, L34, L35,                    R30, R31, R32, R33, R34, R35, \
-       L40, L41, L42, L43, L44, L45,                    R40, R41, R42, R43, R44, R45, \
-                         L52, L53,                                        R52, R53,       \
-                        L54, L55,                    R50, R51,                \
-                        L64, L65,                    R60, R61,                \
-              L62, L63,                                        R62, R63       \
-       ) \
-       { \
-               { L00, L01, L02, L03, L04, L05 }, \
-               { L10, L11, L12, L13, L14, L15 }, \
-               { L20, L21, L22, L23, L24, L25 }, \
-               { L30, L31, L32, L33, L34, L35 }, \
-               { L40, L41, L42, L43, L44, L45 }, \
-               { KC_NO, KC_NO, L52, L53, L54, L55 }, \
-               { KC_NO, KC_NO, L62, L63, L64, L65 }, \
-\
-               { R00, R01, R02, R03, R04, R05 },    \
-               { R10, R11, R12, R13, R14, R15 },    \
-               { R20, R21, R22, R23, R24, R25 },    \
-               { R30, R31, R32, R33, R34, R35 },    \
-               { R40, R41, R42, R43, R44, R45 },    \
-               { R50, R51, R52, R53, KC_NO, KC_NO },\
-               { R60, R61, R62, R63, KC_NO, KC_NO }, \
-   }
-
-
+  L00, L01, L02, L03, L04, L05,                          R00, R01, R02, R03, R04, R05, \
+  L10, L11, L12, L13, L14, L15,                          R10, R11, R12, R13, R14, R15, \
+  L20, L21, L22, L23, L24, L25,                          R20, R21, R22, R23, R24, R25, \
+  L30, L31, L32, L33, L34, L35,                          R30, R31, R32, R33, R34, R35, \
+  L40, L41, L42, L43, L44, L45,                          R40, R41, R42, R43, R44, R45, \
+            L52, L53,                                              R52, R53,           \
+                      L54, L55,                          R50, R51,                     \
+                                L64, L65,      R60, R61,                               \
+                                L62, L63,      R62, R63                                \
+  ) \
+  { \
+    { L00,   L01,   L02, L03, L04, L05 }, \
+    { L10,   L11,   L12, L13, L14, L15 }, \
+    { L20,   L21,   L22, L23, L24, L25 }, \
+    { L30,   L31,   L32, L33, L34, L35 }, \
+    { L40,   L41,   L42, L43, L44, L45 }, \
+    { KC_NO, KC_NO, L52, L53, L54, L55 }, \
+    { KC_NO, KC_NO, L62, L63, L64, L65 }, \
+                                          \
+    { R00, R01, R02, R03, R04,   R05   }, \
+    { R10, R11, R12, R13, R14,   R15   }, \
+    { R20, R21, R22, R23, R24,   R25   }, \
+    { R30, R31, R32, R33, R34,   R35   }, \
+    { R40, R41, R42, R43, R44,   R45   }, \
+    { R50, R51, R52, R53, KC_NO, KC_NO }, \
+    { R60, R61, R62, R63, KC_NO, KC_NO }  \
+}
index 2ae91d4694bd907dd89b323b192896d506ab2eeb..e617b39a82db214df25eec987d12607b094cf5a2 100644 (file)
@@ -5,7 +5,7 @@
     "width": 17,
     "height": 9,
     "layouts": {
-        "LAYOUT": {
+        "LAYOUT_6x6": {
             "layout": [
                 {"label":"L00", "x":0, "y":0},
                 {"label":"L01", "x":1, "y":0},
diff --git a/keyboards/handwired/terminus_mini/info.json b/keyboards/handwired/terminus_mini/info.json
new file mode 100644 (file)
index 0000000..9271b41
--- /dev/null
@@ -0,0 +1,59 @@
+{
+  "keyboard_name": "handwired/terminus_mini",
+  "url": "",
+  "maintainer": "qmk",
+  "width": 12,
+  "height": 4,
+  "layouts": {
+    "LAYOUT": {
+      "layout": [
+        {"label":"Tab", "x":0, "y":0},
+        {"label":"Q", "x":1, "y":0},
+        {"label":"W", "x":2, "y":0},
+        {"label":"E", "x":3, "y":0},
+        {"label":"R", "x":4, "y":0},
+        {"label":"T", "x":5, "y":0},
+        {"label":"Y", "x":6, "y":0},
+        {"label":"U", "x":7, "y":0},
+        {"label":"I", "x":8, "y":0},
+        {"label":"O", "x":9, "y":0},
+        {"label":"P", "x":10, "y":0},
+        {"label":"Del", "x":11, "y":0},
+        {"label":"Backspace", "x":0, "y":1},
+        {"label":"A", "x":1, "y":1},
+        {"label":"S", "x":2, "y":1},
+        {"label":"D", "x":3, "y":1},
+        {"label":"F", "x":4, "y":1},
+        {"label":"G", "x":5, "y":1},
+        {"label":"H", "x":6, "y":1},
+        {"label":"J", "x":7, "y":1},
+        {"label":"K", "x":8, "y":1},
+        {"label":"L", "x":9, "y":1},
+        {"label":";", "x":10, "y":1},
+        {"label":"'", "x":11, "y":1},
+        {"label":"Left Shift / (", "x":0, "y":2},
+        {"label":"Z", "x":1, "y":2},
+        {"label":"X", "x":2, "y":2},
+        {"label":"C", "x":3, "y":2},
+        {"label":"V", "x":4, "y":2},
+        {"label":"B", "x":5, "y":2},
+        {"label":"N", "x":6, "y":2},
+        {"label":"M", "x":7, "y":2},
+        {"label":",", "x":8, "y":2},
+        {"label":".", "x":9, "y":2},
+        {"label":"/", "x":10, "y":2},
+        {"label":"Right Shift / )", "x":11, "y":2},
+        {"label":"LCtrl", "x":0, "y":3},
+        {"label":"GUI", "x":1, "y":3},
+        {"label":"Lower", "x":2, "y":3},
+        {"label":"LAlt", "x":3, "y":3},
+        {"label":"Space / Lower", "x":4, "y":3, "w":2},
+        {"label":"Enter / Raise", "x":6, "y":3, "w":2},
+        {"label":"MO(_FUNCTION)", "x":8, "y":3},
+        {"label":"MO(_MOUSE)", "x":9, "y":3},
+        {"label":"App", "x":10, "y":3},
+        {"label":"RCtrl", "x":11, "y":3}
+      ]
+    }
+  }
+}
index 8d9cc1b0082b215b8ccbf0d64e56262f82c8cfb8..276475873ae860c6ba92bbe5dac82dbea05d9c3c 100644 (file)
  * 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 "terminus_mini.h"
-#include "action_layer.h"
-#ifdef AUDIO_ENABLE
-  #include "audio.h"
-#endif
-#include "eeconfig.h"
+#include QMK_KEYBOARD_H
 
 extern keymap_config_t keymap_config;
 
@@ -45,20 +40,14 @@ enum terminus_mini_keycodes {
   LOWER,
   RAISE,
   FUNCTION,
-  MOUSE
-};
-
-enum custom_macros {
+  MOUSE,
+  // Custom Macros
   R_PIPE,
   R_POINT
 };
 
 #define SPC_LW LT(_LOWER, KC_SPC)
 #define ENT_RS LT(_RAISE, KC_ENT)
-#define FNC MO(_FUNCTION)
-#define MSE MO(_MOUSE)
-#define PIPE M(R_PIPE)
-#define POINT M(R_POINT)
 
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 /* Colemak -
@@ -73,10 +62,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * `----------------------------------------------------------------------------------'
  */
 [_COLEMAK] = LAYOUT(
-  KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,      KC_Y,    KC_SCLN, KC_DEL , \
-  KC_BSPC, KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,      KC_I,    KC_O,    KC_QUOT, \
-  KC_LSPO, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM,   KC_DOT,  KC_SLSH, KC_RSPC, \
-  KC_LCTL, KC_LGUI, LOWER,   KC_LALT,     SPC_LW,           ENT_RS,       FNC,       MSE,     KC_APP,  KC_RCTL \
+  KC_TAB,  KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_DEL,  \
+  KC_BSPC, KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT, \
+  KC_LSPO, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSPC, \
+  KC_LCTL, KC_LGUI, LOWER,   KC_LALT,     SPC_LW,           ENT_RS,       MO(5),   MO(6),   KC_APP,  KC_RCTL  \
   ),
 
 /* QWERTY -
@@ -91,10 +80,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * `----------------------------------------------------------------------------------'
  */
 [_QWERTY] = LAYOUT(
-  KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,      KC_O,    KC_P,    KC_DEL , \
-  KC_BSPC, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,      KC_L,    KC_SCLN, KC_QUOT, \
-  KC_LSPO, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM,   KC_DOT,  KC_SLSH, KC_RSPC, \
-  KC_LCTL, KC_LGUI, LOWER,   KC_LALT,     SPC_LW,           ENT_RS,       FNC,       MSE,     KC_APP,  KC_RCTL \
+  KC_TAB,  KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_DEL,  \
+  KC_BSPC, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, \
+  KC_LSPO, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_RSPC, \
+  KC_LCTL, KC_LGUI, LOWER,   KC_LALT,     SPC_LW,           ENT_RS,       MO(5),   MO(6),   KC_APP,  KC_RCTL  \
   ),
 
 /* Dvorak
@@ -109,10 +98,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * `-----------------------------------------------------------------------------------'
  */
 [_DVORAK] = LAYOUT(
-  KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_DEL, \
+  KC_TAB,  KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_DEL,  \
   KC_BSPC, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH, \
   KC_LSPO, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    KC_RSPC, \
-  KC_LCTL, KC_LGUI, LOWER,   KC_LALT,      SPC_LW,          ENT_RS,       FNC,     MSE,     KC_APP,  KC_RCTL \
+  KC_LCTL, KC_LGUI, LOWER,   KC_LALT,     SPC_LW,           ENT_RS,       MO(5),   MO(6),   KC_APP,  KC_RCTL  \
 ),
 
 /* Lower
@@ -129,10 +118,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  */
 
 [_LOWER] = LAYOUT(
-  KC_TAB,  KC_PGUP,  KC_HOME,  KC_UP,    KC_END,   KC_PSLS,  KC_7,  KC_8,  KC_9,   KC_PAST,  XXXXXXX, _______, \
-  _______, KC_PGDN,  KC_LEFT,  KC_DOWN,  KC_RGHT,  KC_MINS,  KC_4,  KC_5,  KC_6,   KC_PPLS,  XXXXXXX, _______, \
-  _______, _______,  _______,  _______,  _______,  KC_EQL,   KC_1,  KC_2,  KC_3,   KC_PENT,  XXXXXXX, _______, \
-  _______, _______,  _______,  _______,       _______,       KC_0,       KC_DOT,   FNC,      RAISE,   _______ \
+  KC_TAB,  KC_PGUP, KC_HOME, KC_UP,   KC_END,  KC_PSLS, KC_7,    KC_8,    KC_9,    KC_PAST, XXXXXXX, _______, \
+  _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_MINS, KC_4,    KC_5,    KC_6,    KC_PPLS, XXXXXXX, _______, \
+  _______, _______, _______, _______, _______, KC_EQL,  KC_1,    KC_2,    KC_3,    KC_PENT, XXXXXXX, _______, \
+  _______, _______, _______, _______,     _______,          KC_0,         KC_DOT,  MO(5),   RAISE,   _______  \
 ),
 
 /* Raise
@@ -148,10 +137,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
   */
 
 [_RAISE] = LAYOUT(
-   KC_ESC,  KC_EXLM, KC_AT,   KC_HASH, KC_DLR,   KC_PERC, KC_CIRC,  KC_AMPR, KC_ASTR, KC_MINS, KC_EQL,  _______, \
-   _______, KC_1,    KC_2,    KC_3,    KC_4,     KC_5,    KC_6,     KC_7,    KC_8,    KC_9,    KC_0,    _______, \
-   _______, POINT,   PIPE,    KC_LCBR, KC_LBRC,  KC_GRV,  KC_BSLS,  KC_RBRC, KC_RCBR, KC_DOT,  KC_SLSH, _______, \
-   _______, _______, XXXXXXX, _______,        SPC_LW,            ENT_RS,     FNC,     MSE,     _______, _______ \
+  KC_ESC,  KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_MINS, KC_EQL,  _______, \
+  _______, KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    _______, \
+  _______, R_POINT, R_PIPE,  KC_LCBR, KC_LBRC, KC_GRV,  KC_BSLS, KC_RBRC, KC_RCBR, KC_DOT,  KC_SLSH, _______, \
+  _______, _______, XXXXXXX, _______,     SPC_LW,           ENT_RS,       MO(5),   MO(6),   _______, _______  \
    ),
 
 /*Function
@@ -166,11 +155,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * `-----------------------------------------------------------------------------------'
  */
 
-[_FUNCTION] = LAYOUT( 
-  _______, KC_MUTE, KC_VOLD, KC_VOLU,  XXXXXXX, XXXXXXX, XXXXXXX,  KC_F1,  KC_F2,   KC_F3,   KC_F4,   KC_INS , \
-  KC_CAPS, KC_MSTP, KC_MPRV, KC_MPLY,  KC_MNXT, XXXXXXX, XXXXXXX,  KC_F5,  KC_F6,   KC_F7,   KC_F8,   KC_PSCR, \
-  _______, XXXXXXX, XXXXXXX, XXXXXXX,  XXXXXXX, XXXXXXX, XXXXXXX,  KC_F9,  KC_F10,  KC_F11,  KC_F12,  KC_SLCK, \
-  _______, _______, XXXXXXX, _______,         _______,        _______,     _______, XXXXXXX, XXXXXXX, KC_PAUS \
+[_FUNCTION] = LAYOUT(
+  _______, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_INS,  \
+  KC_CAPS, KC_MSTP, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX, KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_PSCR, \
+  _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_SLCK, \
+  _______, _______, XXXXXXX, _______,     _______,          _______,      _______, XXXXXXX, XXXXXXX, KC_PAUS  \
   ),
 
 /* MOUSE
@@ -186,10 +175,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  */
 
 [_MOUSE] = LAYOUT(
-   KC_ESC,  KC_WH_U, KC_WH_L, KC_MS_U, KC_WH_R,  XXXXXXX, XXXXXXX, KC_BTN3, KC_BTN4,  KC_BTN5, XXXXXXX, XXXXXXX, \
-   KC_BSPC, KC_WH_D, KC_MS_L, KC_MS_D, KC_MS_R,  XXXXXXX, XXXXXXX, KC_BTN1, KC_BTN2,  XXXXXXX, XXXXXXX, XXXXXXX, \
-   _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,  XXXXXXX, XXXXXXX, KC_RSPC, \
-   _______, XXXXXXX, XXXXXXX, XXXXXXX,      KC_ACL2,           KC_ACL0,     XXXXXXX,  MSE,     XXXXXXX, KC_RCTL \
+  KC_ESC,  KC_WH_U, KC_WH_L, KC_MS_U, KC_WH_R, XXXXXXX, XXXXXXX, KC_BTN3, KC_BTN4, KC_BTN5, XXXXXXX, XXXXXXX, \
+  KC_BSPC, KC_WH_D, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, XXXXXXX, KC_BTN1, KC_BTN2, XXXXXXX, XXXXXXX, XXXXXXX, \
+  _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_RSPC, \
+  _______, XXXXXXX, XXXXXXX, XXXXXXX,     KC_ACL2,          KC_ACL0,      XXXXXXX, MO(6),   XXXXXXX, KC_RCTL  \
   ),
 
 /* Adjust (Lower + Raise)
@@ -205,10 +194,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  */
 
 [_ADJUST] = LAYOUT(
-  _______, _______, _______, _______, _______, RESET,   _______, TERM_ON, TERM_OFF,_______, _______, KC_DEL, \
-  _______, _______, _______, _______, _______, _______, _______, QWERTY,  COLEMAK, DVORAK, _______,  _______, \
-  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
-  _______, _______, _______, _______,      _______,          _______,     _______, _______, _______, _______ \
+  _______, _______, _______, _______, _______, RESET,   _______, TERM_ON, TERM_OFF, _______, _______, KC_DEL,  \
+  _______, _______, _______, _______, _______, _______, _______, QWERTY,  COLEMAK,  DVORAK,  _______, _______, \
+  _______, _______, _______, _______, _______, _______, _______, _______, _______,  _______, _______, _______, \
+  _______, _______, _______, _______,     _______,          _______,      _______, _______, _______,  _______  \
 )
 
 };
@@ -218,27 +207,6 @@ void persistant_default_layer_set(uint16_t default_layer) {
   default_layer_set(default_layer);
 }
 
-// Macros to send R pointer & dplyr pipe
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
-    switch(id) {
-      //R Pointer: <-
-        case R_POINT:
-            if (record->event.pressed) { // pointer
-                SEND_STRING("<- ");
-//                return MACRO(D(LSFT), T(COMM), U(LSFT), T(MINS), END);
-            }
-            break;
-      //dplyr pipe: %>%
-        case R_PIPE:
-            if (record->event.pressed) { // dplyr pipe
-                SEND_STRING("%>% ");
-//                return MACRO(D(LSFT), T(5), T(DOT), T(5), U(LSFT), END);
-            }
-            break;
-    }
-    return MACRO_NONE;
-}
-
 // Cases to switch default layer to QWERTY, COLEMAK or DVORAK and to access ADJUST layer
 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
   switch (keycode) {
@@ -253,13 +221,13 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
         set_single_persistent_default_layer(_COLEMAK);
       }
       return false;
-      break; 
+      break;
     case DVORAK:
       if (record->event.pressed) {
         set_single_persistent_default_layer(_DVORAK);
       }
       return false;
-      break; 
+      break;
     case LOWER:
       if (record->event.pressed) {
         layer_on(_LOWER);
@@ -280,6 +248,21 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
       }
       return false;
       break;
+    // Macros to send R pointer & dplyr pipe
+    //R Pointer: <-
+    case R_POINT:
+      if (record->event.pressed) { // pointer
+        SEND_STRING("<- ");
+        //return MACRO(D(LSFT), T(COMM), U(LSFT), T(MINS), END);
+      }
+      break;
+    //dplyr pipe: %>%
+    case R_PIPE:
+      if (record->event.pressed) { // dplyr pipe
+        SEND_STRING("%>% ");
+        //return MACRO(D(LSFT), T(5), T(DOT), T(5), U(LSFT), END);
+      }
+      break;
   }
   return true;
 }
index 5f0271bb40b186675fcf76f851506076202e5c74..a5fc8eee61f085b9555a6f574f5a1e5bbd1c5175 100644 (file)
@@ -1,13 +1,12 @@
 # terminus_mini handwired
 
-Custom handwired keyboard.
+Custom handwired keyboard inspired by the UniKeyboard Terminus Mini 2.
 
 Keyboard Maintainer: [James Morgan](https://github.com/mogranjm)  
-Hardware Supported: Custom handwired keyboard    
-Hardware Availability: 
+Hardware Supported: Custom handwired keyboard  
 
 Make example for this keyboard (after setting up your build environment):
 
     make handwired/terminus_mini:default
 
-See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information.
\ No newline at end of file
+See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
index 846c98e2c08776b4f30289a2761f47655923e271..27fb45098150b1ab0ffafc8e15d35f7d8d3486ff 100644 (file)
 // The first section contains all of the arguments
 // The second converts the arguments into a two-dimensional array
 #define LAYOUT( \
-       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,        k35,      k37,       k38, k39, k3a, k3b  \
+  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,    k35,      k37,   k38, k39, k3a, k3b  \
 ) \
 { \
-       { 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, KC_NO, k35, KC_NO, k37, k38, k39, k3a, k3b } \
+  { 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, KC_NO, k35, KC_NO, k37, k38, k39, k3a, k3b }  \
 }
 
 #define KC_ KC_TRNS
index 12472acbf1c853993f41e03b7e12e535e60f07f5..49c8d4c467bf2d17a416591fc66aabab38a4bf21 100644 (file)
 {
-    "keyboard_name": "hecomi/alpha", 
-    "url": "https://skyhigh-works.hatenablog.com/entry/2019/02/25/221959", 
-    "maintainer": "takashiski", 
-    "width": 19.25, 
-    "height": 6.5, 
-    "layouts": {
-        "LAYOUT": {
-            "layout": [{"label":"Esc", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":11.25, "y":1.5}, {"label":"*", "x":12.25, "y":1.5}, {"label":"(", "x":13.25, "y":1.5}, {"label":")", "x":14.25, "y":1.5}, {"label":"_", "x":15.25, "y":1.5}, {"label":"+", "x":16.25, "y":1.5}, {"label":"|", "x":17.25, "y":1.5}, {"label":"~", "x":18.25, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"Y", "x":10.75, "y":2.5}, {"label":"U", "x":11.75, "y":2.5}, {"label":"I", "x":12.75, "y":2.5}, {"label":"O", "x":13.75, "y":2.5}, {"label":"P", "x":14.75, "y":2.5}, {"label":"{", "x":15.75, "y":2.5}, {"label":"}", "x":16.75, "y":2.5}, {"label":"Delete", "x":17.75, "y":2.5, "w":1.5}, {"label":"Control", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":11, "y":3.5}, {"label":"J", "x":12, "y":3.5}, {"label":"K", "x":13, "y":3.5}, {"label":"L", "x":14, "y":3.5}, {"label":":", "x":15, "y":3.5}, {"label":"\"", "x":16, "y":3.5}, {"label":"Return", "x":17, "y":3.5, "w":2.25}, {"label":"Shift", "x":0, "y":4.5, "w":2.25}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"B", "x":10.5, "y":4.5}, {"label":"N", "x":11.5, "y":4.5}, {"label":"M", "x":12.5, "y":4.5}, {"label":"<", "x":13.5, "y":4.5}, {"label":">", "x":14.5, "y":4.5}, {"label":"?", "x":15.5, "y":4.5}, {"label":"Shift", "x":16.5, "y":4.5, "w":1.75}, {"label":"Fn", "x":18.25, "y":4.5}, {"label":"", "x":1.55, "y":5.5}, {"label":"\u25c7", "x":2.55, "y":5.5, "w":1.5}, {"x":4.05, "y":5.5, "w":1.5}, {"x":5.55, "y":5.5, "w":1.5}, {"x":11.3, "y":5.5, "w":1.5}, {"x":12.8, "y":5.5, "w":1.5}, {"label":"\u25c7", "x":14.3, "y":5.5, "w":1.5}, {"label":"", "x":15.8, "y":5.5}]
+  "keyboard_name": "hecomi/alpha",
+  "url": "https://skyhigh-works.hatenablog.com/entry/2019/02/25/221959",
+  "maintainer": "takashiski",
+  "width": 16.25,
+  "height": 5,
+  "key_count": 69,
+  "layouts": {
+    "LAYOUT": {
+      "layout": [
+        {
+          "label": "Esc",
+          "x": 0,
+          "y": 0
+        },
+        {
+          "label": "!",
+          "x": 1,
+          "y": 0
+        },
+        {
+          "label": "@",
+          "x": 2,
+          "y": 0
+        },
+        {
+          "label": "#",
+          "x": 3,
+          "y": 0
+        },
+        {
+          "label": "$",
+          "x": 4,
+          "y": 0
+        },
+        {
+          "label": "%",
+          "x": 5,
+          "y": 0
+        },
+        {
+          "label": "^",
+          "x": 6,
+          "y": 0
+        },
+        {
+          "label": "&",
+          "x": 8.25,
+          "y": 0
+        },
+        {
+          "label": "*",
+          "x": 9.25,
+          "y": 0
+        },
+        {
+          "label": "(",
+          "x": 10.25,
+          "y": 0
+        },
+        {
+          "label": ")",
+          "x": 11.25,
+          "y": 0
+        },
+        {
+          "label": "_",
+          "x": 12.25,
+          "y": 0
+        },
+        {
+          "label": "+",
+          "x": 13.25,
+          "y": 0
+        },
+        {
+          "label": "|",
+          "x": 14.25,
+          "y": 0
+        },
+        {
+          "label": "~",
+          "x": 15.25,
+          "y": 0
+        },
+        {
+          "label": "Tab",
+          "x": 0,
+          "y": 1,
+          "w": 1.5
+        },
+        {
+          "label": "Q",
+          "x": 1.5,
+          "y": 1
+        },
+        {
+          "label": "W",
+          "x": 2.5,
+          "y": 1
+        },
+        {
+          "label": "E",
+          "x": 3.5,
+          "y": 1
+        },
+        {
+          "label": "R",
+          "x": 4.5,
+          "y": 1
+        },
+        {
+          "label": "T",
+          "x": 5.5,
+          "y": 1
+        },
+        {
+          "label": "Y",
+          "x": 6.5,
+          "y": 1
+        },
+        {
+          "label": "Y",
+          "x": 7.75,
+          "y": 1
+        },
+        {
+          "label": "U",
+          "x": 8.75,
+          "y": 1
+        },
+        {
+          "label": "I",
+          "x": 9.75,
+          "y": 1
+        },
+        {
+          "label": "O",
+          "x": 10.75,
+          "y": 1
+        },
+        {
+          "label": "P",
+          "x": 11.75,
+          "y": 1
+        },
+        {
+          "label": "{",
+          "x": 12.75,
+          "y": 1
+        },
+        {
+          "label": "}",
+          "x": 13.75,
+          "y": 1
+        },
+        {
+          "label": "Delete",
+          "x": 14.75,
+          "y": 1,
+          "w": 1.5
+        },
+        {
+          "label": "Control",
+          "x": 0,
+          "y": 2,
+          "w": 1.75
+        },
+        {
+          "label": "A",
+          "x": 1.75,
+          "y": 2
+        },
+        {
+          "label": "S",
+          "x": 2.75,
+          "y": 2
+        },
+        {
+          "label": "D",
+          "x": 3.75,
+          "y": 2
+        },
+        {
+          "label": "F",
+          "x": 4.75,
+          "y": 2
+        },
+        {
+          "label": "G",
+          "x": 5.75,
+          "y": 2
+        },
+        {
+          "label": "H",
+          "x": 8,
+          "y": 2
+        },
+        {
+          "label": "J",
+          "x": 9,
+          "y": 2
+        },
+        {
+          "label": "K",
+          "x": 10,
+          "y": 2
+        },
+        {
+          "label": "L",
+          "x": 11,
+          "y": 2
+        },
+        {
+          "label": ":",
+          "x": 12,
+          "y": 2
+        },
+        {
+          "label": "\"",
+          "x": 13,
+          "y": 2
+        },
+        {
+          "label": "Return",
+          "x": 14,
+          "y": 2,
+          "w": 2.25
+        },
+        {
+          "label": "Shift",
+          "x": 0,
+          "y": 3,
+          "w": 2.25
+        },
+        {
+          "label": "Z",
+          "x": 2.25,
+          "y": 3
+        },
+        {
+          "label": "X",
+          "x": 3.25,
+          "y": 3
+        },
+        {
+          "label": "C",
+          "x": 4.25,
+          "y": 3
+        },
+        {
+          "label": "V",
+          "x": 5.25,
+          "y": 3
+        },
+        {
+          "label": "B",
+          "x": 6.25,
+          "y": 3
+        },
+        {
+          "label": "B",
+          "x": 7.5,
+          "y": 3
+        },
+        {
+          "label": "N",
+          "x": 8.5,
+          "y": 3
+        },
+        {
+          "label": "M",
+          "x": 9.5,
+          "y": 3
+        },
+        {
+          "label": "<",
+          "x": 10.5,
+          "y": 3
+        },
+        {
+          "label": ">",
+          "x": 11.5,
+          "y": 3
+        },
+        {
+          "label": "?",
+          "x": 12.5,
+          "y": 3
+        },
+        {
+          "label": "Shift",
+          "x": 13.5,
+          "y": 3,
+          "w": 1.75
+        },
+        {
+          "label": "Fn",
+          "x": 15.25,
+          "y": 3
+        },
+        {
+          "x": 0,
+          "y": 4,
+          "w": 1.5
+        },
+        {
+          "label": "",
+          "x": 1.5,
+          "y": 4
+        },
+        {
+          "label": "GUI",
+          "x": 2.5,
+          "y": 4
+        },
+        {
+          "label": "無変換",
+          "x": 3.5,
+          "y": 4
+        },
+        {
+          "label": "tab",
+          "x": 4.5,
+          "y": 4
+        },
+        {
+          "x": 5.5,
+          "y": 4
+        },
+        {
+          "label": "Enter",
+          "x": 7.75,
+          "y": 4
+        },
+        {
+          "label": "BS",
+          "x": 8.75,
+          "y": 4
+        },
+        {
+          "label": "変換",
+          "x": 9.75,
+          "y": 4
+        },
+        {
+          "label": "GUI",
+          "x": 10.75,
+          "y": 4
+        },
+        {
+          "label": "Menu",
+          "x": 11.75,
+          "y": 4
+        },
+        {
+          "label": "",
+          "x": 12.75,
+          "y": 4
         }
+      ]
     }
+  }
 }
index 650871a5e6893ffe9a2b77ece7e14a25ad85a876..3afd8afb33d678617d148ae7905ae5537cbd2c79 100644 (file)
@@ -1,6 +1,6 @@
-The default keymap for ANSI HS60 V2
-===================================
+The default keymap for ANSI HS60 V2. VIA support disabled.
+==========================================================
 
 ![Layout image](https://i.imgur.com/m8t5CfE.png)
 
-Default layer is normal ANSI and Fn layer is used for RGB functions, Volume control and arrow cluster
\ No newline at end of file
+Default layer is normal ANSI and Fn layer is used for RGB functions, Volume control and arrow cluster.
\ No newline at end of file
diff --git a/keyboards/hs60/v2/keymaps/ansi_via/config.h b/keyboards/hs60/v2/keymaps/ansi_via/config.h
new file mode 100644 (file)
index 0000000..96adaf5
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+Copyright 2018 Yiancar
+
+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/>.
+*/
+#pragma once
+
+/* Include overwrites for specific keymap */
+
+#define HS60_ANSI
+#undef  PRODUCT_ID
+#define PRODUCT_ID      0x4854
diff --git a/keyboards/hs60/v2/keymaps/ansi_via/keymap.c b/keyboards/hs60/v2/keymaps/ansi_via/keymap.c
new file mode 100644 (file)
index 0000000..ba64947
--- /dev/null
@@ -0,0 +1,60 @@
+/* Copyright 2018 Yiancar
+ *
+ * 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 QMK_KEYBOARD_H
+
+//This is the ANSI version of the PCB
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_60_ansi( /* Base */
+    KC_GESC,  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_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_CAPS,  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,\
+    KC_LCTL,  KC_LGUI,  KC_LALT,                       KC_SPC,                          KC_RALT,  MO(1)  ,  KC_APP,  KC_RCTL),
+
+[1] = LAYOUT_60_ansi( /* FN */
+    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_DEL ,\
+    KC_TRNS,  KC_TRNS,  KC_UP,    KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  RESET,    KC_TRNS,\
+    KC_TRNS,  KC_LEFT,  KC_DOWN,  KC_RGHT,  S1_DEC,   S1_INC,   S2_DEC,   S2_INC,   KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,            KC_TRNS,\
+    KC_TRNS,            EF_DEC,   EF_INC,   H1_DEC,   H1_INC,   H2_DEC,   H2_INC,   BR_DEC,   BR_INC,   ES_DEC,   ES_INC,             KC_TRNS,\
+    KC_VOLU,  KC_VOLD,  KC_MUTE,                                KC_TRNS,                                KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS),
+
+[2] = LAYOUT_60_ansi( /* Empty for dynamic keymaps */
+    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,  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,            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,  KC_TRNS),
+
+[3] = LAYOUT_60_ansi( /* Empty for dynamic keymaps */
+    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,  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,            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,  KC_TRNS),
+};
+
+void matrix_init_user(void) {
+  //user initialization
+}
+
+void matrix_scan_user(void) {
+  //user matrix
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  return true;
+}
\ No newline at end of file
diff --git a/keyboards/hs60/v2/keymaps/ansi_via/readme.md b/keyboards/hs60/v2/keymaps/ansi_via/readme.md
new file mode 100644 (file)
index 0000000..a462da6
--- /dev/null
@@ -0,0 +1,6 @@
+The default keymap for ANSI HS60 V2. VIA support enabled.
+=========================================================
+
+![Layout image](https://i.imgur.com/m8t5CfE.png)
+
+Default layer is normal ANSI and Fn layer is used for RGB functions, Volume control and arrow cluster
\ No newline at end of file
diff --git a/keyboards/hs60/v2/keymaps/ansi_via/rules.mk b/keyboards/hs60/v2/keymaps/ansi_via/rules.mk
new file mode 100644 (file)
index 0000000..a2850a8
--- /dev/null
@@ -0,0 +1,66 @@
+# project specific files
+SRC =  keyboards/zeal60/zeal60.c \
+               keyboards/zeal60/rgb_backlight.c \
+               drivers/issi/is31fl3733.c \
+               quantum/color.c \
+               drivers/arm/i2c_master.c
+
+## chip/board settings
+#   the next two should match the directories in
+#   <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
+MCU_FAMILY = STM32
+MCU_SERIES = STM32F3xx
+
+# Linker script to use
+#   it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
+#   or <this_dir>/ld/
+MCU_LDSCRIPT = STM32F303xC
+
+# Startup code to use
+#  - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/
+MCU_STARTUP = stm32f3xx
+
+# Board: it should exist either in <chibios>/os/hal/boards/
+#  or <this_dir>/boards
+BOARD = GENERIC_STM32_F303XC
+
+# Cortex version
+MCU  = cortex-m4
+
+# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
+ARMV = 7
+
+USE_FPU = yes
+
+# Vector table for application
+# 0x00000000-0x00001000 area is occupied by bootlaoder.*/
+# The CORTEX_VTOR... is needed only for MCHCK/Infinity KB
+# OPT_DEFS = -DCORTEX_VTOR_INIT=0x08005000
+OPT_DEFS =
+
+# Do not put the microcontroller into power saving mode
+# when we get USB suspend event. We want it to keep updating
+# backlight effects.
+OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
+
+# Options to pass to dfu-util when flashing
+DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave
+
+# Build Options
+#   comment out to disable the options.
+#
+BACKLIGHT_ENABLE = no              # Enable keyboard backlight functionality
+BOOTMAGIC_ENABLE = no              # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes              # Mouse keys
+EXTRAKEY_ENABLE = yes              # Audio control and System control
+CONSOLE_ENABLE = no                # Console for debug
+COMMAND_ENABLE = no                # Commands for debug and configuration
+SLEEP_LED_ENABLE = no              # Breathing sleep LED during USB suspend
+NKRO_ENABLE = yes                  # USB Nkey Rollover
+AUDIO_ENABLE = no                  # Audio output on port C6
+NO_USB_STARTUP_CHECK = no          # Disable initialization only when usb is plugged in
+#SERIAL_LINK_ENABLE = yes
+
+RAW_ENABLE = yes
+DYNAMIC_KEYMAP_ENABLE = yes
+CIE1931_CURVE = yes
index f0b29900e6bf8a18778e3c9b8d8af06822296f89..9aa0a3a2b5a27e17e0bf0bb353213cdd16c7df55 100644 (file)
@@ -1,5 +1,5 @@
-The default keymap for ISO HS60 V2
-==================================
+The default keymap for ISO HS60 V2. VIA support disabled.
+=========================================================
 
 ![Layout image](https://imgur.com/6go4vQV.png)
 
diff --git a/keyboards/hs60/v2/keymaps/default_via/keymap.c b/keyboards/hs60/v2/keymaps/default_via/keymap.c
new file mode 100644 (file)
index 0000000..c1e5757
--- /dev/null
@@ -0,0 +1,60 @@
+/* Copyright 2018 Yiancar
+ *
+ * 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 QMK_KEYBOARD_H
+
+//This is the ISO version of the PCB
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_60_iso( /* Base */
+    KC_GESC,  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_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_CAPS,  KC_A,     KC_S,     KC_D,  KC_F,  KC_G,  KC_H,    KC_J,  KC_K,  KC_L,     KC_SCLN,  KC_QUOT,  KC_NUHS, KC_ENT, \
+    KC_LSFT,  KC_NUBS,  KC_Z,     KC_X,  KC_C,  KC_V,  KC_B,    KC_N,  KC_M,  KC_COMM,  KC_DOT,   KC_SLSH,           KC_RSFT,\
+    KC_LCTL,  KC_LGUI,  KC_LALT,                       KC_SPC,                          KC_RALT,  MO(1)  ,  KC_APP,  KC_RCTL),
+
+[1] = LAYOUT_60_iso( /* FN */
+    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_DEL ,\
+    KC_TRNS,  KC_TRNS,  KC_UP,    KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  RESET  ,          \
+    KC_TRNS,  KC_LEFT,  KC_DOWN,  KC_RGHT,  S1_DEC,   S1_INC,   S2_DEC,   S2_INC,   KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS,\
+    KC_TRNS,  KC_TRNS,  EF_DEC,   EF_INC,   H1_DEC,   H1_INC,   H2_DEC,   H2_INC,   BR_DEC,   BR_INC,   ES_DEC,   ES_INC,             KC_TRNS,\
+    KC_VOLU,  KC_VOLD,  KC_MUTE,                                KC_TRNS,                                KC_TRNS,  KC_TRNS,  KC_TRNS,  KC_TRNS),
+
+[2] = LAYOUT_60_iso( /* Empty for dynamic keymaps */
+    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,  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,  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,  KC_TRNS,  KC_TRNS),
+
+[3] = LAYOUT_60_iso( /* Empty for dynamic keymaps */
+    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,  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,  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,  KC_TRNS,  KC_TRNS),
+};
+
+void matrix_init_user(void) {
+  //user initialization
+}
+
+void matrix_scan_user(void) {
+  //user matrix
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  return true;
+}
\ No newline at end of file
diff --git a/keyboards/hs60/v2/keymaps/default_via/readme.md b/keyboards/hs60/v2/keymaps/default_via/readme.md
new file mode 100644 (file)
index 0000000..2a440f7
--- /dev/null
@@ -0,0 +1,6 @@
+The default keymap for ISO HS60 V2. VIA support enabled.
+========================================================
+
+![Layout image](https://imgur.com/6go4vQV.png)
+
+Default layer is normal ISO and Fn layer is used for RGB functions, Volume control and arrow cluster
\ No newline at end of file
diff --git a/keyboards/hs60/v2/keymaps/default_via/rules.mk b/keyboards/hs60/v2/keymaps/default_via/rules.mk
new file mode 100644 (file)
index 0000000..a2850a8
--- /dev/null
@@ -0,0 +1,66 @@
+# project specific files
+SRC =  keyboards/zeal60/zeal60.c \
+               keyboards/zeal60/rgb_backlight.c \
+               drivers/issi/is31fl3733.c \
+               quantum/color.c \
+               drivers/arm/i2c_master.c
+
+## chip/board settings
+#   the next two should match the directories in
+#   <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
+MCU_FAMILY = STM32
+MCU_SERIES = STM32F3xx
+
+# Linker script to use
+#   it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
+#   or <this_dir>/ld/
+MCU_LDSCRIPT = STM32F303xC
+
+# Startup code to use
+#  - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/
+MCU_STARTUP = stm32f3xx
+
+# Board: it should exist either in <chibios>/os/hal/boards/
+#  or <this_dir>/boards
+BOARD = GENERIC_STM32_F303XC
+
+# Cortex version
+MCU  = cortex-m4
+
+# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
+ARMV = 7
+
+USE_FPU = yes
+
+# Vector table for application
+# 0x00000000-0x00001000 area is occupied by bootlaoder.*/
+# The CORTEX_VTOR... is needed only for MCHCK/Infinity KB
+# OPT_DEFS = -DCORTEX_VTOR_INIT=0x08005000
+OPT_DEFS =
+
+# Do not put the microcontroller into power saving mode
+# when we get USB suspend event. We want it to keep updating
+# backlight effects.
+OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
+
+# Options to pass to dfu-util when flashing
+DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave
+
+# Build Options
+#   comment out to disable the options.
+#
+BACKLIGHT_ENABLE = no              # Enable keyboard backlight functionality
+BOOTMAGIC_ENABLE = no              # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes              # Mouse keys
+EXTRAKEY_ENABLE = yes              # Audio control and System control
+CONSOLE_ENABLE = no                # Console for debug
+COMMAND_ENABLE = no                # Commands for debug and configuration
+SLEEP_LED_ENABLE = no              # Breathing sleep LED during USB suspend
+NKRO_ENABLE = yes                  # USB Nkey Rollover
+AUDIO_ENABLE = no                  # Audio output on port C6
+NO_USB_STARTUP_CHECK = no          # Disable initialization only when usb is plugged in
+#SERIAL_LINK_ENABLE = yes
+
+RAW_ENABLE = yes
+DYNAMIC_KEYMAP_ENABLE = yes
+CIE1931_CURVE = yes
index 69b812c607247dcd9d69be5fd5f66362691b7724..5259a584d201d5a5bf144ddb26f6e526443dc5c7 100644 (file)
@@ -1,5 +1,5 @@
-The default keymap for HHKB HS60 V2
-===================================
+The default keymap for HHKB HS60 V2. VIA support disabled.
+==========================================================
 
 ![Layout image](https://imgur.com/usbrQWL.png)
 
diff --git a/keyboards/hs60/v2/keymaps/hhkb_via/config.h b/keyboards/hs60/v2/keymaps/hhkb_via/config.h
new file mode 100644 (file)
index 0000000..fc1b6d8
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+Copyright 2018 Yiancar
+
+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/>.
+*/
+#pragma once
+
+/* Include overwrites for specific keymap */
+
+#define HS60_HHKB
+#undef  PRODUCT_ID
+#define PRODUCT_ID      0x4855
+
+#undef  RGB_BACKLIGHT_ALPHAS_MODS_ROW_0
+#undef  RGB_BACKLIGHT_ALPHAS_MODS_ROW_1
+#undef  RGB_BACKLIGHT_ALPHAS_MODS_ROW_2
+#undef  RGB_BACKLIGHT_ALPHAS_MODS_ROW_3
+#undef  RGB_BACKLIGHT_ALPHAS_MODS_ROW_4
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_0 0b0000000000000001
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_1 0b0000000000000001
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_2 0b0011000000000001
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_3 0b0011000000000001
+#define RGB_BACKLIGHT_ALPHAS_MODS_ROW_4 0b0011100000000111
diff --git a/keyboards/hs60/v2/keymaps/hhkb_via/keymap.c b/keyboards/hs60/v2/keymaps/hhkb_via/keymap.c
new file mode 100644 (file)
index 0000000..9641eed
--- /dev/null
@@ -0,0 +1,60 @@
+/* Copyright 2018 Yiancar
+ *
+ * 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 QMK_KEYBOARD_H
+
+//This is the HHKB version of the PCB
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_60_hhkb( /* Base */
+    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_GRV,  KC_BSLS,\
+    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(1),\
+    KC_LCTL,  KC_LGUI,  KC_LALT,                KC_SPC,                            KC_RALT,  KC_RGUI,          KC_RCTL          ),
+
+[1] = LAYOUT_60_hhkb( /* FN */
+    RESET,   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_TRNS,  KC_TRNS,\
+    KC_TRNS, EF_DEC,  EF_INC,  H1_DEC,  H1_INC,  H2_DEC,  H2_INC,  BR_DEC,  BR_INC,   ES_DEC,  ES_INC,   KC_UP,    KC_TRNS,           KC_DEL, \
+    KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME,  KC_PGUP, KC_LEFT,  KC_RGHT,            KC_TRNS,         \
+    KC_TRNS,          KC_TRNS, S1_DEC,  S1_INC,  S2_DEC,  S2_INC,  KC_TRNS, KC_TRNS,  KC_END,  KC_PGDN,  KC_DOWN,  KC_TRNS,           KC_TRNS,\
+    KC_TRNS, KC_TRNS, KC_TRNS,                 KC_TRNS,                                        KC_TRNS,  KC_TRNS,            KC_TRNS         ),
+
+[2] = LAYOUT_60_hhkb( /* Empty for dynamic keymaps */
+    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, 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,  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,  KC_TRNS,            KC_TRNS          ),
+
+[3] = LAYOUT_60_hhkb( /* Empty for dynamic keymaps */
+    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, 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,  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,  KC_TRNS,            KC_TRNS          ),
+};
+
+void matrix_init_user(void) {
+  //user initialization
+}
+
+void matrix_scan_user(void) {
+  //user matrix
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  return true;
+}
\ No newline at end of file
diff --git a/keyboards/hs60/v2/keymaps/hhkb_via/readme.md b/keyboards/hs60/v2/keymaps/hhkb_via/readme.md
new file mode 100644 (file)
index 0000000..ea9803c
--- /dev/null
@@ -0,0 +1,6 @@
+The default keymap for HHKB HS60 V2. VIA support enabled.
+=========================================================
+
+![Layout image](https://imgur.com/usbrQWL.png)
+
+Default layer is normal HHKB with 7U space. Fn layer is used for RGB functions, Volume control and arrow cluster
\ No newline at end of file
diff --git a/keyboards/hs60/v2/keymaps/hhkb_via/rules.mk b/keyboards/hs60/v2/keymaps/hhkb_via/rules.mk
new file mode 100644 (file)
index 0000000..a2850a8
--- /dev/null
@@ -0,0 +1,66 @@
+# project specific files
+SRC =  keyboards/zeal60/zeal60.c \
+               keyboards/zeal60/rgb_backlight.c \
+               drivers/issi/is31fl3733.c \
+               quantum/color.c \
+               drivers/arm/i2c_master.c
+
+## chip/board settings
+#   the next two should match the directories in
+#   <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
+MCU_FAMILY = STM32
+MCU_SERIES = STM32F3xx
+
+# Linker script to use
+#   it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
+#   or <this_dir>/ld/
+MCU_LDSCRIPT = STM32F303xC
+
+# Startup code to use
+#  - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/
+MCU_STARTUP = stm32f3xx
+
+# Board: it should exist either in <chibios>/os/hal/boards/
+#  or <this_dir>/boards
+BOARD = GENERIC_STM32_F303XC
+
+# Cortex version
+MCU  = cortex-m4
+
+# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
+ARMV = 7
+
+USE_FPU = yes
+
+# Vector table for application
+# 0x00000000-0x00001000 area is occupied by bootlaoder.*/
+# The CORTEX_VTOR... is needed only for MCHCK/Infinity KB
+# OPT_DEFS = -DCORTEX_VTOR_INIT=0x08005000
+OPT_DEFS =
+
+# Do not put the microcontroller into power saving mode
+# when we get USB suspend event. We want it to keep updating
+# backlight effects.
+OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
+
+# Options to pass to dfu-util when flashing
+DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave
+
+# Build Options
+#   comment out to disable the options.
+#
+BACKLIGHT_ENABLE = no              # Enable keyboard backlight functionality
+BOOTMAGIC_ENABLE = no              # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes              # Mouse keys
+EXTRAKEY_ENABLE = yes              # Audio control and System control
+CONSOLE_ENABLE = no                # Console for debug
+COMMAND_ENABLE = no                # Commands for debug and configuration
+SLEEP_LED_ENABLE = no              # Breathing sleep LED during USB suspend
+NKRO_ENABLE = yes                  # USB Nkey Rollover
+AUDIO_ENABLE = no                  # Audio output on port C6
+NO_USB_STARTUP_CHECK = no          # Disable initialization only when usb is plugged in
+#SERIAL_LINK_ENABLE = yes
+
+RAW_ENABLE = yes
+DYNAMIC_KEYMAP_ENABLE = yes
+CIE1931_CURVE = yes
diff --git a/keyboards/hs60/v2/keymaps/iso_andys8/rules.mk b/keyboards/hs60/v2/keymaps/iso_andys8/rules.mk
new file mode 100644 (file)
index 0000000..a2850a8
--- /dev/null
@@ -0,0 +1,66 @@
+# project specific files
+SRC =  keyboards/zeal60/zeal60.c \
+               keyboards/zeal60/rgb_backlight.c \
+               drivers/issi/is31fl3733.c \
+               quantum/color.c \
+               drivers/arm/i2c_master.c
+
+## chip/board settings
+#   the next two should match the directories in
+#   <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
+MCU_FAMILY = STM32
+MCU_SERIES = STM32F3xx
+
+# Linker script to use
+#   it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
+#   or <this_dir>/ld/
+MCU_LDSCRIPT = STM32F303xC
+
+# Startup code to use
+#  - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/
+MCU_STARTUP = stm32f3xx
+
+# Board: it should exist either in <chibios>/os/hal/boards/
+#  or <this_dir>/boards
+BOARD = GENERIC_STM32_F303XC
+
+# Cortex version
+MCU  = cortex-m4
+
+# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
+ARMV = 7
+
+USE_FPU = yes
+
+# Vector table for application
+# 0x00000000-0x00001000 area is occupied by bootlaoder.*/
+# The CORTEX_VTOR... is needed only for MCHCK/Infinity KB
+# OPT_DEFS = -DCORTEX_VTOR_INIT=0x08005000
+OPT_DEFS =
+
+# Do not put the microcontroller into power saving mode
+# when we get USB suspend event. We want it to keep updating
+# backlight effects.
+OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
+
+# Options to pass to dfu-util when flashing
+DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave
+
+# Build Options
+#   comment out to disable the options.
+#
+BACKLIGHT_ENABLE = no              # Enable keyboard backlight functionality
+BOOTMAGIC_ENABLE = no              # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes              # Mouse keys
+EXTRAKEY_ENABLE = yes              # Audio control and System control
+CONSOLE_ENABLE = no                # Console for debug
+COMMAND_ENABLE = no                # Commands for debug and configuration
+SLEEP_LED_ENABLE = no              # Breathing sleep LED during USB suspend
+NKRO_ENABLE = yes                  # USB Nkey Rollover
+AUDIO_ENABLE = no                  # Audio output on port C6
+NO_USB_STARTUP_CHECK = no          # Disable initialization only when usb is plugged in
+#SERIAL_LINK_ENABLE = yes
+
+RAW_ENABLE = yes
+DYNAMIC_KEYMAP_ENABLE = yes
+CIE1931_CURVE = yes
diff --git a/keyboards/hs60/v2/keymaps/stanrc85/rules.mk b/keyboards/hs60/v2/keymaps/stanrc85/rules.mk
new file mode 100644 (file)
index 0000000..a2850a8
--- /dev/null
@@ -0,0 +1,66 @@
+# project specific files
+SRC =  keyboards/zeal60/zeal60.c \
+               keyboards/zeal60/rgb_backlight.c \
+               drivers/issi/is31fl3733.c \
+               quantum/color.c \
+               drivers/arm/i2c_master.c
+
+## chip/board settings
+#   the next two should match the directories in
+#   <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
+MCU_FAMILY = STM32
+MCU_SERIES = STM32F3xx
+
+# Linker script to use
+#   it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
+#   or <this_dir>/ld/
+MCU_LDSCRIPT = STM32F303xC
+
+# Startup code to use
+#  - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/
+MCU_STARTUP = stm32f3xx
+
+# Board: it should exist either in <chibios>/os/hal/boards/
+#  or <this_dir>/boards
+BOARD = GENERIC_STM32_F303XC
+
+# Cortex version
+MCU  = cortex-m4
+
+# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
+ARMV = 7
+
+USE_FPU = yes
+
+# Vector table for application
+# 0x00000000-0x00001000 area is occupied by bootlaoder.*/
+# The CORTEX_VTOR... is needed only for MCHCK/Infinity KB
+# OPT_DEFS = -DCORTEX_VTOR_INIT=0x08005000
+OPT_DEFS =
+
+# Do not put the microcontroller into power saving mode
+# when we get USB suspend event. We want it to keep updating
+# backlight effects.
+OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
+
+# Options to pass to dfu-util when flashing
+DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave
+
+# Build Options
+#   comment out to disable the options.
+#
+BACKLIGHT_ENABLE = no              # Enable keyboard backlight functionality
+BOOTMAGIC_ENABLE = no              # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes              # Mouse keys
+EXTRAKEY_ENABLE = yes              # Audio control and System control
+CONSOLE_ENABLE = no                # Console for debug
+COMMAND_ENABLE = no                # Commands for debug and configuration
+SLEEP_LED_ENABLE = no              # Breathing sleep LED during USB suspend
+NKRO_ENABLE = yes                  # USB Nkey Rollover
+AUDIO_ENABLE = no                  # Audio output on port C6
+NO_USB_STARTUP_CHECK = no          # Disable initialization only when usb is plugged in
+#SERIAL_LINK_ENABLE = yes
+
+RAW_ENABLE = yes
+DYNAMIC_KEYMAP_ENABLE = yes
+CIE1931_CURVE = yes
index cca15190a5b1ea5d888d7c1ddc71b89a4d513bf5..c89d90969572eafc7cd9cc01d558f193ef9a379e 100644 (file)
@@ -1 +1,66 @@
+# project specific files
+SRC =  keyboards/zeal60/zeal60.c \
+               keyboards/zeal60/rgb_backlight.c \
+               drivers/issi/is31fl3733.c \
+               quantum/color.c \
+               drivers/arm/i2c_master.c
+
+## chip/board settings
+#   the next two should match the directories in
+#   <chibios>/os/hal/ports/$(MCU_FAMILY)/$(MCU_SERIES)
+MCU_FAMILY = STM32
+MCU_SERIES = STM32F3xx
+
+# Linker script to use
+#   it should exist either in <chibios>/os/common/ports/ARMCMx/compilers/GCC/ld/
+#   or <this_dir>/ld/
+MCU_LDSCRIPT = STM32F303xC
+
+# Startup code to use
+#  - it should exist in <chibios>/os/common/startup/ARMCMx/compilers/GCC/mk/
+MCU_STARTUP = stm32f3xx
+
+# Board: it should exist either in <chibios>/os/hal/boards/
+#  or <this_dir>/boards
+BOARD = GENERIC_STM32_F303XC
+
+# Cortex version
+MCU  = cortex-m4
+
+# ARM version, CORTEX-M0/M1 are 6, CORTEX-M3/M4/M7 are 7
+ARMV = 7
+
+USE_FPU = yes
+
+# Vector table for application
+# 0x00000000-0x00001000 area is occupied by bootlaoder.*/
+# The CORTEX_VTOR... is needed only for MCHCK/Infinity KB
+# OPT_DEFS = -DCORTEX_VTOR_INIT=0x08005000
+OPT_DEFS =
+
+# Do not put the microcontroller into power saving mode
+# when we get USB suspend event. We want it to keep updating
+# backlight effects.
+OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
+
+# Options to pass to dfu-util when flashing
+DFU_ARGS = -d 0483:df11 -a 0 -s 0x08000000:leave
+
+# Build Options
+#   comment out to disable the options.
+#
+BACKLIGHT_ENABLE = no              # Enable keyboard backlight functionality
 BOOTMAGIC_ENABLE = yes             # Virtual DIP switch configuration
+MOUSEKEY_ENABLE = yes              # Mouse keys
+EXTRAKEY_ENABLE = yes              # Audio control and System control
+CONSOLE_ENABLE = no                # Console for debug
+COMMAND_ENABLE = no                # Commands for debug and configuration
+SLEEP_LED_ENABLE = no              # Breathing sleep LED during USB suspend
+NKRO_ENABLE = yes                  # USB Nkey Rollover
+AUDIO_ENABLE = no                  # Audio output on port C6
+NO_USB_STARTUP_CHECK = no          # Disable initialization only when usb is plugged in
+#SERIAL_LINK_ENABLE = yes
+
+RAW_ENABLE = yes
+DYNAMIC_KEYMAP_ENABLE = yes
+CIE1931_CURVE = yes
index a2850a83057d400490679023cc9a214f30b682d7..5659d28c9ff1017a7a6795e45b53cb759e79db8d 100644 (file)
@@ -61,6 +61,6 @@ AUDIO_ENABLE = no                  # Audio output on port C6
 NO_USB_STARTUP_CHECK = no          # Disable initialization only when usb is plugged in
 #SERIAL_LINK_ENABLE = yes
 
-RAW_ENABLE = yes
-DYNAMIC_KEYMAP_ENABLE = yes
+RAW_ENABLE = no
+DYNAMIC_KEYMAP_ENABLE = no
 CIE1931_CURVE = yes
index 89fa9a534d33954482fa49e2f22336eac143cf1d..13a8a420d2fa9b8d45670ad8209e82b782a53bb3 100644 (file)
@@ -24,13 +24,13 @@ enum custom_keycodes {
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 /* Keymap (Base Layer) Default Layer
    * ,----------------------------------------------------------------.
-   * |Esc | 1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backsp |~ ` |
+   * |Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|Backsp |Home|
    * |----------------------------------------------------------------|
-   * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|  \  |Del |
+   * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|  \  |PgUp|
    * |----------------------------------------------------------------|
-   * |CAPS   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return |PgUp|
+   * |Ctrl   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return |PgDn|
    * |----------------------------------------------------------------|
-   * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift | Up|PgDn|
+   * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift | Up|End |
    * |----------------------------------------------------------------|
    * |Ctrl|Win |Alt |        Space          |Alt| FN|Ctrl|Lef|Dow|Rig |
    * `----------------------------------------------------------------'
@@ -44,15 +44,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
   /* Keymap Fn Layer
    * ,----------------------------------------------------------------.
-   * |   | F1|F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Del    |Ins |
+   * |~ `|F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Del    |Ins |
    * |----------------------------------------------------------------|
-   * |     |   |Up |   |   |   |   |   |   |   |   |   |   |     |Hme |
+   * |Caps |   |Up |   |   |   |   |   |PSc|SLk|Pau|Up |   |     |    |
    * |----------------------------------------------------------------|
-   * |      |<- |Dn | ->|   |   |   |   |   |   |   |   |        |End |
+   * |      |Lef|Dow|Rig|   |   |   |   |Hom|PUp|Lef|Rig|        |    |
    * |----------------------------------------------------------------|
-   * |        |   |   |Bl-|BL |BL+|   |VU-|VU+|MUT|   |   McL|MsU|McR |
+   * |        |   |   |   |   |   |   |   |End|PDn|Dow|      |PUp|    |
    * |----------------------------------------------------------------|
-   * |    |    |    |                       |   |   |    |MsL|MsD|MsR |
+   * |    |    |    |                       |   |   |    |Hom|PDn|End |
    * `----------------------------------------------------------------'
    */
 [1] = LAYOUT_65_ansi(
index 6a9398dff9040750b0d6a3c004d958567fb108fc..e299a53b48493964a999b4bc0d23a8752576bc85 100644 (file)
@@ -2,7 +2,7 @@
 #include QMK_KEYBOARD_H
 
 enum layers {
-  BA,           // Base        (Balance Twelve mirror varian)
+  BA,           // Base (Balance Twelve mirror variant)
   P1,           // Punctuation (1)
   P2,           // Punctuation (2)
   P3,           // Punctuation (2)
diff --git a/keyboards/planck/keymaps/cbbrowne/readme.md b/keyboards/planck/keymaps/cbbrowne/readme.md
deleted file mode 100644 (file)
index e55b130..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-cbbrowne custom keyboard
-==============================
-
-Due to cbbrowne@acm.org
-Christopher Browne
-
-This was originally based on the default keyboard map, but I have been
-doing sundry experimentation:
-
-1. Useful Experiments
-----------------------------------------
-
- * It made sense to mess around some with keyboard maps.
-   - I added a keypad, originally based on keymaps/numpad.c, but
-     mighty substantially revised, as that one seems to be rotated 90
-     degrees from usual conventions for number pads
- * The keypad layer also includes some sample "hacks" of cool things,
-   all using actions attached in using the function action_get_macro()
-   - Key [1][2] aka "q" types out my name, cbbrowne, as a fun example
-     of a key generating a bunch of keystrokes.  The keystroke is
-     sufficiently inconvenient that it isn't terribly practical for me
-     to use it, but hey, it shows how others might use this facility
-     in a more useful context.
-   - Key [2][2] aka "a" uses a random number generator to select a digit 0-9 at random
-   - Key [3][2] aka "z" uses a random number generator to select a letter a-z at random
-   - Key [1][3] aka "e" spits out the keymap version number
-  * Trying out sgoodwin's "hold Enter down to get Shift"
-    - Liking this Quite Well Enough...
-    - Applied this to both Shift and Quote
-    - It seems likely that Alt should get a right-hand-side, akin to this...
-    - Alt needs to move, and get a RHS
-      - Hence ALTRIGHT, and shifted ROT_LED over
-      - Emacs likes this!!!  :-)
-    - I'm suspicious that I'll want to shift ROT_LED another location over,
-      so some modifier can replace the OS/KC_LGUI key
-  * I have added an alternate ADJUST layer that is activated via update_tri_layer()
-    - e.g. - LOWER+RAISE simultaneously
-    - This seems entirely more useful for handling my "special keys"
-      like the random numbers, user name, and such, than the keypad layer
-  * The _ADJUST layer provides a good place to have RESET
-    - But this isn't strictly enough; I want RESET somewhat accessible from
-      main layer lest an error hide that layer
-    - I never use the OS/KC_LGUI key (that's Command on MacOS, Windows
-      Key on Windows), so that's a good place to have it as a chord of
-      some sort
-        
-
-2. Some code structure ideas
----------------------------------------------------
-
-   Each layer is given a name to aid in readability, which is then
-   used in the keymap matrix below.  The underscores do not denote
-   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 could also skip them entirely and just use numbers, though that
-   means needing to manage the numbers.
-
-   It is preferable to keep the symbols short so that a line worth of
-   key mappings fits compactly onto a line of code.  It might be an
-   interesting idea to express the maps rotated 90%, so that you
-   only need to fit 4 symbols onto each line, rather than 12.
-
-   I use enums to manage layer IDs and macro IDs so that I don't need
-   to care (beyond "start at 0", and arguably even that's not needed)
-   about their values.
-
-3. Things I did not like about the default mapping
----------------------------------------------------------
-
-   * I found control too hard to get to.  I use it more than Tab, so
-     switched it there.
-   * Having dash on [lower-j] is a bit nonintuitive, but may be OK
-   * I switched ESC/TAB/M(0) around
-   * I'm suspicious that I want to shift M(0) from [4][1] to [4][2],
-     and shift ESC off the first column so KC_LCTL and KC_LALT can
-     be on the first column.
-   * I needed to swap ' and ENTER
-
-4. Unuseful experiments
----------------------------------------------------------
-
-I have tried some things out that didn't turn out particularly well.
-I'll note some of these for posterity, hopefully helpful in not doing
-unwise things again...
-
-   * I tried added Workman alongside Dvorak and Colemak
-     - Boy, oh boy, these don't help!!!
-     - I have done 30 years of learning of Emacs key mappings, and
-       these alternative keyboards massively mess me up
-
-   * Space Cadet Shift; switching L_SHIFT to KC_LSP0, so that when I
-     just hit SHIFT, I get a left parens.  In principle, this is great
-     for Lisping.
-     - Unfortunately, there are times when mouse interfaces use SHIFT
-       to allow selecting multiple items, and this really interferes
-        with that
-
-5. TODO
----------------------------------------------------------
-
-  * I use tmux quite a lot; the mollat keymap seems to have some
-    interesting helpers.  It might be interesting to add a "tmux
-    layer," or to have a few keys in a layer oriented towards that
-    - Keys for...
-      - Picking windows 0 thru 8
-      - next/prev/new window
-  * The mollat tmux layer also suggests some thoughts about Emacs
-    helpers.    
-  * I do not presently have anything that handles X11 screen
-    switching, as with Control-Alt-various
-  * I ought to probably look into KC_LEAD, to have some key combos
-    that do not need to be concurrent
-  * The jeebak keymap seems to have some neat ideas:
-    - Number layer which is aggressive about having numbers in several places
-    - TouchCursor layer seems interesting
-      - It sets up a layer with cursor keys on the home keys
-  * The jeremy-dev keymap has some very interesting concepts
-    - Shift hands outwards; the special keys go in the center
-    - Symbol layer has some compound keys for C operators like /=, *=, -=, +=, ...
-    - This is likely what I'll use for my XD75re, and maybe I'll fork a
-      planck keymap for similar
diff --git a/keyboards/planck/keymaps/cbbrowne/readme.org b/keyboards/planck/keymaps/cbbrowne/readme.org
new file mode 100644 (file)
index 0000000..2b10058
--- /dev/null
@@ -0,0 +1,117 @@
+* cbbrowne custom keyboard
+
+  Due to cbbrowne@acm.org
+  Christopher Browne
+
+  This was originally based on the default keyboard map, but I have
+  been doing sundry experimentation:
+
+** Useful Experiments
+
+ - It made sense to mess around some with keyboard maps.
+   - I added a keypad, originally based on keymaps/numpad.c, but
+     mighty substantially revised, as that one seems to be rotated 90
+     degrees from usual conventions for number pads
+ - The keypad layer also includes some sample "hacks" of cool things,
+   all using actions attached in using the function action_get_macro()
+   - Key [1][2] aka "q" types out my name, cbbrowne, as a fun example
+     of a key generating a bunch of keystrokes.  The keystroke is
+     sufficiently inconvenient that it isn't terribly practical for me
+     to use it, but hey, it shows how others might use this facility
+     in a more useful context.
+   - Key [2][2] aka "a" uses a random number generator to select a digit 0-9 at random
+   - Key [3][2] aka "z" uses a random number generator to select a letter a-z at random
+   - Key [1][3] aka "e" spits out the keymap version number
+  - Trying out sgoodwin's "hold Enter down to get Shift"
+    - Liking this Quite Well Enough...
+    - Applied this to both Shift and Quote
+    - It seems likely that Alt should get a right-hand-side, akin to this...
+    - Alt needs to move, and get a RHS
+      - Hence ALTRIGHT, and shifted ROT_LED over
+      - Emacs likes this!!!  :-)
+    - I'm suspicious that I'll want to shift ROT_LED another location over,
+      so some modifier can replace the OS/KC_LGUI key
+  - I have added an alternate ADJUST layer that is activated via update_tri_layer()
+    - e.g. - LOWER+RAISE simultaneously
+    - This seems entirely more useful for handling my "special keys"
+      like the random numbers, user name, and such, than the keypad layer
+  - The _ADJUST layer provides a good place to have RESET
+    - But this isn't strictly enough; I want RESET somewhat accessible from
+      main layer lest an error hide that layer
+    - I never use the OS/KC_LGUI key (that's Command on MacOS, Windows
+      Key on Windows), so that's a good place to have it as a chord of
+      some sort
+        
+
+** Some code structure ideas
+
+   Each layer is given a name to aid in readability, which is then
+   used in the keymap matrix below.  The underscores do not denote
+   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 could also skip them entirely and just use numbers, though that
+   means needing to manage the numbers.
+
+   It is preferable to keep the symbols short so that a line worth of
+   key mappings fits compactly onto a line of code.  It might be an
+   interesting idea to express the maps rotated 90%, so that you
+   only need to fit 4 symbols onto each line, rather than 12.
+
+   I use enums to manage layer IDs and macro IDs so that I don't need
+   to care (beyond "start at 0", and arguably even that's not needed)
+   about their values.
+
+** Things I did not like about the default mapping
+
+
+   - I found control too hard to get to.  I use it more than Tab, so
+     switched it there.
+   - Having dash on [lower-j] is a bit nonintuitive, but may be OK
+   - I switched ESC/TAB/M(0) around
+   - I'm suspicious that I want to shift M(0) from [4][1] to [4][2],
+     and shift ESC off the first column so KC_LCTL and KC_LALT can
+     be on the first column.
+   - I needed to swap ' and ENTER
+
+** Unuseful experiments
+
+I have tried some things out that didn't turn out particularly well.
+I'll note some of these for posterity, hopefully helpful in not doing
+unwise things again...
+
+   - I tried added Workman alongside Dvorak and Colemak
+     - Boy, oh boy, these don't help!!!
+     - I have done 30 years of learning of Emacs key mappings, and
+       these alternative keyboards massively mess me up
+
+   - Space Cadet Shift; switching L_SHIFT to KC_LSP0, so that when I
+     just hit SHIFT, I get a left parens.  In principle, this is great
+     for Lisping.
+     - Unfortunately, there are times when mouse interfaces use SHIFT
+       to allow selecting multiple items, and this really interferes
+        with that
+
+** TODO
+
+  - I use tmux quite a lot; the mollat keymap seems to have some
+    interesting helpers.  It might be interesting to add a "tmux
+    layer," or to have a few keys in a layer oriented towards that
+    - Keys for...
+      - Picking windows 0 thru 8
+      - next/prev/new window
+  - The mollat tmux layer also suggests some thoughts about Emacs
+    helpers.    
+  - I do not presently have anything that handles X11 screen
+    switching, as with Control-Alt-various
+  - I ought to probably look into KC_LEAD, to have some key combos
+    that do not need to be concurrent
+  - The jeebak keymap seems to have some neat ideas:
+    - Number layer which is aggressive about having numbers in several places
+    - TouchCursor layer seems interesting
+      - It sets up a layer with cursor keys on the home keys
+  - The jeremy-dev keymap has some very interesting concepts
+    - Shift hands outwards; the special keys go in the center
+    - Symbol layer has some compound keys for C operators like /=, *=, -=, +=, ...
+    - This is likely what I'll use for my XD75re, and maybe I'll fork a
+      planck keymap for similar
diff --git a/keyboards/planck/keymaps/vxid/config.h b/keyboards/planck/keymaps/vxid/config.h
new file mode 100644 (file)
index 0000000..6f70f09
--- /dev/null
@@ -0,0 +1 @@
+#pragma once
diff --git a/keyboards/planck/keymaps/vxid/keymap.c b/keyboards/planck/keymaps/vxid/keymap.c
new file mode 100644 (file)
index 0000000..51d1daa
--- /dev/null
@@ -0,0 +1,49 @@
+#include QMK_KEYBOARD_H
+
+extern keymap_config_t keymap_config;
+
+enum planck_layers {
+  _QWERTY,
+  _LOWER,
+  _RAISE,
+  _ADJUST
+};
+
+#define LOWER MO(_LOWER)
+#define RAISE MO(_RAISE)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[_QWERTY] = LAYOUT_planck_grid(
+    KC_ESC,  KC_Q,    KC_W,    KC_E,  KC_R,  KC_T,    KC_Y,   KC_U,   KC_I,    KC_O,    KC_P,    KC_BSPC,
+    KC_TAB,  KC_A,    KC_S,    KC_D,  KC_F,  KC_G,    KC_H,   KC_J,   KC_K,    KC_L,    KC_SCLN, 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_BSLS,
+    KC_LCTL, KC_LGUI, KC_LALT, LOWER, RAISE, KC_MINS, KC_SPC, KC_EQL, KC_LBRC, KC_RBRC, KC_QUOT, KC_GRV
+),
+
+[_LOWER] = LAYOUT_planck_grid(
+    _______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   _______, _______, _______, _______, _______,  _______, KC_DEL,
+    _______, KC_F5,   KC_F6,   KC_F7,   KC_F8,   _______, KC_LEFT, KC_DOWN, KC_UP,   KC_RIGHT, _______, _______,
+    _______, KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, _______, _______, _______, _______,  _______, _______,
+    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,  _______, _______
+),
+
+[_RAISE] = LAYOUT_planck_grid(
+    _______, KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC,
+    _______, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
+    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+),
+
+[_ADJUST] = LAYOUT_planck_grid(
+    RESET,   DEBUG,   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
+)
+
+};
+
+uint32_t layer_state_set_user(uint32_t state) {
+  return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
+}
diff --git a/keyboards/planck/keymaps/vxid/readme.md b/keyboards/planck/keymaps/vxid/readme.md
new file mode 100644 (file)
index 0000000..9e0ae33
--- /dev/null
@@ -0,0 +1,13 @@
+# vxid planck layout
+
+## Layout
+
+This planck layout aims at proviging most symbols on the base layer while remaining usable.
+The minus and space keys become alt and gui modifiers when pressed.
+Arrow keys are located on hjkl on the lower layer.
+
+## Building
+
+```
+    make planck/rev6:vxid:dfu-util
+```
index d6734d620b42804962887c43a8efc271fab08e8d..96d0c1c36c32a5e2be972cc5ab6ec69313e60773 100644 (file)
@@ -12,7 +12,6 @@
     "LAYOUT_iso": {
       "key_count": 68,
       "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Home", "x":15, "y":0}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"x":13.75, "y":1, "w":1.25, "h":2}, {"label":"PgUp", "x":15, "y":1}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"x":12.75, "y":2}, {"label":"PgDn", "x":15, "y":2}, {"x":0, "y":3, "w":1.25}, {"x":1.25, "y":3}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":1.75}, {"label":"\u2191", "x":14, "y":3}, {"label":"Fn", "x":15, "y":3}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"\u2190", "x":13, "y":4}, {"label":"\u2193", "x":14, "y":4}, {"label":"\u2192", "x":15, "y":4}]
-    },
+    }
   }
 }
-}
index 1bebf2d11f37746030cd05f357b50ad5f3e35295..b20cafabc99c00331c8ab19b82a4371a2790afa5 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright 2017 REPLACE_WITH_YOUR_NAME
+/* Copyright 2017 Christopher B Browne
  *
  * 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
@@ -62,12 +62,7 @@ enum macro_id {
 #define FUNCTION MO(_FUNCTION)
 #define MRAISE MO(_RAISE)
 #define MLOWER MO(_LOWER)
-#define ALTBSP ALT_T(KC_BSPC)
-
-/* More modifiers for QCENT2... */
-#define PALT MT(KC_RALT, KC_P)
-#define SCTL MT(KC_RCTL, KC_SCLN)
-#define SSHF MT(KC_RSFT, KC_SLSH)
+#define ALTPLUS ALT_T(KC_PLUS)
   
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
@@ -84,7 +79,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * | BRITE  | LCTRL  | LALT   | LGUI   | RAISE  | XXXXXX . SPACE  | LOWER  | RGUI   | RALT   | RCTRL  | FN     | LEFT   | DOWN   | RIGHT  |
  * '--------------------------------------------------------------------------------------------------------------------------------------'
  */
-       
+
   /* layout for centred keypad + qwerty...
 
 |ESC| 1 | 2 | 3 | 4 | 5 | ? | ? | ? | ? | 6 | 7 | 8 | 9 | 0 |
@@ -94,40 +89,35 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 |ALT|LED|   |   |   |   |   |   |   |   |   |   |   |   |   |
 
 
-
-
 keys needing to be assigned:
-11 - KC_TAB - tab
-52 - ROT_LED - rotate LED
+51 - KC_TAB - tab
+   - ROT_LED - rotate LED
 15 - KC_LALT - Left ALT
-   - KC_LGUI  - this is the windows/command key, which I think I do not use...
-   - M_LOWER - switch to LOWER layer 
-   - KC_SPC - space
-   - M_UPPER - switch to UPPER layer, maybe unneeded for 15x5
-   - KC_LEFT - famous arrows
-   - KC_DOWN - famous arrows
-   - KC_UP - famous arrows
-   - KC_RIGHT - famous arrows
-   - KC_ENT - enter
+53,55 - M_RAISE - switch to RAISE layer 
+5b - M_LOWER - switch to LOWER layer 
+56,59,5a   - KC_SPC - space
+5c - KC_LEFT - famous arrows
+5d - KC_DOWN - famous arrows
+5e - KC_UP - famous arrows
+5f - KC_RIGHT - famous arrows
+3f - KC_ENT - enter
    - KC_GRV - leftwards quote
-   - KC_QUOT - rightwards quote
-   - KC_BSPC - backspace
-   - KC_ESC
+4f - KC_QUOT - rightwards quote
+1f - KC_BSPC - backspace
+11 - KC_ESC
+19 - KC_GRV - ` - raised
+19 - KC_TILD - ~ - lowered
 
-Missing still...  
-   KC_LBRC and KC_LCBR
-   KC_RBRC and KC_RCBR
+  */
 
-  */  
+[_QWERTY] = LAYOUT_ortho_5x15( /* QWERTY, with keypad in the centre */
+      KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,   KC_EQL, KC_MINS, KC_EQL,   KC_6,    KC_7,    KC_8,    KC_9,    KC_0, KC_BSPC ,
+      KC_LALT, KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,   KC_7,    KC_8,   KC_EQL,  KC_Y,    KC_U,    KC_I,    KC_O,    KC_P, ALTPLUS ,
+      KC_LCTL, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,   KC_LBRC, KC_RBRC,KC_MINS, KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, CTLENTER ,
+      KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,   KC_PGUP, KC_EQL,   KC_BSLS, KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, SHIFTQUOTE ,
+       KC_TAB,  FUNCTION, MRAISE,  FUNCTION, MRAISE, KC_SPC,KC_PGDN,  KC_MINS, KC_SPC, KC_SPC,  MLOWER, KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT 
+),
 
-   [_QWERTY] = { /* QWERTY, with keypad in the centre */
-     { KC_ESC,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,   KC_EQL, KC_MINS, RESET,   KC_6,    KC_7,    KC_8,    KC_9,    KC_0, KC_BSPC },
-     { KC_LALT, KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,   KC_7,    KC_8,   KC_EQL,  KC_Y,    KC_U,    KC_I,    KC_O,    KC_P, KC_PLUS },
-     { KC_LCTL, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,   KC_4,    KC_5,   KC_MINS, KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, CTLENTER },
-     { KC_LSFT, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,   KC_1,    KC_2,   KC_BSLS, KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, SHIFTQUOTE },
-     { KC_TAB,  FUNCTION, MRAISE,  FUNCTION, MRAISE, KC_SPC,  KC_0,  KC_MINS, KC_SPC, KC_SPC,  MLOWER, KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT }
-   },
-       
 /* LOWER
  * .---------------------------------------------------------------------------------------------------------------------- 2u ------------.
  * |        | F1     | F2     | F3     | F4     | F5     | F6     | F7     | F8     | F9     | F10    | F11    | F12    | XXXXXX .        |
@@ -142,13 +132,13 @@ Missing still...
  * '--------------------------------------------------------------------------------------------------------------------------------------'
  */
  
- [_LOWER] = { /* LOWERED */
-   { ___T___, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,  _______, _______, _______, KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11 },
-  { ___T___, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, _______, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_INS   },
-   { ___T___, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,  _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, _______ },
-   { _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, _______, _______, _______, _______, ___T___, ___T___, _______ },
-  { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______  },
},
+[_LOWER] = LAYOUT_ortho_5x15( /* LOWERED */
+    ___T___, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,  _______, _______, KC_TILD,  KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11 ,
+    ___T___, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, _______, _______, _______, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_INS  ,
+    ___T___, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,  _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE ,
+    _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, _______, _______, _______, _______, ___T___, ___T___, _______ ,
+    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ 
),
 
 /* RAISED
  * .---------------------------------------------------------------------------------------------------------------------- 2u ------------.
@@ -164,13 +154,13 @@ Missing still...
  * '--------------------------------------------------------------------------------------------------------------------------------------'
  */
  
- [_RAISE] = { /* RAISED */
-  { KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   _______, _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  ___T___ },
-  { KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    _______, _______, KC_7,    KC_8,    KC_9,    KC_0,    _______, _______, KC_INS   },
-  { KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   _______, _______, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS, ___T___, ___T___ },
-  { KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  _______, _______, _______, _______, _______, ___T___, ___T___, _______, _______  },
-  { _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______  },
- },
+[_RAISE] = LAYOUT_ortho_5x15 ( /* RAISED */
+   KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,  MVERSION, _______, KC_GRV,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  ___T___ ,
+   KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,   USERNAME, _______, KC_7,    KC_8,    KC_LCBR, KC_RCBR,    _______, _______, KC_INS   ,
+   KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   RANDDIG, _______, KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS, ___T___, ___T___ ,
+   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  RANDALP, _______, _______, _______, _______, ___T___, ___T___, _______, _______  ,
+   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______  
+),
  
 /* FUNCTION
  * .---------------------------------------------------------------------------------------------------------------------- 2u ------------.
@@ -178,21 +168,21 @@ Missing still...
  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+-----------------|
  * | SCR LK | F13    | F14    | F15    | F16    | F17    | F18    | F19    | F20    | F21    | F22    | F23    | F24    | PAUSE  | PR SCR |
  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ------------+--------|
- * | CAP LK | MS BT5 | MS BT4 | MS BT3 | MS BT2 | SLOW M | FAST M | NEXT   | VOL+   | VOL-   | PLAY   |        | XXXXXX .        | WHEEL+ |
+ * | CAP LK | MS BT5 | MS BT4 | MS BT3 | MS BT2 | SLOW M | FAST M | NEXT   | VOL+   | VOL-   | PLAY   |        | XXXXXX |        | WHEEL+ |
  * |--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+- 2u ---------------------+--------|
- * | RGB TG | RGB MD | RGB HI | RGB HD | RGB SI | RGB SD | RGB VI | RGB VD | BL TOG | BL INC | BL DEC | XXXXXX .        | MOUS Un | WHEEL- |
+ * | RGB TG | RGB MD | RGB HI | RGB HD | RGB SI | RGB SD | RGB VI | RGB VD | BL TOG | BL INC | BL DEC | XXXXXX |        | MOUS U | WHEEL- |
  * |--------+--------+--------+--------+--------+-- 2u -----------+--------+--------+--------+--------+-----------------+--------+--------|
  * | RESET  |        | QWERTY | COLEMK | DVORAK | XXXXXX . MS BT1 |        |        |        |        |        | MOUS L | MOUS D | MOUS R |
  * '--------------------------------------------------------------------------------------------------------------------------------------'
  */
  
- [_FUNCTION] = { /* FUNCTION */
-  { KC_NLCK, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  ___T___, ___T___  },
-  { KC_SLCK, KC_F13,  KC_F14,  KC_F15,  KC_F16,  KC_F17,  KC_F18,  KC_F19,  KC_F20,  KC_F21,  KC_F22,  KC_F23,  KC_F24,  KC_PAUS, KC_PSCR  },
-  { KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U  },
-  { RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_TOGG, BL_INC,  BL_DEC,   ___T___, ___T___, KC_MS_U, KC_WH_D  },
-  { RESET  , _______, DF(_QWERTY), DF(_QWERTY), DF(_QWERTY), KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R  },
- },
+[_FUNCTION] = LAYOUT_ortho_5x15( /* FUNCTION */
+   KC_NLCK, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  RESET, RESET,
+   KC_SLCK, KC_F13,  KC_F14,  KC_F15,  KC_F16,  KC_F17,  KC_F18,  KC_F19,  KC_F20,  KC_F21,  KC_F22,  KC_F23,  KC_F24,  KC_PAUS, KC_PSCR  ,
+   KC_CAPS, KC_BTN5, KC_BTN4, KC_BTN3, KC_BTN2, KC_ACL0, KC_ACL2, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, _______, ___T___, ___T___, KC_WH_U  ,
+   RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, BL_TOGG, BL_INC,  BL_DEC,   ___T___, ___T___, KC_MS_U, KC_WH_D  ,
+   RESET  , _______, DF(_QWERTY), DF(_QWERTY), DF(_QWERTY), KC_BTN1, KC_BTN1, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R 
+ )
 };
 
 /* This bit of logic seeds a wee linear congruential random number generator */
@@ -223,8 +213,7 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
     break;
   case M_VERSION:
     if (record->event.pressed) {
-      SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP "@");
-      //      SEND_STRING(QMK_VERSION "@" QMK_BUILDDATE);
+      SEND_STRING(QMK_KEYBOARD "/" QMK_KEYMAP);
     }
     break;
   case M_RANDDIGIT:
@@ -289,3 +278,33 @@ const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
   }
   return MACRO_NONE;
 };
+
+void matrix_init_user(void) {
+  rgblight_enable();
+  rgblight_mode(1);
+  rgblight_sethsv(325,255,255);
+}
+
+uint32_t layer_state_set_user(uint32_t state) {
+  switch(biton32(state)) {
+  case _QWERTY:
+    rgblight_sethsv_white();
+    break;
+  case _LOWER:
+    rgblight_sethsv_blue();
+    break;
+  case _RAISE:
+    rgblight_sethsv_green();
+    break;
+  case _ADJUST:
+    rgblight_sethsv_orange();
+    break;
+  case _FUNCTION:
+    rgblight_sethsv_red();
+    break;
+  default:
+    rgblight_sethsv(325,255,255);
+    break;
+  }
+  return state;
+}
diff --git a/keyboards/xd75/keymaps/cbbrowne/rules.mk b/keyboards/xd75/keymaps/cbbrowne/rules.mk
new file mode 100644 (file)
index 0000000..0968298
--- /dev/null
@@ -0,0 +1,24 @@
+# Build Options
+#   change to "no" to disable the options, or define them in the Makefile in 
+#   the appropriate keymap folder that will get included automatically
+#
+BOOTMAGIC_ENABLE = no       # Virtual DIP switch configuration(+1000)
+MOUSEKEY_ENABLE = no       # Mouse keys(+4700)
+EXTRAKEY_ENABLE = no       # Audio control and System control(+450)
+CONSOLE_ENABLE = no         # Console for debug(+400)
+COMMAND_ENABLE = yes        # Commands for debug and configuration
+NKRO_ENABLE = yes            # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = no      # Enable keyboard backlight functionality
+MIDI_ENABLE = no            # MIDI controls
+AUDIO_ENABLE = no           # Audio output on port C6
+UNICODE_ENABLE = no         # Unicode
+BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = yes        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
+API_SYSEX_ENABLE = no      # Enable SYSEX API (+5390)
+
+# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
+SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend
+
+ifndef QUANTUM_DIR
+       include ../../../../Makefile
+endif
index 37fbcd56a471bb8ce6df83778d7acd4ff6e84b3b..2c69d5160e81c166d39f5d84fe7e19c82d87d1b0 100644 (file)
@@ -1,26 +1,24 @@
-# Symbolic ortho 4x12 layout 
+# Symbolic  ortho 4x12 layout 
 
 ## Features
 
 ### QWERTY based 
 
-![QWERTY layout](https://gist.githubusercontent.com/leico/cb50ecd12eb8ad906a69678f265cd52c/raw/4597497ecd00790312f1a3928b2e2c5cf17a6ac1/QWERTY.png)
-
+![QWERTY layout](https://gist.githubusercontent.com/leico/5bf4d9ff94f2068c5333739f7f1f88b4/raw/2af7fed6f282b6ac278e79433d15887f6b91ba3a/QWERTY.png)
+    
 * Default keymap
 * QWERTY layout
 * Hold and tap 
-    * `Shift` and `Space`
     * `Left Ctrl` and `Tab`
 * Symmetric Modifiers
     * `Shift`
     * `Raise Layer`
     * `Lower Layer`
     * `GUI`
-    * `Reset`
 
 ### symbol charactor layer
 
-![Raise layout](https://gist.githubusercontent.com/leico/cb50ecd12eb8ad906a69678f265cd52c/raw/4597497ecd00790312f1a3928b2e2c5cf17a6ac1/Raise.png)
+![Raise layout](https://gist.githubusercontent.com/leico/5bf4d9ff94f2068c5333739f7f1f88b4/raw/2af7fed6f282b6ac278e79433d15887f6b91ba3a/Raise.png)
 
 * Raise Layer
 * assigned symbolic(punctuation) characters
 
 ### numbers and allows layer
 
-![Lower layout](https://gist.githubusercontent.com/leico/cb50ecd12eb8ad906a69678f265cd52c/raw/4597497ecd00790312f1a3928b2e2c5cf17a6ac1/Lower.png)
+![Lower layout](https://gist.githubusercontent.com/leico/5bf4d9ff94f2068c5333739f7f1f88b4/raw/2af7fed6f282b6ac278e79433d15887f6b91ba3a/Lower.png)
 
 * Lower Layer
 * entrust vim style arrows
 * also numkeys
 * additional, computer volume keys
 * transparent all modifiers
+* **changed 2018/09/04**
+    * assign keys
+        * Home
+        * Page Down
+        * Page Up
+        * End
+        * Print Screen
 
 ### Numpads and F key layer
 
-![Neutral layout](https://gist.githubusercontent.com/leico/cb50ecd12eb8ad906a69678f265cd52c/raw/4597497ecd00790312f1a3928b2e2c5cf17a6ac1/Neutral.png)
+![Neutral layout](https://gist.githubusercontent.com/leico/5bf4d9ff94f2068c5333739f7f1f88b4/raw/2af7fed6f282b6ac278e79433d15887f6b91ba3a/Neutral.png)
 
 * visibled when Raise and Lower layer visibled
 * F keys assigned left hand side
 * Numpads assigned right hand side
     * for that reason, override `RGUI` key
 * transparent mostly modifiers
+* visibled `Reset` key on both hands 
 
 
 ### Goals
@@ -63,7 +69,6 @@
 * simple, minimal, easy learn
 * as soon as possible, don't disable any shortcuts
 
-
 ###  suggestions or find issues
 
 [post issues for my fork](https://github.com/leico/qmk_firmware/issues)
index c29b0770622ab53ea62075a6f8625736897c9141..3f88b4cc17d91edc7839be6a98cb95194ba238bd 100644 (file)
@@ -20,8 +20,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 #pragma once
 
-// hold & tapping delay setting
-#define TAPPING_TERM 100
+
 
 /* Use I2C or Serial, not both */
 
index 1e5494d96ef904b9bfb0e744d9e137bb5297c93b..c2923737111444a8efb8065d88c4df9e9e0260c6 100644 (file)
@@ -19,6 +19,7 @@ enum custom_keycodes {
   R_RAISE
 };
 
+
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 
 /* Qwerty
@@ -30,17 +31,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * | Tab  |   A  |   S  |   D  |   F  |   G  ||   H  |   J  |   K  |   L  |   ;  |Enter |
  * |------+------+------+------+------+------++------+------+------+------+------+------|
  * |      |      |      |      |      |      ||      |      |      |      |      |      |
- * |      |   Z  |   X  |   C  |   V  |   B  ||   N  |   M  |   ,  |   .  |   !  |      |
+ * |Shift |   Z  |   X  |   C  |   V  |   B  ||   N  |   M  |   ,  |   .  |   !  |Shift |
  * |------+------+------+------+------+------++------+------+------+------+------+------|
- * |      |      |      |      |      |LSFT_T||RSFT_T|      |      |      |      |      |
- * |Reset | Alt  | GUI  |LLower|LRaise|Space ||Space |RRaise|RLower| GUI  | Del  |Reset |
+ * |      |      |      |      |      |      ||      |      |      |      |      |      |
+ * |LRaise| Alt  | GUI  |      |LLower|Space ||Space |RLower|      | GUI  | Del  |RRaise|
  * `------------------------------------------------------------------------------------'
  */
 [_QWERTY] = LAYOUT_ortho_4x12( \
-  KC_ESC,         KC_Q,     KC_W,     KC_E,     KC_R,     KC_T,               KC_Y,               KC_U,     KC_I,     KC_O,     KC_P,     KC_BSPC, \
-  LCTL_T(KC_TAB), KC_A,     KC_S,     KC_D,     KC_F,     KC_G,               KC_H,               KC_J,     KC_K,     KC_L,     KC_SCLN,  KC_ENT,  \
-  XXXXXXX,        KC_Z,     KC_X,     KC_C,     KC_V,     KC_B,               KC_N,               KC_M,     KC_COMM,  KC_DOT,   KC_EXLM,  XXXXXXX, \
-  RESET,          KC_LALT,  KC_LGUI,  L_LOWER,  L_RAISE,  LSFT_T( KC_SPC ),   RSFT_T( KC_SPC ),   R_RAISE,  R_LOWER,  KC_RGUI,  KC_DEL,   RESET    \
+  KC_ESC,         KC_Q,     KC_W,     KC_E,     KC_R,     KC_T,     KC_Y,     KC_U,     KC_I,     KC_O,     KC_P,     KC_BSPC, \
+  LCTL_T(KC_TAB), KC_A,     KC_S,     KC_D,     KC_F,     KC_G,     KC_H,     KC_J,     KC_K,     KC_L,     KC_SCLN,  KC_ENT,  \
+  KC_LSFT,        KC_Z,     KC_X,     KC_C,     KC_V,     KC_B,     KC_N,     KC_M,     KC_COMM,  KC_DOT,   KC_EXLM,  KC_RSFT, \
+  L_RAISE,        KC_LALT,  KC_LGUI,  XXXXXXX,  L_LOWER,  KC_SPC,   KC_SPC,   R_LOWER,  XXXXXXX,  KC_RGUI,  KC_DEL,   R_RAISE  \
 ),
 
 /* Raise
@@ -52,16 +53,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * | Tab  |   ~  |   |  |   (  |   )  |   *  ||   /  |   <  |   >  |   '  |   :  |Enter |
  * |------+------+------+------+------+------++------+------+------+------+------+------|
  * |      |      |      |      |      |      ||      |      |      |      |      |      |
- * |      |   `  |   ^  |   @  |   $  |   +  ||   -  |   =  |   _  |   "  |   ?  |      |
+ * |Shift |   `  |   ^  |   @  |   $  |   +  ||   -  |   =  |   _  |   "  |   ?  |Shift |
  * |------+------+------+------+------+------++------+------+------+------+------+------|
- * |      |      |      |      |      |LSFT_T||RSFT_T|      |      |      |      |      |
- * |Reset | Alt  | GUI  |LLower|LRaise|Space ||Space |RRaise|RLower| GUI  | Del  |Reset |
+ * |      |      |      |      |      |      ||      |      |      |      |      |      |
+ * |LRaise| Alt  | GUI  |      |LLower|Space ||Space |RLower|      | GUI  | Del  |RRaise|
  * `------------------------------------------------------------------------------------'
  */
 [_RAISE] = LAYOUT_ortho_4x12( \
   _______,  XXXXXXX,  KC_AMPR,  KC_LCBR,  KC_RCBR,  KC_PERC,  KC_BSLS,  KC_LBRC,  KC_RBRC,  KC_HASH,  XXXXXXX,  _______, \
-  _______,  KC_TILD,  KC_PIPE,  KC_LPRN,  KC_RPRN,  KC_ASTR,  KC_SLSH,  KC_LABK,  KC_RABK,  KC_QUOT,  KC_COLN,  _______, \
-  _______,  KC_GRV,   KC_CIRC,  KC_AT,    KC_DLR,   KC_PLUS,  KC_MINS,  KC_EQL,   KC_UNDS,  KC_DQUO,  KC_QUES,  _______, \
+  _______,  KC_TILD,  KC_PIPE,  KC_LPRN,  KC_RPRN,  KC_ASTR,  KC_SLSH,  KC_LABK,  KC_RABK,  KC_DQUO,  KC_COLN,  _______, \
+  _______,  KC_GRV,   KC_CIRC,  KC_AT,    KC_DLR,   KC_PLUS,  KC_MINS,  KC_EQL,   KC_UNDS,  KC_QUOT,  KC_QUES,  _______, \
   _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______  \
 ),
 /* Lower
@@ -73,16 +74,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * | Tab  |      |VolDn |VolUp | Mute |      || Left | Down |  Up  |Right |      |Enter |
  * |------+------+------+------+------+------++------+------+------+------+------+------|
  * |      |      |      |      |      |      ||      |      |      |      |      |      |
- * |      |      |      |      |      |      ||      |      |      |      |      |      |
+ * |Shift |      |      |      |      | PrSc || Home | PgDn | PgUp | End  |      |Shift |
  * |------+------+------+------+------+------++------+------+------+------+------+------|
- * |      |      |      |      |      |LSFT_T||RSFT_T|      |      |      |      |      |
- * |Reset | Alt  | GUI  |LLower|LRaise|Space ||Space |RRaise|RLower| GUI  | Del  |Reset |
+ * |      |      |      |      |      |      ||      |      |      |      |      |      |
+ * |LRaise| Alt  | GUI  |      |LLower|Space ||Space |RLower|      | GUI  | Del  |RRaise|
  * `------------------------------------------------------------------------------------'
  */
 [_LOWER] = LAYOUT_ortho_4x12( \
   _______,  KC_1,     KC_2,     KC_3,     KC_4,     KC_5,     KC_6,     KC_7,     KC_8,     KC_9,     KC_0,     _______, \
   _______,  XXXXXXX,  KC_VOLD,  KC_VOLU,  KC_MUTE,  XXXXXXX,  KC_LEFT,  KC_DOWN,  KC_UP,    KC_RGHT,  XXXXXXX,  _______, \
-  _______,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  _______, \
+  _______,  XXXXXXX,  XXXXXXX,  XXXXXXX,  XXXXXXX,  KC_PSCR,  KC_HOME,  KC_PGDN,  KC_PGUP,  KC_END,   XXXXXXX,  _______, \
   _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______  \
 ),
 
@@ -95,55 +96,113 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  * | Tab  |  F5  |  F6  |  F7  |  F8  |      ||   *  |   /  |   4  |   5  |   6  |Enter |
  * |------+------+------+------+------+------++------+------+------+------+------+------|
  * |      |      |      |      |      |      ||      |      |      |      |      |      |
- * |      |  F9  |  F10 |  F11 |  F12 |      ||   .  |   ,  |   7  |   8  |   9  |      |
+ * |Shift |  F9  |  F10 |  F11 |  F12 |      ||   .  |   ,  |   7  |   8  |   9  |Shift |
  * |------+------+------+------+------+------++------+------+------+------+------+------|
- * |      |      |      |      |      |LSFT_T||RSFT_T|      |      |      |      |      |
- * |Reset | Alt  | GUI  |LLower|LRaise|Space ||Space |RRaise|RLower|   0  | Del  |Reset |
+ * |      |      |      |      |      |      ||      |      |      |      |      |      |
+ * |LRaise| Alt  | GUI  |Reset |LLower|Space ||Space |RLower|Reset |   0  | Del  |RRaise|
  * `------------------------------------------------------------------------------------'
  */
 [_NEUTRAL] = LAYOUT_ortho_4x12( \
   _______,  KC_F1,    KC_F2,    KC_F3,    KC_F4,    XXXXXXX,  KC_PPLS,  KC_PMNS,  KC_P1,    KC_P2,    KC_P3,     _______, \
   _______,  KC_F5,    KC_F6,    KC_F7,    KC_F8,    XXXXXXX,  KC_PAST,  KC_PSLS,  KC_P4,    KC_P5,    KC_P6,     _______, \
   _______,  KC_F9,    KC_F10,   KC_F11,   KC_F12,   XXXXXXX,  KC_PDOT,  KC_COMM,  KC_P7,    KC_P8,    KC_P9,     _______, \
-  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  KC_P0,    _______,   _______  \
+  _______,  _______,  _______,  RESET,    _______,  _______,  _______,  _______,  RESET,    KC_P0,    _______,   _______  \
 )
 
 
 };
 
 
-void DualKeyPressed ( bool brother_state, uint8_t target ){
 
-  if( brother_state ) return;
+/****  Raise Layer functions *****/
+
+  /* RaisePressed function */
+    /* called RaiseSwitch  */
+void RaisePressed ( keyevent_t *event, bool brother_state ){ 
+  
+  if( brother_state ) { return; }
+
+  layer_on( _RAISE );
+  update_tri_layer( _LOWER, _RAISE, _NEUTRAL );
+  return;
+
+}
+
+
+  /* RaiseReleased function */
+    /* called RaiseSwitch   */
+void RaiseReleased ( bool brother_state ){ 
+  
+  if( brother_state ) { return; }
 
-  layer_on( target );
+  layer_off( _RAISE );
+  update_tri_layer( _LOWER, _RAISE, _NEUTRAL );
   return;
 }
 
-void DualKeyReleased ( bool brother_state, uint8_t target1 ){ 
 
-  if( brother_state ) return ;
+  /* RaiseSwitch function         */
+    /* called process_record_user */
+bool RaiseSwitch ( keyrecord_t *record, bool *key_state, bool brother ){ 
+
+  if( record -> event.pressed ) {
+    *key_state = true;
+    RaisePressed( &(record -> event), brother );
+  } else {
+    *key_state = false;
+    RaiseReleased( brother );
+  }
+  return false;
+
+}
+
+
 
-  layer_off( target1 );
+
+
+
+/**** Lower layer functions ****/
+
+  /* LowerPressed function   */
+    /* call from LowerSwitch */
+void LowerPressed ( bool brother_state ){
+
+  if( brother_state ) { return; }
+
+  layer_on( _LOWER );
+  update_tri_layer(_LOWER, _RAISE, _NEUTRAL );
+  return;
+}
+
+  /* LowerReleased function  */
+    /* call from LowerSwitch */
+void LowerReleased ( bool brother_state ){ 
+
+  if( brother_state ) { return; }
+
+  layer_off( _LOWER );
+  update_tri_layer(_LOWER, _RAISE, _NEUTRAL );
   return ;
 }
 
-bool LayerSwitch ( keyrecord_t *record, bool *key_state, bool brother, uint8_t layer ){ 
+  /* LowerSwitch function            */
+    /* call from process_record_user */
+bool LowerSwitch ( keyrecord_t *record, bool *key_state, bool brother ){ 
   if ( record -> event.pressed ) {
     *key_state = true;
-    DualKeyPressed( brother, layer );
-  } 
-  else {
+    LowerPressed( brother );
+  } else {
     *key_state = false;
-    DualKeyReleased( brother, layer );
+    LowerReleased( brother );
   }
 
-  update_tri_layer(_LOWER, _RAISE, _NEUTRAL );
   return false;
 
-
 }
 
+
+
+/**** process_record_user ****/
 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 
   static bool l_lower = false;
@@ -155,11 +214,16 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
   switch (keycode) {
 
 
-    case L_LOWER : return LayerSwitch( record, &l_lower, r_lower, _LOWER ); break;
-    case R_LOWER : return LayerSwitch( record, &r_lower, l_lower, _LOWER ); break;
-    case L_RAISE : return LayerSwitch( record, &l_raise, r_raise, _RAISE ); break;
-    case R_RAISE : return LayerSwitch( record, &r_raise, l_raise, _RAISE ); break;
+    case L_LOWER : return LowerSwitch( record, &l_lower, r_lower ); break;
+    case R_LOWER : return LowerSwitch( record, &r_lower, l_lower ); break;
+    case L_RAISE : return RaiseSwitch( record, &l_raise, r_raise ); break;
+    case R_RAISE : return RaiseSwitch( record, &r_raise, l_raise ); break;
+
+    default: break;
 
   }
   return true;
 }
+
+
+
index 6d6833ec11f178dc1ec1a98fc68b76b4bb2b0390..3da164c736ef44611ab77f7de713e199b927141f 100644 (file)
@@ -141,7 +141,7 @@ uint16_t notes_count;
 bool     notes_repeat;
 bool     note_resting = false;
 
-uint8_t current_note = 0;
+uint16_t current_note = 0;
 uint8_t rest_counter = 0;
 
 #ifdef VIBRATO_ENABLE
index a3a403957045555b268dd737e43989f1f8fe012f..6760015ef462700d20249c79cc009346265b3e2b 100644 (file)
@@ -54,7 +54,7 @@ uint16_t notes_count;
 bool     notes_repeat;
 bool     note_resting = false;
 
-uint8_t current_note = 0;
+uint16_t current_note = 0;
 uint8_t rest_counter = 0;
 
 #ifdef VIBRATO_ENABLE
index ded86edeea9e683332051caed0e0f3fdf3a8cf2b..ed67136099a8889b13bc9e56974842da8bfe552e 100644 (file)
@@ -94,7 +94,7 @@ bool     notes_repeat;
 float    notes_rest;
 bool     note_resting = false;
 
-uint8_t current_note = 0;
+uint16_t current_note = 0;
 uint8_t rest_counter = 0;
 
 #ifdef VIBRATO_ENABLE
diff --git a/quantum/debounce/debounce_eager_pk.c b/quantum/debounce/debounce_eager_pk.c
deleted file mode 100644 (file)
index b8ad09c..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
-Copyright 2017 Alex Ong<the.onga@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/>.
-*/
-
-/*
-Basic per-key algorithm. Uses an 8-bit counter per key.
-After pressing a key, it immediately changes state, and sets a counter.
-No further inputs are accepted until DEBOUNCE milliseconds have occurred.
-*/
-
-#include "matrix.h"
-#include "timer.h"
-#include "quantum.h"
-#include <stdlib.h>
-
-#ifndef DEBOUNCE
-  #define DEBOUNCE 5
-#endif
-
-
-#if (MATRIX_COLS <= 8)
-#    define ROW_SHIFTER ((uint8_t)1)
-#elif (MATRIX_COLS <= 16)
-#    define ROW_SHIFTER ((uint16_t)1)
-#elif (MATRIX_COLS <= 32)
-#    define ROW_SHIFTER  ((uint32_t)1)
-#endif
-
-
-
-#define debounce_counter_t uint8_t
-
-static debounce_counter_t *debounce_counters;
-
-#define DEBOUNCE_ELAPSED 251
-#define MAX_DEBOUNCE (DEBOUNCE_ELAPSED - 1)
-
-void update_debounce_counters(uint8_t num_rows, uint8_t current_time);
-void transfer_matrix_values(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, uint8_t current_time);
-
-//we use num_rows rather than MATRIX_ROWS to support split keyboards
-void debounce_init(uint8_t num_rows)
-{
-  debounce_counters = (debounce_counter_t*)malloc(num_rows*MATRIX_COLS * sizeof(debounce_counter_t));
-  int i = 0;
-  for (uint8_t r = 0; r < num_rows; r++)
-  {
-    for (uint8_t c = 0; c < MATRIX_COLS; c++)
-    {
-      debounce_counters[i++] = DEBOUNCE_ELAPSED;
-    }
-  }
-}
-
-void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed)
-{
-  uint8_t current_time = timer_read() % MAX_DEBOUNCE;
-  update_debounce_counters(num_rows, current_time);
-  transfer_matrix_values(raw, cooked, num_rows, current_time);
-}
-
-//If the current time is > debounce counter, set the counter to enable input.
-void update_debounce_counters(uint8_t num_rows, uint8_t current_time)
-{
-  debounce_counter_t *debounce_pointer = debounce_counters;
-  for (uint8_t row = 0; row < num_rows; row++)
-  {
-    for (uint8_t col = 0; col < MATRIX_COLS; col++)
-    {
-      if (*debounce_pointer != DEBOUNCE_ELAPSED)
-      {
-        if (TIMER_DIFF(current_time, *debounce_pointer, MAX_DEBOUNCE) >= DEBOUNCE) {
-          *debounce_pointer = DEBOUNCE_ELAPSED;
-        }
-      }
-      debounce_pointer++;
-    }
-  }
-}
-
-// upload from raw_matrix to final matrix;
-void transfer_matrix_values(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, uint8_t current_time)
-{
-  debounce_counter_t *debounce_pointer = debounce_counters;
-  for (uint8_t row = 0; row < num_rows; row++)
-  {
-    matrix_row_t existing_row = cooked[row]; 
-    matrix_row_t raw_row = raw[row];
-
-    for (uint8_t col = 0; col < MATRIX_COLS; col++)
-    {
-      matrix_row_t col_mask = (ROW_SHIFTER << col);
-      bool final_value = raw_row & col_mask;
-      bool existing_value = existing_row & col_mask;
-      if (*debounce_pointer == DEBOUNCE_ELAPSED &&
-          (existing_value != final_value))
-      {
-        *debounce_pointer = current_time;
-        existing_row ^= col_mask; //flip the bit.
-      }
-      debounce_pointer++;
-    }
-    cooked[row] = existing_row;
-  }  
-}
-
-bool debounce_active(void)
-{
-  return true;
-}
-
diff --git a/quantum/debounce/debounce_sym_g.c b/quantum/debounce/debounce_sym_g.c
deleted file mode 100644 (file)
index c8ab34e..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
-Copyright 2017 Alex Ong<the.onga@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/>.
-*/
-
-/*
-Basic global debounce algorithm. Used in 99% of keyboards at time of implementation
-When no state changes have occured for DEBOUNCE milliseconds, we push the state.
-*/
-#include "matrix.h"
-#include "timer.h"
-#include "quantum.h"
-#ifndef DEBOUNCE
-  #define DEBOUNCE 5
-#endif
-
-void debounce_init(uint8_t num_rows) {}
-static bool debouncing = false;
-
-#if DEBOUNCE > 0
-static uint16_t debouncing_time;
-void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed)
-{
-  if (changed) {
-    debouncing = true;
-    debouncing_time = timer_read();
-  }
-
-  if (debouncing && timer_elapsed(debouncing_time) > DEBOUNCE) {
-    for (int i = 0; i < num_rows; i++) {
-      cooked[i] = raw[i];
-    }
-    debouncing = false;
-  }
-}
-#else //no debouncing.
-void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed)
-{
-  for (int i = 0; i < num_rows; i++) {
-    cooked[i] = raw[i];
-  }
-}
-#endif
-
-bool debounce_active(void) {
-  return debouncing;
-}
-
diff --git a/quantum/debounce/eager_pk.c b/quantum/debounce/eager_pk.c
new file mode 100644 (file)
index 0000000..b8ad09c
--- /dev/null
@@ -0,0 +1,121 @@
+/*
+Copyright 2017 Alex Ong<the.onga@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/>.
+*/
+
+/*
+Basic per-key algorithm. Uses an 8-bit counter per key.
+After pressing a key, it immediately changes state, and sets a counter.
+No further inputs are accepted until DEBOUNCE milliseconds have occurred.
+*/
+
+#include "matrix.h"
+#include "timer.h"
+#include "quantum.h"
+#include <stdlib.h>
+
+#ifndef DEBOUNCE
+  #define DEBOUNCE 5
+#endif
+
+
+#if (MATRIX_COLS <= 8)
+#    define ROW_SHIFTER ((uint8_t)1)
+#elif (MATRIX_COLS <= 16)
+#    define ROW_SHIFTER ((uint16_t)1)
+#elif (MATRIX_COLS <= 32)
+#    define ROW_SHIFTER  ((uint32_t)1)
+#endif
+
+
+
+#define debounce_counter_t uint8_t
+
+static debounce_counter_t *debounce_counters;
+
+#define DEBOUNCE_ELAPSED 251
+#define MAX_DEBOUNCE (DEBOUNCE_ELAPSED - 1)
+
+void update_debounce_counters(uint8_t num_rows, uint8_t current_time);
+void transfer_matrix_values(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, uint8_t current_time);
+
+//we use num_rows rather than MATRIX_ROWS to support split keyboards
+void debounce_init(uint8_t num_rows)
+{
+  debounce_counters = (debounce_counter_t*)malloc(num_rows*MATRIX_COLS * sizeof(debounce_counter_t));
+  int i = 0;
+  for (uint8_t r = 0; r < num_rows; r++)
+  {
+    for (uint8_t c = 0; c < MATRIX_COLS; c++)
+    {
+      debounce_counters[i++] = DEBOUNCE_ELAPSED;
+    }
+  }
+}
+
+void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed)
+{
+  uint8_t current_time = timer_read() % MAX_DEBOUNCE;
+  update_debounce_counters(num_rows, current_time);
+  transfer_matrix_values(raw, cooked, num_rows, current_time);
+}
+
+//If the current time is > debounce counter, set the counter to enable input.
+void update_debounce_counters(uint8_t num_rows, uint8_t current_time)
+{
+  debounce_counter_t *debounce_pointer = debounce_counters;
+  for (uint8_t row = 0; row < num_rows; row++)
+  {
+    for (uint8_t col = 0; col < MATRIX_COLS; col++)
+    {
+      if (*debounce_pointer != DEBOUNCE_ELAPSED)
+      {
+        if (TIMER_DIFF(current_time, *debounce_pointer, MAX_DEBOUNCE) >= DEBOUNCE) {
+          *debounce_pointer = DEBOUNCE_ELAPSED;
+        }
+      }
+      debounce_pointer++;
+    }
+  }
+}
+
+// upload from raw_matrix to final matrix;
+void transfer_matrix_values(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, uint8_t current_time)
+{
+  debounce_counter_t *debounce_pointer = debounce_counters;
+  for (uint8_t row = 0; row < num_rows; row++)
+  {
+    matrix_row_t existing_row = cooked[row]; 
+    matrix_row_t raw_row = raw[row];
+
+    for (uint8_t col = 0; col < MATRIX_COLS; col++)
+    {
+      matrix_row_t col_mask = (ROW_SHIFTER << col);
+      bool final_value = raw_row & col_mask;
+      bool existing_value = existing_row & col_mask;
+      if (*debounce_pointer == DEBOUNCE_ELAPSED &&
+          (existing_value != final_value))
+      {
+        *debounce_pointer = current_time;
+        existing_row ^= col_mask; //flip the bit.
+      }
+      debounce_pointer++;
+    }
+    cooked[row] = existing_row;
+  }  
+}
+
+bool debounce_active(void)
+{
+  return true;
+}
+
index 1a77d44df53aea88f5147c58e2417823e80dcd71..5b318d845e9177fcbc2ae98aa5c234547754e8ec 100644 (file)
@@ -6,10 +6,10 @@ Here are a few ideas
  * Per key - one timer per key
  * Per row - one timer per row
 
-2) Eager vs symmetric vs assymetric
+2) Eager vs symmetric vs asymmetric
  * Eager - any key change is reported immediately. All further inputs for DEBOUNCE ms are ignored.
  * Symmetric - wait for no changes for DEBOUNCE ms before reporting change
- * Assymetric - wait for different times depending on key-down/key-up. E.g. Eager key-down, DEBOUNCE ms key up.
+ * Asymmetric - wait for different times depending on key-down/key-up. E.g. Eager key-down, DEBOUNCE ms key up.
 
 3) Timestamp vs cycles
  * old old old code waits n cycles, decreasing count by one each matrix_scan
@@ -19,10 +19,10 @@ Here are a few ideas
 The default algorithm is symmetric and global.
 Here are a few that could be implemented:
 
-debounce_sym_g.c
-debounce_sym_pk.c 
-debounce_sym_pr.c 
-debounce_sym_pr_cycles.c //currently used in ergo-dox
-debounce_eager_g.c
-debounce_eager_pk.c
-debounce_eager_pr.c //could be used in ergo-dox!
+sym_g.c
+sym_pk.c
+sym_pr.c
+sym_pr_cycles.c //currently used in ergo-dox
+eager_g.c
+eager_pk.c
+eager_pr.c //could be used in ergo-dox!
diff --git a/quantum/debounce/sym_g.c b/quantum/debounce/sym_g.c
new file mode 100644 (file)
index 0000000..c8ab34e
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+Copyright 2017 Alex Ong<the.onga@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/>.
+*/
+
+/*
+Basic global debounce algorithm. Used in 99% of keyboards at time of implementation
+When no state changes have occured for DEBOUNCE milliseconds, we push the state.
+*/
+#include "matrix.h"
+#include "timer.h"
+#include "quantum.h"
+#ifndef DEBOUNCE
+  #define DEBOUNCE 5
+#endif
+
+void debounce_init(uint8_t num_rows) {}
+static bool debouncing = false;
+
+#if DEBOUNCE > 0
+static uint16_t debouncing_time;
+void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed)
+{
+  if (changed) {
+    debouncing = true;
+    debouncing_time = timer_read();
+  }
+
+  if (debouncing && timer_elapsed(debouncing_time) > DEBOUNCE) {
+    for (int i = 0; i < num_rows; i++) {
+      cooked[i] = raw[i];
+    }
+    debouncing = false;
+  }
+}
+#else //no debouncing.
+void debounce(matrix_row_t raw[], matrix_row_t cooked[], uint8_t num_rows, bool changed)
+{
+  for (int i = 0; i < num_rows; i++) {
+    cooked[i] = raw[i];
+  }
+}
+#endif
+
+bool debounce_active(void) {
+  return debouncing;
+}
+
index e72dd75cfaab880de157515712a1c4bb7d05b01a..c72059118f780b99aaf1a7f7c34ed6c94a47f9d5 100644 (file)
@@ -7,7 +7,7 @@ BUILD_OPTION_NAMES = \
   NKRO_ENABLE \
   TERMINAL_ENABLE \
   CUSTOM_MATRIX \
-  CUSTOM_DEBOUNCE \
+  DEBOUNCE_TYPE \
   SPLIT_KEYBOARD \
   DYNAMIC_KEYMAP_ENABLE \
   USB_HID_ENABLE
diff --git a/users/cbbrowne/cbbrowne.c b/users/cbbrowne/cbbrowne.c
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/users/cbbrowne/cbbrowne.h b/users/cbbrowne/cbbrowne.h
new file mode 100644 (file)
index 0000000..301636c
--- /dev/null
@@ -0,0 +1,39 @@
+#ifndef USERSPACE
+#define USERSPACE
+
+#ifdef BACKLIGHT_ENABLE
+#include "backlight.h"
+#endif
+#include "quantum.h"
+#include "config.h"
+
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#ifndef NO_DEBUG
+#define NO_DEBUG
+#endif
+#ifndef NO_PRINT
+#define NO_PRINT
+#endif
+
+/* cbbrowne user configuration */
+
+#define randadd 53
+#define randmul 181
+#define randmod 167
+
+/* Filler to make layering a bit clearer *
+ * borrowed from basic keymap            */
+
+#define _______ KC_TRNS
+#define _____   KC_NO
+
+#define LEADER_TIMEOUT 300
+#ifndef LIGHT_CONFIG_H
+#define BACKLIGHT_BREATHING
+#endif
+
+#endif
+
+#endif
diff --git a/users/cbbrowne/rules.mk b/users/cbbrowne/rules.mk
new file mode 100644 (file)
index 0000000..497638c
--- /dev/null
@@ -0,0 +1 @@
+SRC += cbbrowne.c
index 904a7f524e16ac71f58f1bcce2f4061aec8fe981..14284435bef76ce5927480aa7c811aba09511eb3 100644 (file)
@@ -2,3 +2,8 @@
 
 #define TAPPING_TERM 200
 #define RETRO_TAPPING
+
+#ifdef RGBLIGHT_ENABLE
+  #define RGBLIGHT_LIMIT_VAL 175
+  #define RGBLIGHT_SLEEP
+#endif
diff --git a/users/stanrc85/layer_rgb.c b/users/stanrc85/layer_rgb.c
new file mode 100644 (file)
index 0000000..ac5d181
--- /dev/null
@@ -0,0 +1,26 @@
+#include "stanrc85.h"
+
+void matrix_init_user(void) {
+  rgblight_setrgb(0xFF,  0x00, 0x00);
+};
+
+uint32_t layer_state_set_user(uint32_t state) {
+    switch (biton32(state)) {
+    case 0:
+        rgblight_setrgb (0xFF,  0x00, 0x00);
+        break;
+    case 1:
+        rgblight_setrgb (0x00,  0xFF, 0x00);
+        break;
+    case 2:
+        rgblight_setrgb (0x00,  0x00, 0xFF);
+        break;
+    case 3:
+        rgblight_setrgb (0xFF,  0xFF, 0xFF);
+        break;
+    default: //  for any other layers, or the default layer
+        rgblight_setrgb (0xFF,  0x00, 0x00);
+        break;
+    }
+  return state;
+}
index 19ad624758a31009fe17cd71ea836167c82a93e3..c94dca0b7cf0623ccc20016dd212882484f3f599 100644 (file)
@@ -7,3 +7,8 @@ MOUSEKEY_ENABLE = no
 AUDIO_ENABLE = no
 CONSOLE_ENABLE = no
 NKRO_ENABLE = no
+
+ifeq ($(strip $(RGBLIGHT_ENABLE)), yes)
+  # Include my fancy rgb functions source here
+  SRC += layer_rgb.c
+endif