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.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

преди 13 години
преди 10 години
преди 13 години
преди 10 години
преди 13 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
преди 11 години
преди 11 години
преди 11 години
преди 11 години
преди 10 години
преди 11 години
преди 11 години
преди 11 години
преди 11 години
преди 10 години
преди 11 години
преди 11 години
преди 13 години
преди 13 години
преди 11 години
преди 11 години
преди 11 години
преди 11 години
преди 13 години
преди 11 години
преди 11 години
преди 11 години
преди 11 години
преди 11 години
преди 11 години
преди 11 години
преди 11 години
преди 11 години
преди 11 години
преди 11 години
преди 11 години
преди 11 години
преди 11 години
преди 11 години
преди 13 години
преди 11 години
преди 11 години
преди 11 години
преди 11 години
преди 11 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
преди 11 години
преди 10 години
преди 11 години
преди 10 години
преди 11 години
преди 11 години
преди 11 години
преди 11 години
преди 11 години
преди 10 години
преди 11 години
преди 11 години
преди 10 години
преди 11 години
преди 11 години
преди 11 години
преди 11 години
преди 11 години
преди 11 години
преди 10 години
преди 11 години
преди 11 години
преди 10 години
преди 11 години
преди 10 години
преди 11 години
преди 11 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
преди 10 години
преди 11 години
преди 11 години
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. }