You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
qmk_firmware/keyboard/planck/common_keymaps/keymap_shane.c

98 lines
3.7 KiB

#include "keymap_common.h"
#include "action_layer.h"
#include "action.h"
#include "action_util.h"
/*
Shane's Planck Layout
http://www.keyboard-layout-editor.com/#/layouts/015d9011102619d7695c86ffe57cf441
*/
const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = KEYMAP_AND_SWAP( /* Base */
10 years ago
TAB, Q, W, E, R, T, Y, U, I, O, P, MINS,
LCTL, A, S, D, F, G, H, J, K, L, SCLN, BSPC,
LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, FN5,
/*ALPHA*/FN3, /*HYPER*/ /*SUPER*/LGUI, /*META*/LALT, LCTL, FN2, FN6, FN1, LEFT, DOWN, UP, RGHT),
[2] = KEYMAP_AND_SWAP( /* More modifiers */
10 years ago
TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, RCTL, RALT, RGUI, TRNS),
[4] = KEYMAP_AND_SWAP( /* WASD */
10 years ago
TRNS, TRNS, UP, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
TRNS, LEFT, DOWN, RIGHT, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS),
[6] = KEYMAP_AND_SWAP( /* Raise/FN1 */
10 years ago
FN23, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, EQL,
TRNS, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, ENT,
TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, BSLS, TRNS,
PAUS, TRNS, TRNS, TRNS, TRNS, BSPC, TRNS, MUTE, PGUP, PGDN, MNXT),
[8] = KEYMAP_AND_SWAP( /* Lower/FN2 */
10 years ago
ESC, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN19, FN20, TRNS,
TRNS, TRNS, TRNS, TRNS, CAPS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, QUOT,
TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN24, FN25, LBRC, RBRC, TRNS, TRNS,
FN4, TRNS, TRNS, TRNS, TRNS, ENT, TRNS, MPLY, VOLD, VOLU, MPRV),
};
enum function_id {
SPACE_FN,
};
void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
{
switch (id) {
case SPACE_FN:
if (record->event.pressed) {
// Change the keyboard maps.
// Whatever even layer's are on, turn on the odd one's too.
for (uint8_t i = 0; i < 9; i += 2) {
if (layer_state & (1UL << i))
layer_on(i + 1);
}
layer_on(1);
} else {
// turn off all the even layers.
for (uint8_t i = 0; i < 9; i += 2)
layer_off(i + 1);
if (record->tap.count != 0) {
// Space was tapped rather than used like a modifier.
// So send a space up and down event.
add_key(KC_SPC);
send_keyboard_report();
del_key(KC_SPC);
send_keyboard_report();
}
}
break;
}
}
const uint16_t PROGMEM fn_actions[] = {
[1] = ACTION_LAYER_MOMENTARY(6), // to fist Fn overlay
[2] = ACTION_LAYER_MOMENTARY(8), // to second Fn overlay
[3] = ACTION_LAYER_TOGGLE(2), // toggle more modifiers
[4] = ACTION_LAYER_TOGGLE(4), // toggle wasd
[5] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ENT),
[6] = ACTION_FUNCTION_TAP(SPACE_FN),
[11] = ACTION_MODS_KEY(MOD_LSFT, KC_1),
[12] = ACTION_MODS_KEY(MOD_LSFT, KC_2),
[13] = ACTION_MODS_KEY(MOD_LSFT, KC_3),
[14] = ACTION_MODS_KEY(MOD_LSFT, KC_4),
[15] = ACTION_MODS_KEY(MOD_LSFT, KC_5),
[16] = ACTION_MODS_KEY(MOD_LSFT, KC_6),
[17] = ACTION_MODS_KEY(MOD_LSFT, KC_7),
[18] = ACTION_MODS_KEY(MOD_LSFT, KC_8),
[19] = ACTION_MODS_KEY(MOD_LSFT, KC_9),
[20] = ACTION_MODS_KEY(MOD_LSFT, KC_0),
[21] = ACTION_MODS_KEY(MOD_LSFT, KC_MINS),
[22] = ACTION_MODS_KEY(MOD_LSFT, KC_EQL),
[23] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV),
[24] = ACTION_MODS_KEY(MOD_LSFT, KC_LBRC),
[25] = ACTION_MODS_KEY(MOD_LSFT, KC_RBRC),
[26] = ACTION_MODS_KEY(MOD_LSFT, KC_BSLS),
10 years ago
};