Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
Dieses Repo ist archiviert. Du kannst Dateien sehen und es klonen, kannst aber nicht pushen oder Issues/Pull-Requests öffnen.

vor 13 Jahren
vor 13 Jahren
vor 13 Jahren
vor 13 Jahren
vor 13 Jahren
vor 11 Jahren
vor 13 Jahren
vor 11 Jahren
vor 11 Jahren
vor 11 Jahren
vor 11 Jahren
vor 11 Jahren
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. /*
  2. * Hasu: my personal keymap
  3. */
  4. #include "keymap_common.h"
  5. #ifdef KEYMAP_SECTION_ENABLE
  6. const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] __attribute__ ((section (".keymap.keymaps"))) = {
  7. #else
  8. const uint8_t keymaps[][MATRIX_ROWS][MATRIX_COLS] PROGMEM = {
  9. #endif
  10. /* Layer 0: Default Layer
  11. * ,-----------------------------------------------------------.
  12. * |Esc| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =| \| `|
  13. * |-----------------------------------------------------------|
  14. * |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]|Backs|
  15. * |-----------------------------------------------------------|
  16. * |Contro| A| S| D| F| G| H| J| K| L|Fn3| '|Fn4 |
  17. * |-----------------------------------------------------------|
  18. * |Fn5 | Z| X| C| V| B| N| M| ,| .|Fn2|Shift |Fn1|
  19. * `-----------------------------------------------------------'
  20. * |Gui|Alt | Fn6 |Alt |Fn7|
  21. * `-------------------------------------------'
  22. */
  23. KEYMAP(ESC, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, MINS,EQL, BSLS,GRV, \
  24. TAB, Q, W, E, R, T, Y, U, I, O, P, LBRC,RBRC,BSPC, \
  25. LCTL,A, S, D, F, G, H, J, K, L, FN3, QUOT,FN4, \
  26. FN11,Z, X, C, V, B, N, M, COMM,DOT, FN2, RSFT,FN1, \
  27. LGUI,LALT, FN6, RALT,RGUI),
  28. /* Layer 1: HHKB mode (HHKB Fn)
  29. * ,-----------------------------------------------------------.
  30. * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
  31. * |-----------------------------------------------------------|
  32. * |Caps | | | | | | | |Psc|Slk|Pus|Up | |Backs|
  33. * |-----------------------------------------------------------|
  34. * |Contro|VoD|VoU|Mut| | | *| /|Hom|PgU|Lef|Rig|Enter |
  35. * |-----------------------------------------------------------|
  36. * |Shift | | | | | | +| -|End|PgD|Dow|Shift | |
  37. * `-----------------------------------------------------------'
  38. * |Gui|Alt | Space |Alt |Gui|
  39. * `-------------------------------------------'
  40. */
  41. KEYMAP(GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \
  42. CAPS,NO, NO, NO, NO, NO, NO, NO, PSCR,SLCK,PAUS, UP, NO, BSPC, \
  43. LCTL,VOLD,VOLU,MUTE,NO, FN9, PAST,PSLS,HOME,PGUP,LEFT,RGHT,ENT, \
  44. LSFT,NO, NO, NO, NO, NO, PPLS,PMNS,END, PGDN,DOWN,RSFT,TRNS, \
  45. LGUI,LALT, SPC, RALT,RGUI),
  46. /* Layer 2: Vi mode (Slash)
  47. * ,-----------------------------------------------------------.
  48. * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
  49. * |-----------------------------------------------------------|
  50. * |Tab |Hom|PgD|Up |PgU|End|Hom|PgD|PgUlEnd| | | |Backs|
  51. * |-----------------------------------------------------------|
  52. * |Contro| |Lef|Dow|Rig| |Lef|Dow|Up |Rig| | |Return |
  53. * |-----------------------------------------------------------|
  54. * |Shift | | | | | |Hom|PgD|PgUlEnd|Fn0|Shift | |
  55. * `-----------------------------------------------------------'
  56. * |Gui|Alt | Space |Alt |Gui|
  57. * `-------------------------------------------'
  58. */
  59. KEYMAP(GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \
  60. TAB, HOME,PGDN,UP, PGUP,END, HOME,PGDN,PGUP,END, NO, NO, NO, BSPC, \
  61. LCTL,NO, LEFT,DOWN,RGHT,NO, LEFT,DOWN,UP, RGHT,NO, NO, ENT, \
  62. LSFT,NO, NO, NO, NO, NO, HOME,PGDN,PGUP,END, TRNS,RSFT,NO, \
  63. LGUI,LALT, SPC, RALT,RGUI),
  64. /* Layer 3: Mouse mode (Semicolon)
  65. * ,-----------------------------------------------------------.
  66. * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
  67. * |-----------------------------------------------------------|
  68. * |Tab | | | | | |MwL|MwD|MwU|MwR| | | |Backs|
  69. * |-----------------------------------------------------------|
  70. * |Contro| | | | | |McL|McD|McU|McR|Fn0| |Return |
  71. * |-----------------------------------------------------------|
  72. * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | |
  73. * `-----------------------------------------------------------'
  74. * |Gui |Alt | Mb1 |Alt |Fn0|
  75. * `--------------------------------------------'
  76. * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
  77. */
  78. KEYMAP(GRV, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \
  79. TAB, NO, NO, NO, NO, NO, WH_L,WH_D,WH_U,WH_R,NO, NO, NO, BSPC, \
  80. LCTL,NO, ACL0,ACL1,ACL2,NO, MS_L,MS_D,MS_U,MS_R,TRNS,QUOT,ENT, \
  81. LSFT,NO, NO, NO, NO, BTN3,BTN2,BTN1,BTN4,BTN5,SLSH,RSFT,NO, \
  82. LGUI,LALT, BTN1, RALT,TRNS),
  83. /* Layer 4: Matias half-qwerty keyboard style (Space)
  84. * ,-----------------------------------------------------------.
  85. * | -| 0| 9| 8| 7| 6| 5| 4| 3| 2| 1| | | |Esc|
  86. * |-----------------------------------------------------------|
  87. * |Backs| P| O| I| U| Y| T| R| E| W| Q| | |Tab |
  88. * |-----------------------------------------------------------|
  89. * |Contro| ;| L| K| J| H| G| F| D| S| A|Con|Control |
  90. * |-----------------------------------------------------------|
  91. * |Shift | /| .| ,| M| N| B| V| C| X| Z|Shift | |
  92. * `-----------------------------------------------------------'
  93. * |Gui |Alt | Fn0 |Alt |Gui|
  94. * `--------------------------------------------'
  95. */
  96. KEYMAP(MINS,0, 9, 8, 7, 6, 5, 4, 3, 2, 1, NO, NO, NO, ESC, \
  97. BSPC,P, O, I, U, Y, T, R, E, W, Q, NO, NO, TAB, \
  98. LCTL,SCLN,L, K, J, H, G, F, D, S, A, RCTL,RCTL, \
  99. LSFT,SLSH,DOT, COMM,M, N, B, V, C, X, Z, RSFT,NO, \
  100. LGUI,LALT, TRNS, RALT,RGUI),
  101. /* Layer5: another Mouse mode (Space)
  102. * ,-----------------------------------------------------------.
  103. * |Esc| F1| F2| F3| F4| F5| F6| F7| F8| F9|F10|F11|F12|Ins|Del|
  104. * |-----------------------------------------------------------|
  105. * |Tab | | | | | |MwL|MwD|MwU|MwR| |Wbk|Wfr|Close|
  106. * |-----------------------------------------------------------|
  107. * |Contro| | | | | |McL|McD|McU|McR|Fn0| |Return |
  108. * |-----------------------------------------------------------|
  109. * |Shift | | | | |Mb3|Mb2|Mb1|Mb4|Mb5| |Shift | |
  110. * `-----------------------------------------------------------'
  111. * |Gui |Alt | Fn0 |Alt |Fn0|
  112. * `--------------------------------------------'
  113. * Mc: Mouse Cursor / Mb: Mouse Button / Mw: Mouse Wheel
  114. */
  115. KEYMAP(ESC, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, INS, DEL, \
  116. TAB, NO, NO, NO, NO, NO, WH_L,WH_D,WH_U,WH_R,WSTP,WBAK,WFWD,FN8, \
  117. LCTL,NO, ACL0,ACL1,ACL2,NO, MS_L,MS_D,MS_U,MS_R,NO, NO, ENT, \
  118. LSFT,NO, NO, NO, NO, BTN3,BTN2,BTN1,BTN4,BTN5,NO, RSFT,NO, \
  119. LGUI,LALT, TRNS, RALT,RGUI),
  120. };
  121. /* id for user defined functions */
  122. enum function_id {
  123. LSHIFT_LPAREN,
  124. };
  125. enum macro_id {
  126. HELLO,
  127. VOLUP,
  128. };
  129. /*
  130. * Fn action definition
  131. */
  132. #ifdef KEYMAP_SECTION_ENABLE
  133. const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = {
  134. #else
  135. const uint16_t fn_actions[] PROGMEM = {
  136. #endif
  137. [0] = ACTION_DEFAULT_LAYER_SET(0), // Default layer(not used)
  138. [1] = ACTION_LAYER_TAP_TOGGLE(1), // HHKB layer(toggle with 5 taps)
  139. [2] = ACTION_LAYER_TAP_KEY(2, KC_SLASH), // Cursor layer with Slash*
  140. [3] = ACTION_LAYER_TAP_KEY(3, KC_SCLN), // Mousekey layer with Semicolon*
  141. [4] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENT), // RControl with tap Enter*
  142. [5] = ACTION_MODS_ONESHOT(MOD_LSFT), // Oneshot Shift*
  143. [6] = ACTION_LAYER_TAP_KEY(5, KC_SPC), // Mousekey layer with Space
  144. [7] = ACTION_LAYER_TOGGLE(3), // Mousekey layer(toggle)
  145. [8] = ACTION_MODS_KEY(MOD_LCTL, KC_W), // Close Tab
  146. [9] = ACTION_MODS_KEY(MOD_LSFT, KC_4), // Shift stuck test
  147. // [8] = ACTION_LMOD_TAP_KEY(KC_LCTL, KC_BSPC), // LControl with tap Backspace
  148. // [9] = ACTION_LMOD_TAP_KEY(KC_LCTL, KC_ESC), // LControl with tap Esc
  149. [11] = ACTION_FUNCTION_TAP(LSHIFT_LPAREN), // Function: LShift with tap '('
  150. // [15] = ACTION_MACRO(HELLO), // Macro: say hello
  151. // [9] = ACTION_MACRO(VOLUP), // Macro: media key
  152. };
  153. /*
  154. * Macro definition
  155. */
  156. const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
  157. {
  158. switch (id) {
  159. case HELLO:
  160. return (record->event.pressed ?
  161. MACRO( I(0), T(H), T(E), T(L), T(L), W(255), T(O), END ) :
  162. MACRO_NONE );
  163. case VOLUP:
  164. return (record->event.pressed ?
  165. MACRO( D(VOLU), U(VOLU), END ) :
  166. MACRO_NONE );
  167. }
  168. return MACRO_NONE;
  169. }
  170. /*
  171. * user defined action function
  172. */
  173. void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
  174. {
  175. if (record->event.pressed) dprint("P"); else dprint("R");
  176. dprintf("%d", record->tap.count);
  177. if (record->tap.interrupted) dprint("i");
  178. dprint("\n");
  179. switch (id) {
  180. case LSHIFT_LPAREN:
  181. // Shift parentheses example: LShft + tap '('
  182. // http://stevelosh.com/blog/2012/10/a-modern-space-cadet/#shift-parentheses
  183. // http://geekhack.org/index.php?topic=41989.msg1304899#msg1304899
  184. if (record->event.pressed) {
  185. if (record->tap.count > 0 && !record->tap.interrupted) {
  186. if (record->tap.interrupted) {
  187. dprint("tap interrupted\n");
  188. register_mods(MOD_BIT(KC_LSHIFT));
  189. }
  190. } else {
  191. register_mods(MOD_BIT(KC_LSHIFT));
  192. }
  193. } else {
  194. if (record->tap.count > 0 && !(record->tap.interrupted)) {
  195. add_weak_mods(MOD_BIT(KC_LSHIFT));
  196. send_keyboard_report();
  197. register_code(KC_9);
  198. unregister_code(KC_9);
  199. del_weak_mods(MOD_BIT(KC_LSHIFT));
  200. send_keyboard_report();
  201. record->tap.count = 0; // ad hoc: cancel tap
  202. } else {
  203. unregister_mods(MOD_BIT(KC_LSHIFT));
  204. }
  205. }
  206. break;
  207. }
  208. }