diff options
| -rwxr-xr-x | keyboards/amj40/Makefile | 3 | ||||
| -rwxr-xr-x | keyboards/amj40/amj40.c | 30 | ||||
| -rwxr-xr-x | keyboards/amj40/amj40.h | 38 | ||||
| -rwxr-xr-x | keyboards/amj40/config.h | 94 | ||||
| -rwxr-xr-x | keyboards/amj40/keymaps/default/Makefile | 27 | ||||
| -rwxr-xr-x | keyboards/amj40/keymaps/default/build.sh | 42 | ||||
| -rwxr-xr-x | keyboards/amj40/keymaps/default/keymap.c | 173 | ||||
| -rwxr-xr-x | keyboards/amj40/keymaps/default/readme.md | 11 | ||||
| -rwxr-xr-x | keyboards/amj40/keymaps/default/updatemerge.sh | 4 | ||||
| -rwxr-xr-x | keyboards/amj40/keymaps/fabian/Makefile | 27 | ||||
| -rwxr-xr-x | keyboards/amj40/keymaps/fabian/keymap.c | 236 | ||||
| -rwxr-xr-x | keyboards/amj40/readme.md | 35 | ||||
| -rwxr-xr-x | keyboards/amj40/rules.mk | 66 | ||||
| -rw-r--r-- | keyboards/lets_split/keymaps/fabian/Makefile | 9 | ||||
| -rw-r--r-- | keyboards/lets_split/keymaps/fabian/config.h | 34 | ||||
| -rw-r--r-- | keyboards/lets_split/keymaps/fabian/keymap.c | 221 | 
16 files changed, 1050 insertions, 0 deletions
| diff --git a/keyboards/amj40/Makefile b/keyboards/amj40/Makefile new file mode 100755 index 0000000000..4e2a6f00fd --- /dev/null +++ b/keyboards/amj40/Makefile @@ -0,0 +1,3 @@ +ifndef MAKEFILE_INCLUDED +	include ../../Makefile +endif
\ No newline at end of file diff --git a/keyboards/amj40/amj40.c b/keyboards/amj40/amj40.c new file mode 100755 index 0000000000..5a23769991 --- /dev/null +++ b/keyboards/amj40/amj40.c @@ -0,0 +1,30 @@ +#include "amj40.h" +#include "led.h" + +void matrix_init_kb(void) { +	// put your keyboard start-up code here +	// runs once when the firmware starts up +	matrix_init_user(); +	led_init_ports(); +}; + +void matrix_scan_kb(void) { +	// put your looping keyboard code here +	// runs every cycle (a lot) +	matrix_scan_user(); +}; + +void led_init_ports(void) { +    // * Set our LED pins as output +    DDRB |= (1<<2); +} + +void led_set_kb(uint8_t usb_led) { +    if (usb_led & (1<<USB_LED_CAPS_LOCK)) { +        // Turn capslock on +        PORTB &= ~(1<<2); +    } else { +        // Turn capslock off +        PORTB |= (1<<2); +    } +} diff --git a/keyboards/amj40/amj40.h b/keyboards/amj40/amj40.h new file mode 100755 index 0000000000..ab629cba7f --- /dev/null +++ b/keyboards/amj40/amj40.h @@ -0,0 +1,38 @@ +#ifndef AMJ40_H +#define AMJ40_H + +#include "quantum.h" + +// readability   +#define XXX KC_NO + +/* AMJ40 ver2.0 layout1 配列一 + * ,-----------------------------------------------------------. + * | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0A | 0B | + * |-----------------------------------------------------------| + * | 10   | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 1B    | + * |-----------------------------------------------------------| + * | 20     | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 |  2A | 2B | + * |-----------------------------------------------------------| + * | 30  | 31 | 32  |   34      |  35         | 39  | 3A | 3B  | + * `-----------------------------------------------------------' + */ +#define KEYMAP( \ +    k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ +    k10, k11, k12, k13, k14, k15, k16, k17, k18, k19,      k1b,  \ +    k20,      k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b,  \ +    k30, k31, k32,      k34, k35,                k39, k3a, k3b  \ +) { \ +    {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b}, \ +    {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, XXX, k1b}, \ +    {k20, XXX, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b}, \ +    {k30, k31, k32, XXX, k34, k35, XXX, XXX, XXX, k39, k3a, k3b} \ +} + + + + +void matrix_init_user(void); +void matrix_scan_user(void); + +#endif diff --git a/keyboards/amj40/config.h b/keyboards/amj40/config.h new file mode 100755 index 0000000000..4110111223 --- /dev/null +++ b/keyboards/amj40/config.h @@ -0,0 +1,94 @@ +/* +Copyright 2012 Jun Wako <wakojun@gmail.com> + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program.  If not, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef CONFIG_H +#define CONFIG_H + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID       0xFEED +#define PRODUCT_ID      0x6072 +#define DEVICE_VER      0x0002 +#define MANUFACTURER    Han Chen +#define PRODUCT         AMJ40 +#define DESCRIPTION     qmk port of AMJ40 v2 PCB + +/* key matrix size */ +#define MATRIX_ROWS 4 +#define MATRIX_COLS 12 + +// ROWS: Top to bottom, COLS: Left to right + +#define MATRIX_ROW_PINS { F4, F5, F6, F7} +#define MATRIX_COL_PINS { F1, F0, E6, C7, C6, B0, D4, B1, B7, B5, B4, D7} +#define UNUSED_PINS + +#define BACKLIGHT_PIN B6 + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* define if matrix has ghost */ +//#define MATRIX_HAS_GHOST + +/* Set 0 if debouncing isn't needed */ +#define DEBOUNCING_DELAY 5 + +/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ +#define LOCKING_SUPPORT_ENABLE +/* Locking resynchronize hack */ +#define LOCKING_RESYNC_ENABLE + +/* key combination for command */ +#define IS_COMMAND() ( \ +    keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ +) + +/* Backlight configuration + */ +#define BACKLIGHT_LEVELS 4 + +/* Underlight configuration + */ + +#define RGB_DI_PIN D3 +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 4     // Number of LEDs +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 + +/* + * Feature disable options + *  These options are also useful to firmware size reduction. + */ + +/* 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/amj40/keymaps/default/Makefile b/keyboards/amj40/keymaps/default/Makefile new file mode 100755 index 0000000000..034e697bc2 --- /dev/null +++ b/keyboards/amj40/keymaps/default/Makefile @@ -0,0 +1,27 @@ +# 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   = 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     = 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. + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend + +#define ws2812_PORTREG  PORTD +#define ws2812_DDRREG   DDRD + + +ifndef QUANTUM_DIR +	include ../../../../Makefile +endif diff --git a/keyboards/amj40/keymaps/default/build.sh b/keyboards/amj40/keymaps/default/build.sh new file mode 100755 index 0000000000..6b4b4568f5 --- /dev/null +++ b/keyboards/amj40/keymaps/default/build.sh @@ -0,0 +1,42 @@ +#!/bin/bash +# adjust for cpu  +# -j 16 gave best result on a hyperthreaded quad core core i7 + +LIMIT=10 +THREADS="-j 16" +KMAP=iso_split_rshift + +echo "We need sudo later" +sudo ls 2>&1 /dev/null + +function wait_bootloader { +	echo "Waiting for Bootloader..." +	local STARTTIME=$(date +"%s") +	local REMIND=0 +    local EXEC=dfu-programmer +    local TARGET=atmega32u4 +	while true +	do +		sudo $EXEC $TARGET get > /dev/null 2>&1 +		[ $? -eq 0 ] && break +		ENDTIME=$(date +"%s") +		DURATION=$(($ENDTIME-$STARTTIME)) +		if [ $REMIND -eq 0 -a $DURATION -gt $LIMIT ] +		then  +			echo "Did you forget to press the reset button?" +			REMIND=1 +		fi +        sleep 1 +	done +} +make clean +make KEYMAP=${KMAP} ${THREADS} +if [[ $? -eq 0 ]] +then +    echo "please trigger flashing!" +    wait_bootloader +    sudo make KEYMAP=${KMAP} dfu ${THREADS} +else +    echo "make failed" +    exit 77 +fi diff --git a/keyboards/amj40/keymaps/default/keymap.c b/keyboards/amj40/keymaps/default/keymap.c new file mode 100755 index 0000000000..13b48c2ada --- /dev/null +++ b/keyboards/amj40/keymaps/default/keymap.c @@ -0,0 +1,173 @@ + + +// This is the canonical layout file for the Quantum project. If you want to add another keyboard, +// this is the style you want to emulate. + +#include "amj40.h" + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _QWERTY 0 +#define _LOWER 1 +#define _RAISE 2 +#define _ADJUST 3 + + + +enum custom_keycodes { +  QWERTY = SAFE_RANGE, +  LOWER, +  RAISE, +  ADJUST, +}; + + + + + +// increase readability  +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +        /* Default Layer +     * ,-----------------------------------------------------------. +     * | Esc|  Q |  W |  E |  R |  T |  Y |  U |  I |  O |  P | BS | +     * |-----------------------------------------------------------| +     * | Tab |  A |  S |  D |  F |  G |  H |  J |  K |  L | Ent    | +     * |-----------------------------------------------------------| +     * | LSft   |  Z |  X |  C |  V |  B |  N |  M |  ,  |  . | /? | +     * |-----------------------------------------------------------| +     * | LCtl | LGui| LAlt|  spc fn0  |  spc fn1    |fn2|RAlt|RCtl | +     * `-----------------------------------------------------------' +     */ +    [_QWERTY] = KEYMAP( \ +        KC_ESC,  KC_Q,   KC_W,   KC_E,   KC_R,   KC_T,   KC_Y,   KC_U,   KC_I,    KC_O,    KC_P,   KC_BSPC,\ +        KC_TAB,  KC_A,   KC_S,   KC_D,   KC_F,   KC_G,   KC_H,   KC_J,   KC_K,    KC_L,    KC_ENT,\ +        KC_LSFT, KC_Z,   KC_X,   KC_C,   KC_V,   KC_B,   KC_N,   KC_M,   KC_COMM, KC_DOT,  KC_SLSH,\ +        KC_LCTL, KC_LGUI, KC_LALT,          F(0),           F(1),        F(2), KC_RALT, KC_RCTL \ +		), + +    /* Function Layer 1 HHKB style +     * ,-----------------------------------------------------------. +     * |   ~  |   !   |  @  | # | $ | % | ^ | & | * | ( | ) | Bkspc| +     * |-----------------------------------------------------------| +     * |   F1   | F2 | F3 | F4 | F5 |  F6 | _ | + | [ | ] |  Pipe  | +     * |-----------------------------------------------------------| +     * |    F7    | F8 | F9 |  F10  |  F11 |  F12 | End|PgDn| ↓ |     |    | +     * |-----------------------------------------------------------| +     * |     |    |     |           |             | Stop| App|     | +     * `-----------------------------------------------------------' +     */ +    [_LOWER] = KEYMAP( \ +        KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \ +		KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ +		KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,S(KC_NUHS),S(KC_NUBS),BL_TOGG, BL_INC, BL_DEC, \ +		_______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ +		), +	 +	/* Function Layer 1 HHKB style +     * ,-----------------------------------------------------------. +     * |Caps|    |MSel| ⏮ | ⏯ | ⏭ |PSCR|SkLk|Paus|  ↑ | Ins| Del| +     * |-----------------------------------------------------------| +     * |      | 🔇 | ⏏ |    |  * |  / |Hone|PgUp|  ← |  → |       | +     * |-----------------------------------------------------------| +     * |        | 🔉 | 🔊 |    |  + |  - | End|PgDn| ↓ |     |    | +     * |-----------------------------------------------------------| +     * |     |    |     |           |             | Stop| App|     | +     * `-----------------------------------------------------------' +     */ +    [_RAISE] = KEYMAP( \ +        KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC, \ +		KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS, \ +		KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_NUHS, KC_NUBS, _______, _______, KC_DEL, \ +		_______, KC_TRNS, _______, KC_TRNS, KC_TRNS, _______, _______, RGB_TOG \ +		), +	 +	/* Function Layer 1 HHKB style +     * ,-----------------------------------------------------------. +     * |Caps|    |MSel| ⏮ | ⏯ | ⏭ |PSCR|SkLk|Paus|  ↑ | Ins| Del| +     * |-----------------------------------------------------------| +     * |      | 🔇 | ⏏ |    |  * |  / |Hone|PgUp|  ← |  → |       | +     * |-----------------------------------------------------------| +     * |        | 🔉 | 🔊 |    |  + |  - | End|PgDn| ↓ |     |    | +     * |-----------------------------------------------------------| +     * |     |    |     |           |             | Stop| App|     | +     * `-----------------------------------------------------------' +     */ +    [_ADJUST] = KEYMAP( \ +        _______, RESET,   _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \ +		_______, _______, _______, AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, _______, _______, _______,  _______,  \ +		_______, _______, _______, RGB_TOG,  RGB_MOD,  RGB_HUI,  RGB_HUD,  RGB_SAI,  RGB_SAD,  RGB_VAI,  RGB_VAD, \ +		KC_SYSTEM_SLEEP, _______, _______, _______, _______, _______, _______, _______ \ +		), + +     + +}; + + +		 + +enum function_id { +    LAUNCH, +    RGBLED_TOGGLE, +}; + +const uint16_t PROGMEM fn_actions[] = { +	[0]  = ACTION_LAYER_TAP_KEY(_LOWER, KC_SPC), +	[1]  = ACTION_LAYER_TAP_KEY(_RAISE, KC_SPC), +	[2]  = ACTION_LAYER_TAP_KEY(_ADJUST, KC_LGUI), + +}; + + + + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ +    // MACRODOWN only works in this function +    +    return MACRO_NONE; +}; + + + + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { +  +  switch (keycode) { +     +    case LOWER: +      if (record->event.pressed) { +        layer_on(_LOWER); +        update_tri_layer(_LOWER, _RAISE, _ADJUST); +      } else { +        layer_off(_LOWER); +        update_tri_layer(_LOWER, _RAISE, _ADJUST); +      } +      return false; +      break; +    case RAISE: +      if (record->event.pressed) { +        layer_on(_RAISE); +        update_tri_layer(_LOWER, _RAISE, _ADJUST); +      } else { +        layer_off(_RAISE); +        update_tri_layer(_LOWER, _RAISE, _ADJUST); +      } +      return false; +      break; +    case ADJUST: +      if (record->event.pressed) { +        layer_on(_ADJUST); +      } else { +        layer_off(_ADJUST); +      } +      return false; +      break; +  } +  return true; +} diff --git a/keyboards/amj40/keymaps/default/readme.md b/keyboards/amj40/keymaps/default/readme.md new file mode 100755 index 0000000000..2659292ae5 --- /dev/null +++ b/keyboards/amj40/keymaps/default/readme.md @@ -0,0 +1,11 @@ +AMJ40 Default Layout +===================== + +##Quantum MK Firmware +For the full Quantum feature list, see the parent readme.md. + +# Features +* Based on a combination of the original AMJ40 keymap from the TMK firmware as well as the Planck Ortholinear keyboard's "Lower," "Raise," and "Adjust" layers. +* View the keymap.c file to understand they layout of the keymap. +* Has keys to toggle both the switch LEDs and underglow LEDs. + diff --git a/keyboards/amj40/keymaps/default/updatemerge.sh b/keyboards/amj40/keymaps/default/updatemerge.sh new file mode 100755 index 0000000000..da5457e195 --- /dev/null +++ b/keyboards/amj40/keymaps/default/updatemerge.sh @@ -0,0 +1,4 @@ +#!/bin/bash +git checkout amj60      # gets you on branch amj60 +git fetch origin        # gets you up to date with origin +git merge origin/master diff --git a/keyboards/amj40/keymaps/fabian/Makefile b/keyboards/amj40/keymaps/fabian/Makefile new file mode 100755 index 0000000000..a914e4c0ce --- /dev/null +++ b/keyboards/amj40/keymaps/fabian/Makefile @@ -0,0 +1,27 @@ +# Build Options +#   change to "no" to disable the options, or define them in the Makefile in  +#   the appropriate keymap folder that will get included automatically +# +BOOTMAGIC_ENABLE = no  # Virtual DIP switch configuration(+1000) +MOUSEKEY_ENABLE  = yes  # Mouse keys(+4700) +EXTRAKEY_ENABLE  = yes # Audio control and System control(+450) +CONSOLE_ENABLE   = no  # Console for debug(+400) +COMMAND_ENABLE   = yes # Commands for debug and configuration +NKRO_ENABLE      = yes # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = 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  # 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. + +# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE +SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend + +#define ws2812_PORTREG  PORTD +#define ws2812_DDRREG   DDRD + + +ifndef QUANTUM_DIR +	include ../../../../Makefile +endif diff --git a/keyboards/amj40/keymaps/fabian/keymap.c b/keyboards/amj40/keymaps/fabian/keymap.c new file mode 100755 index 0000000000..aef514153e --- /dev/null +++ b/keyboards/amj40/keymaps/fabian/keymap.c @@ -0,0 +1,236 @@ +#include "amj40.h" + +// Set the custom keymap +#undef KEYMAP +#define KEYMAP( \ +    k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, \ +    k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b,  \ +    k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b,  \ +    k30, k31, k32, k33, k34, k35,                k39, k3a, k3b  \ +) { \ +    {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b}, \ +    {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1b}, \ +    {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2b}, \ +    {k30, k31, k32, k33, k34, k35, XXX, XXX, XXX, k39, k3a, k3b} \ +} + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +// Custom +#define CTL_ESC CTL_T(KC_ESC)  // Tap for Escape, hold for Control +#define SFT_ENT SFT_T(KC_ENT)  // Tap for Enter, hold for Shift +#define SFT_BSP SFT_T(KC_BSPC) // Tap for Backspace, hold for Shift +#define HPR_TAB ALL_T(KC_TAB)  // Tap for Tab, hold for Hyper (Super+Ctrl+Alt+Shift) +// #define MEH_GRV MEH_T(KC_GRV)  // Tap for Backtick, hold for Meh (Ctrl+Alt+Shift) + +#define _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _LOWER 3 +#define _RAISE 4 +#define _ADJUST 16 + +enum custom_keycodes { +  QWERTY = SAFE_RANGE, +  COLEMAK, +  DVORAK, +  LOWER, +  RAISE, +  ADJUST, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  "   | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Adjust| Ctrl | Alt  | GUI  | Lower and Space | Raise and Bksp | GUI  |AltGr | Ctrl | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = KEYMAP( \ +  HPR_TAB, KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC, \ +  CTL_ESC, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, \ +  SFT_BSP, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, SFT_ENT , \ +  F(2),    KC_LCTL, KC_LALT, KC_LGUI,          F(0),             F(1),             KC_RGUI, KC_RALT, KC_RCTL \ +), + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | Tab  |   Q  |   W  |   F  |   P  |   G  |   J  |   L  |   U  |   Y  |   ;  | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc  |   A  |   R  |   S  |   T  |   D  |   H  |   N  |   E  |   I  |   O  |  "   | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Adjust| Ctrl | Alt  | GUI  | Lower and Space | Raise and Bksp | GUI  |AltGr | Ctrl | + * `-----------------------------------------------------------------------------------' + */ +[_COLEMAK] = KEYMAP( \ +  HPR_TAB, KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC, \ +  CTL_ESC, KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT, \ +  SFT_BSP, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, SFT_ENT , \ +  F(2),    KC_LCTL, KC_LALT, KC_LGUI,          F(0),             F(1),             KC_RGUI, KC_RALT, KC_RCTL \ +), + +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * | Tab  |   "  |   ,  |   .  |   P  |   Y  |   F  |   G  |   C  |   R  |   L  | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc  |   A  |   O  |   E  |   U  |   I  |   D  |   H  |   T  |   N  |   S  |  /   | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift|   ;  |   Q  |   J  |   K  |   X  |   B  |   M  |   W  |   V  |   Z  |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Adjust| Ctrl | Alt  | GUI  | Lower and Space | Raise and Bksp | GUI  |AltGr | Ctrl | + * `-----------------------------------------------------------------------------------' + */ +[_DVORAK] = KEYMAP( \ +  HPR_TAB, KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC, \ +  CTL_ESC, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH, \ +  SFT_BSP, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    SFT_ENT , \ +  F(2),    KC_LCTL, KC_LALT, KC_LGUI,          F(0),             F(1),             KC_RGUI, KC_RALT, KC_RCTL \ +), + +/* Lower + * ,-----------------------------------------------------------------------------------. + * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   _  |   +  |   {  |   }  |  |   | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 | MS L | MS D |MS U  | MS R |MS Btn| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |      |      |      |      |      |      |      |      | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = KEYMAP( \ +  KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \ +  KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ +  _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_BTN1, \ +  _______, _______, _______, _______,          _______,          _______,          KC_VOLD, KC_VOLU, KC_MPLY \ +), + +/* Raise + * ,-----------------------------------------------------------------------------------. + * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   -  |   =  |   [  |   ]  |  \   | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 | Left | Down |  Up  | Rght |MS_BN2| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |      |      |      |      |      |      |      |      | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = KEYMAP( \ +  KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC, \ +  KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS, \ +  _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, KC_BTN2, \ +  _______, _______, _______, _______,          _______,          _______,          KC_VOLD, KC_VOLU, KC_MPLY \ +), + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * |Reset |Colemk|Qwerty|Dvorak|      |      |      |      |  MU  |      |      |Reset | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * |      |AGNorm|AGSwap|      |      |      |      |  ML  |  MD  |  MR  |      |      | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |      |AudOn |AudOff|      |      |      |      |MBtn1 |MBtn2 |MBtn3 |      |      | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |      |      |      |      |      |      |      |      |      |      |      |      | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = KEYMAP( \ +  RESET,   COLEMAK, QWERTY,  DVORAK,  _______, _______, _______, _______, KC_MS_U, _______, _______, RESET, \ +  _______, AG_NORM, AG_SWAP, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, \ +  _______, AU_ON,   AU_OFF,  _______, _______, _______, _______, KC_BTN1, KC_BTN2, KC_BTN3, _______, _______, \ +  _______, _______, _______, _______,          _______,          _______,          _______, _______, _______ \ +) + +}; + +#ifdef AUDIO_ENABLE +float tone_qwerty[][2]     = SONG(QWERTY_SOUND); +float tone_dvorak[][2]     = SONG(DVORAK_SOUND); +float tone_colemak[][2]    = SONG(COLEMAK_SOUND); +#endif + +void persistent_default_layer_set(uint16_t default_layer) { +  eeconfig_update_default_layer(default_layer); +  default_layer_set(default_layer); +} + +const uint16_t PROGMEM fn_actions[] = { +        [0]  = ACTION_LAYER_TAP_KEY(_LOWER, KC_SPC), +        [1]  = ACTION_LAYER_TAP_KEY(_RAISE, KC_BSPC), +        [2]  = ACTION_LAYER_TAP_KEY(_ADJUST, KC_LGUI), +}; + +const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) +{ +    return MACRO_NONE; +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { +  switch (keycode) { +    case QWERTY: +      if (record->event.pressed) { +        #ifdef AUDIO_ENABLE +          PLAY_NOTE_ARRAY(tone_qwerty, false, 0); +        #endif +        persistent_default_layer_set(1UL<<_QWERTY); +      } +      return false; +      break; +    case COLEMAK: +      if (record->event.pressed) { +        #ifdef AUDIO_ENABLE +          PLAY_NOTE_ARRAY(tone_colemak, false, 0); +        #endif +        persistent_default_layer_set(1UL<<_COLEMAK); +      } +      return false; +      break; +    case DVORAK: +      if (record->event.pressed) { +        #ifdef AUDIO_ENABLE +          PLAY_NOTE_ARRAY(tone_dvorak, false, 0); +        #endif +        persistent_default_layer_set(1UL<<_DVORAK); +      } +      return false; +      break; +    case LOWER: +      if (record->event.pressed) { +        layer_on(_LOWER); +        update_tri_layer(_LOWER, _RAISE, _ADJUST); +      } else { +        layer_off(_LOWER); +        update_tri_layer(_LOWER, _RAISE, _ADJUST); +      } +      return false; +      break; +    case RAISE: +      if (record->event.pressed) { +        layer_on(_RAISE); +        update_tri_layer(_LOWER, _RAISE, _ADJUST); +      } else { +        layer_off(_RAISE); +        update_tri_layer(_LOWER, _RAISE, _ADJUST); +      } +      return false; +      break; +    case ADJUST: +      if (record->event.pressed) { +        layer_on(_ADJUST); +      } else { +        layer_off(_ADJUST); +      } +      return false; +      break; +  } +  return true; +} diff --git a/keyboards/amj40/readme.md b/keyboards/amj40/readme.md new file mode 100755 index 0000000000..e705f20fea --- /dev/null +++ b/keyboards/amj40/readme.md @@ -0,0 +1,35 @@ +AMJ40 keyboard firmware +====================== +DIY/Assembled compact 40% keyboard. + +Ported by N.Hou from the original TMK firmware. + +*Supports both backlight LEDs as well as RGB underglow.  + +*For reference, the AMJ40 uses pin D3 for underglow lighting. + +## Quantum MK Firmware + +For the full Quantum feature list, see [the parent readme.md](/readme.md). + +## Building + +Download or clone the whole firmware and navigate to the keyboards/amj40 +folder. Once your dev env is setup, you'll be able to type `make` to generate +your .hex - you can then use `make dfu` to program your PCB once you hit the +reset button.  + +Depending on which keymap you would like to use, you will have to compile +slightly differently. + +### Default +To build with the default keymap, simply run `sudo make all`. +The .hex file will appear in the root of the qmk firmware folder. + + + + +### Original tmk firmware +The original firmware that was used to port to qmk can be found [here](https://github.com/AMJKeyboard/AMJ40). + + diff --git a/keyboards/amj40/rules.mk b/keyboards/amj40/rules.mk new file mode 100755 index 0000000000..18403ac328 --- /dev/null +++ b/keyboards/amj40/rules.mk @@ -0,0 +1,66 @@ + +# MCU name +#MCU = at90usb1287 +MCU = atmega32u4 + +# Processor frequency. +#     This will define a symbol, F_CPU, in all source code files equal to the +#     processor frequency in Hz. You can then use this symbol in your source code to +#     calculate timings. Do NOT tack on a 'UL' at the end, this will be done +#     automatically to create a 32-bit value in your source code. +# +#     This will be an integer division of F_USB below, as it is sourced by +#     F_USB after it has run through any CPU prescalers. Note that this value +#     does not *change* the processor frequency - it should merely be updated to +#     reflect the processor speed set externally so that the code can use accurate +#     software delays. +F_CPU = 16000000 + + +# +# LUFA specific +# +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + +# Input clock frequency. +#     This will define a symbol, F_USB, in all source code files equal to the +#     input clock frequency (before any prescaling is performed) in Hz. This value may +#     differ from F_CPU if prescaling is used on the latter, and is required as the +#     raw input clock is fed directly to the PLL sections of the AVR for high speed +#     clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +#     at the end, this will be done automatically to create a 32-bit value in your +#     source code. +# +#     If no clock division is performed on the input clock inside the AVR (via the +#     CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +#   Teensy halfKay   512 +#   Teensy++ halfKay 1024 +#   Atmel DFU loader 4096 +#   LUFA bootloader  4096 +#   USBaspLoader     2048 +OPT_DEFS += -DBOOTLOADER_SIZE=4096 + + +# Build Options +#   comment out to disable the options. +# +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 # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +RGBLIGHT_ENABLE  ?= yes # Enable keyboard underlight functionality (+4870) +BACKLIGHT_ENABLE ?= yes # Enable keyboard backlight functionality (+1150) +MIDI_ENABLE      ?= no  # MIDI controls +AUDIO_ENABLE     ?= no +UNICODE_ENABLE   ?= no  # Unicode +BLUETOOTH_ENABLE ?= no  # Enable Bluetooth with the Adafruit EZ-Key HID diff --git a/keyboards/lets_split/keymaps/fabian/Makefile b/keyboards/lets_split/keymaps/fabian/Makefile new file mode 100644 index 0000000000..b8c82cb99d --- /dev/null +++ b/keyboards/lets_split/keymaps/fabian/Makefile @@ -0,0 +1,9 @@ +# 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 +# +# UNICODE_ENABLE = yes + +ifndef QUANTUM_DIR +	include ../../../../Makefile +endif diff --git a/keyboards/lets_split/keymaps/fabian/config.h b/keyboards/lets_split/keymaps/fabian/config.h new file mode 100644 index 0000000000..ba271d1ac6 --- /dev/null +++ b/keyboards/lets_split/keymaps/fabian/config.h @@ -0,0 +1,34 @@ +/* +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/>. +*/ + + +#define USE_SERIAL + +#define MASTER_LEFT +// #define _MASTER_RIGHT +// #define EE_HANDS + + +#ifdef SUBPROJECT_rev1 +    #include "../../rev1/config.h" +#endif +#ifdef SUBPROJECT_rev2 +    #include "../../rev2/config.h" +#endif +#ifdef SUBPROJECT_rev2fliphalf +	#include "../../rev2fliphalf/config.h" +#endif diff --git a/keyboards/lets_split/keymaps/fabian/keymap.c b/keyboards/lets_split/keymaps/fabian/keymap.c new file mode 100644 index 0000000000..0af505b476 --- /dev/null +++ b/keyboards/lets_split/keymaps/fabian/keymap.c @@ -0,0 +1,221 @@ +#include "lets_split.h" +#include "action_layer.h" +#include "eeconfig.h" + +extern keymap_config_t keymap_config; + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _LOWER 3 +#define _RAISE 4 +#define _ADJUST 16 + +enum custom_keycodes { +  QWERTY = SAFE_RANGE, +  COLEMAK, +  DVORAK, +  LOWER, +  RAISE, +  ADJUST, +}; + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +// Custom +#define CTL_ESC CTL_T(KC_ESC)  // Tap for Escape, hold for Control +#define SFT_ENT SFT_T(KC_ENT)  // Tap for Enter, hold for Shift +#define SFT_BSP SFT_T(KC_BSPC) // Tap for Backspace, hold for Shift +#define HPR_TAB ALL_T(KC_TAB)  // Tap for Tab, hold for Hyper (Super+Ctrl+Alt+Shift) +// #define MEH_GRV MEH_T(KC_GRV)  // Tap for Backtick, hold for Meh (Ctrl+Alt+Shift) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab  |   Q  |   W  |   E  |   R  |   T  |   Y  |   U  |   I  |   O  |   P  | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc  |   A  |   S  |   D  |   F  |   G  |   H  |   J  |   K  |   L  |   ;  |  "   | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift|   Z  |   X  |   C  |   V  |   B  |   N  |   M  |   ,  |   .  |   /  |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Adjust| Ctrl | Alt  | GUI  |Lower |Space | Bksp |Raise | GUI  |AltGr | Ctrl |Adjust| + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = KEYMAP( \ +  HPR_TAB, KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,    KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_BSPC, \ +  CTL_ESC, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,    KC_H,    KC_J,    KC_K,    KC_L,    KC_SCLN, KC_QUOT, \ +  SFT_BSP, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, SFT_ENT , \ +  ADJUST,  KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  SFT_BSP, RAISE,   KC_RGUI, KC_RALT, KC_RCTL, ADJUST \ +), + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | Tab  |   Q  |   W  |   F  |   P  |   G  |   J  |   L  |   U  |   Y  |   ;  | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc  |   A  |   R  |   S  |   T  |   D  |   H  |   N  |   E  |   I  |   O  |  "   | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift|   Z  |   X  |   C  |   V  |   B  |   K  |   M  |   ,  |   .  |   /  |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Adjust| Ctrl | Alt  | GUI  |Lower |Space | Bksp |Raise | GUI  |AltGr | Ctrl |Adjust| + * `-----------------------------------------------------------------------------------' + */ +[_COLEMAK] = KEYMAP( \ +  HPR_TAB, KC_Q,    KC_W,    KC_F,    KC_P,    KC_G,    KC_J,    KC_L,    KC_U,    KC_Y,    KC_SCLN, KC_BSPC, \ +  CTL_ESC, KC_A,    KC_R,    KC_S,    KC_T,    KC_D,    KC_H,    KC_N,    KC_E,    KC_I,    KC_O,    KC_QUOT, \ +  SFT_BSP, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,    KC_K,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, SFT_ENT , \ +  ADJUST,  KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  SFT_BSP, RAISE,   KC_RGUI, KC_RALT, KC_RCTL, ADJUST \ +), + +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * | Tab  |   "  |   ,  |   .  |   P  |   Y  |   F  |   G  |   C  |   R  |   L  | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc  |   A  |   O  |   E  |   U  |   I  |   D  |   H  |   T  |   N  |   S  |  /   | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift|   ;  |   Q  |   J  |   K  |   X  |   B  |   M  |   W  |   V  |   Z  |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Adjust| Ctrl | Alt  | GUI  |Lower |Space | Bksp |Raise | GUI  |AltGr | Ctrl |Adjust| + * `-----------------------------------------------------------------------------------' + */ +[_DVORAK] = KEYMAP( \ +  HPR_TAB, KC_QUOT, KC_COMM, KC_DOT,  KC_P,    KC_Y,    KC_F,    KC_G,    KC_C,    KC_R,    KC_L,    KC_BSPC, \ +  CTL_ESC, KC_A,    KC_O,    KC_E,    KC_U,    KC_I,    KC_D,    KC_H,    KC_T,    KC_N,    KC_S,    KC_SLSH, \ +  SFT_BSP, KC_SCLN, KC_Q,    KC_J,    KC_K,    KC_X,    KC_B,    KC_M,    KC_W,    KC_V,    KC_Z,    SFT_ENT , \ +  ADJUST,  KC_LCTL, KC_LALT, KC_LGUI, LOWER,   KC_SPC,  SFT_BSP, RAISE,   KC_RGUI, KC_RALT, KC_RCTL, ADJUST \ +), + +/* Lower + * ,-----------------------------------------------------------------------------------. + * |   ~  |   !  |   @  |   #  |   $  |   %  |   ^  |   &  |   *  |   (  |   )  | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   _  |   +  |   {  |   }  |  |   | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 | MS L | MS D |MS U  | MS R |MS Btn| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |      |      |      |      |      |      |      |      | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = KEYMAP( \ +  KC_TILD, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \ +  KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ +  _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_BTN1, \ +  _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ +), + +/* Raise + * ,-----------------------------------------------------------------------------------. + * |   `  |   1  |   2  |   3  |   4  |   5  |   6  |   7  |   8  |   9  |   0  | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del  |  F1  |  F2  |  F3  |  F4  |  F5  |  F6  |   -  |   =  |   [  |   ]  |  \   | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * |      |  F7  |  F8  |  F9  |  F10 |  F11 |  F12 | Left | Down |  Up  | Rght |MS_BN2| + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |      |      |      |      |      |      |      |      | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = KEYMAP( \ +  KC_GRV,  KC_1,    KC_2,    KC_3,    KC_4,    KC_5,    KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    KC_BSPC, \ +  KC_DEL,  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,   KC_MINS, KC_EQL,  KC_LBRC, KC_RBRC, KC_BSLS, \ +  _______, KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12,  KC_LEFT, KC_DOWN, KC_UP,   KC_RGHT, KC_BTN2, \ +  _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ +), + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * |      |Reset |      |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak|Reset | Del  | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * |      |      |      |      |      |      |      |      |      |      |      |      | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |      |      |      |      |      |      |      |      |      |      |      |      | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |      |      |      |      |      |      |      |      |      |      |      |      | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] =  KEYMAP( \ +  _______, RESET,   _______, AU_ON,   AU_OFF,  AG_NORM, AG_SWAP, QWERTY,  COLEMAK, DVORAK,  RESET,   KC_DEL, \ +  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ +  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ +  _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ +) + + +}; + +#ifdef AUDIO_ENABLE +float tone_qwerty[][2]     = SONG(QWERTY_SOUND); +float tone_dvorak[][2]     = SONG(DVORAK_SOUND); +float tone_colemak[][2]    = SONG(COLEMAK_SOUND); +#endif + +void persistent_default_layer_set(uint16_t default_layer) { +  eeconfig_update_default_layer(default_layer); +  default_layer_set(default_layer); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { +  switch (keycode) { +    case QWERTY: +      if (record->event.pressed) { +        #ifdef AUDIO_ENABLE +          PLAY_NOTE_ARRAY(tone_qwerty, false, 0); +        #endif +        persistent_default_layer_set(1UL<<_QWERTY); +      } +      return false; +      break; +    case COLEMAK: +      if (record->event.pressed) { +        #ifdef AUDIO_ENABLE +          PLAY_NOTE_ARRAY(tone_colemak, false, 0); +        #endif +        persistent_default_layer_set(1UL<<_COLEMAK); +      } +      return false; +      break; +    case DVORAK: +      if (record->event.pressed) { +        #ifdef AUDIO_ENABLE +          PLAY_NOTE_ARRAY(tone_dvorak, false, 0); +        #endif +        persistent_default_layer_set(1UL<<_DVORAK); +      } +      return false; +      break; +    case LOWER: +      if (record->event.pressed) { +        layer_on(_LOWER); +        update_tri_layer(_LOWER, _RAISE, _ADJUST); +      } else { +        layer_off(_LOWER); +        update_tri_layer(_LOWER, _RAISE, _ADJUST); +      } +      return false; +      break; +    case RAISE: +      if (record->event.pressed) { +        layer_on(_RAISE); +        update_tri_layer(_LOWER, _RAISE, _ADJUST); +      } else { +        layer_off(_RAISE); +        update_tri_layer(_LOWER, _RAISE, _ADJUST); +      } +      return false; +      break; +    case ADJUST: +      if (record->event.pressed) { +        layer_on(_ADJUST); +      } else { +        layer_off(_ADJUST); +      } +      return false; +      break; +  } +  return true; +} | 
