~ruther/qmk_firmware

287767bba10ac866fae2ffadd45b2315c1e184e6 — Fred Silberberg 6 years ago 38d3b7a
Update 333fred keymaps and add new iris map. (#6010)

* Update 333fred keymaps and add new iris map.

* Fix iris key
M keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/keymap.c => keyboards/handwired/dactyl_manuform/5x6/keymaps/333fred/keymap.c +10 -30
@@ 43,38 43,18 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  ),

  [VIM] = LAYOUT_5x6(
     _______, RESET,    _______,   _______, _______, _______,                       _______, _______, _______, _______, RESET,   _______,
     _______, _______,  _______,   _______, KC_LSFT, _______,                       _______, _______, _______, _______, _______, _______,
     _______, M(DLEFT), M(DRIGHT), KC_LCTL, KC_LGUI, _______,                       KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, _______, _______,
     _______, _______,  _______,   _______, _______, _______,                       _______, _______, _______, _______, _______, _______,
                        _______,   _______,                                                            _______, _______,
                                           _______, _______,                       _______, _______,
                                                    _______, _______,     _______, _______,
                                                    _______, _______,     _______, _______
     _______, RESET,   _______, _______, _______, _______,                       _______, _______, _______, _______, RESET,   _______,
     _______, _______, _______, _______, KC_LSFT, _______,                       _______, _______, _______, _______, _______, _______,
     _______, DLEFT,   DRIGHT,  KC_LCTL, KC_LGUI, _______,                       KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, _______, _______,
     _______, _______, _______, _______, _______, _______,                       _______, _______, _______, _______, _______, _______,
                       _______, _______,                                                           _______, _______,
                                         _______, _______,                       _______, _______,
                                                  _______, _______,     _______, _______,
                                                  _______, _______,     _______, _______
  ),
};

const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
    switch(id) {
        case DLEFT:
            if (record->event.pressed) { // Windows move desktop left
                return MACRO(D(LCTL), D(LGUI), T(LEFT), U(LGUI), U(LCTL), END);
            }
            break;
        case DRIGHT:
            if (record->event.pressed) { // Windows move desktop right
                return MACRO(D(LCTL), D(LGUI), T(RIGHT), U(LGUI), U(LCTL), END);
            }
            break;
        case PSCREEN_APP: if (record->event.pressed) {
                return MACRO(D(LALT), T(PSCR), U(LALT), END);
            }
            break;
    }
    return MACRO_NONE;
}

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    tap_dance_process_record(keycode);
    return true;
    tap_dance_process_keycode(keycode);
    return !try_handle_macro(keycode, record);
}

A keyboards/keebio/iris/keymaps/333fred/config.h => keyboards/keebio/iris/keymaps/333fred/config.h +14 -0
@@ 0,0 1,14 @@
#pragma once

#include "333fred_config.h"

#define USE_SERIAL
#define EE_HANDS
#define NO_ACTION_MACRO

#undef TAPPING_TERM
#define TAPPING_TERM 200

#undef RGBLED_NUM
#define RGBLED_NUM 24
#define RGBLIGHT_SLEEP

A keyboards/keebio/iris/keymaps/333fred/keymap.c => keyboards/keebio/iris/keymaps/333fred/keymap.c +54 -0
@@ 0,0 1,54 @@
#include QMK_KEYBOARD_H
#include "333fred.h"

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

  [BASE] = LAYOUT(
  //┌──────────────┬────────────┬────────┬────────┬────────┬────────┐                          ┌────────┬────────┬────────┬────────┬────────┬──────────────┐
     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_TAB,        KC_Q,        KC_W,    KC_E,    KC_R,    KC_T,                               KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSLS,
  //├──────────────┼────────────┼────────┼────────┼────────┼────────┤                          ├────────┼────────┼────────┼────────┼────────┼──────────────┤
     CTL_T(KC_ESC), KC_A,        KC_S,    KC_D,    KC_F,    KC_G,                               KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT,
  //├──────────────┼────────────┼────────┼────────┼────────┼────────┼───────────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼──────────────┤
     OSM(MOD_LSFT), CTL_T(KC_Z), KC_X,    KC_C,    KC_V,    KC_B,    KC_DEL,           KC_DOWN, KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, OSM(MOD_RSFT),
  //└──────────────┴────────────┴────────┴────────┼────────┼────────┼───────────────┤ ├────────┼────────┼────────┼────────┴────────┴────────┴──────────────┘
                                                   KC_LALT, KC_BSPC, TD(TD_SYM_VIM),   KC_ENT,  KC_SPC,  KC_RGUI
                                               // └────────┴────────┴───────────────┘ └────────┴────────┴────────┘
  ),


  [SYMB] = LAYOUT(
  //┌────────┬────────┬────────┬────────┬────────┬────────┐                          ┌────────┬────────┬────────┬────────┬────────┬────────┐
     _______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,                              KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,
  //├────────┼────────┼────────┼────────┼────────┼────────┤                          ├────────┼────────┼────────┼────────┼────────┼────────┤
     _______, KC_EXLM, KC_AT,   KC_LPRN, KC_RPRN, KC_PLUS,                            _______, KC_7,    KC_8,    KC_9,    _______, KC_F12,
  //├────────┼────────┼────────┼────────┼────────┼────────┤                          ├────────┼────────┼────────┼────────┼────────┼────────┤
     _______, KC_HASH, KC_DLR,  KC_LCBR, KC_RCBR, KC_EQL,                             _______, KC_4,    KC_5,    KC_6,    _______, KC_VOLU,
  //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐        ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
     _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_UP,            KC_UP,   KC_0,    KC_1,    KC_2,    KC_3,    _______, KC_VOLD,
  //└────────┴────────┴────────┴───┬────┴───┬────┴───────┴─────┬───┴────┐   └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
                                    _______, TD(TD_COPY_PASTE), _______,         KC_MPRV, KC_MPLY, KC_MNXT
                                // └────────┴──────────────────┴────────┘       └────────┴────────┴────────┘
  ),


  [VIM] = LAYOUT(
  //┌────────┬────────┬────────┬────────┬────────┬────────┐                          ┌────────┬────────┬────────┬────────┬────────┬────────┐
     _______, _______, _______, _______, _______, _______,                            _______, _______, _______, _______, _______, _______,
  //├────────┼────────┼────────┼────────┼────────┼────────┤                          ├────────┼────────┼────────┼────────┼────────┼────────┤
     _______, _______, _______, _______, KC_LSFT, _______,                            _______, _______, _______, _______, _______, _______,
  //├────────┼────────┼────────┼────────┼────────┼────────┤                          ├────────┼────────┼────────┼────────┼────────┼────────┤
     _______, DLEFT,   DRIGHT,  KC_LCTL, KC_LGUI, _______,                            KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, _______, _______,
  //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐        ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤
     _______, _______, _______, _______, _______, _______, _______,          _______, _______, _______, _______, _______, _______, _______,
  //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘        └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘
                                    _______, _______, _______,                   _______, _______, _______
                                // └────────┴────────┴────────┘                 └────────┴────────┴────────┘
  ),
};

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    tap_dance_process_keycode(keycode);
    return !try_handle_macro(keycode, record);
}

A keyboards/keebio/iris/keymaps/333fred/rules.mk => keyboards/keebio/iris/keymaps/333fred/rules.mk +7 -0
@@ 0,0 1,7 @@
NKRO_ENABLE = yes
KEY_LOCK_ENABLE = yes
TAP_DANCE_ENABLE = yes
CONSOLE_ENABLE = no
PERMISSIVE_HOLD = yes
EXTRAFLAGS += -flto


M keyboards/rgbkb/zen/rev1/keymaps/333fred/keymap.c => keyboards/rgbkb/zen/rev1/keymaps/333fred/keymap.c +11 -38
@@ 3,12 3,6 @@

extern keymap_config_t keymap_config;

enum custom_macros {
    DLEFT,
    DRIGHT,
    PSCREEN_APP
};

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

/* Qwerty


@@ 46,11 40,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 * `------------------------------------------------- -------------------------------------------------'
 */
[SYMB] = LAYOUT( \
    KC_CAPS,        KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,                      KC_F6, KC_F7,  KC_F8,  KC_F9,   KC_F10,  KC_F11, \
    _______,        KC_EXLM, KC_AT,   KC_LPRN, KC_RPRN, KC_PIPE,                    KC_7,  KC_8,   KC_9,   KC_ASTR, KC_RPRN, KC_F12, \
    _______,        KC_HASH, KC_DLR,  KC_LCBR, KC_RCBR, KC_GRV,                     KC_4,  KC_5,   KC_6,   KC_PLUS, KC_RCBR, KC_PIPE, \
    M(PSCREEN_APP), KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD,                    KC_1,  KC_2,   KC_3,   KC_BSLS, KC_VOLD, KC_VOLU, \
    KC_PSCR,        _______, RESET,   _______, _______, TO(GAME), _______, _______, KC_0,  KC_DOT, KC_EQL, KC_MPRV, KC_MNXT, KC_MPLY \
    KC_CAPS,     KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,                      KC_F6, KC_F7,  KC_F8,  KC_F9,   KC_F10,  KC_F11, \
    _______,     KC_EXLM, KC_AT,   KC_LPRN, KC_RPRN, KC_PIPE,                    KC_7,  KC_8,   KC_9,   KC_ASTR, KC_RPRN, KC_F12, \
    _______,     KC_HASH, KC_DLR,  KC_LCBR, KC_RCBR, KC_GRV,                     KC_4,  KC_5,   KC_6,   KC_PLUS, KC_RCBR, KC_PIPE, \
    PSCREEN_APP, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD,                    KC_1,  KC_2,   KC_3,   KC_BSLS, KC_VOLD, KC_VOLU, \
    KC_PSCR,     _______, RESET,   _______, _______, TO(GAME), _______, _______, KC_0,  KC_DOT, KC_EQL, KC_MPRV, KC_MNXT, KC_MPLY \
),

/* Vim Movement


@@ 67,11 61,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 * `------------------------------------------------..------------------------------------------------'
 */
[VIM] =  LAYOUT( \
    _______, _______,  _______,   _______, _______, _______,                   _______, _______, _______, _______, RESET,   _______, \
    _______, RGB_SAI,  RGB_VAI,   RGB_SAD, KC_LSFT, _______,                   _______, _______, _______, _______, _______, _______, \
    _______, M(DLEFT), M(DRIGHT), KC_LCTL, KC_LGUI, _______,                   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, _______, _______, \
    _______, RGB_HUD,  RGB_VAD,   RGB_HUI, _______, _______,                   _______, _______, _______, _______, _______, _______, \
    _______, _______,  _______,   _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______  \
    _______, _______, _______, _______, _______, _______,                   _______, _______, _______, _______, RESET,   _______, \
    _______, RGB_SAI, RGB_VAI, RGB_SAD, KC_LSFT, _______,                   _______, _______, _______, _______, _______, _______, \
    _______, DLEFT,   DRIGHT,  KC_LCTL, KC_LGUI, _______,                   KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, _______, _______, \
    _______, RGB_HUD, RGB_VAD, RGB_HUI, _______, _______,                   _______, _______, _______, _______, _______, _______, \
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______  \
),

/* Gaming mode (Raise)


@@ 123,28 117,7 @@ void persistant_default_layer_set(uint16_t default_layer) {
  default_layer_set(default_layer);
}

const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
    switch(id) {
        case DLEFT:
            if (record->event.pressed) { // Windows move desktop left
                return MACRO(D(LCTL), D(LGUI), T(LEFT), U(LGUI), U(LCTL), END);
            }
            break;
        case DRIGHT:
            if (record->event.pressed) { // Windows move desktop right
                return MACRO(D(LCTL), D(LGUI), T(RIGHT), U(LGUI), U(LCTL), END);
            }
            break;
        case PSCREEN_APP:
            if (record->event.pressed) {
                return MACRO(D(LALT), T(PSCR), U(LALT), END);
            }
            break;
    }
    return MACRO_NONE;
}

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    tap_dance_process_record(keycode);
    tap_dance_process_keycode(keycode);
    return true;
}

M layouts/community/ergodox/333fred/keymap.c => layouts/community/ergodox/333fred/keymap.c +48 -127
@@ 4,28 4,6 @@
#include "version.h"
#include "333fred.h"

enum custom_keycodes {
  PLACEHOLDER = SAFE_RANGE, // can always be here
  EPRM,
  VRSN,
};

enum custom_macros {
  // Windows macros
  DLEFT,
  DRIGHT,
  PSCREEN_APP,
  LSFT_TAB,

  // KeePass macros
  KEEPASS_OPEN,
  KEEPASS_TYPE,

  // Terminal Copy/Paste
  TERM_CP,
  TERM_PT
};

// NOTE: Cells marked with ACCESS must remain transparent, they're the keys that actually get to that layer

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {


@@ 85,26 63,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 */
// If it accepts an argument (i.e, is a function), it doesn't need KC_.
// Otherwise, it needs KC_*
[CODEFLOW] = LAYOUT_ergodox(  // layer 1 : code
[CODEFLOW] = LAYOUT_ergodox_pretty(  // layer 1 : code
        // left hand
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
                                                                             KC_TRNS, KC_TRNS,
                                                                                      KC_TRNS,
                                                                    KC_TRNS, KC_TRNS, KC_TRNS,
        // right han

            KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
            KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
                     KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
            KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
                              KC_F7,   KC_F8,   KC_TRNS, KC_TRNS, KC_TRNS,
             KC_TRNS, KC_TRNS,
             KC_TRNS,
             KC_TRNS, KC_TRNS, KC_TRNS
        _______, _______, _______, _______, _______, _______, _______,  _______, _______, _______, _______, _______, _______, _______,
        _______, _______, _______, _______, _______, _______, _______,  _______, _______, _______, _______, _______, _______, _______,
        _______, _______, _______, _______, _______, _______,                    _______, _______, _______, _______, _______, _______,
        _______, _______, _______, _______, _______, _______, _______,  _______, _______, _______, _______, _______, _______, _______,
        _______, _______, _______, _______, _______,                                      KC_F7,   KC_F8,   _______, _______, _______,
                                                     _______, _______,  _______, _______,
                                                              _______,  _______,
                                            _______, _______, _______,  _______, _______, _______
    ),
/* Keymap 3: Symbol Layer
 *


@@ 129,14 97,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 */
[SYMB] = LAYOUT_ergodox_pretty(
       // left hand
       KC_TRNS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_TRNS,                              KC_TRNS, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
       KC_TRNS, KC_EXLM, KC_AT,   KC_LPRN, KC_RPRN, KC_PIPE, KC_TRNS,                              KC_TRNS, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
       KC_TRNS, KC_HASH, KC_DLR,  KC_LCBR, KC_RCBR, KC_GRV,                                                 KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, KC_TRNS,
       KC_TRNS, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_TRNS,                              KC_TRNS, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, KC_TRNS,
       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                                                                  KC_0,   KC_0,    KC_DOT,  KC_EQL,  KC_TRNS,
                                                             KC_TRNS, KC_TRNS,            KC_TRNS, KC_TRNS,
                                                                      M(PSCREEN_APP),     KC_TRNS,
                                                    KC_TRNS, KC_TRNS, KC_PSCR,            KC_TRNS, KC_TRNS, KC_TRNS
       _______, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   _______,                              _______, KC_F6,   KC_F7,  KC_F8,   KC_F9,   KC_F10,  KC_F11,
       _______, KC_EXLM, KC_AT,   KC_LPRN, KC_RPRN, KC_PIPE, _______,                              _______, KC_UP,   KC_7,   KC_8,    KC_9,    KC_ASTR, KC_F12,
       _______, KC_HASH, KC_DLR,  KC_LCBR, KC_RCBR, KC_GRV,                                                 KC_DOWN, KC_4,   KC_5,    KC_6,    KC_PLUS, _______,
       _______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, _______,                              _______, KC_AMPR, KC_1,   KC_2,    KC_3,    KC_BSLS, _______,
       _______, _______, _______, _______, _______,                                                                  KC_0,   KC_0,    KC_DOT,  KC_EQL,  _______,
                                                             _______, _______,            _______, _______,
                                                                      PSCREEN_APP,     _______,
                                                    _______, _______, KC_PSCR,            _______, _______, _______
),
/* Keymap 3: Media and mouse keys
 *


@@ 160,14 128,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 *                                 `--------------------'       `--------------------'
 */
[MDIA] = LAYOUT_ergodox_pretty(
       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
       KC_TRNS, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_TRNS, KC_TRNS,                       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
       KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS,                                         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                       KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
       KC_TRNS, KC_TRNS, KC_TRNS, KC_BTN1, KC_BTN2,                                                           KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
                                                             BL_INC,  BL_DEC,      KC_VOLU, KC_TRNS,
       _______, _______, _______, _______, _______, _______, _______,                       _______, _______, _______, _______, _______, _______, _______,
       _______, _______, _______, KC_MS_U, _______, _______, _______,                       _______, _______, _______, _______, _______, _______, _______,
       _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______,                                         _______, _______, _______, _______, _______, _______,
       _______, _______, _______, _______, _______, _______, _______,                       _______, _______, _______, _______, _______, _______, _______,
       _______, _______, _______, KC_BTN1, KC_BTN2,                                                           _______, _______, _______, _______, _______,
                                                             BL_INC,  BL_DEC,      KC_VOLU, _______,
                                                                      BL_TOGG,     KC_VOLD,
                                                    KC_TRNS, KC_TRNS, KC_TRNS,     KC_MPRV, KC_MPLY, KC_MNXT
                                                    _______, _______, _______,     KC_MPRV, KC_MPLY, KC_MNXT
),
/* Keymap 4: Movement
 *


@@ 192,14 160,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 */
// MEDIA AND MOUSE
[VIM] = LAYOUT_ergodox_pretty(
       KC_TRNS, KC_TRNS,         KC_TRNS,         KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                       KC_TRNS,  KC_TRNS,    KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS,    KC_TRNS,
       KC_TRNS, M(KEEPASS_OPEN), M(KEEPASS_TYPE), TERM_CP, TERM_PT, KC_TRNS, KC_TRNS,                       KC_TRNS,  LCTL(KC_C), KC_TRNS, KC_TRNS, KC_TRNS,  LCTL(KC_V), KC_TRNS,
       KC_TRNS, M(DLEFT),        M(DRIGHT),       KC_LCTL, KC_LGUI, KC_TRNS,                                          KC_LEFT,    KC_DOWN, KC_UP,   KC_RIGHT, KC_TRNS,    KC_TRNS,
       KC_TRNS, M(LSFT_TAB),     KC_TAB,          KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                       KC_TRNS,  KC_TRNS,    KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS,    KC_TRNS,
       KC_TRNS, KC_TRNS,         KC_TRNS,         KC_TRNS, KC_TRNS,                                                               KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS,    KC_TRNS,
                                                                             KC_TRNS, KC_TRNS,     KC_HOME, KC_END,
                                                                                      KC_TRNS,     KC_TRNS,
                                                                    KC_TRNS, KC_TRNS, KC_TRNS,     KC_TRNS, KC_TRNS, KC_TRNS
       _______, _______, _______, _______, _______, _______, _______,     _______,  _______, _______, _______, _______,  _______, _______,
       _______, _______, _______, _______, _______, _______, _______,     _______,  _______, _______, _______, _______,  _______, _______,
       _______, DLEFT,   DRIGHT,  KC_LCTL, KC_LGUI, _______,                        KC_LEFT, KC_DOWN, KC_UP,   KC_RIGHT, _______, _______,
       _______, _______, KC_TAB,  _______, _______, _______, _______,     _______,  _______, _______, _______, _______,  _______, _______,
       _______, _______, _______, _______, _______,                                          _______, _______, _______,  _______, _______,
                                                    _______, _______,     KC_HOME, KC_END,
                                                             _______,     _______,
                                           _______, _______, _______,     _______, _______, _______
),
/* Keymap 1: Game Layer
 *


@@ 226,14 194,14 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Otherwise, it needs KC_*
[GAME] = LAYOUT_ergodox_pretty(  // layer 1 : code
        // left hand
        KC_ESC,  KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
        KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
        KC_LCTL, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                                              KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
        KC_LSFT, KC_Z,    KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
        KC_ENT,  KC_TRNS, KC_TRNS, KC_LOCK, KC_BSPC,                                                                KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
        KC_ESC,  _______, _______, _______, _______, _______, _______,                            _______, _______, _______, _______, _______, _______, _______,
        _______, _______, _______, _______, _______, _______, _______,                            _______, _______, _______, _______, _______, _______, _______,
        KC_LCTL, _______, _______, _______, _______, _______,                                              _______, _______, _______, _______, _______, _______,
        KC_LSFT, KC_Z,    _______, _______, _______, _______, _______,                            _______, _______, _______, _______, _______, _______, _______,
        KC_ENT,  _______, _______, KC_LOCK, KC_BSPC,                                                                _______, _______, _______, _______, _______,
                                                              KC_F5,   KC_F6,         LCTL(KC_C), LCTL(KC_V),
                                                                       KC_TRNS,       KC_UP,
                                                     KC_LALT, KC_SPC,  OSM(SYMB),     KC_DOWN,    KC_TRNS, KC_TRNS
                                                                       _______,       KC_UP,
                                                     KC_LALT, KC_SPC,  OSM(SYMB),     KC_DOWN,    _______, _______
    ),
/* Keymap 1: Game Arrow Layer
 *


@@ 260,71 228,24 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Otherwise, it needs KC_*
[GAME_ARROW] = LAYOUT_ergodox_pretty(  // layer 1 : code
        // left hand
        KC_ESC,  KC_TRNS, KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
        KC_TRNS, KC_TRNS, KC_UP,   KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
        KC_LCTL, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS,                                              KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
        KC_LSFT, KC_Z,    KC_TRNS, KC_TRNS,  KC_TRNS, KC_TRNS, KC_TRNS,                            KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
        KC_ENT,  KC_TRNS, KC_TRNS, KC_LOCK,  KC_BSPC,                                                                KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
        KC_ESC,  _______, _______, _______,  _______, _______, _______,                            _______, _______, _______, _______, _______, _______, _______,
        _______, _______, KC_UP,   _______,  _______, _______, _______,                            _______, _______, _______, _______, _______, _______, _______,
        KC_LCTL, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______,                                              _______, _______, _______, _______, _______, _______,
        KC_LSFT, KC_Z,    _______, _______,  _______, _______, _______,                            _______, _______, _______, _______, _______, _______, _______,
        KC_ENT,  _______, _______, KC_LOCK,  KC_BSPC,                                                                _______, _______, _______, _______, _______,
                                                               KC_F5,   KC_F6,         LCTL(KC_C), LCTL(KC_V),
                                                                        KC_TRNS,       KC_UP,
                                                      KC_LALT, KC_SPC,  OSM(SYMB),     KC_DOWN,    KC_TRNS, KC_TRNS
                                                                        _______,       KC_UP,
                                                      KC_LALT, KC_SPC,  OSM(SYMB),     KC_DOWN,    _______, _______
    )
};

const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
{
  // MACRODOWN only works in this function
      switch(id) {
        case DLEFT:
          if (record->event.pressed) { // Windows move desktop left
            return MACRO(D(LCTL), D(LGUI), T(LEFT), U(LGUI), U(LCTL), END);
          }
          break;
        case DRIGHT:
          if (record->event.pressed) { // Windows move desktop right
            return MACRO(D(LCTL), D(LGUI), T(RIGHT), U(LGUI), U(LCTL), END);
          }
          break;
        case PSCREEN_APP:
          if (record->event.pressed) {
            return MACRO(D(LALT), T(PSCR), U(LALT), END);
          }
          break;
        case LSFT_TAB:
          if (record->event.pressed) {
            return MACRO(D(LSFT), T(TAB), U(LSFT), END);
          }
        case KEEPASS_OPEN:
          if (record->event.pressed) { // Keepass open application
            return MACRO(D(LCTL), D(LALT), T(K), U(LALT), U(LCTL), END);
          }
          break;
        case KEEPASS_TYPE:
          if (record->event.pressed) { // Keepass autotype
            return MACRO(D(LCTL), D(LALT), T(A), U(LALT), U(LCTL), END);
          }
          break;
        case TERM_CP:
          if (record->event.pressed) { // Terminal Copy
            return MACRO(D(LCTL), T(INSERT), U(LCTL), END);
          }
          break;
        case TERM_PT:
          if (record->event.pressed) { // Terminal Paste
            return MACRO(D(LSFT), T(INSERT), U(LSFT), END);
          }
          break;
      }
    return MACRO_NONE;
};

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  tap_dance_process_record(keycode);
  tap_dance_process_keycode(keycode);
  return true;
}

// Runs constantly in the background, in a loop.
void matrix_scan_user_keyboard(void) {
void matrix_scan_user(void) {
    ergodox_board_led_on();
    ergodox_led_all_on();
}

M layouts/community/ortho_5x12/333fred/keymap.c => layouts/community/ortho_5x12/333fred/keymap.c +14 -37
@@ 3,11 3,9 @@

extern keymap_config_t keymap_config;

enum custom_macros {
    DLEFT,
    DRIGHT,
    PSCREEN_APP
};
#if (!defined(LAYOUT) && defined(KEYMAP))
#   define LAYOUT KEYMAP
#endif

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {



@@ 46,11 44,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 * `-----------------------------------------------------------------------------------'
 */
[SYMB] = LAYOUT_ortho_5x12( \
    KC_CAPS,        KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,    KC_F6, KC_F7,  KC_F8,  KC_F9,   KC_F10,  KC_F11, \
    _______,        KC_EXLM, KC_AT,   KC_LPRN, KC_RPRN, KC_PIPE,  KC_7,  KC_8,   KC_9,   KC_ASTR, KC_RPRN, KC_F12, \
    _______,        KC_HASH, KC_DLR,  KC_LCBR, KC_RCBR, KC_GRV,   KC_4,  KC_5,   KC_6,   KC_PLUS, KC_RCBR, KC_PIPE, \
    M(PSCREEN_APP), KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD,  KC_1,  KC_2,   KC_3,   KC_BSLS, KC_VOLD, KC_VOLU, \
    KC_PSCR,        _______, _______, _______, _______, TG(GAME), KC_0,  KC_DOT, KC_EQL, KC_MPRV, KC_MNXT, KC_MPLY \
    KC_CAPS,     KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,    KC_F6, KC_F7,  KC_F8,  KC_F9,   KC_F10,  KC_F11, \
    _______,     KC_EXLM, KC_AT,   KC_LPRN, KC_RPRN, KC_PIPE,  KC_7,  KC_8,   KC_9,   KC_ASTR, KC_RPRN, KC_F12, \
    _______,     KC_HASH, KC_DLR,  KC_LCBR, KC_RCBR, KC_GRV,   KC_4,  KC_5,   KC_6,   KC_PLUS, KC_RCBR, KC_PIPE, \
    PSCREEN_APP, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD,  KC_1,  KC_2,   KC_3,   KC_BSLS, KC_VOLD, KC_VOLU, \
    KC_PSCR,     _______, _______, _______, _______, TG(GAME), KC_0,  KC_DOT, KC_EQL, KC_MPRV, KC_MNXT, KC_MPLY \
),

/* Vim Movement (Hold down F)


@@ 67,11 65,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 * `-----------------------------------------------------------------------------------'
 */
[VIM] = LAYOUT_ortho_5x12( \
    _______, _______,  _______,   _______, _______, _______, _______, _______, _______, _______, _______, _______, \
    _______, _______,  _______,   KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, \
    _______, M(DLEFT), M(DRIGHT), KC_LCTL, KC_LGUI, _______, KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, _______, _______, \
    _______, _______,  _______,   _______, _______, _______, _______, _______, _______, _______, _______, _______, \
    _______, _______,  _______,   _______, _______, _______, _______, _______, _______, _______, _______, _______ \
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
    _______, _______, _______, KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, \
    _______, DLEFT,   DRIGHT,  KC_LCTL, KC_LGUI, _______, KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, _______, _______, \
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
    _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \
),

/* Gaming mode (Raise)


@@ 102,28 100,7 @@ void persistent_default_layer_set(uint16_t default_layer) {
    default_layer_set(default_layer);
}

const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
    switch(id) {
        case DLEFT:
            if (record->event.pressed) { // Windows move desktop left
                return MACRO(D(LCTL), D(LGUI), T(LEFT), U(LGUI), U(LCTL), END);
            }
            break;
        case DRIGHT:
            if (record->event.pressed) { // Windows move desktop right
                return MACRO(D(LCTL), D(LGUI), T(RIGHT), U(LGUI), U(LCTL), END);
            }
            break;
        case PSCREEN_APP:
            if (record->event.pressed) {
                return MACRO(D(LALT), T(PSCR), U(LALT), END);
            }
            break;
    }
    return MACRO_NONE;
}

bool process_record_user(uint16_t keycode, keyrecord_t *record) {
    tap_dance_process_record(keycode);
    tap_dance_process_keycode(keycode);
    return true;
}

M users/333fred/333fred.c => users/333fred/333fred.c +22 -16
@@ 86,31 86,37 @@ qk_tap_dance_action_t tap_dance_actions[] = {
    [TD_COPY_PASTE] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tap_dance_copy_paste_finished, NULL)
};

void tap_dance_process_record(uint16_t keycode) {
void tap_dance_process_keycode(uint16_t keycode) {
    if (tap_dance_state == SINGLE_TAP && keycode != TD(TD_SYM_VIM)) {
        tap_dance_active = false;
    }
}

__attribute__ ((weak))
void matrix_init_rgb(void) {}

__attribute__ ((weak))
void layer_state_set_rgb(uint32_t state) {}

__attribute__ ((weak))
void matrix_scan_user_keyboard(void) {}

void matrix_scan_user() {
  static bool first_run = true;
  if (first_run) {
    first_run = false;
    matrix_init_rgb();
  }
  matrix_scan_user_keyboard();
}

uint32_t layer_state_set_user(uint32_t state) {
  layer_state_set_rgb(state);
  return state;
}

bool try_handle_macro(uint16_t keycode, keyrecord_t *record) {
    switch (keycode)
    {
        case DLEFT:
            if (record->event.pressed)
                SEND_STRING(SS_LGUI(SS_LALT(SS_TAP(X_LEFT))));
            return true;
        case DRIGHT:
            if (record->event.pressed)
                SEND_STRING(SS_LGUI(SS_LALT(SS_TAP(X_RIGHT))));
            return true;
        case PSCREEN_APP:
            if (record->event.pressed)
                SEND_STRING(SS_LALT(SS_TAP(X_PSCREEN)));
            return true;

        default:
            return false;
    }
}

M users/333fred/333fred.h => users/333fred/333fred.h +8 -1
@@ 17,6 17,13 @@ enum tap_dance_declarations {
    TD_COPY_PASTE,
};

enum custom_keys {
    DLEFT = SAFE_RANGE,
    DRIGHT,
    PSCREEN_APP
};

void tap_dance_sym_vim_finished(qk_tap_dance_state_t*, void*);
void tap_dance_sym_vim_reset(qk_tap_dance_state_t*, void*);
void tap_dance_process_record(uint16_t);
void tap_dance_process_keycode(uint16_t);
bool try_handle_macro(uint16_t keycode, keyrecord_t *record);

M users/333fred/333fred_config.h => users/333fred/333fred_config.h +1 -0
@@ 1,3 1,4 @@
#pragma once

#define PERMISSIVE_HOLD
#define NO_ACTION_MACRO

M users/333fred/rgb.c => users/333fred/rgb.c +6 -6
@@ 1,16 1,11 @@
#include "quantum.h"
#include "333fred.h"

void matrix_init_rgb(void) {
  rgblight_enable_noeeprom();
  rgblight_sethsv_noeeprom(270, 255, 20);
}

void layer_state_set_rgb(uint32_t state) {
  switch (biton32(state)) {
    case BASE:
      // purple
      rgblight_sethsv_noeeprom(270, 255, 20);
      rgblight_sethsv_noeeprom(255, 255, 20);
      break;
    case SYMB:
      // blue


@@ 26,3 21,8 @@ void layer_state_set_rgb(uint32_t state) {
      break;
  }
}

void keyboard_post_init_user(void) {
  rgblight_enable_noeeprom();
  layer_state_set_rgb(1); // Set layer 0 (bit 1) on
}