2021-04-11 10:57:55 +01:00
|
|
|
/*
|
|
|
|
|
Copyright 2016 Paul Williamson <squarefrog@gmail.com>
|
|
|
|
|
|
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
|
|
|
it under the terms of the GNU General Public License as published by
|
|
|
|
|
the Free Software Foundation, either version 2 of the License, or
|
|
|
|
|
(at your option) any later version.
|
|
|
|
|
|
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
|
GNU General Public License for more details.
|
|
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
*/
|
|
|
|
|
#include <util/delay.h>
|
|
|
|
|
#include "bootloader.h"
|
|
|
|
|
#include "keymap_common.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Keymap 0: Default Colemak Layer
|
|
|
|
|
*
|
|
|
|
|
* This is a general purpose Colemak layout which should serve as a good
|
|
|
|
|
* basis for your own custom layout. Mac users may want to swap the
|
|
|
|
|
* position of the Alt and GUI keys.
|
|
|
|
|
*
|
2021-04-12 13:10:38 +01:00
|
|
|
* ,--------------------------------------------------. ,-------------------------------------------------.
|
|
|
|
|
* | Esc | 1 | 2 | 3 | 4 | 5 | ~# | | | 6 | 7 | 8 | 9 | 0 | - |
|
2021-04-11 10:57:55 +01:00
|
|
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
2021-04-12 13:10:38 +01:00
|
|
|
* | Tab | Q | W | F | P | G | [ | | ] | J | L | U | Y | ; | + |
|
2021-04-11 10:57:55 +01:00
|
|
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
2021-04-12 13:10:38 +01:00
|
|
|
* | LShift | A | R | S | T | D |------| |------| H | N | E | I | O | ' |
|
2021-04-11 10:57:55 +01:00
|
|
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
2021-04-12 13:10:38 +01:00
|
|
|
* | \ | Z | X | C | V | B | | | | K | M | , | . | / | RShift |
|
2021-04-11 10:57:55 +01:00
|
|
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
2024-07-04 15:17:45 +01:00
|
|
|
* | PScrn| | LAlt | Home | BkSp | | Del | End | RAlt | | RCtrl |
|
2021-04-11 10:57:55 +01:00
|
|
|
* `----------------------------------' `----------------------------------'
|
|
|
|
|
* ,-------------. ,-------------.
|
2021-04-26 13:16:16 +01:00
|
|
|
* | | L1 | | PgUp | PgDn |
|
2021-04-11 10:57:55 +01:00
|
|
|
* ,------|------|------| |------+------+------.
|
|
|
|
|
* | | | | | RAlt | | |
|
|
|
|
|
* |Space | LCtrl|------| |------| LAlt | Enter|
|
2021-04-26 13:16:16 +01:00
|
|
|
* | | | LGui | | ~L2 | | |
|
2021-04-11 10:57:55 +01:00
|
|
|
* `--------------------' `--------------------'
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
KEYMAP(
|
|
|
|
|
// left hand
|
2021-04-12 13:10:38 +01:00
|
|
|
ESC, 1, 2, 3, 4, 5, NUHS,
|
2021-04-11 10:57:55 +01:00
|
|
|
TAB, Q, W, F, P, G, LBRC,
|
2021-04-12 13:10:38 +01:00
|
|
|
LSFT,A, R, S, T, D,
|
|
|
|
|
NUBS,Z, X, C, V, B, NO,
|
2024-07-04 15:17:45 +01:00
|
|
|
PSCREEN, NO, LALT, HOME ,BSPC,
|
2021-04-26 13:16:16 +01:00
|
|
|
NO, FN1,
|
2021-04-11 10:57:55 +01:00
|
|
|
NO,
|
|
|
|
|
SPC,LCTL, LGUI,
|
|
|
|
|
// right hand
|
2021-04-12 13:10:38 +01:00
|
|
|
NO,6, 7, 8, 9, 0, MINS,
|
|
|
|
|
RBRC,J, L, U, Y, SCLN,EQL,
|
2021-04-11 10:57:55 +01:00
|
|
|
H, N, E, I, O, QUOT,
|
|
|
|
|
NO, K, M, COMM,DOT, SLSH,RSFT,
|
2021-04-13 14:44:12 +01:00
|
|
|
DEL, END, RALT,NO, RCTL,
|
2021-04-11 10:57:55 +01:00
|
|
|
PGUP,PGDN,
|
|
|
|
|
RALT,
|
2021-04-26 13:16:16 +01:00
|
|
|
FN2,LALT, ENT
|
2021-04-11 10:57:55 +01:00
|
|
|
),
|
|
|
|
|
|
|
|
|
|
/*
|
2021-04-26 13:16:16 +01:00
|
|
|
* Keymap 1: Default qwerty Layer
|
|
|
|
|
*
|
|
|
|
|
* This is a general purpose Colemak layout which should serve as a good
|
|
|
|
|
* basis for your own custom layout. Mac users may want to swap the
|
|
|
|
|
* position of the Alt and GUI keys.
|
|
|
|
|
*
|
|
|
|
|
* ,--------------------------------------------------. ,-------------------------------------------------.
|
|
|
|
|
* | Esc | 1 | 2 | 3 | 4 | 5 | ~# | | | 6 | 7 | 8 | 9 | 0 | - |
|
|
|
|
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
|
|
|
|
* | Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | + |
|
|
|
|
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
|
|
|
* | LShift | A | S | D | F | G |------| |------| H | J | K | L | ; | ' |
|
|
|
|
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
|
|
|
* | \ | Z | X | C | V | B | | | | N | M | , | . | / | RShift |
|
|
|
|
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
|
|
|
* | | | LAlt | Home | BkSp | | Del | End | RAlt | | RCtrl |
|
|
|
|
|
* `----------------------------------' `----------------------------------'
|
|
|
|
|
* ,-------------. ,-------------.
|
|
|
|
|
* | | L0 | | PgUp | PgDn |
|
|
|
|
|
* ,------|------|------| |------+------+------.
|
|
|
|
|
* | | | | | RAlt | | |
|
|
|
|
|
* |Space | LCtrl|------| |------| LAlt | Enter|
|
|
|
|
|
* | | | LGui | | ~L2 | | |
|
|
|
|
|
* `--------------------' `--------------------'
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
KEYMAP(
|
|
|
|
|
// left hand
|
|
|
|
|
ESC, 1, 2, 3, 4, 5, NUHS,
|
|
|
|
|
TAB, Q, W, E, R, T, LBRC,
|
|
|
|
|
LSFT,A, S, D, F, G,
|
|
|
|
|
NUBS,Z, X, C, V, B, NO,
|
|
|
|
|
NO, NO, LALT, HOME ,BSPC,
|
|
|
|
|
NO, FN0,
|
|
|
|
|
NO,
|
|
|
|
|
SPC,LCTL, LGUI,
|
|
|
|
|
// right hand
|
|
|
|
|
NO, 6, 7, 8, 9, 0, MINS,
|
|
|
|
|
RBRC,Y, U, I, O, P, EQL,
|
|
|
|
|
H, J, K, L, SCLN,QUOT,
|
|
|
|
|
NO, N, M, COMM,DOT, SLSH,RSFT,
|
|
|
|
|
DEL, END, RALT,NO, RCTL,
|
|
|
|
|
PGUP,PGDN,
|
|
|
|
|
RALT,
|
|
|
|
|
FN2,LALT, ENT
|
|
|
|
|
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Layer 2: Function keys
|
2021-04-11 10:57:55 +01:00
|
|
|
*
|
|
|
|
|
* This layer contains function keys, and media keys. *
|
|
|
|
|
* Most of the non-modifier keys are marked as NO, so it's immediately
|
|
|
|
|
* obvious if you start typing on a secondary layer.
|
|
|
|
|
*
|
|
|
|
|
* ,--------------------------------------------------. ,--------------------------------------------------.
|
2021-04-12 13:10:38 +01:00
|
|
|
* | ` | F1 | F2 | F3 | F4 | F5 | F11 | | F12 | F6 | F7 | F8 | F9 | F10 | TRNS |
|
2021-04-11 10:57:55 +01:00
|
|
|
* |--------+------+------+------+------+-------------| |------+------+------+------+------+------+--------|
|
2021-04-11 11:01:40 +01:00
|
|
|
* | TRNS | | UP | | | | TRNS | | TRNS | | | | | | TRNS |
|
2021-04-11 10:57:55 +01:00
|
|
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
2021-04-11 11:01:40 +01:00
|
|
|
* | TRNS | LEFT | DOWN |RIGHT | | |------| |------| | | | | | TRNS |
|
2021-04-11 10:57:55 +01:00
|
|
|
* |--------+------+------+------+------+------| | | |------+------+------+------+------+--------|
|
|
|
|
|
* | TRNS | | | | | | | | | | | | | | TRNS |
|
|
|
|
|
* `--------+------+------+------+------+-------------' `-------------+------+------+------+------+--------'
|
|
|
|
|
* | TRNS | TRNS | Play | RW | FF | | Mute | Vol- | Vol+ | TRNS | TRNS |
|
|
|
|
|
* `----------------------------------' `----------------------------------'
|
|
|
|
|
* ,-------------. ,-------------.
|
|
|
|
|
* | | | | HOME | END |
|
|
|
|
|
* ,------|------|------| |------+------+------.
|
|
|
|
|
* | | | TRNS | | TRNS | | |
|
|
|
|
|
* | TRNS | |------| |------| TRNS | TRNS |
|
|
|
|
|
* | | | TRNS | | TRNS | | |
|
|
|
|
|
* `--------------------' `--------------------'
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
KEYMAP(
|
|
|
|
|
// left hand
|
2021-04-12 13:10:38 +01:00
|
|
|
GRV ,F1, F2, F3, F4, F5, F11,
|
2021-04-11 11:01:40 +01:00
|
|
|
TRNS,NO, UP, NO, NO, NO, TRNS,
|
|
|
|
|
TRNS,LEFT,DOWN,RIGHT,NO, NO,
|
2021-04-11 10:57:55 +01:00
|
|
|
TRNS,NO, NO, NO, NO, NO, NO,
|
|
|
|
|
TRNS,TRNS,MPLY,MPRV,MNXT,
|
|
|
|
|
NO, NO,
|
|
|
|
|
TRNS,
|
|
|
|
|
TRNS,NO, TRNS,
|
|
|
|
|
// right hand
|
|
|
|
|
F12, F6, F7, F8, F9, F10, TRNS,
|
|
|
|
|
TRNS,NO, NO, NO, NO, NO, TRNS,
|
|
|
|
|
NO,NO,NO, NO,NO, TRNS,
|
|
|
|
|
NO, NO, NO, NO, NO, NO, TRNS,
|
|
|
|
|
MUTE,VOLD,VOLU,TRNS,TRNS,
|
|
|
|
|
HOME,END,
|
|
|
|
|
TRNS,
|
|
|
|
|
TRNS,TRNS,TRNS
|
|
|
|
|
)
|
2021-04-26 13:16:16 +01:00
|
|
|
|
2021-04-11 10:57:55 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/* id for user defined functions */
|
|
|
|
|
enum function_id {
|
|
|
|
|
TEENSY_KEY,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
* Fn action definition
|
|
|
|
|
*/
|
|
|
|
|
const action_t PROGMEM fn_actions[] = {
|
|
|
|
|
// Layer shifting
|
|
|
|
|
[0] = ACTION_LAYER_SET(0, ON_PRESS), // Switch to Layer 0
|
2021-04-26 13:16:16 +01:00
|
|
|
[1] = ACTION_LAYER_SET(1, ON_PRESS), // Switch to Layer 1
|
|
|
|
|
[2] = ACTION_LAYER_MOMENTARY(2), // Momentarily switch to layer 2
|
2021-04-11 10:57:55 +01:00
|
|
|
|
|
|
|
|
// Teensy
|
|
|
|
|
[31] = ACTION_FUNCTION(TEENSY_KEY),
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
void action_function(keyrecord_t *event, uint8_t id, uint8_t opt)
|
|
|
|
|
{
|
|
|
|
|
if (id == TEENSY_KEY) {
|
|
|
|
|
clear_keyboard();
|
|
|
|
|
print("\n\nJump to bootloader... ");
|
|
|
|
|
_delay_ms(250);
|
|
|
|
|
bootloader_jump(); // should not return
|
|
|
|
|
print("not supported.\n");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|