1 /* Copyright 2017 Balz Guenat
3 * This program is free software: you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License as published by
5 * the Free Software Foundation, either version 2 of the License, or
6 * (at your option) any later version.
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 #include "bananasplit.h"
18 enum custom_keycodes
{
19 WIN_SWITCH_LAYOUT
= SAFE_RANGE
,
22 const uint16_t PROGMEM keymaps
[][MATRIX_ROWS
][MATRIX_COLS
] = {
24 -------------------------------------------------------------------------------------------
25 |GvEsc| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Backspace |
26 -------------------------------------------------------------------------------------------
27 | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ |
28 -------------------------------------------------------------------------------------------
29 | Fn1 | A | S | D | F | G | H | J | K | L | ; | ' | Enter |
30 -------------------------------------------------------------------------------------------
31 | Shift | Z | X | C | V | B | N | M | , | . | / | Shift |M(0) |
32 -------------------------------------------------------------------------------------------
33 | Ctrl | GUI | Alt | Space | Fn1 | Space | Alt | GUI | App | Ctrl |
34 -------------------------------------------------------------------------------------------
37 KC_GESC
, KC_1
, KC_2
, KC_3
, KC_4
, KC_5
, KC_6
, KC_7
, KC_8
, KC_9
, KC_0
, KC_MINS
, KC_EQL
, KC_BSPC
, \
38 KC_TAB
, KC_Q
, KC_W
, KC_E
, KC_R
, KC_T
, KC_Y
, KC_U
, KC_I
, KC_O
, KC_P
, KC_LBRC
, KC_RBRC
, KC_BSLS
, \
39 MO(1), KC_A
, KC_S
, KC_D
, KC_F
, KC_G
, KC_H
, KC_J
, KC_K
, KC_L
, KC_SCLN
, KC_QUOT
, KC_ENT
, \
40 KC_LSFT
, KC_Z
, KC_X
, KC_C
, KC_V
, KC_B
, KC_N
, KC_M
, KC_COMM
, KC_DOT
, KC_SLSH
, KC_RSFT
, WIN_SWITCH_LAYOUT
,\
41 KC_LCTL
, KC_LGUI
, KC_LALT
, KC_SPC
, MO(1), KC_SPC
, KC_RALT
, KC_RGUI
, KC_NO
, KC_APP
, KC_RCTL \
44 -------------------------------------------------------------------------------------------
45 | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | |
46 -------------------------------------------------------------------------------------------
47 | CpsLck |Prev |Vol+ |Next |PgUp | Ins |Home |WrdL |WrdR | End | | | | PrtSc |
48 -------------------------------------------------------------------------------------------
49 | TRNS |Mute |Vol- |Play |PgDn | Del |Left |Down | Up |Right| | | |
50 -------------------------------------------------------------------------------------------
51 | | | | | | |DelWL|DelWR| | | | | |
52 -------------------------------------------------------------------------------------------
53 | | | | | TRNS | | | | | Reset |
54 -------------------------------------------------------------------------------------------
57 _______
, KC_F1
, KC_F2
, KC_F3
, KC_F4
, KC_F5
, KC_F6
, KC_F7
, KC_F8
, KC_F9
, KC_F10
, KC_F11
, KC_F12
, _______
, \
58 KC_CAPS
, KC_MPRV
, KC_VOLU
, KC_MNXT
, KC_PGUP
, KC_INS
, KC_HOME
, LCTL(KC_LEFT
), LCTL(KC_RGHT
), KC_END
, _______
, _______
, _______
, KC_PSCR
, \
59 _______
, KC_MUTE
, KC_VOLD
, KC_MPLY
, KC_PGDN
, KC_DEL
, KC_LEFT
, KC_DOWN
, KC_UP
, KC_RGHT
, _______
, _______
, _______
, \
60 _______
, BL_STEP
, BL_BRTG
, _______
, _______
,_______
, LCTL(KC_BSPC
), LCTL(KC_DEL
), _______
, _______
, _______
, _______
, _______
, \
61 _______
, _______
, _______
, _______
, _______
,_______
, _______
, _______
, _______
, _______
, RESET \
65 const uint16_t PROGMEM fn_actions
[] = {
69 void matrix_init_user(void) {
73 void matrix_scan_user(void) {
77 bool process_record_user(uint16_t keycode
, keyrecord_t
*record
) {
80 case WIN_SWITCH_LAYOUT
: {
81 // Sends Alt+Shift on both key down and key up.
82 // Designed to switch between two keyboard layouts on Windows using a locking switch.
83 // Does nothing if right shift is pressed for easy resync.
84 if (!(get_mods() & MOD_BIT(KC_RSFT
)))
85 SEND_STRING(SS_DOWN(X_LALT
)SS_TAP(X_LSHIFT
)SS_UP(X_LALT
));
94 void led_set_user(uint8_t usb_led
) {