keymap_shane.c 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. // https://github.com/shanecelis/tmk_keyboard/blob/master/keyboard/planck/keymap_shane.c
  2. #include "keymap_common.h"
  3. #include "action_layer.h"
  4. #include "action.h"
  5. #include "action_util.h"
  6. /*
  7. Shane's Planck Layout
  8. http://www.keyboard-layout-editor.com/#/layouts/015d9011102619d7695c86ffe57cf441
  9. */
  10. const uint8_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  11. [0] = KEYMAP_AND_SWAP( /* Base */
  12. TAB, Q, W, E, R, T, Y, U, I, O, P, MINS,
  13. LCTL, A, S, D, F, G, H, J, K, L, SCLN, BSPC,
  14. LSFT, Z, X, C, V, B, N, M, COMM, DOT, SLSH, FN5,
  15. /*ALPHA*/FN3, /*HYPER*/ /*SUPER*/LGUI, /*META*/LALT, LCTL, FN2, FN6, FN1, LEFT, DOWN, UP, RGHT),
  16. [2] = KEYMAP_AND_SWAP( /* More modifiers */
  17. TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
  18. TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
  19. TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
  20. TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, RCTL, RALT, RGUI, TRNS),
  21. [4] = KEYMAP_AND_SWAP( /* WASD */
  22. TRNS, TRNS, UP, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
  23. TRNS, LEFT, DOWN, RIGHT, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
  24. TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS,
  25. TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS),
  26. [6] = KEYMAP_AND_SWAP( /* Raise/FN1 */
  27. FN23, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, EQL,
  28. TRNS, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, ENT,
  29. TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, BSLS, TRNS,
  30. PAUS, TRNS, TRNS, TRNS, TRNS, BSPC, TRNS, MUTE, PGUP, PGDN, MNXT),
  31. [8] = KEYMAP_AND_SWAP( /* Lower/FN2 */
  32. ESC, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN19, FN20, TRNS,
  33. TRNS, TRNS, TRNS, TRNS, CAPS, TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, QUOT,
  34. TRNS, TRNS, TRNS, TRNS, TRNS, TRNS, FN24, FN25, LBRC, RBRC, TRNS, TRNS,
  35. FN4, TRNS, TRNS, TRNS, TRNS, ENT, TRNS, MPLY, VOLD, VOLU, MPRV),
  36. };
  37. enum function_id {
  38. SPACE_FN,
  39. };
  40. void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
  41. {
  42. switch (id) {
  43. case SPACE_FN:
  44. if (record->event.pressed) {
  45. // Change the keyboard maps.
  46. // Whatever even layer's are on, turn on the odd one's too.
  47. for (uint8_t i = 0; i < 9; i += 2) {
  48. if (layer_state & (1UL << i))
  49. layer_on(i + 1);
  50. }
  51. layer_on(1);
  52. } else {
  53. // turn off all the even layers.
  54. for (uint8_t i = 0; i < 9; i += 2)
  55. layer_off(i + 1);
  56. if (record->tap.count != 0) {
  57. // Space was tapped rather than used like a modifier.
  58. // So send a space up and down event.
  59. add_key(KC_SPC);
  60. send_keyboard_report();
  61. del_key(KC_SPC);
  62. send_keyboard_report();
  63. }
  64. }
  65. break;
  66. }
  67. }
  68. const uint16_t PROGMEM fn_actions[] = {
  69. [1] = ACTION_LAYER_MOMENTARY(6), // to fist Fn overlay
  70. [2] = ACTION_LAYER_MOMENTARY(8), // to second Fn overlay
  71. [3] = ACTION_LAYER_TOGGLE(2), // toggle more modifiers
  72. [4] = ACTION_LAYER_TOGGLE(4), // toggle wasd
  73. [5] = ACTION_MODS_TAP_KEY(MOD_RSFT, KC_ENT),
  74. [6] = ACTION_FUNCTION_TAP(SPACE_FN),
  75. [11] = ACTION_MODS_KEY(MOD_LSFT, KC_1),
  76. [12] = ACTION_MODS_KEY(MOD_LSFT, KC_2),
  77. [13] = ACTION_MODS_KEY(MOD_LSFT, KC_3),
  78. [14] = ACTION_MODS_KEY(MOD_LSFT, KC_4),
  79. [15] = ACTION_MODS_KEY(MOD_LSFT, KC_5),
  80. [16] = ACTION_MODS_KEY(MOD_LSFT, KC_6),
  81. [17] = ACTION_MODS_KEY(MOD_LSFT, KC_7),
  82. [18] = ACTION_MODS_KEY(MOD_LSFT, KC_8),
  83. [19] = ACTION_MODS_KEY(MOD_LSFT, KC_9),
  84. [20] = ACTION_MODS_KEY(MOD_LSFT, KC_0),
  85. [21] = ACTION_MODS_KEY(MOD_LSFT, KC_MINS),
  86. [22] = ACTION_MODS_KEY(MOD_LSFT, KC_EQL),
  87. [23] = ACTION_MODS_KEY(MOD_LSFT, KC_GRV),
  88. [24] = ACTION_MODS_KEY(MOD_LSFT, KC_LBRC),
  89. [25] = ACTION_MODS_KEY(MOD_LSFT, KC_RBRC),
  90. [26] = ACTION_MODS_KEY(MOD_LSFT, KC_BSLS),
  91. };