Last active
March 27, 2018 17:03
-
-
Save permil/651ceee030fbbfcf00bca6f399ec3699 to your computer and use it in GitHub Desktop.
Let's Split keymap for JIS keyboard
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
This is the c configuration file for the keymap | |
Copyright 2012 Jun Wako <wakojun@gmail.com> | |
Copyright 2015 Jack Humbert | |
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_USER_H | |
#define CONFIG_USER_H | |
#include "../../config.h" | |
/* Use I2C or Serial, not both */ | |
#define USE_SERIAL | |
// #define USE_I2C | |
/* Select hand configuration */ | |
#define MASTER_LEFT | |
// #define MASTER_RIGHT | |
// #define EE_HANDS | |
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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 | |
#define JA_CLON KC_QUOT // : and + | |
#define JA_AT KC_LBRC // @ and ` | |
#define JA_HAT KC_EQL // ^ and ~ | |
#define JA_ENUN KC_RO // \ and _ (EN mark and UNder score) | |
#define JA_ENVL KC_JYEN // \ and | (EN mark and Vertical Line) | |
#define JA_LBRC KC_RBRC // [ and { | |
#define JA_RBRC KC_BSLS // ] and } | |
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |
/* Qwerty | |
* ,-----------------------------------------------------------------------------------. | |
* | Esc | Q | W | E | R | T | Y | U | I | O | P | Bksp | | |
* |------+------+------+------+------+-------------+------+------+------+------+------| | |
* | Tab | A | S | D | F | G | H | J | K | L | ; | ' | | |
* |------+------+------+------+------+------|------+------+------+------+------+------| | |
* | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | | |
* |------+------+------+------+------+------+------+------+------+------+------+------| | |
* | Ctrl | GUI | Alt |Adjust|Lower |Space |Space |Raise | Left | Down | Up |Right | | |
* `-----------------------------------------------------------------------------------' | |
*/ | |
[_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_SCLN, KC_QUOT, \ | |
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \ | |
KC_LCTRL,KC_LGUI, KC_LALT, ADJUST, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ | |
), | |
/* 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 |Space |Raise | Left | Down | Up |Right | | |
* `-----------------------------------------------------------------------------------' | |
*/ | |
[_COLEMAK] = KEYMAP( \ | |
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \ | |
KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \ | |
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \ | |
ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ | |
), | |
/* 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 |Space |Raise | Left | Down | Up |Right | | |
* `-----------------------------------------------------------------------------------' | |
*/ | |
[_DVORAK] = KEYMAP( \ | |
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \ | |
KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \ | |
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \ | |
ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ | |
), | |
/* Lower | |
* ,-----------------------------------------------------------------------------------. | |
* | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Del | | |
* |------+------+------+------+------+-------------+------+------+------+------+------| | |
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | = | ` | { | } | | | | |
* |------+------+------+------+------+------|------+------+------+------+------+------| | |
* | | F7 | F8 | F9 | F10 | F11 | F12 | ~ | _ | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------| | |
* | | | | | | | | 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_DEL, \ | |
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, S(JA_AT),S(JA_LBRC),S(JA_RBRC),S(JA_ENVL), \ | |
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, S(JA_HAT),S(JA_ENUN),_______, _______, _______, \ | |
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ | |
), | |
/* Raise | |
* ,-----------------------------------------------------------------------------------. | |
* | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del | | |
* |------+------+------+------+------+-------------+------+------+------+------+------| | |
* | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | @ | [ | ] | \ | | |
* |------+------+------+------+------+------|------+------+------+------+------+------| | |
* | | F7 | F8 | F9 | F10 | F11 | F12 | ^ | \ | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------| | |
* | | | | | | | | 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_DEL, \ | |
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, JA_AT, JA_LBRC, JA_RBRC, JA_ENVL, \ | |
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, JA_HAT, JA_ENUN, _______, _______, _______, \ | |
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ | |
), | |
/* Adjust (Lower + Raise) | |
* ,-----------------------------------------------------------------------------------. | |
* | | Reset| | | | | | | | | | Del | | |
* |------+------+------+------+------+-------------+------+------+------+------+------| | |
* | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | | |
* |------+------+------+------+------+------|------+------+------+------+------+------| | |
* | | | | | | | | | | | | | | |
* |------+------+------+------+------+------+------+------+------+------+------+------| | |
* | | | | | | | | | | | | | |
* `-----------------------------------------------------------------------------------' | |
*/ | |
[_ADJUST] = KEYMAP( \ | |
_______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \ | |
_______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ | |
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ | |
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ | |
) | |
}; | |
#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_SONG(tone_qwerty); | |
#endif | |
persistent_default_layer_set(1UL<<_QWERTY); | |
} | |
return false; | |
break; | |
case COLEMAK: | |
if (record->event.pressed) { | |
#ifdef AUDIO_ENABLE | |
PLAY_SONG(tone_colemak); | |
#endif | |
persistent_default_layer_set(1UL<<_COLEMAK); | |
} | |
return false; | |
break; | |
case DVORAK: | |
if (record->event.pressed) { | |
#ifdef AUDIO_ENABLE | |
PLAY_SONG(tone_dvorak); | |
#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; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ifndef QUANTUM_DIR | |
include ../../../../Makefile | |
endif |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment