]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Keyboard: Move Bathroom Epiphany boards into its own directory (#3936)
authorMechMerlin <30334081+mechmerlin@users.noreply.github.com>
Wed, 19 Sep 2018 23:25:58 +0000 (16:25 -0700)
committerDrashna Jaelre <drashna@live.com>
Wed, 19 Sep 2018 23:25:58 +0000 (16:25 -0700)
* make bpiphany directory with simple readme file

* move unloved_bastard to bpiphany directory

* move frosty_flake to bpiphany directory

* move pegasushoof to bpiphany directory

* move tiger_lily to bpiphany directory

* add a little more info to readme

* move kitten_paw to bpiphany directory

* update make instructions

* update intro text

* add missing routines to matrix.c of unloved_bastard

* add missing routines

153 files changed:
keyboards/bpiphany/frosty_flake/config.h [new file with mode: 0644]
keyboards/bpiphany/frosty_flake/frosty_flake.c [new file with mode: 0644]
keyboards/bpiphany/frosty_flake/frosty_flake.h [new file with mode: 0644]
keyboards/bpiphany/frosty_flake/keymaps/QFR_JM/config.h [new file with mode: 0644]
keyboards/bpiphany/frosty_flake/keymaps/QFR_JM/keymap.c [new file with mode: 0644]
keyboards/bpiphany/frosty_flake/keymaps/QFR_JM/readme.md [new file with mode: 0644]
keyboards/bpiphany/frosty_flake/keymaps/QFR_JM/rules.mk [new file with mode: 0644]
keyboards/bpiphany/frosty_flake/keymaps/default/config.h [new file with mode: 0644]
keyboards/bpiphany/frosty_flake/keymaps/default/keymap.c [new file with mode: 0644]
keyboards/bpiphany/frosty_flake/keymaps/default/readme.md [new file with mode: 0644]
keyboards/bpiphany/frosty_flake/keymaps/default/rules.mk [new file with mode: 0644]
keyboards/bpiphany/frosty_flake/keymaps/nikchi/config.h [new file with mode: 0644]
keyboards/bpiphany/frosty_flake/keymaps/nikchi/keymap.c [new file with mode: 0644]
keyboards/bpiphany/frosty_flake/keymaps/nikchi/readme.md [new file with mode: 0644]
keyboards/bpiphany/frosty_flake/keymaps/nikchi/rules.mk [new file with mode: 0644]
keyboards/bpiphany/frosty_flake/keymaps/nikchi/variableTapDance.md [new file with mode: 0644]
keyboards/bpiphany/frosty_flake/keymaps/tkl/config.h [new file with mode: 0644]
keyboards/bpiphany/frosty_flake/keymaps/tkl/keymap.c [new file with mode: 0644]
keyboards/bpiphany/frosty_flake/keymaps/tkl/readme.md [new file with mode: 0644]
keyboards/bpiphany/frosty_flake/keymaps/tkl/rules.mk [new file with mode: 0644]
keyboards/bpiphany/frosty_flake/matrix.c [new file with mode: 0644]
keyboards/bpiphany/frosty_flake/readme.md [new file with mode: 0644]
keyboards/bpiphany/frosty_flake/rules.mk [new file with mode: 0644]
keyboards/bpiphany/kitten_paw/config.h [new file with mode: 0644]
keyboards/bpiphany/kitten_paw/info.json [new file with mode: 0644]
keyboards/bpiphany/kitten_paw/keymaps/default/keymap.c [new file with mode: 0644]
keyboards/bpiphany/kitten_paw/keymaps/ickerwx/config.h [new file with mode: 0644]
keyboards/bpiphany/kitten_paw/keymaps/ickerwx/keymap.c [new file with mode: 0644]
keyboards/bpiphany/kitten_paw/keymaps/ickerwx/readme.md [new file with mode: 0644]
keyboards/bpiphany/kitten_paw/kitten_paw.c [new file with mode: 0644]
keyboards/bpiphany/kitten_paw/kitten_paw.h [new file with mode: 0644]
keyboards/bpiphany/kitten_paw/matrix.c [new file with mode: 0644]
keyboards/bpiphany/kitten_paw/readme.md [new file with mode: 0644]
keyboards/bpiphany/kitten_paw/rules.mk [new file with mode: 0644]
keyboards/bpiphany/pegasushoof/README.md [new file with mode: 0644]
keyboards/bpiphany/pegasushoof/config.h [new file with mode: 0644]
keyboards/bpiphany/pegasushoof/keymaps/blowrak/keymap.c [new file with mode: 0644]
keyboards/bpiphany/pegasushoof/keymaps/blowrak/rules.mk [new file with mode: 0644]
keyboards/bpiphany/pegasushoof/keymaps/citadel/config.h [new file with mode: 0644]
keyboards/bpiphany/pegasushoof/keymaps/citadel/keymap.c [new file with mode: 0644]
keyboards/bpiphany/pegasushoof/keymaps/citadel/readme.md [new file with mode: 0644]
keyboards/bpiphany/pegasushoof/keymaps/citadel/rules.mk [new file with mode: 0644]
keyboards/bpiphany/pegasushoof/keymaps/default/keymap.c [new file with mode: 0644]
keyboards/bpiphany/pegasushoof/keymaps/default/rules.mk [new file with mode: 0644]
keyboards/bpiphany/pegasushoof/matrix.c [new file with mode: 0644]
keyboards/bpiphany/pegasushoof/pegasushoof.c [new file with mode: 0644]
keyboards/bpiphany/pegasushoof/pegasushoof.h [new file with mode: 0644]
keyboards/bpiphany/pegasushoof/rules.mk [new file with mode: 0644]
keyboards/bpiphany/readme.md [new file with mode: 0644]
keyboards/bpiphany/tiger_lily/config.h [new file with mode: 0644]
keyboards/bpiphany/tiger_lily/info.json [new file with mode: 0644]
keyboards/bpiphany/tiger_lily/keymaps/default/config.h [new file with mode: 0644]
keyboards/bpiphany/tiger_lily/keymaps/default/keymap.c [new file with mode: 0644]
keyboards/bpiphany/tiger_lily/keymaps/default/readme.md [new file with mode: 0644]
keyboards/bpiphany/tiger_lily/keymaps/default/rules.mk [new file with mode: 0644]
keyboards/bpiphany/tiger_lily/keymaps/default_ansi/config.h [new file with mode: 0644]
keyboards/bpiphany/tiger_lily/keymaps/default_ansi/keymap.c [new file with mode: 0644]
keyboards/bpiphany/tiger_lily/keymaps/default_ansi/readme.md [new file with mode: 0644]
keyboards/bpiphany/tiger_lily/keymaps/default_ansi/rules.mk [new file with mode: 0644]
keyboards/bpiphany/tiger_lily/matrix.c [new file with mode: 0644]
keyboards/bpiphany/tiger_lily/readme.md [new file with mode: 0644]
keyboards/bpiphany/tiger_lily/rules.mk [new file with mode: 0644]
keyboards/bpiphany/tiger_lily/tiger_lily.c [new file with mode: 0644]
keyboards/bpiphany/tiger_lily/tiger_lily.h [new file with mode: 0644]
keyboards/bpiphany/unloved_bastard/config.h [new file with mode: 0644]
keyboards/bpiphany/unloved_bastard/info.json [new file with mode: 0644]
keyboards/bpiphany/unloved_bastard/keymaps/default/config.h [new file with mode: 0644]
keyboards/bpiphany/unloved_bastard/keymaps/default/keymap.c [new file with mode: 0644]
keyboards/bpiphany/unloved_bastard/keymaps/default/readme.md [new file with mode: 0644]
keyboards/bpiphany/unloved_bastard/keymaps/default_ansi/config.h [new file with mode: 0644]
keyboards/bpiphany/unloved_bastard/keymaps/default_ansi/keymap.c [new file with mode: 0644]
keyboards/bpiphany/unloved_bastard/keymaps/default_ansi/readme.md [new file with mode: 0644]
keyboards/bpiphany/unloved_bastard/matrix.c [new file with mode: 0644]
keyboards/bpiphany/unloved_bastard/readme.md [new file with mode: 0644]
keyboards/bpiphany/unloved_bastard/rules.mk [new file with mode: 0644]
keyboards/bpiphany/unloved_bastard/unloved_bastard.c [new file with mode: 0644]
keyboards/bpiphany/unloved_bastard/unloved_bastard.h [new file with mode: 0644]
keyboards/frosty_flake/config.h [deleted file]
keyboards/frosty_flake/frosty_flake.c [deleted file]
keyboards/frosty_flake/frosty_flake.h [deleted file]
keyboards/frosty_flake/keymaps/QFR_JM/config.h [deleted file]
keyboards/frosty_flake/keymaps/QFR_JM/keymap.c [deleted file]
keyboards/frosty_flake/keymaps/QFR_JM/readme.md [deleted file]
keyboards/frosty_flake/keymaps/QFR_JM/rules.mk [deleted file]
keyboards/frosty_flake/keymaps/default/config.h [deleted file]
keyboards/frosty_flake/keymaps/default/keymap.c [deleted file]
keyboards/frosty_flake/keymaps/default/readme.md [deleted file]
keyboards/frosty_flake/keymaps/default/rules.mk [deleted file]
keyboards/frosty_flake/keymaps/nikchi/config.h [deleted file]
keyboards/frosty_flake/keymaps/nikchi/keymap.c [deleted file]
keyboards/frosty_flake/keymaps/nikchi/readme.md [deleted file]
keyboards/frosty_flake/keymaps/nikchi/rules.mk [deleted file]
keyboards/frosty_flake/keymaps/nikchi/variableTapDance.md [deleted file]
keyboards/frosty_flake/keymaps/tkl/config.h [deleted file]
keyboards/frosty_flake/keymaps/tkl/keymap.c [deleted file]
keyboards/frosty_flake/keymaps/tkl/readme.md [deleted file]
keyboards/frosty_flake/keymaps/tkl/rules.mk [deleted file]
keyboards/frosty_flake/matrix.c [deleted file]
keyboards/frosty_flake/readme.md [deleted file]
keyboards/frosty_flake/rules.mk [deleted file]
keyboards/kitten_paw/config.h [deleted file]
keyboards/kitten_paw/info.json [deleted file]
keyboards/kitten_paw/keymaps/default/keymap.c [deleted file]
keyboards/kitten_paw/keymaps/ickerwx/config.h [deleted file]
keyboards/kitten_paw/keymaps/ickerwx/keymap.c [deleted file]
keyboards/kitten_paw/keymaps/ickerwx/readme.md [deleted file]
keyboards/kitten_paw/kitten_paw.c [deleted file]
keyboards/kitten_paw/kitten_paw.h [deleted file]
keyboards/kitten_paw/matrix.c [deleted file]
keyboards/kitten_paw/readme.md [deleted file]
keyboards/kitten_paw/rules.mk [deleted file]
keyboards/pegasushoof/README.md [deleted file]
keyboards/pegasushoof/config.h [deleted file]
keyboards/pegasushoof/keymaps/blowrak/keymap.c [deleted file]
keyboards/pegasushoof/keymaps/blowrak/rules.mk [deleted file]
keyboards/pegasushoof/keymaps/citadel/config.h [deleted file]
keyboards/pegasushoof/keymaps/citadel/keymap.c [deleted file]
keyboards/pegasushoof/keymaps/citadel/readme.md [deleted file]
keyboards/pegasushoof/keymaps/citadel/rules.mk [deleted file]
keyboards/pegasushoof/keymaps/default/keymap.c [deleted file]
keyboards/pegasushoof/keymaps/default/rules.mk [deleted file]
keyboards/pegasushoof/matrix.c [deleted file]
keyboards/pegasushoof/pegasushoof.c [deleted file]
keyboards/pegasushoof/pegasushoof.h [deleted file]
keyboards/pegasushoof/rules.mk [deleted file]
keyboards/tiger_lily/config.h [deleted file]
keyboards/tiger_lily/info.json [deleted file]
keyboards/tiger_lily/keymaps/default/config.h [deleted file]
keyboards/tiger_lily/keymaps/default/keymap.c [deleted file]
keyboards/tiger_lily/keymaps/default/readme.md [deleted file]
keyboards/tiger_lily/keymaps/default/rules.mk [deleted file]
keyboards/tiger_lily/keymaps/default_ansi/config.h [deleted file]
keyboards/tiger_lily/keymaps/default_ansi/keymap.c [deleted file]
keyboards/tiger_lily/keymaps/default_ansi/readme.md [deleted file]
keyboards/tiger_lily/keymaps/default_ansi/rules.mk [deleted file]
keyboards/tiger_lily/matrix.c [deleted file]
keyboards/tiger_lily/readme.md [deleted file]
keyboards/tiger_lily/rules.mk [deleted file]
keyboards/tiger_lily/tiger_lily.c [deleted file]
keyboards/tiger_lily/tiger_lily.h [deleted file]
keyboards/unloved_bastard/config.h [deleted file]
keyboards/unloved_bastard/info.json [deleted file]
keyboards/unloved_bastard/keymaps/default/config.h [deleted file]
keyboards/unloved_bastard/keymaps/default/keymap.c [deleted file]
keyboards/unloved_bastard/keymaps/default/readme.md [deleted file]
keyboards/unloved_bastard/keymaps/default_ansi/config.h [deleted file]
keyboards/unloved_bastard/keymaps/default_ansi/keymap.c [deleted file]
keyboards/unloved_bastard/keymaps/default_ansi/readme.md [deleted file]
keyboards/unloved_bastard/matrix.c [deleted file]
keyboards/unloved_bastard/readme.md [deleted file]
keyboards/unloved_bastard/rules.mk [deleted file]
keyboards/unloved_bastard/unloved_bastard.c [deleted file]
keyboards/unloved_bastard/unloved_bastard.h [deleted file]

diff --git a/keyboards/bpiphany/frosty_flake/config.h b/keyboards/bpiphany/frosty_flake/config.h
new file mode 100644 (file)
index 0000000..2c73f10
--- /dev/null
@@ -0,0 +1,147 @@
+/*
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID       0xFEED
+#define PRODUCT_ID      0x6060
+#define DEVICE_VER      0x0001
+#define MANUFACTURER    Bathroom Epiphanies
+#define PRODUCT         frosty_flake
+#define DESCRIPTION     Frosty Flake controller for the CM Storm Quick Fire Rapid
+
+/*
+ * Frosty Flake Rev. 20140521 made by Bathroom Ephiphanies
+ * Ported from the Bathroom Epiphanies TMK Firmware:
+ * https://github.com/BathroomEpiphanies/epiphanies_tmk_keyboard/tree/master/be_controllers
+ *
+ */
+
+/* key matrix size */
+#define MATRIX_ROWS 8   // Row0 - Row7 in the schematic
+#define MATRIX_COLS 18  // ColA - ColR in the schematic
+
+/*
+ * Keyboard Matrix Assignments
+ */
+#define UNUSED_PINS { B0, C4, D3 }
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCING_DELAY 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Magic Key Options
+ *
+ * Magic keys are hotkey commands that allow control over firmware functions of
+ * the keyboard. They are best used in combination with the HID Listen program,
+ * found here: https://www.pjrc.com/teensy/hid_listen.html
+ *
+ * The options below allow the magic key functionality to be changed. This is
+ * useful if your keyboard/keypad is missing keys and you want magic key support.
+ *
+ */
+
+/* key combination for magic key command */
+#define IS_COMMAND() ( \
+    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
+)
+
+/* control how magic key switches layers */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS  true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS  true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
+
+/* override magic key keymap */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
+//#define MAGIC_KEY_HELP1          H
+//#define MAGIC_KEY_HELP2          SLASH
+//#define MAGIC_KEY_DEBUG          D
+//#define MAGIC_KEY_DEBUG_MATRIX   X
+//#define MAGIC_KEY_DEBUG_KBD      K
+//#define MAGIC_KEY_DEBUG_MOUSE    M
+//#define MAGIC_KEY_VERSION        V
+//#define MAGIC_KEY_STATUS         S
+//#define MAGIC_KEY_CONSOLE        C
+//#define MAGIC_KEY_LAYER0_ALT1    ESC
+//#define MAGIC_KEY_LAYER0_ALT2    GRAVE
+//#define MAGIC_KEY_LAYER0         0
+//#define MAGIC_KEY_LAYER1         1
+//#define MAGIC_KEY_LAYER2         2
+//#define MAGIC_KEY_LAYER3         3
+//#define MAGIC_KEY_LAYER4         4
+//#define MAGIC_KEY_LAYER5         5
+//#define MAGIC_KEY_LAYER6         6
+//#define MAGIC_KEY_LAYER7         7
+//#define MAGIC_KEY_LAYER8         8
+//#define MAGIC_KEY_LAYER9         9
+//#define MAGIC_KEY_BOOTLOADER     PAUSE
+//#define MAGIC_KEY_LOCK           CAPS
+//#define MAGIC_KEY_EEPROM         E
+//#define MAGIC_KEY_NKRO           N
+//#define MAGIC_KEY_SLEEP_LED      Z
+
+/*
+ * Feature disable options
+ *  These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+
+#endif
diff --git a/keyboards/bpiphany/frosty_flake/frosty_flake.c b/keyboards/bpiphany/frosty_flake/frosty_flake.c
new file mode 100644 (file)
index 0000000..1cd4760
--- /dev/null
@@ -0,0 +1,63 @@
+#include "frosty_flake.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) {
+    DDRB |= (1<<7);
+    DDRC |= (1<<5) | (1<<6);
+
+    print_dec(usb_led);
+
+    if (usb_led & (1<<USB_LED_CAPS_LOCK))
+        PORTC &= ~(1<<5);
+    else
+        PORTC |=  (1<<5);
+
+    if (usb_led & (1<<USB_LED_NUM_LOCK))
+        PORTB &= ~(1<<7);
+    else
+        PORTB |=  (1<<7);
+
+    if (usb_led & (1<<USB_LED_SCROLL_LOCK))
+        PORTC &= ~(1<<6);
+    else
+        PORTC |=  (1<<6);
+
+    led_set_user(usb_led);
+}
+
+__attribute__ ((weak))
+void matrix_init_user(void) {
+}
+
+__attribute__ ((weak))
+void matrix_scan_user(void) {
+}
+
+__attribute__ ((weak))
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  return true;
+}
+
+__attribute__ ((weak))
+void led_set_user(uint8_t usb_led) {
+}
\ No newline at end of file
diff --git a/keyboards/bpiphany/frosty_flake/frosty_flake.h b/keyboards/bpiphany/frosty_flake/frosty_flake.h
new file mode 100644 (file)
index 0000000..953172a
--- /dev/null
@@ -0,0 +1,106 @@
+#ifndef FROSTY_FLAKE_H
+#define FROSTY_FLAKE_H
+
+#include "quantum.h"
+
+// This a shortcut to help you visually see your layout.
+// The following is an example using the Planck MIT layout
+// The first section contains all of the arguements
+// The second converts the arguments into a two-dimensional array
+
+/*
+  Matrix col/row mapping
+
+  ,----.    ,-------------------. ,-------------------. ,-------------------. ,--------------.
+  | J6 |    | I4 | H4 | H2 | H6 | | A7 | E6 | D2 | D4 | | B4 | B7 | B6 | B0 | | C7 | C5 | A5 |
+  `----'    `-------------------' `-------------------' `-------------------' `--------------'
+  ,-------------------------------------------------------------------------. ,--------------. ,-------------------.
+  | J4 | J7 | I7 | H7 | G7 | G4 | F4 | F7 | E7 | D7 | R7 | R4 | E4 |     B2 | | L4 | O4 | Q4 | | K1 | L1 | Q1 | Q0 |
+  |-------------------------------------------------------------------------| |--------------| |-------------------|
+  | J2   | J5 | I5 | H5 | G5 | G2 | F2 | F5 | E5 | D5 | R5 | R2 | E2 |   B3 | | K4 | O7 | Q7 | | K5 | L5 | Q5 | O5 |
+  |-------------------------------------------------------------------------| '--------------' |--------------     |
+  | O5    | J3 | I3 | H3 | G3 | G6 | F6 | F3 | E3 | D3 | R3 | R6 |       B1 |                  | K2 | L2 | Q2 |    |
+  |-------------------------------------------------------------------------|      ,----.      |-------------------|
+  | N2      | J1 | I1 | H1 | G1 | G0 | F0 | F1 | E1 | D1 | R0 |          N3 |      | O6 |      | K3 | L3 | Q3 | O3 |
+  |-------------------------------------------------------------------------| ,--------------. |--------------     |
+  | A4 | P2 | C6 |                  K6                  | C0 | M3 | D0 | A1 | | O0 | K0 | L0 | | L6      | Q6 |    |
+  `-------------------------------------------------------------------------' `--------------' `-------------------'
+*/
+#define KEYMAP( \
+  KJ6,      KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0,   KC7, KC5, KA5,                       \
+  KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2,   KL4, KO4, KQ4,   KK1, KL1, KQ1, KQ0, \
+  KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3,   KK4, KO7, KQ7,   KK5, KL5, KQ5, KO5, \
+  KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6,      KB1,                    KK2, KL2, KQ2,      \
+  KN2, KI6, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0,      KN3,        KO6,        KK3, KL3, KQ3, KO3, \
+  KA4, KP2, KC6,                KK6,                KC0, KM3, KD0, KA1,   KO0, KK0, KL0,   KL6,      KQ6       \
+) \
+{ \
+/* Columns and rows need to be swapped in the below definition */ \
+/*          A       B       C       D       E       F       G       H       I       J       K       L       M       N       O       P       Q       R       */ \
+/* 0 */ {   KC_NO,  KB0,    KC0,    KD0,    KC_NO,  KF0,    KG0,    KC_NO,  KC_NO,  KC_NO,  KK0,    KL0,    KC_NO,  KC_NO,  KO0,    KC_NO,  KQ0,    KR0     }, \
+/* 1 */ {   KA1,    KB1,    KC_NO,  KD1,    KE1,    KF1,    KG1,    KH1,    KI1,    KJ1,    KK1,    KL1,    KC_NO,  KC_NO,  KC_NO,  KC_NO,  KQ1,    KC_NO   }, \
+/* 2 */ {   KC_NO,  KB2,    KC_NO,  KD2,    KE2,    KF2,    KG2,    KH2,    KI2,    KJ2,    KK2,    KL2,    KC_NO,  KN2,    KC_NO,  KP2,    KQ2,    KR2     }, \
+/* 3 */ {   KC_NO,  KB3,    KC_NO,  KD3,    KE3,    KF3,    KG3,    KH3,    KI3,    KJ3,    KK3,    KL3,    KM3,    KN3,    KO3,    KC_NO,  KQ3,    KR3     }, \
+/* 4 */ {   KA4,    KB4,    KC_NO,  KD4,    KE4,    KF4,    KG4,    KH4,    KI4,    KJ4,    KK4,    KL4,    KC_NO,  KC_NO,  KO4,    KC_NO,  KQ4,    KR4     }, \
+/* 5 */ {   KA5,    KC_NO,  KC5,    KD5,    KE5,    KF5,    KG5,    KH5,    KI5,    KJ5,    KK5,    KL5,    KC_NO,  KC_NO,  KO5,    KC_NO,  KQ5,    KR5     }, \
+/* 6 */ {   KC_NO,  KB6,    KC6,    KC_NO,  KE6,    KF6,    KG6,    KH6,    KI6,    KJ6,    KK6,    KL6,    KC_NO,  KC_NO,  KO6,    KC_NO,  KQ6,    KR6     }, \
+/* 7 */ {   KA7,    KB7,    KC7,    KD7,    KE7,    KF7,    KG7,    KH7,    KI7,    KJ7,    KC_NO,  KC_NO,  KC_NO,  KC_NO,  KO7,    KC_NO,  KQ7,    KR7     }  \
+}
+
+/*
+  Matrix col/row mapping (TKL)
+
+  ,----.    ,-------------------. ,-------------------. ,-------------------. ,--------------.
+  | J6 |    | I4 | H4 | H2 | H6 | | A7 | E6 | D2 | D4 | | B4 | B7 | B6 | B0 | | C7 | C5 | A5 |
+  `----'    `-------------------' `-------------------' `-------------------' `--------------'
+  ,-------------------------------------------------------------------------. ,--------------.
+  | J4 | J7 | I7 | H7 | G7 | G4 | F4 | F7 | E7 | D7 | R7 | R4 | E4 |     B2 | | L4 | O4 | Q4 |
+  |-------------------------------------------------------------------------| |--------------|
+  | J2   | J5 | I5 | H5 | G5 | G2 | F2 | F5 | E5 | D5 | R5 | R2 | E2 |   B3 | | K4 | O7 | Q7 |
+  |-------------------------------------------------------------------------| '--------------'
+  | O5    | J3 | I3 | H3 | G3 | G6 | F6 | F3 | E3 | D3 | R3 | R6 |       B1 |
+  |-------------------------------------------------------------------------|      ,----.
+  | N2      | J1 | I1 | H1 | G1 | G0 | F0 | F1 | E1 | D1 | R0 |          N3 |      | O6 |
+  |-------------------------------------------------------------------------| ,--------------.
+  | A4 | P2 | C6 |                  K6                  | C0 | M3 | D0 | A1 | | O0 | K0 | L0 |
+  `-------------------------------------------------------------------------' `--------------'
+*/
+
+#define KEYMAP_TKL( \
+  KJ6,      KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0,   KC7, KC5, KA5, \
+  KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2,   KL4, KO4, KQ4, \
+  KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3,   KK4, KO7, KQ7, \
+  KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6,      KB1,                  \
+  KN2, KI6, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0,      KN3,        KO6,      \
+  KA4, KP2, KC6,                KK6,                KC0, KM3, KD0, KA1,   KO0, KK0, KL0  \
+) \
+{ \
+/* Columns and rows need to be swapped in the below definition */ \
+/*          A       B       C       D       E       F       G       H       I       J       K       L       M       N       O       P       Q       R       */ \
+/* 0 */ {   KC_NO,  KB0,    KC0,    KD0,    KC_NO,  KF0,    KG0,    KC_NO,  KC_NO,  KC_NO,  KK0,    KL0,    KC_NO,  KC_NO,  KO0,    KC_NO,  KC_NO,  KR0     }, \
+/* 1 */ {   KA1,    KB1,    KC_NO,  KD1,    KE1,    KF1,    KG1,    KH1,    KI1,    KJ1,    KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }, \
+/* 2 */ {   KC_NO,  KB2,    KC_NO,  KD2,    KE2,    KF2,    KG2,    KH2,    KI2,    KJ2,    KC_NO,  KC_NO,  KC_NO,  KN2,    KC_NO,  KP2,    KC_NO,  KR2     }, \
+/* 3 */ {   KC_NO,  KB3,    KC_NO,  KD3,    KE3,    KF3,    KG3,    KH3,    KI3,    KJ3,    KC_NO,  KC_NO,  KM3,    KN3,    KC_NO,  KC_NO,  KC_NO,  KR3     }, \
+/* 4 */ {   KA4,    KB4,    KC_NO,  KD4,    KE4,    KF4,    KG4,    KH4,    KI4,    KJ4,    KK4,    KL4,    KC_NO,  KC_NO,  KO4,    KC_NO,  KQ4,    KR4     }, \
+/* 5 */ {   KA5,    KC_NO,  KC5,    KD5,    KE5,    KF5,    KG5,    KH5,    KI5,    KJ5,    KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KR5     }, \
+/* 6 */ {   KC_NO,  KB6,    KC6,    KC_NO,  KE6,    KF6,    KG6,    KH6,    KI6,    KJ6,    KK6,    KC_NO,  KC_NO,  KC_NO,  KO6,    KC_NO,  KC_NO,  KR6     }, \
+/* 7 */ {   KA7,    KB7,    KC7,    KD7,    KE7,    KF7,    KG7,    KH7,    KI7,    KJ7,    KC_NO,  KC_NO,  KC_NO,  KC_NO,  KO7,    KC_NO,  KQ7,    KR7     }  \
+}
+
+#define LAYOUT_tkl_ansi( \
+  KJ6,      KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0,   KC7, KC5, KA5, \
+  KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2,   KL4, KO4, KQ4, \
+  KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3,   KK4, KO7, KQ7, \
+  KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6,      KB1,                  \
+  KN2,      KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0,      KN3,        KO6,      \
+  KA4, KP2, KC6,                KK6,                KC0, KM3, KD0, KA1,   KO0, KK0, KL0  \
+) KEYMAP_TKL( \
+  KJ6,      KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0,   KC7, KC5, KA5, \
+  KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2,   KL4, KO4, KQ4, \
+  KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3,   KK4, KO7, KQ7, \
+  KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6,      KB1,                  \
+  KN2, KC_NO, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0,      KN3,        KO6,      \
+  KA4, KP2, KC6,                KK6,                KC0, KM3, KD0, KA1,   KO0, KK0, KL0  \
+)
+
+#endif
diff --git a/keyboards/bpiphany/frosty_flake/keymaps/QFR_JM/config.h b/keyboards/bpiphany/frosty_flake/keymaps/QFR_JM/config.h
new file mode 100644 (file)
index 0000000..b251940
--- /dev/null
@@ -0,0 +1,11 @@
+
+#define TAPPING_TERM 150 //reduce time required to register a held key
+
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+// place overrides here
+
+#endif
diff --git a/keyboards/bpiphany/frosty_flake/keymaps/QFR_JM/keymap.c b/keyboards/bpiphany/frosty_flake/keymaps/QFR_JM/keymap.c
new file mode 100644 (file)
index 0000000..8189939
--- /dev/null
@@ -0,0 +1,132 @@
+#include "frosty_flake.h"
+#include "action_layer.h"
+#ifdef AUDIO_ENABLE
+  #include "audio.h"
+#endif
+#include "eeconfig.h"
+
+enum QFR_layers {
+  _COLEMAK,
+  _QWERTY,
+  _DVORAK,
+  _LOWER,
+  _MOUSE
+};
+
+enum QFR_keycodes {
+  COLEMAK = SAFE_RANGE,
+  QWERTY,
+  DVORAK,
+  LOWER,
+  MOUSE
+};
+
+enum custom_macros {
+  R_PIPE,
+  R_POINT
+};
+
+  const uint16_t PROGMEM fn_actions[] = { //ACTION_LAYER_TAP_TOGGLE requires that number of taps be defined in *config.h* - default set to 5
+      [0] = ACTION_LAYER_TAP_KEY(_LOWER, KC_SPC),    //Hold for momentary Lower layer, Tap for Space, 
+      [1] = ACTION_LAYER_MOMENTARY(_MOUSE)           //Hold for momentary MOUSE
+
+   };
+
+#define SPC_LW FUNC(0)
+#define MSE FUNC(1)
+#define PIPE M(R_PIPE)
+#define POINT M(R_POINT)
+
+// Fillers to make layering more clear
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[_COLEMAK] = KEYMAP_TKL(\
+      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_PSCR,KC_SLCK,KC_PAUS, \
+      KC_GRV,    KC_1,      KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,    KC_0,    KC_MINS, KC_EQL, KC_BSPC,  KC_INS, KC_HOME,KC_PGUP, \
+      KC_TAB,    KC_Q,      KC_W,   KC_F,   KC_P,   KC_G,   KC_J,   KC_L,   KC_U,   KC_Y,    KC_SCLN, KC_LBRC, KC_RBRC,KC_BSLS,  KC_DEL, KC_END, KC_PGDN, \
+      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_ENT ,                           \
+      KC_LSPO,KC_NUBS,KC_Z, KC_X,   KC_C,   KC_V,   KC_B,   KC_K,   KC_M,   KC_COMM, KC_DOT, KC_SLSH,          KC_RSPC,                   KC_UP,          \
+      KC_LCTL,KC_LGUI,      KC_LALT,                SPC_LW,                                  MSE,     KC_RGUI, KC_APP, KC_RCTL,  KC_LEFT,KC_DOWN,KC_RGHT
+      ),
+
+[_QWERTY] = KEYMAP_TKL(\
+       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_PSCR, KC_SLCK, KC_PAUS, \
+       KC_GRV, KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_MINS, KC_EQL,  KC_BSPC,   KC_INS,  KC_HOME, KC_PGUP, \
+       KC_TAB, KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,   KC_LBRC, KC_RBRC, KC_BSLS,   KC_DEL,  KC_END,  KC_PGDN, \
+       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_NUBS,KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,          KC_RSFT,            KC_UP, \
+       KC_LCTL,KC_LGUI,KC_LALT,                SPC_LW,                                 MSE,    KC_RGUI , KC_APP,  KC_RCTL,   KC_LEFT, KC_DOWN, KC_RGHT  
+       ),
+
+[_DVORAK] = KEYMAP_TKL(\
+       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_PSCR, KC_SLCK, KC_PAUS, \
+       KC_GRV, KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_MINS, KC_EQL,  KC_BSPC,   KC_INS,  KC_HOME, KC_PGUP, \
+       KC_TAB, KC_QUOT,KC_COMM,KC_DOT, KC_P,   KC_Y,   KC_F,   KC_G,   KC_C,   KC_R,   KC_L,   KC_LBRC, KC_RBRC, KC_BSLS,   KC_DEL,  KC_END,  KC_PGDN, \
+       KC_BSPC,KC_A,   KC_O,   KC_E,   KC_U,   KC_I,   KC_D,   KC_H,   KC_T,   KC_N,   KC_S,   KC_QUOT,          KC_ENT, \
+       KC_LSFT,KC_NUBS,KC_SCLN,KC_Q,   KC_J,   KC_K,   KC_X,   KC_B,   KC_M,   KC_W,   KC_V,   KC_Z,             KC_RSFT,            KC_UP, \
+       KC_LCTL,KC_LGUI,KC_LALT,                SPC_LW,                                 MSE,    KC_RGUI, KC_APP,  KC_RCTL,   KC_LEFT, KC_DOWN, KC_RGHT  
+       ),
+
+[_LOWER] = KEYMAP_TKL(\
+      RESET,    _______,    _______,   _______, _______,  KC_MPLY,   KC_MSTP,   KC_MPRV,   KC_MNXT,  _______, KC_MUTE, KC_VOLD, KC_VOLU,           QWERTY, COLEMAK,DVORAK, \
+      KC_TILD,  KC_EXLM,    KC_AT,     KC_HASH,  KC_DLR,  KC_PERC,   KC_CIRC,   KC_AMPR,   KC_ASTR,  KC_LBRC, KC_RBRC, KC_UNDS, KC_PLUS, KC_BSPC,  _______,_______,_______, \
+      KC_TAB,   KC_PGUP,    KC_HOME,   KC_UP,    KC_END,  XXXXXXX,   XXXXXXX,   XXXXXXX,   XXXXXXX,  XXXXXXX, XXXXXXX, KC_LCBR, KC_RCBR, KC_PIPE,  _______,_______,_______, \
+      KC_CAPS,  KC_PGDN,    KC_LEFT,   KC_DOWN,  KC_RGHT, XXXXXXX,   XXXXXXX,   XXXXXXX,   XXXXXXX,  XXXXXXX, XXXXXXX, _______,          _______,                           \
+      _______,XXXXXXX,POINT,PIPE,      KC_LCBR,  KC_LBRC, KC_GRV,    KC_PIPE,   KC_RBRC,   KC_RCBR,  _______, _______,                   _______,          _______,         \
+      _______,  _______,    _______,             _______,                       KC_RALT,   _______,  _______, _______,                            _______,_______,_______  \
+      ),
+
+[_MOUSE] = KEYMAP_TKL(\
+      _______,  _______,   _______,   _______,  _______, _______,   _______,   _______,   _______,  _______, _______, _______, _______,            _______,_______,_______, \
+      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_DEL,    _______,_______,_______, \
+      KC_TAB,   KC_WH_U,   KC_WH_L,   KC_MS_U,  KC_WH_R, XXXXXXX,   XXXXXXX,   KC_BTN3,   KC_BTN4,  KC_BTN5, XXXXXXX, KC_LBRC, KC_RBRC, KC_BSLS,   _______,_______,_______, \
+      KC_BSPC,  KC_WH_D,   KC_MS_L,   KC_MS_D,  KC_MS_R, XXXXXXX,   XXXXXXX,   KC_BTN1,   KC_BTN2,  XXXXXXX, XXXXXXX, XXXXXXX,          _______,                            \
+      _______,XXXXXXX,PIPE,POINT,     XXXXXXX,  XXXXXXX, XXXXXXX,   XXXXXXX,   XXXXXXX,   _______,  _______,  _______,                  _______,           _______,         \
+      _______,  _______,   _______,             KC_ACL2,                       MSE,       _______,  _______,  _______,                             _______,_______,_______  \
+      )
+};
+
+// Macros to send R pointer & dplyr pipe
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
+    switch(id) {
+        case R_POINT:
+            if (record->event.pressed) { // pointer
+                SEND_STRING("<- ");
+//                return MACRO(D(LSFT), T(COMM), U(LSFT), T(MINS), END);
+            }
+            break;
+        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;
+}
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  switch (keycode) {
+    case QWERTY:
+      if (record->event.pressed) {
+        set_single_persistent_default_layer(_QWERTY);
+      }
+      return false;
+      break;
+    case COLEMAK:
+      if (record->event.pressed) {
+        set_single_persistent_default_layer(_COLEMAK);
+      }
+      return false;
+      break;
+    case DVORAK:
+      if (record->event.pressed) {
+        set_single_persistent_default_layer(_DVORAK);
+      }
+      return false;
+      break; 
+  }
+  return true;
+}
\ No newline at end of file
diff --git a/keyboards/bpiphany/frosty_flake/keymaps/QFR_JM/readme.md b/keyboards/bpiphany/frosty_flake/keymaps/QFR_JM/readme.md
new file mode 100644 (file)
index 0000000..f12a0ff
--- /dev/null
@@ -0,0 +1,86 @@
+
+# TKL keymap for frosty\_flake
+```
+make frosty_flake:QFR_JM
+
+dfu-programmer atmega32u2 erase
+dfu-programmer atmega32u2 flash frosty_flake_QFR_JM.hex
+dfu-programmer atmega32u2 start
+```
+
+##Layers
+```
+  ,----.    ,-------------------. ,-------------------. ,-------------------. ,--------------.
+  |ESC |    | F1 | F2 | F3 | F4 | | F5 | F6 | F7 | F8 | | F9 |F10 |F11 |F12 | |PrSc|ScLk|PsBk|
+  '----'    '-------------------' '-------------------' '-------------------' '--------------'
+  ,-------------------------------------------------------------------------. ,--------------. 
+  |  ` | 1  |  2 |  3 | 4  |  5 |  6 |  7 |  8 |  9 |  0 |  - |  = |  Bspc  | | Ins|Home|PgUp| 
+  |-------------------------------------------------------------------------| |--------------| 
+  | Tab  | Q  |  W | F  | P  | G  | J  | L  |  U |  Y | ;  | [  |  ] |   \  | | Del|End |PgDn| 
+  |-------------------------------------------------------------------------| '--------------'
+  |  Bspc | A  | R  |  S |  T | D  | H  | N  | E  | I  | O  | '  |   Enter  |                 
+  |-------------------------------------------------------------------------|      ,----.     
+  |   LSPO  | Z  | X  |  C | V  |  B |  K |  M |  , |  . |  / |    RSPC     |      | Up |     
+  |-------------------------------------------------------------------------| ,--------------.
+  |Ctrl|LGUI|LAlt|             Space/Lower              |MSE |RGUI|Menu|Ctrl| |Left|Down|Rght|
+  '-------------------------------------------------------------------------' '--------------'
+
+```
+### Base Layer - Colemak
+The base layout is Colemak by default, but this can be changed to QWERTY via the *LOWER* layer. 
+* I've implemented COLEMAK = SAFE\_RANGE when enumerating the custom\_keycodes, but I don't actually know what this does...
+
+* Space cadet is implemented in the shift keys (hold for shift, tap for respective parentheses)
+
+#### Layer Shifting
+* The spacebar is a **TAP_KEY** macro - Hold for momentary *LOWER* layer, Tap for Space.
+* The Right hand ALT key is a **TAP_TOGGLE** macro for the *MOUSE* layer (RAlt is accessible through LOWER, if you want...)
+       
+### LOWER
+```
+  ,----.    ,-------------------. ,-------------------. ,-------------------. ,--------------.
+  |ESC |    | F1 | F2 | F3 | F4 | |>/|||Stop| << | >> | | F9 |MUTE|Vol-|Vol+| |QWTY|CLMK|PsBk|
+  '----'    '-------------------' '-------------------' '-------------------' '--------------'
+  ,-------------------------------------------------------------------------. ,--------------. 
+  |  ~ | !  |  @ |  # |  $ |  % |  ^ |  & |  * |  ( |  ) |  _ |  + |  Bspc  | | Ins|Home|PgUp| 
+  |-------------------------------------------------------------------------| |--------------| 
+  | Tab  |PgUp|Home| Up | End|    |    |    |    |    |    | {  |  } |   |  | | Del|End |PgDn| 
+  |-------------------------------------------------------------------------| '--------------'
+  | Bckspc|PgDn|Left|Down|Rght|    |    |    |    |    |    | '  |   Enter  |                 
+  |-------------------------------------------------------------------------|      ,----.     
+  |   LSPO  | <- |%>% |  { | [  |  ` | |  |  ] |  } |  . |  / |    RSPC     |      | Up |     
+  |-------------------------------------------------------------------------| ,--------------.
+  |Ctrl|LGUI|LAlt|                                                 |RAlt|RGUI|Menu|Ctrl| |Left|Down|Rght|
+  '-------------------------------------------------------------------------' '--------------'
+```
+The *LOWER* layer contains a navigation cluster on the left hand. This layer is momentary when the spacebar or LOWER (RAlt) key is held and toggled on/off when the LOWER key is tapped.
+       
+* The Navigation cluster is offset to the right compared to the traditional **WASD** nav cluster. With this implementation, you don't need to move your hand from the home position when navigating. Page Up & Down keys are found on the far left of the cluster.
+
+* All unused (blank on the above keymap) keys are locked out using the XXXXXXX filler (KC\_NO), all modifiers (edge |\_| keys \[except 0, \. & Fn\] on the above keymap) and the ZXCV cluster are transparent (\_\_\_\_\_\_\_) to the Base layer.
+
+* The base layer can be switched to QWERTY or COLEMAK by pressing the Pause Break or Scroll Lock keys respectively
+
+### MOUSE
+```
+  ,----.    ,-------------------. ,-------------------. ,-------------------. ,--------------.
+  |ESC |    | F1 | F2 | F3 | F4 | | F5 | F6 | F7 | F8 | | F9 |F10 |F11 |F12 | |PrSc|ScLk|PsBk|
+  '----'    '-------------------' '-------------------' '-------------------' '--------------'
+  ,-------------------------------------------------------------------------. ,--------------. 
+  |  ` | 1  |  2 |  3 | 4  |  5 |  6 |  7 |  8 |  9 |  0 |  - |  = |   Del  | | Ins|Home|PgUp| 
+  |-------------------------------------------------------------------------| |--------------| 
+  | Tab  | WhU| WhL| MsU| WhR|    |    | M3 | M4 | M5 |    | [  |  ] |   \  | | Del|End |PgDn| 
+  |-------------------------------------------------------------------------| '--------------'
+  | BSPC  | WhD| MsL| MsD| MsR|    |    |LClk |RClk |    |    | '  |   Enter  |                 
+  |-------------------------------------------------------------------------|      ,----.     
+  |   LSPO  | Z  | X  |  C | V  |    |    |    |  , |  . |  / |    RSPC     |      | Up |     
+  |-------------------------------------------------------------------------| ,--------------.
+  |Ctrl|LGUI|LAlt|               Accel ++               |MSE |RGUI|Menu|Ctrl| |Left|Down|Rght|
+  '-------------------------------------------------------------------------' '--------------'
+```
+The *MOUSE* layer contains keys replicating functions found on the mouse. 
+
+* The navigation cluster (Up, Down, Left, Right) is a replication of the Navigation cluster on the *LOWER* layer. The scroll keys are analagous to the Page Up & Downkeys.
+* The primary click (right & left) buttons are on the right home row (index & middle fingers)
+* Secondary click buttons are above the standard keys (M3/Wheel click, M4, M5) but I do not use this function.
+
diff --git a/keyboards/bpiphany/frosty_flake/keymaps/QFR_JM/rules.mk b/keyboards/bpiphany/frosty_flake/keymaps/QFR_JM/rules.mk
new file mode 100644 (file)
index 0000000..0ae0b96
--- /dev/null
@@ -0,0 +1,17 @@
+# 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 = 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
+NKRO_ENABLE = no            # 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 = no        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
+SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
diff --git a/keyboards/bpiphany/frosty_flake/keymaps/default/config.h b/keyboards/bpiphany/frosty_flake/keymaps/default/config.h
new file mode 100644 (file)
index 0000000..8893d12
--- /dev/null
@@ -0,0 +1,8 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+// place overrides here
+
+#endif
diff --git a/keyboards/bpiphany/frosty_flake/keymaps/default/keymap.c b/keyboards/bpiphany/frosty_flake/keymaps/default/keymap.c
new file mode 100644 (file)
index 0000000..4dc7ed6
--- /dev/null
@@ -0,0 +1,11 @@
+#include "frosty_flake.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = KEYMAP(\
+       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_PSCR,KC_SLCK,KC_PAUS,                        \
+       KC_GRV,   KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,KC_MINS, KC_EQL,KC_BSPC,   KC_INS,KC_HOME,KC_PGUP,  KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \
+       KC_TAB,   KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,KC_LBRC,KC_RBRC,KC_BSLS,   KC_DEL, KC_END,KC_PGDN,    KC_P7,  KC_P8,  KC_P9,KC_PPLS, \
+      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_P4,  KC_P5,  KC_P6,      \
+      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_UP,            KC_P1,  KC_P2,  KC_P3,KC_PENT, \
+      KC_LCTL,KC_LGUI,KC_LALT,                 KC_SPC,                                KC_RALT,KC_RGUI, KC_APP,KC_RCTL,  KC_LEFT,KC_DOWN,KC_RGHT,    KC_P0,KC_PDOT)
+};
\ No newline at end of file
diff --git a/keyboards/bpiphany/frosty_flake/keymaps/default/readme.md b/keyboards/bpiphany/frosty_flake/keymaps/default/readme.md
new file mode 100644 (file)
index 0000000..11bf482
--- /dev/null
@@ -0,0 +1 @@
+# The default keymap for frosty_flake
diff --git a/keyboards/bpiphany/frosty_flake/keymaps/default/rules.mk b/keyboards/bpiphany/frosty_flake/keymaps/default/rules.mk
new file mode 100644 (file)
index 0000000..9d3df59
--- /dev/null
@@ -0,0 +1,21 @@
+# 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 = yes       # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes       # 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 = no        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
+SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
+
+ifndef QUANTUM_DIR
+       include ../../../../Makefile
+endif
diff --git a/keyboards/bpiphany/frosty_flake/keymaps/nikchi/config.h b/keyboards/bpiphany/frosty_flake/keymaps/nikchi/config.h
new file mode 100644 (file)
index 0000000..3f78526
--- /dev/null
@@ -0,0 +1,23 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+#define TAPPING_TERM 200
+#define LEADER_TIMEOUT 800
+
+#define DISABLE_SPACE_CADET_ROLLOVER
+
+#define UNICODE_TYPE_DELAY 0
+
+#define LSPO_KEY KC_9
+#define RSPC_KEY KC_0
+
+#define MOUSEKEY_INTERVAL       20
+#define MOUSEKEY_DELAY          0
+#define MOUSEKEY_TIME_TO_MAX    60
+#define MOUSEKEY_MAX_SPEED      7
+#define MOUSEKEY_WHEEL_DELAY 0
+// place overrides here
+
+#endif
diff --git a/keyboards/bpiphany/frosty_flake/keymaps/nikchi/keymap.c b/keyboards/bpiphany/frosty_flake/keymaps/nikchi/keymap.c
new file mode 100644 (file)
index 0000000..bf7c5e5
--- /dev/null
@@ -0,0 +1,228 @@
+#include "frosty_flake.h"
+#include "action_layer.h"
+#include "eeconfig.h"
+#include "process_unicode.h"
+#include "process_unicodemap.h"
+#include "quantum.h"
+
+#define _______ KC_TRNS
+#define MAXEMOJITAPS 80
+
+
+//declarations for tap dancing emojis
+void register_hex32(uint32_t hex);
+void cycleEmojis(qk_tap_dance_state_t *state, void *user_data);
+void cycleAnimals(qk_tap_dance_state_t *state, void *user_data);
+void cycleFoods(qk_tap_dance_state_t *state, void *user_data);
+void cycleEtc(qk_tap_dance_state_t *state, void *user_data);
+void cycleAll(qk_tap_dance_state_t *state, void *user_data);
+
+void tap(uint16_t keycode){
+    register_code(keycode);
+    unregister_code(keycode);
+};
+
+//Tap Dance Declarations
+enum taps{
+  TD_CTCPS = 0,
+  EMOJIS,
+  ANIMAL,
+  HAND,
+  MEMES,
+  COPA,
+  ALLS
+};
+
+enum unicode_name { 
+  EMOTIS = 1,//80, //1F60x - 1F64x
+  ANIMALS, //64, //1F40x - 1F43x
+  SYMBOLS,// = 45, //1F300 - 1F32C
+  FOODS,// = 87 , //1F32D - 
+  ETC,// = 192, //1F44x -1F4Fx
+  VEHICLES,// = 83, //1F68x - 1F6Dx
+  SUPPLEMENT,// = 32, //1F91x-1F92x
+  ALCHEMY,// = 116 //1F70x - 1F773
+  
+};
+
+enum my_macros {
+  NEWDESK = 0,
+  LEFTDESK,
+  RIGHTDESK,
+  CLOSEDESK
+};
+
+
+// Tap Dance Definitions
+qk_tap_dance_action_t tap_dance_actions[] = {
+  // Tap once for CTRL, twice for Caps Lock
+  [TD_CTCPS]  = ACTION_TAP_DANCE_DOUBLE(KC_LCTL, KC_CAPS),
+  [COPA]  = ACTION_TAP_DANCE_DOUBLE(LCTL(KC_C), LCTL(KC_V)),
+  [EMOJIS] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(cycleEmojis, NULL, NULL, 800),
+  [ANIMAL] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(cycleAnimals, NULL, NULL, 800),
+  //[SYMBOLS] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(cycleSymbols, NULL, NULL, 800),
+  [FOODS] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(cycleFoods, NULL, NULL, 800),
+  [ETC] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(cycleEtc, NULL, NULL, 800),
+  //[VEHICLES] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(cycleVehicles, NULL, NULL, 800),
+  //[SUPPLEMENT] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(cycleSupplement, NULL, NULL, 800),
+  [ALLS] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(cycleAll, NULL, NULL, 800)
+// Other declarations would go here, separated by commas, if you have them
+};
+
+// macros
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
+  switch(id) {
+    case NEWDESK: // this would trigger when you hit a key mapped as M(0)
+      if (record->event.pressed) {
+        return MACRO( I(1), D(LGUI), D(LCTL), D(D), U(LGUI), U(LCTL), U(D), END  ); // NEW DESKTOP
+      }
+      break;
+    case LEFTDESK: // this would trigger when you hit a key mapped as M(0)
+      if (record->event.pressed) {
+        return MACRO( I(1), D(LGUI), D(LCTL), D(LEFT), U(LGUI), U(LCTL), U(LEFT), END  ); // LEFT DESKTOP
+      }
+      break;
+    case RIGHTDESK: // this would trigger when you hit a key mapped as M(0)
+      if (record->event.pressed) {
+        return MACRO( I(1), D(LGUI), D(LCTL), D(RGHT), U(LGUI), U(LCTL), U(RGHT), END  ); // RIGHT DESKTOP
+      }
+      break;
+    case CLOSEDESK: // this would trigger when you hit a key mapped as M(0)
+      if (record->event.pressed) {
+        return MACRO( I(1), D(LGUI), D(LCTL), D(F4), U(LGUI), U(LCTL), U(F4), END  ); // CLOSE DESKTOP
+      }
+      break;
+  }
+  return MACRO_NONE;
+};
+
+
+// emojis in unicode
+const uint32_t PROGMEM unicode_map[] = {
+  [EMOTIS]     = 0x1F600,
+  [ANIMALS]    = 0x1F400,
+  [SYMBOLS]    = 0x1F300,
+  [FOODS]      = 0x1F32D, 
+  [ETC]        = 0x1F440,
+  [VEHICLES]   = 0x1F680,
+  [SUPPLEMENT] = 0x1F910,
+  [ALCHEMY]    = 0x1F700
+ };
+// Layouts
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = KEYMAP(\
+      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_PSCR,KC_SLCK,KC_PAUS,                        \
+      KC_GRV,   KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,KC_MINS, KC_EQL,KC_BSPC,   KC_INS,KC_HOME,KC_PGUP,  KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \
+      KC_TAB,   KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,KC_LBRC,KC_RBRC,KC_BSLS,   KC_DEL, KC_END,KC_PGDN,    KC_P7,  KC_P8,  KC_P9,KC_PPLS, \
+      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_P4,  KC_P5,  KC_P6,      \
+      KC_LSPO,KC_NUBS,   KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,KC_COMM, KC_DOT,KC_SLSH,        KC_RSPC,            KC_UP,            KC_P1,  KC_P2,  KC_P3,KC_PENT, \
+ TD(TD_CTCPS),KC_LGUI,KC_LALT,                 KC_SPC,                                KC_LEAD,KC_RGUI, KC_APP,MO(1)  ,  KC_LEFT,KC_DOWN,KC_RGHT,    KC_P0,KC_PDOT),
+[1] = KEYMAP(\
+    TD(ALLS),  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_PSCR,KC_SLCK,KC_PAUS,                        \
+      KC_GRV, TD(EMOJIS),TD(ANIMAL),TD(ETC),TD(FOODS),   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,KC_MINS, KC_EQL,KC_BSPC,   KC_MPRV,KC_MPLY,KC_MNXT,  KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \
+      KC_TAB,   KC_Q,   M(0),   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,   KC_P, KC_UP  ,KC_RBRC,KC_BSLS,   KC_MUTE,KC_VOLD,KC_VOLU,    KC_P7,  KC_P8,  KC_P9,KC_PPLS, \
+      KC_LCTL,   M(1),   M(3),   M(2),   KC_F,   KC_G,   KC_H,   KC_J,   KC_K,   KC_L,KC_LEFT,KC_RGHT,         KC_ENT,                              KC_P4,  KC_P5,  KC_P6,      \
+      KC_LSFT,KC_NUBS,   KC_Z,   KC_X,   KC_C, KC_V,   KC_B,   KC_N,    KC_M,KC_COMM, KC_DOT,KC_DOWN,        KC_RSFT,          KC_MS_U,            KC_P1,  KC_P2,  KC_P3,KC_PENT, \
+      KC_BTN1,KC_BTN3,KC_BTN2,                 KC_SPC,                                KC_RALT,KC_RGUI, TG(2),_______  ,  KC_MS_L,KC_MS_D,KC_MS_R,    KC_P0,KC_PDOT),
+[2] = KEYMAP(\
+      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_PSCR,KC_SLCK,KC_PAUS,                        \
+      KC_GRV,  KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,KC_MINS, KC_EQL,KC_BSPC,   KC_MPRV,KC_MPLY,KC_MNXT,  KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \
+      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_MUTE,KC_VOLD,KC_VOLU,    KC_P7,  KC_P8,  KC_P9,KC_PPLS, \
+      KC_LCTL,   KC_D,   KC_S,   KC_D,   KC_F,   KC_G,   KC_H,   KC_J,   KC_K,   KC_L,KC_SCLN,KC_QUOT,         KC_ENT,                              KC_P4,  KC_P5,  KC_P6,      \
+      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_MS_U,            KC_P1,  KC_P2,  KC_P3,KC_PENT, \
+      KC_BTN1,KC_BTN3,KC_BTN2,                 KC_SPC,                                KC_RALT,KC_RGUI, TG(2) , KC_NO ,  KC_MS_L,KC_MS_D,KC_MS_R,    KC_P0,KC_PDOT),
+};
+
+LEADER_EXTERNS();
+
+void matrix_scan_user(void) {
+  LEADER_DICTIONARY() {
+    leading = false;
+    leader_end();
+
+    SEQ_TWO_KEYS(KC_A, KC_A) { // select all and copy
+      register_code(KC_LCTL);
+      tap(KC_A);
+      tap(KC_C);
+      unregister_code(KC_LCTL);
+    }
+  }
+}
+
+void matrix_init_user(void) {
+  _delay_ms(500);
+  set_unicode_input_mode(UC_WINC);
+};
+
+void cycleAll(qk_tap_dance_state_t *state, void *user_data) {
+  if(state->count == 1) {
+    unicode_input_start();
+    register_hex32(pgm_read_dword(&unicode_map[EMOTIS]));
+    unicode_input_finish();
+  }
+  else if(state->count <= 1642) {
+    tap(KC_BSPC);
+    unicode_input_start();
+    register_hex32(pgm_read_dword(&unicode_map[1])+state->count);
+    unicode_input_finish();
+  }
+};
+
+
+void cycleEmojis(qk_tap_dance_state_t *state, void *user_data) {
+  if(state->count == 1) {
+    unicode_input_start();
+    register_hex32(pgm_read_dword(&unicode_map[EMOTIS]));
+    unicode_input_finish();
+  }
+  else if(state->count <= 80) {
+    tap(KC_BSPC);
+    unicode_input_start();
+    register_hex32(pgm_read_dword(&unicode_map[EMOTIS])+state->count);
+    unicode_input_finish();
+  }
+};
+
+void cycleAnimals(qk_tap_dance_state_t *state, void *user_data) { 
+  if(state->count == 1) {
+    unicode_input_start();
+    register_hex32(pgm_read_dword(&unicode_map[ANIMALS]));
+    unicode_input_finish();
+  }
+  else if(state->count <= MAXEMOJITAPS) {
+    tap(KC_BSPC);
+    unicode_input_start();
+    register_hex32(pgm_read_dword(&unicode_map[ANIMALS])+state->count);
+    unicode_input_finish();
+  }
+};
+
+void cycleFoods(qk_tap_dance_state_t *state, void *user_data) {
+  if(state->count == 1) {
+    unicode_input_start();
+    register_hex32(pgm_read_dword(&unicode_map[FOODS]));
+    unicode_input_finish();
+  }
+  else if(state->count <= 87) {
+    tap(KC_BSPC);
+    unicode_input_start();
+    register_hex32(pgm_read_dword(&unicode_map[FOODS])+state->count);
+    unicode_input_finish();
+  }
+};
+
+
+void cycleEtc(qk_tap_dance_state_t *state, void *user_data) {
+  if(state->count == 1) {
+    unicode_input_start();
+    register_hex32(pgm_read_dword(&unicode_map[ETC]));
+    unicode_input_finish();
+  }
+  else if(state->count <= MAXEMOJITAPS) {
+    tap(KC_BSPC);
+    unicode_input_start();
+    register_hex32(pgm_read_dword(&unicode_map[ETC])+state->count);
+    unicode_input_finish();
+  }
+};
+
diff --git a/keyboards/bpiphany/frosty_flake/keymaps/nikchi/readme.md b/keyboards/bpiphany/frosty_flake/keymaps/nikchi/readme.md
new file mode 100644 (file)
index 0000000..0b01f9d
--- /dev/null
@@ -0,0 +1,24 @@
+# The Nikchi's keymap for frosty_flake
+
+### FEATURING
+-SPACE CADET 
+-Caps Lock is now LCTRL
+-LCTRL is Tap(LCTRL, Caps Lock)
+
+### LEADER KEY - RALT
+COMBOS
+-a,a => Select All, Copy
+
+
+
+### FN REBINDS for Windows
+```
+   [W]                 [New Desktop]
+[A][S][D]   [Left Desk][Delete Desk][Right Desk]
+
+[Ins][Hom][PUp]     [RW][PP][FF]
+[Del][End][PDn]     [MU][VD][VU]
+
+Arrows are Mouskeys, left three mods are clicks
+
+```
\ No newline at end of file
diff --git a/keyboards/bpiphany/frosty_flake/keymaps/nikchi/rules.mk b/keyboards/bpiphany/frosty_flake/keymaps/nikchi/rules.mk
new file mode 100644 (file)
index 0000000..b21eb64
--- /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 = yes       # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes       # Audio control and System control(+450)
+CONSOLE_ENABLE = no         # Console for debug(+400)
+COMMAND_ENABLE = no         # 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
+UNICODEMAP_ENABLE = yes                # unicodemap
+BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = no        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
+SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
+TAP_DANCE_ENABLE = yes
+LEADER_ENABLE = yes
+
+ifndef QUANTUM_DIR
+       include ../../../../Makefile
+endif
diff --git a/keyboards/bpiphany/frosty_flake/keymaps/nikchi/variableTapDance.md b/keyboards/bpiphany/frosty_flake/keymaps/nikchi/variableTapDance.md
new file mode 100644 (file)
index 0000000..b2e5041
--- /dev/null
@@ -0,0 +1,9 @@
+# Tap Dancing to different beats.
+Tap Dance is constrained normally by `TAPPING_TERM` defined in your keyboard's config.h This proves to be challenging to work with when sometimes you just need more time to tap out your dance, or even a different "beat".
+
+
+
+- `ACTION_TAP_DANCE_FN_ADVANCED_TIME(user_fn_on_each_tap, user_fn_on_dance_finished, user_fn_on_dance_reset, tap_specific_tapping_term)` : This works the same as `ACTION_TAP_DANCE_FN_ADVANCED` just with the extra `tap_specific_tapping_term` arguement at the end. This way you can set a specific tap dance to have a longer or shorter tap in between your taps, giving you more, or less, time in between each tap.   
+
+
+`tap_specific_tapping_term` should be the same type and range of values that one would put into the `TAPPING_TERM` definition in the config.h file.
diff --git a/keyboards/bpiphany/frosty_flake/keymaps/tkl/config.h b/keyboards/bpiphany/frosty_flake/keymaps/tkl/config.h
new file mode 100644 (file)
index 0000000..8893d12
--- /dev/null
@@ -0,0 +1,8 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+// place overrides here
+
+#endif
diff --git a/keyboards/bpiphany/frosty_flake/keymaps/tkl/keymap.c b/keyboards/bpiphany/frosty_flake/keymaps/tkl/keymap.c
new file mode 100644 (file)
index 0000000..99dc956
--- /dev/null
@@ -0,0 +1,11 @@
+#include "frosty_flake.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = KEYMAP_TKL(\
+                 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_PSCR, KC_SLCK, KC_PAUS, \
+                 KC_GRV, KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_MINS, KC_EQL,  KC_BSPC,   KC_INS,  KC_HOME, KC_PGUP, \
+                 KC_TAB, KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,   KC_LBRC, KC_RBRC, KC_BSLS,   KC_DEL,  KC_END,  KC_PGDN, \
+                 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_NUBS,KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,          KC_RSFT,            KC_UP, \
+                 KC_LCTL,KC_LGUI,KC_LALT,                KC_SPC,                                 KC_RALT,KC_RGUI, KC_APP,  KC_RCTL,   KC_LEFT, KC_DOWN, KC_RGHT  )
+};
diff --git a/keyboards/bpiphany/frosty_flake/keymaps/tkl/readme.md b/keyboards/bpiphany/frosty_flake/keymaps/tkl/readme.md
new file mode 100644 (file)
index 0000000..a076a65
--- /dev/null
@@ -0,0 +1 @@
+# TKL keymap for frosty_flake
diff --git a/keyboards/bpiphany/frosty_flake/keymaps/tkl/rules.mk b/keyboards/bpiphany/frosty_flake/keymaps/tkl/rules.mk
new file mode 100644 (file)
index 0000000..f29756f
--- /dev/null
@@ -0,0 +1,17 @@
+# 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 = yes       # Audio control and System control(+450)
+CONSOLE_ENABLE = yes        # Console for debug(+400)
+COMMAND_ENABLE = yes        # Commands for debug and configuration
+NKRO_ENABLE = no            # 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 = no        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
+SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
diff --git a/keyboards/bpiphany/frosty_flake/matrix.c b/keyboards/bpiphany/frosty_flake/matrix.c
new file mode 100644 (file)
index 0000000..480e345
--- /dev/null
@@ -0,0 +1,155 @@
+/*
+  Copyright 2017 Gabriel Young <gabeplaysdrums@live.com>
+
+  This program is free software: you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation, either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <stdint.h>
+#include <stdbool.h>
+#include <avr/io.h>
+#include <util/delay.h>
+#include "print.h"
+#include "debug.h"
+#include "util.h"
+#include "matrix.h"
+
+#ifndef DEBOUNCING_DELAY
+#   define DEBOUNCING_DELAY 5
+#endif
+static uint8_t debouncing = DEBOUNCING_DELAY;
+
+static matrix_row_t matrix[MATRIX_ROWS];
+static matrix_row_t matrix_debouncing[MATRIX_ROWS];
+
+__attribute__ ((weak))
+void matrix_init_kb(void) {
+    matrix_init_user();
+}
+
+__attribute__ ((weak))
+void matrix_scan_kb(void) {
+    matrix_scan_user();
+}
+
+__attribute__ ((weak))
+void matrix_init_user(void) {
+}
+
+__attribute__ ((weak))
+void matrix_scan_user(void) {
+}
+
+static matrix_row_t scan_col(void) {
+    return (
+        (PINC&(1<<7) ? 0 : ((matrix_row_t)1<<0)) |
+        (PINB&(1<<5) ? 0 : ((matrix_row_t)1<<1)) |
+        (PINB&(1<<4) ? 0 : ((matrix_row_t)1<<2)) |
+        (PINB&(1<<6) ? 0 : ((matrix_row_t)1<<3)) |
+        (PINB&(1<<1) ? 0 : ((matrix_row_t)1<<4)) |
+        (PINB&(1<<2) ? 0 : ((matrix_row_t)1<<5)) |
+        (PINB&(1<<3) ? 0 : ((matrix_row_t)1<<6)) |
+        (PINB&(1<<0) ? 0 : ((matrix_row_t)1<<7))
+    );
+}
+
+static void select_col(uint8_t col) {
+    switch (col) {
+        case  0: PORTD = (PORTD & ~0b01111011) | 0b00011011; break;
+        case  1: PORTD = (PORTD & ~0b01111011) | 0b01000011; break;
+        case  2: PORTD = (PORTD & ~0b01111011) | 0b01101010; break;
+        case  3: PORTD = (PORTD & ~0b01111011) | 0b01111001; break;
+        case  4: PORTD = (PORTD & ~0b01111011) | 0b01100010; break;
+        case  5: PORTD = (PORTD & ~0b01111011) | 0b01110001; break;
+        case  6: PORTD = (PORTD & ~0b01111011) | 0b01100001; break;
+        case  7: PORTD = (PORTD & ~0b01111011) | 0b01110000; break;
+        case  8: PORTD = (PORTD & ~0b01111011) | 0b01100000; break;
+        case  9: PORTD = (PORTD & ~0b01111011) | 0b01101000; break;
+        case 10: PORTD = (PORTD & ~0b01111011) | 0b00101011; break;
+        case 11: PORTD = (PORTD & ~0b01111011) | 0b00110011; break;
+        case 12: PORTD = (PORTD & ~0b01111011) | 0b00100011; break;
+        case 13: PORTD = (PORTD & ~0b01111011) | 0b01111000; break;
+        case 14: PORTD = (PORTD & ~0b01111011) | 0b00010011; break;
+        case 15: PORTD = (PORTD & ~0b01111011) | 0b01101001; break;
+        case 16: PORTD = (PORTD & ~0b01111011) | 0b00001011; break;
+        case 17: PORTD = (PORTD & ~0b01111011) | 0b00111011; break;
+    }
+}
+
+void matrix_init(void) {
+    /* Row output pins */
+    DDRD  |=  0b01111011;
+    /* Column input pins */
+    DDRC  &= ~0b10000000;
+    DDRB  &= ~0b01111111;
+    PORTC |=  0b10000000;
+    PORTB |=  0b01111111;
+
+    for (uint8_t i=0; i < MATRIX_ROWS; i++)
+        matrix[i] = matrix_debouncing[i] = 0;
+
+    matrix_init_quantum();
+}
+
+uint8_t matrix_scan(void) {
+    for (uint8_t col = 0; col < MATRIX_COLS; col++) {
+        select_col(col);
+        _delay_us(3);
+        matrix_row_t col_scan = scan_col();
+        for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
+            bool prev_bit = matrix_debouncing[row] & ((matrix_row_t)1<<col);
+            bool curr_bit = col_scan & (1<<row);
+            if (prev_bit != curr_bit) {
+                matrix_debouncing[row] ^= ((matrix_row_t)1<<col);
+                debouncing = DEBOUNCING_DELAY;
+            }
+        }
+    }
+
+    if (debouncing) {
+        if (--debouncing)
+            _delay_ms(1);
+        else
+            for (uint8_t i = 0; i < MATRIX_ROWS; i++)
+                matrix[i] = matrix_debouncing[i];
+    }
+
+    matrix_scan_quantum();
+    return 1;
+}
+
+inline matrix_row_t matrix_get_row(uint8_t row) {
+    return matrix[row];
+}
+
+void matrix_print(void) {
+#ifndef NO_PRINT
+    print("\nr\\c ABCDEFGHIJKLMNOPQR\n");
+    for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
+        matrix_row_t matrix_row = matrix_get_row(row);
+        xprintf("%02X: ", row);
+        for (uint8_t col = 0; col < MATRIX_COLS; col++) {
+            bool curr_bit = matrix_row & (1<<col);
+            xprintf("%c", curr_bit ? '*' : '.');
+        }
+        print("\n");
+    }
+#endif
+}
+
+uint8_t matrix_key_count(void) {
+    uint8_t count = 0;
+    for (uint8_t row = 0; row < MATRIX_ROWS; row++)
+        count += bitpop32(matrix[row]);
+    return count;
+}
diff --git a/keyboards/bpiphany/frosty_flake/readme.md b/keyboards/bpiphany/frosty_flake/readme.md
new file mode 100644 (file)
index 0000000..0d6a477
--- /dev/null
@@ -0,0 +1,43 @@
+# Frosty Flake Controller
+
+This is the firmware for Rev. 20140521 of the Frosty Flake controller
+by [Bathroom Epiphanies](http://bathroomepiphanies.com/controllers/),
+a replacement controller for the [Cooler Master Quick Fire
+Rapid](http://www.coolermaster.com/peripheral/keyboards/quickfirerapid/).
+
+The code was adapted from the [BathroomEpiphanies TMK
+Firmware](https://github.com/BathroomEpiphanies/epiphanies_tmk_keyboard/tree/master/be_controllers),
+but has been cleaned up to match the
+[schematic](https://deskthority.net/wiki/File:Frosty_Flake_Schematics.pdf)
+and gone through some minor refactoring for QMK.
+
+## 104 and 87 layout support
+
+Support for both 104 key and 87 key layouts is provided. See the
+keymaps `default` (104) and `tkl` (87) for example layouts.
+
+Keyboard Maintainer: QMK Community  
+Hardware Supported: Frosty Flake  
+Hardware Availability: https://1upkeyboards.com/qfr-frosty-flake-controller.html  
+
+Make example for this keyboard (after setting up your build environment):
+
+104 key default layout:
+
+```
+make bpiphany/frosty_flake:default
+```
+
+To directly flash the frosty_flake after compiling use
+
+```
+make bpiphany/frosty_flake:default:dfu
+```
+
+87 key tkl layout:
+
+```
+make bpiphany/frosty_flake:tkl:dfu
+```
+
+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/bpiphany/frosty_flake/rules.mk b/keyboards/bpiphany/frosty_flake/rules.mk
new file mode 100644 (file)
index 0000000..94619e0
--- /dev/null
@@ -0,0 +1,73 @@
+# MCU name
+#MCU = at90usb1287
+MCU = atmega32u2
+
+# 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
+
+
+# Boot Section Size in *bytes*
+#   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 = no        # Console for debug(+400)
+COMMAND_ENABLE = no        # 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
+MIDI_ENABLE = no            # MIDI controls
+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
+
+CUSTOM_MATRIX = yes
+SRC += matrix.c
+
+LAYOUTS = tkl_ansi
diff --git a/keyboards/bpiphany/kitten_paw/config.h b/keyboards/bpiphany/kitten_paw/config.h
new file mode 100644 (file)
index 0000000..d708973
--- /dev/null
@@ -0,0 +1,162 @@
+/*
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+#include "config_common.h"
+
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID       0xFEED
+#define PRODUCT_ID      0x6050
+#define DEVICE_VER      0x0104
+#define MANUFACTURER    Costar
+#define PRODUCT         Majestouch
+
+/* key matrix size */
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 18
+
+/*
+ * Keyboard Matrix Assignments
+ *
+ * Change this to how you wired your keyboard
+ * COLS: AVR pins used for columns, left to right
+ * ROWS: AVR pins used for rows, top to bottom
+ * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
+ *                  ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
+ *
+*/
+//#define MATRIX_ROW_PINS { D0, D5 }
+//#define MATRIX_COL_PINS { F1, F0, B0 }
+//#define UNUSED_PINS
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+// #define BACKLIGHT_PIN B7
+// #define BACKLIGHT_BREATHING
+// #define BACKLIGHT_LEVELS 3
+
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCING_DELAY 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Magic Key Options
+ *
+ * Magic keys are hotkey commands that allow control over firmware functions of
+ * the keyboard. They are best used in combination with the HID Listen program,
+ * found here: https://www.pjrc.com/teensy/hid_listen.html
+ *
+ * The options below allow the magic key functionality to be changed. This is
+ * useful if your keyboard/keypad is missing keys and you want magic key support.
+ *
+ */
+
+/* key combination for magic key command */
+#define IS_COMMAND() ( \
+    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
+)
+
+/* control how magic key switches layers */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS  true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS  true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
+
+/* override magic key keymap */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
+//#define MAGIC_KEY_HELP1          H
+//#define MAGIC_KEY_HELP2          SLASH
+//#define MAGIC_KEY_DEBUG          D
+//#define MAGIC_KEY_DEBUG_MATRIX   X
+//#define MAGIC_KEY_DEBUG_KBD      K
+//#define MAGIC_KEY_DEBUG_MOUSE    M
+//#define MAGIC_KEY_VERSION        V
+//#define MAGIC_KEY_STATUS         S
+//#define MAGIC_KEY_CONSOLE        C
+//#define MAGIC_KEY_LAYER0_ALT1    ESC
+//#define MAGIC_KEY_LAYER0_ALT2    GRAVE
+//#define MAGIC_KEY_LAYER0         0
+//#define MAGIC_KEY_LAYER1         1
+//#define MAGIC_KEY_LAYER2         2
+//#define MAGIC_KEY_LAYER3         3
+//#define MAGIC_KEY_LAYER4         4
+//#define MAGIC_KEY_LAYER5         5
+//#define MAGIC_KEY_LAYER6         6
+//#define MAGIC_KEY_LAYER7         7
+//#define MAGIC_KEY_LAYER8         8
+//#define MAGIC_KEY_LAYER9         9
+//#define MAGIC_KEY_BOOTLOADER     PAUSE
+//#define MAGIC_KEY_LOCK           CAPS
+//#define MAGIC_KEY_EEPROM         E
+//#define MAGIC_KEY_NKRO           N
+//#define MAGIC_KEY_SLEEP_LED      Z
+
+/*
+ * Feature disable options
+ *  These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+
+#endif
diff --git a/keyboards/bpiphany/kitten_paw/info.json b/keyboards/bpiphany/kitten_paw/info.json
new file mode 100644 (file)
index 0000000..7d25747
--- /dev/null
@@ -0,0 +1,18 @@
+{
+  "keyboard_name": "Kitten Paw",
+  "url": "",
+  "maintainer": "qmk",
+  "width": 22.5,
+  "height": 6.5,
+  "layouts": {
+    "LAYOUT": {
+      "key_count": 105,
+      "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "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":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Num Lock", "x":18.5, "y":1.5}, {"label":"/", "x":19.5, "y":1.5}, {"label":"*", "x":20.5, "y":1.5}, {"label":"-", "x":21.5, "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":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"7", "x":18.5, "y":2.5}, {"label":"8", "x":19.5, "y":2.5}, {"label":"9", "x":20.5, "y":2.5}, {"label":"+", "x":21.5, "y":2.5, "h":2}, {"label":"Caps Lock", "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":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"4", "x":18.5, "y":3.5}, {"label":"5", "x":19.5, "y":3.5}, {"label":"6", "x":20.5, "y":3.5}, {"label":"Shift", "x":0, "y":4.5, "w":1.25}, {"label":"KC_NUBS", "x":1.25, "y":4.5}, {"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":"N", "x":7.25, "y":4.5}, {"label":"M", "x":8.25, "y":4.5}, {"label":"<", "x":9.25, "y":4.5}, {"label":">", "x":10.25, "y":4.5}, {"label":"?", "x":11.25, "y":4.5}, {"label":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"1", "x":18.5, "y":4.5}, {"label":"2", "x":19.5, "y":4.5}, {"label":"3", "x":20.5, "y":4.5}, {"label":"Enter", "x":21.5, "y":4.5, "h":2}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":10, "y":5.5, "w":1.25}, {"label":"Win", "x":11.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}, {"label":"0", "x":18.5, "y":5.5, "w":2}, {"label":".", "x":20.5, "y":5.5}]
+    },
+
+    "LAYOUT_fullsize_ansi": {
+      "key_count": 104,
+      "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "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":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Num Lock", "x":18.5, "y":1.5}, {"label":"/", "x":19.5, "y":1.5}, {"label":"*", "x":20.5, "y":1.5}, {"label":"-", "x":21.5, "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":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"7", "x":18.5, "y":2.5}, {"label":"8", "x":19.5, "y":2.5}, {"label":"9", "x":20.5, "y":2.5}, {"label":"+", "x":21.5, "y":2.5, "h":2}, {"label":"Caps Lock", "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":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"4", "x":18.5, "y":3.5}, {"label":"5", "x":19.5, "y":3.5}, {"label":"6", "x":20.5, "y":3.5}, {"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":"N", "x":7.25, "y":4.5}, {"label":"M", "x":8.25, "y":4.5}, {"label":"<", "x":9.25, "y":4.5}, {"label":">", "x":10.25, "y":4.5}, {"label":"?", "x":11.25, "y":4.5}, {"label":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"1", "x":18.5, "y":4.5}, {"label":"2", "x":19.5, "y":4.5}, {"label":"3", "x":20.5, "y":4.5}, {"label":"Enter", "x":21.5, "y":4.5, "h":2}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":10, "y":5.5, "w":1.25}, {"label":"Win", "x":11.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}, {"label":"0", "x":18.5, "y":5.5, "w":2}, {"label":".", "x":20.5, "y":5.5}]
+    }
+  }
+}
diff --git a/keyboards/bpiphany/kitten_paw/keymaps/default/keymap.c b/keyboards/bpiphany/kitten_paw/keymaps/default/keymap.c
new file mode 100644 (file)
index 0000000..6767f04
--- /dev/null
@@ -0,0 +1,51 @@
+#include QMK_KEYBOARD_H
+
+enum layers {
+    DEFAULT,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+  [DEFAULT] = LAYOUT(\
+       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_PSCR,KC_SLCK,KC_PAUS,                        \
+       KC_GRV,   KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,KC_MINS, KC_EQL,KC_BSPC,   KC_INS,KC_HOME,KC_PGUP,  KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \
+       KC_TAB,   KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,KC_LBRC,KC_RBRC,KC_BSLS,   KC_DEL, KC_END,KC_PGDN,    KC_P7,  KC_P8,  KC_P9,KC_PPLS, \
+      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_P4,  KC_P5,  KC_P6,      \
+      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_UP,            KC_P1,  KC_P2,  KC_P3,KC_PENT, \
+      KC_LCTL,KC_LGUI,KC_LALT,                 KC_SPC,                                KC_RALT,KC_RGUI, KC_APP,KC_RCTL,  KC_LEFT,KC_DOWN,KC_RGHT,    KC_P0,KC_PDOT)
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+          if (record->event.pressed) {
+            register_code(KC_RSFT);
+          } else {
+            unregister_code(KC_RSFT);
+          }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+
+void matrix_init_user(void) {
+
+}
+
+void matrix_scan_user(void) {
+
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  return true;
+}
+
+void led_set_user(uint8_t usb_led) {
+
+}
\ No newline at end of file
diff --git a/keyboards/bpiphany/kitten_paw/keymaps/ickerwx/config.h b/keyboards/bpiphany/kitten_paw/keymaps/ickerwx/config.h
new file mode 100644 (file)
index 0000000..142aba8
--- /dev/null
@@ -0,0 +1,31 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+#undef MOUSEKEY_MOVE_MAX
+#define MOUSEKEY_MOVE_MAX       127
+#undef MOUSEKEY_WHEEL_MAX
+#define MOUSEKEY_WHEEL_MAX      110
+#undef MOUSEKEY_MOVE_DELTA
+#define MOUSEKEY_MOVE_DELTA     5
+#undef MOUSEKEY_WHEEL_DELTA
+#define MOUSEKEY_WHEEL_DELTA    1
+#undef MOUSEKEY_DELAY
+#define MOUSEKEY_DELAY 50
+#undef MOUSEKEY_INTERVAL
+#define MOUSEKEY_INTERVAL 20
+#undef MOUSEKEY_MAX_SPEED
+#define MOUSEKEY_MAX_SPEED 4
+#undef MOUSEKEY_TIME_TO_MAX
+#define MOUSEKEY_TIME_TO_MAX 30
+#undef MOUSEKEY_WHEEL_MAX_SPEED
+#define MOUSEKEY_WHEEL_MAX_SPEED 3
+#undef MOUSEKEY_WHEEL_TIME_TO_MAX
+#define MOUSEKEY_WHEEL_TIME_TO_MAX 255
+#undef ONESHOT_TIMEOUT
+#define ONESHOT_TIMEOUT 500
+#undef TAPPING_TOGGLE
+#define TAPPING_TOGGLE 2
+
+#endif
diff --git a/keyboards/bpiphany/kitten_paw/keymaps/ickerwx/keymap.c b/keyboards/bpiphany/kitten_paw/keymaps/ickerwx/keymap.c
new file mode 100644 (file)
index 0000000..856cef9
--- /dev/null
@@ -0,0 +1,242 @@
+#include QMK_KEYBOARD_H
+#include "mousekey.h"
+
+#define _______ KC_TRNS
+#define XXXXXXX KC_NO
+#define  C(kc) LCTL(KC_##kc)
+#define RA(kc) RALT(KC_##kc)
+#define KC_SLCT KC_SELECT
+#define MEDAPP LT(MEDIA, KC_APP)
+#undef S
+#define S(kc) LSFT(KC_##kc)
+
+uint8_t current_layer_global = 255;
+
+enum layers {
+    DEFAULT,
+    PROG1,
+    PROG2,
+    MEDIA,
+    MOUSE1,
+    MOUSE2,
+    MISC,
+};
+
+enum function_id {
+    LSHFT_PAREN,
+    RSHFT_PAREN,
+    LCTRL_BRACKET,
+    RCTRL_BRACKET,
+    LALT_CURLY,
+    RALT_CURLY,
+    CTRL_CLICK
+};
+
+enum macro_id {
+    GRV,
+    CFLEX
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+  [DEFAULT] = LAYOUT(\
+          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_PSCR,KC_SLCK,KC_PAUS,                                   \
+          KC_GRV,   KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,KC_MINS, KC_EQL,KC_BSPC,    KC_INS,KC_HOME,KC_PGUP,  KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \
+          KC_TAB,   KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,KC_LBRC,KC_RBRC,KC_BSLS,    KC_DEL, KC_END,KC_PGDN,    KC_P7,  KC_P8,  KC_P9,KC_PPLS, \
+            F(0),   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_P4,  KC_P5,  KC_P6,         \
+            F(8),KC_NUBS,   KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,KC_COMM, KC_DOT,KC_SLSH,           F(9),             KC_UP,            KC_P1,  KC_P2,  KC_P3,KC_PENT, \
+            F(1),KC_LGUI,   F(3),              LT(MISC,  KC_SPC),                           F(4),   F(5), MEDAPP,   F(2),   KC_LEFT,KC_DOWN,KC_RGHT,    KC_P0,KC_PDOT),
+  /* Layer 1: Programming Layer 1, emulating US l ayout */
+  [PROG1] = LAYOUT(\
+          KC_ESC,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,           _______,_______,_______,                                   \
+          M(GRV),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,KC_SLSH,   S(0),_______,   _______,_______,_______,  _______,_______,_______,_______, \
+         _______,_______,_______,_______,_______,_______,   KC_Z,_______,_______,_______,_______,  RA(8),  RA(9),RA(MINS),  _______,_______,_______,  _______,_______,_______,_______, \
+         _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,S(COMM),S(BSLS),        _______,                             _______,_______,_______,         \
+       MO(PROG2),_______,   KC_Y,_______,_______,_______,_______,_______,_______,_______,_______,   S(7),      MO(PROG2),           _______,          _______,_______,_______,_______, \
+         _______,_______,_______,                        _______,                        _______,_______,_______,_______,   _______,_______,_______,  _______,_______),
+    /* Layer 2: programming layer 2
+       all keys that are not FN keys are sent as LSFT+key on this layer
+    */
+  [PROG2] = LAYOUT(\
+         _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,           _______,_______,_______,                                   \
+        RA(RBRC),_______,  RA(Q),KC_BSLS,_______,_______,M(CFLEX),  S(6),S(RBRC),   S(8),   S(9),S(SLSH),KC_RBRC,_______,   _______,_______,_______,  _______,_______,_______,_______, \
+         _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,  RA(7),  RA(0),RA(NUBS),  _______,_______,_______,  _______,_______,_______,_______, \
+         _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, S(DOT),   S(2),        _______,                             _______,_______,_______,         \
+         _______,S(NUBS),_______,_______,_______,_______,_______,_______,_______,KC_NUBS,S(NUBS),S(MINS),        _______,           _______,          _______,_______,_______,_______, \
+         _______,_______,_______,                        _______,                        _______,_______,_______,_______,   _______,_______,_______,  _______,_______),
+    /* Layer 3: media layer */
+  [MEDIA] = LAYOUT(\
+          KC_PWR,KC_SLEP,KC_WAKE,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,   KC_MPRV,KC_MPLY,KC_MNXT,  XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, \
+         XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,   KC_VOLD,KC_MUTE,KC_VOLU,  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,           KC_EJCT,          XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, \
+         XXXXXXX,XXXXXXX,XXXXXXX,                        XXXXXXX,                        XXXXXXX,XXXXXXX,_______,XXXXXXX,   KC_MRWD,KC_MSTP,KC_MFFD,  XXXXXXX,XXXXXXX),
+    /* Layer 4: Mouse layer */
+  [MOUSE1] = LAYOUT(\
+            F(6),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,           _______,_______,_______,                                   \
+         _______,KC_ACL0,KC_ACL1,KC_ACL2,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,   _______,_______,_______,  _______,_______,_______,_______, \
+         _______,KC_BTN4,KC_WH_D,KC_MS_U,KC_WH_U,_______,   C(Z),_______,_______,_______,_______,_______,_______,_______,   _______,_______,_______,  _______,_______,_______,_______, \
+         _______,KC_BTN5,KC_MS_L,KC_MS_D,KC_MS_R,   F(7),KC_WH_L,KC_WH_D,KC_WH_U,KC_WH_R,_______,_______,        _______,                             _______,_______,_______,         \
+      MO(MOUSE2),_______,   C(Y),   C(X),   C(C),   C(V),_______,KC_BTN2,KC_BTN3,C(PGUP),C(PGDN),_______,        KC_RSFT,           _______,          _______,_______,_______,_______, \
+         KC_LCTL,_______,KC_LALT,                        KC_BTN1,                        KC_RALT,KC_RGUI, KC_APP,KC_RCTL,   _______,_______,_______,  _______,_______),
+    /* Layer 5: Mouse layer 2*/
+  [MOUSE2] = LAYOUT(\
+         _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,           _______,_______,_______,                                   \
+         _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,   _______,_______,_______,  _______,_______,_______,_______, \
+         _______,_______,KC_BTN2,KC_WH_U,KC_BTN3,_______,_______,_______,_______,_______,_______,_______,_______,_______,   _______,_______,_______,  _______,_______,_______,_______, \
+         _______,_______,KC_WH_L,KC_WH_D,KC_WH_R,_______,KC_MS_L,KC_MS_D,KC_MS_U,KC_MS_R,_______,_______,        _______,                             _______,_______,_______,         \
+         _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,        _______,           _______,          _______,_______,_______,_______, \
+         _______,_______,_______,                        _______,                        _______,_______,_______,_______,   _______,_______,_______,  _______,_______),
+    /* Layer 6: Misc layer */
+  [MISC] = LAYOUT(\
+         _______, 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_SLCT,   C(W),  KC_UP,_______,_______,_______,_______,KC_BSPC, KC_DEL,_______,_______,_______,_______,   _______,_______,_______,  _______,_______,_______,_______, \
+         _______,_______,KC_LEFT,KC_DOWN,KC_RGHT,_______,KC_HOME,KC_PGDN,KC_PGUP,_______,_______,_______,        _______,                             _______,_______,_______,         \
+         KC_LSFT,_______,   C(Y),   C(X),   C(C),   C(V), KC_SPC, KC_END,_______,C(PGUP),C(PGDN),_______,        _______,           _______,          _______,_______,_______,_______, \
+         _______,_______,_______,               LT(MISC, KC_SPC),                        _______,_______,_______,_______,   _______,_______,_______,  _______,_______),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    [0] = ACTION_LAYER_TAP_TOGGLE(MOUSE1),      // tap-toggle mouse layer (4)
+    [1] = ACTION_FUNCTION_TAP(LCTRL_BRACKET),   // tap to print [
+    [2] = ACTION_FUNCTION_TAP(RCTRL_BRACKET),   // tap to print ]
+    [3] = ACTION_FUNCTION_TAP(LALT_CURLY),      // tap to print {
+    [4] = ACTION_FUNCTION_TAP(RALT_CURLY),      // tap to print }
+    [5] = ACTION_LAYER_TAP_TOGGLE(PROG1),       // tap-toggle programming layer 1
+    [6] = ACTION_LAYER_SET_CLEAR(DEFAULT),
+    [7] = ACTION_FUNCTION_TAP(CTRL_CLICK),
+    [8] = ACTION_FUNCTION_TAP(LSHFT_PAREN),     // tap to print (
+    [9] = ACTION_FUNCTION_TAP(RSHFT_PAREN),     // tap to print )
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case GRV: // macro to print accent grave
+            return (record->event.pressed ?
+                    MACRO( D(LSFT), T(EQL), U(RALT), T(SPC), END) :
+                    MACRO_NONE );
+        case CFLEX: // print accent circonflex
+            return (record->event.pressed ?
+                    MACRO( T(GRV), T(SPC), END ) :
+                    MACRO_NONE );
+      }
+    return MACRO_NONE;
+};
+
+
+void matrix_init_user(void) {
+
+}
+
+void matrix_scan_user(void) {
+    uint8_t layer;
+    layer = biton32(layer_state);
+
+    if (current_layer_global != layer) {
+        current_layer_global = layer;
+
+        // unset CAPSLOCK and SCROLL LOCK LEDs
+        led_set_kb(host_keyboard_leds() & ~(1<<USB_LED_CAPS_LOCK));
+        led_set_kb(host_keyboard_leds() & ~(1<<USB_LED_SCROLL_LOCK));
+        // set SCROLL LOCK LED when the mouse layer is active, CAPS LOCK when PROG layer is active
+        if (layer == MOUSE1 || layer == MOUSE2) {
+          led_set_kb(host_keyboard_leds() | (1<<USB_LED_SCROLL_LOCK));
+        } else if (layer == PROG1 || layer == PROG2) {
+          led_set_kb(host_keyboard_leds() | (1<<USB_LED_CAPS_LOCK));
+        }
+    }
+}
+
+void led_set_user(uint8_t usb_led) {
+
+}
+
+void tap_helper(keyrecord_t *record, uint16_t orig_mod, uint16_t macro_mod, uint16_t macro_kc ) {
+  if (record->event.pressed) {
+      if (record->tap.count > 0 && !record->tap.interrupted) {
+          if (record->tap.interrupted) {
+              register_mods(MOD_BIT(orig_mod));
+          }
+      } else {
+          register_mods(MOD_BIT(orig_mod));
+      }
+  } else {
+      if (record->tap.count > 0 && !(record->tap.interrupted)) {
+          add_weak_mods(MOD_BIT(macro_mod));
+          send_keyboard_report();
+          register_code(macro_kc);
+          unregister_code(macro_kc);
+          del_weak_mods(MOD_BIT(macro_mod));
+          send_keyboard_report();
+          record->tap.count = 0;  // ad hoc: cancel tap
+      } else {
+          unregister_mods(MOD_BIT(orig_mod));
+      }
+  }
+}
+
+/* if LCTRL is tabbed, print (, or ) if RCTRL is tabbed, same for LALT/RALT and [/] */
+void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
+    // The code is copied from keymap_hasu.c in the tmk keyboards hhkb folder
+    switch (id) {
+        case LCTRL_BRACKET:
+            tap_helper(record, KC_LCTL, KC_RALT, KC_8);
+            break;
+        case RCTRL_BRACKET:
+            tap_helper(record, KC_RCTL, KC_RALT, KC_9);
+            break;
+        case LALT_CURLY:
+            tap_helper(record, KC_LALT, KC_RALT, KC_7);
+            break;
+        case RALT_CURLY:
+            tap_helper(record, KC_RALT, KC_RALT, KC_0);
+            break;
+        case LSHFT_PAREN:
+            tap_helper(record, KC_LSFT, KC_LSFT, KC_8);
+            break;
+        case RSHFT_PAREN:
+            tap_helper(record, KC_RSFT, KC_LSFT, KC_9);
+            break;
+        case CTRL_CLICK:
+            if (record->event.pressed) {
+                mousekey_clear();
+                register_mods(MOD_BIT(KC_LCTL));
+                send_keyboard_report();
+                wait_ms(5);
+                mousekey_on(KC_BTN1);
+                mousekey_send();
+                wait_ms(10);
+                mousekey_off(KC_BTN1);
+                mousekey_send();
+                wait_ms(5);
+                unregister_mods(MOD_BIT(KC_LCTL));
+                send_keyboard_report();
+            }
+            break;
+    }
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+    uint8_t layer;
+    layer = biton32(layer_state);
+    if (layer == PROG2) {
+         if (keycode >= KC_A && keycode <= KC_EXSEL && \
+             !(  // do not send LSFT + these keycodes, they are needed for emulating the US layout
+                 keycode == KC_NONUS_BSLASH ||
+                 keycode == KC_RBRC ||
+                 keycode == KC_BSLS ||
+                 keycode == KC_GRV
+            )) {
+              // LSFT is the modifier for this layer, so we set LSFT for every key to get the expected behavior
+              if (record->event.pressed) {
+                  register_mods(MOD_LSFT);
+              } else {
+                  unregister_mods(MOD_LSFT);
+              }
+         }
+    }
+    return true;
+}
diff --git a/keyboards/bpiphany/kitten_paw/keymaps/ickerwx/readme.md b/keyboards/bpiphany/kitten_paw/keymaps/ickerwx/readme.md
new file mode 100644 (file)
index 0000000..0d23be4
--- /dev/null
@@ -0,0 +1,18 @@
+# My personal keymap for the Kitten Paw controller
+
+This keymap only works correctly when you have your OS configured with a German keymap. Use the keymap however you like. It's most likely a living thing that will never be quite finished.
+
+## Description of the layers
+Layer 0 (DEFAULT) works just like you would expect a keyboard to work, mostly, except:
+Caps Lock switches to the mouse layer, RGUI and APP are switches to the programming layer and media layer.
+Mouse and programming layer switches can be held or double-tapped to lock.
+Holding space switches to the MISC layer where I currently accumulate useful shortcuts.
+Tapping left and right Shift, Ctrl and Alt will send (), [] and {} respectively.
+
+Layers 1 and 2 (PROG1 and PROG2) emulate the US layout while still using a German OS keymap setting. I was annoyed of having to change the OS settings every time I wanted to use the US layout for coding, so I made these layers to behave just like the US layout even though the OS still uses German. The shift keys were a bit tricky, I had to use them as MO(PROG2) switches, so to get the actual expected behavior I enable LSFT for almost every keypress on PROG2 in ```process_record_user```. Since the shift keys are MO() function keys, they do not print () at the moment, which sucks. I'm working on it.
+
+Layer 3 (MEDIA) just has a couple of media keys on it, mainly around the cursor keys and nav key cluster.
+
+Layers 4 and 5 (MOUSE1 and MOUSE2) are mouse layers. Move the cursor using ESDF, scroll using HJKL, Space for left click, N and M for right and middle click. There's more, look at the keymap.
+
+Layer 6 is a layer I don't have a good name for, so I call it MISC. You'll find cursor keys at ESDF, other navigation keys around the HJKL cluster and F12 to F24 on the F-keys. For now.
\ No newline at end of file
diff --git a/keyboards/bpiphany/kitten_paw/kitten_paw.c b/keyboards/bpiphany/kitten_paw/kitten_paw.c
new file mode 100644 (file)
index 0000000..26cb533
--- /dev/null
@@ -0,0 +1,51 @@
+#include "kitten_paw.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();
+}
+
+__attribute__ ((weak))
+void matrix_init_user(void) {
+}
+
+__attribute__ ((weak))
+void matrix_scan_user(void) {
+}
+
+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
+    CONFIG_LED_IO;
+    CONFIG_LED_IO;
+    print_dec(usb_led);
+    if (usb_led & (1<<USB_LED_CAPS_LOCK))
+        USB_LED_CAPS_LOCK_ON;
+    else
+        USB_LED_CAPS_LOCK_OFF;
+
+    if (usb_led & (1<<USB_LED_NUM_LOCK))
+        USB_LED_NUM_LOCK_ON;
+    else
+        USB_LED_NUM_LOCK_OFF;
+    if (usb_led & (1<<USB_LED_SCROLL_LOCK))
+        USB_LED_SCROLL_LOCK_ON;
+    else
+        USB_LED_SCROLL_LOCK_OFF;
+       led_set_user(usb_led);
+}
diff --git a/keyboards/bpiphany/kitten_paw/kitten_paw.h b/keyboards/bpiphany/kitten_paw/kitten_paw.h
new file mode 100644 (file)
index 0000000..4de550f
--- /dev/null
@@ -0,0 +1,77 @@
+#ifndef KITTEN_PAW_H
+#define KITTEN_PAW_H
+
+#include "quantum.h"
+
+#define CONFIG_LED_IO \
+  DDRB |= (1<<7); \
+  DDRC |= (1<<5) | (1<<6);
+
+#define USB_LED_CAPS_LOCK_ON    PORTC &= ~(1<<6)
+#define USB_LED_CAPS_LOCK_OFF   PORTC |=  (1<<6)
+#define USB_LED_NUM_LOCK_ON     PORTB &= ~(1<<7)
+#define USB_LED_NUM_LOCK_OFF    PORTB |=  (1<<7)
+#define USB_LED_SCROLL_LOCK_ON  PORTC &= ~(1<<5)
+#define USB_LED_SCROLL_LOCK_OFF PORTC |=  (1<<5)
+
+// This a shortcut to help you visually see your layout.
+// The first section contains all of the arguements
+// The second converts the arguments into a two-dimensional array
+/*
+  Matrix col/row mapping
+
+  ,----.    ,-------------------. ,-------------------. ,-------------------. ,--------------.
+  | J6 |    | I4 | H4 | H2 | H6 | | A7 | E6 | D2 | D4 | | B4 | B7 | B6 | B0 | | C7 | C5 | A5 |
+  `----'    `-------------------' `-------------------' `-------------------' `--------------'
+  ,-------------------------------------------------------------------------. ,--------------. ,-------------------.
+  | J4 | J7 | I7 | H7 | G7 | G4 | F4 | F7 | E7 | D7 | R7 | R4 | E4 |     B2 | | L4 | O4 | Q4 | | K1 | L1 | Q1 | Q0 |
+  |-------------------------------------------------------------------------| |--------------| |-------------------|
+  | J2   | J5 | I5 | H5 | G5 | G2 | F2 | F5 | E5 | D5 | R5 | R2 | E2 |   B3 | | K4 | O7 | Q7 | | K5 | L5 | Q5 | O5 |
+  |-------------------------------------------------------------------------| '--------------' |--------------     |
+  | O5    | J3 | I3 | H3 | G3 | G6 | F6 | F3 | E3 | D3 | R3 | R6 |       B1 |                  | K2 | L2 | Q2 |    |
+  |-------------------------------------------------------------------------|      ,----.      |-------------------|
+  | N2 | I6 | J1 | I1 | H1 | G1 | G0 | F0 | F1 | E1 | D1 | R0 |          N3 |      | O6 |      | K3 | L3 | Q3 | O3 |
+  |-------------------------------------------------------------------------| ,--------------. |--------------     |
+  | A4 | P2 | C6 |                  K6                  | C0 | M3 | D0 | A1 | | O0 | K0 | L0 | | L6      | Q6 |    |
+  `-------------------------------------------------------------------------' `--------------' `-------------------'
+*/
+
+#define LAYOUT( \
+  KJ6,      KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0,   KC7, KC5, KA5,                       \
+  KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2,   KL4, KO4, KQ4,   KK1, KL1, KQ1, KQ0, \
+  KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3,   KK4, KO7, KQ7,   KK5, KL5, KQ5, KO5, \
+  KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6,      KB1,                    KK2, KL2, KQ2,      \
+  KN2, KI6, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0,      KN3,        KO6,        KK3, KL3, KQ3, KO3, \
+  KA4, KP2, KC6,                KK6,                KC0, KM3, KD0, KA1,   KO0, KK0, KL0,   KL6,      KQ6       \
+) \
+{ \
+    {KC_NO,  KB0,  KC0,  KD0,KC_NO,  KF0,  KG0,KC_NO,KC_NO,KC_NO,  KK0,  KL0,KC_NO,KC_NO,  KO0,KC_NO,  KQ0,  KR0}, \
+    {  KA1,  KB1,KC_NO,  KD1,  KE1,  KF1,  KG1,  KH1,  KI1,  KJ1,  KK1,  KL1,KC_NO,KC_NO,KC_NO,KC_NO,  KQ1,KC_NO}, \
+    {KC_NO,  KB2,KC_NO,  KD2,  KE2,  KF2,  KG2,  KH2,  KI2,  KJ2,  KK2,  KL2,KC_NO,  KN2,KC_NO,  KP2,  KQ2,  KR2}, \
+    {KC_NO,  KB3,KC_NO,  KD3,  KE3,  KF3,  KG3,  KH3,  KI3,  KJ3,  KK3,  KL3,  KM3,  KN3,  KO3,KC_NO,  KQ3,  KR3}, \
+    {  KA4,  KB4,KC_NO,  KD4,  KE4,  KF4,  KG4,  KH4,  KI4,  KJ4,  KK4,  KL4,KC_NO,KC_NO,  KO4,KC_NO,  KQ4,  KR4}, \
+    {  KA5,KC_NO,  KC5,  KD5,  KE5,  KF5,  KG5,  KH5,  KI5,  KJ5,  KK5,  KL5,KC_NO,KC_NO,  KO5,KC_NO,  KQ5,  KR5}, \
+    {KC_NO,  KB6,  KC6,KC_NO,  KE6,  KF6,  KG6,  KH6,  KI6,  KJ6,  KK6,  KL6,KC_NO,KC_NO,  KO6,KC_NO,  KQ6,  KR6}, \
+    {  KA7,  KB7,  KC7,  KD7,  KE7,  KF7,  KG7,  KH7,  KI7,  KJ7,KC_NO,KC_NO,KC_NO,KC_NO,  KO7,KC_NO,  KQ7,  KR7} \
+}
+
+#define LAYOUT_fullsize_ansi( \
+  KJ6,      KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0,   KC7, KC5, KA5,                       \
+  KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2,   KL4, KO4, KQ4,   KK1, KL1, KQ1, KQ0, \
+  KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3,   KK4, KO7, KQ7,   KK5, KL5, KQ5, KO5, \
+  KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6,      KB1,                    KK2, KL2, KQ2,      \
+  KN2,      KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0,      KN3,        KO6,        KK3, KL3, KQ3, KO3, \
+  KA4, KP2, KC6,                KK6,                KC0, KM3, KD0, KA1,   KO0, KK0, KL0,   KL6,      KQ6       \
+) \
+{ \
+    {KC_NO,  KB0,  KC0,  KD0,KC_NO,  KF0,  KG0,KC_NO,KC_NO,KC_NO,  KK0,  KL0,KC_NO,KC_NO,  KO0,KC_NO,  KQ0,  KR0}, \
+    {  KA1,  KB1,KC_NO,  KD1,  KE1,  KF1,  KG1,  KH1,  KI1,  KJ1,  KK1,  KL1,KC_NO,KC_NO,KC_NO,KC_NO,  KQ1,KC_NO}, \
+    {KC_NO,  KB2,KC_NO,  KD2,  KE2,  KF2,  KG2,  KH2,  KI2,  KJ2,  KK2,  KL2,KC_NO,  KN2,KC_NO,  KP2,  KQ2,  KR2}, \
+    {KC_NO,  KB3,KC_NO,  KD3,  KE3,  KF3,  KG3,  KH3,  KI3,  KJ3,  KK3,  KL3,  KM3,  KN3,  KO3,KC_NO,  KQ3,  KR3}, \
+    {  KA4,  KB4,KC_NO,  KD4,  KE4,  KF4,  KG4,  KH4,  KI4,  KJ4,  KK4,  KL4,KC_NO,KC_NO,  KO4,KC_NO,  KQ4,  KR4}, \
+    {  KA5,KC_NO,  KC5,  KD5,  KE5,  KF5,  KG5,  KH5,  KI5,  KJ5,  KK5,  KL5,KC_NO,KC_NO,  KO5,KC_NO,  KQ5,  KR5}, \
+    {KC_NO,  KB6,  KC6,KC_NO,  KE6,  KF6,  KG6,  KH6,  KC_NO,KJ6,  KK6,  KL6,KC_NO,KC_NO,  KO6,KC_NO,  KQ6,  KR6}, \
+    {  KA7,  KB7,  KC7,  KD7,  KE7,  KF7,  KG7,  KH7,  KI7,  KJ7,KC_NO,KC_NO,KC_NO,KC_NO,  KO7,KC_NO,  KQ7,  KR7} \
+}
+
+#endif
diff --git a/keyboards/bpiphany/kitten_paw/matrix.c b/keyboards/bpiphany/kitten_paw/matrix.c
new file mode 100644 (file)
index 0000000..6fdbfff
--- /dev/null
@@ -0,0 +1,183 @@
+/*
+  Copyright 2014 Ralf Schmitt <ralf@bunkertor.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 <stdint.h>
+#include <stdbool.h>
+#include <avr/io.h>
+#include <util/delay.h>
+#include "print.h"
+#include "debug.h"
+#include "util.h"
+#include "matrix.h"
+
+#ifndef DEBOUNCING_DELAY
+#   define DEBOUNCING_DELAY 5
+#endif
+static uint8_t debouncing = DEBOUNCING_DELAY;
+
+static matrix_row_t matrix[MATRIX_ROWS];
+static matrix_row_t matrix_debouncing[MATRIX_ROWS];
+
+static uint8_t read_rows(void);
+static void select_col(uint8_t col);
+
+__attribute__ ((weak))
+void matrix_init_kb(void) {
+    matrix_init_user();
+}
+
+__attribute__ ((weak))
+void matrix_scan_kb(void) {
+    matrix_scan_user();
+}
+
+__attribute__ ((weak))
+void matrix_init_user(void) {
+}
+
+__attribute__ ((weak))
+void matrix_scan_user(void) {
+}
+
+inline uint8_t matrix_rows(void) {
+  return MATRIX_ROWS;
+}
+
+inline uint8_t matrix_cols(void) {
+  return MATRIX_COLS;
+}
+
+/* Column pin configuration
+ *
+ * col: 0    1    2    3    4    5    6    7
+ * pin: PC7  PD5  PD3  PD1  PC2  PD6  PD4  PD2
+ *
+ * Rrr pin configuration
+ *
+ * These rrrs uses one 74HC154 4 to 16 bit demultiplexer (low
+ * active), together with 2 rrrs driven directly from the micro
+ * controller, to control the 18 rrrs. The rrrs are driven from
+ * pins B6,5,4,3,2,1,0.
+ */
+void matrix_init(void) {
+  DDRC  &= ~0b10000100;  // Row input pins
+  DDRD  &= ~0b01111110;
+  PORTC |=  0b10000100;
+  PORTD |=  0b01111110;
+
+  DDRB  |=  0b01111111;  // Column output pins
+
+  for (uint8_t i=0; i < MATRIX_ROWS; i++)  {
+    matrix[i] = 0;
+    matrix_debouncing[i] = 0;
+  }
+  matrix_init_quantum();
+}
+
+uint8_t matrix_scan(void) {
+  for (uint8_t col = 0; col < MATRIX_COLS; col++) {
+    select_col(col);
+    _delay_us(3);
+    uint8_t rows = read_rows();
+    for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
+      bool prev_bit = matrix_debouncing[row] & ((matrix_row_t)1<<col);
+      bool curr_bit = rows & (1<<row);
+      if (prev_bit != curr_bit) {
+        matrix_debouncing[row] ^= ((matrix_row_t)1<<col);
+        debouncing = DEBOUNCING_DELAY;
+      }
+    }
+  }
+
+  if (debouncing) {
+    if (--debouncing) {
+      _delay_ms(1);
+    }
+    else {
+      for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
+        matrix[i] = matrix_debouncing[i];
+      }
+    }
+  }
+  matrix_scan_quantum();
+  return 1;
+}
+
+bool matrix_is_modified(void) {
+  if (debouncing)
+    return false;
+  else
+    return true;
+}
+
+inline bool matrix_is_on(uint8_t row, uint8_t col) {
+  return (matrix[row] & ((matrix_row_t)1<<col));
+}
+
+inline matrix_row_t matrix_get_row(uint8_t row) {
+  return matrix[row];
+}
+
+void matrix_print(void) {
+  print("\nr/c 0123456789ABCDEF\n");
+  for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
+    xprintf("%02X: %032lb\n", row, bitrev32(matrix_get_row(row)));
+  }
+}
+
+uint8_t matrix_key_count(void) {
+  uint8_t count = 0;
+  for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
+    count += bitpop32(matrix[i]);
+  }
+  return count;
+}
+
+static uint8_t read_rows(void) {
+  return
+    (PINC&(1<<7) ? 0 : (1<<0)) |
+    (PIND&(1<<5) ? 0 : (1<<1)) |
+    (PIND&(1<<3) ? 0 : (1<<2)) |
+    (PIND&(1<<1) ? 0 : (1<<3)) |
+    (PINC&(1<<2) ? 0 : (1<<4)) |
+    (PIND&(1<<2) ? 0 : (1<<5)) |
+    (PIND&(1<<4) ? 0 : (1<<6)) |
+    (PIND&(1<<6) ? 0 : (1<<7));
+}
+
+static void select_col(uint8_t col) {
+  switch (col) {
+  case  0: PORTB = (PORTB & ~0b01111111) | 0b01100100; break;
+  case  1: PORTB = (PORTB & ~0b01111111) | 0b01101100; break;
+  case  2: PORTB = (PORTB & ~0b01111111) | 0b01100010; break;
+  case  3: PORTB = (PORTB & ~0b01111111) | 0b01111010; break;
+  case  4: PORTB = (PORTB & ~0b01111111) | 0b01100110; break;
+  case  5: PORTB = (PORTB & ~0b01111111) | 0b01110110; break;
+  case  6: PORTB = (PORTB & ~0b01111111) | 0b01101110; break;
+  case  7: PORTB = (PORTB & ~0b01111111) | 0b01111110; break;
+  case  8: PORTB = (PORTB & ~0b01111111) | 0b01000001; break;
+  case  9: PORTB = (PORTB & ~0b01111111) | 0b00100001; break;
+  case 10: PORTB = (PORTB & ~0b01111111) | 0b01101010; break;
+  case 11: PORTB = (PORTB & ~0b01111111) | 0b01110010; break;
+  case 12: PORTB = (PORTB & ~0b01111111) | 0b01111100; break;
+  case 13: PORTB = (PORTB & ~0b01111111) | 0b01110100; break;
+  case 14: PORTB = (PORTB & ~0b01111111) | 0b01111000; break;
+  case 15: PORTB = (PORTB & ~0b01111111) | 0b01110000; break;
+  case 16: PORTB = (PORTB & ~0b01111111) | 0b01100000; break;
+  case 17: PORTB = (PORTB & ~0b01111111) | 0b01101000; break;
+  }
+}
diff --git a/keyboards/bpiphany/kitten_paw/readme.md b/keyboards/bpiphany/kitten_paw/readme.md
new file mode 100644 (file)
index 0000000..15737a3
--- /dev/null
@@ -0,0 +1,16 @@
+kitten_paw
+==========
+
+This is the firmware for the 2016 revision of the Kitten Paw controller by Bathroom Epiphanies. Most of the boilerplate code is the work of [BathroomEpiphanies](https://github.com/BathroomEpiphanies).
+
+NKRO doesn't work at the moment, I don't know if I will take the time to find out how to fix this, so far 6KRO is enough for me.
+
+Keyboard Maintainer: QMK Community  
+Hardware Supported: Kitten Paw PCB  
+Hardware Availability: https://geekhack.org/index.php?topic=46700.0
+
+Make example for this keyboard (after setting up your build environment):
+
+    make bpiphany/kitten_paw: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/bpiphany/kitten_paw/rules.mk b/keyboards/bpiphany/kitten_paw/rules.mk
new file mode 100644 (file)
index 0000000..fab9c42
--- /dev/null
@@ -0,0 +1,74 @@
+
+
+# MCU name
+#MCU = at90usb1287
+MCU = atmega32u2
+
+# 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
+
+
+# Boot Section Size in *bytes*
+#   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
+MIDI_ENABLE = no            # MIDI controls
+UNICODE_ENABLE = no         # Unicode
+BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
+AUDIO_ENABLE = no           # Audio output on port C6
+
+CUSTOM_MATRIX = yes
+SRC += matrix.c
+
+LAYOUTS = fullsize_ansi
diff --git a/keyboards/bpiphany/pegasushoof/README.md b/keyboards/bpiphany/pegasushoof/README.md
new file mode 100644 (file)
index 0000000..1b3d631
--- /dev/null
@@ -0,0 +1,12 @@
+Pegasus Hoof Controller
+===
+
+Keyboard Maintainer: QMK Community  
+Hardware Supported: Pegasus Hoof  
+Hardware Availability: https://1upkeyboards.com/filco-pegasus-hoof-controller.html
+
+Make example for this keyboard (after setting up your build environment):
+
+    make bpiphany/pegasus_hoof: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/bpiphany/pegasushoof/config.h b/keyboards/bpiphany/pegasushoof/config.h
new file mode 100644 (file)
index 0000000..0dbec26
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+Copyright 2016 Daniel Svensson <dsvensson@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID       0xFEED
+#define PRODUCT_ID      0x6050
+#define DEVICE_VER      0x0104
+#define MANUFACTURER    Filco
+#define PRODUCT         Majestouch TKL \\w The Pegasus Hoof
+#define DESCRIPTION     QMK firmware for Majestouch TKL
+
+/* key matrix size */
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 18
+
+/* COL2ROW or ROW2COL */
+#define DIODE_DIRECTION COL2ROW
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCING_DELAY 5
+
+/* key combination for magic key command */
+#define IS_COMMAND() ( \
+       keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
+)
+
+#endif
diff --git a/keyboards/bpiphany/pegasushoof/keymaps/blowrak/keymap.c b/keyboards/bpiphany/pegasushoof/keymaps/blowrak/keymap.c
new file mode 100644 (file)
index 0000000..6faf4db
--- /dev/null
@@ -0,0 +1,112 @@
+/*
+Copyright 2016 Daniel Svensson <dsvensson@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "pegasushoof.h"
+
+#define _______ KC_TRNS
+
+/* Swedish keys */
+#define SE_HALF KC_GRV
+#define SE_PLUS KC_MINS
+#define SE_ACUT KC_EQL
+#define SE_AO   KC_LBRC
+#define SE_CIRC KC_RBRC
+#define SE_QUOT KC_BSLS
+#define SE_OE   KC_SCLN
+#define SE_AE   KC_QUOT
+#define SE_MINS KC_SLSH
+#define SE_LTGT KC_NUBS
+#define SE_LCBR RALT(KC_7)
+#define SE_LBRC RALT(KC_8)
+#define SE_RBRC RALT(KC_9)
+#define SE_RCBR RALT(KC_0)
+#define SE_PIPE RALT(SE_LTGT)
+#define SE_BSLS RALT(SE_PLUS)
+
+#define KM_BLOWRAK 0
+#define KM_QWERTY  1
+#define KM_MEDIA   2
+#define KM_HAXHAX  3
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+       /* Layer 0: Blowrak ISO layer, a Swedish take on Dvorak */
+       [KM_BLOWRAK] = KEYMAP( \
+               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_PSCR,KC_SLCK,KC_PAUS, \
+               SE_HALF, KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   SE_PLUS,SE_ACUT,KC_BSPC,   KC_INS, KC_HOME,KC_PGUP, \
+               KC_TAB,  SE_AO,  SE_AE,  SE_OE,  KC_P,   KC_Y,   KC_F,   KC_G,   KC_C,   KC_R,   KC_L,   KC_COMM,SE_CIRC,SE_QUOT,   KC_DEL, KC_END, KC_PGDN, \
+               KC_LCTRL,KC_A,   KC_O,   KC_E,   KC_U,   KC_I,   KC_H,   KC_D,   KC_T,   KC_N,   KC_S,   SE_MINS,        KC_ENT,                             \
+               KC_LSFT, SE_LTGT,KC_DOT, KC_Q,   KC_J,   KC_K,   KC_B,   KC_X,   KC_M,   KC_W,   KC_V,   KC_Z,           KC_RSFT,           KC_UP,           \
+               KC_FN0,  KC_LGUI,KC_LALT,                       KC_SPC,                          KC_RALT,KC_RGUI,KC_MENU,KC_FN1,    KC_LEFT,KC_DOWN,KC_RGHT),
+       /* Layer 1: Standard ISO layer */
+       [KM_QWERTY] = KEYMAP( \
+               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_PSCR,KC_SLCK,KC_PAUS, \
+               SE_HALF, KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   SE_PLUS,SE_ACUT,KC_BSPC,   KC_INS, KC_HOME,KC_PGUP, \
+               KC_TAB,  KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,   SE_AO,  SE_CIRC,SE_QUOT,   KC_DEL, KC_END, KC_PGDN, \
+               KC_LCTRL,KC_A,   KC_S,   KC_D,   KC_F,   KC_G,   KC_H,   KC_J,   KC_K,   KC_L,   SE_OE,  SE_AE,          KC_ENT,                             \
+               KC_LSFT, SE_LTGT,KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM,KC_DOT, SE_MINS,        KC_RSFT,           KC_UP,           \
+               KC_FN0,  KC_LGUI,KC_LALT,                       KC_SPC,                          KC_RALT,KC_RGUI,KC_MENU,KC_FN1,    KC_LEFT,KC_DOWN,KC_RGHT),
+       /* Layer 2: Media layer */
+       [KM_MEDIA] = KEYMAP( \
+               _______,        _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,   KC_WAKE,KC_PWR, KC_SLEP, \
+               _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,   _______,_______,KC_VOLU, \
+               _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,   KC_MUTE,_______,KC_VOLD, \
+               _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,        _______,                            \
+               _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,        _______,           KC_MPLY,         \
+               _______,_______,_______,                        _______,                        _______,_______,RESET  ,_______,   KC_MPRV,KC_MSTP,KC_MNXT),
+       /* Layer 3: Programming layer */
+       [KM_HAXHAX] = KEYMAP( \
+               _______,        _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,   _______,_______,_______, \
+               _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,   _______,_______,_______, \
+               _______,SE_LCBR,SE_PIPE,SE_RCBR,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,   _______,_______,_______, \
+               _______,SE_LBRC,SE_BSLS,SE_RBRC,_______,_______,_______,_______,_______,_______,_______,_______,        _______,                            \
+               _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,        _______,           _______,         \
+               _______,_______,_______,                        _______,                        _______,_______,_______,_______,   _______,_______,_______),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+       [0] = ACTION_LAYER_MOMENTARY(KM_MEDIA),
+       [1] = ACTION_LAYER_TOGGLE(KM_QWERTY)
+};
+
+void matrix_scan_user(void)
+{
+       uint8_t layer = biton32(layer_state);
+       switch (layer) {
+               case KM_BLOWRAK:
+                       ph_caps_led_on();
+                       ph_sclk_led_off();
+                       break;
+               case KM_QWERTY:
+                       ph_sclk_led_on();
+                       ph_caps_led_off();
+                       break;
+       }
+}
+
+/* Mixes in KM_HAXHAX via RALT modifier without shadowing the RALT key combinations. */
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+       uint8_t modifiers = get_mods();
+       if (modifiers & MOD_BIT(KC_RALT) && record->event.pressed) {
+               uint16_t kc = keymap_key_to_keycode(KM_HAXHAX, record->event.key);
+               if (kc != KC_TRNS) {
+                       register_code(kc);
+                       unregister_code(kc);
+                       return false;
+               }
+       }
+       return true;
+}
diff --git a/keyboards/bpiphany/pegasushoof/keymaps/blowrak/rules.mk b/keyboards/bpiphany/pegasushoof/keymaps/blowrak/rules.mk
new file mode 100644 (file)
index 0000000..168fb62
--- /dev/null
@@ -0,0 +1,22 @@
+# 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 = yes      # 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
+CUSTOM_MATRIX = yes         # Custom matrix file for the Pegasus Hoof due to the 2x74HC42
+NKRO_ENABLE = no            # 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 = no        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
+
+
+ifndef QUANTUM_DIR
+       include ../../../../Makefile
+endif
diff --git a/keyboards/bpiphany/pegasushoof/keymaps/citadel/config.h b/keyboards/bpiphany/pegasushoof/keymaps/citadel/config.h
new file mode 100644 (file)
index 0000000..2d27ff3
--- /dev/null
@@ -0,0 +1,11 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+/* overridden settings: */
+
+#undef PRODUCT
+#define PRODUCT Pegasus Hoof Citadel
+
+#endif
diff --git a/keyboards/bpiphany/pegasushoof/keymaps/citadel/keymap.c b/keyboards/bpiphany/pegasushoof/keymaps/citadel/keymap.c
new file mode 100644 (file)
index 0000000..382854d
--- /dev/null
@@ -0,0 +1,128 @@
+/* Copyright 2018 Daniel Rose <droseger@protonmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "pegasushoof.h"
+
+/* Allow shortcuts for combos like RALT(KC_RBRC) that don't take up more than 7 characters: */
+#define G(kc) RALT(KC_##kc)
+#define A(kc) LALT(KC_##kc)
+#define C(kc) LCTL(KC_##kc)
+#undef S /* Original shortcut (quantum_keycodes.h) takes full-sized keycodes: too long! */
+#define S(kc) LSFT(KC_##kc)
+#define CTALDEL LCTL(LALT(KC_DEL))
+
+enum layers {
+  DEF,
+  FUN,
+  RES,
+};
+
+enum tap_dance {
+  AF4,
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+/* Layer 0: default layer (ISO-DE)
+ * .----.   .-------------------. .-------------------. .-------------------. .--------------.
+ * |Esc |   |F1  |F2  |F3  |F4  | |F5  |F6  |F7  |F8  | |F9  |F10 |F11 |F12 | |PrSc|SLck|2Tp:|
+ * |    |   |    |    |    |    | |    |    |    |    | |    |    |    |    | |SyRq|    |A+F4|
+ * '----'   '-------------------' '-------------------' '-------------------' '--------------'
+ * .------------------------------------------------------------------------. .--------------.
+ * |°   |!   |"   |§   |$   |%   |&   |/   |(   |)   |=   |?   |`   |Backspa| |Ins |Home|PgUp|
+ * |^   |1   |2  Â²|3  Â³|4   |5   |6   |7  {|8  [|9  ]|0  }|ß  \|´   |       | |    |    |    |
+ * |------------------------------------------------------------------------| |--------------|
+ * |Tab   |Q   |W   |E   |R   |T   |Z   |U   |I   |O   |P   |Ãœ   |*   |  E  | |Del |End |PgDn|
+ * |      |    |    |   â‚¬|    |    |    |    |    |    |    |    |+  ~|  n  | |    |    |    |
+ * |------------------------------------------------------------------\  t  | '--------------'
+ * |Fn:    |A   |S   |D   |F   |G   |H   |J   |K   |L   |Ö   |Ä   |'   | e  |
+ * |Layer 2|    |    |    |    |    |    |    |    |    |    |    |#   | r  |
+ * |------------------------------------------------------------------------|      .----.
+ * |Shift|>   |Y   |X   |C   |V   |B   |N   |M   |;   |:   |_   |Shift      |      |Up  |
+ * |     |<  Â¦|    |    |    |    |    |    |   Âµ|,   |.   |-   |           |      |    |
+ * |------------------------------------------------------------------------| .--------------.
+ * |Ctrl |Super|Alt  |                              |AltGr|Alt  |Fn:  |Ctrl | |Left|Down|Righ|
+ * |     |     |     |                              |     |     |Lay 2|     | |    |    |    |
+ * '------------------------------------------------------------------------' '--------------'
+ *                                                                                                  NUHS = true position of KC_NUHS
+ */
+[DEF] = KEYMAP( \
+  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_PSCR,KC_SLCK,TD(AF4), \
+  KC_GRV, KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_MINS,KC_EQL, KC_BSPC,  KC_INS, KC_HOME,KC_PGUP, \
+  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_NUHS,  KC_DEL, KC_END, KC_PGDN, \
+  MO(FUN),KC_A,   KC_S,   KC_D,   KC_F,   KC_G,   KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,KC_QUOT,/*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_UP,           \
+  KC_LCTL,KC_LGUI,KC_LALT,                        KC_SPC,                         KC_RALT,KC_LALT,MO(FUN),KC_RCTL,  KC_LEFT,KC_DOWN,KC_RGHT),
+
+    /* Layer 1: function layer
+ * .----.   .-------------------. .-------------------. .-------------------. .--------------.
+ * |Ctl+|   |My  |WWW:|Calc|Medi| |Mus:|Mus:|Mus:|Mus:| |Vol:|Vol:|Vol:|See:| |    |    |Paus|
+ * |A+De|   |Comp|Home|    |Play| |Prev|Next|Paus|Stop| |Mute|Down|Up  |[3] | |    |    |Brea|
+ * '----'   '-------------------' '-------------------' '-------------------' '--------------'
+ * .------------------------------------------------------------------------. .--------------.
+ * |    |    |    |    |    |    |    |    |    |    |    |    |    |       | |    |    |Mou:|
+ * |    |    |    |    |    |    |    |{   |[   |]   |}   |\   |    |       | |    |    |WhUp|
+ * |------------------------------------------------------------------------| |--------------|
+ * |      |    |    |    |    |    |    |    |    |    |    |    |~   |     | |    |    |Mou:|
+ * |      |    |    |    |    |    |    |    |    |    |    |    |    |     | |    |    |WhDn|
+ * |------------------------------------------------------------------\     | '--------------'
+ * |CapsLck|Mou:|Mou:|    |    |    |    |    |    |    |    |    |    |    |
+ * |       |Fast|Slow|    |    |    |    |    |    |    |    |    |    |    |
+ * |------------------------------------------------------------------------|      .----.
+ * |     |    |    |    |    |    |    |    |µ   |    |    |    |           |      |Mou:|
+ * |     |    |    |    |    |    |    |    |    |    |    |    |           |      |Up  |
+ * |------------------------------------------------------------------------| .--------------.
+ * |Mous:|Mous:|     |                              |     |Super|App  |     | |Mou:|Mou:|Mou:|
+ * |Bttn2|Bttn1|     |                              |     |     |     |     | |Left|Down|Righ|
+ * '------------------------------------------------------------------------' '--------------'
+ *
+ */
+[FUN] = KEYMAP( \
+  CTALDEL,        KC_MYCM,KC_WHOM,KC_CALC,KC_MSEL,KC_MPRV,KC_MNXT,KC_MPLY,KC_MSTP,KC_MUTE,KC_VOLD,KC_VOLU,MO(RES),  _______,KC_SLCK,KC_PAUS, \
+  _______,_______,_______,_______,_______,_______,_______,G(7),   G(8),   G(9),   G(0),   G(MINS),_______,_______,  _______,_______,KC_WH_U, \
+  _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,G(RBRC),_______,  _______,_______,KC_WH_D, \
+  KC_CAPS,KC_ACL2,KC_ACL0,_______,_______,_______,_______,_______,_______,_______,_______,_______,/*NUHS*/_______,                           \
+  _______,_______,_______,_______,_______,_______,_______,_______,G(M),   _______,_______,_______,        _______,          KC_MS_U,         \
+  KC_BTN2,KC_BTN1,_______,                        _______,                        _______,KC_RGUI,KC_APP ,_______,   KC_MS_L,KC_MS_D,KC_MS_R),
+
+
+/* Layer 3: Reset layer (prevents accidental resets) */
+[RES] = KEYMAP( \
+  _______,        _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,  _______,_______,_______, \
+  _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,  _______,_______,_______, \
+  _______,_______,_______,_______,RESET,  _______,_______,_______,_______,_______,_______,_______,_______,_______,  _______,_______,_______, \
+  _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,/*NUHS*/_______,                           \
+  _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,        _______,          _______,         \
+  _______,_______,_______,                        _______,                        _______,_______,_______,_______,  _______,_______,_______),
+};
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+  /* Tap once: nothing. Tap twice: Alt+F4 */
+  [AF4]  = ACTION_TAP_DANCE_DOUBLE(XXXXXXX,A(F4)),
+};
+
+void led_set_user(uint8_t usb_led) {
+  if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
+    ph_caps_led_on();
+  } else {
+    ph_caps_led_off();
+  }
+
+  if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
+    ph_sclk_led_on();
+    } else {
+    ph_sclk_led_off();
+  }
+}
diff --git a/keyboards/bpiphany/pegasushoof/keymaps/citadel/readme.md b/keyboards/bpiphany/pegasushoof/keymaps/citadel/readme.md
new file mode 100644 (file)
index 0000000..3618bae
--- /dev/null
@@ -0,0 +1,75 @@
+# Citadel keymap for pegasushoof
+
+Designed for ISO-DE and similar ISO layouts. 
+
+The central idea of this keymap is to avoid unergonomic key combos that force the user to either press
+multiple keys with one hand or to use the left hand for right-sided keys. For instance, ISO-DE users
+have to press `AltGr`+`7` to type _{_. The keymap allows ergonomic access to the right-sided keys of the
+German AltGr-layer by turning `Caps Lock` into a hybrid Fn/AltGr-key. It can easily be adapted for other
+ISO layouts.
+
+The _Function_ layer also offers mouse emulation and function/media keys in the F-Row.
+
+`Pause/Break` is used as a safe _close key_: A _single tap_ does nothing, a _double tap_ executes ALT+F4.
+
+Named after the homonymous space station from _Mass Effect_. Made by [Daniel Rose](https://github.com/droseger/).
+
+## [1] Layers  
+
+### Layer 1 (Default)  
+    .----.   .-------------------. .-------------------. .-------------------. .--------------.  
+    |Esc |   |F1  |F2  |F3  |F4  | |F5  |F6  |F7  |F8  | |F9  |F10 |F11 |F12 | |PrSc|SLck|2Tp:|  
+    |    |   |    |    |    |    | |    |    |    |    | |    |    |    |    | |SyRq|    |A+F4|  
+    '----'   '-------------------' '-------------------' '-------------------' '--------------'  
+    .------------------------------------------------------------------------. .--------------.  
+    |°   |!   |"   |§   |$   |%   |&   |/   |(   |)   |=   |?   |`   |Backspa| |Ins |Home|PgUp|  
+    |^   |1   |2  Â²|3  Â³|4   |5   |6   |7  {|8  [|9  ]|0  }|ß  \|´   |       | |    |    |    |  
+    |------------------------------------------------------------------------| |--------------|  
+    |Tab   |Q   |W   |E   |R   |T   |Z   |U   |I   |O   |P   |Ãœ   |*   |  E  | |Del |End |PgDn|  
+    |      |    |    |   â‚¬|    |    |    |    |    |    |    |    |+  ~|  n  | |    |    |    |  
+    |------------------------------------------------------------------\  t  | '--------------'  
+    |Fn:    |A   |S   |D   |F   |G   |H   |J   |K   |L   |Ö   |Ä   |'   | e  |  
+    |Layer 2|    |    |    |    |    |    |    |    |    |    |    |#   | r  |  
+    |------------------------------------------------------------------------|      .----.  
+    |Shift|>   |Y   |X   |C   |V   |B   |N   |M   |;   |:   |_   |Shift      |      |Up  |  
+    |     |<  Â¦|    |    |    |    |    |    |   Âµ|,   |.   |-   |           |      |    |  
+    |------------------------------------------------------------------------| .--------------.  
+    |Ctrl |Super|Alt  |                              |AltGr|Alt  |Fn:  |Ctrl | |Left|Down|Righ|  
+    |     |     |     |                              |     |     |Lay 2|     | |    |    |    |  
+    '------------------------------------------------------------------------' '--------------'  
+
+### Layer 2 (Function)
+    .----.   .-------------------. .-------------------. .-------------------. .--------------.  
+    |Ctl+|   |My  |WWW:|Calc|Medi| |Mus:|Mus:|Mus:|Mus:| |Vol:|Vol:|Vol:|See:| |    |    |Paus|  
+    |A+De|   |Comp|Home|    |Play| |Prev|Next|Paus|Stop| |Mute|Down|Up  |[3] | |    |    |Brea|  
+    '----'   '-------------------' '-------------------' '-------------------' '--------------'  
+    .------------------------------------------------------------------------. .--------------.  
+    |    |    |    |    |    |    |    |    |    |    |    |    |    |       | |    |    |Mou:|  
+    |    |    |    |    |    |    |    |{   |[   |]   |}   |\   |    |       | |    |    |WhUp|  
+    |------------------------------------------------------------------------| |--------------|  
+    |      |    |    |    |    |    |    |    |    |    |    |    |~   |     | |    |    |Mou:|  
+    |      |    |    |    |    |    |    |    |    |    |    |    |    |     | |    |    |WhDn|  
+    |------------------------------------------------------------------\     | '--------------'  
+    |CapsLck|Mou:|Mou:|    |    |    |    |    |    |    |    |    |    |    |  
+    |       |Fast|Slow|    |    |    |    |    |    |    |    |    |    |    |  
+    |------------------------------------------------------------------------|      .----.  
+    |     |    |    |    |    |    |    |    |µ   |    |    |    |           |      |Mou:|  
+    |     |    |    |    |    |    |    |    |    |    |    |    |           |      |Up  |  
+    |------------------------------------------------------------------------| .--------------.  
+    |Mous:|Mous:|     |                              |     |Super|App  |     | |Mou:|Mou:|Mou:|  
+    |Bttn2|Bttn1|     |                              |     |     |     |     | |Left|Down|Righ|  
+    '------------------------------------------------------------------------' '--------------'  
+
+Layer 3 exists solely to prevent users from accidentally activating boot mode: `R` is redefined
+as `RESET` key [3].
+
+## [2] How to build and install
+1) Prerequisite: install the necessary [build tools](https://docs.qmk.fm/#/getting_started_build_tools)
+such as [dfu-programmer](https://github.com/dfu-programmer/dfu-programmer).
+   - You might need to [add udev rules](https://docs.qmk.fm/#/faq_build?id=can39t-program-on-linux) under Linux.
+2) To test if the keymap compiles, simply run `make pegasushoof:citadel`
+3) Enter the `qmk_firmware` root directory and run `make pegasushoof:citadel:dfu`
+4) Reset controller to _Boot mode_ by pressing the `RESET` key or by using a magnet.
+
+## [3] How to access Boot mode after install
+Press `Fn+F12+R`
diff --git a/keyboards/bpiphany/pegasushoof/keymaps/citadel/rules.mk b/keyboards/bpiphany/pegasushoof/keymaps/citadel/rules.mk
new file mode 100644 (file)
index 0000000..0dd8a79
--- /dev/null
@@ -0,0 +1,22 @@
+# Build Options
+#   change to "no" to disable the options
+#
+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   = no   # Console for debug(+400)
+COMMAND_ENABLE   = no   # Commands for debug and configuration
+CUSTOM_MATRIX    = yes  # Custom matrix file for the Pegasus Hoof due to the 2x74HC42
+NKRO_ENABLE      = no   # 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  = no   # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
+TAP_DANCE_ENABLE = yes  # see https://docs.qmk.fm/#/feature_tap_dance (+1000)
+
+
+ifndef QUANTUM_DIR
+  include ../../../../Makefile
+endif
diff --git a/keyboards/bpiphany/pegasushoof/keymaps/default/keymap.c b/keyboards/bpiphany/pegasushoof/keymaps/default/keymap.c
new file mode 100644 (file)
index 0000000..aa006b2
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+Copyright 2016 Daniel Svensson <dsvensson@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "pegasushoof.h"
+
+#define _______ KC_TRNS
+
+#define KM_QWERTY  0
+#define KM_MEDIA   1
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+       /* Layer 0: Standard ISO layer */
+       [KM_QWERTY] = KEYMAP( \
+               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_PSCR,KC_SLCK,KC_PAUS, \
+               KC_GRV,  KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_MINS,KC_EQL, KC_BSPC,  KC_INS, KC_HOME,KC_PGUP, \
+               KC_TAB,  KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,   KC_LBRC,KC_RBRC,KC_BSLS,  KC_DEL, KC_END, KC_PGDN, \
+               KC_CLCK, 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_NUBS,KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,        KC_RSFT,          KC_UP,           \
+               KC_LCTL, KC_LGUI,KC_LALT,                       KC_SPC,                          KC_RALT,KC_RGUI,KC_MENU,KC_FN0,   KC_LEFT,KC_DOWN,KC_RGHT),
+       /* Layer 1: Function layer */
+       [KM_MEDIA] = KEYMAP( \
+               _______,        _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,   KC_WAKE,KC_PWR, KC_SLEP, \
+               _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,   _______,_______,KC_VOLU, \
+               _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,   _______,_______,KC_VOLD, \
+               _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,        _______,                            \
+               _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,        _______,           KC_MPLY,         \
+               _______,_______,_______,                        _______,                        _______,_______,RESET  ,_______,   KC_MPRV,KC_MSTP,KC_MNXT)
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+       [0] = ACTION_LAYER_MOMENTARY(KM_MEDIA)
+};
+
+void led_set_user(uint8_t usb_led) {
+       if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
+               ph_caps_led_on();
+       } else {
+               ph_caps_led_off();
+       }
+
+       if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
+               ph_sclk_led_on();
+       } else {
+               ph_sclk_led_off();
+       }
+}
diff --git a/keyboards/bpiphany/pegasushoof/keymaps/default/rules.mk b/keyboards/bpiphany/pegasushoof/keymaps/default/rules.mk
new file mode 100644 (file)
index 0000000..168fb62
--- /dev/null
@@ -0,0 +1,22 @@
+# 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 = yes      # 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
+CUSTOM_MATRIX = yes         # Custom matrix file for the Pegasus Hoof due to the 2x74HC42
+NKRO_ENABLE = no            # 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 = no        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
+
+
+ifndef QUANTUM_DIR
+       include ../../../../Makefile
+endif
diff --git a/keyboards/bpiphany/pegasushoof/matrix.c b/keyboards/bpiphany/pegasushoof/matrix.c
new file mode 100644 (file)
index 0000000..1274338
--- /dev/null
@@ -0,0 +1,222 @@
+/*
+Copyright 2014 Ralf Schmitt <ralf@bunkertor.net>
+Copyright 2016 Daniel Svensson <dsvensson@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <stdint.h>
+#include <stdbool.h>
+#include <avr/io.h>
+#include <util/delay.h>
+#include "wait.h"
+#include "print.h"
+#include "debug.h"
+#include "util.h"
+#include "matrix.h"
+
+static uint8_t debouncing = DEBOUNCING_DELAY;
+static matrix_row_t matrix[MATRIX_ROWS];
+static matrix_row_t matrix_debouncing[MATRIX_ROWS];
+
+static matrix_row_t read_cols(void);
+static void select_row(uint8_t col);
+
+__attribute__ ((weak))
+void matrix_init_kb(void) {
+    matrix_init_user();
+}
+
+__attribute__ ((weak))
+void matrix_scan_kb(void) {
+    matrix_scan_user();
+}
+
+__attribute__ ((weak))
+void matrix_init_user(void) {
+}
+
+__attribute__ ((weak))
+void matrix_scan_user(void) {
+}
+
+inline uint8_t matrix_rows(void)
+{
+       return MATRIX_ROWS;
+}
+
+inline uint8_t matrix_cols(void)
+{
+       return MATRIX_COLS;
+}
+
+void matrix_init(void)
+{
+       /* Column output pins */
+       DDRD  |=  0b01111011;
+       /* Row input pins */
+       DDRC  &= ~0b10000000;
+       DDRB  &= ~0b01111111;
+       PORTC |=  0b10000000;
+       PORTB |=  0b01111111;
+
+       for (uint8_t i=0; i < MATRIX_ROWS; i++)  {
+               matrix[i] = 0;
+               matrix_debouncing[i] = 0;
+       }
+
+       matrix_init_quantum();
+}
+
+uint8_t matrix_scan(void)
+{
+       for (uint8_t col = 0; col < MATRIX_COLS; col++) {
+               select_row(col);
+               wait_us(30);
+               matrix_row_t rows = read_cols();
+               for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
+                       bool prev_bit = matrix_debouncing[row] & ((matrix_row_t)1<<col);
+                       bool curr_bit = rows & (1<<row);
+                       if (prev_bit != curr_bit) {
+                               matrix_debouncing[row] ^= (matrix_row_t) 1 << col;
+                               debouncing = DEBOUNCING_DELAY;
+                       }
+               }
+       }
+
+       if (debouncing) {
+               if (--debouncing) {
+                       wait_ms(1);
+               } else {
+                       for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
+                               matrix[i] = matrix_debouncing[i];
+                       }
+               }
+       }
+
+       matrix_scan_quantum();
+
+       return 1;
+}
+
+bool matrix_is_modified(void)
+{
+       if (debouncing)
+               return false;
+       return true;
+}
+
+inline
+bool matrix_is_on(uint8_t row, uint8_t col)
+{
+       return matrix[row] & 1 << col;
+}
+
+inline
+matrix_row_t matrix_get_row(uint8_t row)
+{
+       return matrix[row];
+}
+
+void matrix_print(void)
+{
+       print("\nr/c 0123456789ABCDEF\n");
+       for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
+               phex(row); print(": ");
+               pbin_reverse16(matrix_get_row(row));
+               print("\n");
+       }
+}
+
+uint8_t matrix_key_count(void)
+{
+       uint8_t count = 0;
+       for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
+               count += bitpop16(matrix[i]);
+       }
+       return count;
+}
+
+static matrix_row_t read_cols(void)
+{
+       return
+               (PINB & (1 << 5) ? 0 : 1 << 0) |
+               (PINC & (1 << 7) ? 0 : 1 << 1) |
+               (PINB & (1 << 4) ? 0 : 1 << 2) |
+               (PINB & (1 << 6) ? 0 : 1 << 3) |
+               (PINB & (1 << 1) ? 0 : 1 << 4) |
+               (PINB & (1 << 0) ? 0 : 1 << 5) |
+               (PINB & (1 << 3) ? 0 : 1 << 6) |
+               (PINB & (1 << 2) ? 0 : 1 << 7);
+}
+
+static void select_row(uint8_t col)
+{
+       switch (col) {
+               case 0:
+                       PORTD = (PORTD & ~0b01111011) | 0b00110011;
+                       break;
+               case 1:
+                       PORTD = (PORTD & ~0b01111011) | 0b01110000;
+                       break;
+               case 2:
+                       PORTD = (PORTD & ~0b01111011) | 0b00010011;
+                       break;
+               case 3:
+                       PORTD = (PORTD & ~0b01111011) | 0b01101000;
+                       break;
+               case 4:
+                       PORTD = (PORTD & ~0b01111011) | 0b00001011;
+                       break;
+               case 5:
+                       PORTD = (PORTD & ~0b01111011) | 0b00111011;
+                       break;
+               case 6:
+                       PORTD = (PORTD & ~0b01111011) | 0b01111000;
+                       break;
+               case 7:
+                       PORTD = (PORTD & ~0b01111011) | 0b01100001;
+                       break;
+               case 8:
+                       PORTD = (PORTD & ~0b01111011) | 0b01101001;
+                       break;
+               case 9:
+                       PORTD = (PORTD & ~0b01111011) | 0b01110001;
+                       break;
+               case 10:
+                       PORTD = (PORTD & ~0b01111011) | 0b01101010;
+                       break;
+               case 11:
+                       PORTD = (PORTD & ~0b01111011) | 0b01100010;
+                       break;
+               case 12:
+                       PORTD = (PORTD & ~0b01111011) | 0b01111001;
+                       break;
+               case 13:
+                       PORTD = (PORTD & ~0b01111011) | 0b01100000;
+                       break;
+               case 14:
+                       PORTD = (PORTD & ~0b01111011) | 0b01000011;
+                       break;
+               case 15:
+                       PORTD = (PORTD & ~0b01111011) | 0b00011011;
+                       break;
+               case 16:
+                       PORTD = (PORTD & ~0b01111011) | 0b00100011;
+                       break;
+               case 17:
+                       PORTD = (PORTD & ~0b01111011) | 0b00101011;
+                       break;
+       }
+}
diff --git a/keyboards/bpiphany/pegasushoof/pegasushoof.c b/keyboards/bpiphany/pegasushoof/pegasushoof.c
new file mode 100644 (file)
index 0000000..cde8148
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+Copyright 2016 Daniel Svensson <dsvensson@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "pegasushoof.h"
+
+
+extern inline void ph_caps_led_on(void);
+extern inline void ph_caps_led_off(void);
+
+extern inline void ph_sclk_led_on(void);
+extern inline void ph_sclk_led_off(void);
+
+
+__attribute__ ((weak))
+void matrix_init_user(void) {
+};
+
+__attribute__ ((weak))
+void matrix_scan_user(void) {
+}
+
+__attribute__ ((weak))
+bool process_action_user(keyrecord_t *record) {
+    return true;
+}
+
+__attribute__ ((weak))
+void led_set_user(uint8_t usb_led) {
+}
+
+void matrix_init_kb(void) {
+       matrix_init_user();
+}
+
+void matrix_scan_kb(void) {
+       matrix_scan_user();
+}
+
+bool process_action_kb(keyrecord_t *record) {
+       return process_action_user(record);
+}
+
+void led_set_kb(uint8_t usb_led) {
+       led_set_user(usb_led);
+}
diff --git a/keyboards/bpiphany/pegasushoof/pegasushoof.h b/keyboards/bpiphany/pegasushoof/pegasushoof.h
new file mode 100644 (file)
index 0000000..d031e3e
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+Copyright 2016 Daniel Svensson <dsvensson@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef PEGASUSHOOF_H
+#define PEGASUSHOOF_H
+
+#include "matrix.h"
+#include "quantum.h"
+
+#define  ___ KC_NO
+
+#define KEYMAP( \
+       KG6,      KH4, KI4, KI2, KI6, KP5, KL6, KM2, KM4, KO4, KO5, KO6, KO0,   KN5, KN7, KP7, \
+       KG4, KG5, KH5, KI5, KJ5, KJ4, KK4, KK5, KL5, KM5, KF5, KF4, KL4, KO2,   KR4, KC4, KE4, \
+       KG2, KG7, KH7, KI7, KJ7, KJ2, KK2, KK7, KL7, KM7, KF7, KF2, KL2, KO3,   KQ4, KC5, KE5, \
+       KH2, KG3, KH3, KI3, KJ3, KJ6, KK6, KK3, KL3, KM3, KF3, KF6,      KO1,                  \
+       KB2, KH6, KG1, KH1, KI1, KJ1, KJ0, KK0, KK1, KL1, KM1, KF0,      KB3,        KC6,      \
+       KP4, KD2, KN6,                KQ6,                KN0, KA3, KM0, KP1,   KC0, KQ0, KR0  \
+       ) { /*        00-A  01-B  02-C  03-D  04-E  05-F  06-G  07-H  08-I  09-J  10-K  11-L  12-M  13-N  14-O  15-P  16-Q  17-R */ \
+               /* 0 */  { ___ , ___ , KC0 , ___ , ___ , KF0 , ___ , ___ , ___ , KJ0 , KK0 , ___ , KM0 , KN0 , KO0 , ___ , KQ0 , KR0 }, \
+               /* 1 */  { ___ , ___ , ___ , ___ , ___ , ___ , KG1 , KH1 , KI1 , KJ1 , KK1 , KL1 , KM1 , ___ , KO1 , KP1 , ___ , ___ }, \
+               /* 2 */  { ___ , KB2 , ___ , KD2 , ___ , KF2 , KG2 , KH2 , KI2 , KJ2 , KK2 , KL2 , KM2 , ___ , KO2 , ___ , ___ , ___ }, \
+               /* 3 */  { KA3 , KB3 , ___ , ___ , ___ , KF3 , KG3 , KH3 , KI3 , KJ3 , KK3 , KL3 , KM3 , ___ , KO3 , ___ , ___ , ___ }, \
+               /* 4 */  { ___ , ___ , KC4 , ___ , KE4 , KF4 , KG4 , KH4 , KI4 , KJ4 , KK4 , KL4 , KM4 , ___ , KO4 , KP4 , KQ4 , KR4 }, \
+               /* 5 */  { ___ , ___ , KC5 , ___ , KE5 , KF5 , KG5 , KH5 , KI5 , KJ5 , KK5 , KL5 , KM5 , KN5 , KO5 , KP5 , ___ , ___ }, \
+               /* 6 */  { ___ , ___ , KC6 , ___ , ___ , KF6 , KG6 , KH6 , KI6 , KJ6 , KK6 , KL6 , ___ , KN6 , KO6 , ___ , KQ6 , ___ }, \
+               /* 7 */  { ___ , ___ , ___ , ___ , ___ , KF7 , KG7 , KH7 , KI7 , KJ7 , KK7 , KL7 , KM7 , KN7 , ___ , KP7 , ___ , ___ }, \
+       }
+
+inline void ph_caps_led_on(void)  { DDRC |=  (1<<6); PORTC &= ~(1<<6); }
+inline void ph_caps_led_off(void) { DDRC &= ~(1<<6); PORTC &= ~(1<<6); }
+
+inline void ph_sclk_led_on(void)  { DDRC |=  (1<<5); PORTC &= ~(1<<5); }
+inline void ph_sclk_led_off(void) { DDRC &= ~(1<<5); PORTC &= ~(1<<5); }
+
+
+#endif
diff --git a/keyboards/bpiphany/pegasushoof/rules.mk b/keyboards/bpiphany/pegasushoof/rules.mk
new file mode 100644 (file)
index 0000000..c5a3542
--- /dev/null
@@ -0,0 +1,67 @@
+# MCU name
+MCU = atmega32u2
+
+# 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
+
+
+# Boot Section Size in *bytes*
+#   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 = yes      # 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
+NKRO_ENABLE = no            # 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 = no        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
+
+
+CUSTOM_MATRIX = yes
+SRC = matrix.c
diff --git a/keyboards/bpiphany/readme.md b/keyboards/bpiphany/readme.md
new file mode 100644 (file)
index 0000000..992b7c9
--- /dev/null
@@ -0,0 +1,6 @@
+# Bathroom Epiphanies 
+
+bpiphany is the owner and designer of [Bathroom Epiphanies](http://bathroomepiphanies.com/).
+
+He is based in Sweden and creates several controller boards as a swappable component for some off the shelf keyboards. 
+
diff --git a/keyboards/bpiphany/tiger_lily/config.h b/keyboards/bpiphany/tiger_lily/config.h
new file mode 100644 (file)
index 0000000..4908192
--- /dev/null
@@ -0,0 +1,147 @@
+/*
+Copyright 2012 Jun Wako <wakojun@gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID       0xFEED
+#define PRODUCT_ID      0x6060
+#define DEVICE_VER      0x0001
+#define MANUFACTURER    Bathroom Epiphanies
+#define PRODUCT         tiger_lily
+#define DESCRIPTION     Tiger Lily controller for the Filco Majestouch 2
+
+/*
+ * Frosty Flake Rev. 20140521 made by Bathroom Ephiphanies
+ * Ported from the Bathroom Epiphanies TMK Firmware:
+ * https://github.com/BathroomEpiphanies/epiphanies_tmk_keyboard/tree/master/be_controllers
+ *
+ */
+
+/* key matrix size */
+#define MATRIX_ROWS 8   // Row0 - Row7 in the schematic
+#define MATRIX_COLS 18  // ColA - ColR in the schematic
+
+/*
+ * Keyboard Matrix Assignments
+ */
+#define UNUSED_PINS { B0, C4, D3 }
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCING_DELAY 5
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Magic Key Options
+ *
+ * Magic keys are hotkey commands that allow control over firmware functions of
+ * the keyboard. They are best used in combination with the HID Listen program,
+ * found here: https://www.pjrc.com/teensy/hid_listen.html
+ *
+ * The options below allow the magic key functionality to be changed. This is
+ * useful if your keyboard/keypad is missing keys and you want magic key support.
+ *
+ */
+
+/* key combination for magic key command */
+#define IS_COMMAND() ( \
+    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
+)
+
+/* control how magic key switches layers */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS  true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS  true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
+
+/* override magic key keymap */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
+//#define MAGIC_KEY_HELP1          H
+//#define MAGIC_KEY_HELP2          SLASH
+//#define MAGIC_KEY_DEBUG          D
+//#define MAGIC_KEY_DEBUG_MATRIX   X
+//#define MAGIC_KEY_DEBUG_KBD      K
+//#define MAGIC_KEY_DEBUG_MOUSE    M
+//#define MAGIC_KEY_VERSION        V
+//#define MAGIC_KEY_STATUS         S
+//#define MAGIC_KEY_CONSOLE        C
+//#define MAGIC_KEY_LAYER0_ALT1    ESC
+//#define MAGIC_KEY_LAYER0_ALT2    GRAVE
+//#define MAGIC_KEY_LAYER0         0
+//#define MAGIC_KEY_LAYER1         1
+//#define MAGIC_KEY_LAYER2         2
+//#define MAGIC_KEY_LAYER3         3
+//#define MAGIC_KEY_LAYER4         4
+//#define MAGIC_KEY_LAYER5         5
+//#define MAGIC_KEY_LAYER6         6
+//#define MAGIC_KEY_LAYER7         7
+//#define MAGIC_KEY_LAYER8         8
+//#define MAGIC_KEY_LAYER9         9
+//#define MAGIC_KEY_BOOTLOADER     PAUSE
+//#define MAGIC_KEY_LOCK           CAPS
+//#define MAGIC_KEY_EEPROM         E
+//#define MAGIC_KEY_NKRO           N
+//#define MAGIC_KEY_SLEEP_LED      Z
+
+/*
+ * Feature disable options
+ *  These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+
+#endif
diff --git a/keyboards/bpiphany/tiger_lily/info.json b/keyboards/bpiphany/tiger_lily/info.json
new file mode 100644 (file)
index 0000000..1a2194b
--- /dev/null
@@ -0,0 +1,15 @@
+{
+  "keyboard_name": "tiger_lily",
+  "url": "",
+  "maintainer": "qmk",
+  "width": 22.5,
+  "height": 6.5,
+  "layouts": {
+    "LAYOUT": {
+      "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "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":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Num Lock", "x":18.5, "y":1.5}, {"label":"/", "x":19.5, "y":1.5}, {"label":"*", "x":20.5, "y":1.5}, {"label":"-", "x":21.5, "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":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"7", "x":18.5, "y":2.5}, {"label":"8", "x":19.5, "y":2.5}, {"label":"9", "x":20.5, "y":2.5}, {"label":"+", "x":21.5, "y":2.5, "h":2}, {"label":"Caps Lock", "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":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"4", "x":18.5, "y":3.5}, {"label":"5", "x":19.5, "y":3.5}, {"label":"6", "x":20.5, "y":3.5}, {"label":"Shift", "x":0, "y":4.5, "w":1.25}, {"label":"|", "x":1.25, "y":4.5}, {"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":"N", "x":7.25, "y":4.5}, {"label":"M", "x":8.25, "y":4.5}, {"label":"<", "x":9.25, "y":4.5}, {"label":">", "x":10.25, "y":4.5}, {"label":"?", "x":11.25, "y":4.5}, {"label":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"1", "x":18.5, "y":4.5}, {"label":"2", "x":19.5, "y":4.5}, {"label":"3", "x":20.5, "y":4.5}, {"label":"Enter", "x":21.5, "y":4.5, "h":2}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":10, "y":5.5, "w":1.25}, {"label":"Win", "x":11.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}, {"label":"0", "x":18.5, "y":5.5, "w":2}, {"label":".", "x":20.5, "y":5.5}]
+    },
+    "LAYOUT_fullsize_ansi": {
+      "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "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":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Num Lock", "x":18.5, "y":1.5}, {"label":"/", "x":19.5, "y":1.5}, {"label":"*", "x":20.5, "y":1.5}, {"label":"-", "x":21.5, "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":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"7", "x":18.5, "y":2.5}, {"label":"8", "x":19.5, "y":2.5}, {"label":"9", "x":20.5, "y":2.5}, {"label":"+", "x":21.5, "y":2.5, "h":2}, {"label":"Caps Lock", "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":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"4", "x":18.5, "y":3.5}, {"label":"5", "x":19.5, "y":3.5}, {"label":"6", "x":20.5, "y":3.5}, {"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":"N", "x":7.25, "y":4.5}, {"label":"M", "x":8.25, "y":4.5}, {"label":"<", "x":9.25, "y":4.5}, {"label":">", "x":10.25, "y":4.5}, {"label":"?", "x":11.25, "y":4.5}, {"label":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"1", "x":18.5, "y":4.5}, {"label":"2", "x":19.5, "y":4.5}, {"label":"3", "x":20.5, "y":4.5}, {"label":"Enter", "x":21.5, "y":4.5, "h":2}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":10, "y":5.5, "w":1.25}, {"label":"Win", "x":11.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}, {"label":"0", "x":18.5, "y":5.5, "w":2}, {"label":".", "x":20.5, "y":5.5}]
+    }
+  }
+}
diff --git a/keyboards/bpiphany/tiger_lily/keymaps/default/config.h b/keyboards/bpiphany/tiger_lily/keymaps/default/config.h
new file mode 100644 (file)
index 0000000..8893d12
--- /dev/null
@@ -0,0 +1,8 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+// place overrides here
+
+#endif
diff --git a/keyboards/bpiphany/tiger_lily/keymaps/default/keymap.c b/keyboards/bpiphany/tiger_lily/keymaps/default/keymap.c
new file mode 100644 (file)
index 0000000..46c17ac
--- /dev/null
@@ -0,0 +1,11 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT(\
+       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_PSCR,KC_SLCK,KC_PAUS,                        \
+       KC_GRV,   KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,KC_MINS, KC_EQL,KC_BSPC,   KC_INS,KC_HOME,KC_PGUP,  KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \
+       KC_TAB,   KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,KC_LBRC,KC_RBRC,KC_BSLS,   KC_DEL, KC_END,KC_PGDN,    KC_P7,  KC_P8,  KC_P9,KC_PPLS, \
+      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_P4,  KC_P5,  KC_P6,      \
+      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_UP,            KC_P1,  KC_P2,  KC_P3,KC_PENT, \
+      KC_LCTL,KC_LGUI,KC_LALT,                 KC_SPC,                                KC_RALT,KC_RGUI, KC_APP,KC_RCTL,  KC_LEFT,KC_DOWN,KC_RGHT,    KC_P0,KC_PDOT)
+};
\ No newline at end of file
diff --git a/keyboards/bpiphany/tiger_lily/keymaps/default/readme.md b/keyboards/bpiphany/tiger_lily/keymaps/default/readme.md
new file mode 100644 (file)
index 0000000..4626859
--- /dev/null
@@ -0,0 +1 @@
+# The default keymap for tiger_lily
diff --git a/keyboards/bpiphany/tiger_lily/keymaps/default/rules.mk b/keyboards/bpiphany/tiger_lily/keymaps/default/rules.mk
new file mode 100644 (file)
index 0000000..9d3df59
--- /dev/null
@@ -0,0 +1,21 @@
+# 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 = yes       # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes       # 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 = no        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
+SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
+
+ifndef QUANTUM_DIR
+       include ../../../../Makefile
+endif
diff --git a/keyboards/bpiphany/tiger_lily/keymaps/default_ansi/config.h b/keyboards/bpiphany/tiger_lily/keymaps/default_ansi/config.h
new file mode 100644 (file)
index 0000000..8893d12
--- /dev/null
@@ -0,0 +1,8 @@
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "../../config.h"
+
+// place overrides here
+
+#endif
diff --git a/keyboards/bpiphany/tiger_lily/keymaps/default_ansi/keymap.c b/keyboards/bpiphany/tiger_lily/keymaps/default_ansi/keymap.c
new file mode 100644 (file)
index 0000000..6457b02
--- /dev/null
@@ -0,0 +1,11 @@
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_fullsize_ansi(\
+       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_PSCR,KC_SLCK,KC_PAUS,                        \
+       KC_GRV,   KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,KC_MINS, KC_EQL,KC_BSPC,   KC_INS,KC_HOME,KC_PGUP,  KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \
+       KC_TAB,   KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,KC_LBRC,KC_RBRC,KC_BSLS,   KC_DEL, KC_END,KC_PGDN,    KC_P7,  KC_P8,  KC_P9,KC_PPLS, \
+      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_P4,  KC_P5,  KC_P6,      \
+      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_UP,            KC_P1,  KC_P2,  KC_P3,KC_PENT, \
+      KC_LCTL,KC_LGUI,KC_LALT,                 KC_SPC,                                KC_RALT,KC_RGUI, KC_APP,KC_RCTL,  KC_LEFT,KC_DOWN,KC_RGHT,    KC_P0,KC_PDOT)
+};
\ No newline at end of file
diff --git a/keyboards/bpiphany/tiger_lily/keymaps/default_ansi/readme.md b/keyboards/bpiphany/tiger_lily/keymaps/default_ansi/readme.md
new file mode 100644 (file)
index 0000000..2cb8c89
--- /dev/null
@@ -0,0 +1,3 @@
+# default_ansi
+
+A standard fullsize ANSI-layout keymap for Tiger Lily-powered keyboards.
diff --git a/keyboards/bpiphany/tiger_lily/keymaps/default_ansi/rules.mk b/keyboards/bpiphany/tiger_lily/keymaps/default_ansi/rules.mk
new file mode 100644 (file)
index 0000000..9d3df59
--- /dev/null
@@ -0,0 +1,21 @@
+# 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 = yes       # Mouse keys(+4700)
+EXTRAKEY_ENABLE = yes       # 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 = no        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
+SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
+
+ifndef QUANTUM_DIR
+       include ../../../../Makefile
+endif
diff --git a/keyboards/bpiphany/tiger_lily/matrix.c b/keyboards/bpiphany/tiger_lily/matrix.c
new file mode 100644 (file)
index 0000000..3b48f6b
--- /dev/null
@@ -0,0 +1,155 @@
+/*
+  Copyright 2017 Gabriel Young <gabeplaysdrums@live.com>
+
+  This program is free software: you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation, either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <stdint.h>
+#include <stdbool.h>
+#include <avr/io.h>
+#include <util/delay.h>
+#include "print.h"
+#include "debug.h"
+#include "util.h"
+#include "matrix.h"
+
+#ifndef DEBOUNCING_DELAY
+#   define DEBOUNCING_DELAY 5
+#endif
+static uint8_t debouncing = DEBOUNCING_DELAY;
+
+static matrix_row_t matrix[MATRIX_ROWS];
+static matrix_row_t matrix_debouncing[MATRIX_ROWS];
+
+__attribute__ ((weak))
+void matrix_init_kb(void) {
+    matrix_init_user();
+}
+
+__attribute__ ((weak))
+void matrix_scan_kb(void) {
+    matrix_scan_user();
+}
+
+__attribute__ ((weak))
+void matrix_init_user(void) {
+}
+
+__attribute__ ((weak))
+void matrix_scan_user(void) {
+}
+
+static matrix_row_t scan_col(void) {
+    return (
+               (PINC&(1<<2) ? 0 : ((matrix_row_t)1<<0)) | \
+               (PINB&(1<<3) ? 0 : ((matrix_row_t)1<<1)) | \
+               (PINB&(1<<4) ? 0 : ((matrix_row_t)1<<2)) | \
+               (PINB&(1<<2) ? 0 : ((matrix_row_t)1<<3)) | \
+               (PINB&(1<<1) ? 0 : ((matrix_row_t)1<<4)) | \
+               (PINC&(1<<7) ? 0 : ((matrix_row_t)1<<5)) | \
+               (PINB&(1<<6) ? 0 : ((matrix_row_t)1<<6)) | \
+               (PINB&(1<<5) ? 0 : ((matrix_row_t)1<<7))
+       );
+}
+
+static void select_col(uint8_t col) {
+    switch (col) {
+        case  0: PORTD = (PORTD & ~0b01110111) | 0b01110110; break; \
+               case  1: PORTD = (PORTD & ~0b01110111) | 0b01100001; break; \
+               case  2: PORTD = (PORTD & ~0b01110111) | 0b01100101; break; \
+               case  3: PORTD = (PORTD & ~0b01110111) | 0b00000011; break; \
+               case  4: PORTD = (PORTD & ~0b01110111) | 0b00000111; break; \
+               case  5: PORTD = (PORTD & ~0b01110111) | 0b00010011; break; \
+               case  6: PORTD = (PORTD & ~0b01110111) | 0b00010111; break; \
+               case  7: PORTD = (PORTD & ~0b01110111) | 0b00100011; break; \
+               case  8: PORTD = (PORTD & ~0b01110111) | 0b00100111; break; \
+               case  9: PORTD = (PORTD & ~0b01110111) | 0b00110011; break; \
+               case 10: PORTD = (PORTD & ~0b01110111) | 0b01110010; break; \
+               case 11: PORTD = (PORTD & ~0b01110111) | 0b01100110; break; \
+               case 12: PORTD = (PORTD & ~0b01110111) | 0b01110000; break; \
+               case 13: PORTD = (PORTD & ~0b01110111) | 0b01100100; break; \
+               case 14: PORTD = (PORTD & ~0b01110111) | 0b01100000; break; \
+               case 15: PORTD = (PORTD & ~0b01110111) | 0b01000111; break; \
+               case 16: PORTD = (PORTD & ~0b01110111) | 0b01000011; break; \
+               case 17: PORTD = (PORTD & ~0b01110111) | 0b00110111; break;
+    }
+}
+
+void matrix_init(void) {
+    /* Column output pins */ \
+       DDRD  |=  0b01110111;    \
+       /* Row input pins */     \
+       DDRC  &= ~0b10000100;    \
+       DDRB  &= ~0b01111110;    \
+       PORTC |=  0b10000100;    \
+       PORTB |=  0b01111110;
+
+    for (uint8_t i=0; i < MATRIX_ROWS; i++)
+        matrix[i] = matrix_debouncing[i] = 0;
+
+    matrix_init_quantum();
+}
+
+uint8_t matrix_scan(void) {
+    for (uint8_t col = 0; col < MATRIX_COLS; col++) {
+        select_col(col);
+        _delay_us(3);
+        matrix_row_t col_scan = scan_col();
+        for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
+            bool prev_bit = matrix_debouncing[row] & ((matrix_row_t)1<<col);
+            bool curr_bit = col_scan & (1<<row);
+            if (prev_bit != curr_bit) {
+                matrix_debouncing[row] ^= ((matrix_row_t)1<<col);
+                debouncing = DEBOUNCING_DELAY;
+            }
+        }
+    }
+
+    if (debouncing) {
+        if (--debouncing)
+            _delay_ms(1);
+        else
+            for (uint8_t i = 0; i < MATRIX_ROWS; i++)
+                matrix[i] = matrix_debouncing[i];
+    }
+
+    matrix_scan_quantum();
+    return 1;
+}
+
+inline matrix_row_t matrix_get_row(uint8_t row) {
+    return matrix[row];
+}
+
+void matrix_print(void) {
+       #ifndef NO_PRINT
+    print("\nr\\c ABCDEFGHIJKLMNOPQR\n");
+    for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
+        matrix_row_t matrix_row = matrix_get_row(row);
+        xprintf("%02X: ", row);
+        for (uint8_t col = 0; col < MATRIX_COLS; col++) {
+            bool curr_bit = matrix_row & (1<<col);
+            xprintf("%c", curr_bit ? '*' : '.');
+        }
+        print("\n");
+    }
+       #endif
+}
+
+uint8_t matrix_key_count(void) {
+    uint8_t count = 0;
+    for (uint8_t row = 0; row < MATRIX_ROWS; row++)
+        count += bitpop32(matrix[row]);
+    return count;
+}
diff --git a/keyboards/bpiphany/tiger_lily/readme.md b/keyboards/bpiphany/tiger_lily/readme.md
new file mode 100644 (file)
index 0000000..1fcb6c3
--- /dev/null
@@ -0,0 +1,16 @@
+tiger_lily
+==========
+
+This is the firmware for Rev. 20161114 of the Tiger Lily controller by [Bathroom Epiphanies](http://bathroomepiphanies.com/controllers/), a replacement controller for the [Filco Majestouch 2 104 key](https://mechanicalkeyboards.com/shop/index.php?l=product_detail&p=1819). Bathroom Epiphanies has advised that the source is also compatible with the Black Petal controller, however I do not own an example to test against.
+
+The code was adapted from the [BathroomEpiphanies TMK Firmware](https://github.com/BathroomEpiphanies/epiphanies_tmk_keyboard/tree/master/be_controllers).
+
+Keyboard Maintainer: QMK Community  
+Hardware Supported: Tiger Lily  
+Hardware Availability: https://geekhack.org/index.php?topic=46700.0
+
+Make example for this keyboard (after setting up your build environment):
+
+    make bpiphany/tiger_lily: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/bpiphany/tiger_lily/rules.mk b/keyboards/bpiphany/tiger_lily/rules.mk
new file mode 100644 (file)
index 0000000..8f07bb0
--- /dev/null
@@ -0,0 +1,73 @@
+# MCU name
+#MCU = at90usb1287
+MCU = atmega32u2
+
+# 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
+
+
+# Boot Section Size in *bytes*
+#   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
+MIDI_ENABLE = no            # MIDI controls
+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
+
+CUSTOM_MATRIX = yes
+SRC += matrix.c
+
+LAYOUTS = fullsize_ansi
diff --git a/keyboards/bpiphany/tiger_lily/tiger_lily.c b/keyboards/bpiphany/tiger_lily/tiger_lily.c
new file mode 100644 (file)
index 0000000..d2e7ba7
--- /dev/null
@@ -0,0 +1,63 @@
+#include "tiger_lily.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) {
+    DDRB |= (1<<7);
+    DDRC |= (1<<5) | (1<<6);
+
+    print_dec(usb_led);
+
+    if (usb_led & (1<<USB_LED_NUM_LOCK))
+        PORTC &= ~(1<<5);
+    else
+        PORTC |=  (1<<5);
+
+    if (usb_led & (1<<USB_LED_SCROLL_LOCK))
+        PORTB &= ~(1<<7);
+    else
+        PORTB |=  (1<<7);
+
+    if (usb_led & (1<<USB_LED_CAPS_LOCK))
+        PORTC &= ~(1<<6);
+    else
+        PORTC |=  (1<<6);
+
+    led_set_user(usb_led);
+}
+
+__attribute__ ((weak))
+void matrix_init_user(void) {
+}
+
+__attribute__ ((weak))
+void matrix_scan_user(void) {
+}
+
+__attribute__ ((weak))
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  return true;
+}
+
+__attribute__ ((weak))
+void led_set_user(uint8_t usb_led) {
+}
\ No newline at end of file
diff --git a/keyboards/bpiphany/tiger_lily/tiger_lily.h b/keyboards/bpiphany/tiger_lily/tiger_lily.h
new file mode 100644 (file)
index 0000000..65e4d91
--- /dev/null
@@ -0,0 +1,71 @@
+#ifndef TIGER_LILY_H
+#define TIGER_LILY_H
+
+#include "quantum.h"
+
+// This a shortcut to help you visually see your layout.
+// The following is an example using the Planck MIT layout
+// The first section contains all of the arguements
+// The second converts the arguments into a two-dimensional array
+
+/*
+  Matrix col/row mapping
+
+  ,----.    ,-------------------. ,-------------------. ,-------------------. ,--------------.
+  | J6 |    | I4 | H4 | H2 | H6 | | A7 | E6 | D2 | D4 | | B4 | B7 | B6 | B0 | | C7 | C5 | A5 |
+  `----'    `-------------------' `-------------------' `-------------------' `--------------'
+  ,-------------------------------------------------------------------------. ,--------------. ,-------------------.
+  | J4 | J7 | I7 | H7 | G7 | G4 | F4 | F7 | E7 | D7 | R7 | R4 | E4 |     B2 | | L4 | O4 | Q4 | | K1 | L1 | Q1 | Q0 |
+  |-------------------------------------------------------------------------| |--------------| |-------------------|
+  | J2   | J5 | I5 | H5 | G5 | G2 | F2 | F5 | E5 | D5 | R5 | R2 | E2 |   B3 | | K4 | O7 | Q7 | | K5 | L5 | Q5 | O5 |
+  |-------------------------------------------------------------------------| '--------------' |--------------     |
+  | O5    | J3 | I3 | H3 | G3 | G6 | F6 | F3 | E3 | D3 | R3 | R6 |       B1 |                  | K2 | L2 | Q2 |    |
+  |-------------------------------------------------------------------------|      ,----.      |-------------------|
+  | N2      | J1 | I1 | H1 | G1 | G0 | F0 | F1 | E1 | D1 | R0 |          N3 |      | O6 |      | K3 | L3 | Q3 | O3 |
+  |-------------------------------------------------------------------------| ,--------------. |--------------     |
+  | A4 | P2 | C6 |                  K6                  | C0 | M3 | D0 | A1 | | O0 | K0 | L0 | | L6      | Q6 |    |
+  `-------------------------------------------------------------------------' `--------------' `-------------------'
+*/
+#define LAYOUT( \
+  KJ6,      KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0,   KC7, KC5, KA5,                       \
+  KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2,   KL4, KO4, KQ4,   KK1, KL1, KQ1, KQ0, \
+  KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3,   KK4, KO7, KQ7,   KK5, KL5, KQ5, KO5, \
+  KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6,      KB1,                    KK2, KL2, KQ2,      \
+  KN2, KI6, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0,      KN3,        KO6,        KK3, KL3, KQ3, KO3, \
+  KA4, KP2, KC6,                KK6,                KC0, KM3, KD0, KA1,   KO0, KK0, KL0,   KL6,      KQ6       \
+) \
+{ \
+/* Columns and rows need to be swapped in the below definition */ \
+/*          A       B       C       D       E       F       G       H       I       J       K       L       M       N       O       P       Q       R       */ \
+/* 0 */ {   KC_NO,  KB0,    KC0,    KD0,    KC_NO,  KF0,    KG0,    KC_NO,  KC_NO,  KC_NO,  KK0,    KL0,    KC_NO,  KC_NO,  KO0,    KC_NO,  KQ0,    KR0     }, \
+/* 1 */ {   KA1,    KB1,    KC_NO,  KD1,    KE1,    KF1,    KG1,    KH1,    KI1,    KJ1,    KK1,    KL1,    KC_NO,  KC_NO,  KC_NO,  KC_NO,  KQ1,    KC_NO   }, \
+/* 2 */ {   KC_NO,  KB2,    KC_NO,  KD2,    KE2,    KF2,    KG2,    KH2,    KI2,    KJ2,    KK2,    KL2,    KC_NO,  KN2,    KC_NO,  KP2,    KQ2,    KR2     }, \
+/* 3 */ {   KC_NO,  KB3,    KC_NO,  KD3,    KE3,    KF3,    KG3,    KH3,    KI3,    KJ3,    KK3,    KL3,    KM3,    KN3,    KO3,    KC_NO,  KQ3,    KR3     }, \
+/* 4 */ {   KA4,    KB4,    KC_NO,  KD4,    KE4,    KF4,    KG4,    KH4,    KI4,    KJ4,    KK4,    KL4,    KC_NO,  KC_NO,  KO4,    KC_NO,  KQ4,    KR4     }, \
+/* 5 */ {   KA5,    KC_NO,  KC5,    KD5,    KE5,    KF5,    KG5,    KH5,    KI5,    KJ5,    KK5,    KL5,    KC_NO,  KC_NO,  KO5,    KC_NO,  KQ5,    KR5     }, \
+/* 6 */ {   KC_NO,  KB6,    KC6,    KC_NO,  KE6,    KF6,    KG6,    KH6,    KI6,    KJ6,    KK6,    KL6,    KC_NO,  KC_NO,  KO6,    KC_NO,  KQ6,    KR6     }, \
+/* 7 */ {   KA7,    KB7,    KC7,    KD7,    KE7,    KF7,    KG7,    KH7,    KI7,    KJ7,    KC_NO,  KC_NO,  KC_NO,  KC_NO,  KO7,    KC_NO,  KQ7,    KR7     }  \
+}
+
+#define LAYOUT_fullsize_ansi( \
+  KJ6,      KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0,   KC7, KC5, KA5,                       \
+  KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2,   KL4, KO4, KQ4,   KK1, KL1, KQ1, KQ0, \
+  KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3,   KK4, KO7, KQ7,   KK5, KL5, KQ5, KO5, \
+  KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6,      KB1,                    KK2, KL2, KQ2,      \
+  KN2,      KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0,      KN3,        KO6,        KK3, KL3, KQ3, KO3, \
+  KA4, KP2, KC6,                KK6,                KC0, KM3, KD0, KA1,   KO0, KK0, KL0,   KL6,      KQ6       \
+) \
+{ \
+/* Columns and rows need to be swapped in the below definition */ \
+/*          A       B       C       D       E       F       G       H       I       J       K       L       M       N       O       P       Q       R       */ \
+/* 0 */ {   KC_NO,  KB0,    KC0,    KD0,    KC_NO,  KF0,    KG0,    KC_NO,  KC_NO,  KC_NO,  KK0,    KL0,    KC_NO,  KC_NO,  KO0,    KC_NO,  KQ0,    KR0     }, \
+/* 1 */ {   KA1,    KB1,    KC_NO,  KD1,    KE1,    KF1,    KG1,    KH1,    KI1,    KJ1,    KK1,    KL1,    KC_NO,  KC_NO,  KC_NO,  KC_NO,  KQ1,    KC_NO   }, \
+/* 2 */ {   KC_NO,  KB2,    KC_NO,  KD2,    KE2,    KF2,    KG2,    KH2,    KI2,    KJ2,    KK2,    KL2,    KC_NO,  KN2,    KC_NO,  KP2,    KQ2,    KR2     }, \
+/* 3 */ {   KC_NO,  KB3,    KC_NO,  KD3,    KE3,    KF3,    KG3,    KH3,    KI3,    KJ3,    KK3,    KL3,    KM3,    KN3,    KO3,    KC_NO,  KQ3,    KR3     }, \
+/* 4 */ {   KA4,    KB4,    KC_NO,  KD4,    KE4,    KF4,    KG4,    KH4,    KI4,    KJ4,    KK4,    KL4,    KC_NO,  KC_NO,  KO4,    KC_NO,  KQ4,    KR4     }, \
+/* 5 */ {   KA5,    KC_NO,  KC5,    KD5,    KE5,    KF5,    KG5,    KH5,    KI5,    KJ5,    KK5,    KL5,    KC_NO,  KC_NO,  KO5,    KC_NO,  KQ5,    KR5     }, \
+/* 6 */ {   KC_NO,  KB6,    KC6,    KC_NO,  KE6,    KF6,    KG6,    KH6,    KC_NO,  KJ6,    KK6,    KL6,    KC_NO,  KC_NO,  KO6,    KC_NO,  KQ6,    KR6     }, \
+/* 7 */ {   KA7,    KB7,    KC7,    KD7,    KE7,    KF7,    KG7,    KH7,    KI7,    KJ7,    KC_NO,  KC_NO,  KC_NO,  KC_NO,  KO7,    KC_NO,  KQ7,    KR7     }  \
+}
+
+#endif
diff --git a/keyboards/bpiphany/unloved_bastard/config.h b/keyboards/bpiphany/unloved_bastard/config.h
new file mode 100644 (file)
index 0000000..d89e858
--- /dev/null
@@ -0,0 +1,168 @@
+/*
+Copyright 2018 Alexander Fougner <fougner89 at gmail.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+#include "config_common.h"
+
+/* USB Device descriptor parameter */
+#define VENDOR_ID       0xFEED
+#define PRODUCT_ID      0x1337
+#define DEVICE_VER      0x0001
+#define MANUFACTURER    BathroomEpiphanies
+#define PRODUCT         Unloved Bastard
+#define DESCRIPTION     Unloved Bastard controller for CM Masterkeys S
+
+/* key matrix size */
+#define MATRIX_ROWS 8
+#define MATRIX_COLS 18
+
+/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
+#define DEBOUNCING_DELAY 5
+
+/* define if matrix has ghost (lacks anti-ghosting diodes) */
+//#define MATRIX_HAS_GHOST
+
+/* number of backlight levels */
+
+/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
+#define LOCKING_SUPPORT_ENABLE
+/* Locking resynchronize hack */
+#define LOCKING_RESYNC_ENABLE
+
+/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
+ * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
+ */
+// #define GRAVE_ESC_CTRL_OVERRIDE
+
+/*
+ * Force NKRO
+ *
+ * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
+ * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
+ * makefile for this to work.)
+ *
+ * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
+ * until the next keyboard reset.
+ *
+ * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
+ * fully operational during normal computer usage.
+ *
+ * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
+ * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
+ * bootmagic, NKRO mode will always be enabled until it is toggled again during a
+ * power-up.
+ *
+ */
+//#define FORCE_NKRO
+
+/*
+ * Magic Key Options
+ *
+ * Magic keys are hotkey commands that allow control over firmware functions of
+ * the keyboard. They are best used in combination with the HID Listen program,
+ * found here: https://www.pjrc.com/teensy/hid_listen.html
+ *
+ * The options below allow the magic key functionality to be changed. This is
+ * useful if your keyboard/keypad is missing keys and you want magic key support.
+ *
+ */
+
+/* key combination for magic key command */
+#define IS_COMMAND() ( \
+    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
+)
+
+/* control how magic key switches layers */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS  true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS  true
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
+
+/* override magic key keymap */
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
+//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
+//#define MAGIC_KEY_HELP1          H
+//#define MAGIC_KEY_HELP2          SLASH
+//#define MAGIC_KEY_DEBUG          D
+//#define MAGIC_KEY_DEBUG_MATRIX   X
+//#define MAGIC_KEY_DEBUG_KBD      K
+//#define MAGIC_KEY_DEBUG_MOUSE    M
+//#define MAGIC_KEY_VERSION        V
+//#define MAGIC_KEY_STATUS         S
+//#define MAGIC_KEY_CONSOLE        C
+//#define MAGIC_KEY_LAYER0_ALT1    ESC
+//#define MAGIC_KEY_LAYER0_ALT2    GRAVE
+//#define MAGIC_KEY_LAYER0         0
+//#define MAGIC_KEY_LAYER1         1
+//#define MAGIC_KEY_LAYER2         2
+//#define MAGIC_KEY_LAYER3         3
+//#define MAGIC_KEY_LAYER4         4
+//#define MAGIC_KEY_LAYER5         5
+//#define MAGIC_KEY_LAYER6         6
+//#define MAGIC_KEY_LAYER7         7
+//#define MAGIC_KEY_LAYER8         8
+//#define MAGIC_KEY_LAYER9         9
+//#define MAGIC_KEY_BOOTLOADER     PAUSE
+//#define MAGIC_KEY_LOCK           CAPS
+//#define MAGIC_KEY_EEPROM         E
+//#define MAGIC_KEY_NKRO           N
+//#define MAGIC_KEY_SLEEP_LED      Z
+
+/*
+ * Feature disable options
+ *  These options are also useful to firmware size reduction.
+ */
+
+/* disable debug print */
+//#define NO_DEBUG
+
+/* disable print */
+//#define NO_PRINT
+
+/* disable action features */
+//#define NO_ACTION_LAYER
+//#define NO_ACTION_TAPPING
+//#define NO_ACTION_ONESHOT
+//#define NO_ACTION_MACRO
+//#define NO_ACTION_FUNCTION
+
+/*
+ * MIDI options
+ */
+
+/* Prevent use of disabled MIDI features in the keymap */
+//#define MIDI_ENABLE_STRICT 1
+
+/* enable basic MIDI features:
+   - MIDI notes can be sent when in Music mode is on
+*/
+//#define MIDI_BASIC
+
+/* enable advanced MIDI features:
+   - MIDI notes can be added to the keymap
+   - Octave shift and transpose
+   - Virtual sustain, portamento, and modulation wheel
+   - etc.
+*/
+//#define MIDI_ADVANCED
+
+/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
+//#define MIDI_TONE_KEYCODE_OCTAVES 1
+
+#endif
diff --git a/keyboards/bpiphany/unloved_bastard/info.json b/keyboards/bpiphany/unloved_bastard/info.json
new file mode 100644 (file)
index 0000000..efa9950
--- /dev/null
@@ -0,0 +1,16 @@
+{
+  "keyboard_name": "unloved_bastard",
+  "url": "",
+  "maintainer": "qmk",
+  "bootloader": "",
+  "width": 18.25,
+  "height": 6.5,
+  "layouts": {
+    "LAYOUT": {
+      "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "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":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.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":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"Caps Lock", "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":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"Shift", "x":0, "y":4.5, "w":1.25}, {"label":"|", "x":1.25, "y":4.5}, {"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":"N", "x":7.25, "y":4.5}, {"label":"M", "x":8.25, "y":4.5}, {"label":"<", "x":9.25, "y":4.5}, {"label":">", "x":10.25, "y":4.5}, {"label":"?", "x":11.25, "y":4.5}, {"label":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":10, "y":5.5, "w":1.25}, {"label":"Win", "x":11.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}]
+    },
+    "LAYOUT_tkl_ansi": {
+      "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "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":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.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":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"Caps Lock", "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":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "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":"N", "x":7.25, "y":4.5}, {"label":"M", "x":8.25, "y":4.5}, {"label":"<", "x":9.25, "y":4.5}, {"label":">", "x":10.25, "y":4.5}, {"label":"?", "x":11.25, "y":4.5}, {"label":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":10, "y":5.5, "w":1.25}, {"label":"Win", "x":11.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}]
+    }
+  }
+}
diff --git a/keyboards/bpiphany/unloved_bastard/keymaps/default/config.h b/keyboards/bpiphany/unloved_bastard/keymaps/default/config.h
new file mode 100644 (file)
index 0000000..c55f7f9
--- /dev/null
@@ -0,0 +1,24 @@
+/* Copyright 2018 Alexander Fougner <fougner89 at gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "config_common.h"
+
+// place overrides here
+
+#endif
diff --git a/keyboards/bpiphany/unloved_bastard/keymaps/default/keymap.c b/keyboards/bpiphany/unloved_bastard/keymaps/default/keymap.c
new file mode 100644 (file)
index 0000000..ea10315
--- /dev/null
@@ -0,0 +1,63 @@
+/* Copyright 2018 Alexander Fougner <fougner89 at gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT(\
+                 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_PSCR, KC_SLCK, KC_PAUS, \
+                 KC_GRV, KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_MINS, KC_EQL,  KC_BSPC,   KC_INS,  KC_HOME, KC_PGUP, \
+                 KC_TAB, KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,   KC_LBRC, KC_RBRC, KC_BSLS,   KC_DEL,  KC_END,  KC_PGDN, \
+                 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_NUBS,KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,          KC_RSFT,            KC_UP, \
+                 KC_LCTL,KC_LGUI,KC_LALT,                KC_SPC,                                 KC_RALT,KC_RGUI, KC_APP,  KC_RCTL,   KC_LEFT, KC_DOWN, KC_RGHT  )
+};
+
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+          if (record->event.pressed) {
+            register_code(KC_RSFT);
+          } else {
+            unregister_code(KC_RSFT);
+          }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+
+void matrix_init_user(void) {
+
+}
+
+void matrix_scan_user(void) {
+
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  return true;
+}
+
+void led_set_user(uint8_t usb_led) {
+
+}
diff --git a/keyboards/bpiphany/unloved_bastard/keymaps/default/readme.md b/keyboards/bpiphany/unloved_bastard/keymaps/default/readme.md
new file mode 100644 (file)
index 0000000..a2b5f11
--- /dev/null
@@ -0,0 +1 @@
+# The default keymap for unloved_bastard
diff --git a/keyboards/bpiphany/unloved_bastard/keymaps/default_ansi/config.h b/keyboards/bpiphany/unloved_bastard/keymaps/default_ansi/config.h
new file mode 100644 (file)
index 0000000..c55f7f9
--- /dev/null
@@ -0,0 +1,24 @@
+/* Copyright 2018 Alexander Fougner <fougner89 at gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef CONFIG_USER_H
+#define CONFIG_USER_H
+
+#include "config_common.h"
+
+// place overrides here
+
+#endif
diff --git a/keyboards/bpiphany/unloved_bastard/keymaps/default_ansi/keymap.c b/keyboards/bpiphany/unloved_bastard/keymaps/default_ansi/keymap.c
new file mode 100644 (file)
index 0000000..16c0342
--- /dev/null
@@ -0,0 +1,63 @@
+/* Copyright 2018 Alexander Fougner <fougner89 at gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include QMK_KEYBOARD_H
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = LAYOUT_tkl_ansi(\
+                 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_PSCR, KC_SLCK, KC_PAUS, \
+                 KC_GRV, KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_MINS, KC_EQL,  KC_BSPC,   KC_INS,  KC_HOME, KC_PGUP, \
+                 KC_TAB, KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,   KC_LBRC, KC_RBRC, KC_BSLS,   KC_DEL,  KC_END,  KC_PGDN, \
+                 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_UP, \
+                 KC_LCTL,KC_LGUI,KC_LALT,                KC_SPC,                                 KC_RALT,KC_RGUI, KC_APP,  KC_RCTL,   KC_LEFT, KC_DOWN, KC_RGHT  )
+};
+
+
+const uint16_t PROGMEM fn_actions[] = {
+
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+        case 0:
+          if (record->event.pressed) {
+            register_code(KC_RSFT);
+          } else {
+            unregister_code(KC_RSFT);
+          }
+        break;
+      }
+    return MACRO_NONE;
+};
+
+
+void matrix_init_user(void) {
+
+}
+
+void matrix_scan_user(void) {
+
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  return true;
+}
+
+void led_set_user(uint8_t usb_led) {
+
+}
diff --git a/keyboards/bpiphany/unloved_bastard/keymaps/default_ansi/readme.md b/keyboards/bpiphany/unloved_bastard/keymaps/default_ansi/readme.md
new file mode 100644 (file)
index 0000000..00d90f1
--- /dev/null
@@ -0,0 +1,3 @@
+# default_ansi
+
+A standard tenkeyless ANSI-layout keymap for Unloved Bastard-powered keyboards.
diff --git a/keyboards/bpiphany/unloved_bastard/matrix.c b/keyboards/bpiphany/unloved_bastard/matrix.c
new file mode 100644 (file)
index 0000000..bb6de86
--- /dev/null
@@ -0,0 +1,156 @@
+/*
+  Copyright 2017 Gabriel Young <gabeplaysdrums@live.com>
+  Copyright 2018 Alexander Fougner <fougner89 at gmail.com>
+
+  This program is free software: you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation, either version 2 of the License, or
+  (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <stdint.h>
+#include <stdbool.h>
+#include <avr/io.h>
+#include <util/delay.h>
+#include "print.h"
+#include "debug.h"
+#include "util.h"
+#include "matrix.h"
+
+__attribute__ ((weak))
+void matrix_init_kb(void) {
+    matrix_init_user();
+}
+
+__attribute__ ((weak))
+void matrix_scan_kb(void) {
+    matrix_scan_user();
+}
+
+__attribute__ ((weak))
+void matrix_init_user(void) {
+}
+
+__attribute__ ((weak))
+void matrix_scan_user(void) {
+}
+
+#ifndef DEBOUNCING_DELAY
+#   define DEBOUNCING_DELAY 5
+#endif
+static uint8_t debouncing = DEBOUNCING_DELAY;
+
+static matrix_row_t matrix[MATRIX_ROWS];
+static matrix_row_t matrix_debouncing[MATRIX_ROWS];
+
+static matrix_row_t scan_col(void) {
+    return (
+        (PINC&(1<<7) ? 0 : ((matrix_row_t)1<<0)) |
+        (PINB&(1<<6) ? 0 : ((matrix_row_t)1<<1)) |
+        (PINB&(1<<1) ? 0 : ((matrix_row_t)1<<2)) |
+        (PINB&(1<<0) ? 0 : ((matrix_row_t)1<<3)) |
+        (PINB&(1<<5) ? 0 : ((matrix_row_t)1<<4)) |
+        (PINB&(1<<3) ? 0 : ((matrix_row_t)1<<5)) |
+        (PINB&(1<<4) ? 0 : ((matrix_row_t)1<<6)) |
+        (PINB&(1<<2) ? 0 : ((matrix_row_t)1<<7))
+    );
+}
+
+static void select_col(uint8_t col) {
+    switch (col) {
+        case 0: PORTD = (PORTD & ~0b00111111) | 0b00110011; break;
+        case 1: PORTD = (PORTD & ~0b00111111) | 0b00100011; break;
+        case 2: PORTD = (PORTD & ~0b00111111) | 0b00010111; break;
+        case 3: PORTD = (PORTD & ~0b00111111) | 0b00110011; break;
+        case 4: PORTD = (PORTD & ~0b00111111) | 0b00010011; break;
+        case 5: PORTD = (PORTD & ~0b00111111) | 0b00011011; break;
+        case 6: PORTD = (PORTD & ~0b00111111) | 0b00110100; break;
+        case 7: PORTD = (PORTD & ~0b00111111) | 0b00111010; break;
+        case 8: PORTD = (PORTD & ~0b00111111) | 0b00111000; break;
+        case 9: PORTD = (PORTD & ~0b00111111) | 0b00111100; break;
+        case 10: PORTD = (PORTD & ~0b00111111) | 0b00110010; break;
+        case 11: PORTD = (PORTD & ~0b00111111) | 0b00011111; break;
+        case 12: PORTD = (PORTD & ~0b00111111) | 0b00001111; break;
+        case 13: PORTD = (PORTD & ~0b00111111) | 0b00100111; break;
+        case 14: PORTD = (PORTD & ~0b00111111) | 0b00000111; break;
+        case 15: PORTD = (PORTD & ~0b00111111) | 0b00110110; break;
+        case 16: PORTD = (PORTD & ~0b00111111) | 0b00001011; break;
+        case 17: PORTD = (PORTD & ~0b00111111) | 0b00000011; break;
+    }
+}
+
+void matrix_init(void) {
+    /* Row output pins */
+    DDRD  |=  0b00111111;
+    /* Column input pins */
+    DDRC  &= ~0b10000000;
+    DDRB  &= ~0b01111111;
+    PORTC |=  0b10000000;
+    PORTB |=  0b01111111;
+
+    for (uint8_t i=0; i < MATRIX_ROWS; i++)
+        matrix[i] = matrix_debouncing[i] = 0;
+
+    matrix_init_quantum();
+}
+
+uint8_t matrix_scan(void) {
+    for (uint8_t col = 0; col < MATRIX_COLS; col++) {
+        select_col(col);
+        _delay_us(3);
+        matrix_row_t col_scan = scan_col();
+        for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
+            bool prev_bit = matrix_debouncing[row] & ((matrix_row_t)1<<col);
+            bool curr_bit = col_scan & (1<<row);
+            if (prev_bit != curr_bit) {
+                matrix_debouncing[row] ^= ((matrix_row_t)1<<col);
+                debouncing = DEBOUNCING_DELAY;
+            }
+        }
+    }
+
+    if (debouncing) {
+        if (--debouncing)
+            _delay_ms(1);
+        else
+            for (uint8_t i = 0; i < MATRIX_ROWS; i++)
+                matrix[i] = matrix_debouncing[i];
+    }
+
+    matrix_scan_quantum();
+    return 1;
+}
+
+inline matrix_row_t matrix_get_row(uint8_t row) {
+    return matrix[row];
+}
+
+void matrix_print(void) {
+#ifndef NO_PRINT
+    print("\nr\\c ABCDEFGHIJKLMNOPQR\n");
+    for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
+        matrix_row_t matrix_row = matrix_get_row(row);
+        xprintf("%02X: ", row);
+        for (uint8_t col = 0; col < MATRIX_COLS; col++) {
+            bool curr_bit = matrix_row & (1<<col);
+            xprintf("%c", curr_bit ? '*' : '.');
+        }
+        print("\n");
+    }
+#endif
+}
+
+uint8_t matrix_key_count(void) {
+    uint8_t count = 0;
+    for (uint8_t row = 0; row < MATRIX_ROWS; row++)
+        count += bitpop32(matrix[row]);
+    return count;
+}
diff --git a/keyboards/bpiphany/unloved_bastard/readme.md b/keyboards/bpiphany/unloved_bastard/readme.md
new file mode 100644 (file)
index 0000000..9909d5a
--- /dev/null
@@ -0,0 +1,15 @@
+# unloved_bastard
+
+![unloved_bastard](imgur.com image replace me!)
+
+A short description of the keyboard/project
+
+Keyboard Maintainer: [Alexander Fougner](https://github.com/fougner)  
+Hardware Supported: CoolerMaster Masterkeys S PBT (Not the Pro versions with backlighting etc)  
+Hardware Availability: Pretty much anywhere
+
+Make example for this keyboard (after setting up your build environment):
+
+    make bpiphany/unloved_bastard: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/bpiphany/unloved_bastard/rules.mk b/keyboards/bpiphany/unloved_bastard/rules.mk
new file mode 100644 (file)
index 0000000..2db321c
--- /dev/null
@@ -0,0 +1,73 @@
+# MCU name
+#MCU = at90usb1286
+MCU = atmega32u2
+
+# 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
+
+
+# Boot Section Size in *bytes*
+#   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 = yes      # 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 = yes      # 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
+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
+
+CUSTOM_MATRIX = yes
+SRC += matrix.c
+
+LAYOUTS = tkl_ansi
diff --git a/keyboards/bpiphany/unloved_bastard/unloved_bastard.c b/keyboards/bpiphany/unloved_bastard/unloved_bastard.c
new file mode 100644 (file)
index 0000000..1975930
--- /dev/null
@@ -0,0 +1,70 @@
+/* Copyright 2018 Alexander Fougner <fougner89 at gmail.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "unloved_bastard.h"
+
+void matrix_init_kb(void) {
+       // put your keyboard start-up code here
+       // runs once when the firmware starts up
+       led_init_ports();
+       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);
+}
+
+// C5 left
+// C6 middle led
+// B7 right led
+void led_init_ports(void) {
+    DDRB |= (1<<7);
+    DDRC |= (1<<5);
+    DDRC |= (1<<6);
+
+    PORTB |= (1<<7);
+    PORTC |= (1<<5);
+    PORTC |= (1<<6);
+}
+
+
+void led_set_kb(uint8_t usb_led) {
+
+    if (usb_led & (1<<USB_LED_CAPS_LOCK))
+        PORTC &= ~(1<<5);
+    else
+        PORTC |=  (1<<5);
+
+    if (usb_led & (1<<USB_LED_NUM_LOCK))
+        PORTB &= ~(1<<7);
+    else
+        PORTB |=  (1<<7);
+
+    if (usb_led & (1<<USB_LED_SCROLL_LOCK))
+        PORTC &= ~(1<<6);
+    else
+        PORTC |=  (1<<6);
+
+    led_set_user(usb_led);
+}
diff --git a/keyboards/bpiphany/unloved_bastard/unloved_bastard.h b/keyboards/bpiphany/unloved_bastard/unloved_bastard.h
new file mode 100644 (file)
index 0000000..9eaf587
--- /dev/null
@@ -0,0 +1,63 @@
+/* Copyright 2017 REPLACE_WITH_YOUR_NAME
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef UNLOVED_BASTARD_H
+#define UNLOVED_BASTARD_H
+
+#include "quantum.h"
+
+#define LAYOUT( \
+  KG6,      KH4, KI4, KI2, KI6, KP5, KL6, KM2, KM4, KO4, KO5, KO6, KO0,   KN5, KN7, KP7, \
+  KG4, KG5, KH5, KI5, KJ5, KJ4, KK4, KK5, KL5, KM5, KF5, KF4, KL4, KO2,   KR4, KC4, KE4, \
+  KG2, KG7, KH7, KI7, KJ7, KJ2, KK2, KK7, KL7, KM7, KF7, KF2, KL2, KO3,   KQ4, KC5, KE5, \
+  KH2, KG3, KH3, KI3, KJ3, KJ6, KK6, KK3, KL3, KM3, KF3, KF6,      KO1,                  \
+  KB2, KH6, KG1, KH1, KI1, KJ1, KJ0, KK0, KK1, KL1, KM1, KF0,      KB3,        KC6,      \
+  KP4, KN2, KN6,                KQ6,                KN0, KN3, KM0, KP1,   KC0, KQ0, KR0  \
+) \
+{ \
+/* Columns and rows need to be swapped in the below definition */ \
+/*          A       B       C       D       E       F       G       H       I       J       K       L       M       N       O       P       Q       R       */ \
+/* 0 */ {   KC_NO,  KC_NO,  KC0,    KC_NO,  KC_NO,  KF0,    KC_NO,  KC_NO,  KC_NO,  KJ0,  KK0,  KC_NO, KM0,  KN0,    KO0,    KC_NO,  KQ0,    KR0     }, \
+/* 1 */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KG1,    KH1,    KI1,    KJ1,    KK1,  KL1,   KM1,  KC_NO,  KO1,    KP1,    KC_NO,  KC_NO   }, \
+/* 2 */ {   KC_NO,  KB2,    KC_NO,  KC_NO,  KC_NO,  KF2,    KG2,    KH2,    KI2,    KJ2,    KK2,  KL2,   KM2,  KN2,    KO2,    KC_NO,  KC_NO,  KC_NO   }, \
+/* 3 */ {   KC_NO,  KB3,    KC_NO,  KC_NO,  KC_NO,  KF3,    KG3,    KH3,    KI3,    KJ3,    KK3,  KL3,   KM3,  KN3,    KO3,    KC_NO,  KC_NO,  KC_NO   }, \
+/* 4 */ {   KC_NO,  KC_NO,  KC4,    KC_NO,  KE4,    KF4,    KG4,    KH4,    KI4,    KJ4,    KK4,  KL4,   KM4,  KC_NO,  KO4,    KP4,    KQ4,    KR4     }, \
+/* 5 */ {   KC_NO,  KC_NO,  KC5,    KC_NO,  KE5,    KF5,    KG5,    KH5,    KI5,    KJ5,    KK5,  KL5,   KM5,  KN5,    KO5,    KP5,    KC_NO,  KC_NO   }, \
+/* 6 */ {   KC_NO,  KC_NO,  KC6,    KC_NO,  KC_NO,  KF6,    KG6,    KH6,    KI6,    KJ6,    KK6,  KL6,   KC_NO,KN6,    KO6,    KC_NO,  KQ6,    KC_NO   }, \
+/* 7 */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KF7,    KG7,    KH7,    KI7,    KJ7,    KK7,  KL7,   KM7,  KN7,    KC_NO,  KP7,    KC_NO,  KC_NO   }  \
+}
+
+#define LAYOUT_tkl_ansi( \
+  KG6,      KH4, KI4, KI2, KI6, KP5, KL6, KM2, KM4, KO4, KO5, KO6, KO0,   KN5, KN7, KP7, \
+  KG4, KG5, KH5, KI5, KJ5, KJ4, KK4, KK5, KL5, KM5, KF5, KF4, KL4, KO2,   KR4, KC4, KE4, \
+  KG2, KG7, KH7, KI7, KJ7, KJ2, KK2, KK7, KL7, KM7, KF7, KF2, KL2, KO3,   KQ4, KC5, KE5, \
+  KH2, KG3, KH3, KI3, KJ3, KJ6, KK6, KK3, KL3, KM3, KF3, KF6,      KO1,                  \
+  KB2,      KG1, KH1, KI1, KJ1, KJ0, KK0, KK1, KL1, KM1, KF0,      KB3,        KC6,      \
+  KP4, KN2, KN6,                KQ6,                KN0, KN3, KM0, KP1,   KC0, KQ0, KR0  \
+) \
+{ \
+/* Columns and rows need to be swapped in the below definition */ \
+/*          A       B       C       D       E       F       G       H       I       J       K       L       M       N       O       P       Q       R       */ \
+/* 0 */ {   KC_NO,  KC_NO,  KC0,    KC_NO,  KC_NO,  KF0,    KC_NO,  KC_NO,  KC_NO,  KJ0,  KK0,  KC_NO, KM0,  KN0,    KO0,    KC_NO,  KQ0,    KR0     }, \
+/* 1 */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KG1,    KH1,    KI1,    KJ1,    KK1,  KL1,   KM1,  KC_NO,  KO1,    KP1,    KC_NO,  KC_NO   }, \
+/* 2 */ {   KC_NO,  KB2,    KC_NO,  KC_NO,  KC_NO,  KF2,    KG2,    KH2,    KI2,    KJ2,    KK2,  KL2,   KM2,  KN2,    KO2,    KC_NO,  KC_NO,  KC_NO   }, \
+/* 3 */ {   KC_NO,  KB3,    KC_NO,  KC_NO,  KC_NO,  KF3,    KG3,    KH3,    KI3,    KJ3,    KK3,  KL3,   KM3,  KN3,    KO3,    KC_NO,  KC_NO,  KC_NO   }, \
+/* 4 */ {   KC_NO,  KC_NO,  KC4,    KC_NO,  KE4,    KF4,    KG4,    KH4,    KI4,    KJ4,    KK4,  KL4,   KM4,  KC_NO,  KO4,    KP4,    KQ4,    KR4     }, \
+/* 5 */ {   KC_NO,  KC_NO,  KC5,    KC_NO,  KE5,    KF5,    KG5,    KH5,    KI5,    KJ5,    KK5,  KL5,   KM5,  KN5,    KO5,    KP5,    KC_NO,  KC_NO   }, \
+/* 6 */ {   KC_NO,  KC_NO,  KC6,    KC_NO,  KC_NO,  KF6,    KG6,    KC_NO,  KI6,    KJ6,    KK6,  KL6,   KC_NO,KN6,    KO6,    KC_NO,  KQ6,    KC_NO   }, \
+/* 7 */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KF7,    KG7,    KH7,    KI7,    KJ7,    KK7,  KL7,   KM7,  KN7,    KC_NO,  KP7,    KC_NO,  KC_NO   }  \
+}
+
+#endif
diff --git a/keyboards/frosty_flake/config.h b/keyboards/frosty_flake/config.h
deleted file mode 100644 (file)
index 2c73f10..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef CONFIG_H
-#define CONFIG_H
-
-#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID       0xFEED
-#define PRODUCT_ID      0x6060
-#define DEVICE_VER      0x0001
-#define MANUFACTURER    Bathroom Epiphanies
-#define PRODUCT         frosty_flake
-#define DESCRIPTION     Frosty Flake controller for the CM Storm Quick Fire Rapid
-
-/*
- * Frosty Flake Rev. 20140521 made by Bathroom Ephiphanies
- * Ported from the Bathroom Epiphanies TMK Firmware:
- * https://github.com/BathroomEpiphanies/epiphanies_tmk_keyboard/tree/master/be_controllers
- *
- */
-
-/* key matrix size */
-#define MATRIX_ROWS 8   // Row0 - Row7 in the schematic
-#define MATRIX_COLS 18  // ColA - ColR in the schematic
-
-/*
- * Keyboard Matrix Assignments
- */
-#define UNUSED_PINS { B0, C4, D3 }
-
-/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
-#define DEBOUNCING_DELAY 5
-
-/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-#define LOCKING_SUPPORT_ENABLE
-/* Locking resynchronize hack */
-#define LOCKING_RESYNC_ENABLE
-
-/*
- * Force NKRO
- *
- * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
- * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
- * makefile for this to work.)
- *
- * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
- * until the next keyboard reset.
- *
- * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
- * fully operational during normal computer usage.
- *
- * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
- * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
- * bootmagic, NKRO mode will always be enabled until it is toggled again during a
- * power-up.
- *
- */
-//#define FORCE_NKRO
-
-/*
- * Magic Key Options
- *
- * Magic keys are hotkey commands that allow control over firmware functions of
- * the keyboard. They are best used in combination with the HID Listen program,
- * found here: https://www.pjrc.com/teensy/hid_listen.html
- *
- * The options below allow the magic key functionality to be changed. This is
- * useful if your keyboard/keypad is missing keys and you want magic key support.
- *
- */
-
-/* key combination for magic key command */
-#define IS_COMMAND() ( \
-    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
-)
-
-/* control how magic key switches layers */
-//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS  true
-//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS  true
-//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
-
-/* override magic key keymap */
-//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
-//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
-//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
-//#define MAGIC_KEY_HELP1          H
-//#define MAGIC_KEY_HELP2          SLASH
-//#define MAGIC_KEY_DEBUG          D
-//#define MAGIC_KEY_DEBUG_MATRIX   X
-//#define MAGIC_KEY_DEBUG_KBD      K
-//#define MAGIC_KEY_DEBUG_MOUSE    M
-//#define MAGIC_KEY_VERSION        V
-//#define MAGIC_KEY_STATUS         S
-//#define MAGIC_KEY_CONSOLE        C
-//#define MAGIC_KEY_LAYER0_ALT1    ESC
-//#define MAGIC_KEY_LAYER0_ALT2    GRAVE
-//#define MAGIC_KEY_LAYER0         0
-//#define MAGIC_KEY_LAYER1         1
-//#define MAGIC_KEY_LAYER2         2
-//#define MAGIC_KEY_LAYER3         3
-//#define MAGIC_KEY_LAYER4         4
-//#define MAGIC_KEY_LAYER5         5
-//#define MAGIC_KEY_LAYER6         6
-//#define MAGIC_KEY_LAYER7         7
-//#define MAGIC_KEY_LAYER8         8
-//#define MAGIC_KEY_LAYER9         9
-//#define MAGIC_KEY_BOOTLOADER     PAUSE
-//#define MAGIC_KEY_LOCK           CAPS
-//#define MAGIC_KEY_EEPROM         E
-//#define MAGIC_KEY_NKRO           N
-//#define MAGIC_KEY_SLEEP_LED      Z
-
-/*
- * Feature disable options
- *  These options are also useful to firmware size reduction.
- */
-
-/* disable debug print */
-//#define NO_DEBUG
-
-/* disable print */
-//#define NO_PRINT
-
-/* disable action features */
-//#define NO_ACTION_LAYER
-//#define NO_ACTION_TAPPING
-//#define NO_ACTION_ONESHOT
-//#define NO_ACTION_MACRO
-//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/frosty_flake/frosty_flake.c b/keyboards/frosty_flake/frosty_flake.c
deleted file mode 100644 (file)
index 1cd4760..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-#include "frosty_flake.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) {
-    DDRB |= (1<<7);
-    DDRC |= (1<<5) | (1<<6);
-
-    print_dec(usb_led);
-
-    if (usb_led & (1<<USB_LED_CAPS_LOCK))
-        PORTC &= ~(1<<5);
-    else
-        PORTC |=  (1<<5);
-
-    if (usb_led & (1<<USB_LED_NUM_LOCK))
-        PORTB &= ~(1<<7);
-    else
-        PORTB |=  (1<<7);
-
-    if (usb_led & (1<<USB_LED_SCROLL_LOCK))
-        PORTC &= ~(1<<6);
-    else
-        PORTC |=  (1<<6);
-
-    led_set_user(usb_led);
-}
-
-__attribute__ ((weak))
-void matrix_init_user(void) {
-}
-
-__attribute__ ((weak))
-void matrix_scan_user(void) {
-}
-
-__attribute__ ((weak))
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-  return true;
-}
-
-__attribute__ ((weak))
-void led_set_user(uint8_t usb_led) {
-}
\ No newline at end of file
diff --git a/keyboards/frosty_flake/frosty_flake.h b/keyboards/frosty_flake/frosty_flake.h
deleted file mode 100644 (file)
index 953172a..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-#ifndef FROSTY_FLAKE_H
-#define FROSTY_FLAKE_H
-
-#include "quantum.h"
-
-// This a shortcut to help you visually see your layout.
-// The following is an example using the Planck MIT layout
-// The first section contains all of the arguements
-// The second converts the arguments into a two-dimensional array
-
-/*
-  Matrix col/row mapping
-
-  ,----.    ,-------------------. ,-------------------. ,-------------------. ,--------------.
-  | J6 |    | I4 | H4 | H2 | H6 | | A7 | E6 | D2 | D4 | | B4 | B7 | B6 | B0 | | C7 | C5 | A5 |
-  `----'    `-------------------' `-------------------' `-------------------' `--------------'
-  ,-------------------------------------------------------------------------. ,--------------. ,-------------------.
-  | J4 | J7 | I7 | H7 | G7 | G4 | F4 | F7 | E7 | D7 | R7 | R4 | E4 |     B2 | | L4 | O4 | Q4 | | K1 | L1 | Q1 | Q0 |
-  |-------------------------------------------------------------------------| |--------------| |-------------------|
-  | J2   | J5 | I5 | H5 | G5 | G2 | F2 | F5 | E5 | D5 | R5 | R2 | E2 |   B3 | | K4 | O7 | Q7 | | K5 | L5 | Q5 | O5 |
-  |-------------------------------------------------------------------------| '--------------' |--------------     |
-  | O5    | J3 | I3 | H3 | G3 | G6 | F6 | F3 | E3 | D3 | R3 | R6 |       B1 |                  | K2 | L2 | Q2 |    |
-  |-------------------------------------------------------------------------|      ,----.      |-------------------|
-  | N2      | J1 | I1 | H1 | G1 | G0 | F0 | F1 | E1 | D1 | R0 |          N3 |      | O6 |      | K3 | L3 | Q3 | O3 |
-  |-------------------------------------------------------------------------| ,--------------. |--------------     |
-  | A4 | P2 | C6 |                  K6                  | C0 | M3 | D0 | A1 | | O0 | K0 | L0 | | L6      | Q6 |    |
-  `-------------------------------------------------------------------------' `--------------' `-------------------'
-*/
-#define KEYMAP( \
-  KJ6,      KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0,   KC7, KC5, KA5,                       \
-  KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2,   KL4, KO4, KQ4,   KK1, KL1, KQ1, KQ0, \
-  KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3,   KK4, KO7, KQ7,   KK5, KL5, KQ5, KO5, \
-  KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6,      KB1,                    KK2, KL2, KQ2,      \
-  KN2, KI6, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0,      KN3,        KO6,        KK3, KL3, KQ3, KO3, \
-  KA4, KP2, KC6,                KK6,                KC0, KM3, KD0, KA1,   KO0, KK0, KL0,   KL6,      KQ6       \
-) \
-{ \
-/* Columns and rows need to be swapped in the below definition */ \
-/*          A       B       C       D       E       F       G       H       I       J       K       L       M       N       O       P       Q       R       */ \
-/* 0 */ {   KC_NO,  KB0,    KC0,    KD0,    KC_NO,  KF0,    KG0,    KC_NO,  KC_NO,  KC_NO,  KK0,    KL0,    KC_NO,  KC_NO,  KO0,    KC_NO,  KQ0,    KR0     }, \
-/* 1 */ {   KA1,    KB1,    KC_NO,  KD1,    KE1,    KF1,    KG1,    KH1,    KI1,    KJ1,    KK1,    KL1,    KC_NO,  KC_NO,  KC_NO,  KC_NO,  KQ1,    KC_NO   }, \
-/* 2 */ {   KC_NO,  KB2,    KC_NO,  KD2,    KE2,    KF2,    KG2,    KH2,    KI2,    KJ2,    KK2,    KL2,    KC_NO,  KN2,    KC_NO,  KP2,    KQ2,    KR2     }, \
-/* 3 */ {   KC_NO,  KB3,    KC_NO,  KD3,    KE3,    KF3,    KG3,    KH3,    KI3,    KJ3,    KK3,    KL3,    KM3,    KN3,    KO3,    KC_NO,  KQ3,    KR3     }, \
-/* 4 */ {   KA4,    KB4,    KC_NO,  KD4,    KE4,    KF4,    KG4,    KH4,    KI4,    KJ4,    KK4,    KL4,    KC_NO,  KC_NO,  KO4,    KC_NO,  KQ4,    KR4     }, \
-/* 5 */ {   KA5,    KC_NO,  KC5,    KD5,    KE5,    KF5,    KG5,    KH5,    KI5,    KJ5,    KK5,    KL5,    KC_NO,  KC_NO,  KO5,    KC_NO,  KQ5,    KR5     }, \
-/* 6 */ {   KC_NO,  KB6,    KC6,    KC_NO,  KE6,    KF6,    KG6,    KH6,    KI6,    KJ6,    KK6,    KL6,    KC_NO,  KC_NO,  KO6,    KC_NO,  KQ6,    KR6     }, \
-/* 7 */ {   KA7,    KB7,    KC7,    KD7,    KE7,    KF7,    KG7,    KH7,    KI7,    KJ7,    KC_NO,  KC_NO,  KC_NO,  KC_NO,  KO7,    KC_NO,  KQ7,    KR7     }  \
-}
-
-/*
-  Matrix col/row mapping (TKL)
-
-  ,----.    ,-------------------. ,-------------------. ,-------------------. ,--------------.
-  | J6 |    | I4 | H4 | H2 | H6 | | A7 | E6 | D2 | D4 | | B4 | B7 | B6 | B0 | | C7 | C5 | A5 |
-  `----'    `-------------------' `-------------------' `-------------------' `--------------'
-  ,-------------------------------------------------------------------------. ,--------------.
-  | J4 | J7 | I7 | H7 | G7 | G4 | F4 | F7 | E7 | D7 | R7 | R4 | E4 |     B2 | | L4 | O4 | Q4 |
-  |-------------------------------------------------------------------------| |--------------|
-  | J2   | J5 | I5 | H5 | G5 | G2 | F2 | F5 | E5 | D5 | R5 | R2 | E2 |   B3 | | K4 | O7 | Q7 |
-  |-------------------------------------------------------------------------| '--------------'
-  | O5    | J3 | I3 | H3 | G3 | G6 | F6 | F3 | E3 | D3 | R3 | R6 |       B1 |
-  |-------------------------------------------------------------------------|      ,----.
-  | N2      | J1 | I1 | H1 | G1 | G0 | F0 | F1 | E1 | D1 | R0 |          N3 |      | O6 |
-  |-------------------------------------------------------------------------| ,--------------.
-  | A4 | P2 | C6 |                  K6                  | C0 | M3 | D0 | A1 | | O0 | K0 | L0 |
-  `-------------------------------------------------------------------------' `--------------'
-*/
-
-#define KEYMAP_TKL( \
-  KJ6,      KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0,   KC7, KC5, KA5, \
-  KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2,   KL4, KO4, KQ4, \
-  KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3,   KK4, KO7, KQ7, \
-  KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6,      KB1,                  \
-  KN2, KI6, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0,      KN3,        KO6,      \
-  KA4, KP2, KC6,                KK6,                KC0, KM3, KD0, KA1,   KO0, KK0, KL0  \
-) \
-{ \
-/* Columns and rows need to be swapped in the below definition */ \
-/*          A       B       C       D       E       F       G       H       I       J       K       L       M       N       O       P       Q       R       */ \
-/* 0 */ {   KC_NO,  KB0,    KC0,    KD0,    KC_NO,  KF0,    KG0,    KC_NO,  KC_NO,  KC_NO,  KK0,    KL0,    KC_NO,  KC_NO,  KO0,    KC_NO,  KC_NO,  KR0     }, \
-/* 1 */ {   KA1,    KB1,    KC_NO,  KD1,    KE1,    KF1,    KG1,    KH1,    KI1,    KJ1,    KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO   }, \
-/* 2 */ {   KC_NO,  KB2,    KC_NO,  KD2,    KE2,    KF2,    KG2,    KH2,    KI2,    KJ2,    KC_NO,  KC_NO,  KC_NO,  KN2,    KC_NO,  KP2,    KC_NO,  KR2     }, \
-/* 3 */ {   KC_NO,  KB3,    KC_NO,  KD3,    KE3,    KF3,    KG3,    KH3,    KI3,    KJ3,    KC_NO,  KC_NO,  KM3,    KN3,    KC_NO,  KC_NO,  KC_NO,  KR3     }, \
-/* 4 */ {   KA4,    KB4,    KC_NO,  KD4,    KE4,    KF4,    KG4,    KH4,    KI4,    KJ4,    KK4,    KL4,    KC_NO,  KC_NO,  KO4,    KC_NO,  KQ4,    KR4     }, \
-/* 5 */ {   KA5,    KC_NO,  KC5,    KD5,    KE5,    KF5,    KG5,    KH5,    KI5,    KJ5,    KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KR5     }, \
-/* 6 */ {   KC_NO,  KB6,    KC6,    KC_NO,  KE6,    KF6,    KG6,    KH6,    KI6,    KJ6,    KK6,    KC_NO,  KC_NO,  KC_NO,  KO6,    KC_NO,  KC_NO,  KR6     }, \
-/* 7 */ {   KA7,    KB7,    KC7,    KD7,    KE7,    KF7,    KG7,    KH7,    KI7,    KJ7,    KC_NO,  KC_NO,  KC_NO,  KC_NO,  KO7,    KC_NO,  KQ7,    KR7     }  \
-}
-
-#define LAYOUT_tkl_ansi( \
-  KJ6,      KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0,   KC7, KC5, KA5, \
-  KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2,   KL4, KO4, KQ4, \
-  KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3,   KK4, KO7, KQ7, \
-  KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6,      KB1,                  \
-  KN2,      KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0,      KN3,        KO6,      \
-  KA4, KP2, KC6,                KK6,                KC0, KM3, KD0, KA1,   KO0, KK0, KL0  \
-) KEYMAP_TKL( \
-  KJ6,      KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0,   KC7, KC5, KA5, \
-  KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2,   KL4, KO4, KQ4, \
-  KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3,   KK4, KO7, KQ7, \
-  KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6,      KB1,                  \
-  KN2, KC_NO, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0,      KN3,        KO6,      \
-  KA4, KP2, KC6,                KK6,                KC0, KM3, KD0, KA1,   KO0, KK0, KL0  \
-)
-
-#endif
diff --git a/keyboards/frosty_flake/keymaps/QFR_JM/config.h b/keyboards/frosty_flake/keymaps/QFR_JM/config.h
deleted file mode 100644 (file)
index b251940..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-
-#define TAPPING_TERM 150 //reduce time required to register a held key
-
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-// place overrides here
-
-#endif
diff --git a/keyboards/frosty_flake/keymaps/QFR_JM/keymap.c b/keyboards/frosty_flake/keymaps/QFR_JM/keymap.c
deleted file mode 100644 (file)
index 8189939..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-#include "frosty_flake.h"
-#include "action_layer.h"
-#ifdef AUDIO_ENABLE
-  #include "audio.h"
-#endif
-#include "eeconfig.h"
-
-enum QFR_layers {
-  _COLEMAK,
-  _QWERTY,
-  _DVORAK,
-  _LOWER,
-  _MOUSE
-};
-
-enum QFR_keycodes {
-  COLEMAK = SAFE_RANGE,
-  QWERTY,
-  DVORAK,
-  LOWER,
-  MOUSE
-};
-
-enum custom_macros {
-  R_PIPE,
-  R_POINT
-};
-
-  const uint16_t PROGMEM fn_actions[] = { //ACTION_LAYER_TAP_TOGGLE requires that number of taps be defined in *config.h* - default set to 5
-      [0] = ACTION_LAYER_TAP_KEY(_LOWER, KC_SPC),    //Hold for momentary Lower layer, Tap for Space, 
-      [1] = ACTION_LAYER_MOMENTARY(_MOUSE)           //Hold for momentary MOUSE
-
-   };
-
-#define SPC_LW FUNC(0)
-#define MSE FUNC(1)
-#define PIPE M(R_PIPE)
-#define POINT M(R_POINT)
-
-// Fillers to make layering more clear
-#define _______ KC_TRNS
-#define XXXXXXX KC_NO
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[_COLEMAK] = KEYMAP_TKL(\
-      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_PSCR,KC_SLCK,KC_PAUS, \
-      KC_GRV,    KC_1,      KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,    KC_0,    KC_MINS, KC_EQL, KC_BSPC,  KC_INS, KC_HOME,KC_PGUP, \
-      KC_TAB,    KC_Q,      KC_W,   KC_F,   KC_P,   KC_G,   KC_J,   KC_L,   KC_U,   KC_Y,    KC_SCLN, KC_LBRC, KC_RBRC,KC_BSLS,  KC_DEL, KC_END, KC_PGDN, \
-      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_ENT ,                           \
-      KC_LSPO,KC_NUBS,KC_Z, KC_X,   KC_C,   KC_V,   KC_B,   KC_K,   KC_M,   KC_COMM, KC_DOT, KC_SLSH,          KC_RSPC,                   KC_UP,          \
-      KC_LCTL,KC_LGUI,      KC_LALT,                SPC_LW,                                  MSE,     KC_RGUI, KC_APP, KC_RCTL,  KC_LEFT,KC_DOWN,KC_RGHT
-      ),
-
-[_QWERTY] = KEYMAP_TKL(\
-       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_PSCR, KC_SLCK, KC_PAUS, \
-       KC_GRV, KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_MINS, KC_EQL,  KC_BSPC,   KC_INS,  KC_HOME, KC_PGUP, \
-       KC_TAB, KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,   KC_LBRC, KC_RBRC, KC_BSLS,   KC_DEL,  KC_END,  KC_PGDN, \
-       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_NUBS,KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,          KC_RSFT,            KC_UP, \
-       KC_LCTL,KC_LGUI,KC_LALT,                SPC_LW,                                 MSE,    KC_RGUI , KC_APP,  KC_RCTL,   KC_LEFT, KC_DOWN, KC_RGHT  
-       ),
-
-[_DVORAK] = KEYMAP_TKL(\
-       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_PSCR, KC_SLCK, KC_PAUS, \
-       KC_GRV, KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_MINS, KC_EQL,  KC_BSPC,   KC_INS,  KC_HOME, KC_PGUP, \
-       KC_TAB, KC_QUOT,KC_COMM,KC_DOT, KC_P,   KC_Y,   KC_F,   KC_G,   KC_C,   KC_R,   KC_L,   KC_LBRC, KC_RBRC, KC_BSLS,   KC_DEL,  KC_END,  KC_PGDN, \
-       KC_BSPC,KC_A,   KC_O,   KC_E,   KC_U,   KC_I,   KC_D,   KC_H,   KC_T,   KC_N,   KC_S,   KC_QUOT,          KC_ENT, \
-       KC_LSFT,KC_NUBS,KC_SCLN,KC_Q,   KC_J,   KC_K,   KC_X,   KC_B,   KC_M,   KC_W,   KC_V,   KC_Z,             KC_RSFT,            KC_UP, \
-       KC_LCTL,KC_LGUI,KC_LALT,                SPC_LW,                                 MSE,    KC_RGUI, KC_APP,  KC_RCTL,   KC_LEFT, KC_DOWN, KC_RGHT  
-       ),
-
-[_LOWER] = KEYMAP_TKL(\
-      RESET,    _______,    _______,   _______, _______,  KC_MPLY,   KC_MSTP,   KC_MPRV,   KC_MNXT,  _______, KC_MUTE, KC_VOLD, KC_VOLU,           QWERTY, COLEMAK,DVORAK, \
-      KC_TILD,  KC_EXLM,    KC_AT,     KC_HASH,  KC_DLR,  KC_PERC,   KC_CIRC,   KC_AMPR,   KC_ASTR,  KC_LBRC, KC_RBRC, KC_UNDS, KC_PLUS, KC_BSPC,  _______,_______,_______, \
-      KC_TAB,   KC_PGUP,    KC_HOME,   KC_UP,    KC_END,  XXXXXXX,   XXXXXXX,   XXXXXXX,   XXXXXXX,  XXXXXXX, XXXXXXX, KC_LCBR, KC_RCBR, KC_PIPE,  _______,_______,_______, \
-      KC_CAPS,  KC_PGDN,    KC_LEFT,   KC_DOWN,  KC_RGHT, XXXXXXX,   XXXXXXX,   XXXXXXX,   XXXXXXX,  XXXXXXX, XXXXXXX, _______,          _______,                           \
-      _______,XXXXXXX,POINT,PIPE,      KC_LCBR,  KC_LBRC, KC_GRV,    KC_PIPE,   KC_RBRC,   KC_RCBR,  _______, _______,                   _______,          _______,         \
-      _______,  _______,    _______,             _______,                       KC_RALT,   _______,  _______, _______,                            _______,_______,_______  \
-      ),
-
-[_MOUSE] = KEYMAP_TKL(\
-      _______,  _______,   _______,   _______,  _______, _______,   _______,   _______,   _______,  _______, _______, _______, _______,            _______,_______,_______, \
-      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_DEL,    _______,_______,_______, \
-      KC_TAB,   KC_WH_U,   KC_WH_L,   KC_MS_U,  KC_WH_R, XXXXXXX,   XXXXXXX,   KC_BTN3,   KC_BTN4,  KC_BTN5, XXXXXXX, KC_LBRC, KC_RBRC, KC_BSLS,   _______,_______,_______, \
-      KC_BSPC,  KC_WH_D,   KC_MS_L,   KC_MS_D,  KC_MS_R, XXXXXXX,   XXXXXXX,   KC_BTN1,   KC_BTN2,  XXXXXXX, XXXXXXX, XXXXXXX,          _______,                            \
-      _______,XXXXXXX,PIPE,POINT,     XXXXXXX,  XXXXXXX, XXXXXXX,   XXXXXXX,   XXXXXXX,   _______,  _______,  _______,                  _______,           _______,         \
-      _______,  _______,   _______,             KC_ACL2,                       MSE,       _______,  _______,  _______,                             _______,_______,_______  \
-      )
-};
-
-// Macros to send R pointer & dplyr pipe
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
-    switch(id) {
-        case R_POINT:
-            if (record->event.pressed) { // pointer
-                SEND_STRING("<- ");
-//                return MACRO(D(LSFT), T(COMM), U(LSFT), T(MINS), END);
-            }
-            break;
-        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;
-}
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-  switch (keycode) {
-    case QWERTY:
-      if (record->event.pressed) {
-        set_single_persistent_default_layer(_QWERTY);
-      }
-      return false;
-      break;
-    case COLEMAK:
-      if (record->event.pressed) {
-        set_single_persistent_default_layer(_COLEMAK);
-      }
-      return false;
-      break;
-    case DVORAK:
-      if (record->event.pressed) {
-        set_single_persistent_default_layer(_DVORAK);
-      }
-      return false;
-      break; 
-  }
-  return true;
-}
\ No newline at end of file
diff --git a/keyboards/frosty_flake/keymaps/QFR_JM/readme.md b/keyboards/frosty_flake/keymaps/QFR_JM/readme.md
deleted file mode 100644 (file)
index f12a0ff..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-
-# TKL keymap for frosty\_flake
-```
-make frosty_flake:QFR_JM
-
-dfu-programmer atmega32u2 erase
-dfu-programmer atmega32u2 flash frosty_flake_QFR_JM.hex
-dfu-programmer atmega32u2 start
-```
-
-##Layers
-```
-  ,----.    ,-------------------. ,-------------------. ,-------------------. ,--------------.
-  |ESC |    | F1 | F2 | F3 | F4 | | F5 | F6 | F7 | F8 | | F9 |F10 |F11 |F12 | |PrSc|ScLk|PsBk|
-  '----'    '-------------------' '-------------------' '-------------------' '--------------'
-  ,-------------------------------------------------------------------------. ,--------------. 
-  |  ` | 1  |  2 |  3 | 4  |  5 |  6 |  7 |  8 |  9 |  0 |  - |  = |  Bspc  | | Ins|Home|PgUp| 
-  |-------------------------------------------------------------------------| |--------------| 
-  | Tab  | Q  |  W | F  | P  | G  | J  | L  |  U |  Y | ;  | [  |  ] |   \  | | Del|End |PgDn| 
-  |-------------------------------------------------------------------------| '--------------'
-  |  Bspc | A  | R  |  S |  T | D  | H  | N  | E  | I  | O  | '  |   Enter  |                 
-  |-------------------------------------------------------------------------|      ,----.     
-  |   LSPO  | Z  | X  |  C | V  |  B |  K |  M |  , |  . |  / |    RSPC     |      | Up |     
-  |-------------------------------------------------------------------------| ,--------------.
-  |Ctrl|LGUI|LAlt|             Space/Lower              |MSE |RGUI|Menu|Ctrl| |Left|Down|Rght|
-  '-------------------------------------------------------------------------' '--------------'
-
-```
-### Base Layer - Colemak
-The base layout is Colemak by default, but this can be changed to QWERTY via the *LOWER* layer. 
-* I've implemented COLEMAK = SAFE\_RANGE when enumerating the custom\_keycodes, but I don't actually know what this does...
-
-* Space cadet is implemented in the shift keys (hold for shift, tap for respective parentheses)
-
-#### Layer Shifting
-* The spacebar is a **TAP_KEY** macro - Hold for momentary *LOWER* layer, Tap for Space.
-* The Right hand ALT key is a **TAP_TOGGLE** macro for the *MOUSE* layer (RAlt is accessible through LOWER, if you want...)
-       
-### LOWER
-```
-  ,----.    ,-------------------. ,-------------------. ,-------------------. ,--------------.
-  |ESC |    | F1 | F2 | F3 | F4 | |>/|||Stop| << | >> | | F9 |MUTE|Vol-|Vol+| |QWTY|CLMK|PsBk|
-  '----'    '-------------------' '-------------------' '-------------------' '--------------'
-  ,-------------------------------------------------------------------------. ,--------------. 
-  |  ~ | !  |  @ |  # |  $ |  % |  ^ |  & |  * |  ( |  ) |  _ |  + |  Bspc  | | Ins|Home|PgUp| 
-  |-------------------------------------------------------------------------| |--------------| 
-  | Tab  |PgUp|Home| Up | End|    |    |    |    |    |    | {  |  } |   |  | | Del|End |PgDn| 
-  |-------------------------------------------------------------------------| '--------------'
-  | Bckspc|PgDn|Left|Down|Rght|    |    |    |    |    |    | '  |   Enter  |                 
-  |-------------------------------------------------------------------------|      ,----.     
-  |   LSPO  | <- |%>% |  { | [  |  ` | |  |  ] |  } |  . |  / |    RSPC     |      | Up |     
-  |-------------------------------------------------------------------------| ,--------------.
-  |Ctrl|LGUI|LAlt|                                                 |RAlt|RGUI|Menu|Ctrl| |Left|Down|Rght|
-  '-------------------------------------------------------------------------' '--------------'
-```
-The *LOWER* layer contains a navigation cluster on the left hand. This layer is momentary when the spacebar or LOWER (RAlt) key is held and toggled on/off when the LOWER key is tapped.
-       
-* The Navigation cluster is offset to the right compared to the traditional **WASD** nav cluster. With this implementation, you don't need to move your hand from the home position when navigating. Page Up & Down keys are found on the far left of the cluster.
-
-* All unused (blank on the above keymap) keys are locked out using the XXXXXXX filler (KC\_NO), all modifiers (edge |\_| keys \[except 0, \. & Fn\] on the above keymap) and the ZXCV cluster are transparent (\_\_\_\_\_\_\_) to the Base layer.
-
-* The base layer can be switched to QWERTY or COLEMAK by pressing the Pause Break or Scroll Lock keys respectively
-
-### MOUSE
-```
-  ,----.    ,-------------------. ,-------------------. ,-------------------. ,--------------.
-  |ESC |    | F1 | F2 | F3 | F4 | | F5 | F6 | F7 | F8 | | F9 |F10 |F11 |F12 | |PrSc|ScLk|PsBk|
-  '----'    '-------------------' '-------------------' '-------------------' '--------------'
-  ,-------------------------------------------------------------------------. ,--------------. 
-  |  ` | 1  |  2 |  3 | 4  |  5 |  6 |  7 |  8 |  9 |  0 |  - |  = |   Del  | | Ins|Home|PgUp| 
-  |-------------------------------------------------------------------------| |--------------| 
-  | Tab  | WhU| WhL| MsU| WhR|    |    | M3 | M4 | M5 |    | [  |  ] |   \  | | Del|End |PgDn| 
-  |-------------------------------------------------------------------------| '--------------'
-  | BSPC  | WhD| MsL| MsD| MsR|    |    |LClk |RClk |    |    | '  |   Enter  |                 
-  |-------------------------------------------------------------------------|      ,----.     
-  |   LSPO  | Z  | X  |  C | V  |    |    |    |  , |  . |  / |    RSPC     |      | Up |     
-  |-------------------------------------------------------------------------| ,--------------.
-  |Ctrl|LGUI|LAlt|               Accel ++               |MSE |RGUI|Menu|Ctrl| |Left|Down|Rght|
-  '-------------------------------------------------------------------------' '--------------'
-```
-The *MOUSE* layer contains keys replicating functions found on the mouse. 
-
-* The navigation cluster (Up, Down, Left, Right) is a replication of the Navigation cluster on the *LOWER* layer. The scroll keys are analagous to the Page Up & Downkeys.
-* The primary click (right & left) buttons are on the right home row (index & middle fingers)
-* Secondary click buttons are above the standard keys (M3/Wheel click, M4, M5) but I do not use this function.
-
diff --git a/keyboards/frosty_flake/keymaps/QFR_JM/rules.mk b/keyboards/frosty_flake/keymaps/QFR_JM/rules.mk
deleted file mode 100644 (file)
index 0ae0b96..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-# 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 = 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
-NKRO_ENABLE = no            # 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 = no        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
-SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
diff --git a/keyboards/frosty_flake/keymaps/default/config.h b/keyboards/frosty_flake/keymaps/default/config.h
deleted file mode 100644 (file)
index 8893d12..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-// place overrides here
-
-#endif
diff --git a/keyboards/frosty_flake/keymaps/default/keymap.c b/keyboards/frosty_flake/keymaps/default/keymap.c
deleted file mode 100644 (file)
index 4dc7ed6..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#include "frosty_flake.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = KEYMAP(\
-       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_PSCR,KC_SLCK,KC_PAUS,                        \
-       KC_GRV,   KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,KC_MINS, KC_EQL,KC_BSPC,   KC_INS,KC_HOME,KC_PGUP,  KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \
-       KC_TAB,   KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,KC_LBRC,KC_RBRC,KC_BSLS,   KC_DEL, KC_END,KC_PGDN,    KC_P7,  KC_P8,  KC_P9,KC_PPLS, \
-      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_P4,  KC_P5,  KC_P6,      \
-      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_UP,            KC_P1,  KC_P2,  KC_P3,KC_PENT, \
-      KC_LCTL,KC_LGUI,KC_LALT,                 KC_SPC,                                KC_RALT,KC_RGUI, KC_APP,KC_RCTL,  KC_LEFT,KC_DOWN,KC_RGHT,    KC_P0,KC_PDOT)
-};
\ No newline at end of file
diff --git a/keyboards/frosty_flake/keymaps/default/readme.md b/keyboards/frosty_flake/keymaps/default/readme.md
deleted file mode 100644 (file)
index 11bf482..0000000
+++ /dev/null
@@ -1 +0,0 @@
-# The default keymap for frosty_flake
diff --git a/keyboards/frosty_flake/keymaps/default/rules.mk b/keyboards/frosty_flake/keymaps/default/rules.mk
deleted file mode 100644 (file)
index 9d3df59..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-# 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 = yes       # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes       # 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 = no        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
-SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
-
-ifndef QUANTUM_DIR
-       include ../../../../Makefile
-endif
diff --git a/keyboards/frosty_flake/keymaps/nikchi/config.h b/keyboards/frosty_flake/keymaps/nikchi/config.h
deleted file mode 100644 (file)
index 3f78526..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-#define TAPPING_TERM 200
-#define LEADER_TIMEOUT 800
-
-#define DISABLE_SPACE_CADET_ROLLOVER
-
-#define UNICODE_TYPE_DELAY 0
-
-#define LSPO_KEY KC_9
-#define RSPC_KEY KC_0
-
-#define MOUSEKEY_INTERVAL       20
-#define MOUSEKEY_DELAY          0
-#define MOUSEKEY_TIME_TO_MAX    60
-#define MOUSEKEY_MAX_SPEED      7
-#define MOUSEKEY_WHEEL_DELAY 0
-// place overrides here
-
-#endif
diff --git a/keyboards/frosty_flake/keymaps/nikchi/keymap.c b/keyboards/frosty_flake/keymaps/nikchi/keymap.c
deleted file mode 100644 (file)
index bf7c5e5..0000000
+++ /dev/null
@@ -1,228 +0,0 @@
-#include "frosty_flake.h"
-#include "action_layer.h"
-#include "eeconfig.h"
-#include "process_unicode.h"
-#include "process_unicodemap.h"
-#include "quantum.h"
-
-#define _______ KC_TRNS
-#define MAXEMOJITAPS 80
-
-
-//declarations for tap dancing emojis
-void register_hex32(uint32_t hex);
-void cycleEmojis(qk_tap_dance_state_t *state, void *user_data);
-void cycleAnimals(qk_tap_dance_state_t *state, void *user_data);
-void cycleFoods(qk_tap_dance_state_t *state, void *user_data);
-void cycleEtc(qk_tap_dance_state_t *state, void *user_data);
-void cycleAll(qk_tap_dance_state_t *state, void *user_data);
-
-void tap(uint16_t keycode){
-    register_code(keycode);
-    unregister_code(keycode);
-};
-
-//Tap Dance Declarations
-enum taps{
-  TD_CTCPS = 0,
-  EMOJIS,
-  ANIMAL,
-  HAND,
-  MEMES,
-  COPA,
-  ALLS
-};
-
-enum unicode_name { 
-  EMOTIS = 1,//80, //1F60x - 1F64x
-  ANIMALS, //64, //1F40x - 1F43x
-  SYMBOLS,// = 45, //1F300 - 1F32C
-  FOODS,// = 87 , //1F32D - 
-  ETC,// = 192, //1F44x -1F4Fx
-  VEHICLES,// = 83, //1F68x - 1F6Dx
-  SUPPLEMENT,// = 32, //1F91x-1F92x
-  ALCHEMY,// = 116 //1F70x - 1F773
-  
-};
-
-enum my_macros {
-  NEWDESK = 0,
-  LEFTDESK,
-  RIGHTDESK,
-  CLOSEDESK
-};
-
-
-// Tap Dance Definitions
-qk_tap_dance_action_t tap_dance_actions[] = {
-  // Tap once for CTRL, twice for Caps Lock
-  [TD_CTCPS]  = ACTION_TAP_DANCE_DOUBLE(KC_LCTL, KC_CAPS),
-  [COPA]  = ACTION_TAP_DANCE_DOUBLE(LCTL(KC_C), LCTL(KC_V)),
-  [EMOJIS] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(cycleEmojis, NULL, NULL, 800),
-  [ANIMAL] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(cycleAnimals, NULL, NULL, 800),
-  //[SYMBOLS] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(cycleSymbols, NULL, NULL, 800),
-  [FOODS] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(cycleFoods, NULL, NULL, 800),
-  [ETC] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(cycleEtc, NULL, NULL, 800),
-  //[VEHICLES] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(cycleVehicles, NULL, NULL, 800),
-  //[SUPPLEMENT] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(cycleSupplement, NULL, NULL, 800),
-  [ALLS] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(cycleAll, NULL, NULL, 800)
-// Other declarations would go here, separated by commas, if you have them
-};
-
-// macros
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
-  switch(id) {
-    case NEWDESK: // this would trigger when you hit a key mapped as M(0)
-      if (record->event.pressed) {
-        return MACRO( I(1), D(LGUI), D(LCTL), D(D), U(LGUI), U(LCTL), U(D), END  ); // NEW DESKTOP
-      }
-      break;
-    case LEFTDESK: // this would trigger when you hit a key mapped as M(0)
-      if (record->event.pressed) {
-        return MACRO( I(1), D(LGUI), D(LCTL), D(LEFT), U(LGUI), U(LCTL), U(LEFT), END  ); // LEFT DESKTOP
-      }
-      break;
-    case RIGHTDESK: // this would trigger when you hit a key mapped as M(0)
-      if (record->event.pressed) {
-        return MACRO( I(1), D(LGUI), D(LCTL), D(RGHT), U(LGUI), U(LCTL), U(RGHT), END  ); // RIGHT DESKTOP
-      }
-      break;
-    case CLOSEDESK: // this would trigger when you hit a key mapped as M(0)
-      if (record->event.pressed) {
-        return MACRO( I(1), D(LGUI), D(LCTL), D(F4), U(LGUI), U(LCTL), U(F4), END  ); // CLOSE DESKTOP
-      }
-      break;
-  }
-  return MACRO_NONE;
-};
-
-
-// emojis in unicode
-const uint32_t PROGMEM unicode_map[] = {
-  [EMOTIS]     = 0x1F600,
-  [ANIMALS]    = 0x1F400,
-  [SYMBOLS]    = 0x1F300,
-  [FOODS]      = 0x1F32D, 
-  [ETC]        = 0x1F440,
-  [VEHICLES]   = 0x1F680,
-  [SUPPLEMENT] = 0x1F910,
-  [ALCHEMY]    = 0x1F700
- };
-// Layouts
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = KEYMAP(\
-      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_PSCR,KC_SLCK,KC_PAUS,                        \
-      KC_GRV,   KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,KC_MINS, KC_EQL,KC_BSPC,   KC_INS,KC_HOME,KC_PGUP,  KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \
-      KC_TAB,   KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,KC_LBRC,KC_RBRC,KC_BSLS,   KC_DEL, KC_END,KC_PGDN,    KC_P7,  KC_P8,  KC_P9,KC_PPLS, \
-      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_P4,  KC_P5,  KC_P6,      \
-      KC_LSPO,KC_NUBS,   KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,KC_COMM, KC_DOT,KC_SLSH,        KC_RSPC,            KC_UP,            KC_P1,  KC_P2,  KC_P3,KC_PENT, \
- TD(TD_CTCPS),KC_LGUI,KC_LALT,                 KC_SPC,                                KC_LEAD,KC_RGUI, KC_APP,MO(1)  ,  KC_LEFT,KC_DOWN,KC_RGHT,    KC_P0,KC_PDOT),
-[1] = KEYMAP(\
-    TD(ALLS),  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_PSCR,KC_SLCK,KC_PAUS,                        \
-      KC_GRV, TD(EMOJIS),TD(ANIMAL),TD(ETC),TD(FOODS),   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,KC_MINS, KC_EQL,KC_BSPC,   KC_MPRV,KC_MPLY,KC_MNXT,  KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \
-      KC_TAB,   KC_Q,   M(0),   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,   KC_P, KC_UP  ,KC_RBRC,KC_BSLS,   KC_MUTE,KC_VOLD,KC_VOLU,    KC_P7,  KC_P8,  KC_P9,KC_PPLS, \
-      KC_LCTL,   M(1),   M(3),   M(2),   KC_F,   KC_G,   KC_H,   KC_J,   KC_K,   KC_L,KC_LEFT,KC_RGHT,         KC_ENT,                              KC_P4,  KC_P5,  KC_P6,      \
-      KC_LSFT,KC_NUBS,   KC_Z,   KC_X,   KC_C, KC_V,   KC_B,   KC_N,    KC_M,KC_COMM, KC_DOT,KC_DOWN,        KC_RSFT,          KC_MS_U,            KC_P1,  KC_P2,  KC_P3,KC_PENT, \
-      KC_BTN1,KC_BTN3,KC_BTN2,                 KC_SPC,                                KC_RALT,KC_RGUI, TG(2),_______  ,  KC_MS_L,KC_MS_D,KC_MS_R,    KC_P0,KC_PDOT),
-[2] = KEYMAP(\
-      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_PSCR,KC_SLCK,KC_PAUS,                        \
-      KC_GRV,  KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,KC_MINS, KC_EQL,KC_BSPC,   KC_MPRV,KC_MPLY,KC_MNXT,  KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \
-      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_MUTE,KC_VOLD,KC_VOLU,    KC_P7,  KC_P8,  KC_P9,KC_PPLS, \
-      KC_LCTL,   KC_D,   KC_S,   KC_D,   KC_F,   KC_G,   KC_H,   KC_J,   KC_K,   KC_L,KC_SCLN,KC_QUOT,         KC_ENT,                              KC_P4,  KC_P5,  KC_P6,      \
-      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_MS_U,            KC_P1,  KC_P2,  KC_P3,KC_PENT, \
-      KC_BTN1,KC_BTN3,KC_BTN2,                 KC_SPC,                                KC_RALT,KC_RGUI, TG(2) , KC_NO ,  KC_MS_L,KC_MS_D,KC_MS_R,    KC_P0,KC_PDOT),
-};
-
-LEADER_EXTERNS();
-
-void matrix_scan_user(void) {
-  LEADER_DICTIONARY() {
-    leading = false;
-    leader_end();
-
-    SEQ_TWO_KEYS(KC_A, KC_A) { // select all and copy
-      register_code(KC_LCTL);
-      tap(KC_A);
-      tap(KC_C);
-      unregister_code(KC_LCTL);
-    }
-  }
-}
-
-void matrix_init_user(void) {
-  _delay_ms(500);
-  set_unicode_input_mode(UC_WINC);
-};
-
-void cycleAll(qk_tap_dance_state_t *state, void *user_data) {
-  if(state->count == 1) {
-    unicode_input_start();
-    register_hex32(pgm_read_dword(&unicode_map[EMOTIS]));
-    unicode_input_finish();
-  }
-  else if(state->count <= 1642) {
-    tap(KC_BSPC);
-    unicode_input_start();
-    register_hex32(pgm_read_dword(&unicode_map[1])+state->count);
-    unicode_input_finish();
-  }
-};
-
-
-void cycleEmojis(qk_tap_dance_state_t *state, void *user_data) {
-  if(state->count == 1) {
-    unicode_input_start();
-    register_hex32(pgm_read_dword(&unicode_map[EMOTIS]));
-    unicode_input_finish();
-  }
-  else if(state->count <= 80) {
-    tap(KC_BSPC);
-    unicode_input_start();
-    register_hex32(pgm_read_dword(&unicode_map[EMOTIS])+state->count);
-    unicode_input_finish();
-  }
-};
-
-void cycleAnimals(qk_tap_dance_state_t *state, void *user_data) { 
-  if(state->count == 1) {
-    unicode_input_start();
-    register_hex32(pgm_read_dword(&unicode_map[ANIMALS]));
-    unicode_input_finish();
-  }
-  else if(state->count <= MAXEMOJITAPS) {
-    tap(KC_BSPC);
-    unicode_input_start();
-    register_hex32(pgm_read_dword(&unicode_map[ANIMALS])+state->count);
-    unicode_input_finish();
-  }
-};
-
-void cycleFoods(qk_tap_dance_state_t *state, void *user_data) {
-  if(state->count == 1) {
-    unicode_input_start();
-    register_hex32(pgm_read_dword(&unicode_map[FOODS]));
-    unicode_input_finish();
-  }
-  else if(state->count <= 87) {
-    tap(KC_BSPC);
-    unicode_input_start();
-    register_hex32(pgm_read_dword(&unicode_map[FOODS])+state->count);
-    unicode_input_finish();
-  }
-};
-
-
-void cycleEtc(qk_tap_dance_state_t *state, void *user_data) {
-  if(state->count == 1) {
-    unicode_input_start();
-    register_hex32(pgm_read_dword(&unicode_map[ETC]));
-    unicode_input_finish();
-  }
-  else if(state->count <= MAXEMOJITAPS) {
-    tap(KC_BSPC);
-    unicode_input_start();
-    register_hex32(pgm_read_dword(&unicode_map[ETC])+state->count);
-    unicode_input_finish();
-  }
-};
-
diff --git a/keyboards/frosty_flake/keymaps/nikchi/readme.md b/keyboards/frosty_flake/keymaps/nikchi/readme.md
deleted file mode 100644 (file)
index 0b01f9d..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-# The Nikchi's keymap for frosty_flake
-
-### FEATURING
--SPACE CADET 
--Caps Lock is now LCTRL
--LCTRL is Tap(LCTRL, Caps Lock)
-
-### LEADER KEY - RALT
-COMBOS
--a,a => Select All, Copy
-
-
-
-### FN REBINDS for Windows
-```
-   [W]                 [New Desktop]
-[A][S][D]   [Left Desk][Delete Desk][Right Desk]
-
-[Ins][Hom][PUp]     [RW][PP][FF]
-[Del][End][PDn]     [MU][VD][VU]
-
-Arrows are Mouskeys, left three mods are clicks
-
-```
\ No newline at end of file
diff --git a/keyboards/frosty_flake/keymaps/nikchi/rules.mk b/keyboards/frosty_flake/keymaps/nikchi/rules.mk
deleted file mode 100644 (file)
index b21eb64..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-# 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 = yes       # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes       # Audio control and System control(+450)
-CONSOLE_ENABLE = no         # Console for debug(+400)
-COMMAND_ENABLE = no         # 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
-UNICODEMAP_ENABLE = yes                # unicodemap
-BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
-RGBLIGHT_ENABLE = no        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
-SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
-TAP_DANCE_ENABLE = yes
-LEADER_ENABLE = yes
-
-ifndef QUANTUM_DIR
-       include ../../../../Makefile
-endif
diff --git a/keyboards/frosty_flake/keymaps/nikchi/variableTapDance.md b/keyboards/frosty_flake/keymaps/nikchi/variableTapDance.md
deleted file mode 100644 (file)
index b2e5041..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-# Tap Dancing to different beats.
-Tap Dance is constrained normally by `TAPPING_TERM` defined in your keyboard's config.h This proves to be challenging to work with when sometimes you just need more time to tap out your dance, or even a different "beat".
-
-
-
-- `ACTION_TAP_DANCE_FN_ADVANCED_TIME(user_fn_on_each_tap, user_fn_on_dance_finished, user_fn_on_dance_reset, tap_specific_tapping_term)` : This works the same as `ACTION_TAP_DANCE_FN_ADVANCED` just with the extra `tap_specific_tapping_term` arguement at the end. This way you can set a specific tap dance to have a longer or shorter tap in between your taps, giving you more, or less, time in between each tap.   
-
-
-`tap_specific_tapping_term` should be the same type and range of values that one would put into the `TAPPING_TERM` definition in the config.h file.
diff --git a/keyboards/frosty_flake/keymaps/tkl/config.h b/keyboards/frosty_flake/keymaps/tkl/config.h
deleted file mode 100644 (file)
index 8893d12..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-// place overrides here
-
-#endif
diff --git a/keyboards/frosty_flake/keymaps/tkl/keymap.c b/keyboards/frosty_flake/keymaps/tkl/keymap.c
deleted file mode 100644 (file)
index 99dc956..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#include "frosty_flake.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = KEYMAP_TKL(\
-                 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_PSCR, KC_SLCK, KC_PAUS, \
-                 KC_GRV, KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_MINS, KC_EQL,  KC_BSPC,   KC_INS,  KC_HOME, KC_PGUP, \
-                 KC_TAB, KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,   KC_LBRC, KC_RBRC, KC_BSLS,   KC_DEL,  KC_END,  KC_PGDN, \
-                 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_NUBS,KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,          KC_RSFT,            KC_UP, \
-                 KC_LCTL,KC_LGUI,KC_LALT,                KC_SPC,                                 KC_RALT,KC_RGUI, KC_APP,  KC_RCTL,   KC_LEFT, KC_DOWN, KC_RGHT  )
-};
diff --git a/keyboards/frosty_flake/keymaps/tkl/readme.md b/keyboards/frosty_flake/keymaps/tkl/readme.md
deleted file mode 100644 (file)
index a076a65..0000000
+++ /dev/null
@@ -1 +0,0 @@
-# TKL keymap for frosty_flake
diff --git a/keyboards/frosty_flake/keymaps/tkl/rules.mk b/keyboards/frosty_flake/keymaps/tkl/rules.mk
deleted file mode 100644 (file)
index f29756f..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-# 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 = yes       # Audio control and System control(+450)
-CONSOLE_ENABLE = yes        # Console for debug(+400)
-COMMAND_ENABLE = yes        # Commands for debug and configuration
-NKRO_ENABLE = no            # 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 = no        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
-SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
diff --git a/keyboards/frosty_flake/matrix.c b/keyboards/frosty_flake/matrix.c
deleted file mode 100644 (file)
index cde7f63..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
-  Copyright 2017 Gabriel Young <gabeplaysdrums@live.com>
-
-  This program is free software: you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation, either version 2 of the License, or
-  (at your option) any later version.
-
-  This program is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  You should have received a copy of the GNU General Public License
-  along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <stdint.h>
-#include <stdbool.h>
-#include <avr/io.h>
-#include <util/delay.h>
-#include "print.h"
-#include "debug.h"
-#include "util.h"
-#include "matrix.h"
-
-#ifndef DEBOUNCING_DELAY
-#   define DEBOUNCING_DELAY 5
-#endif
-static uint8_t debouncing = DEBOUNCING_DELAY;
-
-static matrix_row_t matrix[MATRIX_ROWS];
-static matrix_row_t matrix_debouncing[MATRIX_ROWS];
-
-static matrix_row_t scan_col(void) {
-    return (
-        (PINC&(1<<7) ? 0 : ((matrix_row_t)1<<0)) |
-        (PINB&(1<<5) ? 0 : ((matrix_row_t)1<<1)) |
-        (PINB&(1<<4) ? 0 : ((matrix_row_t)1<<2)) |
-        (PINB&(1<<6) ? 0 : ((matrix_row_t)1<<3)) |
-        (PINB&(1<<1) ? 0 : ((matrix_row_t)1<<4)) |
-        (PINB&(1<<2) ? 0 : ((matrix_row_t)1<<5)) |
-        (PINB&(1<<3) ? 0 : ((matrix_row_t)1<<6)) |
-        (PINB&(1<<0) ? 0 : ((matrix_row_t)1<<7))
-    );
-}
-
-static void select_col(uint8_t col) {
-    switch (col) {
-        case  0: PORTD = (PORTD & ~0b01111011) | 0b00011011; break;
-        case  1: PORTD = (PORTD & ~0b01111011) | 0b01000011; break;
-        case  2: PORTD = (PORTD & ~0b01111011) | 0b01101010; break;
-        case  3: PORTD = (PORTD & ~0b01111011) | 0b01111001; break;
-        case  4: PORTD = (PORTD & ~0b01111011) | 0b01100010; break;
-        case  5: PORTD = (PORTD & ~0b01111011) | 0b01110001; break;
-        case  6: PORTD = (PORTD & ~0b01111011) | 0b01100001; break;
-        case  7: PORTD = (PORTD & ~0b01111011) | 0b01110000; break;
-        case  8: PORTD = (PORTD & ~0b01111011) | 0b01100000; break;
-        case  9: PORTD = (PORTD & ~0b01111011) | 0b01101000; break;
-        case 10: PORTD = (PORTD & ~0b01111011) | 0b00101011; break;
-        case 11: PORTD = (PORTD & ~0b01111011) | 0b00110011; break;
-        case 12: PORTD = (PORTD & ~0b01111011) | 0b00100011; break;
-        case 13: PORTD = (PORTD & ~0b01111011) | 0b01111000; break;
-        case 14: PORTD = (PORTD & ~0b01111011) | 0b00010011; break;
-        case 15: PORTD = (PORTD & ~0b01111011) | 0b01101001; break;
-        case 16: PORTD = (PORTD & ~0b01111011) | 0b00001011; break;
-        case 17: PORTD = (PORTD & ~0b01111011) | 0b00111011; break;
-    }
-}
-
-void matrix_init(void) {
-    /* Row output pins */
-    DDRD  |=  0b01111011;
-    /* Column input pins */
-    DDRC  &= ~0b10000000;
-    DDRB  &= ~0b01111111;
-    PORTC |=  0b10000000;
-    PORTB |=  0b01111111;
-
-    for (uint8_t i=0; i < MATRIX_ROWS; i++)
-        matrix[i] = matrix_debouncing[i] = 0;
-
-    matrix_init_quantum();
-}
-
-uint8_t matrix_scan(void) {
-    for (uint8_t col = 0; col < MATRIX_COLS; col++) {
-        select_col(col);
-        _delay_us(3);
-        matrix_row_t col_scan = scan_col();
-        for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
-            bool prev_bit = matrix_debouncing[row] & ((matrix_row_t)1<<col);
-            bool curr_bit = col_scan & (1<<row);
-            if (prev_bit != curr_bit) {
-                matrix_debouncing[row] ^= ((matrix_row_t)1<<col);
-                debouncing = DEBOUNCING_DELAY;
-            }
-        }
-    }
-
-    if (debouncing) {
-        if (--debouncing)
-            _delay_ms(1);
-        else
-            for (uint8_t i = 0; i < MATRIX_ROWS; i++)
-                matrix[i] = matrix_debouncing[i];
-    }
-
-    matrix_scan_quantum();
-    return 1;
-}
-
-inline matrix_row_t matrix_get_row(uint8_t row) {
-    return matrix[row];
-}
-
-void matrix_print(void) {
-#ifndef NO_PRINT
-    print("\nr\\c ABCDEFGHIJKLMNOPQR\n");
-    for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
-        matrix_row_t matrix_row = matrix_get_row(row);
-        xprintf("%02X: ", row);
-        for (uint8_t col = 0; col < MATRIX_COLS; col++) {
-            bool curr_bit = matrix_row & (1<<col);
-            xprintf("%c", curr_bit ? '*' : '.');
-        }
-        print("\n");
-    }
-#endif
-}
-
-uint8_t matrix_key_count(void) {
-    uint8_t count = 0;
-    for (uint8_t row = 0; row < MATRIX_ROWS; row++)
-        count += bitpop32(matrix[row]);
-    return count;
-}
diff --git a/keyboards/frosty_flake/readme.md b/keyboards/frosty_flake/readme.md
deleted file mode 100644 (file)
index 822377a..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-# Frosty Flake Controller
-
-This is the firmware for Rev. 20140521 of the Frosty Flake controller
-by [Bathroom Epiphanies](http://bathroomepiphanies.com/controllers/),
-a replacement controller for the [Cooler Master Quick Fire
-Rapid](http://www.coolermaster.com/peripheral/keyboards/quickfirerapid/).
-
-The code was adapted from the [BathroomEpiphanies TMK
-Firmware](https://github.com/BathroomEpiphanies/epiphanies_tmk_keyboard/tree/master/be_controllers),
-but has been cleaned up to match the
-[schematic](https://deskthority.net/wiki/File:Frosty_Flake_Schematics.pdf)
-and gone through some minor refactoring for QMK.
-
-## 104 and 87 layout support
-
-Support for both 104 key and 87 key layouts is provided. See the
-keymaps `default` (104) and `tkl` (87) for example layouts.
-
-Keyboard Maintainer: QMK Community  
-Hardware Supported: Frosty Flake  
-Hardware Availability: https://1upkeyboards.com/qfr-frosty-flake-controller.html  
-
-Make example for this keyboard (after setting up your build environment):
-
-104 key default layout:
-
-```
-make frosty_flake:default
-```
-
-To directly flash the frosty_flake after compiling use
-
-```
-make frosty_flake:default:dfu
-```
-
-87 key tkl layout:
-
-```
-make frosty_flake:tkl:dfu
-```
-
-See [build environment
-setup](https://docs.qmk.fm/build_environment_setup.html) then the
-[make instructions](https://docs.qmk.fm/make_instructions.html) for
-more information.
diff --git a/keyboards/frosty_flake/rules.mk b/keyboards/frosty_flake/rules.mk
deleted file mode 100644 (file)
index 94619e0..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-# MCU name
-#MCU = at90usb1287
-MCU = atmega32u2
-
-# 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
-
-
-# Boot Section Size in *bytes*
-#   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 = no        # Console for debug(+400)
-COMMAND_ENABLE = no        # 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
-MIDI_ENABLE = no            # MIDI controls
-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
-
-CUSTOM_MATRIX = yes
-SRC += matrix.c
-
-LAYOUTS = tkl_ansi
diff --git a/keyboards/kitten_paw/config.h b/keyboards/kitten_paw/config.h
deleted file mode 100644 (file)
index d708973..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef CONFIG_H
-#define CONFIG_H
-
-#include "config_common.h"
-
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID       0xFEED
-#define PRODUCT_ID      0x6050
-#define DEVICE_VER      0x0104
-#define MANUFACTURER    Costar
-#define PRODUCT         Majestouch
-
-/* key matrix size */
-#define MATRIX_ROWS 8
-#define MATRIX_COLS 18
-
-/*
- * Keyboard Matrix Assignments
- *
- * Change this to how you wired your keyboard
- * COLS: AVR pins used for columns, left to right
- * ROWS: AVR pins used for rows, top to bottom
- * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
- *                  ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
- *
-*/
-//#define MATRIX_ROW_PINS { D0, D5 }
-//#define MATRIX_COL_PINS { F1, F0, B0 }
-//#define UNUSED_PINS
-
-/* COL2ROW or ROW2COL */
-#define DIODE_DIRECTION COL2ROW
-// #define BACKLIGHT_PIN B7
-// #define BACKLIGHT_BREATHING
-// #define BACKLIGHT_LEVELS 3
-
-
-/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
-#define DEBOUNCING_DELAY 5
-
-/* define if matrix has ghost (lacks anti-ghosting diodes) */
-//#define MATRIX_HAS_GHOST
-
-/* number of backlight levels */
-
-/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-#define LOCKING_SUPPORT_ENABLE
-/* Locking resynchronize hack */
-#define LOCKING_RESYNC_ENABLE
-
-/*
- * Force NKRO
- *
- * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
- * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
- * makefile for this to work.)
- *
- * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
- * until the next keyboard reset.
- *
- * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
- * fully operational during normal computer usage.
- *
- * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
- * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
- * bootmagic, NKRO mode will always be enabled until it is toggled again during a
- * power-up.
- *
- */
-//#define FORCE_NKRO
-
-/*
- * Magic Key Options
- *
- * Magic keys are hotkey commands that allow control over firmware functions of
- * the keyboard. They are best used in combination with the HID Listen program,
- * found here: https://www.pjrc.com/teensy/hid_listen.html
- *
- * The options below allow the magic key functionality to be changed. This is
- * useful if your keyboard/keypad is missing keys and you want magic key support.
- *
- */
-
-/* key combination for magic key command */
-#define IS_COMMAND() ( \
-    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
-)
-
-/* control how magic key switches layers */
-//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS  true
-//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS  true
-//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
-
-/* override magic key keymap */
-//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
-//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
-//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
-//#define MAGIC_KEY_HELP1          H
-//#define MAGIC_KEY_HELP2          SLASH
-//#define MAGIC_KEY_DEBUG          D
-//#define MAGIC_KEY_DEBUG_MATRIX   X
-//#define MAGIC_KEY_DEBUG_KBD      K
-//#define MAGIC_KEY_DEBUG_MOUSE    M
-//#define MAGIC_KEY_VERSION        V
-//#define MAGIC_KEY_STATUS         S
-//#define MAGIC_KEY_CONSOLE        C
-//#define MAGIC_KEY_LAYER0_ALT1    ESC
-//#define MAGIC_KEY_LAYER0_ALT2    GRAVE
-//#define MAGIC_KEY_LAYER0         0
-//#define MAGIC_KEY_LAYER1         1
-//#define MAGIC_KEY_LAYER2         2
-//#define MAGIC_KEY_LAYER3         3
-//#define MAGIC_KEY_LAYER4         4
-//#define MAGIC_KEY_LAYER5         5
-//#define MAGIC_KEY_LAYER6         6
-//#define MAGIC_KEY_LAYER7         7
-//#define MAGIC_KEY_LAYER8         8
-//#define MAGIC_KEY_LAYER9         9
-//#define MAGIC_KEY_BOOTLOADER     PAUSE
-//#define MAGIC_KEY_LOCK           CAPS
-//#define MAGIC_KEY_EEPROM         E
-//#define MAGIC_KEY_NKRO           N
-//#define MAGIC_KEY_SLEEP_LED      Z
-
-/*
- * Feature disable options
- *  These options are also useful to firmware size reduction.
- */
-
-/* disable debug print */
-//#define NO_DEBUG
-
-/* disable print */
-//#define NO_PRINT
-
-/* disable action features */
-//#define NO_ACTION_LAYER
-//#define NO_ACTION_TAPPING
-//#define NO_ACTION_ONESHOT
-//#define NO_ACTION_MACRO
-//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/kitten_paw/info.json b/keyboards/kitten_paw/info.json
deleted file mode 100644 (file)
index 7d25747..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-{
-  "keyboard_name": "Kitten Paw",
-  "url": "",
-  "maintainer": "qmk",
-  "width": 22.5,
-  "height": 6.5,
-  "layouts": {
-    "LAYOUT": {
-      "key_count": 105,
-      "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "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":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Num Lock", "x":18.5, "y":1.5}, {"label":"/", "x":19.5, "y":1.5}, {"label":"*", "x":20.5, "y":1.5}, {"label":"-", "x":21.5, "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":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"7", "x":18.5, "y":2.5}, {"label":"8", "x":19.5, "y":2.5}, {"label":"9", "x":20.5, "y":2.5}, {"label":"+", "x":21.5, "y":2.5, "h":2}, {"label":"Caps Lock", "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":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"4", "x":18.5, "y":3.5}, {"label":"5", "x":19.5, "y":3.5}, {"label":"6", "x":20.5, "y":3.5}, {"label":"Shift", "x":0, "y":4.5, "w":1.25}, {"label":"KC_NUBS", "x":1.25, "y":4.5}, {"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":"N", "x":7.25, "y":4.5}, {"label":"M", "x":8.25, "y":4.5}, {"label":"<", "x":9.25, "y":4.5}, {"label":">", "x":10.25, "y":4.5}, {"label":"?", "x":11.25, "y":4.5}, {"label":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"1", "x":18.5, "y":4.5}, {"label":"2", "x":19.5, "y":4.5}, {"label":"3", "x":20.5, "y":4.5}, {"label":"Enter", "x":21.5, "y":4.5, "h":2}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":10, "y":5.5, "w":1.25}, {"label":"Win", "x":11.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}, {"label":"0", "x":18.5, "y":5.5, "w":2}, {"label":".", "x":20.5, "y":5.5}]
-    },
-
-    "LAYOUT_fullsize_ansi": {
-      "key_count": 104,
-      "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "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":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Num Lock", "x":18.5, "y":1.5}, {"label":"/", "x":19.5, "y":1.5}, {"label":"*", "x":20.5, "y":1.5}, {"label":"-", "x":21.5, "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":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"7", "x":18.5, "y":2.5}, {"label":"8", "x":19.5, "y":2.5}, {"label":"9", "x":20.5, "y":2.5}, {"label":"+", "x":21.5, "y":2.5, "h":2}, {"label":"Caps Lock", "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":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"4", "x":18.5, "y":3.5}, {"label":"5", "x":19.5, "y":3.5}, {"label":"6", "x":20.5, "y":3.5}, {"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":"N", "x":7.25, "y":4.5}, {"label":"M", "x":8.25, "y":4.5}, {"label":"<", "x":9.25, "y":4.5}, {"label":">", "x":10.25, "y":4.5}, {"label":"?", "x":11.25, "y":4.5}, {"label":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"1", "x":18.5, "y":4.5}, {"label":"2", "x":19.5, "y":4.5}, {"label":"3", "x":20.5, "y":4.5}, {"label":"Enter", "x":21.5, "y":4.5, "h":2}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":10, "y":5.5, "w":1.25}, {"label":"Win", "x":11.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}, {"label":"0", "x":18.5, "y":5.5, "w":2}, {"label":".", "x":20.5, "y":5.5}]
-    }
-  }
-}
diff --git a/keyboards/kitten_paw/keymaps/default/keymap.c b/keyboards/kitten_paw/keymaps/default/keymap.c
deleted file mode 100644 (file)
index 6767f04..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-#include QMK_KEYBOARD_H
-
-enum layers {
-    DEFAULT,
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-  [DEFAULT] = LAYOUT(\
-       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_PSCR,KC_SLCK,KC_PAUS,                        \
-       KC_GRV,   KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,KC_MINS, KC_EQL,KC_BSPC,   KC_INS,KC_HOME,KC_PGUP,  KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \
-       KC_TAB,   KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,KC_LBRC,KC_RBRC,KC_BSLS,   KC_DEL, KC_END,KC_PGDN,    KC_P7,  KC_P8,  KC_P9,KC_PPLS, \
-      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_P4,  KC_P5,  KC_P6,      \
-      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_UP,            KC_P1,  KC_P2,  KC_P3,KC_PENT, \
-      KC_LCTL,KC_LGUI,KC_LALT,                 KC_SPC,                                KC_RALT,KC_RGUI, KC_APP,KC_RCTL,  KC_LEFT,KC_DOWN,KC_RGHT,    KC_P0,KC_PDOT)
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-          if (record->event.pressed) {
-            register_code(KC_RSFT);
-          } else {
-            unregister_code(KC_RSFT);
-          }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-
-void matrix_init_user(void) {
-
-}
-
-void matrix_scan_user(void) {
-
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-  return true;
-}
-
-void led_set_user(uint8_t usb_led) {
-
-}
\ No newline at end of file
diff --git a/keyboards/kitten_paw/keymaps/ickerwx/config.h b/keyboards/kitten_paw/keymaps/ickerwx/config.h
deleted file mode 100644 (file)
index 142aba8..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-#undef MOUSEKEY_MOVE_MAX
-#define MOUSEKEY_MOVE_MAX       127
-#undef MOUSEKEY_WHEEL_MAX
-#define MOUSEKEY_WHEEL_MAX      110
-#undef MOUSEKEY_MOVE_DELTA
-#define MOUSEKEY_MOVE_DELTA     5
-#undef MOUSEKEY_WHEEL_DELTA
-#define MOUSEKEY_WHEEL_DELTA    1
-#undef MOUSEKEY_DELAY
-#define MOUSEKEY_DELAY 50
-#undef MOUSEKEY_INTERVAL
-#define MOUSEKEY_INTERVAL 20
-#undef MOUSEKEY_MAX_SPEED
-#define MOUSEKEY_MAX_SPEED 4
-#undef MOUSEKEY_TIME_TO_MAX
-#define MOUSEKEY_TIME_TO_MAX 30
-#undef MOUSEKEY_WHEEL_MAX_SPEED
-#define MOUSEKEY_WHEEL_MAX_SPEED 3
-#undef MOUSEKEY_WHEEL_TIME_TO_MAX
-#define MOUSEKEY_WHEEL_TIME_TO_MAX 255
-#undef ONESHOT_TIMEOUT
-#define ONESHOT_TIMEOUT 500
-#undef TAPPING_TOGGLE
-#define TAPPING_TOGGLE 2
-
-#endif
diff --git a/keyboards/kitten_paw/keymaps/ickerwx/keymap.c b/keyboards/kitten_paw/keymaps/ickerwx/keymap.c
deleted file mode 100644 (file)
index 856cef9..0000000
+++ /dev/null
@@ -1,242 +0,0 @@
-#include QMK_KEYBOARD_H
-#include "mousekey.h"
-
-#define _______ KC_TRNS
-#define XXXXXXX KC_NO
-#define  C(kc) LCTL(KC_##kc)
-#define RA(kc) RALT(KC_##kc)
-#define KC_SLCT KC_SELECT
-#define MEDAPP LT(MEDIA, KC_APP)
-#undef S
-#define S(kc) LSFT(KC_##kc)
-
-uint8_t current_layer_global = 255;
-
-enum layers {
-    DEFAULT,
-    PROG1,
-    PROG2,
-    MEDIA,
-    MOUSE1,
-    MOUSE2,
-    MISC,
-};
-
-enum function_id {
-    LSHFT_PAREN,
-    RSHFT_PAREN,
-    LCTRL_BRACKET,
-    RCTRL_BRACKET,
-    LALT_CURLY,
-    RALT_CURLY,
-    CTRL_CLICK
-};
-
-enum macro_id {
-    GRV,
-    CFLEX
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-  [DEFAULT] = LAYOUT(\
-          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_PSCR,KC_SLCK,KC_PAUS,                                   \
-          KC_GRV,   KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,KC_MINS, KC_EQL,KC_BSPC,    KC_INS,KC_HOME,KC_PGUP,  KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \
-          KC_TAB,   KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,KC_LBRC,KC_RBRC,KC_BSLS,    KC_DEL, KC_END,KC_PGDN,    KC_P7,  KC_P8,  KC_P9,KC_PPLS, \
-            F(0),   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_P4,  KC_P5,  KC_P6,         \
-            F(8),KC_NUBS,   KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,KC_COMM, KC_DOT,KC_SLSH,           F(9),             KC_UP,            KC_P1,  KC_P2,  KC_P3,KC_PENT, \
-            F(1),KC_LGUI,   F(3),              LT(MISC,  KC_SPC),                           F(4),   F(5), MEDAPP,   F(2),   KC_LEFT,KC_DOWN,KC_RGHT,    KC_P0,KC_PDOT),
-  /* Layer 1: Programming Layer 1, emulating US l ayout */
-  [PROG1] = LAYOUT(\
-          KC_ESC,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,           _______,_______,_______,                                   \
-          M(GRV),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,KC_SLSH,   S(0),_______,   _______,_______,_______,  _______,_______,_______,_______, \
-         _______,_______,_______,_______,_______,_______,   KC_Z,_______,_______,_______,_______,  RA(8),  RA(9),RA(MINS),  _______,_______,_______,  _______,_______,_______,_______, \
-         _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,S(COMM),S(BSLS),        _______,                             _______,_______,_______,         \
-       MO(PROG2),_______,   KC_Y,_______,_______,_______,_______,_______,_______,_______,_______,   S(7),      MO(PROG2),           _______,          _______,_______,_______,_______, \
-         _______,_______,_______,                        _______,                        _______,_______,_______,_______,   _______,_______,_______,  _______,_______),
-    /* Layer 2: programming layer 2
-       all keys that are not FN keys are sent as LSFT+key on this layer
-    */
-  [PROG2] = LAYOUT(\
-         _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,           _______,_______,_______,                                   \
-        RA(RBRC),_______,  RA(Q),KC_BSLS,_______,_______,M(CFLEX),  S(6),S(RBRC),   S(8),   S(9),S(SLSH),KC_RBRC,_______,   _______,_______,_______,  _______,_______,_______,_______, \
-         _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,  RA(7),  RA(0),RA(NUBS),  _______,_______,_______,  _______,_______,_______,_______, \
-         _______,_______,_______,_______,_______,_______,_______,_______,_______,_______, S(DOT),   S(2),        _______,                             _______,_______,_______,         \
-         _______,S(NUBS),_______,_______,_______,_______,_______,_______,_______,KC_NUBS,S(NUBS),S(MINS),        _______,           _______,          _______,_______,_______,_______, \
-         _______,_______,_______,                        _______,                        _______,_______,_______,_______,   _______,_______,_______,  _______,_______),
-    /* Layer 3: media layer */
-  [MEDIA] = LAYOUT(\
-          KC_PWR,KC_SLEP,KC_WAKE,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,   KC_MPRV,KC_MPLY,KC_MNXT,  XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, \
-         XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,   KC_VOLD,KC_MUTE,KC_VOLU,  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,           KC_EJCT,          XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, \
-         XXXXXXX,XXXXXXX,XXXXXXX,                        XXXXXXX,                        XXXXXXX,XXXXXXX,_______,XXXXXXX,   KC_MRWD,KC_MSTP,KC_MFFD,  XXXXXXX,XXXXXXX),
-    /* Layer 4: Mouse layer */
-  [MOUSE1] = LAYOUT(\
-            F(6),_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,           _______,_______,_______,                                   \
-         _______,KC_ACL0,KC_ACL1,KC_ACL2,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,   _______,_______,_______,  _______,_______,_______,_______, \
-         _______,KC_BTN4,KC_WH_D,KC_MS_U,KC_WH_U,_______,   C(Z),_______,_______,_______,_______,_______,_______,_______,   _______,_______,_______,  _______,_______,_______,_______, \
-         _______,KC_BTN5,KC_MS_L,KC_MS_D,KC_MS_R,   F(7),KC_WH_L,KC_WH_D,KC_WH_U,KC_WH_R,_______,_______,        _______,                             _______,_______,_______,         \
-      MO(MOUSE2),_______,   C(Y),   C(X),   C(C),   C(V),_______,KC_BTN2,KC_BTN3,C(PGUP),C(PGDN),_______,        KC_RSFT,           _______,          _______,_______,_______,_______, \
-         KC_LCTL,_______,KC_LALT,                        KC_BTN1,                        KC_RALT,KC_RGUI, KC_APP,KC_RCTL,   _______,_______,_______,  _______,_______),
-    /* Layer 5: Mouse layer 2*/
-  [MOUSE2] = LAYOUT(\
-         _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,           _______,_______,_______,                                   \
-         _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,   _______,_______,_______,  _______,_______,_______,_______, \
-         _______,_______,KC_BTN2,KC_WH_U,KC_BTN3,_______,_______,_______,_______,_______,_______,_______,_______,_______,   _______,_______,_______,  _______,_______,_______,_______, \
-         _______,_______,KC_WH_L,KC_WH_D,KC_WH_R,_______,KC_MS_L,KC_MS_D,KC_MS_U,KC_MS_R,_______,_______,        _______,                             _______,_______,_______,         \
-         _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,        _______,           _______,          _______,_______,_______,_______, \
-         _______,_______,_______,                        _______,                        _______,_______,_______,_______,   _______,_______,_______,  _______,_______),
-    /* Layer 6: Misc layer */
-  [MISC] = LAYOUT(\
-         _______, 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_SLCT,   C(W),  KC_UP,_______,_______,_______,_______,KC_BSPC, KC_DEL,_______,_______,_______,_______,   _______,_______,_______,  _______,_______,_______,_______, \
-         _______,_______,KC_LEFT,KC_DOWN,KC_RGHT,_______,KC_HOME,KC_PGDN,KC_PGUP,_______,_______,_______,        _______,                             _______,_______,_______,         \
-         KC_LSFT,_______,   C(Y),   C(X),   C(C),   C(V), KC_SPC, KC_END,_______,C(PGUP),C(PGDN),_______,        _______,           _______,          _______,_______,_______,_______, \
-         _______,_______,_______,               LT(MISC, KC_SPC),                        _______,_______,_______,_______,   _______,_______,_______,  _______,_______),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-    [0] = ACTION_LAYER_TAP_TOGGLE(MOUSE1),      // tap-toggle mouse layer (4)
-    [1] = ACTION_FUNCTION_TAP(LCTRL_BRACKET),   // tap to print [
-    [2] = ACTION_FUNCTION_TAP(RCTRL_BRACKET),   // tap to print ]
-    [3] = ACTION_FUNCTION_TAP(LALT_CURLY),      // tap to print {
-    [4] = ACTION_FUNCTION_TAP(RALT_CURLY),      // tap to print }
-    [5] = ACTION_LAYER_TAP_TOGGLE(PROG1),       // tap-toggle programming layer 1
-    [6] = ACTION_LAYER_SET_CLEAR(DEFAULT),
-    [7] = ACTION_FUNCTION_TAP(CTRL_CLICK),
-    [8] = ACTION_FUNCTION_TAP(LSHFT_PAREN),     // tap to print (
-    [9] = ACTION_FUNCTION_TAP(RSHFT_PAREN),     // tap to print )
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case GRV: // macro to print accent grave
-            return (record->event.pressed ?
-                    MACRO( D(LSFT), T(EQL), U(RALT), T(SPC), END) :
-                    MACRO_NONE );
-        case CFLEX: // print accent circonflex
-            return (record->event.pressed ?
-                    MACRO( T(GRV), T(SPC), END ) :
-                    MACRO_NONE );
-      }
-    return MACRO_NONE;
-};
-
-
-void matrix_init_user(void) {
-
-}
-
-void matrix_scan_user(void) {
-    uint8_t layer;
-    layer = biton32(layer_state);
-
-    if (current_layer_global != layer) {
-        current_layer_global = layer;
-
-        // unset CAPSLOCK and SCROLL LOCK LEDs
-        led_set_kb(host_keyboard_leds() & ~(1<<USB_LED_CAPS_LOCK));
-        led_set_kb(host_keyboard_leds() & ~(1<<USB_LED_SCROLL_LOCK));
-        // set SCROLL LOCK LED when the mouse layer is active, CAPS LOCK when PROG layer is active
-        if (layer == MOUSE1 || layer == MOUSE2) {
-          led_set_kb(host_keyboard_leds() | (1<<USB_LED_SCROLL_LOCK));
-        } else if (layer == PROG1 || layer == PROG2) {
-          led_set_kb(host_keyboard_leds() | (1<<USB_LED_CAPS_LOCK));
-        }
-    }
-}
-
-void led_set_user(uint8_t usb_led) {
-
-}
-
-void tap_helper(keyrecord_t *record, uint16_t orig_mod, uint16_t macro_mod, uint16_t macro_kc ) {
-  if (record->event.pressed) {
-      if (record->tap.count > 0 && !record->tap.interrupted) {
-          if (record->tap.interrupted) {
-              register_mods(MOD_BIT(orig_mod));
-          }
-      } else {
-          register_mods(MOD_BIT(orig_mod));
-      }
-  } else {
-      if (record->tap.count > 0 && !(record->tap.interrupted)) {
-          add_weak_mods(MOD_BIT(macro_mod));
-          send_keyboard_report();
-          register_code(macro_kc);
-          unregister_code(macro_kc);
-          del_weak_mods(MOD_BIT(macro_mod));
-          send_keyboard_report();
-          record->tap.count = 0;  // ad hoc: cancel tap
-      } else {
-          unregister_mods(MOD_BIT(orig_mod));
-      }
-  }
-}
-
-/* if LCTRL is tabbed, print (, or ) if RCTRL is tabbed, same for LALT/RALT and [/] */
-void action_function(keyrecord_t *record, uint8_t id, uint8_t opt) {
-    // The code is copied from keymap_hasu.c in the tmk keyboards hhkb folder
-    switch (id) {
-        case LCTRL_BRACKET:
-            tap_helper(record, KC_LCTL, KC_RALT, KC_8);
-            break;
-        case RCTRL_BRACKET:
-            tap_helper(record, KC_RCTL, KC_RALT, KC_9);
-            break;
-        case LALT_CURLY:
-            tap_helper(record, KC_LALT, KC_RALT, KC_7);
-            break;
-        case RALT_CURLY:
-            tap_helper(record, KC_RALT, KC_RALT, KC_0);
-            break;
-        case LSHFT_PAREN:
-            tap_helper(record, KC_LSFT, KC_LSFT, KC_8);
-            break;
-        case RSHFT_PAREN:
-            tap_helper(record, KC_RSFT, KC_LSFT, KC_9);
-            break;
-        case CTRL_CLICK:
-            if (record->event.pressed) {
-                mousekey_clear();
-                register_mods(MOD_BIT(KC_LCTL));
-                send_keyboard_report();
-                wait_ms(5);
-                mousekey_on(KC_BTN1);
-                mousekey_send();
-                wait_ms(10);
-                mousekey_off(KC_BTN1);
-                mousekey_send();
-                wait_ms(5);
-                unregister_mods(MOD_BIT(KC_LCTL));
-                send_keyboard_report();
-            }
-            break;
-    }
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-    uint8_t layer;
-    layer = biton32(layer_state);
-    if (layer == PROG2) {
-         if (keycode >= KC_A && keycode <= KC_EXSEL && \
-             !(  // do not send LSFT + these keycodes, they are needed for emulating the US layout
-                 keycode == KC_NONUS_BSLASH ||
-                 keycode == KC_RBRC ||
-                 keycode == KC_BSLS ||
-                 keycode == KC_GRV
-            )) {
-              // LSFT is the modifier for this layer, so we set LSFT for every key to get the expected behavior
-              if (record->event.pressed) {
-                  register_mods(MOD_LSFT);
-              } else {
-                  unregister_mods(MOD_LSFT);
-              }
-         }
-    }
-    return true;
-}
diff --git a/keyboards/kitten_paw/keymaps/ickerwx/readme.md b/keyboards/kitten_paw/keymaps/ickerwx/readme.md
deleted file mode 100644 (file)
index 0d23be4..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-# My personal keymap for the Kitten Paw controller
-
-This keymap only works correctly when you have your OS configured with a German keymap. Use the keymap however you like. It's most likely a living thing that will never be quite finished.
-
-## Description of the layers
-Layer 0 (DEFAULT) works just like you would expect a keyboard to work, mostly, except:
-Caps Lock switches to the mouse layer, RGUI and APP are switches to the programming layer and media layer.
-Mouse and programming layer switches can be held or double-tapped to lock.
-Holding space switches to the MISC layer where I currently accumulate useful shortcuts.
-Tapping left and right Shift, Ctrl and Alt will send (), [] and {} respectively.
-
-Layers 1 and 2 (PROG1 and PROG2) emulate the US layout while still using a German OS keymap setting. I was annoyed of having to change the OS settings every time I wanted to use the US layout for coding, so I made these layers to behave just like the US layout even though the OS still uses German. The shift keys were a bit tricky, I had to use them as MO(PROG2) switches, so to get the actual expected behavior I enable LSFT for almost every keypress on PROG2 in ```process_record_user```. Since the shift keys are MO() function keys, they do not print () at the moment, which sucks. I'm working on it.
-
-Layer 3 (MEDIA) just has a couple of media keys on it, mainly around the cursor keys and nav key cluster.
-
-Layers 4 and 5 (MOUSE1 and MOUSE2) are mouse layers. Move the cursor using ESDF, scroll using HJKL, Space for left click, N and M for right and middle click. There's more, look at the keymap.
-
-Layer 6 is a layer I don't have a good name for, so I call it MISC. You'll find cursor keys at ESDF, other navigation keys around the HJKL cluster and F12 to F24 on the F-keys. For now.
\ No newline at end of file
diff --git a/keyboards/kitten_paw/kitten_paw.c b/keyboards/kitten_paw/kitten_paw.c
deleted file mode 100644 (file)
index 26cb533..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-#include "kitten_paw.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();
-}
-
-__attribute__ ((weak))
-void matrix_init_user(void) {
-}
-
-__attribute__ ((weak))
-void matrix_scan_user(void) {
-}
-
-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
-    CONFIG_LED_IO;
-    CONFIG_LED_IO;
-    print_dec(usb_led);
-    if (usb_led & (1<<USB_LED_CAPS_LOCK))
-        USB_LED_CAPS_LOCK_ON;
-    else
-        USB_LED_CAPS_LOCK_OFF;
-
-    if (usb_led & (1<<USB_LED_NUM_LOCK))
-        USB_LED_NUM_LOCK_ON;
-    else
-        USB_LED_NUM_LOCK_OFF;
-    if (usb_led & (1<<USB_LED_SCROLL_LOCK))
-        USB_LED_SCROLL_LOCK_ON;
-    else
-        USB_LED_SCROLL_LOCK_OFF;
-       led_set_user(usb_led);
-}
diff --git a/keyboards/kitten_paw/kitten_paw.h b/keyboards/kitten_paw/kitten_paw.h
deleted file mode 100644 (file)
index 4de550f..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-#ifndef KITTEN_PAW_H
-#define KITTEN_PAW_H
-
-#include "quantum.h"
-
-#define CONFIG_LED_IO \
-  DDRB |= (1<<7); \
-  DDRC |= (1<<5) | (1<<6);
-
-#define USB_LED_CAPS_LOCK_ON    PORTC &= ~(1<<6)
-#define USB_LED_CAPS_LOCK_OFF   PORTC |=  (1<<6)
-#define USB_LED_NUM_LOCK_ON     PORTB &= ~(1<<7)
-#define USB_LED_NUM_LOCK_OFF    PORTB |=  (1<<7)
-#define USB_LED_SCROLL_LOCK_ON  PORTC &= ~(1<<5)
-#define USB_LED_SCROLL_LOCK_OFF PORTC |=  (1<<5)
-
-// This a shortcut to help you visually see your layout.
-// The first section contains all of the arguements
-// The second converts the arguments into a two-dimensional array
-/*
-  Matrix col/row mapping
-
-  ,----.    ,-------------------. ,-------------------. ,-------------------. ,--------------.
-  | J6 |    | I4 | H4 | H2 | H6 | | A7 | E6 | D2 | D4 | | B4 | B7 | B6 | B0 | | C7 | C5 | A5 |
-  `----'    `-------------------' `-------------------' `-------------------' `--------------'
-  ,-------------------------------------------------------------------------. ,--------------. ,-------------------.
-  | J4 | J7 | I7 | H7 | G7 | G4 | F4 | F7 | E7 | D7 | R7 | R4 | E4 |     B2 | | L4 | O4 | Q4 | | K1 | L1 | Q1 | Q0 |
-  |-------------------------------------------------------------------------| |--------------| |-------------------|
-  | J2   | J5 | I5 | H5 | G5 | G2 | F2 | F5 | E5 | D5 | R5 | R2 | E2 |   B3 | | K4 | O7 | Q7 | | K5 | L5 | Q5 | O5 |
-  |-------------------------------------------------------------------------| '--------------' |--------------     |
-  | O5    | J3 | I3 | H3 | G3 | G6 | F6 | F3 | E3 | D3 | R3 | R6 |       B1 |                  | K2 | L2 | Q2 |    |
-  |-------------------------------------------------------------------------|      ,----.      |-------------------|
-  | N2 | I6 | J1 | I1 | H1 | G1 | G0 | F0 | F1 | E1 | D1 | R0 |          N3 |      | O6 |      | K3 | L3 | Q3 | O3 |
-  |-------------------------------------------------------------------------| ,--------------. |--------------     |
-  | A4 | P2 | C6 |                  K6                  | C0 | M3 | D0 | A1 | | O0 | K0 | L0 | | L6      | Q6 |    |
-  `-------------------------------------------------------------------------' `--------------' `-------------------'
-*/
-
-#define LAYOUT( \
-  KJ6,      KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0,   KC7, KC5, KA5,                       \
-  KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2,   KL4, KO4, KQ4,   KK1, KL1, KQ1, KQ0, \
-  KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3,   KK4, KO7, KQ7,   KK5, KL5, KQ5, KO5, \
-  KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6,      KB1,                    KK2, KL2, KQ2,      \
-  KN2, KI6, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0,      KN3,        KO6,        KK3, KL3, KQ3, KO3, \
-  KA4, KP2, KC6,                KK6,                KC0, KM3, KD0, KA1,   KO0, KK0, KL0,   KL6,      KQ6       \
-) \
-{ \
-    {KC_NO,  KB0,  KC0,  KD0,KC_NO,  KF0,  KG0,KC_NO,KC_NO,KC_NO,  KK0,  KL0,KC_NO,KC_NO,  KO0,KC_NO,  KQ0,  KR0}, \
-    {  KA1,  KB1,KC_NO,  KD1,  KE1,  KF1,  KG1,  KH1,  KI1,  KJ1,  KK1,  KL1,KC_NO,KC_NO,KC_NO,KC_NO,  KQ1,KC_NO}, \
-    {KC_NO,  KB2,KC_NO,  KD2,  KE2,  KF2,  KG2,  KH2,  KI2,  KJ2,  KK2,  KL2,KC_NO,  KN2,KC_NO,  KP2,  KQ2,  KR2}, \
-    {KC_NO,  KB3,KC_NO,  KD3,  KE3,  KF3,  KG3,  KH3,  KI3,  KJ3,  KK3,  KL3,  KM3,  KN3,  KO3,KC_NO,  KQ3,  KR3}, \
-    {  KA4,  KB4,KC_NO,  KD4,  KE4,  KF4,  KG4,  KH4,  KI4,  KJ4,  KK4,  KL4,KC_NO,KC_NO,  KO4,KC_NO,  KQ4,  KR4}, \
-    {  KA5,KC_NO,  KC5,  KD5,  KE5,  KF5,  KG5,  KH5,  KI5,  KJ5,  KK5,  KL5,KC_NO,KC_NO,  KO5,KC_NO,  KQ5,  KR5}, \
-    {KC_NO,  KB6,  KC6,KC_NO,  KE6,  KF6,  KG6,  KH6,  KI6,  KJ6,  KK6,  KL6,KC_NO,KC_NO,  KO6,KC_NO,  KQ6,  KR6}, \
-    {  KA7,  KB7,  KC7,  KD7,  KE7,  KF7,  KG7,  KH7,  KI7,  KJ7,KC_NO,KC_NO,KC_NO,KC_NO,  KO7,KC_NO,  KQ7,  KR7} \
-}
-
-#define LAYOUT_fullsize_ansi( \
-  KJ6,      KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0,   KC7, KC5, KA5,                       \
-  KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2,   KL4, KO4, KQ4,   KK1, KL1, KQ1, KQ0, \
-  KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3,   KK4, KO7, KQ7,   KK5, KL5, KQ5, KO5, \
-  KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6,      KB1,                    KK2, KL2, KQ2,      \
-  KN2,      KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0,      KN3,        KO6,        KK3, KL3, KQ3, KO3, \
-  KA4, KP2, KC6,                KK6,                KC0, KM3, KD0, KA1,   KO0, KK0, KL0,   KL6,      KQ6       \
-) \
-{ \
-    {KC_NO,  KB0,  KC0,  KD0,KC_NO,  KF0,  KG0,KC_NO,KC_NO,KC_NO,  KK0,  KL0,KC_NO,KC_NO,  KO0,KC_NO,  KQ0,  KR0}, \
-    {  KA1,  KB1,KC_NO,  KD1,  KE1,  KF1,  KG1,  KH1,  KI1,  KJ1,  KK1,  KL1,KC_NO,KC_NO,KC_NO,KC_NO,  KQ1,KC_NO}, \
-    {KC_NO,  KB2,KC_NO,  KD2,  KE2,  KF2,  KG2,  KH2,  KI2,  KJ2,  KK2,  KL2,KC_NO,  KN2,KC_NO,  KP2,  KQ2,  KR2}, \
-    {KC_NO,  KB3,KC_NO,  KD3,  KE3,  KF3,  KG3,  KH3,  KI3,  KJ3,  KK3,  KL3,  KM3,  KN3,  KO3,KC_NO,  KQ3,  KR3}, \
-    {  KA4,  KB4,KC_NO,  KD4,  KE4,  KF4,  KG4,  KH4,  KI4,  KJ4,  KK4,  KL4,KC_NO,KC_NO,  KO4,KC_NO,  KQ4,  KR4}, \
-    {  KA5,KC_NO,  KC5,  KD5,  KE5,  KF5,  KG5,  KH5,  KI5,  KJ5,  KK5,  KL5,KC_NO,KC_NO,  KO5,KC_NO,  KQ5,  KR5}, \
-    {KC_NO,  KB6,  KC6,KC_NO,  KE6,  KF6,  KG6,  KH6,  KC_NO,KJ6,  KK6,  KL6,KC_NO,KC_NO,  KO6,KC_NO,  KQ6,  KR6}, \
-    {  KA7,  KB7,  KC7,  KD7,  KE7,  KF7,  KG7,  KH7,  KI7,  KJ7,KC_NO,KC_NO,KC_NO,KC_NO,  KO7,KC_NO,  KQ7,  KR7} \
-}
-
-#endif
diff --git a/keyboards/kitten_paw/matrix.c b/keyboards/kitten_paw/matrix.c
deleted file mode 100644 (file)
index d436ad5..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-/*
-  Copyright 2014 Ralf Schmitt <ralf@bunkertor.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 <stdint.h>
-#include <stdbool.h>
-#include <avr/io.h>
-#include <util/delay.h>
-#include "print.h"
-#include "debug.h"
-#include "util.h"
-#include "matrix.h"
-
-#ifndef DEBOUNCING_DELAY
-#   define DEBOUNCING_DELAY 5
-#endif
-static uint8_t debouncing = DEBOUNCING_DELAY;
-
-static matrix_row_t matrix[MATRIX_ROWS];
-static matrix_row_t matrix_debouncing[MATRIX_ROWS];
-
-static uint8_t read_rows(void);
-static void select_col(uint8_t col);
-
-inline uint8_t matrix_rows(void) {
-  return MATRIX_ROWS;
-}
-
-inline uint8_t matrix_cols(void) {
-  return MATRIX_COLS;
-}
-
-/* Column pin configuration
- *
- * col: 0    1    2    3    4    5    6    7
- * pin: PC7  PD5  PD3  PD1  PC2  PD6  PD4  PD2
- *
- * Rrr pin configuration 
- *
- * These rrrs uses one 74HC154 4 to 16 bit demultiplexer (low
- * active), together with 2 rrrs driven directly from the micro
- * controller, to control the 18 rrrs. The rrrs are driven from
- * pins B6,5,4,3,2,1,0.
- */
-void matrix_init(void) {
-  DDRC  &= ~0b10000100;  // Row input pins
-  DDRD  &= ~0b01111110;
-  PORTC |=  0b10000100;
-  PORTD |=  0b01111110;
-
-  DDRB  |=  0b01111111;  // Column output pins
-
-  for (uint8_t i=0; i < MATRIX_ROWS; i++)  {
-    matrix[i] = 0;
-    matrix_debouncing[i] = 0;
-  }
-  matrix_init_quantum();
-}
-
-uint8_t matrix_scan(void) {
-  for (uint8_t col = 0; col < MATRIX_COLS; col++) {
-    select_col(col);
-    _delay_us(3);
-    uint8_t rows = read_rows();
-    for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
-      bool prev_bit = matrix_debouncing[row] & ((matrix_row_t)1<<col);
-      bool curr_bit = rows & (1<<row);
-      if (prev_bit != curr_bit) {
-        matrix_debouncing[row] ^= ((matrix_row_t)1<<col);
-        debouncing = DEBOUNCING_DELAY;
-      }
-    }
-  }
-  
-  if (debouncing) {
-    if (--debouncing) {
-      _delay_ms(1);
-    }
-    else {
-      for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
-        matrix[i] = matrix_debouncing[i];
-      }
-    }
-  }
-  matrix_scan_quantum();
-  return 1;
-}
-
-bool matrix_is_modified(void) {
-  if (debouncing)
-    return false;
-  else
-    return true;
-}
-
-inline bool matrix_is_on(uint8_t row, uint8_t col) {
-  return (matrix[row] & ((matrix_row_t)1<<col));
-}
-
-inline matrix_row_t matrix_get_row(uint8_t row) {
-  return matrix[row];
-}
-
-void matrix_print(void) {
-  print("\nr/c 0123456789ABCDEF\n");
-  for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
-    xprintf("%02X: %032lb\n", row, bitrev32(matrix_get_row(row)));
-  }
-}
-
-uint8_t matrix_key_count(void) {
-  uint8_t count = 0;
-  for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
-    count += bitpop32(matrix[i]);
-  }
-  return count;
-}
-
-static uint8_t read_rows(void) {
-  return
-    (PINC&(1<<7) ? 0 : (1<<0)) |
-    (PIND&(1<<5) ? 0 : (1<<1)) |
-    (PIND&(1<<3) ? 0 : (1<<2)) |
-    (PIND&(1<<1) ? 0 : (1<<3)) |
-    (PINC&(1<<2) ? 0 : (1<<4)) |
-    (PIND&(1<<2) ? 0 : (1<<5)) |
-    (PIND&(1<<4) ? 0 : (1<<6)) |
-    (PIND&(1<<6) ? 0 : (1<<7));
-}
-
-static void select_col(uint8_t col) {
-  switch (col) {
-  case  0: PORTB = (PORTB & ~0b01111111) | 0b01100100; break;
-  case  1: PORTB = (PORTB & ~0b01111111) | 0b01101100; break;
-  case  2: PORTB = (PORTB & ~0b01111111) | 0b01100010; break;
-  case  3: PORTB = (PORTB & ~0b01111111) | 0b01111010; break;
-  case  4: PORTB = (PORTB & ~0b01111111) | 0b01100110; break;
-  case  5: PORTB = (PORTB & ~0b01111111) | 0b01110110; break;
-  case  6: PORTB = (PORTB & ~0b01111111) | 0b01101110; break;
-  case  7: PORTB = (PORTB & ~0b01111111) | 0b01111110; break;
-  case  8: PORTB = (PORTB & ~0b01111111) | 0b01000001; break;
-  case  9: PORTB = (PORTB & ~0b01111111) | 0b00100001; break;
-  case 10: PORTB = (PORTB & ~0b01111111) | 0b01101010; break;
-  case 11: PORTB = (PORTB & ~0b01111111) | 0b01110010; break;
-  case 12: PORTB = (PORTB & ~0b01111111) | 0b01111100; break;
-  case 13: PORTB = (PORTB & ~0b01111111) | 0b01110100; break;
-  case 14: PORTB = (PORTB & ~0b01111111) | 0b01111000; break;
-  case 15: PORTB = (PORTB & ~0b01111111) | 0b01110000; break;
-  case 16: PORTB = (PORTB & ~0b01111111) | 0b01100000; break;
-  case 17: PORTB = (PORTB & ~0b01111111) | 0b01101000; break;
-  }
-}
diff --git a/keyboards/kitten_paw/readme.md b/keyboards/kitten_paw/readme.md
deleted file mode 100644 (file)
index d5fa9aa..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-kitten_paw
-==========
-
-This is the firmware for the 2016 revision of the Kitten Paw controller by Bathroom Epiphanies. Most of the boilerplate code is the work of [BathroomEpiphanies](https://github.com/BathroomEpiphanies).
-
-NKRO doesn't work at the moment, I don't know if I will take the time to find out how to fix this, so far 6KRO is enough for me.
-
-Keyboard Maintainer: QMK Community  
-Hardware Supported: Kitten Paw PCB  
-Hardware Availability: https://geekhack.org/index.php?topic=46700.0
-
-Make example for this keyboard (after setting up your build environment):
-
-    make kitten_paw:default
-
-See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
diff --git a/keyboards/kitten_paw/rules.mk b/keyboards/kitten_paw/rules.mk
deleted file mode 100644 (file)
index fab9c42..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-
-
-# MCU name
-#MCU = at90usb1287
-MCU = atmega32u2
-
-# 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
-
-
-# Boot Section Size in *bytes*
-#   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
-MIDI_ENABLE = no            # MIDI controls
-UNICODE_ENABLE = no         # Unicode
-BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID
-AUDIO_ENABLE = no           # Audio output on port C6
-
-CUSTOM_MATRIX = yes
-SRC += matrix.c
-
-LAYOUTS = fullsize_ansi
diff --git a/keyboards/pegasushoof/README.md b/keyboards/pegasushoof/README.md
deleted file mode 100644 (file)
index debf7f7..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-Pegasus Hoof Controller
-===
-
-Keyboard Maintainer: QMK Community  
-Hardware Supported: Pegasus Hoof  
-Hardware Availability: https://1upkeyboards.com/filco-pegasus-hoof-controller.html
-
-Make example for this keyboard (after setting up your build environment):
-
-    make pegasus_hoof:default
-
-See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
diff --git a/keyboards/pegasushoof/config.h b/keyboards/pegasushoof/config.h
deleted file mode 100644 (file)
index 0dbec26..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-Copyright 2016 Daniel Svensson <dsvensson@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef CONFIG_H
-#define CONFIG_H
-
-#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID       0xFEED
-#define PRODUCT_ID      0x6050
-#define DEVICE_VER      0x0104
-#define MANUFACTURER    Filco
-#define PRODUCT         Majestouch TKL \\w The Pegasus Hoof
-#define DESCRIPTION     QMK firmware for Majestouch TKL
-
-/* key matrix size */
-#define MATRIX_ROWS 8
-#define MATRIX_COLS 18
-
-/* COL2ROW or ROW2COL */
-#define DIODE_DIRECTION COL2ROW
-
-/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
-#define DEBOUNCING_DELAY 5
-
-/* key combination for magic key command */
-#define IS_COMMAND() ( \
-       keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
-)
-
-#endif
diff --git a/keyboards/pegasushoof/keymaps/blowrak/keymap.c b/keyboards/pegasushoof/keymaps/blowrak/keymap.c
deleted file mode 100644 (file)
index 6faf4db..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
-Copyright 2016 Daniel Svensson <dsvensson@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "pegasushoof.h"
-
-#define _______ KC_TRNS
-
-/* Swedish keys */
-#define SE_HALF KC_GRV
-#define SE_PLUS KC_MINS
-#define SE_ACUT KC_EQL
-#define SE_AO   KC_LBRC
-#define SE_CIRC KC_RBRC
-#define SE_QUOT KC_BSLS
-#define SE_OE   KC_SCLN
-#define SE_AE   KC_QUOT
-#define SE_MINS KC_SLSH
-#define SE_LTGT KC_NUBS
-#define SE_LCBR RALT(KC_7)
-#define SE_LBRC RALT(KC_8)
-#define SE_RBRC RALT(KC_9)
-#define SE_RCBR RALT(KC_0)
-#define SE_PIPE RALT(SE_LTGT)
-#define SE_BSLS RALT(SE_PLUS)
-
-#define KM_BLOWRAK 0
-#define KM_QWERTY  1
-#define KM_MEDIA   2
-#define KM_HAXHAX  3
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-       /* Layer 0: Blowrak ISO layer, a Swedish take on Dvorak */
-       [KM_BLOWRAK] = KEYMAP( \
-               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_PSCR,KC_SLCK,KC_PAUS, \
-               SE_HALF, KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   SE_PLUS,SE_ACUT,KC_BSPC,   KC_INS, KC_HOME,KC_PGUP, \
-               KC_TAB,  SE_AO,  SE_AE,  SE_OE,  KC_P,   KC_Y,   KC_F,   KC_G,   KC_C,   KC_R,   KC_L,   KC_COMM,SE_CIRC,SE_QUOT,   KC_DEL, KC_END, KC_PGDN, \
-               KC_LCTRL,KC_A,   KC_O,   KC_E,   KC_U,   KC_I,   KC_H,   KC_D,   KC_T,   KC_N,   KC_S,   SE_MINS,        KC_ENT,                             \
-               KC_LSFT, SE_LTGT,KC_DOT, KC_Q,   KC_J,   KC_K,   KC_B,   KC_X,   KC_M,   KC_W,   KC_V,   KC_Z,           KC_RSFT,           KC_UP,           \
-               KC_FN0,  KC_LGUI,KC_LALT,                       KC_SPC,                          KC_RALT,KC_RGUI,KC_MENU,KC_FN1,    KC_LEFT,KC_DOWN,KC_RGHT),
-       /* Layer 1: Standard ISO layer */
-       [KM_QWERTY] = KEYMAP( \
-               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_PSCR,KC_SLCK,KC_PAUS, \
-               SE_HALF, KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   SE_PLUS,SE_ACUT,KC_BSPC,   KC_INS, KC_HOME,KC_PGUP, \
-               KC_TAB,  KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,   SE_AO,  SE_CIRC,SE_QUOT,   KC_DEL, KC_END, KC_PGDN, \
-               KC_LCTRL,KC_A,   KC_S,   KC_D,   KC_F,   KC_G,   KC_H,   KC_J,   KC_K,   KC_L,   SE_OE,  SE_AE,          KC_ENT,                             \
-               KC_LSFT, SE_LTGT,KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM,KC_DOT, SE_MINS,        KC_RSFT,           KC_UP,           \
-               KC_FN0,  KC_LGUI,KC_LALT,                       KC_SPC,                          KC_RALT,KC_RGUI,KC_MENU,KC_FN1,    KC_LEFT,KC_DOWN,KC_RGHT),
-       /* Layer 2: Media layer */
-       [KM_MEDIA] = KEYMAP( \
-               _______,        _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,   KC_WAKE,KC_PWR, KC_SLEP, \
-               _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,   _______,_______,KC_VOLU, \
-               _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,   KC_MUTE,_______,KC_VOLD, \
-               _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,        _______,                            \
-               _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,        _______,           KC_MPLY,         \
-               _______,_______,_______,                        _______,                        _______,_______,RESET  ,_______,   KC_MPRV,KC_MSTP,KC_MNXT),
-       /* Layer 3: Programming layer */
-       [KM_HAXHAX] = KEYMAP( \
-               _______,        _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,   _______,_______,_______, \
-               _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,   _______,_______,_______, \
-               _______,SE_LCBR,SE_PIPE,SE_RCBR,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,   _______,_______,_______, \
-               _______,SE_LBRC,SE_BSLS,SE_RBRC,_______,_______,_______,_______,_______,_______,_______,_______,        _______,                            \
-               _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,        _______,           _______,         \
-               _______,_______,_______,                        _______,                        _______,_______,_______,_______,   _______,_______,_______),
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-       [0] = ACTION_LAYER_MOMENTARY(KM_MEDIA),
-       [1] = ACTION_LAYER_TOGGLE(KM_QWERTY)
-};
-
-void matrix_scan_user(void)
-{
-       uint8_t layer = biton32(layer_state);
-       switch (layer) {
-               case KM_BLOWRAK:
-                       ph_caps_led_on();
-                       ph_sclk_led_off();
-                       break;
-               case KM_QWERTY:
-                       ph_sclk_led_on();
-                       ph_caps_led_off();
-                       break;
-       }
-}
-
-/* Mixes in KM_HAXHAX via RALT modifier without shadowing the RALT key combinations. */
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-       uint8_t modifiers = get_mods();
-       if (modifiers & MOD_BIT(KC_RALT) && record->event.pressed) {
-               uint16_t kc = keymap_key_to_keycode(KM_HAXHAX, record->event.key);
-               if (kc != KC_TRNS) {
-                       register_code(kc);
-                       unregister_code(kc);
-                       return false;
-               }
-       }
-       return true;
-}
diff --git a/keyboards/pegasushoof/keymaps/blowrak/rules.mk b/keyboards/pegasushoof/keymaps/blowrak/rules.mk
deleted file mode 100644 (file)
index 168fb62..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-# 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 = yes      # 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
-CUSTOM_MATRIX = yes         # Custom matrix file for the Pegasus Hoof due to the 2x74HC42
-NKRO_ENABLE = no            # 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 = no        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
-
-
-ifndef QUANTUM_DIR
-       include ../../../../Makefile
-endif
diff --git a/keyboards/pegasushoof/keymaps/citadel/config.h b/keyboards/pegasushoof/keymaps/citadel/config.h
deleted file mode 100644 (file)
index 2d27ff3..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-/* overridden settings: */
-
-#undef PRODUCT
-#define PRODUCT Pegasus Hoof Citadel
-
-#endif
diff --git a/keyboards/pegasushoof/keymaps/citadel/keymap.c b/keyboards/pegasushoof/keymaps/citadel/keymap.c
deleted file mode 100644 (file)
index 382854d..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-/* Copyright 2018 Daniel Rose <droseger@protonmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "pegasushoof.h"
-
-/* Allow shortcuts for combos like RALT(KC_RBRC) that don't take up more than 7 characters: */
-#define G(kc) RALT(KC_##kc)
-#define A(kc) LALT(KC_##kc)
-#define C(kc) LCTL(KC_##kc)
-#undef S /* Original shortcut (quantum_keycodes.h) takes full-sized keycodes: too long! */
-#define S(kc) LSFT(KC_##kc)
-#define CTALDEL LCTL(LALT(KC_DEL))
-
-enum layers {
-  DEF,
-  FUN,
-  RES,
-};
-
-enum tap_dance {
-  AF4,
-};
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-/* Layer 0: default layer (ISO-DE)
- * .----.   .-------------------. .-------------------. .-------------------. .--------------.
- * |Esc |   |F1  |F2  |F3  |F4  | |F5  |F6  |F7  |F8  | |F9  |F10 |F11 |F12 | |PrSc|SLck|2Tp:|
- * |    |   |    |    |    |    | |    |    |    |    | |    |    |    |    | |SyRq|    |A+F4|
- * '----'   '-------------------' '-------------------' '-------------------' '--------------'
- * .------------------------------------------------------------------------. .--------------.
- * |°   |!   |"   |§   |$   |%   |&   |/   |(   |)   |=   |?   |`   |Backspa| |Ins |Home|PgUp|
- * |^   |1   |2  Â²|3  Â³|4   |5   |6   |7  {|8  [|9  ]|0  }|ß  \|´   |       | |    |    |    |
- * |------------------------------------------------------------------------| |--------------|
- * |Tab   |Q   |W   |E   |R   |T   |Z   |U   |I   |O   |P   |Ãœ   |*   |  E  | |Del |End |PgDn|
- * |      |    |    |   â‚¬|    |    |    |    |    |    |    |    |+  ~|  n  | |    |    |    |
- * |------------------------------------------------------------------\  t  | '--------------'
- * |Fn:    |A   |S   |D   |F   |G   |H   |J   |K   |L   |Ö   |Ä   |'   | e  |
- * |Layer 2|    |    |    |    |    |    |    |    |    |    |    |#   | r  |
- * |------------------------------------------------------------------------|      .----.
- * |Shift|>   |Y   |X   |C   |V   |B   |N   |M   |;   |:   |_   |Shift      |      |Up  |
- * |     |<  Â¦|    |    |    |    |    |    |   Âµ|,   |.   |-   |           |      |    |
- * |------------------------------------------------------------------------| .--------------.
- * |Ctrl |Super|Alt  |                              |AltGr|Alt  |Fn:  |Ctrl | |Left|Down|Righ|
- * |     |     |     |                              |     |     |Lay 2|     | |    |    |    |
- * '------------------------------------------------------------------------' '--------------'
- *                                                                                                  NUHS = true position of KC_NUHS
- */
-[DEF] = KEYMAP( \
-  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_PSCR,KC_SLCK,TD(AF4), \
-  KC_GRV, KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_MINS,KC_EQL, KC_BSPC,  KC_INS, KC_HOME,KC_PGUP, \
-  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_NUHS,  KC_DEL, KC_END, KC_PGDN, \
-  MO(FUN),KC_A,   KC_S,   KC_D,   KC_F,   KC_G,   KC_H,   KC_J,   KC_K,   KC_L,   KC_SCLN,KC_QUOT,/*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_UP,           \
-  KC_LCTL,KC_LGUI,KC_LALT,                        KC_SPC,                         KC_RALT,KC_LALT,MO(FUN),KC_RCTL,  KC_LEFT,KC_DOWN,KC_RGHT),
-
-    /* Layer 1: function layer
- * .----.   .-------------------. .-------------------. .-------------------. .--------------.
- * |Ctl+|   |My  |WWW:|Calc|Medi| |Mus:|Mus:|Mus:|Mus:| |Vol:|Vol:|Vol:|See:| |    |    |Paus|
- * |A+De|   |Comp|Home|    |Play| |Prev|Next|Paus|Stop| |Mute|Down|Up  |[3] | |    |    |Brea|
- * '----'   '-------------------' '-------------------' '-------------------' '--------------'
- * .------------------------------------------------------------------------. .--------------.
- * |    |    |    |    |    |    |    |    |    |    |    |    |    |       | |    |    |Mou:|
- * |    |    |    |    |    |    |    |{   |[   |]   |}   |\   |    |       | |    |    |WhUp|
- * |------------------------------------------------------------------------| |--------------|
- * |      |    |    |    |    |    |    |    |    |    |    |    |~   |     | |    |    |Mou:|
- * |      |    |    |    |    |    |    |    |    |    |    |    |    |     | |    |    |WhDn|
- * |------------------------------------------------------------------\     | '--------------'
- * |CapsLck|Mou:|Mou:|    |    |    |    |    |    |    |    |    |    |    |
- * |       |Fast|Slow|    |    |    |    |    |    |    |    |    |    |    |
- * |------------------------------------------------------------------------|      .----.
- * |     |    |    |    |    |    |    |    |µ   |    |    |    |           |      |Mou:|
- * |     |    |    |    |    |    |    |    |    |    |    |    |           |      |Up  |
- * |------------------------------------------------------------------------| .--------------.
- * |Mous:|Mous:|     |                              |     |Super|App  |     | |Mou:|Mou:|Mou:|
- * |Bttn2|Bttn1|     |                              |     |     |     |     | |Left|Down|Righ|
- * '------------------------------------------------------------------------' '--------------'
- *
- */
-[FUN] = KEYMAP( \
-  CTALDEL,        KC_MYCM,KC_WHOM,KC_CALC,KC_MSEL,KC_MPRV,KC_MNXT,KC_MPLY,KC_MSTP,KC_MUTE,KC_VOLD,KC_VOLU,MO(RES),  _______,KC_SLCK,KC_PAUS, \
-  _______,_______,_______,_______,_______,_______,_______,G(7),   G(8),   G(9),   G(0),   G(MINS),_______,_______,  _______,_______,KC_WH_U, \
-  _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,G(RBRC),_______,  _______,_______,KC_WH_D, \
-  KC_CAPS,KC_ACL2,KC_ACL0,_______,_______,_______,_______,_______,_______,_______,_______,_______,/*NUHS*/_______,                           \
-  _______,_______,_______,_______,_______,_______,_______,_______,G(M),   _______,_______,_______,        _______,          KC_MS_U,         \
-  KC_BTN2,KC_BTN1,_______,                        _______,                        _______,KC_RGUI,KC_APP ,_______,   KC_MS_L,KC_MS_D,KC_MS_R),
-
-
-/* Layer 3: Reset layer (prevents accidental resets) */
-[RES] = KEYMAP( \
-  _______,        _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,  _______,_______,_______, \
-  _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,  _______,_______,_______, \
-  _______,_______,_______,_______,RESET,  _______,_______,_______,_______,_______,_______,_______,_______,_______,  _______,_______,_______, \
-  _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,/*NUHS*/_______,                           \
-  _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,        _______,          _______,         \
-  _______,_______,_______,                        _______,                        _______,_______,_______,_______,  _______,_______,_______),
-};
-
-qk_tap_dance_action_t tap_dance_actions[] = {
-  /* Tap once: nothing. Tap twice: Alt+F4 */
-  [AF4]  = ACTION_TAP_DANCE_DOUBLE(XXXXXXX,A(F4)),
-};
-
-void led_set_user(uint8_t usb_led) {
-  if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
-    ph_caps_led_on();
-  } else {
-    ph_caps_led_off();
-  }
-
-  if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
-    ph_sclk_led_on();
-    } else {
-    ph_sclk_led_off();
-  }
-}
diff --git a/keyboards/pegasushoof/keymaps/citadel/readme.md b/keyboards/pegasushoof/keymaps/citadel/readme.md
deleted file mode 100644 (file)
index 3618bae..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-# Citadel keymap for pegasushoof
-
-Designed for ISO-DE and similar ISO layouts. 
-
-The central idea of this keymap is to avoid unergonomic key combos that force the user to either press
-multiple keys with one hand or to use the left hand for right-sided keys. For instance, ISO-DE users
-have to press `AltGr`+`7` to type _{_. The keymap allows ergonomic access to the right-sided keys of the
-German AltGr-layer by turning `Caps Lock` into a hybrid Fn/AltGr-key. It can easily be adapted for other
-ISO layouts.
-
-The _Function_ layer also offers mouse emulation and function/media keys in the F-Row.
-
-`Pause/Break` is used as a safe _close key_: A _single tap_ does nothing, a _double tap_ executes ALT+F4.
-
-Named after the homonymous space station from _Mass Effect_. Made by [Daniel Rose](https://github.com/droseger/).
-
-## [1] Layers  
-
-### Layer 1 (Default)  
-    .----.   .-------------------. .-------------------. .-------------------. .--------------.  
-    |Esc |   |F1  |F2  |F3  |F4  | |F5  |F6  |F7  |F8  | |F9  |F10 |F11 |F12 | |PrSc|SLck|2Tp:|  
-    |    |   |    |    |    |    | |    |    |    |    | |    |    |    |    | |SyRq|    |A+F4|  
-    '----'   '-------------------' '-------------------' '-------------------' '--------------'  
-    .------------------------------------------------------------------------. .--------------.  
-    |°   |!   |"   |§   |$   |%   |&   |/   |(   |)   |=   |?   |`   |Backspa| |Ins |Home|PgUp|  
-    |^   |1   |2  Â²|3  Â³|4   |5   |6   |7  {|8  [|9  ]|0  }|ß  \|´   |       | |    |    |    |  
-    |------------------------------------------------------------------------| |--------------|  
-    |Tab   |Q   |W   |E   |R   |T   |Z   |U   |I   |O   |P   |Ãœ   |*   |  E  | |Del |End |PgDn|  
-    |      |    |    |   â‚¬|    |    |    |    |    |    |    |    |+  ~|  n  | |    |    |    |  
-    |------------------------------------------------------------------\  t  | '--------------'  
-    |Fn:    |A   |S   |D   |F   |G   |H   |J   |K   |L   |Ö   |Ä   |'   | e  |  
-    |Layer 2|    |    |    |    |    |    |    |    |    |    |    |#   | r  |  
-    |------------------------------------------------------------------------|      .----.  
-    |Shift|>   |Y   |X   |C   |V   |B   |N   |M   |;   |:   |_   |Shift      |      |Up  |  
-    |     |<  Â¦|    |    |    |    |    |    |   Âµ|,   |.   |-   |           |      |    |  
-    |------------------------------------------------------------------------| .--------------.  
-    |Ctrl |Super|Alt  |                              |AltGr|Alt  |Fn:  |Ctrl | |Left|Down|Righ|  
-    |     |     |     |                              |     |     |Lay 2|     | |    |    |    |  
-    '------------------------------------------------------------------------' '--------------'  
-
-### Layer 2 (Function)
-    .----.   .-------------------. .-------------------. .-------------------. .--------------.  
-    |Ctl+|   |My  |WWW:|Calc|Medi| |Mus:|Mus:|Mus:|Mus:| |Vol:|Vol:|Vol:|See:| |    |    |Paus|  
-    |A+De|   |Comp|Home|    |Play| |Prev|Next|Paus|Stop| |Mute|Down|Up  |[3] | |    |    |Brea|  
-    '----'   '-------------------' '-------------------' '-------------------' '--------------'  
-    .------------------------------------------------------------------------. .--------------.  
-    |    |    |    |    |    |    |    |    |    |    |    |    |    |       | |    |    |Mou:|  
-    |    |    |    |    |    |    |    |{   |[   |]   |}   |\   |    |       | |    |    |WhUp|  
-    |------------------------------------------------------------------------| |--------------|  
-    |      |    |    |    |    |    |    |    |    |    |    |    |~   |     | |    |    |Mou:|  
-    |      |    |    |    |    |    |    |    |    |    |    |    |    |     | |    |    |WhDn|  
-    |------------------------------------------------------------------\     | '--------------'  
-    |CapsLck|Mou:|Mou:|    |    |    |    |    |    |    |    |    |    |    |  
-    |       |Fast|Slow|    |    |    |    |    |    |    |    |    |    |    |  
-    |------------------------------------------------------------------------|      .----.  
-    |     |    |    |    |    |    |    |    |µ   |    |    |    |           |      |Mou:|  
-    |     |    |    |    |    |    |    |    |    |    |    |    |           |      |Up  |  
-    |------------------------------------------------------------------------| .--------------.  
-    |Mous:|Mous:|     |                              |     |Super|App  |     | |Mou:|Mou:|Mou:|  
-    |Bttn2|Bttn1|     |                              |     |     |     |     | |Left|Down|Righ|  
-    '------------------------------------------------------------------------' '--------------'  
-
-Layer 3 exists solely to prevent users from accidentally activating boot mode: `R` is redefined
-as `RESET` key [3].
-
-## [2] How to build and install
-1) Prerequisite: install the necessary [build tools](https://docs.qmk.fm/#/getting_started_build_tools)
-such as [dfu-programmer](https://github.com/dfu-programmer/dfu-programmer).
-   - You might need to [add udev rules](https://docs.qmk.fm/#/faq_build?id=can39t-program-on-linux) under Linux.
-2) To test if the keymap compiles, simply run `make pegasushoof:citadel`
-3) Enter the `qmk_firmware` root directory and run `make pegasushoof:citadel:dfu`
-4) Reset controller to _Boot mode_ by pressing the `RESET` key or by using a magnet.
-
-## [3] How to access Boot mode after install
-Press `Fn+F12+R`
diff --git a/keyboards/pegasushoof/keymaps/citadel/rules.mk b/keyboards/pegasushoof/keymaps/citadel/rules.mk
deleted file mode 100644 (file)
index 0dd8a79..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-# Build Options
-#   change to "no" to disable the options
-#
-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   = no   # Console for debug(+400)
-COMMAND_ENABLE   = no   # Commands for debug and configuration
-CUSTOM_MATRIX    = yes  # Custom matrix file for the Pegasus Hoof due to the 2x74HC42
-NKRO_ENABLE      = no   # 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  = no   # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
-TAP_DANCE_ENABLE = yes  # see https://docs.qmk.fm/#/feature_tap_dance (+1000)
-
-
-ifndef QUANTUM_DIR
-  include ../../../../Makefile
-endif
diff --git a/keyboards/pegasushoof/keymaps/default/keymap.c b/keyboards/pegasushoof/keymaps/default/keymap.c
deleted file mode 100644 (file)
index aa006b2..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
-Copyright 2016 Daniel Svensson <dsvensson@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "pegasushoof.h"
-
-#define _______ KC_TRNS
-
-#define KM_QWERTY  0
-#define KM_MEDIA   1
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-       /* Layer 0: Standard ISO layer */
-       [KM_QWERTY] = KEYMAP( \
-               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_PSCR,KC_SLCK,KC_PAUS, \
-               KC_GRV,  KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_MINS,KC_EQL, KC_BSPC,  KC_INS, KC_HOME,KC_PGUP, \
-               KC_TAB,  KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,   KC_LBRC,KC_RBRC,KC_BSLS,  KC_DEL, KC_END, KC_PGDN, \
-               KC_CLCK, 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_NUBS,KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,        KC_RSFT,          KC_UP,           \
-               KC_LCTL, KC_LGUI,KC_LALT,                       KC_SPC,                          KC_RALT,KC_RGUI,KC_MENU,KC_FN0,   KC_LEFT,KC_DOWN,KC_RGHT),
-       /* Layer 1: Function layer */
-       [KM_MEDIA] = KEYMAP( \
-               _______,        _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,   KC_WAKE,KC_PWR, KC_SLEP, \
-               _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,   _______,_______,KC_VOLU, \
-               _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,   _______,_______,KC_VOLD, \
-               _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,        _______,                            \
-               _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,        _______,           KC_MPLY,         \
-               _______,_______,_______,                        _______,                        _______,_______,RESET  ,_______,   KC_MPRV,KC_MSTP,KC_MNXT)
-};
-
-const uint16_t PROGMEM fn_actions[] = {
-       [0] = ACTION_LAYER_MOMENTARY(KM_MEDIA)
-};
-
-void led_set_user(uint8_t usb_led) {
-       if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
-               ph_caps_led_on();
-       } else {
-               ph_caps_led_off();
-       }
-
-       if (usb_led & (1 << USB_LED_SCROLL_LOCK)) {
-               ph_sclk_led_on();
-       } else {
-               ph_sclk_led_off();
-       }
-}
diff --git a/keyboards/pegasushoof/keymaps/default/rules.mk b/keyboards/pegasushoof/keymaps/default/rules.mk
deleted file mode 100644 (file)
index 168fb62..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-# 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 = yes      # 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
-CUSTOM_MATRIX = yes         # Custom matrix file for the Pegasus Hoof due to the 2x74HC42
-NKRO_ENABLE = no            # 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 = no        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
-
-
-ifndef QUANTUM_DIR
-       include ../../../../Makefile
-endif
diff --git a/keyboards/pegasushoof/matrix.c b/keyboards/pegasushoof/matrix.c
deleted file mode 100644 (file)
index d2a74b8..0000000
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
-Copyright 2014 Ralf Schmitt <ralf@bunkertor.net>
-Copyright 2016 Daniel Svensson <dsvensson@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <stdint.h>
-#include <stdbool.h>
-#include <avr/io.h>
-#include <util/delay.h>
-#include "wait.h"
-#include "print.h"
-#include "debug.h"
-#include "util.h"
-#include "matrix.h"
-
-static uint8_t debouncing = DEBOUNCING_DELAY;
-static matrix_row_t matrix[MATRIX_ROWS];
-static matrix_row_t matrix_debouncing[MATRIX_ROWS];
-
-static matrix_row_t read_cols(void);
-static void select_row(uint8_t col);
-
-inline uint8_t matrix_rows(void)
-{
-       return MATRIX_ROWS;
-}
-
-inline uint8_t matrix_cols(void)
-{
-       return MATRIX_COLS;
-}
-
-void matrix_init(void)
-{
-       /* Column output pins */
-       DDRD  |=  0b01111011;
-       /* Row input pins */
-       DDRC  &= ~0b10000000;
-       DDRB  &= ~0b01111111;
-       PORTC |=  0b10000000;
-       PORTB |=  0b01111111;
-
-       for (uint8_t i=0; i < MATRIX_ROWS; i++)  {
-               matrix[i] = 0;
-               matrix_debouncing[i] = 0;
-       }
-
-       matrix_init_quantum();
-}
-
-uint8_t matrix_scan(void)
-{
-       for (uint8_t col = 0; col < MATRIX_COLS; col++) {
-               select_row(col);
-               wait_us(30);
-               matrix_row_t rows = read_cols();
-               for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
-                       bool prev_bit = matrix_debouncing[row] & ((matrix_row_t)1<<col);
-                       bool curr_bit = rows & (1<<row);
-                       if (prev_bit != curr_bit) {
-                               matrix_debouncing[row] ^= (matrix_row_t) 1 << col;
-                               debouncing = DEBOUNCING_DELAY;
-                       }
-               }
-       }
-
-       if (debouncing) {
-               if (--debouncing) {
-                       wait_ms(1);
-               } else {
-                       for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
-                               matrix[i] = matrix_debouncing[i];
-                       }
-               }
-       }
-
-       matrix_scan_quantum();
-
-       return 1;
-}
-
-bool matrix_is_modified(void)
-{
-       if (debouncing)
-               return false;
-       return true;
-}
-
-inline
-bool matrix_is_on(uint8_t row, uint8_t col)
-{
-       return matrix[row] & 1 << col;
-}
-
-inline
-matrix_row_t matrix_get_row(uint8_t row)
-{
-       return matrix[row];
-}
-
-void matrix_print(void)
-{
-       print("\nr/c 0123456789ABCDEF\n");
-       for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
-               phex(row); print(": ");
-               pbin_reverse16(matrix_get_row(row));
-               print("\n");
-       }
-}
-
-uint8_t matrix_key_count(void)
-{
-       uint8_t count = 0;
-       for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
-               count += bitpop16(matrix[i]);
-       }
-       return count;
-}
-
-static matrix_row_t read_cols(void)
-{
-       return
-               (PINB & (1 << 5) ? 0 : 1 << 0) |
-               (PINC & (1 << 7) ? 0 : 1 << 1) |
-               (PINB & (1 << 4) ? 0 : 1 << 2) |
-               (PINB & (1 << 6) ? 0 : 1 << 3) |
-               (PINB & (1 << 1) ? 0 : 1 << 4) |
-               (PINB & (1 << 0) ? 0 : 1 << 5) |
-               (PINB & (1 << 3) ? 0 : 1 << 6) |
-               (PINB & (1 << 2) ? 0 : 1 << 7);
-}
-
-static void select_row(uint8_t col)
-{
-       switch (col) {
-               case 0:
-                       PORTD = (PORTD & ~0b01111011) | 0b00110011;
-                       break;
-               case 1:
-                       PORTD = (PORTD & ~0b01111011) | 0b01110000;
-                       break;
-               case 2:
-                       PORTD = (PORTD & ~0b01111011) | 0b00010011;
-                       break;
-               case 3:
-                       PORTD = (PORTD & ~0b01111011) | 0b01101000;
-                       break;
-               case 4:
-                       PORTD = (PORTD & ~0b01111011) | 0b00001011;
-                       break;
-               case 5:
-                       PORTD = (PORTD & ~0b01111011) | 0b00111011;
-                       break;
-               case 6:
-                       PORTD = (PORTD & ~0b01111011) | 0b01111000;
-                       break;
-               case 7:
-                       PORTD = (PORTD & ~0b01111011) | 0b01100001;
-                       break;
-               case 8:
-                       PORTD = (PORTD & ~0b01111011) | 0b01101001;
-                       break;
-               case 9:
-                       PORTD = (PORTD & ~0b01111011) | 0b01110001;
-                       break;
-               case 10:
-                       PORTD = (PORTD & ~0b01111011) | 0b01101010;
-                       break;
-               case 11:
-                       PORTD = (PORTD & ~0b01111011) | 0b01100010;
-                       break;
-               case 12:
-                       PORTD = (PORTD & ~0b01111011) | 0b01111001;
-                       break;
-               case 13:
-                       PORTD = (PORTD & ~0b01111011) | 0b01100000;
-                       break;
-               case 14:
-                       PORTD = (PORTD & ~0b01111011) | 0b01000011;
-                       break;
-               case 15:
-                       PORTD = (PORTD & ~0b01111011) | 0b00011011;
-                       break;
-               case 16:
-                       PORTD = (PORTD & ~0b01111011) | 0b00100011;
-                       break;
-               case 17:
-                       PORTD = (PORTD & ~0b01111011) | 0b00101011;
-                       break;
-       }
-}
diff --git a/keyboards/pegasushoof/pegasushoof.c b/keyboards/pegasushoof/pegasushoof.c
deleted file mode 100644 (file)
index cde8148..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
-Copyright 2016 Daniel Svensson <dsvensson@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "pegasushoof.h"
-
-
-extern inline void ph_caps_led_on(void);
-extern inline void ph_caps_led_off(void);
-
-extern inline void ph_sclk_led_on(void);
-extern inline void ph_sclk_led_off(void);
-
-
-__attribute__ ((weak))
-void matrix_init_user(void) {
-};
-
-__attribute__ ((weak))
-void matrix_scan_user(void) {
-}
-
-__attribute__ ((weak))
-bool process_action_user(keyrecord_t *record) {
-    return true;
-}
-
-__attribute__ ((weak))
-void led_set_user(uint8_t usb_led) {
-}
-
-void matrix_init_kb(void) {
-       matrix_init_user();
-}
-
-void matrix_scan_kb(void) {
-       matrix_scan_user();
-}
-
-bool process_action_kb(keyrecord_t *record) {
-       return process_action_user(record);
-}
-
-void led_set_kb(uint8_t usb_led) {
-       led_set_user(usb_led);
-}
diff --git a/keyboards/pegasushoof/pegasushoof.h b/keyboards/pegasushoof/pegasushoof.h
deleted file mode 100644 (file)
index d031e3e..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-Copyright 2016 Daniel Svensson <dsvensson@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef PEGASUSHOOF_H
-#define PEGASUSHOOF_H
-
-#include "matrix.h"
-#include "quantum.h"
-
-#define  ___ KC_NO
-
-#define KEYMAP( \
-       KG6,      KH4, KI4, KI2, KI6, KP5, KL6, KM2, KM4, KO4, KO5, KO6, KO0,   KN5, KN7, KP7, \
-       KG4, KG5, KH5, KI5, KJ5, KJ4, KK4, KK5, KL5, KM5, KF5, KF4, KL4, KO2,   KR4, KC4, KE4, \
-       KG2, KG7, KH7, KI7, KJ7, KJ2, KK2, KK7, KL7, KM7, KF7, KF2, KL2, KO3,   KQ4, KC5, KE5, \
-       KH2, KG3, KH3, KI3, KJ3, KJ6, KK6, KK3, KL3, KM3, KF3, KF6,      KO1,                  \
-       KB2, KH6, KG1, KH1, KI1, KJ1, KJ0, KK0, KK1, KL1, KM1, KF0,      KB3,        KC6,      \
-       KP4, KD2, KN6,                KQ6,                KN0, KA3, KM0, KP1,   KC0, KQ0, KR0  \
-       ) { /*        00-A  01-B  02-C  03-D  04-E  05-F  06-G  07-H  08-I  09-J  10-K  11-L  12-M  13-N  14-O  15-P  16-Q  17-R */ \
-               /* 0 */  { ___ , ___ , KC0 , ___ , ___ , KF0 , ___ , ___ , ___ , KJ0 , KK0 , ___ , KM0 , KN0 , KO0 , ___ , KQ0 , KR0 }, \
-               /* 1 */  { ___ , ___ , ___ , ___ , ___ , ___ , KG1 , KH1 , KI1 , KJ1 , KK1 , KL1 , KM1 , ___ , KO1 , KP1 , ___ , ___ }, \
-               /* 2 */  { ___ , KB2 , ___ , KD2 , ___ , KF2 , KG2 , KH2 , KI2 , KJ2 , KK2 , KL2 , KM2 , ___ , KO2 , ___ , ___ , ___ }, \
-               /* 3 */  { KA3 , KB3 , ___ , ___ , ___ , KF3 , KG3 , KH3 , KI3 , KJ3 , KK3 , KL3 , KM3 , ___ , KO3 , ___ , ___ , ___ }, \
-               /* 4 */  { ___ , ___ , KC4 , ___ , KE4 , KF4 , KG4 , KH4 , KI4 , KJ4 , KK4 , KL4 , KM4 , ___ , KO4 , KP4 , KQ4 , KR4 }, \
-               /* 5 */  { ___ , ___ , KC5 , ___ , KE5 , KF5 , KG5 , KH5 , KI5 , KJ5 , KK5 , KL5 , KM5 , KN5 , KO5 , KP5 , ___ , ___ }, \
-               /* 6 */  { ___ , ___ , KC6 , ___ , ___ , KF6 , KG6 , KH6 , KI6 , KJ6 , KK6 , KL6 , ___ , KN6 , KO6 , ___ , KQ6 , ___ }, \
-               /* 7 */  { ___ , ___ , ___ , ___ , ___ , KF7 , KG7 , KH7 , KI7 , KJ7 , KK7 , KL7 , KM7 , KN7 , ___ , KP7 , ___ , ___ }, \
-       }
-
-inline void ph_caps_led_on(void)  { DDRC |=  (1<<6); PORTC &= ~(1<<6); }
-inline void ph_caps_led_off(void) { DDRC &= ~(1<<6); PORTC &= ~(1<<6); }
-
-inline void ph_sclk_led_on(void)  { DDRC |=  (1<<5); PORTC &= ~(1<<5); }
-inline void ph_sclk_led_off(void) { DDRC &= ~(1<<5); PORTC &= ~(1<<5); }
-
-
-#endif
diff --git a/keyboards/pegasushoof/rules.mk b/keyboards/pegasushoof/rules.mk
deleted file mode 100644 (file)
index c5a3542..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-# MCU name
-MCU = atmega32u2
-
-# 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
-
-
-# Boot Section Size in *bytes*
-#   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 = yes      # 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
-NKRO_ENABLE = no            # 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 = no        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
-
-
-CUSTOM_MATRIX = yes
-SRC = matrix.c
diff --git a/keyboards/tiger_lily/config.h b/keyboards/tiger_lily/config.h
deleted file mode 100644 (file)
index 4908192..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef CONFIG_H
-#define CONFIG_H
-
-#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID       0xFEED
-#define PRODUCT_ID      0x6060
-#define DEVICE_VER      0x0001
-#define MANUFACTURER    Bathroom Epiphanies
-#define PRODUCT         tiger_lily
-#define DESCRIPTION     Tiger Lily controller for the Filco Majestouch 2
-
-/*
- * Frosty Flake Rev. 20140521 made by Bathroom Ephiphanies
- * Ported from the Bathroom Epiphanies TMK Firmware:
- * https://github.com/BathroomEpiphanies/epiphanies_tmk_keyboard/tree/master/be_controllers
- *
- */
-
-/* key matrix size */
-#define MATRIX_ROWS 8   // Row0 - Row7 in the schematic
-#define MATRIX_COLS 18  // ColA - ColR in the schematic
-
-/*
- * Keyboard Matrix Assignments
- */
-#define UNUSED_PINS { B0, C4, D3 }
-
-/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
-#define DEBOUNCING_DELAY 5
-
-/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-#define LOCKING_SUPPORT_ENABLE
-/* Locking resynchronize hack */
-#define LOCKING_RESYNC_ENABLE
-
-/*
- * Force NKRO
- *
- * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
- * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
- * makefile for this to work.)
- *
- * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
- * until the next keyboard reset.
- *
- * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
- * fully operational during normal computer usage.
- *
- * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
- * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
- * bootmagic, NKRO mode will always be enabled until it is toggled again during a
- * power-up.
- *
- */
-//#define FORCE_NKRO
-
-/*
- * Magic Key Options
- *
- * Magic keys are hotkey commands that allow control over firmware functions of
- * the keyboard. They are best used in combination with the HID Listen program,
- * found here: https://www.pjrc.com/teensy/hid_listen.html
- *
- * The options below allow the magic key functionality to be changed. This is
- * useful if your keyboard/keypad is missing keys and you want magic key support.
- *
- */
-
-/* key combination for magic key command */
-#define IS_COMMAND() ( \
-    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
-)
-
-/* control how magic key switches layers */
-//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS  true
-//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS  true
-//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
-
-/* override magic key keymap */
-//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
-//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
-//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
-//#define MAGIC_KEY_HELP1          H
-//#define MAGIC_KEY_HELP2          SLASH
-//#define MAGIC_KEY_DEBUG          D
-//#define MAGIC_KEY_DEBUG_MATRIX   X
-//#define MAGIC_KEY_DEBUG_KBD      K
-//#define MAGIC_KEY_DEBUG_MOUSE    M
-//#define MAGIC_KEY_VERSION        V
-//#define MAGIC_KEY_STATUS         S
-//#define MAGIC_KEY_CONSOLE        C
-//#define MAGIC_KEY_LAYER0_ALT1    ESC
-//#define MAGIC_KEY_LAYER0_ALT2    GRAVE
-//#define MAGIC_KEY_LAYER0         0
-//#define MAGIC_KEY_LAYER1         1
-//#define MAGIC_KEY_LAYER2         2
-//#define MAGIC_KEY_LAYER3         3
-//#define MAGIC_KEY_LAYER4         4
-//#define MAGIC_KEY_LAYER5         5
-//#define MAGIC_KEY_LAYER6         6
-//#define MAGIC_KEY_LAYER7         7
-//#define MAGIC_KEY_LAYER8         8
-//#define MAGIC_KEY_LAYER9         9
-//#define MAGIC_KEY_BOOTLOADER     PAUSE
-//#define MAGIC_KEY_LOCK           CAPS
-//#define MAGIC_KEY_EEPROM         E
-//#define MAGIC_KEY_NKRO           N
-//#define MAGIC_KEY_SLEEP_LED      Z
-
-/*
- * Feature disable options
- *  These options are also useful to firmware size reduction.
- */
-
-/* disable debug print */
-//#define NO_DEBUG
-
-/* disable print */
-//#define NO_PRINT
-
-/* disable action features */
-//#define NO_ACTION_LAYER
-//#define NO_ACTION_TAPPING
-//#define NO_ACTION_ONESHOT
-//#define NO_ACTION_MACRO
-//#define NO_ACTION_FUNCTION
-
-#endif
diff --git a/keyboards/tiger_lily/info.json b/keyboards/tiger_lily/info.json
deleted file mode 100644 (file)
index 1a2194b..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-  "keyboard_name": "tiger_lily",
-  "url": "",
-  "maintainer": "qmk",
-  "width": 22.5,
-  "height": 6.5,
-  "layouts": {
-    "LAYOUT": {
-      "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "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":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Num Lock", "x":18.5, "y":1.5}, {"label":"/", "x":19.5, "y":1.5}, {"label":"*", "x":20.5, "y":1.5}, {"label":"-", "x":21.5, "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":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"7", "x":18.5, "y":2.5}, {"label":"8", "x":19.5, "y":2.5}, {"label":"9", "x":20.5, "y":2.5}, {"label":"+", "x":21.5, "y":2.5, "h":2}, {"label":"Caps Lock", "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":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"4", "x":18.5, "y":3.5}, {"label":"5", "x":19.5, "y":3.5}, {"label":"6", "x":20.5, "y":3.5}, {"label":"Shift", "x":0, "y":4.5, "w":1.25}, {"label":"|", "x":1.25, "y":4.5}, {"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":"N", "x":7.25, "y":4.5}, {"label":"M", "x":8.25, "y":4.5}, {"label":"<", "x":9.25, "y":4.5}, {"label":">", "x":10.25, "y":4.5}, {"label":"?", "x":11.25, "y":4.5}, {"label":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"1", "x":18.5, "y":4.5}, {"label":"2", "x":19.5, "y":4.5}, {"label":"3", "x":20.5, "y":4.5}, {"label":"Enter", "x":21.5, "y":4.5, "h":2}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":10, "y":5.5, "w":1.25}, {"label":"Win", "x":11.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}, {"label":"0", "x":18.5, "y":5.5, "w":2}, {"label":".", "x":20.5, "y":5.5}]
-    },
-    "LAYOUT_fullsize_ansi": {
-      "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "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":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Num Lock", "x":18.5, "y":1.5}, {"label":"/", "x":19.5, "y":1.5}, {"label":"*", "x":20.5, "y":1.5}, {"label":"-", "x":21.5, "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":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"7", "x":18.5, "y":2.5}, {"label":"8", "x":19.5, "y":2.5}, {"label":"9", "x":20.5, "y":2.5}, {"label":"+", "x":21.5, "y":2.5, "h":2}, {"label":"Caps Lock", "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":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"4", "x":18.5, "y":3.5}, {"label":"5", "x":19.5, "y":3.5}, {"label":"6", "x":20.5, "y":3.5}, {"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":"N", "x":7.25, "y":4.5}, {"label":"M", "x":8.25, "y":4.5}, {"label":"<", "x":9.25, "y":4.5}, {"label":">", "x":10.25, "y":4.5}, {"label":"?", "x":11.25, "y":4.5}, {"label":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"1", "x":18.5, "y":4.5}, {"label":"2", "x":19.5, "y":4.5}, {"label":"3", "x":20.5, "y":4.5}, {"label":"Enter", "x":21.5, "y":4.5, "h":2}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":10, "y":5.5, "w":1.25}, {"label":"Win", "x":11.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}, {"label":"0", "x":18.5, "y":5.5, "w":2}, {"label":".", "x":20.5, "y":5.5}]
-    }
-  }
-}
diff --git a/keyboards/tiger_lily/keymaps/default/config.h b/keyboards/tiger_lily/keymaps/default/config.h
deleted file mode 100644 (file)
index 8893d12..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-// place overrides here
-
-#endif
diff --git a/keyboards/tiger_lily/keymaps/default/keymap.c b/keyboards/tiger_lily/keymaps/default/keymap.c
deleted file mode 100644 (file)
index 46c17ac..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#include QMK_KEYBOARD_H
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = LAYOUT(\
-       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_PSCR,KC_SLCK,KC_PAUS,                        \
-       KC_GRV,   KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,KC_MINS, KC_EQL,KC_BSPC,   KC_INS,KC_HOME,KC_PGUP,  KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \
-       KC_TAB,   KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,KC_LBRC,KC_RBRC,KC_BSLS,   KC_DEL, KC_END,KC_PGDN,    KC_P7,  KC_P8,  KC_P9,KC_PPLS, \
-      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_P4,  KC_P5,  KC_P6,      \
-      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_UP,            KC_P1,  KC_P2,  KC_P3,KC_PENT, \
-      KC_LCTL,KC_LGUI,KC_LALT,                 KC_SPC,                                KC_RALT,KC_RGUI, KC_APP,KC_RCTL,  KC_LEFT,KC_DOWN,KC_RGHT,    KC_P0,KC_PDOT)
-};
\ No newline at end of file
diff --git a/keyboards/tiger_lily/keymaps/default/readme.md b/keyboards/tiger_lily/keymaps/default/readme.md
deleted file mode 100644 (file)
index 4626859..0000000
+++ /dev/null
@@ -1 +0,0 @@
-# The default keymap for tiger_lily
diff --git a/keyboards/tiger_lily/keymaps/default/rules.mk b/keyboards/tiger_lily/keymaps/default/rules.mk
deleted file mode 100644 (file)
index 9d3df59..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-# 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 = yes       # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes       # 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 = no        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
-SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
-
-ifndef QUANTUM_DIR
-       include ../../../../Makefile
-endif
diff --git a/keyboards/tiger_lily/keymaps/default_ansi/config.h b/keyboards/tiger_lily/keymaps/default_ansi/config.h
deleted file mode 100644 (file)
index 8893d12..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "../../config.h"
-
-// place overrides here
-
-#endif
diff --git a/keyboards/tiger_lily/keymaps/default_ansi/keymap.c b/keyboards/tiger_lily/keymaps/default_ansi/keymap.c
deleted file mode 100644 (file)
index 6457b02..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#include QMK_KEYBOARD_H
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = LAYOUT_fullsize_ansi(\
-       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_PSCR,KC_SLCK,KC_PAUS,                        \
-       KC_GRV,   KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,KC_MINS, KC_EQL,KC_BSPC,   KC_INS,KC_HOME,KC_PGUP,  KC_NLCK,KC_PSLS,KC_PAST,KC_PMNS, \
-       KC_TAB,   KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,KC_LBRC,KC_RBRC,KC_BSLS,   KC_DEL, KC_END,KC_PGDN,    KC_P7,  KC_P8,  KC_P9,KC_PPLS, \
-      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_P4,  KC_P5,  KC_P6,      \
-      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_UP,            KC_P1,  KC_P2,  KC_P3,KC_PENT, \
-      KC_LCTL,KC_LGUI,KC_LALT,                 KC_SPC,                                KC_RALT,KC_RGUI, KC_APP,KC_RCTL,  KC_LEFT,KC_DOWN,KC_RGHT,    KC_P0,KC_PDOT)
-};
\ No newline at end of file
diff --git a/keyboards/tiger_lily/keymaps/default_ansi/readme.md b/keyboards/tiger_lily/keymaps/default_ansi/readme.md
deleted file mode 100644 (file)
index 2cb8c89..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-# default_ansi
-
-A standard fullsize ANSI-layout keymap for Tiger Lily-powered keyboards.
diff --git a/keyboards/tiger_lily/keymaps/default_ansi/rules.mk b/keyboards/tiger_lily/keymaps/default_ansi/rules.mk
deleted file mode 100644 (file)
index 9d3df59..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-# 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 = yes       # Mouse keys(+4700)
-EXTRAKEY_ENABLE = yes       # 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 = no        # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
-SLEEP_LED_ENABLE = no       # Breathing sleep LED during USB suspend
-
-ifndef QUANTUM_DIR
-       include ../../../../Makefile
-endif
diff --git a/keyboards/tiger_lily/matrix.c b/keyboards/tiger_lily/matrix.c
deleted file mode 100644 (file)
index d3a0d7e..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
-  Copyright 2017 Gabriel Young <gabeplaysdrums@live.com>
-
-  This program is free software: you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation, either version 2 of the License, or
-  (at your option) any later version.
-
-  This program is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  You should have received a copy of the GNU General Public License
-  along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <stdint.h>
-#include <stdbool.h>
-#include <avr/io.h>
-#include <util/delay.h>
-#include "print.h"
-#include "debug.h"
-#include "util.h"
-#include "matrix.h"
-
-#ifndef DEBOUNCING_DELAY
-#   define DEBOUNCING_DELAY 5
-#endif
-static uint8_t debouncing = DEBOUNCING_DELAY;
-
-static matrix_row_t matrix[MATRIX_ROWS];
-static matrix_row_t matrix_debouncing[MATRIX_ROWS];
-
-static matrix_row_t scan_col(void) {
-    return (
-               (PINC&(1<<2) ? 0 : ((matrix_row_t)1<<0)) | \
-               (PINB&(1<<3) ? 0 : ((matrix_row_t)1<<1)) | \
-               (PINB&(1<<4) ? 0 : ((matrix_row_t)1<<2)) | \
-               (PINB&(1<<2) ? 0 : ((matrix_row_t)1<<3)) | \
-               (PINB&(1<<1) ? 0 : ((matrix_row_t)1<<4)) | \
-               (PINC&(1<<7) ? 0 : ((matrix_row_t)1<<5)) | \
-               (PINB&(1<<6) ? 0 : ((matrix_row_t)1<<6)) | \
-               (PINB&(1<<5) ? 0 : ((matrix_row_t)1<<7))
-       );
-}
-
-static void select_col(uint8_t col) {
-    switch (col) {
-        case  0: PORTD = (PORTD & ~0b01110111) | 0b01110110; break; \
-               case  1: PORTD = (PORTD & ~0b01110111) | 0b01100001; break; \
-               case  2: PORTD = (PORTD & ~0b01110111) | 0b01100101; break; \
-               case  3: PORTD = (PORTD & ~0b01110111) | 0b00000011; break; \
-               case  4: PORTD = (PORTD & ~0b01110111) | 0b00000111; break; \
-               case  5: PORTD = (PORTD & ~0b01110111) | 0b00010011; break; \
-               case  6: PORTD = (PORTD & ~0b01110111) | 0b00010111; break; \
-               case  7: PORTD = (PORTD & ~0b01110111) | 0b00100011; break; \
-               case  8: PORTD = (PORTD & ~0b01110111) | 0b00100111; break; \
-               case  9: PORTD = (PORTD & ~0b01110111) | 0b00110011; break; \
-               case 10: PORTD = (PORTD & ~0b01110111) | 0b01110010; break; \
-               case 11: PORTD = (PORTD & ~0b01110111) | 0b01100110; break; \
-               case 12: PORTD = (PORTD & ~0b01110111) | 0b01110000; break; \
-               case 13: PORTD = (PORTD & ~0b01110111) | 0b01100100; break; \
-               case 14: PORTD = (PORTD & ~0b01110111) | 0b01100000; break; \
-               case 15: PORTD = (PORTD & ~0b01110111) | 0b01000111; break; \
-               case 16: PORTD = (PORTD & ~0b01110111) | 0b01000011; break; \
-               case 17: PORTD = (PORTD & ~0b01110111) | 0b00110111; break;
-    }
-}
-
-void matrix_init(void) {
-    /* Column output pins */ \
-       DDRD  |=  0b01110111;    \
-       /* Row input pins */     \
-       DDRC  &= ~0b10000100;    \
-       DDRB  &= ~0b01111110;    \
-       PORTC |=  0b10000100;    \
-       PORTB |=  0b01111110;
-
-    for (uint8_t i=0; i < MATRIX_ROWS; i++)
-        matrix[i] = matrix_debouncing[i] = 0;
-
-    matrix_init_quantum();
-}
-
-uint8_t matrix_scan(void) {
-    for (uint8_t col = 0; col < MATRIX_COLS; col++) {
-        select_col(col);
-        _delay_us(3);
-        matrix_row_t col_scan = scan_col();
-        for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
-            bool prev_bit = matrix_debouncing[row] & ((matrix_row_t)1<<col);
-            bool curr_bit = col_scan & (1<<row);
-            if (prev_bit != curr_bit) {
-                matrix_debouncing[row] ^= ((matrix_row_t)1<<col);
-                debouncing = DEBOUNCING_DELAY;
-            }
-        }
-    }
-
-    if (debouncing) {
-        if (--debouncing)
-            _delay_ms(1);
-        else
-            for (uint8_t i = 0; i < MATRIX_ROWS; i++)
-                matrix[i] = matrix_debouncing[i];
-    }
-
-    matrix_scan_quantum();
-    return 1;
-}
-
-inline matrix_row_t matrix_get_row(uint8_t row) {
-    return matrix[row];
-}
-
-void matrix_print(void) {
-       #ifndef NO_PRINT
-    print("\nr\\c ABCDEFGHIJKLMNOPQR\n");
-    for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
-        matrix_row_t matrix_row = matrix_get_row(row);
-        xprintf("%02X: ", row);
-        for (uint8_t col = 0; col < MATRIX_COLS; col++) {
-            bool curr_bit = matrix_row & (1<<col);
-            xprintf("%c", curr_bit ? '*' : '.');
-        }
-        print("\n");
-    }
-       #endif
-}
-
-uint8_t matrix_key_count(void) {
-    uint8_t count = 0;
-    for (uint8_t row = 0; row < MATRIX_ROWS; row++)
-        count += bitpop32(matrix[row]);
-    return count;
-}
\ No newline at end of file
diff --git a/keyboards/tiger_lily/readme.md b/keyboards/tiger_lily/readme.md
deleted file mode 100644 (file)
index 37073de..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-tiger_lily
-==========
-
-This is the firmware for Rev. 20161114 of the Tiger Lily controller by [Bathroom Epiphanies](http://bathroomepiphanies.com/controllers/), a replacement controller for the [Filco Majestouch 2 104 key](https://mechanicalkeyboards.com/shop/index.php?l=product_detail&p=1819). Bathroom Epiphanies has advised that the source is also compatible with the Black Petal controller, however I do not own an example to test against.
-
-The code was adapted from the [BathroomEpiphanies TMK Firmware](https://github.com/BathroomEpiphanies/epiphanies_tmk_keyboard/tree/master/be_controllers).
-
-Keyboard Maintainer: QMK Community  
-Hardware Supported: Tiger Lily  
-Hardware Availability: https://geekhack.org/index.php?topic=46700.0
-
-Make example for this keyboard (after setting up your build environment):
-
-    make tiger_lily:default
-
-See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
diff --git a/keyboards/tiger_lily/rules.mk b/keyboards/tiger_lily/rules.mk
deleted file mode 100644 (file)
index 8f07bb0..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-# MCU name
-#MCU = at90usb1287
-MCU = atmega32u2
-
-# 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
-
-
-# Boot Section Size in *bytes*
-#   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
-MIDI_ENABLE = no            # MIDI controls
-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
-
-CUSTOM_MATRIX = yes
-SRC += matrix.c
-
-LAYOUTS = fullsize_ansi
diff --git a/keyboards/tiger_lily/tiger_lily.c b/keyboards/tiger_lily/tiger_lily.c
deleted file mode 100644 (file)
index d2e7ba7..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-#include "tiger_lily.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) {
-    DDRB |= (1<<7);
-    DDRC |= (1<<5) | (1<<6);
-
-    print_dec(usb_led);
-
-    if (usb_led & (1<<USB_LED_NUM_LOCK))
-        PORTC &= ~(1<<5);
-    else
-        PORTC |=  (1<<5);
-
-    if (usb_led & (1<<USB_LED_SCROLL_LOCK))
-        PORTB &= ~(1<<7);
-    else
-        PORTB |=  (1<<7);
-
-    if (usb_led & (1<<USB_LED_CAPS_LOCK))
-        PORTC &= ~(1<<6);
-    else
-        PORTC |=  (1<<6);
-
-    led_set_user(usb_led);
-}
-
-__attribute__ ((weak))
-void matrix_init_user(void) {
-}
-
-__attribute__ ((weak))
-void matrix_scan_user(void) {
-}
-
-__attribute__ ((weak))
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-  return true;
-}
-
-__attribute__ ((weak))
-void led_set_user(uint8_t usb_led) {
-}
\ No newline at end of file
diff --git a/keyboards/tiger_lily/tiger_lily.h b/keyboards/tiger_lily/tiger_lily.h
deleted file mode 100644 (file)
index 65e4d91..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-#ifndef TIGER_LILY_H
-#define TIGER_LILY_H
-
-#include "quantum.h"
-
-// This a shortcut to help you visually see your layout.
-// The following is an example using the Planck MIT layout
-// The first section contains all of the arguements
-// The second converts the arguments into a two-dimensional array
-
-/*
-  Matrix col/row mapping
-
-  ,----.    ,-------------------. ,-------------------. ,-------------------. ,--------------.
-  | J6 |    | I4 | H4 | H2 | H6 | | A7 | E6 | D2 | D4 | | B4 | B7 | B6 | B0 | | C7 | C5 | A5 |
-  `----'    `-------------------' `-------------------' `-------------------' `--------------'
-  ,-------------------------------------------------------------------------. ,--------------. ,-------------------.
-  | J4 | J7 | I7 | H7 | G7 | G4 | F4 | F7 | E7 | D7 | R7 | R4 | E4 |     B2 | | L4 | O4 | Q4 | | K1 | L1 | Q1 | Q0 |
-  |-------------------------------------------------------------------------| |--------------| |-------------------|
-  | J2   | J5 | I5 | H5 | G5 | G2 | F2 | F5 | E5 | D5 | R5 | R2 | E2 |   B3 | | K4 | O7 | Q7 | | K5 | L5 | Q5 | O5 |
-  |-------------------------------------------------------------------------| '--------------' |--------------     |
-  | O5    | J3 | I3 | H3 | G3 | G6 | F6 | F3 | E3 | D3 | R3 | R6 |       B1 |                  | K2 | L2 | Q2 |    |
-  |-------------------------------------------------------------------------|      ,----.      |-------------------|
-  | N2      | J1 | I1 | H1 | G1 | G0 | F0 | F1 | E1 | D1 | R0 |          N3 |      | O6 |      | K3 | L3 | Q3 | O3 |
-  |-------------------------------------------------------------------------| ,--------------. |--------------     |
-  | A4 | P2 | C6 |                  K6                  | C0 | M3 | D0 | A1 | | O0 | K0 | L0 | | L6      | Q6 |    |
-  `-------------------------------------------------------------------------' `--------------' `-------------------'
-*/
-#define LAYOUT( \
-  KJ6,      KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0,   KC7, KC5, KA5,                       \
-  KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2,   KL4, KO4, KQ4,   KK1, KL1, KQ1, KQ0, \
-  KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3,   KK4, KO7, KQ7,   KK5, KL5, KQ5, KO5, \
-  KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6,      KB1,                    KK2, KL2, KQ2,      \
-  KN2, KI6, KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0,      KN3,        KO6,        KK3, KL3, KQ3, KO3, \
-  KA4, KP2, KC6,                KK6,                KC0, KM3, KD0, KA1,   KO0, KK0, KL0,   KL6,      KQ6       \
-) \
-{ \
-/* Columns and rows need to be swapped in the below definition */ \
-/*          A       B       C       D       E       F       G       H       I       J       K       L       M       N       O       P       Q       R       */ \
-/* 0 */ {   KC_NO,  KB0,    KC0,    KD0,    KC_NO,  KF0,    KG0,    KC_NO,  KC_NO,  KC_NO,  KK0,    KL0,    KC_NO,  KC_NO,  KO0,    KC_NO,  KQ0,    KR0     }, \
-/* 1 */ {   KA1,    KB1,    KC_NO,  KD1,    KE1,    KF1,    KG1,    KH1,    KI1,    KJ1,    KK1,    KL1,    KC_NO,  KC_NO,  KC_NO,  KC_NO,  KQ1,    KC_NO   }, \
-/* 2 */ {   KC_NO,  KB2,    KC_NO,  KD2,    KE2,    KF2,    KG2,    KH2,    KI2,    KJ2,    KK2,    KL2,    KC_NO,  KN2,    KC_NO,  KP2,    KQ2,    KR2     }, \
-/* 3 */ {   KC_NO,  KB3,    KC_NO,  KD3,    KE3,    KF3,    KG3,    KH3,    KI3,    KJ3,    KK3,    KL3,    KM3,    KN3,    KO3,    KC_NO,  KQ3,    KR3     }, \
-/* 4 */ {   KA4,    KB4,    KC_NO,  KD4,    KE4,    KF4,    KG4,    KH4,    KI4,    KJ4,    KK4,    KL4,    KC_NO,  KC_NO,  KO4,    KC_NO,  KQ4,    KR4     }, \
-/* 5 */ {   KA5,    KC_NO,  KC5,    KD5,    KE5,    KF5,    KG5,    KH5,    KI5,    KJ5,    KK5,    KL5,    KC_NO,  KC_NO,  KO5,    KC_NO,  KQ5,    KR5     }, \
-/* 6 */ {   KC_NO,  KB6,    KC6,    KC_NO,  KE6,    KF6,    KG6,    KH6,    KI6,    KJ6,    KK6,    KL6,    KC_NO,  KC_NO,  KO6,    KC_NO,  KQ6,    KR6     }, \
-/* 7 */ {   KA7,    KB7,    KC7,    KD7,    KE7,    KF7,    KG7,    KH7,    KI7,    KJ7,    KC_NO,  KC_NO,  KC_NO,  KC_NO,  KO7,    KC_NO,  KQ7,    KR7     }  \
-}
-
-#define LAYOUT_fullsize_ansi( \
-  KJ6,      KI4, KH4, KH2, KH6, KA7, KE6, KD2, KD4, KB4, KB7, KB6, KB0,   KC7, KC5, KA5,                       \
-  KJ4, KJ7, KI7, KH7, KG7, KG4, KF4, KF7, KE7, KD7, KR7, KR4, KE4, KB2,   KL4, KO4, KQ4,   KK1, KL1, KQ1, KQ0, \
-  KJ2, KJ5, KI5, KH5, KG5, KG2, KF2, KF5, KE5, KD5, KR5, KR2, KE2, KB3,   KK4, KO7, KQ7,   KK5, KL5, KQ5, KO5, \
-  KI2, KJ3, KI3, KH3, KG3, KG6, KF6, KF3, KE3, KD3, KR3, KR6,      KB1,                    KK2, KL2, KQ2,      \
-  KN2,      KJ1, KI1, KH1, KG1, KG0, KF0, KF1, KE1, KD1, KR0,      KN3,        KO6,        KK3, KL3, KQ3, KO3, \
-  KA4, KP2, KC6,                KK6,                KC0, KM3, KD0, KA1,   KO0, KK0, KL0,   KL6,      KQ6       \
-) \
-{ \
-/* Columns and rows need to be swapped in the below definition */ \
-/*          A       B       C       D       E       F       G       H       I       J       K       L       M       N       O       P       Q       R       */ \
-/* 0 */ {   KC_NO,  KB0,    KC0,    KD0,    KC_NO,  KF0,    KG0,    KC_NO,  KC_NO,  KC_NO,  KK0,    KL0,    KC_NO,  KC_NO,  KO0,    KC_NO,  KQ0,    KR0     }, \
-/* 1 */ {   KA1,    KB1,    KC_NO,  KD1,    KE1,    KF1,    KG1,    KH1,    KI1,    KJ1,    KK1,    KL1,    KC_NO,  KC_NO,  KC_NO,  KC_NO,  KQ1,    KC_NO   }, \
-/* 2 */ {   KC_NO,  KB2,    KC_NO,  KD2,    KE2,    KF2,    KG2,    KH2,    KI2,    KJ2,    KK2,    KL2,    KC_NO,  KN2,    KC_NO,  KP2,    KQ2,    KR2     }, \
-/* 3 */ {   KC_NO,  KB3,    KC_NO,  KD3,    KE3,    KF3,    KG3,    KH3,    KI3,    KJ3,    KK3,    KL3,    KM3,    KN3,    KO3,    KC_NO,  KQ3,    KR3     }, \
-/* 4 */ {   KA4,    KB4,    KC_NO,  KD4,    KE4,    KF4,    KG4,    KH4,    KI4,    KJ4,    KK4,    KL4,    KC_NO,  KC_NO,  KO4,    KC_NO,  KQ4,    KR4     }, \
-/* 5 */ {   KA5,    KC_NO,  KC5,    KD5,    KE5,    KF5,    KG5,    KH5,    KI5,    KJ5,    KK5,    KL5,    KC_NO,  KC_NO,  KO5,    KC_NO,  KQ5,    KR5     }, \
-/* 6 */ {   KC_NO,  KB6,    KC6,    KC_NO,  KE6,    KF6,    KG6,    KH6,    KC_NO,  KJ6,    KK6,    KL6,    KC_NO,  KC_NO,  KO6,    KC_NO,  KQ6,    KR6     }, \
-/* 7 */ {   KA7,    KB7,    KC7,    KD7,    KE7,    KF7,    KG7,    KH7,    KI7,    KJ7,    KC_NO,  KC_NO,  KC_NO,  KC_NO,  KO7,    KC_NO,  KQ7,    KR7     }  \
-}
-
-#endif
diff --git a/keyboards/unloved_bastard/config.h b/keyboards/unloved_bastard/config.h
deleted file mode 100644 (file)
index d89e858..0000000
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
-Copyright 2018 Alexander Fougner <fougner89 at gmail.com>
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef CONFIG_H
-#define CONFIG_H
-
-#include "config_common.h"
-
-/* USB Device descriptor parameter */
-#define VENDOR_ID       0xFEED
-#define PRODUCT_ID      0x1337
-#define DEVICE_VER      0x0001
-#define MANUFACTURER    BathroomEpiphanies
-#define PRODUCT         Unloved Bastard
-#define DESCRIPTION     Unloved Bastard controller for CM Masterkeys S
-
-/* key matrix size */
-#define MATRIX_ROWS 8
-#define MATRIX_COLS 18
-
-/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
-#define DEBOUNCING_DELAY 5
-
-/* define if matrix has ghost (lacks anti-ghosting diodes) */
-//#define MATRIX_HAS_GHOST
-
-/* number of backlight levels */
-
-/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
-#define LOCKING_SUPPORT_ENABLE
-/* Locking resynchronize hack */
-#define LOCKING_RESYNC_ENABLE
-
-/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
- * This is userful for the Windows task manager shortcut (ctrl+shift+esc).
- */
-// #define GRAVE_ESC_CTRL_OVERRIDE
-
-/*
- * Force NKRO
- *
- * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
- * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
- * makefile for this to work.)
- *
- * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
- * until the next keyboard reset.
- *
- * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
- * fully operational during normal computer usage.
- *
- * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
- * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
- * bootmagic, NKRO mode will always be enabled until it is toggled again during a
- * power-up.
- *
- */
-//#define FORCE_NKRO
-
-/*
- * Magic Key Options
- *
- * Magic keys are hotkey commands that allow control over firmware functions of
- * the keyboard. They are best used in combination with the HID Listen program,
- * found here: https://www.pjrc.com/teensy/hid_listen.html
- *
- * The options below allow the magic key functionality to be changed. This is
- * useful if your keyboard/keypad is missing keys and you want magic key support.
- *
- */
-
-/* key combination for magic key command */
-#define IS_COMMAND() ( \
-    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
-)
-
-/* control how magic key switches layers */
-//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS  true
-//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS  true
-//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
-
-/* override magic key keymap */
-//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
-//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
-//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
-//#define MAGIC_KEY_HELP1          H
-//#define MAGIC_KEY_HELP2          SLASH
-//#define MAGIC_KEY_DEBUG          D
-//#define MAGIC_KEY_DEBUG_MATRIX   X
-//#define MAGIC_KEY_DEBUG_KBD      K
-//#define MAGIC_KEY_DEBUG_MOUSE    M
-//#define MAGIC_KEY_VERSION        V
-//#define MAGIC_KEY_STATUS         S
-//#define MAGIC_KEY_CONSOLE        C
-//#define MAGIC_KEY_LAYER0_ALT1    ESC
-//#define MAGIC_KEY_LAYER0_ALT2    GRAVE
-//#define MAGIC_KEY_LAYER0         0
-//#define MAGIC_KEY_LAYER1         1
-//#define MAGIC_KEY_LAYER2         2
-//#define MAGIC_KEY_LAYER3         3
-//#define MAGIC_KEY_LAYER4         4
-//#define MAGIC_KEY_LAYER5         5
-//#define MAGIC_KEY_LAYER6         6
-//#define MAGIC_KEY_LAYER7         7
-//#define MAGIC_KEY_LAYER8         8
-//#define MAGIC_KEY_LAYER9         9
-//#define MAGIC_KEY_BOOTLOADER     PAUSE
-//#define MAGIC_KEY_LOCK           CAPS
-//#define MAGIC_KEY_EEPROM         E
-//#define MAGIC_KEY_NKRO           N
-//#define MAGIC_KEY_SLEEP_LED      Z
-
-/*
- * Feature disable options
- *  These options are also useful to firmware size reduction.
- */
-
-/* disable debug print */
-//#define NO_DEBUG
-
-/* disable print */
-//#define NO_PRINT
-
-/* disable action features */
-//#define NO_ACTION_LAYER
-//#define NO_ACTION_TAPPING
-//#define NO_ACTION_ONESHOT
-//#define NO_ACTION_MACRO
-//#define NO_ACTION_FUNCTION
-
-/*
- * MIDI options
- */
-
-/* Prevent use of disabled MIDI features in the keymap */
-//#define MIDI_ENABLE_STRICT 1
-
-/* enable basic MIDI features:
-   - MIDI notes can be sent when in Music mode is on
-*/
-//#define MIDI_BASIC
-
-/* enable advanced MIDI features:
-   - MIDI notes can be added to the keymap
-   - Octave shift and transpose
-   - Virtual sustain, portamento, and modulation wheel
-   - etc.
-*/
-//#define MIDI_ADVANCED
-
-/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
-//#define MIDI_TONE_KEYCODE_OCTAVES 1
-
-#endif
diff --git a/keyboards/unloved_bastard/info.json b/keyboards/unloved_bastard/info.json
deleted file mode 100644 (file)
index efa9950..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "keyboard_name": "unloved_bastard",
-  "url": "",
-  "maintainer": "qmk",
-  "bootloader": "",
-  "width": 18.25,
-  "height": 6.5,
-  "layouts": {
-    "LAYOUT": {
-      "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "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":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.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":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"Caps Lock", "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":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "y":3.5, "w":2.25}, {"label":"Shift", "x":0, "y":4.5, "w":1.25}, {"label":"|", "x":1.25, "y":4.5}, {"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":"N", "x":7.25, "y":4.5}, {"label":"M", "x":8.25, "y":4.5}, {"label":"<", "x":9.25, "y":4.5}, {"label":">", "x":10.25, "y":4.5}, {"label":"?", "x":11.25, "y":4.5}, {"label":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":10, "y":5.5, "w":1.25}, {"label":"Win", "x":11.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}]
-    },
-    "LAYOUT_tkl_ansi": {
-      "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "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":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"Backspace", "x":13, "y":1.5, "w":2}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.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":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"|", "x":13.5, "y":2.5, "w":1.5}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"Caps Lock", "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":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"Enter", "x":12.75, "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":"N", "x":7.25, "y":4.5}, {"label":"M", "x":8.25, "y":4.5}, {"label":"<", "x":9.25, "y":4.5}, {"label":">", "x":10.25, "y":4.5}, {"label":"?", "x":11.25, "y":4.5}, {"label":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.25}, {"label":"Win", "x":1.25, "y":5.5, "w":1.25}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.25}, {"x":3.75, "y":5.5, "w":6.25}, {"label":"Alt", "x":10, "y":5.5, "w":1.25}, {"label":"Win", "x":11.25, "y":5.5, "w":1.25}, {"label":"Menu", "x":12.5, "y":5.5, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":5.5, "w":1.25}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}]
-    }
-  }
-}
diff --git a/keyboards/unloved_bastard/keymaps/default/config.h b/keyboards/unloved_bastard/keymaps/default/config.h
deleted file mode 100644 (file)
index c55f7f9..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Copyright 2018 Alexander Fougner <fougner89 at gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "config_common.h"
-
-// place overrides here
-
-#endif
diff --git a/keyboards/unloved_bastard/keymaps/default/keymap.c b/keyboards/unloved_bastard/keymaps/default/keymap.c
deleted file mode 100644 (file)
index ea10315..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Copyright 2018 Alexander Fougner <fougner89 at gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-#include QMK_KEYBOARD_H
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = LAYOUT(\
-                 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_PSCR, KC_SLCK, KC_PAUS, \
-                 KC_GRV, KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_MINS, KC_EQL,  KC_BSPC,   KC_INS,  KC_HOME, KC_PGUP, \
-                 KC_TAB, KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,   KC_LBRC, KC_RBRC, KC_BSLS,   KC_DEL,  KC_END,  KC_PGDN, \
-                 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_NUBS,KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM,KC_DOT, KC_SLSH,          KC_RSFT,            KC_UP, \
-                 KC_LCTL,KC_LGUI,KC_LALT,                KC_SPC,                                 KC_RALT,KC_RGUI, KC_APP,  KC_RCTL,   KC_LEFT, KC_DOWN, KC_RGHT  )
-};
-
-
-const uint16_t PROGMEM fn_actions[] = {
-
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-          if (record->event.pressed) {
-            register_code(KC_RSFT);
-          } else {
-            unregister_code(KC_RSFT);
-          }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-
-void matrix_init_user(void) {
-
-}
-
-void matrix_scan_user(void) {
-
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-  return true;
-}
-
-void led_set_user(uint8_t usb_led) {
-
-}
diff --git a/keyboards/unloved_bastard/keymaps/default/readme.md b/keyboards/unloved_bastard/keymaps/default/readme.md
deleted file mode 100644 (file)
index a2b5f11..0000000
+++ /dev/null
@@ -1 +0,0 @@
-# The default keymap for unloved_bastard
diff --git a/keyboards/unloved_bastard/keymaps/default_ansi/config.h b/keyboards/unloved_bastard/keymaps/default_ansi/config.h
deleted file mode 100644 (file)
index c55f7f9..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Copyright 2018 Alexander Fougner <fougner89 at gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef CONFIG_USER_H
-#define CONFIG_USER_H
-
-#include "config_common.h"
-
-// place overrides here
-
-#endif
diff --git a/keyboards/unloved_bastard/keymaps/default_ansi/keymap.c b/keyboards/unloved_bastard/keymaps/default_ansi/keymap.c
deleted file mode 100644 (file)
index 16c0342..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Copyright 2018 Alexander Fougner <fougner89 at gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-#include QMK_KEYBOARD_H
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = LAYOUT_tkl_ansi(\
-                 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_PSCR, KC_SLCK, KC_PAUS, \
-                 KC_GRV, KC_1,   KC_2,   KC_3,   KC_4,   KC_5,   KC_6,   KC_7,   KC_8,   KC_9,   KC_0,   KC_MINS, KC_EQL,  KC_BSPC,   KC_INS,  KC_HOME, KC_PGUP, \
-                 KC_TAB, KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,   KC_O,   KC_P,   KC_LBRC, KC_RBRC, KC_BSLS,   KC_DEL,  KC_END,  KC_PGDN, \
-                 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_UP, \
-                 KC_LCTL,KC_LGUI,KC_LALT,                KC_SPC,                                 KC_RALT,KC_RGUI, KC_APP,  KC_RCTL,   KC_LEFT, KC_DOWN, KC_RGHT  )
-};
-
-
-const uint16_t PROGMEM fn_actions[] = {
-
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
-  // MACRODOWN only works in this function
-      switch(id) {
-        case 0:
-          if (record->event.pressed) {
-            register_code(KC_RSFT);
-          } else {
-            unregister_code(KC_RSFT);
-          }
-        break;
-      }
-    return MACRO_NONE;
-};
-
-
-void matrix_init_user(void) {
-
-}
-
-void matrix_scan_user(void) {
-
-}
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-  return true;
-}
-
-void led_set_user(uint8_t usb_led) {
-
-}
diff --git a/keyboards/unloved_bastard/keymaps/default_ansi/readme.md b/keyboards/unloved_bastard/keymaps/default_ansi/readme.md
deleted file mode 100644 (file)
index 00d90f1..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-# default_ansi
-
-A standard tenkeyless ANSI-layout keymap for Unloved Bastard-powered keyboards.
diff --git a/keyboards/unloved_bastard/matrix.c b/keyboards/unloved_bastard/matrix.c
deleted file mode 100644 (file)
index 6577387..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
-  Copyright 2017 Gabriel Young <gabeplaysdrums@live.com>
-  Copyright 2018 Alexander Fougner <fougner89 at gmail.com>
-
-  This program is free software: you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation, either version 2 of the License, or
-  (at your option) any later version.
-
-  This program is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  You should have received a copy of the GNU General Public License
-  along with this program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <stdint.h>
-#include <stdbool.h>
-#include <avr/io.h>
-#include <util/delay.h>
-#include "print.h"
-#include "debug.h"
-#include "util.h"
-#include "matrix.h"
-
-#ifndef DEBOUNCING_DELAY
-#   define DEBOUNCING_DELAY 5
-#endif
-static uint8_t debouncing = DEBOUNCING_DELAY;
-
-static matrix_row_t matrix[MATRIX_ROWS];
-static matrix_row_t matrix_debouncing[MATRIX_ROWS];
-
-static matrix_row_t scan_col(void) {
-    return (
-        (PINC&(1<<7) ? 0 : ((matrix_row_t)1<<0)) |
-        (PINB&(1<<6) ? 0 : ((matrix_row_t)1<<1)) |
-        (PINB&(1<<1) ? 0 : ((matrix_row_t)1<<2)) |
-        (PINB&(1<<0) ? 0 : ((matrix_row_t)1<<3)) |
-        (PINB&(1<<5) ? 0 : ((matrix_row_t)1<<4)) |
-        (PINB&(1<<3) ? 0 : ((matrix_row_t)1<<5)) |
-        (PINB&(1<<4) ? 0 : ((matrix_row_t)1<<6)) |
-        (PINB&(1<<2) ? 0 : ((matrix_row_t)1<<7))
-    );
-}
-
-static void select_col(uint8_t col) {
-    switch (col) {
-        case 0: PORTD = (PORTD & ~0b00111111) | 0b00110011; break;
-        case 1: PORTD = (PORTD & ~0b00111111) | 0b00100011; break;
-        case 2: PORTD = (PORTD & ~0b00111111) | 0b00010111; break;
-        case 3: PORTD = (PORTD & ~0b00111111) | 0b00110011; break;
-        case 4: PORTD = (PORTD & ~0b00111111) | 0b00010011; break;
-        case 5: PORTD = (PORTD & ~0b00111111) | 0b00011011; break;
-        case 6: PORTD = (PORTD & ~0b00111111) | 0b00110100; break;
-        case 7: PORTD = (PORTD & ~0b00111111) | 0b00111010; break;
-        case 8: PORTD = (PORTD & ~0b00111111) | 0b00111000; break;
-        case 9: PORTD = (PORTD & ~0b00111111) | 0b00111100; break;
-        case 10: PORTD = (PORTD & ~0b00111111) | 0b00110010; break;
-        case 11: PORTD = (PORTD & ~0b00111111) | 0b00011111; break;
-        case 12: PORTD = (PORTD & ~0b00111111) | 0b00001111; break;
-        case 13: PORTD = (PORTD & ~0b00111111) | 0b00100111; break;
-        case 14: PORTD = (PORTD & ~0b00111111) | 0b00000111; break;
-        case 15: PORTD = (PORTD & ~0b00111111) | 0b00110110; break;
-        case 16: PORTD = (PORTD & ~0b00111111) | 0b00001011; break;
-        case 17: PORTD = (PORTD & ~0b00111111) | 0b00000011; break;
-    }
-}
-
-void matrix_init(void) {
-    /* Row output pins */
-    DDRD  |=  0b00111111;
-    /* Column input pins */
-    DDRC  &= ~0b10000000;
-    DDRB  &= ~0b01111111;
-    PORTC |=  0b10000000;
-    PORTB |=  0b01111111;
-
-    for (uint8_t i=0; i < MATRIX_ROWS; i++)
-        matrix[i] = matrix_debouncing[i] = 0;
-
-    matrix_init_quantum();
-}
-
-uint8_t matrix_scan(void) {
-    for (uint8_t col = 0; col < MATRIX_COLS; col++) {
-        select_col(col);
-        _delay_us(3);
-        matrix_row_t col_scan = scan_col();
-        for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
-            bool prev_bit = matrix_debouncing[row] & ((matrix_row_t)1<<col);
-            bool curr_bit = col_scan & (1<<row);
-            if (prev_bit != curr_bit) {
-                matrix_debouncing[row] ^= ((matrix_row_t)1<<col);
-                debouncing = DEBOUNCING_DELAY;
-            }
-        }
-    }
-
-    if (debouncing) {
-        if (--debouncing)
-            _delay_ms(1);
-        else
-            for (uint8_t i = 0; i < MATRIX_ROWS; i++)
-                matrix[i] = matrix_debouncing[i];
-    }
-
-    matrix_scan_quantum();
-    return 1;
-}
-
-inline matrix_row_t matrix_get_row(uint8_t row) {
-    return matrix[row];
-}
-
-void matrix_print(void) {
-#ifndef NO_PRINT
-    print("\nr\\c ABCDEFGHIJKLMNOPQR\n");
-    for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
-        matrix_row_t matrix_row = matrix_get_row(row);
-        xprintf("%02X: ", row);
-        for (uint8_t col = 0; col < MATRIX_COLS; col++) {
-            bool curr_bit = matrix_row & (1<<col);
-            xprintf("%c", curr_bit ? '*' : '.');
-        }
-        print("\n");
-    }
-#endif
-}
-
-uint8_t matrix_key_count(void) {
-    uint8_t count = 0;
-    for (uint8_t row = 0; row < MATRIX_ROWS; row++)
-        count += bitpop32(matrix[row]);
-    return count;
-}
diff --git a/keyboards/unloved_bastard/readme.md b/keyboards/unloved_bastard/readme.md
deleted file mode 100644 (file)
index 33c74d4..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-# unloved_bastard
-
-![unloved_bastard](imgur.com image replace me!)
-
-A short description of the keyboard/project
-
-Keyboard Maintainer: [Alexander Fougner](https://github.com/fougner)  
-Hardware Supported: CoolerMaster Masterkeys S PBT (Not the Pro versions with backlighting etc)  
-Hardware Availability: Pretty much anywhere
-
-Make example for this keyboard (after setting up your build environment):
-
-    make unloved_bastard:default
-
-See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
diff --git a/keyboards/unloved_bastard/rules.mk b/keyboards/unloved_bastard/rules.mk
deleted file mode 100644 (file)
index 2db321c..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-# MCU name
-#MCU = at90usb1286
-MCU = atmega32u2
-
-# 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
-
-
-# Boot Section Size in *bytes*
-#   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 = yes      # 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 = yes      # 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
-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
-
-CUSTOM_MATRIX = yes
-SRC += matrix.c
-
-LAYOUTS = tkl_ansi
diff --git a/keyboards/unloved_bastard/unloved_bastard.c b/keyboards/unloved_bastard/unloved_bastard.c
deleted file mode 100644 (file)
index 1975930..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/* Copyright 2018 Alexander Fougner <fougner89 at gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-#include "unloved_bastard.h"
-
-void matrix_init_kb(void) {
-       // put your keyboard start-up code here
-       // runs once when the firmware starts up
-       led_init_ports();
-       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);
-}
-
-// C5 left
-// C6 middle led
-// B7 right led
-void led_init_ports(void) {
-    DDRB |= (1<<7);
-    DDRC |= (1<<5);
-    DDRC |= (1<<6);
-
-    PORTB |= (1<<7);
-    PORTC |= (1<<5);
-    PORTC |= (1<<6);
-}
-
-
-void led_set_kb(uint8_t usb_led) {
-
-    if (usb_led & (1<<USB_LED_CAPS_LOCK))
-        PORTC &= ~(1<<5);
-    else
-        PORTC |=  (1<<5);
-
-    if (usb_led & (1<<USB_LED_NUM_LOCK))
-        PORTB &= ~(1<<7);
-    else
-        PORTB |=  (1<<7);
-
-    if (usb_led & (1<<USB_LED_SCROLL_LOCK))
-        PORTC &= ~(1<<6);
-    else
-        PORTC |=  (1<<6);
-
-    led_set_user(usb_led);
-}
diff --git a/keyboards/unloved_bastard/unloved_bastard.h b/keyboards/unloved_bastard/unloved_bastard.h
deleted file mode 100644 (file)
index 9eaf587..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/* Copyright 2017 REPLACE_WITH_YOUR_NAME
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-#ifndef UNLOVED_BASTARD_H
-#define UNLOVED_BASTARD_H
-
-#include "quantum.h"
-
-#define LAYOUT( \
-  KG6,      KH4, KI4, KI2, KI6, KP5, KL6, KM2, KM4, KO4, KO5, KO6, KO0,   KN5, KN7, KP7, \
-  KG4, KG5, KH5, KI5, KJ5, KJ4, KK4, KK5, KL5, KM5, KF5, KF4, KL4, KO2,   KR4, KC4, KE4, \
-  KG2, KG7, KH7, KI7, KJ7, KJ2, KK2, KK7, KL7, KM7, KF7, KF2, KL2, KO3,   KQ4, KC5, KE5, \
-  KH2, KG3, KH3, KI3, KJ3, KJ6, KK6, KK3, KL3, KM3, KF3, KF6,      KO1,                  \
-  KB2, KH6, KG1, KH1, KI1, KJ1, KJ0, KK0, KK1, KL1, KM1, KF0,      KB3,        KC6,      \
-  KP4, KN2, KN6,                KQ6,                KN0, KN3, KM0, KP1,   KC0, KQ0, KR0  \
-) \
-{ \
-/* Columns and rows need to be swapped in the below definition */ \
-/*          A       B       C       D       E       F       G       H       I       J       K       L       M       N       O       P       Q       R       */ \
-/* 0 */ {   KC_NO,  KC_NO,  KC0,    KC_NO,  KC_NO,  KF0,    KC_NO,  KC_NO,  KC_NO,  KJ0,  KK0,  KC_NO, KM0,  KN0,    KO0,    KC_NO,  KQ0,    KR0     }, \
-/* 1 */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KG1,    KH1,    KI1,    KJ1,    KK1,  KL1,   KM1,  KC_NO,  KO1,    KP1,    KC_NO,  KC_NO   }, \
-/* 2 */ {   KC_NO,  KB2,    KC_NO,  KC_NO,  KC_NO,  KF2,    KG2,    KH2,    KI2,    KJ2,    KK2,  KL2,   KM2,  KN2,    KO2,    KC_NO,  KC_NO,  KC_NO   }, \
-/* 3 */ {   KC_NO,  KB3,    KC_NO,  KC_NO,  KC_NO,  KF3,    KG3,    KH3,    KI3,    KJ3,    KK3,  KL3,   KM3,  KN3,    KO3,    KC_NO,  KC_NO,  KC_NO   }, \
-/* 4 */ {   KC_NO,  KC_NO,  KC4,    KC_NO,  KE4,    KF4,    KG4,    KH4,    KI4,    KJ4,    KK4,  KL4,   KM4,  KC_NO,  KO4,    KP4,    KQ4,    KR4     }, \
-/* 5 */ {   KC_NO,  KC_NO,  KC5,    KC_NO,  KE5,    KF5,    KG5,    KH5,    KI5,    KJ5,    KK5,  KL5,   KM5,  KN5,    KO5,    KP5,    KC_NO,  KC_NO   }, \
-/* 6 */ {   KC_NO,  KC_NO,  KC6,    KC_NO,  KC_NO,  KF6,    KG6,    KH6,    KI6,    KJ6,    KK6,  KL6,   KC_NO,KN6,    KO6,    KC_NO,  KQ6,    KC_NO   }, \
-/* 7 */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KF7,    KG7,    KH7,    KI7,    KJ7,    KK7,  KL7,   KM7,  KN7,    KC_NO,  KP7,    KC_NO,  KC_NO   }  \
-}
-
-#define LAYOUT_tkl_ansi( \
-  KG6,      KH4, KI4, KI2, KI6, KP5, KL6, KM2, KM4, KO4, KO5, KO6, KO0,   KN5, KN7, KP7, \
-  KG4, KG5, KH5, KI5, KJ5, KJ4, KK4, KK5, KL5, KM5, KF5, KF4, KL4, KO2,   KR4, KC4, KE4, \
-  KG2, KG7, KH7, KI7, KJ7, KJ2, KK2, KK7, KL7, KM7, KF7, KF2, KL2, KO3,   KQ4, KC5, KE5, \
-  KH2, KG3, KH3, KI3, KJ3, KJ6, KK6, KK3, KL3, KM3, KF3, KF6,      KO1,                  \
-  KB2,      KG1, KH1, KI1, KJ1, KJ0, KK0, KK1, KL1, KM1, KF0,      KB3,        KC6,      \
-  KP4, KN2, KN6,                KQ6,                KN0, KN3, KM0, KP1,   KC0, KQ0, KR0  \
-) \
-{ \
-/* Columns and rows need to be swapped in the below definition */ \
-/*          A       B       C       D       E       F       G       H       I       J       K       L       M       N       O       P       Q       R       */ \
-/* 0 */ {   KC_NO,  KC_NO,  KC0,    KC_NO,  KC_NO,  KF0,    KC_NO,  KC_NO,  KC_NO,  KJ0,  KK0,  KC_NO, KM0,  KN0,    KO0,    KC_NO,  KQ0,    KR0     }, \
-/* 1 */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KG1,    KH1,    KI1,    KJ1,    KK1,  KL1,   KM1,  KC_NO,  KO1,    KP1,    KC_NO,  KC_NO   }, \
-/* 2 */ {   KC_NO,  KB2,    KC_NO,  KC_NO,  KC_NO,  KF2,    KG2,    KH2,    KI2,    KJ2,    KK2,  KL2,   KM2,  KN2,    KO2,    KC_NO,  KC_NO,  KC_NO   }, \
-/* 3 */ {   KC_NO,  KB3,    KC_NO,  KC_NO,  KC_NO,  KF3,    KG3,    KH3,    KI3,    KJ3,    KK3,  KL3,   KM3,  KN3,    KO3,    KC_NO,  KC_NO,  KC_NO   }, \
-/* 4 */ {   KC_NO,  KC_NO,  KC4,    KC_NO,  KE4,    KF4,    KG4,    KH4,    KI4,    KJ4,    KK4,  KL4,   KM4,  KC_NO,  KO4,    KP4,    KQ4,    KR4     }, \
-/* 5 */ {   KC_NO,  KC_NO,  KC5,    KC_NO,  KE5,    KF5,    KG5,    KH5,    KI5,    KJ5,    KK5,  KL5,   KM5,  KN5,    KO5,    KP5,    KC_NO,  KC_NO   }, \
-/* 6 */ {   KC_NO,  KC_NO,  KC6,    KC_NO,  KC_NO,  KF6,    KG6,    KC_NO,  KI6,    KJ6,    KK6,  KL6,   KC_NO,KN6,    KO6,    KC_NO,  KQ6,    KC_NO   }, \
-/* 7 */ {   KC_NO,  KC_NO,  KC_NO,  KC_NO,  KC_NO,  KF7,    KG7,    KH7,    KI7,    KJ7,    KK7,  KL7,   KM7,  KN7,    KC_NO,  KP7,    KC_NO,  KC_NO   }  \
-}
-
-#endif