Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
Tento repozitář je archivovaný. Můžete prohlížet soubory, klonovat, ale nemůžete nahrávat a vytvářet nové úkoly a požadavky na natažení.

keymap_hasu.c 13KB

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