]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Lfkeyboards updates (#2421)
authorscott-t-wilson <scott.t.wilson@gmail.com>
Fri, 23 Feb 2018 18:16:10 +0000 (13:16 -0500)
committerJack Humbert <jack.humb@gmail.com>
Fri, 23 Feb 2018 18:16:10 +0000 (13:16 -0500)
* Update smk65 fn layer, add iso

* Added Fn layer to ISO keymap

* Fix error when backlight is disabled but lighting isn't

* Remove broke mini1800 iso map

* Add keymaps

* Add LFKPad

* Add split delete to lfk78

* Typo

* Custom keymap

47 files changed:
keyboards/lfkeyboards/lfk78/keymaps/ca178858/config.h [new file with mode: 0644]
keyboards/lfkeyboards/lfk78/keymaps/ca178858/keymap.c [new file with mode: 0644]
keyboards/lfkeyboards/lfk78/keymaps/ca178858/readme.md [new file with mode: 0644]
keyboards/lfkeyboards/lfk78/keymaps/ca178858/rules.mk [new file with mode: 0644]
keyboards/lfkeyboards/lfk78/keymaps/default/rules.mk
keyboards/lfkeyboards/lfk78/keymaps/iso/config.h [new file with mode: 0644]
keyboards/lfkeyboards/lfk78/keymaps/iso/keymap.c [new file with mode: 0644]
keyboards/lfkeyboards/lfk78/keymaps/iso/readme.md [new file with mode: 0644]
keyboards/lfkeyboards/lfk78/keymaps/iso/rules.mk [new file with mode: 0644]
keyboards/lfkeyboards/lfk78/keymaps/split_bs_osx/config.h [new file with mode: 0644]
keyboards/lfkeyboards/lfk78/keymaps/split_bs_osx/keymap.c [new file with mode: 0644]
keyboards/lfkeyboards/lfk78/keymaps/split_bs_osx/readme.md [new file with mode: 0644]
keyboards/lfkeyboards/lfk78/keymaps/split_bs_osx/rules.mk [new file with mode: 0644]
keyboards/lfkeyboards/lfk78/lfk78.c
keyboards/lfkeyboards/lfk78/lfk78.h
keyboards/lfkeyboards/lfk87/keymaps/ca178858/config.h [new file with mode: 0644]
keyboards/lfkeyboards/lfk87/keymaps/ca178858/keymap.c [new file with mode: 0644]
keyboards/lfkeyboards/lfk87/keymaps/ca178858/readme.md [new file with mode: 0644]
keyboards/lfkeyboards/lfk87/keymaps/ca178858/rules.mk [new file with mode: 0644]
keyboards/lfkeyboards/lfk87/keymaps/gbchk/config.h [new file with mode: 0644]
keyboards/lfkeyboards/lfk87/keymaps/gbchk/keymap.c [new file with mode: 0644]
keyboards/lfkeyboards/lfk87/keymaps/gbchk/rules.mk [new file with mode: 0644]
keyboards/lfkeyboards/lfkpad/config.h [new file with mode: 0644]
keyboards/lfkeyboards/lfkpad/keymaps/default/config.h [new file with mode: 0644]
keyboards/lfkeyboards/lfkpad/keymaps/default/keymap.c [new file with mode: 0644]
keyboards/lfkeyboards/lfkpad/keymaps/default/readme.md [new file with mode: 0644]
keyboards/lfkeyboards/lfkpad/keymaps/default/rules.mk [new file with mode: 0644]
keyboards/lfkeyboards/lfkpad/lfkpad.c [new file with mode: 0644]
keyboards/lfkeyboards/lfkpad/lfkpad.h [new file with mode: 0644]
keyboards/lfkeyboards/lfkpad/readme.md [new file with mode: 0644]
keyboards/lfkeyboards/lfkpad/rules.mk [new file with mode: 0644]
keyboards/lfkeyboards/lighting.c
keyboards/lfkeyboards/mini1800/config.h [new file with mode: 0644]
keyboards/lfkeyboards/mini1800/keymaps/ca178858/config.h [new file with mode: 0644]
keyboards/lfkeyboards/mini1800/keymaps/ca178858/keymap.c [new file with mode: 0644]
keyboards/lfkeyboards/mini1800/keymaps/ca178858/rules.mk [new file with mode: 0644]
keyboards/lfkeyboards/mini1800/keymaps/default/config.h [new file with mode: 0644]
keyboards/lfkeyboards/mini1800/keymaps/default/keymap.c [new file with mode: 0644]
keyboards/lfkeyboards/mini1800/keymaps/default/rules.mk [new file with mode: 0644]
keyboards/lfkeyboards/mini1800/mini1800.c [new file with mode: 0644]
keyboards/lfkeyboards/mini1800/mini1800.h [new file with mode: 0644]
keyboards/lfkeyboards/mini1800/rules.mk [new file with mode: 0644]
keyboards/lfkeyboards/smk65/keymaps/default/keymap.c
keyboards/lfkeyboards/smk65/keymaps/iso/config.h [new file with mode: 0644]
keyboards/lfkeyboards/smk65/keymaps/iso/keymap.c [new file with mode: 0644]
keyboards/lfkeyboards/smk65/keymaps/iso/rules.mk [new file with mode: 0644]
keyboards/lfkeyboards/smk65/smk65.h

diff --git a/keyboards/lfkeyboards/lfk78/keymaps/ca178858/config.h b/keyboards/lfkeyboards/lfk78/keymaps/ca178858/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/lfkeyboards/lfk78/keymaps/ca178858/keymap.c b/keyboards/lfkeyboards/lfk78/keymaps/ca178858/keymap.c
new file mode 100644 (file)
index 0000000..c94552d
--- /dev/null
@@ -0,0 +1,197 @@
+#include "lfk78.h"
+#include "issi.h"
+#include "lighting.h"
+#include "action_layer.h"
+#include "process_tap_dance.h"
+
+//Define a shorter 'transparent' key code to make the keymaps more compact
+#define KC_TR KC_TRNS
+
+enum keymap_layout {
+    VANILLA = 0,  // matches MF68 layout
+    CS_GO,        // 0x08
+    FUNC,         // 0x10
+    SETTINGS,     // 0x20
+};
+
+enum {
+    TD_ESC_FUNC = 0,
+    TD_ESC_CTRL,
+    TD_SPC_SPAM
+};
+
+bool spam_space = false;
+
+
+  // {0x00000000, 0xFFFFFFFF, {0x0000, 0x0FFF, 0x0000}}, // base layer - green
+  // {0x00000008, 0xFFFFFFF8, {0x07FF, 0x07FF, 0x0000}}, // CSGO layer - orange
+  // {0x00000010, 0xFFFFFFF0, {0x0000, 0x0000, 0x0FFF}}, // function layer - blue
+  // {0x00000020, 0xFFFFFFE0, {0x0FFF, 0x0000, 0x0FFF}}, // settings layer - magenta
+  // {0xFFFFFFFF, 0xFFFFFFFF, {0x0FFF, 0x0FFF, 0x0FFF}}, // unknown layer - REQUIRED - white
+
+
+// Colors of the layer indicator LED
+// This list needs to define layer 0xFFFFFFFF, it is the end of the list, and the unknown layer
+const Layer_Info layer_info[] = {
+  // Layer     Mask           Red     Green   Blue
+  {0x00000000, 0xFFFFFFFF, {0x0000, 0x0FFF, 0x0000}}, // base layer - green
+  {0x00000002, 0xFFFFFFFE, {0x07FF, 0x07FF, 0x0000}}, // CSGO layer - orange
+  {0x00000004, 0xFFFFFFFC, {0x0000, 0x0000, 0x0FFF}}, // function layer - blue
+  {0x00000008, 0xFFFFFFE8, {0x0FFF, 0x0000, 0x0FFF}}, // settings layer - magenta
+  {0xFFFFFFFF, 0xFFFFFFFF, {0x0FFF, 0x0FFF, 0x0FFF}}, // unknown layer - REQUIRED - white
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+  /* Keymap BASE: (Base Layer) Default Layer
+   * ,---------.  ,------------------------------------------------------------.  ,---------.
+   * |Vol-|Vol+|  |Esc~| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |  0| - | = |Backspa|  | Ins|PgUp|
+   * |---------|  |------------------------------------------------------------|  |---------|
+   * | F3 | F4 |  |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|     \|  | Del|PgDn|
+   * |---------|  |------------------------------------------------------------|  `---------'
+   * | F5 | F6 |  |Control |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return |
+   * |---------|  |------------------------------------------------------------|  ,----.
+   * | F7 | F8 |  |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|  Shift    |  | Up |
+   * |---------|  |-------------------------------------------------------------------------.
+   * | F9 | F10|  |Func|Alt |Cmd |      Space            |Cmd |Alt |Func |    |Lft| Dn |Rig |
+   * `---------'  `------------------------------------------------------'    `-------------'
+   */
+[VANILLA] = SPLIT_SHIFT_KEYMAP(
+  KC_VOLD, KC_VOLU,   KC_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL,        KC_BSPC,  LALT(KC_F5), KC_PGUP,
+  KC_F3, KC_F4,       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_PGDN,
+  KC_F5, KC_F6,       TD(TD_ESC_FUNC), 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_F7, KC_F8,       KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,        KC_RSFT, MO(CS_GO),   KC_UP,
+  KC_F9, KC_F10,      KC_LCTL, KC_LALT, KC_LGUI,            KC_SPC,            KC_RGUI, KC_RCTL, MO(FUNC),       KC_LEFT, KC_DOWN, KC_RGHT),
+
+[CS_GO] = SPLIT_SHIFT_KEYMAP(
+  KC_TR, KC_TR,   KC_GESC, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR,       KC_TR,  KC_FN0, KC_TR,
+  KC_TR, KC_TR,   KC_TR,  KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR,      KC_TR,  KC_TR, KC_TR,
+  KC_TR, KC_TR,   KC_LCTL, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR,    KC_TR,
+  KC_TR, KC_TR,   KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR,        KC_TR, KC_TR,   KC_TR,
+  KC_TR, KC_TR,   KC_TR, KC_TR, KC_TR,                      KC_TR,                  KC_TR, KC_TR, KC_TR,       KC_TR, KC_TR, KC_TR),
+
+  /* Keymap FUNCTION: Function Layer
+   * ,---------.  ,-------------------------------------------------------------.  ,---------.
+   * | V- | V+ |  | ` |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Delete   |  | Ins|Home|
+   * |---------|  |-------------------------------------------------------------|  |---------|
+   * |    |    |  |Tab  |   |PgU|   |   |   |   |   | Up|   |   |   |   |       |  | Del|End |
+   * |---------|  |-------------------------------------------------------------|  `---------'
+   * |    |    |  |Control|Hme|PgD|End|   |   |   |Lft|Dwn|Rgt|   |   |         |
+   * |---------|  |-------------------------------------------------------------|  ,----.
+   * |    |    |  |Shift   |   |Del|   |   |   |   |Mute|V- |V+ |  |TG(SETTINGS)|  | Up |
+   * |---------|  |--------------------------------------------------------------------------.
+   * |    | F10|  |Func|Win |Alt |        PgD           |Alt |Ctrl |Func |     |Lft| Dn |Rig |
+   * `---------'  `------------------------------------------------------'     `-------------'
+   */
+[FUNC] = SPLIT_SHIFT_KEYMAP(
+  KC_TR,   KC_TR,    KC_GRV,  KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,          KC_DEL,  TO(CS_GO), KC_HOME,
+  KC_TR,   KC_TR,    KC_NO,KC_PGUP, KC_UP, KC_PGDN, KC_HOME, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, KC_NO, KC_NO,               KC_NO,  KC_TR, KC_END,
+  KC_TR,   KC_TR,    KC_TR, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO,            KC_NO,
+  KC_TR,   KC_TR,    KC_TR,    KC_NO,  KC_DEL,  KC_NO,  KC_NO, KC_NO, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO,   TG(SETTINGS), KC_NO,  KC_TR,
+  KC_TR,   KC_TR,    KC_TR,  KC_TR, KC_TR,                  KC_PGDN,                           KC_TR, KC_TR, KC_TR,            KC_TR,  KC_TR, KC_TR),
+
+  /* Keymap SETTINGS: Settings Layer
+   * ,---------.  ,-----------------------------------------------------------.  ,-------------.
+   * |    |    |  |FN0 |BL0|BL1|BL2|BL3|   |   |   |   |  |   |BL-|BL+|BL Togl|  |RGB Tog |Val+|
+   * |---------|  |-----------------------------------------------------------|  |-------------|
+   * |    |    |  |Debug|   |   |   |   |   |   |   |   |   |   |   |  |RGBTst|  |RGB Mode|Val-|
+   * |---------|  |-----------------------------------------------------------|  `-------------'
+   * |    |    |  |LayrClr|Hz+|MS+|   |   |   |   |   |   |   |   |   |  RST  |
+   * |---------|  |-----------------------------------------------------------|  ,----.
+   * |    |    |  |ClickTgl|Hz-|MS-|   |   |   |   |   |   |   |   |Layer Clr |  |Hue+|
+   * |---------|  |------------------------------------------------------------------------.
+   * |    |    |  |    |    |    |      Print Debug      |    |    |     |  |Sat-|Hue-|Sat+|
+   * `---------'  `------------------------------------------------------'  `--------------'
+   */
+[SETTINGS] = SPLIT_SHIFT_KEYMAP(
+  KC_NO,   KC_NO,    KC_FN0,KC_FN3,KC_FN4,KC_FN5, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, BL_DEC, BL_INC, BL_TOGG,    RGB_TOG, RGB_VAI,
+  KC_NO,   KC_NO,    DEBUG,  KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,     KC_NO,    RGB_MOD, RGB_VAD,
+  KC_NO,   KC_NO,    KC_FN0, KC_FN6,KC_FN8, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,            RESET,
+  KC_NO,   KC_NO,    KC_FN10, KC_FN7,KC_FN9, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,          KC_FN0, KC_NO,    RGB_HUI,
+  KC_NO,   KC_NO,    KC_NO, KC_NO, KC_NO,                  KC_FN12,                        KC_NO, KC_NO, KC_FN0,     RGB_SAD, RGB_HUD, RGB_SAI),
+};
+
+
+void tap_space_spam_finished(qk_tap_dance_state_t *state, void *user_data) {
+    if(get_mods() & (MOD_BIT(KC_LGUI))){
+      return;
+    }
+    if(state->pressed){
+        spam_space = true;
+    }
+    register_code(KC_SPC);
+    unregister_code(KC_SPC);
+}
+
+void tap_space_spam_reset(qk_tap_dance_state_t *state, void *user_data) {
+    spam_space = false;
+    unregister_code(KC_SPC);
+}
+
+void tap_esc_func_finished(qk_tap_dance_state_t *state, void *user_data) {
+    if(state->pressed){
+        layer_on(FUNC);
+    }else{
+        register_code(KC_ESC);
+        unregister_code(KC_ESC);
+    }
+}
+
+void tap_esc_func_reset(qk_tap_dance_state_t *state, void *user_data) {
+    layer_off(FUNC);
+}
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+  [TD_ESC_FUNC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tap_esc_func_finished, tap_esc_func_reset),
+  [TD_SPC_SPAM] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tap_space_spam_finished, tap_space_spam_reset),
+};
+
+
+const uint16_t PROGMEM fn_actions[] = {
+    ACTION_FUNCTION(LFK_CLEAR),                               // FN0 - reset layers
+    ACTION_FUNCTION(LFK_ESC_TILDE),                           // FN1 - esc+shift = ~, else escape
+    ACTION_FUNCTION(LFK_LED_TEST),                            // FN2 - cycle through LEDs for testing
+    ACTION_FUNCTION_OPT(LFK_SET_DEFAULT_LAYER, VANILLA),      // FN3 - set base layer to 0 and save
+    ACTION_FUNCTION_OPT(LFK_SET_DEFAULT_LAYER, VANILLA),  // FN4 - set base layer to 1 and save
+    ACTION_FUNCTION_OPT(LFK_SET_DEFAULT_LAYER, VANILLA),  // FN5 - set base layer to 2 and save
+    ACTION_FUNCTION(LFK_CLICK_FREQ_HIGHER),                   // FN6 - Increase Freq of audio click
+    ACTION_FUNCTION(LFK_CLICK_FREQ_LOWER),                    // FN7 - Decrease Freq of audio click
+    ACTION_FUNCTION(LFK_CLICK_TIME_LONGER),                   // FN8 - Increase length of audio click
+    ACTION_FUNCTION(LFK_CLICK_TIME_SHORTER),                  // FN9 - Decrease length of audio click
+    ACTION_FUNCTION(LFK_CLICK_TOGGLE),                        // FN10 - Toggle audio click
+    ACTION_FUNCTION(LFK_LED_TEST),                            // FN11 - cycle through LEDs for testing
+    ACTION_FUNCTION(LFK_DEBUG_SETTINGS),                      // FN12 - prints LED and click settings to HID
+  };
+
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+      }
+    return MACRO_NONE;
+};
+
+void matrix_init_user(void) {
+
+}
+
+void matrix_scan_user(void) {
+    if(spam_space && !(get_mods() & (MOD_BIT(KC_LGUI)))){
+        register_code(KC_SPC);
+        unregister_code(KC_SPC);
+    }
+}
+
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  if((layer_state & (1 << CS_GO)) && (keycode == 44)){
+    if(get_mods() & (MOD_BIT(KC_LGUI))){
+      return false;
+    }
+  }
+  return true;
+}
+
+void led_set_user(uint8_t usb_led) {
+
+}
\ No newline at end of file
diff --git a/keyboards/lfkeyboards/lfk78/keymaps/ca178858/readme.md b/keyboards/lfkeyboards/lfk78/keymaps/ca178858/readme.md
new file mode 100644 (file)
index 0000000..85b7b1a
--- /dev/null
@@ -0,0 +1 @@
+# The default keymap for bluepad
diff --git a/keyboards/lfkeyboards/lfk78/keymaps/ca178858/rules.mk b/keyboards/lfkeyboards/lfk78/keymaps/ca178858/rules.mk
new file mode 100644 (file)
index 0000000..394c58b
--- /dev/null
@@ -0,0 +1,53 @@
+# 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 = 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 = yes          # Enable keyboard backlight functionality
+MIDI_ENABLE = no                # MIDI controls
+AUDIO_ENABLE = no              # Audio output on port C6
+UNICODE_ENABLE = no             # Unicode
+BLUETOOTH_ENABLE = no           # Disable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = no           # Enable RGB underlight
+RGBLIGHT_CUSTOM_DRIVER = no    # RGB code is implemented in lefkeyboards, not WS2812
+SLEEP_LED_ENABLE = yes          # Breathing sleep LED during USB suspend
+TAP_DANCE_ENABLE = yes
+
+ISSI_ENABLE = yes                      # If the I2C pullup resistors aren't install this must be disabled
+WATCHDOG_ENABLE = yes          # Resets keyboard if matrix_scan isn't run every 250ms
+
+
+ifndef QUANTUM_DIR
+       include ../../../../Makefile
+endif
+
+ifeq ($(strip $(ISSI_ENABLE)), yes)
+    TMK_COMMON_DEFS += -DISSI_ENABLE
+endif
+
+ifeq ($(strip $(WATCHDOG_ENABLE)), yes)
+    TMK_COMMON_DEFS += -DWATCHDOG_ENABLE
+endif
+
+
+# # Set the LFK78 hardware version. This is defined in rules.mk, but can be overidden here if desired
+# #
+# # RevB - first public release, uses atmega32u4, has audio, ISSI matrix split between RGB and backlight
+# # RevC/D - at90usb1286, no audio, ISSI device 0 is backlight, 4 is RGB
+# #
+# # Set to B, C or D
+# LFK_REV = D
+
+# ifeq ($(LFK_REV), B)
+#      MCU = atmega32u4
+# else
+#      MCU = at90usb1286
+# endif
+# OPT_DEFS += -DLFK_REV_$(LFK_REV)
+# OPT_DEFS += -DUSB_PRODUCT=\"LFK_Rev$(LFK_REV)\"
index dd973eac3d81b1379685c1b2863f5301b9ca2abc..20030f17d0b76956bcb23b9f9d5483f98da2128c 100644 (file)
@@ -19,8 +19,9 @@ RGBLIGHT_CUSTOM_DRIVER = yes    # RGB code is implemented in lefkeyboards, not q
 SLEEP_LED_ENABLE = yes          # Breathing sleep LED during USB suspend
 TAP_DANCE_ENABLE = no
 
-ISSI_ENABLE = yes           # If the I2C pullup resistors aren't install this must be disabled
-WATCHDOG_ENABLE = no       # Resets keyboard if matrix_scan isn't run every 250ms
+ISSI_ENABLE = yes               # If the I2C pullup resistors aren't install this must be disabled
+WATCHDOG_ENABLE = no            # Resets keyboard if matrix_scan isn't run every 250ms
+CAPSLOCK_LED = no              # Toggle back light LED of Caps Lock
 
 ifndef QUANTUM_DIR
     include ../../../../Makefile
@@ -34,6 +35,10 @@ ifeq ($(strip $(WATCHDOG_ENABLE)), yes)
     TMK_COMMON_DEFS += -DWATCHDOG_ENABLE
 endif
 
+ifeq ($(strip $(CAPSLOCK_LED)), yes)
+    TMK_COMMON_DEFS += -DCAPSLOCK_LED
+endif
+
 # Override the LFK78 hardware version:
 #
 # B   - first public release, uses atmega32u4, has audio, ISSI matrix split between RGB and backlight
diff --git a/keyboards/lfkeyboards/lfk78/keymaps/iso/config.h b/keyboards/lfkeyboards/lfk78/keymaps/iso/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/lfkeyboards/lfk78/keymaps/iso/keymap.c b/keyboards/lfkeyboards/lfk78/keymaps/iso/keymap.c
new file mode 100644 (file)
index 0000000..609e27e
--- /dev/null
@@ -0,0 +1,125 @@
+#include "lfk78.h"
+#include "issi.h"
+#include "lighting.h"
+#include "action_layer.h"
+
+//Define a shorter 'transparent' key code to make the keymaps more compact
+#define KC_TR KC_TRNS
+
+enum keymap_layout {
+    VANILLA = 0,  // matches MF68 layout
+    FUNC,         // 0x02
+    SETTINGS,     // 0x04
+};
+
+// Colors of the layer indicator LED
+// This list needs to define layer 0xFFFFFFFF, it is the end of the list, and the unknown layer
+const Layer_Info layer_info[] = {
+  // Layer     Mask           Red     Green   Blue
+  {0x00000000, 0xFFFFFFFF, {0x0000, 0x0FFF, 0x0000}}, // base layer - green
+  {0x00000002, 0xFFFFFFFE, {0x0000, 0x0000, 0x0FFF}}, // function layer - blue
+  {0x00000004, 0xFFFFFFFC, {0x0FFF, 0x0000, 0x0FFF}}, // settings layer - magenta
+  {0xFFFFFFFF, 0xFFFFFFFF, {0x0FFF, 0x0FFF, 0x0FFF}}, // unknown layer - REQUIRED - white
+};
+
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[VANILLA] = ISO_KEYMAP(
+  /* Keymap VANILLA: (Base Layer) Default Layer
+   * ,---------.  ,------------------------------------------------------------.  ,---------.
+   * | F1 | F2 |  |Esc~| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |  0| - | = |Backspa|  | Ins|PgUp|
+   * |---------|  |------------------------------------------------------------|  |---------|
+   * | F3 | F4 |  |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|  Ret|  | Del|PgDn|
+   * |---------|  |--------------------------------------------------------.  |  `---------'
+   * | F5 | F6 |  |CAPS   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|  # |  |
+   * |---------|  |-----------------------------------------------------------|  ,----.
+   * | F7 | F8 |  |Shft| \ |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |  | Up |
+   * |---------|  |-------------------------------------------------------------------------.
+   * | F9 | F10|  |Ctrl|Win |Alt |      Space            |Alt |Ctrl|Func |    |Lft| Dn |Rig |
+   * `---------'  `------------------------------------------------------'    `-------------'
+   */
+  KC_F1, KC_F2,       KC_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL,   KC_BSPC,  KC_INS, KC_PGUP,
+  KC_F3, KC_F4,       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_ENT,  KC_DEL, KC_PGDN,
+  KC_F5, KC_F6,       KC_CAPS,  KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,      KC_NUHS,
+  KC_F7, KC_F8,       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_F9, KC_F10,      KC_LCTL, KC_LGUI, KC_LALT,              KC_SPC,           KC_RALT, KC_RCTL, MO(FUNC), KC_LEFT, KC_DOWN, KC_RGHT),
+  /* Keymap FUNCTION: Function Layer
+   * ,---------.  ,-------------------------------------------------------------.  ,---------.
+   * |    |    |  | ` |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Delete   |  | Ins|Home|
+   * |---------|  |-------------------------------------------------------------|  |---------|
+   * |    |    |  |Tab  |Hom| Up|End|PgU|   |   |   |   |   |   |   |   |       |  | Del|End |
+   * |---------|  |-------------------------------------------------------------|  `---------'
+   * |    |    |  |MO(FUNC)|Lft|Dn |Rig|PgD|   |Lft|Dwn| Up|Rgt|   |   |        |
+   * |---------|  |-------------------------------------------------------------|  ,----.
+   * |    |    |  |Shift   |   |   |   |   |   |   |Mute|V- |V+ |  |TG(SETTINGS)|  | Up |
+   * |---------|  |--------------------------------------------------------------------------.
+   * |    |    |  |Ctrl|Win |Alt |        PgD            |Alt |Func |CTRL |     |Lft| Dn |Rig |
+   * `---------'  `------------------------------------------------------'     `-------------'
+   */
+[FUNC] = KEYMAP(
+  KC_TR,   KC_TR,    KC_GRV,  KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,       KC_DEL,  KC_TR, KC_HOME,
+  KC_TR,   KC_TR,    KC_NO,KC_HOME, KC_UP, KC_END, KC_PGUP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,         KC_NO,  KC_TR, KC_END,
+  KC_TR,   KC_TR,    KC_TR,   KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, KC_NO,    KC_NO,
+  KC_TR,   KC_TR,    KC_TR,    KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO,           TG(SETTINGS),  KC_TR,
+  KC_TR,   KC_TR,    KC_TR,  KC_TR, KC_TR,                  KC_PGDN,                           KC_TR, KC_TR, KC_TR,         KC_TR,  KC_TR, KC_TR),
+
+  /* Keymap SETTINGS: Settings Layer
+   * ,---------.  ,-------------------------------------------------------------.  ,-------------.
+   * |    |    |  |LayClr|   |   |   |   |   |   |   |   |  |   |BL-|BL+|BL Togl|  |RGB Tog |Val+|
+   * |---------|  |-------------------------------------------------------------|  |-------------|
+   * |    |    |  |MuMode |   |   |   |   |   |   |   |   |   |   |   |  |LEDTst|  |RGB Mode|Val-|
+   * |---------|  |-------------------------------------------------------------|  `-------------'
+   * |    |    |  |AudTgl   |Hz+|MS+|   |   |   |   |   |   |   |   |   |  RST  |
+   * |---------|  |-------------------------------------------------------------|  ,----.
+   * |    |    |  |ClickTgl  |Hz-|MS-|   |   |   |   |MuTgl|  |  |   |Layer Clr |  |Hue+|
+   * |---------|  |-------------------------------------------------------------------------.
+   * |    |    |  |    |    |    |                         |    |    |     |  |Sat-|Hue-|Sat+|
+   * `---------'  `--------------------------------------------------------'  `--------------'
+   */
+[SETTINGS] = KEYMAP(
+  KC_NO,   KC_NO,    KC_FN0,KC_NO,KC_NO,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, BL_DEC, BL_INC,  BL_TOGG,    RGB_TOG, RGB_VAI,
+  KC_NO,   KC_NO,    MU_MOD, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,   KC_NO,    RGB_MOD, RGB_VAD,
+  KC_NO,   KC_NO,    AU_TOG,  KC_FN1,KC_FN3, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,        RESET,
+  KC_NO,   KC_NO,    KC_FN5,    KC_FN2,KC_FN4, KC_NO, KC_NO, KC_NO, KC_NO, MU_TOG, KC_NO, KC_NO, KC_NO,             KC_NO,    RGB_HUI,
+  KC_NO,   KC_NO,    KC_NO, KC_NO, KC_NO,                  KC_NO,                           KC_NO, KC_NO, KC_NO,    RGB_SAD, RGB_HUD, RGB_SAI),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    ACTION_FUNCTION(LFK_CLEAR),                               // FN0 - reset layers
+    ACTION_FUNCTION(LFK_CLICK_FREQ_HIGHER),                   // FN1 - Increase Freq of audio click
+    ACTION_FUNCTION(LFK_CLICK_FREQ_LOWER),                    // FN2 - Decrease Freq of audio click
+    ACTION_FUNCTION(LFK_CLICK_TIME_LONGER),                   // FN3 - Increase length of audio click
+    ACTION_FUNCTION(LFK_CLICK_TIME_SHORTER),                  // FN4 - Decrease length of audio click
+    ACTION_FUNCTION(LFK_CLICK_TOGGLE),                        // FN5 - Toggle audio click
+  };
+
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+      }
+    return MACRO_NONE;
+};
+
+
+void matrix_init_user(void) {
+    // This keymap only has a single base layer, so reset the default if needed
+    if(eeconfig_read_default_layer() > 1){
+        eeconfig_update_default_layer(1);
+        default_layer_set(1);
+    }
+}
+
+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/lfkeyboards/lfk78/keymaps/iso/readme.md b/keyboards/lfkeyboards/lfk78/keymaps/iso/readme.md
new file mode 100644 (file)
index 0000000..85b7b1a
--- /dev/null
@@ -0,0 +1 @@
+# The default keymap for bluepad
diff --git a/keyboards/lfkeyboards/lfk78/keymaps/iso/rules.mk b/keyboards/lfkeyboards/lfk78/keymaps/iso/rules.mk
new file mode 100644 (file)
index 0000000..ab20ac0
--- /dev/null
@@ -0,0 +1,53 @@
+# 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 = yes               # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = yes          # Enable keyboard backlight functionality
+MIDI_ENABLE = no                # MIDI controls
+AUDIO_ENABLE = yes               # Audio output on port C6
+UNICODE_ENABLE = no             # Unicode
+BLUETOOTH_ENABLE = no           # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = yes           # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
+RGBLIGHT_CUSTOM_DRIVER = yes    # RGB code is implemented in lefkeyboards, not qmk base
+SLEEP_LED_ENABLE = yes          # Breathing sleep LED during USB suspend
+TAP_DANCE_ENABLE = no
+
+ISSI_ENABLE = yes           # If the I2C pullup resistors aren't install this must be disabled
+WATCHDOG_ENABLE = no       # Resets keyboard if matrix_scan isn't run every 250ms
+
+
+ifndef QUANTUM_DIR
+    include ../../../../Makefile
+endif
+
+ifeq ($(strip $(ISSI_ENABLE)), yes)
+    TMK_COMMON_DEFS += -DISSI_ENABLE
+endif
+
+ifeq ($(strip $(WATCHDOG_ENABLE)), yes)
+    TMK_COMMON_DEFS += -DWATCHDOG_ENABLE
+endif
+
+
+# # Set the LFK78 hardware version. This is defined in rules.mk, but can be overidden here if desired
+# #
+# # RevB - first public release, uses atmega32u4, has audio, ISSI matrix split between RGB and backlight
+# # RevC/D - at90usb1286, no audio, ISSI device 0 is backlight, 4 is RGB
+# #
+# # Set to B, C or D
+# LFK_REV = D
+
+# ifeq ($(LFK_REV), B)
+#   MCU = atmega32u4
+# else
+#   MCU = at90usb1286
+# endif
+# OPT_DEFS += -DLFK_REV_$(LFK_REV)
+# OPT_DEFS += -DUSB_PRODUCT=\"LFK_Rev$(LFK_REV)\"
diff --git a/keyboards/lfkeyboards/lfk78/keymaps/split_bs_osx/config.h b/keyboards/lfkeyboards/lfk78/keymaps/split_bs_osx/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/lfkeyboards/lfk78/keymaps/split_bs_osx/keymap.c b/keyboards/lfkeyboards/lfk78/keymaps/split_bs_osx/keymap.c
new file mode 100644 (file)
index 0000000..6bbfe55
--- /dev/null
@@ -0,0 +1,123 @@
+#include "lfk78.h"
+#include "issi.h"
+#include "lighting.h"
+#include "action_layer.h"
+
+//Define a shorter 'transparent' key code to make the keymaps more compact
+#define KC_TR KC_TRNS
+
+enum keymap_layout {
+    VANILLA = 0,  // matches MF68 layout
+    FUNC,         // 0x02
+    SETTINGS,     // 0x04
+};
+
+// Colors of the layer indicator LED
+// This list needs to define layer 0xFFFFFFFF, it is the end of the list, and the unknown layer
+const Layer_Info layer_info[] = {
+  // Layer     Mask           Red     Green   Blue
+  {0x00000000, 0xFFFFFFFF, {0x0000, 0x0FFF, 0x0000}}, // base layer - green
+  {0x00000002, 0xFFFFFFFE, {0x0000, 0x0000, 0x0FFF}}, // function layer - blue
+  {0x00000004, 0xFFFFFFFC, {0x0FFF, 0x0000, 0x0FFF}}, // settings layer - magenta
+  {0xFFFFFFFF, 0xFFFFFFFF, {0x0FFF, 0x0FFF, 0x0FFF}}, // unknown layer - REQUIRED - white
+};
+
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[VANILLA] = SPLIT_BS_KEYMAP(
+  /* Keymap VANILLA: (Base Layer) Default Layer
+   * ,---------.  ,------------------------------------------------------------.  ,---------.
+   * | F1 | F2 |  |Esc~| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |  0| - | = | / | ` |  | Ins|PgUp|
+   * |---------|  |------------------------------------------------------------|  |---------|
+   * | F3 | F4 |  |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|Backsp|  | Del|PgDn|
+   * |---------|  |------------------------------------------------------------|  `---------'
+   * | F5 | F6 |  |CAPS    |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return |
+   * |---------|  |------------------------------------------------------------|  ,----.
+   * | F7 | F8 |  |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift      |  | Up |
+   * |---------|  |-------------------------------------------------------------------------.
+   * | F9 | F10|  |Ctrl|Alt |Cmd |      Space            |Cmd |Ctrl|Func |    |Lft| Dn |Rig |
+   * `---------'  `------------------------------------------------------'    `-------------'
+   */
+  KC_F1, KC_F2,       KC_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSLS,   KC_GRV,  KC_INS, KC_PGUP,
+  KC_F3, KC_F4,       KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC,  KC_DEL, KC_PGDN,
+  KC_F5, KC_F6,       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_F7, KC_F8,       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_F9, KC_F10,      KC_LCTL, KC_LALT, KC_LGUI,              KC_SPC,           KC_RGUI, KC_RCTL, MO(FUNC),          KC_LEFT, KC_DOWN, KC_RGHT),
+  /* Keymap FUNCTION: Function Layer
+   * ,---------.  ,-------------------------------------------------------------.  ,---------.
+   * |    |    |  | ` |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Ins |Del |  | Ins|Home|
+   * |---------|  |-------------------------------------------------------------|  |---------|
+   * |    |    |  |Tab  |Hom| Up|End|PgU|   |   |   |   |   |   |   |   |       |  | Del|End |
+   * |---------|  |-------------------------------------------------------------|  `---------'
+   * |    |    |  |MO(FUNC)|Lft|Dn |Rig|PgD|   |Lft|Dwn| Up|Rgt|   |   |        |
+   * |---------|  |-------------------------------------------------------------|  ,----.
+   * |    |    |  |Shift   |   |   |   |   |   |   |Mute|V- |V+ |  |TG(SETTINGS)|  | Up |
+   * |---------|  |--------------------------------------------------------------------------.
+   * |    |    |  |Ctrl|Alt |Cmd |        Enter         |Alt |Func |CTRL |     |Lft| Dn |Rig |
+   * `---------'  `------------------------------------------------------'     `-------------'
+   */
+[FUNC] = SPLIT_BS_KEYMAP(
+  KC_TR,   KC_TR,    KC_GRV,  KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL,  KC_TR, KC_HOME,
+  KC_TR,   KC_TR,    KC_NO,KC_HOME, KC_UP, KC_END, KC_PGUP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,         KC_NO,  KC_TR, KC_END,
+  KC_TR,   KC_TR,    KC_TR,   KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, KC_NO,    KC_NO,
+  KC_TR,   KC_TR,    KC_TR,    KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO,           TG(SETTINGS),  KC_TR,
+  KC_TR,   KC_TR,    KC_TR,  KC_TR, KC_TR,                  KC_ENT,                            KC_TR, KC_TR, KC_TR,         KC_TR,  KC_TR, KC_TR),
+
+  /* Keymap SETTINGS: Settings Layer
+   * ,---------.  ,-------------------------------------------------------------.  ,-------------.
+   * |    |    |  |LayClr|   |   |   |   |   |   |   |   |  |   |BL-|BL+|   |   |  |RGB Tog |Val+|
+   * |---------|  |-------------------------------------------------------------|  |-------------|
+   * |    |    |  |MuMode |   |   |   |   |   |   |   |   |   |   |   |  |BLTogl|  |RGB Mode|Val-|
+   * |---------|  |-------------------------------------------------------------|  `-------------'
+   * |    |    |  |AudTgl   |Hz+|MS+|   |   |   |   |   |   |   |   |   |  RST  |
+   * |---------|  |-------------------------------------------------------------|  ,----.
+   * |    |    |  |ClickTgl  |Hz-|MS-|   |   |   |   |MuTgl|  |  |   |Layer Clr |  |Hue+|
+   * |---------|  |-------------------------------------------------------------------------.
+   * |    |    |  |    |    |    |                         |    |    |     |  |Sat-|Hue-|Sat+|
+   * `---------'  `--------------------------------------------------------'  `--------------'
+   */
+[SETTINGS] = SPLIT_BS_KEYMAP(
+  KC_NO,   KC_NO,    KC_FN0,KC_NO,KC_NO,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, BL_DEC, BL_INC,  KC_NO, KC_NO,    RGB_TOG, RGB_VAI,
+  KC_NO,   KC_NO,    MU_MOD, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,   BL_TOGG,    RGB_MOD, RGB_VAD,
+  KC_NO,   KC_NO,    AU_TOG,  KC_FN1,KC_FN3, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,        RESET,
+  KC_NO,   KC_NO,    KC_FN5,    KC_FN2,KC_FN4, KC_NO, KC_NO, KC_NO, KC_NO, MU_TOG, KC_NO, KC_NO, KC_NO,             KC_NO,    RGB_HUI,
+  KC_NO,   KC_NO,    KC_NO, KC_NO, KC_NO,                  KC_NO,                           KC_NO, KC_NO, KC_NO,    RGB_SAD, RGB_HUD, RGB_SAI),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    ACTION_FUNCTION(LFK_CLEAR),                               // FN0 - reset layers
+    ACTION_FUNCTION(LFK_CLICK_FREQ_HIGHER),                   // FN1 - Increase Freq of audio click
+    ACTION_FUNCTION(LFK_CLICK_FREQ_LOWER),                    // FN2 - Decrease Freq of audio click
+    ACTION_FUNCTION(LFK_CLICK_TIME_LONGER),                   // FN3 - Increase length of audio click
+    ACTION_FUNCTION(LFK_CLICK_TIME_SHORTER),                  // FN4 - Decrease length of audio click
+    ACTION_FUNCTION(LFK_CLICK_TOGGLE),                        // FN5 - Toggle audio click
+  };
+
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+      }
+    return MACRO_NONE;
+};
+
+
+void matrix_init_user(void) {
+    // This keymap only has a single base layer, so reset the default if needed
+    if(eeconfig_read_default_layer() > 1){
+        eeconfig_update_default_layer(1);
+        default_layer_set(1);
+    }
+}
+
+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/lfkeyboards/lfk78/keymaps/split_bs_osx/readme.md b/keyboards/lfkeyboards/lfk78/keymaps/split_bs_osx/readme.md
new file mode 100644 (file)
index 0000000..750a434
--- /dev/null
@@ -0,0 +1 @@
+# The split bs keymap for LFK78
diff --git a/keyboards/lfkeyboards/lfk78/keymaps/split_bs_osx/rules.mk b/keyboards/lfkeyboards/lfk78/keymaps/split_bs_osx/rules.mk
new file mode 100644 (file)
index 0000000..20030f1
--- /dev/null
@@ -0,0 +1,47 @@
+# 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 = 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 = yes          # Enable keyboard backlight functionality
+MIDI_ENABLE = no                # MIDI controls
+AUDIO_ENABLE = yes               # Audio output on port C6
+UNICODE_ENABLE = no             # Unicode
+BLUETOOTH_ENABLE = no           # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = yes           # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
+RGBLIGHT_CUSTOM_DRIVER = yes    # RGB code is implemented in lefkeyboards, not qmk base
+SLEEP_LED_ENABLE = yes          # Breathing sleep LED during USB suspend
+TAP_DANCE_ENABLE = no
+
+ISSI_ENABLE = yes               # If the I2C pullup resistors aren't install this must be disabled
+WATCHDOG_ENABLE = no            # Resets keyboard if matrix_scan isn't run every 250ms
+CAPSLOCK_LED = no              # Toggle back light LED of Caps Lock
+
+ifndef QUANTUM_DIR
+    include ../../../../Makefile
+endif
+
+ifeq ($(strip $(ISSI_ENABLE)), yes)
+    TMK_COMMON_DEFS += -DISSI_ENABLE
+endif
+
+ifeq ($(strip $(WATCHDOG_ENABLE)), yes)
+    TMK_COMMON_DEFS += -DWATCHDOG_ENABLE
+endif
+
+ifeq ($(strip $(CAPSLOCK_LED)), yes)
+    TMK_COMMON_DEFS += -DCAPSLOCK_LED
+endif
+
+# Override the LFK78 hardware version:
+#
+# B   - first public release, uses atmega32u4, has audio, ISSI matrix split between RGB and backlight
+# C-H - at90usb1286, no audio, ISSI device 0 is backlight, 4 is RGB
+# J   - at90usb646, C6 audio, ISSI device 0 is backlight, 4 is RGB
+# LFK_REV = J
index e4393327f3671e9d9e21aaa4a0a5a3f2673a8396..753cf70756db8d858e63b77e96c9e8950a247a17 100644 (file)
@@ -200,7 +200,15 @@ void reset_keyboard_kb(){
 void led_set_kb(uint8_t usb_led)
 {
     // put your keyboard LED indicator (ex: Caps Lock LED) toggling code here
-
+#ifdef ISSI_ENABLE
+#ifdef CAPSLOCK_LED
+    if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
+        activateLED(0, 3, 7, 255);
+    }else{
+        activateLED(0, 3, 7, 0);
+    }
+#endif // CAPSLOCK_LED
+#endif // ISS_ENABLE
     led_set_user(usb_led);
 }
 
index 47ad745318c484922aca2558bf80a3acc6c9e6fc..4ec74d9723c329990c14fd2034cac6d0a483b1ce 100644 (file)
@@ -91,7 +91,7 @@ void click(uint16_t freq, uint16_t duration);
         { k90, k91, k92, k93, k94, k95, k96, k97, }, \
     }
 #else
-    /* RevC/D Keymap */
+    /* RevC+ Keymap */
     // This a shortcut to help you visually see your layout.
     /*
     * ,---------.  ,-----------------------------------------------------------------------.  ,---------.
@@ -122,6 +122,20 @@ void click(uint16_t freq, uint16_t duration);
         {k51, k52,   k53, k54, k55, KC_NO, KC_NO, KC_NO, k59, KC_NO, KC_NO, KC_NO, k5D, k5E, k5F, k5G,   k5H, k5I} \
     }
 
+    #define SPLIT_BS_KEYMAP( \
+        k11, k12,   k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G, k3G,   k1H, k1I, \
+        k21, k22,   k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G,        k2H, k2I, \
+        k31, k32,   k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E,      k3F, \
+        k41, k42,   k43,  k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E,          k4F,        k4H, \
+        k51, k52,   k53, k54, k55,              k59,                  k5D, k5E, k5F,        k5G, k5H, k5I \
+    ) { \
+        {k11, k12,   k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G,   k1H, k1I}, \
+        {k21, k22,   k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G,   k2H, k2I}, \
+        {k31, k32,   k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, k3D, k3E, k3F, k3G,   KC_NO, KC_NO}, \
+        {k41, k42,   k43, KC_NO, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, KC_NO,   k4H, KC_NO}, \
+        {k51, k52,   k53, k54, k55, KC_NO, KC_NO, KC_NO, k59, KC_NO, KC_NO, KC_NO, k5D, k5E, k5F, k5G,   k5H, k5I} \
+    }
+
     #define SPLIT_SHIFT_KEYMAP( \
         k11, k12,   k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, k1F, k1G,   k1H, k1I, \
         k21, k22,   k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, k2E, k2F, k2G,   k2H, k2I, \
diff --git a/keyboards/lfkeyboards/lfk87/keymaps/ca178858/config.h b/keyboards/lfkeyboards/lfk87/keymaps/ca178858/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/lfkeyboards/lfk87/keymaps/ca178858/keymap.c b/keyboards/lfkeyboards/lfk87/keymaps/ca178858/keymap.c
new file mode 100644 (file)
index 0000000..37505ae
--- /dev/null
@@ -0,0 +1,223 @@
+#include "lfk87.h"
+#include "issi.h"
+#include "lighting.h"
+#include "action_layer.h"
+#include "process_tap_dance.h"
+
+//Define a shorter 'transparent' key code to make the keymaps more compact
+#define KC_TR KC_TRNS
+
+enum keymap_layout {
+    VANILLA = 0,  // matches MF68 layout
+    DEFAULT_WKL,  // 0x02 Function in CapsLock location, gui key disabled
+    DEFAULT_OSX,  // 0x04 Function in CapsLock location, gui/alt swapped for OSX
+    CS_GO,        // 0x08 Function in CapsLock location, gui/alt swapped for OSX
+    FUNC,         // 0x10
+    SETTINGS,     // 0x20
+};
+
+enum {
+    TD_ESC_FUNC = 0,
+};
+
+
+// Colors of the layer indicator LED
+// This list needs to define layer 0xFFFFFFFF, it is the end of the list, and the unknown layer
+const Layer_Info layer_info[] = {
+  // Layer     Mask           Red     Green   Blue
+  {0x00000000, 0xFFFFFFF8, {0x00, 0xFF, 0x00}}, // base layers (VANILLA, DEFAULT_WKL, DEFAULT_OSX) - green
+  {0x00000008, 0xFFFFFFF8, {0x07FF, 0x07FF, 0x0000}}, // CSGO layer - orange
+  {0x00000010, 0xFFFFFFF0, {0x0000, 0x0000, 0x0FFF}}, // function layer - blue
+  {0x00000020, 0xFFFFFFE0, {0x0FFF, 0x0000, 0x0FFF}}, // settings layer - magenta
+  {0xFFFFFFFF, 0xFFFFFFFF, {0x0FFF, 0x0FFF, 0x0FFF}}, // unknown layer - REQUIRED - white
+};
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[VANILLA] = KEYMAP(
+    /* Keymap VANILLA: (Base Layer) Default Layer
+    * ,-----------------------------------------------------------------------------.
+    * |Esc  |f1| f2| f3| f4|  | f5| f6| f7| f8|   | f9|f10|f11|f12|  |Prnt|ScLk|Paus|
+    * |-----------------------------------------------------------|  |--------------|
+    * | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |  0| - | = |Backsp |  | Ins|Home|PgUp|
+    * |-----------------------------------------------------------|  |--------------|
+    * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \|  | Del| End|PgDn|
+    * |-----------------------------------------------------------|  `--------------'
+    * |CAPS   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return |
+    * |-----------------------------------------------------------|        ,----.
+    * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |        | Up |
+    * |-----------------------------------------------------------|   ,-------------.
+    * |Ctrl|Gui |Alt |      Space            |ALT |GUI |CTRL |Func|   |Lft| Dn |Rig |
+    * `-----------------------------------------------------------'   `-------------'
+    */
+    KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, \
+    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_DELETE, 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_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RCTL, MO(FUNC), MO(SETTINGS), KC_LEFT, KC_DOWN, KC_RGHT),
+    /* Keymap DEFAULT_TKL: (Base Layer) Default Layer
+    * ,-----------------------------------------------------------------------------.
+    * |Esc  |f1| f2| f3| f4|  | f5| f6| f7| f8|   | f9|f10|f11|f12|  |Prnt|ScLk|Paus|
+    * |-----------------------------------------------------------|  |--------------|
+    * | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |  0| - | = |Backsp |  | Ins|Home|PgUp|
+    * |-----------------------------------------------------------|  |--------------|
+    * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \|  | Del| End|PgDn|
+    * |-----------------------------------------------------------|  `--------------'
+    * |CAPS   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return |
+    * |-----------------------------------------------------------|       ,----.
+    * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |       | Up |
+    * |-----------------------------------------------------------|   ,-------------.
+    * |Ctrl|    |Alt |      Space            |ALT |    |CTRL |Func|   |Lft| Dn |Rig |
+    * `-----------------------------------------------------------'   `-------------'
+    */
+[DEFAULT_WKL] = 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_DELETE, 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_RCTL, MO(FUNC), KC_LEFT, KC_DOWN, KC_RGHT),
+
+    /* Keymap DEFAULT_OSX: (Base Layer) Default Layer
+    * ,-----------------------------------------------------------------------------.
+    * |Esc  |f1| f2| f3| f4|  | f5| f6| f7| f8|   | f9|f10|f11|f12|  |Prnt|ScLk|Paus|
+    * |-----------------------------------------------------------|  |--------------|
+    * | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |  0| - | = |Backsp |  | Ins|Home|PgUp|
+    * |-----------------------------------------------------------|  |--------------|
+    * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \|  | Del| End|PgDn|
+    * |-----------------------------------------------------------|  `--------------'
+    * |CAPS   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return |
+    * |-----------------------------------------------------------|        ,----.
+    * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |        | Up |
+    * |-----------------------------------------------------------|   ,-------------.
+    * |Ctrl| Opt |Cmd |      Space           |Cmd |Opt |CTRL |Func|   |Lft| Dn |Rig |
+    * `-----------------------------------------------------------'   `-------------'
+    */
+[DEFAULT_OSX] = 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_SLCK, KC_PAUS, LALT(KC_F5), \
+    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_DELETE, KC_END, KC_PGDN, \
+    TD(TD_ESC_FUNC), 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_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RCTL, MO(FUNC),MO(SETTINGS), KC_LEFT, KC_DOWN, KC_RGHT),
+[CS_GO] = KEYMAP(
+   KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR,   KC_TR,   KC_TR,  KC_TR, \
+   KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR,   KC_TR,   KC_FN0, KC_TR, KC_TR, \
+   KC_TR,  KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR,  KC_TR,   KC_TR,  KC_TR, KC_TR, \
+   KC_LCTL,  KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR,      KC_TR, \
+   KC_TR,     KC_TR,  KC_TR,  KC_TR,  KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR,          KC_TR,           KC_TR, \
+   KC_TR,  KC_TR, KC_TR,                  KC_TR,                           KC_TR, KC_TR, KC_TR,  KC_TR,  KC_TR,  KC_TR, KC_TR),
+
+  /* Keymap FUNCTION: Function Layer
+   * ,-------------------------------------------------------------.  ,--------------.
+   * |Esc  |f1| f2| f3| f4|  | f5| f6| f7| f8|   | f9|f10|f11|f12  |  |Prnt|ScLk|Paus|
+   * |-------------------------------------------------------------|  |--------------|
+   * | ` |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Delete   |  |    |    |    |
+   * |-------------------------------------------------------------|  |--------------|
+   * |Tab  |   |PgU|   |   |   |   |   | Up|   |   |   |   |       |  |    |    |    |
+   * |-------------------------------------------------------------|  `--------------'
+   * |Control|Hme|PgD|End|   |   |   |Lft|Dwn|Rgt|   |   |         |
+   * |-------------------------------------------------------------|       ,----.
+   * |Shift   |   |Del|   |   |   |   |Mute|V- |V+ |  |TG(SETTINGS)|       | Up |
+   * |-------------------------------------------------------------'   ,-------------.
+   * |Func|Win |Alt |        PgD           |Alt |Ctrl |Func |          |Lft| Dn |Rig |
+   * `------------------------------------------------------'          `-------------'
+   */
+[FUNC] = KEYMAP(
+   KC_ESC, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR,                        KC_PSCR, KC_SLCK, KC_PAUS, \
+   KC_TR,  KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR,               KC_DEL,  TO(CS_GO), KC_TR, KC_TR, \
+   KC_NO,KC_PGUP, KC_UP, KC_PGDN, KC_HOME, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, KC_NO, KC_NO,               KC_NO,   KC_TR, KC_TR, KC_TR, \
+   KC_TR, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO,            KC_NO, \
+   KC_TR,    KC_NO,  KC_DEL,  KC_NO,  KC_NO, KC_NO, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO,   TG(SETTINGS),                 KC_TR, \
+   KC_TR,  KC_TR, KC_TR,                  KC_PGDN,                           KC_TR, KC_TR, KC_TR,  KC_TR,            KC_TR,  KC_TR, KC_TR),
+
+   /* Keymap SETTINGS: Settings Layer
+    * ,-----------------------------------------------------------.     ,-------------.
+    * |Esc  |f1| f2| f3| f4|  | f5| f6| f7| f8|   | f9|f10|f11|f12  |  |Prnt|ScLk|Paus|
+    * |-------------------------------------------------------------|  |--------------|
+    * |LayClr|   |   |   |   |   |   |   |   |  |   |BL-|BL+|BL Togl|    |RGB Tog |Val+|
+    * |-----------------------------------------------------------|    |-------------|
+    * |Debug|   |   |   |   |   |   |   |   |   |   |   |  |LEDTst|    |RGB Mode|Val-|
+    * |-----------------------------------------------------------|    `-------------'
+    * |AU_TOG |Hz+|MS+|   |   |   |   |   |   |   |   |   |  RST  |
+    * |-----------------------------------------------------------|  ,----.
+    * |ClickTgl|Hz-|MS-|   |   |   |   |   |   |   |   |Layer Clr |  |Hue+|
+    * |------------------------------------------------------------------------.
+    * |    |    |    |      Print Debug      |    |    |     |  |Sat-|Hue-|Sat+|
+    * `------------------------------------------------------'  `--------------'
+    */
+[SETTINGS] = KEYMAP(
+  KC_FN13,  KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, BL_DEC,            KC_NO,   KC_NO,   KC_NO,
+  KC_FN0,KC_FN3,KC_FN4,KC_FN5, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, BL_DEC, BL_INC, BL_TOGG,  RGB_TOG, RGB_VAI, KC_NO,
+  MU_MOD,  KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,    KC_FN2,  RGB_MOD, RGB_VAD, KC_NO,
+  AU_TOG, KC_FN6,KC_FN8, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,            RESET,
+  KC_FN10, KC_FN7,KC_FN9, KC_NO, KC_NO, KC_NO, KC_NO, MU_TOG, KC_NO, KC_NO, KC_NO,                 KC_FN0,           RGB_HUI,
+  KC_NO, KC_NO, KC_NO,                  KC_FN12,                           KC_NO, KC_NO, KC_NO, KC_TR,     RGB_SAD, RGB_HUD, RGB_SAI),
+};
+
+void tap_esc_func_finished(qk_tap_dance_state_t *state, void *user_data) {
+    if(state->pressed){
+        layer_on(FUNC);
+    }else{
+        register_code(KC_ESC);
+        unregister_code(KC_ESC);
+    }
+}
+
+void tap_esc_func_reset(qk_tap_dance_state_t *state, void *user_data) {
+    layer_off(FUNC);
+}
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+  [TD_ESC_FUNC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tap_esc_func_finished, tap_esc_func_reset),
+};
+
+
+const uint16_t PROGMEM fn_actions[] = {
+    ACTION_FUNCTION(LFK_CLEAR),                               // FN0 - reset layers
+    ACTION_FUNCTION(LFK_ESC_TILDE),                           // FN1 - esc+shift = ~, else escape
+    ACTION_FUNCTION(LFK_LED_TEST),                            // FN2 - cycle through LEDs for testing
+    ACTION_FUNCTION_OPT(LFK_SET_DEFAULT_LAYER, VANILLA),      // FN3 - set base layer to 0 and save
+    ACTION_FUNCTION_OPT(LFK_SET_DEFAULT_LAYER, DEFAULT_WKL),  // FN4 - set base layer to 1 and save
+    ACTION_FUNCTION_OPT(LFK_SET_DEFAULT_LAYER, DEFAULT_OSX),  // FN5 - set base layer to 2 and save
+    ACTION_FUNCTION(LFK_CLICK_FREQ_HIGHER),                   // FN6 - Increase Freq of audio click
+    ACTION_FUNCTION(LFK_CLICK_FREQ_LOWER),                    // FN7 - Decrease Freq of audio click
+    ACTION_FUNCTION(LFK_CLICK_TIME_LONGER),                   // FN8 - Increase length of audio click
+    ACTION_FUNCTION(LFK_CLICK_TIME_SHORTER),                  // FN9 - Decrease length of audio click
+    ACTION_FUNCTION(LFK_CLICK_TOGGLE),                        // FN10 - Toggle audio click
+    ACTION_FUNCTION(LFK_LED_TEST),                            // FN11 - cycle through LEDs for testing
+    ACTION_FUNCTION(LFK_DEBUG_SETTINGS),                      // FN12 - prints LED and click settings to HID
+    ACTION_FUNCTION(LFK_PLAY_ONEUP),
+  };
+
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+      }
+    return MACRO_NONE;
+};
+
+
+void matrix_init_user(void) {
+
+}
+
+void matrix_scan_user(void) {
+
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+  if((layer_state & (1 << CS_GO)) && (keycode == 44)){
+    if(get_mods() & (MOD_BIT(KC_LGUI))){
+      return false;
+    }
+  }
+  return true;
+}
+
+void led_set_user(uint8_t usb_led) {
+
+}
diff --git a/keyboards/lfkeyboards/lfk87/keymaps/ca178858/readme.md b/keyboards/lfkeyboards/lfk87/keymaps/ca178858/readme.md
new file mode 100644 (file)
index 0000000..56742f3
--- /dev/null
@@ -0,0 +1 @@
+# The default keymap for LFK87
diff --git a/keyboards/lfkeyboards/lfk87/keymaps/ca178858/rules.mk b/keyboards/lfkeyboards/lfk87/keymaps/ca178858/rules.mk
new file mode 100644 (file)
index 0000000..9819cdb
--- /dev/null
@@ -0,0 +1,53 @@
+# 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 = yes               # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+BACKLIGHT_ENABLE = yes          # Enable keyboard backlight functionality
+MIDI_ENABLE = no                # MIDI controls
+AUDIO_ENABLE = yes              # Audio output on port C6
+UNICODE_ENABLE = no             # Unicode
+BLUETOOTH_ENABLE = no           # Disable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = yes           # Enable RGB underlight
+RGBLIGHT_CUSTOM_DRIVER = yes    # RGB code is implemented in lefkeyboards, not WS2812
+SLEEP_LED_ENABLE = yes          # Breathing sleep LED during USB suspend
+TAP_DANCE_ENABLE = yes
+
+ISSI_ENABLE = yes                      # If the I2C pullup resistors aren't install this must be disabled
+WATCHDOG_ENABLE = yes          # Resets keyboard if matrix_scan isn't run every 250ms
+
+
+ifndef QUANTUM_DIR
+       include ../../../../Makefile
+endif
+
+ifeq ($(strip $(ISSI_ENABLE)), yes)
+    TMK_COMMON_DEFS += -DISSI_ENABLE
+endif
+
+ifeq ($(strip $(WATCHDOG_ENABLE)), yes)
+    TMK_COMMON_DEFS += -DWATCHDOG_ENABLE
+endif
+
+
+# # Set the LFK78 hardware version. This is defined in rules.mk, but can be overidden here if desired
+# #
+# # RevB - first public release, uses atmega32u4, has audio, ISSI matrix split between RGB and backlight
+# # RevC/D - at90usb1286, no audio, ISSI device 0 is backlight, 4 is RGB
+# #
+# # Set to B, C or D
+# LFK_REV = D
+
+# ifeq ($(LFK_REV), B)
+#      MCU = atmega32u4
+# else
+#      MCU = at90usb1286
+# endif
+# OPT_DEFS += -DLFK_REV_$(LFK_REV)
+# OPT_DEFS += -DUSB_PRODUCT=\"LFK_Rev$(LFK_REV)\"
diff --git a/keyboards/lfkeyboards/lfk87/keymaps/gbchk/config.h b/keyboards/lfkeyboards/lfk87/keymaps/gbchk/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/lfkeyboards/lfk87/keymaps/gbchk/keymap.c b/keyboards/lfkeyboards/lfk87/keymaps/gbchk/keymap.c
new file mode 100644 (file)
index 0000000..2693403
--- /dev/null
@@ -0,0 +1,133 @@
+#include "lfk87.h"
+#include "issi.h"
+#include "lighting.h"
+#include "action_layer.h"
+
+//Define a shorter 'transparent' key code to make the keymaps more compact
+#define KC_TR KC_TRNS
+
+enum keymap_layout {
+    VANILLA = 0,  // matches MF68 layout
+    FUNC,         // 0x08
+    SETTINGS,     // 0x10
+};
+
+// Colors of the layer indicator LED
+// This list needs to define layer 0xFFFFFFFF, it is the end of the list, and the unknown layer
+const Layer_Info layer_info[] = {
+    // Layer     Mask           Red     Green   Blue
+    {0x00000000, 0xFFFFFFFF, {0x00, 0x00, 0x00}}, // base layers - off
+    {0x00000002, 0xFFFFFFFE, {0x00, 0x00, 0xFF}}, // function layer - blue
+    {0x00000004, 0xFFFFFFFC, {0xFF, 0x00, 0xFF}}, // settings layer - magenta
+    {0xFFFFFFFF, 0xFFFFFFFF, {0xFF, 0xFF, 0xFF}}, // unknown layer - REQUIRED - white
+};
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[VANILLA] = KEYMAP(
+    /* Keymap VANILLA: (Base Layer) Default Layer
+    * ,-----------------------------------------------------------------------------.
+    * |Esc  |f1| f2| f3| f4|  | f5| f6| f7| f8|   | f9|f10|f11|f12|  |Prnt|ScLk|Paus|
+    * |-----------------------------------------------------------|  |--------------|
+    * | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |  0| - | = |Backsp |  | Ins|Home|PgUp|
+    * |-----------------------------------------------------------|  |--------------|
+    * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \|  | Del| End|PgDn|
+    * |-----------------------------------------------------------|  `--------------'
+    * |CAPS   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return |
+    * |-----------------------------------------------------------|        ,----.
+    * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |        | Up |
+    * |-----------------------------------------------------------|   ,-------------.
+    * |Ctrl|Gui |Alt |      Space            |ALT |GUI |Func|CTRL |   |Lft| Dn |Rig |
+    * `-----------------------------------------------------------'   `-------------'
+    */
+    KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, LGUI(KC_D), KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, 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_DELETE, 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, MO(FUNC), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+    /* Keymap FUNCTION: Function Layer
+    * ,-------------------------------------------------------------.  ,--------------.
+    * |Esc  |f1| f2| f3| f4|  | f5| f6| f7| f8|   | f9|f10|f11|f12  |  |Prnt|ScLk|Paus|
+    * |-------------------------------------------------------------|  |--------------|
+    * | ` |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Delete   |  |    |    |    |
+    * |-------------------------------------------------------------|  |--------------|
+    * |Tab  |   |PgU|   |   |   |   |   | Up|   |   |   |   |       |  |    |    |    |
+    * |-------------------------------------------------------------|  `--------------'
+    * |Control|Hme|PgD|End|   |   |   |Lft|Dwn|Rgt|   |   |         |
+    * |-------------------------------------------------------------|       ,----.
+    * |Shift   |   |Del|   |   |   |   |Mute|V- |V+ |  |TG(SETTINGS)|       | Up |
+    * |-------------------------------------------------------------'   ,-------------.
+    * |Func|Win |Alt |        PgD           |Alt |Ctrl |Func |          |Lft| Dn |Rig |
+    * `------------------------------------------------------'          `-------------'
+    */
+[FUNC] = KEYMAP(
+    KC_ESC, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR,                        KC_PSCR, KC_SLCK, KC_PAUS, \
+    KC_TR,  KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR,               KC_DEL,  KC_TR, KC_TR, KC_TR, \
+    KC_NO,KC_NO, KC_PGUP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, KC_NO, KC_NO,               KC_NO,   KC_TR, KC_TR, KC_TR, \
+    KC_TR, KC_HOME, KC_PGDN, KC_END, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO,            KC_NO, \
+    KC_TR,    KC_NO,  KC_DEL,  KC_NO,  KC_NO, KC_NO, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO,   TG(SETTINGS),                 KC_TR, \
+    KC_TR,  KC_TR, KC_TR,                  KC_PGDN,                           KC_TR, KC_TR, KC_TR,  KC_TR,            KC_TR,  KC_TR, KC_TR),
+
+    /* Keymap SETTINGS: Settings Layer
+    * ,-----------------------------------------------------------.     ,-------------.
+    * |Esc  |f1| f2| f3| f4|  | f5| f6| f7| f8|   | f9|f10|f11|f12  |  |Prnt|ScLk|Paus|
+    * |-------------------------------------------------------------|  |--------------|
+    * |FN0 |   |   |   |   |   |   |   |   |  |   |BL-|BL+|BL Togl|    |RGB Tog |Val+|
+    * |-----------------------------------------------------------|    |-------------|
+    * |MuMode|   |   |   |   |   |   |   |   |   |   |   |  |LEDTst|    |RGB Mode|Val-|
+    * |-----------------------------------------------------------|    `-------------'
+    * |AudTgl |Hz+|MS+|   |   |   |   |   |   |   |   |   |  RST  |
+    * |-----------------------------------------------------------|      ,----.
+    * |ClickTgl|Hz-|MS-|   |   |   |   |   |   |   |   |Layer Clr |      |Hue+|
+    * |--------------------------------------------------------------------------.
+    * |    |    |    |                       |    |    |    |     | |Sat-|Hue-|Sat+|
+    * `----------------------------------------------------------------------------'
+    */
+[SETTINGS] = KEYMAP(
+    KC_FN0,  KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, BL_DEC,            KC_NO,   KC_NO,   KC_NO,
+    KC_FN0,KC_NO,KC_NO,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, BL_DEC, BL_INC, BL_TOGG,  RGB_TOG, RGB_VAI, KC_NO,
+    MU_MOD,  KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,    KC_FN2,  RGB_MOD, RGB_VAD, KC_NO,
+    AU_TOG, KC_F1,KC_FN3, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,            RESET,
+    KC_FN5, KC_FN2,KC_FN4, KC_NO, KC_NO, KC_NO, KC_NO, MU_TOG, KC_NO, KC_NO, KC_NO,                 KC_NO,           RGB_HUI,
+    KC_NO, KC_NO, KC_NO,                  KC_FN12,                           KC_NO, KC_NO, KC_NO, KC_TR,     RGB_SAD, RGB_HUD, RGB_SAI),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    ACTION_FUNCTION(LFK_CLEAR),                               // FN0 - reset layers
+    ACTION_FUNCTION(LFK_CLICK_FREQ_HIGHER),                   // FN1 - Increase Freq of audio click
+    ACTION_FUNCTION(LFK_CLICK_FREQ_LOWER),                    // FN2 - Decrease Freq of audio click
+    ACTION_FUNCTION(LFK_CLICK_TIME_LONGER),                   // FN3 - Increase length of audio click
+    ACTION_FUNCTION(LFK_CLICK_TIME_SHORTER),                  // FN4 - Decrease length of audio click
+    ACTION_FUNCTION(LFK_CLICK_TOGGLE),                        // FN5 - Toggle audio click
+  };
+
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+    // MACRODOWN only works in this function
+    switch(id) {
+    }
+    return MACRO_NONE;
+};
+
+
+void matrix_init_user(void) {
+    // This keymap only has a single base layer, so reset the default if needed
+    if(eeconfig_read_default_layer() > 1){
+        eeconfig_update_default_layer(1);
+        default_layer_set(1);
+    }
+}
+
+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/lfkeyboards/lfk87/keymaps/gbchk/rules.mk b/keyboards/lfkeyboards/lfk87/keymaps/gbchk/rules.mk
new file mode 100644 (file)
index 0000000..c1f1070
--- /dev/null
@@ -0,0 +1,54 @@
+# 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 = 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 = yes           # Enable keyboard backlight functionality
+MIDI_ENABLE = no                # MIDI controls
+AUDIO_ENABLE = yes              # Audio output on port C6
+UNICODE_ENABLE = no             # Unicode
+BLUETOOTH_ENABLE = no           # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = yes           # Enable RGB underlight
+RGBLIGHT_CUSTOM_DRIVER = yes    # RGB code is implemented in lefkeyboards, not WS2812
+SLEEP_LED_ENABLE = yes          # Breathing sleep LED during USB suspend
+TAP_DANCE_ENABLE = no
+
+ISSI_ENABLE = yes                      # If the I2C pullup resistors aren't install this must be disabled
+WATCHDOG_ENABLE = no           # Resets keyboard if matrix_scan isn't run every 250ms
+
+
+ifndef QUANTUM_DIR
+       include ../../../../Makefile
+endif
+
+ifeq ($(strip $(ISSI_ENABLE)), yes)
+    TMK_COMMON_DEFS += -DISSI_ENABLE
+endif
+
+ifeq ($(strip $(WATCHDOG_ENABLE)), yes)
+    TMK_COMMON_DEFS += -DWATCHDOG_ENABLE
+endif
+
+
+# Override the LFK87 hardware version.
+#
+# A - Green PCB. at90usb1286 Only 3 exist
+# B - We don't talk about RevB
+# C-D - Black PCB. at90usb646 First public release
+#
+# LFK_REV = C
+
+# ifeq ($(LFK_REV), A)
+#      MCU = at90usb1286
+#      OPT_DEFS += -DBOOTLOADER_SIZE=8192
+# else
+#      MCU = at90usb646
+#      OPT_DEFS += -DBOOTLOADER_SIZE=4096
+# endif
+# OPT_DEFS += -DLFK_TKL_REV_$(LFK_REV)
diff --git a/keyboards/lfkeyboards/lfkpad/config.h b/keyboards/lfkeyboards/lfkpad/config.h
new file mode 100644 (file)
index 0000000..ea85f67
--- /dev/null
@@ -0,0 +1,151 @@
+/*
+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"
+
+#define VENDOR_ID       0xFEED
+#define PRODUCT_ID      0x6060
+#define DEVICE_VER      0x0001
+#define MANUFACTURER    LFKeyboards
+#define PRODUCT         LFKPad 21
+#define DESCRIPTION     QMK keyboard firmware for LFKPad LFK_REV_STRING
+
+#define DIODE_DIRECTION COL2ROW
+#define MATRIX_ROWS 6
+#define MATRIX_COLS 4
+#define MATRIX_ROW_PINS { D5, F4, F6, F7, C7, C6}
+#define MATRIX_COL_PINS { F1, F0, D4, D6}
+#define UNUSED_PINS { }
+#define RGBLED_NUM 28     // Number of LEDs
+
+#define RGB_DI_PIN C7  // Have to set it to something to get the ws2812 code to compile
+#define RGBLIGHT_ANIMATIONS
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+#define RGBLIGHT_VAL_STEP 17
+
+#define TAPPING_TERM 200
+
+/* 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/lfkeyboards/lfkpad/keymaps/default/config.h b/keyboards/lfkeyboards/lfkpad/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/lfkeyboards/lfkpad/keymaps/default/keymap.c b/keyboards/lfkeyboards/lfkpad/keymaps/default/keymap.c
new file mode 100644 (file)
index 0000000..33ecfd5
--- /dev/null
@@ -0,0 +1,52 @@
+#include "lfkpad.h"
+#include "issi.h"
+#include "lighting.h"
+#include "action_layer.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = KEYMAP( /* Base */
+  KC_ESC,   KC_TAB,  KC_PEQL, MO(1), \
+  KC_LNUM,  KC_PSLS, KC_PAST, KC_PMNS, \
+  KC_P7,    KC_P8,   KC_P9,   KC_PPLS, \
+  KC_P4,    KC_P5,   KC_P6, \
+  KC_P1,    KC_P2,   KC_P3,   KC_PENT, \
+  KC_P0,    KC_PDOT),
+
+[1] = KEYMAP( /* RGB */
+  RGB_SAI,  RGB_VAI,  RGB_HUI,  KC_TRNS, \
+  RGB_SAD,  RGB_VAD,  RGB_HUD,  KC_TRNS, \
+  RGB_M_X,  RGB_M_G,  RGB_MOD,  RGB_RMOD, \
+  RGB_M_SW, RGB_M_SN, RGB_M_K, \
+  RGB_M_P,  RGB_M_B,  RGB_M_R,  RGB_TOG, \
+  KC_NO,    KC_NO),
+};
+
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+      }
+    return MACRO_NONE;
+};
+
+
+void matrix_init_user(void) {
+    // This keymap only has a single base layer, so reset the default if needed
+    if(eeconfig_read_default_layer() > 1){
+        eeconfig_update_default_layer(1);
+        default_layer_set(1);
+    }
+}
+
+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/lfkeyboards/lfkpad/keymaps/default/readme.md b/keyboards/lfkeyboards/lfkpad/keymaps/default/readme.md
new file mode 100644 (file)
index 0000000..6c48b8d
--- /dev/null
@@ -0,0 +1 @@
+# The default keymap LFKPad 21
diff --git a/keyboards/lfkeyboards/lfkpad/keymaps/default/rules.mk b/keyboards/lfkeyboards/lfkpad/keymaps/default/rules.mk
new file mode 100644 (file)
index 0000000..d2ddd15
--- /dev/null
@@ -0,0 +1,53 @@
+# 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 = no             # Console for debug(+400)
+COMMAND_ENABLE = no             # 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 = yes           # Enable WS2812 RGB underlight.  Do not enable this with audio at the same time.
+RGBLIGHT_CUSTOM_DRIVER = yes    # RGB code is implemented in lefkeyboards, not qmk base
+SLEEP_LED_ENABLE = yes          # Breathing sleep LED during USB suspend
+TAP_DANCE_ENABLE = no
+
+ISSI_ENABLE = yes           # If the I2C pullup resistors aren't install this must be disabled
+WATCHDOG_ENABLE = no       # Resets keyboard if matrix_scan isn't run every 250ms
+
+
+ifndef QUANTUM_DIR
+    include ../../../../Makefile
+endif
+
+ifeq ($(strip $(ISSI_ENABLE)), yes)
+    TMK_COMMON_DEFS += -DISSI_ENABLE
+endif
+
+ifeq ($(strip $(WATCHDOG_ENABLE)), yes)
+    TMK_COMMON_DEFS += -DWATCHDOG_ENABLE
+endif
+
+
+# # Set the LFK78 hardware version. This is defined in rules.mk, but can be overidden here if desired
+# #
+# # RevB - first public release, uses atmega32u4, has audio, ISSI matrix split between RGB and backlight
+# # RevC/D - at90usb1286, no audio, ISSI device 0 is backlight, 4 is RGB
+# #
+# # Set to B, C or D
+# LFK_REV = D
+
+# ifeq ($(LFK_REV), B)
+#   MCU = atmega32u4
+# else
+#   MCU = at90usb1286
+# endif
+# OPT_DEFS += -DLFK_REV_$(LFK_REV)
+# OPT_DEFS += -DUSB_PRODUCT=\"LFK_Rev$(LFK_REV)\"
diff --git a/keyboards/lfkeyboards/lfkpad/lfkpad.c b/keyboards/lfkeyboards/lfkpad/lfkpad.c
new file mode 100644 (file)
index 0000000..8caab8b
--- /dev/null
@@ -0,0 +1,176 @@
+#include <avr/sfr_defs.h>
+#include <avr/timer_avr.h>
+#include <avr/wdt.h>
+#include "lfkpad.h"
+#include "keymap.h"
+#include "issi.h"
+#include "TWIlib.h"
+#include "lighting.h"
+#include "debug.h"
+#include "quantum.h"
+
+uint16_t click_hz = CLICK_HZ;
+uint16_t click_time = CLICK_MS;
+uint8_t click_toggle = CLICK_ENABLED;
+
+
+void matrix_init_kb(void)
+{
+    matrix_init_user();
+#ifndef AUDIO_ENABLE
+    // If we're not using the audio pin, drive it low
+    sbi(DDRC, 6);
+    cbi(PORTC, 6);
+#endif
+
+#ifdef ISSI_ENABLE
+    issi_init();
+#endif
+#ifdef WATCHDOG_ENABLE
+    // This is done after turning the layer LED red, if we're caught in a loop
+    // we should get a flashing red light
+    wdt_enable(WDTO_500MS);
+#endif
+
+}
+
+void matrix_scan_kb(void)
+{
+#ifdef WATCHDOG_ENABLE
+    wdt_reset();
+#endif
+#ifdef ISSI_ENABLE
+    // switch/underglow lighting update
+    static uint32_t issi_device = 0;
+    static uint32_t twi_last_ready = 0;
+    if(twi_last_ready > 1000){
+        // Its been way too long since the last ISSI update, reset the I2C bus and start again
+        dprintf("TWI failed to recover, TWI re-init\n");
+        twi_last_ready = 0;
+        TWIInit();
+        force_issi_refresh();
+    }
+    if(isTWIReady()){
+        twi_last_ready = 0;
+        // If the i2c bus is available, kick off the issi update, alternate between devices
+        update_issi(issi_device, issi_device);
+        if(issi_device){
+            issi_device = 0;
+        }else{
+            issi_device = 3;
+        }
+    }else{
+        twi_last_ready++;
+    }
+#endif
+    matrix_scan_user();
+}
+
+void click(uint16_t freq, uint16_t duration){
+#ifdef AUDIO_ENABLE
+    if(freq >= 100 && freq <= 20000 && duration < 100){
+        play_note(freq, 10);
+        for (uint16_t i = 0; i < duration; i++){
+            _delay_ms(1);
+        }
+        stop_all_notes();
+    }
+#endif
+}
+
+bool process_record_kb(uint16_t keycode, keyrecord_t* record)
+{
+    if (click_toggle && record->event.pressed){
+        click(click_hz, click_time);
+    }
+    if (keycode == RESET) {
+        reset_keyboard_kb();
+    } else {
+    }
+    return process_record_user(keycode, record);
+}
+
+void action_function(keyrecord_t *event, uint8_t id, uint8_t opt)
+{
+#ifdef AUDIO_ENABLE
+    int8_t sign = 1;
+#endif
+    if(id == LFK_ESC_TILDE){
+        // Send ~ on shift-esc
+        void (*method)(uint8_t) = (event->event.pressed) ? &add_key : &del_key;
+        uint8_t shifted = get_mods() & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT));
+        if(layer_state == 0){
+            method(shifted ? KC_GRAVE : KC_ESCAPE);
+        }else{
+            method(shifted ? KC_ESCAPE : KC_GRAVE);
+        }
+        send_keyboard_report();
+    }else if(event->event.pressed){
+        switch(id){
+            case LFK_SET_DEFAULT_LAYER:
+                // set/save the current base layer to eeprom, falls through to LFK_CLEAR
+                eeconfig_update_default_layer(1UL << opt);
+                default_layer_set(1UL << opt);
+            case LFK_CLEAR:
+                // Go back to default layer
+                layer_clear();
+                break;
+#ifdef AUDIO_ENABLE
+            case LFK_CLICK_FREQ_LOWER:
+                sign = -1;  // continue to next statement
+            case LFK_CLICK_FREQ_HIGHER:
+                click_hz += sign * 100;
+                click(click_hz, click_time);
+                break;
+            case LFK_CLICK_TOGGLE:
+                if(click_toggle){
+                    click_toggle = 0;
+                    click(4000, 100);
+                    click(1000, 100);
+                }else{
+                    click_toggle = 1;
+                    click(1000, 100);
+                    click(4000, 100);
+                }
+                break;
+            case LFK_CLICK_TIME_SHORTER:
+                sign = -1;  // continue to next statement
+            case LFK_CLICK_TIME_LONGER:
+                click_time += sign;
+                click(click_hz, click_time);
+                break;
+#endif
+        }
+    }
+}
+
+void reset_keyboard_kb(){
+#ifdef WATCHDOG_ENABLE
+    MCUSR = 0;
+    wdt_disable();
+    wdt_reset();
+#endif
+    reset_keyboard();
+}
+
+void led_set_kb(uint8_t usb_led)
+{
+    led_set_user(usb_led);
+}
+
+// LFK lighting info
+const uint8_t rgb_matrices[] = {0, 1};
+const uint8_t rgb_sequence[] = {
+    32,  1,  2,  3,
+    31, 30,  5,  6,
+    28, 27,  7,  8,
+    17, 18,  9,
+    19, 21, 11, 12,
+      22,   14,
+
+    16,         26,
+     4,         25,
+    13,         24,
+          20
+
+};
diff --git a/keyboards/lfkeyboards/lfkpad/lfkpad.h b/keyboards/lfkeyboards/lfkpad/lfkpad.h
new file mode 100644 (file)
index 0000000..d7d66ea
--- /dev/null
@@ -0,0 +1,73 @@
+#ifndef LFKPAD_H
+#define LFKPAD_H
+
+/* if the kb.h file exists (because we're running from qmkbuilder) include it */
+#if __has_include("kb.h")
+#include "kb.h"
+#endif
+
+#include "quantum.h"
+#include "matrix.h"
+#include <avr/sfr_defs.h>
+
+#ifndef cbi
+#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
+#endif
+
+#ifndef sbi
+#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
+#endif
+
+
+typedef struct RGB_Color {
+    uint16_t red;
+    uint16_t green;
+    uint16_t blue;
+} RGB_Color;
+
+typedef struct Layer_Info {
+    uint32_t layer;
+    uint32_t mask;
+    RGB_Color color;
+} Layer_Info;
+
+extern const uint32_t layer_count;
+extern const Layer_Info layer_info[];
+
+enum action_functions {
+    LFK_CLEAR = 0,          // Resets all layers
+    LFK_ESC_TILDE,          // esc+lshift = ~
+    LFK_SET_DEFAULT_LAYER,  // changes and saves current base layer to eeprom
+    LFK_CLICK_TOGGLE,       // Adjusts click duration
+    LFK_CLICK_FREQ_HIGHER,  // Adjusts click frequency
+    LFK_CLICK_FREQ_LOWER,   // Adjusts click frequency
+    LFK_CLICK_TIME_LONGER,  // Adjusts click duration
+    LFK_CLICK_TIME_SHORTER, // Adjusts click duration
+    LFK_DEBUG_SETTINGS,     // prints LED and click settings to HID
+    LFK_LED_TEST            // cycles through switch and RGB LEDs
+};
+
+#define CLICK_HZ 500
+#define CLICK_MS 2
+#define CLICK_ENABLED 0
+
+void reset_keyboard_kb(void);
+void click(uint16_t freq, uint16_t duration);
+
+#define KEYMAP( \
+    k00, k01, k02, k03,\
+    k10, k11, k12, k13,\
+    k20, k21, k22, k23,\
+    k30, k31, k32,\
+    k40, k41, k42, k43,\
+    k50,      k52\
+) { \
+    { k00, k01,   k02, k03 }, \
+    { k10, k11,   k12, k13 }, \
+    { k20, k21,   k22, k23 }, \
+    { k30, k31,   k32, KC_NO }, \
+    { k40, k41,   k42, k43 }, \
+    { k50, KC_NO, k52, KC_NO } \
+}
+
+#endif //LFKPAD_H
\ No newline at end of file
diff --git a/keyboards/lfkeyboards/lfkpad/readme.md b/keyboards/lfkeyboards/lfkpad/readme.md
new file mode 100644 (file)
index 0000000..5f23d98
--- /dev/null
@@ -0,0 +1,28 @@
+bluepad keyboard firmware
+======================
+
+## Quantum MK Firmware
+
+For the full Quantum feature list, see [the parent readme.md](/doc/readme.md).
+
+## Building
+
+Download or clone the whole firmware and navigate to the keyboards/bluepad folder. Once your dev env is setup, you'll be able to type `make` to generate your .hex - you can then use the Teensy Loader to program your .hex file. 
+
+Depending on which keymap you would like to use, you will have to compile slightly differently.
+
+### Default
+
+To build with the default keymap, simply run `make`.
+
+### Other Keymaps
+
+Several version of keymap are available in advance but you are recommended to define your favorite layout yourself. To define your own keymap create a folder with the name of your keymap in the keymaps folder, and see keymap documentation (you can find in top readme.md) and existant keymap files.
+
+To build the firmware binary hex file with a keymap just do `make` with `keymap` option like:
+
+```
+$ make keymap=[default|jack|<name>]
+```
+
+Keymaps follow the format **__keymap.c__** and are stored in folders in the `keymaps` folder, eg `keymaps/my_keymap/`
diff --git a/keyboards/lfkeyboards/lfkpad/rules.mk b/keyboards/lfkeyboards/lfkpad/rules.mk
new file mode 100644 (file)
index 0000000..0b86553
--- /dev/null
@@ -0,0 +1,14 @@
+SRC = TWIlib.c issi.c lighting.c
+
+MCU = atmega32u4
+OPT_DEFS += -DBOOTLOADER_SIZE=4096
+
+F_CPU = 16000000
+F_USB = $(F_CPU)
+ARCH = AVR8
+
+# Interrupt driven control endpoint task(+60)
+OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
+ifndef QUANTUM_DIR
+       include ../../Makefile
+endif
index 42d247ae701344bc38e8e4d5060f4c05f8276fd8..2a6eac929b7020d46d0c20d26eabeaead3ec338f 100644 (file)
@@ -16,7 +16,9 @@
 
 extern rgblight_config_t rgblight_config; // Declared in rgblight.c
 
-const uint8_t backlight_pwm_map[BACKLIGHT_LEVELS] = BACKLIGHT_PWM_MAP;
+#ifdef BACKLIGHT_ENABLE
+    const uint8_t backlight_pwm_map[BACKLIGHT_LEVELS] = BACKLIGHT_PWM_MAP;
+#endif
 
 // RGB# to ISSI matrix, this is the same across all revisions
 const uint8_t rgb_leds[][3][2] = {
diff --git a/keyboards/lfkeyboards/mini1800/config.h b/keyboards/lfkeyboards/mini1800/config.h
new file mode 100644 (file)
index 0000000..8389e8b
--- /dev/null
@@ -0,0 +1,159 @@
+/*
+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"
+
+#define VENDOR_ID       0xFEED
+#define PRODUCT_ID      0x6060
+#define DEVICE_VER      0x0001
+#define MANUFACTURER    LFKeyboards
+#define PRODUCT         LFK87
+#define DESCRIPTION     QMK keyboard firmware for LFK87
+
+#define DIODE_DIRECTION COL2ROW
+
+/* Matrix config */
+    #define MATRIX_ROWS 5
+    #define MATRIX_COLS 19
+    #define MATRIX_ROW_PINS {D7, E1, F2, F0, F1}
+    #define MATRIX_COL_PINS {E6, E0, A3, A4, A5, A6, A7, C7, C5, C4, C3, C2, C1, C0, D6, A2, A1, A0, F3}
+    #define UNUSED_PINS {}
+    #define RGBLED_NUM 26     // Number of LEDs
+
+#define AUDIO_VOICES
+#define C6_AUDIO
+
+#define BACKLIGHT_LEVELS 10
+#define BACKLIGHT_PWM_MAP {2, 4, 8, 16, 40, 55, 70, 128, 200, 255}
+
+#define RGB_DI_PIN F4  // Have to set it to something to get the ws2812 code to compile
+#define RGBLIGHT_ANIMATIONS
+#define RGBLIGHT_HUE_STEP 10
+#define RGBLIGHT_SAT_STEP 17
+#define RGBLIGHT_VAL_STEP 17
+
+#define TAPPING_TERM 200
+
+/* 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/lfkeyboards/mini1800/keymaps/ca178858/config.h b/keyboards/lfkeyboards/mini1800/keymaps/ca178858/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/lfkeyboards/mini1800/keymaps/ca178858/keymap.c b/keyboards/lfkeyboards/mini1800/keymaps/ca178858/keymap.c
new file mode 100644 (file)
index 0000000..e633486
--- /dev/null
@@ -0,0 +1,154 @@
+#include "mini1800.h"
+#include "issi.h"
+#include "lighting.h"
+#include "action_layer.h"
+#include "process_tap_dance.h"
+
+//Define a shorter 'transparent' key code to make the keymaps more compact
+#define KC_TR KC_TRNS
+
+enum keymap_layout {
+    VANILLA = 0,  // matches MF68 layout
+    FUNC,         // 0x08
+    SETTINGS,     // 0x10
+};
+
+enum {
+    TD_ESC_FUNC = 0,
+    TD_ESC_CTRL,
+    TD_SPC_SPAM
+};
+
+// Colors of the layer indicator LED
+// This list needs to define layer 0xFFFFFFFF, it is the end of the list, and the unknown layer
+const Layer_Info layer_info[] = {
+    // Layer     Mask           Red     Green   Blue
+    {0x00000000, 0xFFFFFFFF, {0x00, 0xFF, 0x00}}, // base layers - green
+    {0x00000002, 0xFFFFFFFE, {0x00, 0x00, 0xFF}}, // function layer - blue
+    {0x00000004, 0xFFFFFFFC, {0xFF, 0x00, 0xFF}}, // settings layer - magenta
+    {0xFFFFFFFF, 0xFFFFFFFF, {0xFF, 0xFF, 0xFF}}, // unknown layer - REQUIRED - white
+};
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[VANILLA] = KEYMAP(
+    /* Keymap VANILLA: (Base Layer) Default Layer
+    * ,-----------------------------------------------------------------------------.
+    * |Esc  |f1| f2| f3| f4|  | f5| f6| f7| f8|   | f9|f10|f11|f12|  |Prnt|ScLk|Paus|
+    * |-----------------------------------------------------------|  |--------------|
+    * | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |  0| - | = |Backsp |  | Ins|Home|PgUp|
+    * |-----------------------------------------------------------|  |--------------|
+    * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \|  | Del| End|PgDn|
+    * |-----------------------------------------------------------|  `--------------'
+    * |CAPS   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return |
+    * |-----------------------------------------------------------|        ,----.
+    * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |        | Up |
+    * |-----------------------------------------------------------|   ,-------------.
+    * |Ctrl|Gui |Alt |      Space            |ALT |GUI |Func|CTRL |   |Lft| Dn |Rig |
+    * `-----------------------------------------------------------'   `-------------'
+    */
+  KC_GESC,    KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL,   KC_BSPC,          KC_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_P7,   KC_P8,   KC_P9,   KC_PPLS,
+  TD(TD_ESC_FUNC), 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,   LALT(KC_F5),
+  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_LALT,     KC_LGUI,              KC_SPC,        KC_RGUI, KC_RCTL, MO(FUNC), KC_LEFT, KC_DOWN, KC_RGHT,    KC_P0,   KC_PDOT),
+    /* Keymap FUNCTION: Function Layer
+    * ,-------------------------------------------------------------.  ,--------------.
+    * |Esc  |f1| f2| f3| f4|  | f5| f6| f7| f8|   | f9|f10|f11|f12  |  |Prnt|ScLk|Paus|
+    * |-------------------------------------------------------------|  |--------------|
+    * | ` |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Delete   |  |    |    |    |
+    * |-------------------------------------------------------------|  |--------------|
+    * |Tab  |   |PgU|   |   |   |   |   | Up|   |   |   |   |       |  |    |    |    |
+    * |-------------------------------------------------------------|  `--------------'
+    * |Control|Hme|PgD|End|   |   |   |Lft|Dwn|Rgt|   |   |         |
+    * |-------------------------------------------------------------|       ,----.
+    * |Shift   |   |Del|   |   |   |   |Mute|V- |V+ |  |TG(SETTINGS)|       | Up |
+    * |-------------------------------------------------------------'   ,-------------.
+    * |Func|Win |Alt |        PgD           |Alt |Ctrl |Func |          |Lft| Dn |Rig |
+    * `------------------------------------------------------'          `-------------'
+    */
+[FUNC] = KEYMAP(
+  KC_GRV,  KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,   KC_DEL,           KC_TR, KC_TR, KC_TR, KC_TR,
+  KC_NO,KC_HOME, KC_UP, KC_END, KC_PGUP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,     KC_NO,           KC_TR, KC_TR, KC_TR, KC_TR,
+  KC_TR,   KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, KC_NO,KC_NO,           KC_TR, KC_TR, KC_TR, KC_TR,
+  KC_TR,    KC_NO, KC_DEL, KC_NO, KC_NO, KC_NO, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO,    TG(SETTINGS),     KC_TR,   KC_TR, KC_TR, KC_TR, KC_TR,
+  KC_TR,  KC_TR, KC_TR,                  KC_PGDN,                           KC_TR, KC_TR, KC_TR,     KC_TR,  KC_TR, KC_TR,   KC_TR, KC_TR),
+
+    /* Keymap SETTINGS: Settings Layer
+    * ,-----------------------------------------------------------.     ,-------------.
+    * |Esc  |f1| f2| f3| f4|  | f5| f6| f7| f8|   | f9|f10|f11|f12  |  |Prnt|ScLk|Paus|
+    * |-------------------------------------------------------------|  |--------------|
+    * |FN0 |   |   |   |   |   |   |   |   |  |   |BL-|BL+|BL Togl|    |RGB Tog |Val+|
+    * |-----------------------------------------------------------|    |-------------|
+    * |MuMode|   |   |   |   |   |   |   |   |   |   |   |  |LEDTst|    |RGB Mode|Val-|
+    * |-----------------------------------------------------------|    `-------------'
+    * |AudTgl |Hz+|MS+|   |   |   |   |   |   |   |   |   |  RST  |
+    * |-----------------------------------------------------------|      ,----.
+    * |ClickTgl|Hz-|MS-|   |   |   |   |   |   |   |   |Layer Clr |      |Hue+|
+    * |--------------------------------------------------------------------------.
+    * |    |    |    |                       |    |    |    |     | |Sat-|Hue-|Sat+|
+    * `----------------------------------------------------------------------------'
+    */
+[SETTINGS] = KEYMAP(
+    KC_FN0,KC_NO,KC_NO,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, BL_DEC, BL_INC,   BL_TOGG,             RGB_TOG, RGB_VAI, KC_NO, KC_NO,
+    MU_MOD,  KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,  KC_FN2,             RGB_MOD, RGB_VAD, KC_NO, KC_NO,
+    AU_TOG, KC_F1,KC_FN3, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,           RESET,             KC_NO,   KC_NO,   KC_NO, KC_NO,
+    KC_FN5, KC_FN2,KC_FN4, KC_NO, KC_NO, KC_NO, KC_NO, MU_TOG, KC_NO, KC_NO, KC_NO,          KC_NO,        RGB_HUI,   KC_NO,   KC_NO,   KC_NO, KC_NO,
+    KC_NO, KC_NO, KC_NO,                  KC_FN12,                          KC_NO, KC_NO, KC_NO,  RGB_SAD, RGB_HUD, RGB_SAI,   KC_NO,   KC_NO),
+};
+
+void tap_esc_func_finished(qk_tap_dance_state_t *state, void *user_data) {
+    if(state->pressed){
+        layer_on(FUNC);
+    }else{
+        register_code(KC_ESC);
+        unregister_code(KC_ESC);
+    }
+}
+
+void tap_esc_func_reset(qk_tap_dance_state_t *state, void *user_data) {
+    layer_off(FUNC);
+}
+
+qk_tap_dance_action_t tap_dance_actions[] = {
+  [TD_ESC_FUNC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tap_esc_func_finished, tap_esc_func_reset),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    ACTION_FUNCTION(LFK_CLEAR),                               // FN0 - reset layers
+    ACTION_FUNCTION(LFK_CLICK_FREQ_HIGHER),                   // FN1 - Increase Freq of audio click
+    ACTION_FUNCTION(LFK_CLICK_FREQ_LOWER),                    // FN2 - Decrease Freq of audio click
+    ACTION_FUNCTION(LFK_CLICK_TIME_LONGER),                   // FN3 - Increase length of audio click
+    ACTION_FUNCTION(LFK_CLICK_TIME_SHORTER),                  // FN4 - Decrease length of audio click
+    ACTION_FUNCTION(LFK_CLICK_TOGGLE),                        // FN5 - Toggle audio click
+  };
+
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+    // MACRODOWN only works in this function
+    switch(id) {
+    }
+    return MACRO_NONE;
+};
+
+
+void matrix_init_user(void) {
+    // This keymap only has a single base layer, so reset the default if needed
+    if(eeconfig_read_default_layer() > 1){
+        eeconfig_update_default_layer(1);
+        default_layer_set(1);
+    }
+}
+
+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/lfkeyboards/mini1800/keymaps/ca178858/rules.mk b/keyboards/lfkeyboards/mini1800/keymaps/ca178858/rules.mk
new file mode 100644 (file)
index 0000000..16452df
--- /dev/null
@@ -0,0 +1,53 @@
+# 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 = 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 = yes           # Enable keyboard backlight functionality
+MIDI_ENABLE = no                # MIDI controls
+AUDIO_ENABLE = yes              # Audio output on port C6
+UNICODE_ENABLE = no             # Unicode
+BLUETOOTH_ENABLE = no           # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = yes           # Enable RGB underlight
+RGBLIGHT_CUSTOM_DRIVER = yes    # RGB code is implemented in lefkeyboards, not WS2812
+SLEEP_LED_ENABLE = yes          # Breathing sleep LED during USB suspend
+TAP_DANCE_ENABLE = yes
+
+ISSI_ENABLE = yes                      # If the I2C pullup resistors aren't install this must be disabled
+WATCHDOG_ENABLE = yes          # Resets keyboard if matrix_scan isn't run every 250ms
+
+
+ifndef QUANTUM_DIR
+       include ../../../../Makefile
+endif
+
+ifeq ($(strip $(ISSI_ENABLE)), yes)
+    TMK_COMMON_DEFS += -DISSI_ENABLE
+endif
+
+ifeq ($(strip $(WATCHDOG_ENABLE)), yes)
+    TMK_COMMON_DEFS += -DWATCHDOG_ENABLE
+endif
+
+
+# # Set the LFK78 hardware version. This is defined in rules.mk, but can be overidden here if desired
+# #
+# # RevB - first public release, uses atmega32u4, has audio, ISSI matrix split between RGB and backlight
+# # RevC/D - at90usb1286, no audio, ISSI device 0 is backlight, 4 is RGB
+# #
+# # Set to B, C or D
+# LFK_REV = D
+
+# ifeq ($(LFK_REV), B)
+#      MCU = atmega32u4
+# else
+#      MCU = at90usb1286
+# endif
+# OPT_DEFS += -DLFK_REV_$(LFK_REV)
+# OPT_DEFS += -DUSB_PRODUCT=\"LFK_Rev$(LFK_REV)\"
diff --git a/keyboards/lfkeyboards/mini1800/keymaps/default/config.h b/keyboards/lfkeyboards/mini1800/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/lfkeyboards/mini1800/keymaps/default/keymap.c b/keyboards/lfkeyboards/mini1800/keymaps/default/keymap.c
new file mode 100644 (file)
index 0000000..d5d8694
--- /dev/null
@@ -0,0 +1,130 @@
+#include "mini1800.h"
+#include "issi.h"
+#include "lighting.h"
+#include "action_layer.h"
+
+//Define a shorter 'transparent' key code to make the keymaps more compact
+#define KC_TR KC_TRNS
+
+enum keymap_layout {
+    VANILLA = 0,  // matches MF68 layout
+    FUNC,         // 0x08
+    SETTINGS,     // 0x10
+};
+
+// Colors of the layer indicator LED
+// This list needs to define layer 0xFFFFFFFF, it is the end of the list, and the unknown layer
+const Layer_Info layer_info[] = {
+    // Layer     Mask           Red     Green   Blue
+    {0x00000000, 0xFFFFFFFF, {0x00, 0xFF, 0x00}}, // base layers - green
+    {0x00000002, 0xFFFFFFFE, {0x00, 0x00, 0xFF}}, // function layer - blue
+    {0x00000004, 0xFFFFFFFC, {0xFF, 0x00, 0xFF}}, // settings layer - magenta
+    {0xFFFFFFFF, 0xFFFFFFFF, {0xFF, 0xFF, 0xFF}}, // unknown layer - REQUIRED - white
+};
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[VANILLA] = KEYMAP(
+    /* Keymap VANILLA: (Base Layer) Default Layer
+    * ,-----------------------------------------------------------------------------.
+    * |Esc  |f1| f2| f3| f4|  | f5| f6| f7| f8|   | f9|f10|f11|f12|  |Prnt|ScLk|Paus|
+    * |-----------------------------------------------------------|  |--------------|
+    * | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |  0| - | = |Backsp |  | Ins|Home|PgUp|
+    * |-----------------------------------------------------------|  |--------------|
+    * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|    \|  | Del| End|PgDn|
+    * |-----------------------------------------------------------|  `--------------'
+    * |CAPS   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return |
+    * |-----------------------------------------------------------|        ,----.
+    * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift     |        | Up |
+    * |-----------------------------------------------------------|   ,-------------.
+    * |Ctrl|Gui |Alt |      Space            |ALT |GUI |Func|CTRL |   |Lft| Dn |Rig |
+    * `-----------------------------------------------------------'   `-------------'
+    */
+  KC_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL,  KC_BSPC,          KC_NLCK, KC_PSLS, KC_PAST, KC_PEQL,
+  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_P7,   KC_P8,   KC_P9,   KC_PMNS,
+  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_PPLS,
+  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_RCTL, MO(FUNC), KC_LEFT, KC_DOWN, KC_RGHT,    KC_P0,   KC_PDOT),
+    /* Keymap FUNCTION: Function Layer
+    * ,-------------------------------------------------------------.  ,--------------.
+    * |Esc  |f1| f2| f3| f4|  | f5| f6| f7| f8|   | f9|f10|f11|f12  |  |Prnt|ScLk|Paus|
+    * |-------------------------------------------------------------|  |--------------|
+    * | ` |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Delete   |  |    |    |    |
+    * |-------------------------------------------------------------|  |--------------|
+    * |Tab  |   |PgU|   |   |   |   |   | Up|   |   |   |   |       |  |    |    |    |
+    * |-------------------------------------------------------------|  `--------------'
+    * |Control|Hme|PgD|End|   |   |   |Lft|Dwn|Rgt|   |   |         |
+    * |-------------------------------------------------------------|       ,----.
+    * |Shift   |   |Del|   |   |   |   |Mute|V- |V+ |  |TG(SETTINGS)|       | Up |
+    * |-------------------------------------------------------------'   ,-------------.
+    * |Func|Win |Alt |        PgD           |Alt |Ctrl |Func |          |Lft| Dn |Rig |
+    * `------------------------------------------------------'          `-------------'
+    */
+[FUNC] = KEYMAP(
+  KC_GRV,  KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,   KC_DEL,           KC_TR, KC_TR, KC_TR, KC_TR,
+  KC_NO,KC_HOME, KC_UP, KC_END, KC_PGUP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,     KC_NO,           KC_TR, KC_TR, KC_TR, KC_TR,
+  KC_TR,   KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, KC_NO,KC_NO,           KC_TR, KC_TR, KC_TR, KC_TR,
+  KC_TR,    KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, KC_NO,    TG(SETTINGS),     KC_TR,   KC_TR, KC_TR, KC_TR, KC_TR,
+  KC_TR,  KC_TR, KC_TR,                  KC_PGDN,                           KC_TR, KC_TR, KC_TR,     KC_TR,  KC_TR, KC_TR,   KC_TR, KC_TR),
+
+    /* Keymap SETTINGS: Settings Layer
+    * ,-----------------------------------------------------------.     ,-------------.
+    * |Esc  |f1| f2| f3| f4|  | f5| f6| f7| f8|   | f9|f10|f11|f12  |  |Prnt|ScLk|Paus|
+    * |-------------------------------------------------------------|  |--------------|
+    * |FN0 |   |   |   |   |   |   |   |   |  |   |BL-|BL+|BL Togl|    |RGB Tog |Val+|
+    * |-----------------------------------------------------------|    |-------------|
+    * |MuMode|   |   |   |   |   |   |   |   |   |   |   |  |LEDTst|    |RGB Mode|Val-|
+    * |-----------------------------------------------------------|    `-------------'
+    * |AudTgl |Hz+|MS+|   |   |   |   |   |   |   |   |   |  RST  |
+    * |-----------------------------------------------------------|      ,----.
+    * |ClickTgl|Hz-|MS-|   |   |   |   |   |   |   |   |Layer Clr |      |Hue+|
+    * |--------------------------------------------------------------------------.
+    * |    |    |    |                       |    |    |    |     | |Sat-|Hue-|Sat+|
+    * `----------------------------------------------------------------------------'
+    */
+[SETTINGS] = KEYMAP(
+    KC_FN0,KC_NO,KC_NO,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, BL_DEC, BL_INC,   BL_TOGG,             RGB_TOG, RGB_VAI, KC_NO, KC_NO,
+    MU_MOD,  KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,  KC_FN2,             RGB_MOD, RGB_VAD, KC_NO, KC_NO,
+    AU_TOG, KC_F1,KC_FN3, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,           RESET,             KC_NO,   KC_NO,   KC_NO, KC_NO,
+    KC_FN5, KC_FN2,KC_FN4, KC_NO, KC_NO, KC_NO, KC_NO, MU_TOG, KC_NO, KC_NO, KC_NO,          KC_NO,        RGB_HUI,   KC_NO,   KC_NO,   KC_NO, KC_NO,
+    KC_NO, KC_NO, KC_NO,                  KC_FN12,                          KC_NO, KC_NO, KC_NO,  RGB_SAD, RGB_HUD, RGB_SAI,   KC_NO,   KC_NO),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    ACTION_FUNCTION(LFK_CLEAR),                               // FN0 - reset layers
+    ACTION_FUNCTION(LFK_CLICK_FREQ_HIGHER),                   // FN1 - Increase Freq of audio click
+    ACTION_FUNCTION(LFK_CLICK_FREQ_LOWER),                    // FN2 - Decrease Freq of audio click
+    ACTION_FUNCTION(LFK_CLICK_TIME_LONGER),                   // FN3 - Increase length of audio click
+    ACTION_FUNCTION(LFK_CLICK_TIME_SHORTER),                  // FN4 - Decrease length of audio click
+    ACTION_FUNCTION(LFK_CLICK_TOGGLE),                        // FN5 - Toggle audio click
+  };
+
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+    // MACRODOWN only works in this function
+    switch(id) {
+    }
+    return MACRO_NONE;
+};
+
+
+void matrix_init_user(void) {
+    // This keymap only has a single base layer, so reset the default if needed
+    if(eeconfig_read_default_layer() > 1){
+        eeconfig_update_default_layer(1);
+        default_layer_set(1);
+    }
+}
+
+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/lfkeyboards/mini1800/keymaps/default/rules.mk b/keyboards/lfkeyboards/mini1800/keymaps/default/rules.mk
new file mode 100644 (file)
index 0000000..d6e35e3
--- /dev/null
@@ -0,0 +1,53 @@
+# 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 = 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 = yes           # Enable keyboard backlight functionality
+MIDI_ENABLE = no                # MIDI controls
+AUDIO_ENABLE = yes              # Audio output on port C6
+UNICODE_ENABLE = no             # Unicode
+BLUETOOTH_ENABLE = no           # Enable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = yes           # Enable RGB underlight
+RGBLIGHT_CUSTOM_DRIVER = yes    # RGB code is implemented in lefkeyboards, not WS2812
+SLEEP_LED_ENABLE = yes          # Breathing sleep LED during USB suspend
+TAP_DANCE_ENABLE = no
+
+ISSI_ENABLE = yes                      # If the I2C pullup resistors aren't install this must be disabled
+WATCHDOG_ENABLE = yes          # Resets keyboard if matrix_scan isn't run every 250ms
+
+
+ifndef QUANTUM_DIR
+       include ../../../../Makefile
+endif
+
+ifeq ($(strip $(ISSI_ENABLE)), yes)
+    TMK_COMMON_DEFS += -DISSI_ENABLE
+endif
+
+ifeq ($(strip $(WATCHDOG_ENABLE)), yes)
+    TMK_COMMON_DEFS += -DWATCHDOG_ENABLE
+endif
+
+
+# # Set the LFK78 hardware version. This is defined in rules.mk, but can be overidden here if desired
+# #
+# # RevB - first public release, uses atmega32u4, has audio, ISSI matrix split between RGB and backlight
+# # RevC/D - at90usb1286, no audio, ISSI device 0 is backlight, 4 is RGB
+# #
+# # Set to B, C or D
+# LFK_REV = D
+
+# ifeq ($(LFK_REV), B)
+#      MCU = atmega32u4
+# else
+#      MCU = at90usb1286
+# endif
+# OPT_DEFS += -DLFK_REV_$(LFK_REV)
+# OPT_DEFS += -DUSB_PRODUCT=\"LFK_Rev$(LFK_REV)\"
diff --git a/keyboards/lfkeyboards/mini1800/mini1800.c b/keyboards/lfkeyboards/mini1800/mini1800.c
new file mode 100644 (file)
index 0000000..20c1984
--- /dev/null
@@ -0,0 +1,223 @@
+
+#include <avr/sfr_defs.h>
+#include <avr/timer_avr.h>
+#include <avr/wdt.h>
+#include "mini1800.h"
+#include "keymap.h"
+#include "issi.h"
+#include "TWIlib.h"
+#include "lighting.h"
+#include "debug.h"
+
+#define BACKLIGHT_BREATHING
+#include "quantum.h"
+
+uint16_t click_hz = CLICK_HZ;
+uint16_t click_time = CLICK_MS;
+uint8_t click_toggle = CLICK_ENABLED;
+float my_song[][2] = SONG(ZELDA_PUZZLE);
+
+
+void matrix_init_kb(void)
+{
+    // put your keyboard start-up code here
+    // runs once when the firmware starts up
+    matrix_init_user();
+    set_rgb(31, 0x00, 0x00, 0x00);  // Caps lock
+    set_rgb(32, 0xFF, 0x00, 0x00);  // Layer indicator, start red
+#ifndef AUDIO_ENABLE
+    // If we're not using the audio pin, drive it low
+    sbi(DDRC, 6);
+    cbi(PORTC, 6);
+#endif
+    _delay_ms(500);
+#ifdef ISSI_ENABLE
+    issi_init();
+#endif
+#ifdef WATCHDOG_ENABLE
+    // This is done after turning the layer LED red, if we're caught in a loop
+    // we should get a flashing red light
+    wdt_enable(WDTO_500MS);
+#endif
+}
+
+void matrix_scan_kb(void)
+{
+#ifdef WATCHDOG_ENABLE
+    wdt_reset();
+#endif
+#ifdef ISSI_ENABLE
+    // switch/underglow lighting update
+    static uint32_t issi_device = 0;
+    static uint32_t twi_last_ready = 0;
+    if(twi_last_ready > 1000){
+        // Its been way too long since the last ISSI update, reset the I2C bus and start again
+        twi_last_ready = 0;
+        TWIInit();
+        force_issi_refresh();
+    }
+    if(isTWIReady()){
+        twi_last_ready = 0;
+        // If the i2c bus is available, kick off the issi update, alternate between devices
+        update_issi(issi_device, issi_device);
+        if(issi_device){
+            issi_device = 0;
+        }else{
+            issi_device = 3;
+        }
+    }else{
+        twi_last_ready++;
+    }
+#endif
+    // Update layer indicator LED
+    //
+    // Not sure how else to reliably do this... TMK has the 'hook_layer_change'
+    // but can't find QMK equiv
+    static uint32_t layer_indicator = -1;
+    if(layer_indicator != layer_state){
+        for(uint32_t i=0;; i++){
+            // the layer_info list should end with layer 0xFFFF
+            // it will break this out of the loop and define the unknown layer color
+            if((layer_info[i].layer == (layer_state & layer_info[i].mask)) || (layer_info[i].layer == 0xFFFFFFFF)){
+                set_rgb(32, layer_info[i].color.red, layer_info[i].color.green, layer_info[i].color.blue);
+                layer_indicator = layer_state;
+                break;
+            }
+        }
+    }
+    matrix_scan_user();
+}
+
+void click(uint16_t freq, uint16_t duration){
+#ifdef AUDIO_ENABLE
+    if(freq >= 100 && freq <= 20000 && duration < 100){
+        play_note(freq, 10);
+        for (uint16_t i = 0; i < duration; i++){
+            _delay_ms(1);
+        }
+        stop_all_notes();
+    }
+#endif
+}
+
+bool process_record_kb(uint16_t keycode, keyrecord_t* record)
+{
+    if (click_toggle && record->event.pressed){
+        click(click_hz, click_time);
+    }
+    if (keycode == RESET) {
+        reset_keyboard_kb();
+    } else {
+    }
+    return process_record_user(keycode, record);
+}
+
+void action_function(keyrecord_t *event, uint8_t id, uint8_t opt)
+{
+#ifdef AUDIO_ENABLE
+    int8_t sign = 1;
+#endif
+    if(id == LFK_ESC_TILDE){
+        // Send ~ on shift-esc
+        void (*method)(uint8_t) = (event->event.pressed) ? &add_key : &del_key;
+        uint8_t shifted = get_mods() & (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT));
+        method(shifted ? KC_GRAVE : KC_ESCAPE);
+        send_keyboard_report();
+    }else if(event->event.pressed){
+        switch(id){
+            case LFK_SET_DEFAULT_LAYER:
+                // set/save the current base layer to eeprom, falls through to LFK_CLEAR
+                eeconfig_update_default_layer(1UL << opt);
+                default_layer_set(1UL << opt);
+            case LFK_CLEAR:
+                // Go back to default layer
+                layer_clear();
+                break;
+#ifdef ISSI_ENABLE
+            case LFK_LED_TEST:
+                led_test();
+                break;
+#endif
+#ifdef AUDIO_ENABLE
+            case LFK_CLICK_FREQ_LOWER:
+                sign = -1;  // continue to next statement
+            case LFK_CLICK_FREQ_HIGHER:
+                click_hz += sign * 100;
+                click(click_hz, click_time);
+                break;
+            case LFK_CLICK_TOGGLE:
+                if(click_toggle){
+                    click_toggle = 0;
+                    click(4000, 100);
+                    click(1000, 100);
+                }else{
+                    click_toggle = 1;
+                    click(1000, 100);
+                    click(4000, 100);
+                }
+                break;
+            case LFK_CLICK_TIME_SHORTER:
+                sign = -1;  // continue to next statement
+            case LFK_CLICK_TIME_LONGER:
+                click_time += sign;
+                click(click_hz, click_time);
+                break;
+#endif
+            case LFK_PLAY_ONEUP:
+                PLAY_SONG(my_song);
+                break;
+        }
+    }
+}
+
+void reset_keyboard_kb(){
+#ifdef WATCHDOG_ENABLE
+    MCUSR = 0;
+    wdt_disable();
+    wdt_reset();
+#endif
+    set_rgb(31, 0x00, 0xFF, 0xFF);
+    set_rgb(32, 0x00, 0xFF, 0xFF);
+    force_issi_refresh();
+    reset_keyboard();
+}
+
+void led_set_kb(uint8_t usb_led)
+{
+    // Set capslock LED to Blue
+    if (usb_led & (1 << USB_LED_CAPS_LOCK)) {
+        set_rgb(31, 0x00, 0x00, 0x7F);
+    }else{
+        set_rgb(31, 0x00, 0x00, 0x00);
+    }
+    led_set_user(usb_led);
+}
+
+// Lighting info, see lighting.h for details
+const uint8_t switch_matrices[] = {0, 1};
+const uint8_t rgb_matrices[] = {6, 7};
+
+// RGB Map:
+//   27  29  10   9   8   7   6
+// 26                                   5
+// 25                                   4
+// 24                                   3
+//   23  22  21  20  14  15  11   1   2
+const uint8_t rgb_sequence[] = {
+    30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 1, 2, 3, 4, 5, 6, 7, 8, 13, 14, 15, 16
+};
+
+// Maps switch LEDs from Row/Col to ISSI matrix.
+// Value breakdown:
+//     Bit     | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+//             |   | ISSI Col  |    ISSI Row   |
+//             /   |
+//             Device
+const uint8_t switch_leds[MATRIX_ROWS][MATRIX_COLS] =
+KEYMAP(
+  0x19, 0x18,   0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0x11, 0x99, 0x98, 0x97, 0x96, 0x95, 0x94,   0x93,   0x92, 0x91,
+  0x29, 0x28,    0x27,  0x26, 0x25, 0x24, 0x23, 0x22, 0x21, 0xA9, 0xA8, 0xA7, 0xA6, 0xA5, 0xA4, 0xA3,   0xA2, 0xA1,
+  0x39, 0x38,      0x37,  0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0xB9, 0xB8, 0xB7, 0xB6, 0xB5,     0xB3,
+  0x49, 0x48,    0x47,     0x45, 0x44, 0x43, 0x42, 0x41, 0xC9, 0xC8, 0xC7, 0xC6, 0xC5,          0xC4,   0xC2,
+  0x59, 0x58,   0x57,  0x56,  0x55,             0x51,                   0xD6, 0xE5, 0xE4,         0xE3, 0xE2, 0xE1,
+  0x00, 0x00, 0x00, 0x00);
diff --git a/keyboards/lfkeyboards/mini1800/mini1800.h b/keyboards/lfkeyboards/mini1800/mini1800.h
new file mode 100644 (file)
index 0000000..5f17337
--- /dev/null
@@ -0,0 +1,89 @@
+#ifndef LFK87_H
+#define LFK87_H
+
+/* if the kb.h file exists (because we're running from qmkbuilder) include it */
+#if __has_include("kb.h")
+#include "kb.h"
+#endif
+
+#include "quantum.h"
+#include "matrix.h"
+#include <avr/sfr_defs.h>
+
+#ifndef cbi
+#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
+#endif
+
+#ifndef sbi
+#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
+#endif
+
+
+typedef struct RGB_Color {
+    uint16_t red;
+    uint16_t green;
+    uint16_t blue;
+} RGB_Color;
+
+typedef struct Layer_Info {
+    uint32_t layer;
+    uint32_t mask;
+    RGB_Color color;
+} Layer_Info;
+
+extern const uint32_t layer_count;
+extern const Layer_Info layer_info[];
+
+enum action_functions {
+    LFK_CLEAR = 0,          // Resets all layers
+    LFK_ESC_TILDE,          // esc+lshift = ~
+    LFK_SET_DEFAULT_LAYER,  // changes and saves current base layer to eeprom
+    LFK_CLICK_TOGGLE,       // Adjusts click duration
+    LFK_CLICK_FREQ_HIGHER,  // Adjusts click frequency
+    LFK_CLICK_FREQ_LOWER,   // Adjusts click frequency
+    LFK_CLICK_TIME_LONGER,  // Adjusts click duration
+    LFK_CLICK_TIME_SHORTER, // Adjusts click duration
+    LFK_DEBUG_SETTINGS,     // prints LED and click settings to HID
+    LFK_LED_TEST,           // cycles through switch and RGB LEDs
+    LFK_PLAY_ONEUP
+};
+
+#define CLICK_HZ 500
+#define CLICK_MS 2
+#define CLICK_ENABLED 0
+
+void reset_keyboard_kb(void);
+void click(uint16_t freq, uint16_t duration);
+
+#define k00 KC_NO
+
+        // a = 10
+        // b = 11
+        // c = 12
+        // d = 13
+        // e = 14
+        // f = 15
+        // g = 16
+        // h = 17
+        // i = 18
+        // j = 19
+
+#ifndef KEYMAP
+    #define KEYMAP( \
+        k11,  k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d,        k1f,        k1g, k1h, k1i, k1j,\
+        k21,    k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d,      k2e,        k2g, k2h, k2i, k2j,\
+        k31,     k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c,          k2f,        k3g, k3h, k3i, k3j,\
+        k41,      k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c,          k4d,   k4f,     k4g, k4h, k4i, k4j,\
+        k51,   k52,   k53,                 k56,             k5b, k5c, k5d,     k5f, k5g, k5h,     k5i, k5j \
+    ) \
+    { \
+        {k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b, k1c, k1d, k00, k1f, k1g, k1h, k1i, k1j}, \
+        {k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b, k2c, k2d, k2e, k2f, k2g, k2h, k2i, k2j}, \
+        {k31, k32, k33, k34, k35, k36, k37, k38, k39, k3a, k3b, k3c, k00, k00, k00, k3g, k3h, k3i, k3j}, \
+        {k41, k00, k43, k44, k45, k46, k47, k48, k49, k4a, k4b, k4c, k4d, k00, k4f, k4g, k4h, k4i, k4j}, \
+        {k51, k52, k53, k00, k00, k56, k00, k00, k00, k00, k5b, k5c, k5d, k00, k5f, k5g, k5h, k5i, k5j}, \
+    }
+
+#endif //!KEYMAP#endif
+
+#endif //LFK87_H
diff --git a/keyboards/lfkeyboards/mini1800/rules.mk b/keyboards/lfkeyboards/mini1800/rules.mk
new file mode 100644 (file)
index 0000000..022b219
--- /dev/null
@@ -0,0 +1,62 @@
+# Set the LFK87 hardware version.
+#
+# RevA - Green PCB. at90usb1286 Only 3 exist
+# RevB - We don't talk about RevB
+# RevC - Black PCB. at90usb646 First public release
+#
+# Set to A or C
+LFK_REV = C
+
+ifeq ($(LFK_REV), A)
+       MCU = at90usb1286
+       OPT_DEFS += -DBOOTLOADER_SIZE=8192
+else
+       MCU = at90usb646
+       OPT_DEFS += -DBOOTLOADER_SIZE=4096
+endif
+OPT_DEFS += -DLFK_TKL_REV_$(LFK_REV)
+
+# 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
+
+# ifndef QUANTUM_DIR
+#      include ../../Makefile
+# endif
+
+
+ifeq ($(strip $(ISSI_ENABLE)), yes)
+    # TMK_COMMON_DEFS += -DISSI_ENABLE
+endif
index 97ca543b5ea2259dac8412cb13e7536675c74699..4a6ce371e2a5387e80466229c50a1f49a2656120 100644 (file)
@@ -37,25 +37,29 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    * ,------------------------------------------------------------.----.
    * |Esc~| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |  0| - | = |Backspa| Ins|
    * |------------------------------------------------------------|----|
-   * |AudTgl| Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|     \| Del|
+   * |MuMode | |  |  |E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|     \| Del|
    * |------------------------------------------------------------|----|
-   * |CAPS    |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return |PgUp|
+   * |AudTgl|Hz+|MS+| |  D|  F|  G|  H|  J|  K|  L|  ;|  '|Return |PgUp|
    * |------------------------------------------------------------|----|
-   * |Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift  |Up |PgDn|
+   * |ClickTgl|Hz-|MS-|| C|  V|  B| N|MuTgl|  ,|  .|  /|Shift |Up |PgDn|
    * |-----------------------------------------------------------------|
    * |Ctrl|Win |Alt |       Space         |Alt |Ctrl|Func|Lft| Dn |Rig |
    * `-----------------------------------------------------------------'
    */
     KC_GRV,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13,  KC_F14,
-    AU_TOG, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR,     KC_TR,  KC_TR,
-    KC_TR,  KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR,           KC_TR,  KC_TR,
-    KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR,            KC_TR,  KC_TR,
-    KC_TR, KC_TR, KC_TR,         KC_TR,       KC_TR, KC_TR, KC_TR, KC_TR, KC_TR,  KC_TR),
+    MU_MOD, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR,     KC_TR,  RGB_TOG,
+    AU_TOG,  KC_FN1,KC_FN3, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR,           RESET,  RGB_MOD,
+    KC_FN5,    KC_FN2,KC_FN4, KC_TR, KC_TR, KC_TR, KC_TR, MU_TOG, RGB_VAD, RGB_VAI, KC_TR, KC_TR,        RGB_HUI,  KC_TR,
+    KC_TR, KC_TR, KC_TR,         KC_TR,       KC_TR, KC_TR, KC_TR, RGB_SAD, RGB_HUD,  RGB_SAI),
 };
 
 const uint16_t PROGMEM fn_actions[] = {
     ACTION_FUNCTION(LFK_CLEAR),                               // FN0 - reset layers
-    ACTION_FUNCTION(LFK_ESC_TILDE),                           // FN1 - esc+shift = ~, else escape
+    ACTION_FUNCTION(LFK_CLICK_FREQ_HIGHER),                   // FN1 - Increase Freq of audio click
+    ACTION_FUNCTION(LFK_CLICK_FREQ_LOWER),                    // FN2 - Decrease Freq of audio click
+    ACTION_FUNCTION(LFK_CLICK_TIME_LONGER),                   // FN3 - Increase length of audio click
+    ACTION_FUNCTION(LFK_CLICK_TIME_SHORTER),                  // FN4 - Decrease length of audio click
+    ACTION_FUNCTION(LFK_CLICK_TOGGLE),                        // FN5 - Toggle audio click
   };
 
 
diff --git a/keyboards/lfkeyboards/smk65/keymaps/iso/config.h b/keyboards/lfkeyboards/smk65/keymaps/iso/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/lfkeyboards/smk65/keymaps/iso/keymap.c b/keyboards/lfkeyboards/smk65/keymaps/iso/keymap.c
new file mode 100644 (file)
index 0000000..7ba98e6
--- /dev/null
@@ -0,0 +1,89 @@
+#include "smk65.h"
+#include "action_layer.h"
+
+//Define a shorter 'transparent' key code to make the keymaps more compact
+#define KC_TR KC_TRNS
+
+enum keymap_layout {
+    VANILLA = 0,
+    FUNC,
+    SETTINGS,
+};
+
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[VANILLA] = ISO_KEYMAP(
+  /* Keymap VANILLA: (Base Layer) Default Layer
+   * ,------------------------------------------------------------.----.
+   * |Esc~| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |  0| - | = |Backspa| Ins|
+   * |------------------------------------------------------------|----|
+   * |Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|  Ret | Del|
+   * |--------------------------------------------------------.   |----|
+   * |CAPS   |  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|  # |   |PgUp|
+   * |------------------------------------------------------------|----|
+   * |Shft| \ |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /|Shift | Up |PgDn|
+   * |-----------------------------------------------------------------|
+   * |Ctrl|Win |Alt |       Space         |Alt |Ctrl|Func|Lft| Dn |Rig |
+   * `-----------------------------------------------------------------'
+   */
+    KC_GESC,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL,  KC_BSPC,  KC_INS,
+    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_ENT,   KC_DEL,
+    KC_CAPS,  KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,     KC_NUHS,  KC_PGUP,
+    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_PGDN,
+    KC_LCTL, KC_LGUI, KC_LALT,         KC_SPC,       KC_RALT, KC_RCTL, MO(FUNC), KC_LEFT, KC_DOWN,  KC_RGHT),
+
+[FUNC] = ISO_KEYMAP(
+  /* Keymap VANILLA: Function Layer
+   * ,------------------------------------------------------------.----.
+   * |Esc~| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |  0| - | = |Backspa| Ins|
+   * |------------------------------------------------------------|----|
+   * |MuMode | |  |  |E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]| RESET| Del|
+   * |--------------------------------------------------------.   |----|
+   * |AudTgl|Hz+|MS+| |  D|  F|  G|  H|  J|  K|  L|  ;|  '|   |   |PgUp|
+   * |------------------------------------------------------------|----|
+   * |CTgl|   |Hz-|MS-|| C|  V|  B| N|MuTgl|  ,|  .|  /|Shift |Up |PgDn|
+   * |-----------------------------------------------------------------|
+   * |Ctrl|Win |Alt |       Space         |Alt |Ctrl|Func|Lft| Dn |Rig |
+   * `-----------------------------------------------------------------'
+   */
+    KC_GRV,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,    KC_F13,  KC_F14,
+    MU_MOD, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR,      RESET,  RGB_TOG,
+    AU_TOG,  KC_FN1,KC_FN3, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR, KC_TR,           KC_TR,  RGB_MOD,
+    KC_FN5, KC_TR, KC_FN2,KC_FN4, KC_TR, KC_TR, KC_TR, KC_TR, MU_TOG, RGB_VAD, RGB_VAI, KC_TR, KC_TR, RGB_HUI, KC_TR,
+    KC_TR, KC_TR, KC_TR,               KC_TR,                        KC_TR, KC_TR, KC_TR, RGB_SAD, RGB_HUD,  RGB_SAI),
+};
+
+const uint16_t PROGMEM fn_actions[] = {
+    ACTION_FUNCTION(LFK_CLEAR),                               // FN0 - reset layers
+    ACTION_FUNCTION(LFK_CLICK_FREQ_HIGHER),                   // FN1 - Increase Freq of audio click
+    ACTION_FUNCTION(LFK_CLICK_FREQ_LOWER),                    // FN2 - Decrease Freq of audio click
+    ACTION_FUNCTION(LFK_CLICK_TIME_LONGER),                   // FN3 - Increase length of audio click
+    ACTION_FUNCTION(LFK_CLICK_TIME_SHORTER),                  // FN4 - Decrease length of audio click
+    ACTION_FUNCTION(LFK_CLICK_TOGGLE),                        // FN5 - Toggle audio click
+  };
+
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+  // MACRODOWN only works in this function
+      switch(id) {
+      }
+    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/lfkeyboards/smk65/keymaps/iso/rules.mk b/keyboards/lfkeyboards/smk65/keymaps/iso/rules.mk
new file mode 100644 (file)
index 0000000..f8b4d55
--- /dev/null
@@ -0,0 +1,53 @@
+# 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 = yes               # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
+# BACKLIGHT_ENABLE = no           # Disable keyboard backlight functionality
+MIDI_ENABLE = no                # MIDI controls
+AUDIO_ENABLE = no               # Audio output on port C6
+UNICODE_ENABLE = no             # Unicode
+BLUETOOTH_ENABLE = no           # Disable Bluetooth with the Adafruit EZ-Key HID
+RGBLIGHT_ENABLE = no           # Disable RGB underlight
+RGBLIGHT_CUSTOM_DRIVER = yes    # RGB code is implemented in lefkeyboards, not WS2812
+SLEEP_LED_ENABLE = yes          # Breathing sleep LED during USB suspend
+TAP_DANCE_ENABLE = no
+
+ISSI_ENABLE = no               # If the I2C pullup resistors aren't install this must be disabled
+WATCHDOG_ENABLE = yes           # Resets keyboard if matrix_scan isn't run every 250ms
+
+
+ifndef QUANTUM_DIR
+       include ../../../../Makefile
+endif
+
+ifeq ($(strip $(ISSI_ENABLE)), yes)
+    TMK_COMMON_DEFS += -DISSI_ENABLE
+endif
+
+ifeq ($(strip $(WATCHDOG_ENABLE)), yes)
+    TMK_COMMON_DEFS += -DWATCHDOG_ENABLE
+endif
+
+
+# # Set the LFK78 hardware version. This is defined in rules.mk, but can be overidden here if desired
+# #
+# # RevB - first public release, uses atmega32u4, has audio, ISSI matrix split between RGB and backlight
+# # RevC/D - at90usb1286, no audio, ISSI device 0 is backlight, 4 is RGB
+# #
+# # Set to B, C or D
+# LFK_REV = D
+
+# ifeq ($(LFK_REV), B)
+#      MCU = atmega32u4
+# else
+#      MCU = at90usb1286
+# endif
+# OPT_DEFS += -DLFK_REV_$(LFK_REV)
+# OPT_DEFS += -DUSB_PRODUCT=\"LFK_Rev$(LFK_REV)\"
index cb39a6c115534b070bfca18095471e62f25a398f..401b231cf4e6d8335c4e773c46751be71c8e07c7 100644 (file)
@@ -87,4 +87,18 @@ void click(uint16_t freq, uint16_t duration);
     {k51, k52, k53, KC_NO, KC_NO, KC_NO, k57, KC_NO, KC_NO, KC_NO, k5B, k5C, k5D, k5E, KC_NO, KC_NO}, \
 }
 
+#define ISO_KEYMAP( \
+    k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D,         k1E, k1G, \
+    k21,   k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D,       k2F, k2G, \
+    k31,    k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C,           k3F, k3G, \
+    k41,  k42, k43, k44,  k45, k46, k47, k48, k49, k4A, k4B, k4C,       k4D, k4F, k4G, \
+    k51, k52, k53,              k57,                      k5B, k5C, k5D, k5E, k3E, k4E \
+) { \
+    {k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, k1C, k1D, k1E, KC_NO, k1G}, \
+    {k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, k2C, k2D, KC_NO, k2F, k2G}, \
+    {k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B, k3C, KC_NO, k3E, k3F, k3G}, \
+    {k41, k42, k43, k44, k45, k46, k47, k48, k49, k4A, k4B, k4C, k4D, k4E, k4F, k4G}, \
+    {k51, k52, k53, KC_NO, KC_NO, KC_NO, k57, KC_NO, KC_NO, KC_NO, k5B, k5C, k5D, k5E, KC_NO, KC_NO}, \
+}
+
 #endif //SMK65_H