Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
Это архивный репозиторий. Вы можете его клонировать или просматривать файлы, но не вносить изменения или открывать задачи/запросы на слияние.

13 лет назад
10 лет назад
13 лет назад
10 лет назад
13 лет назад
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 лет назад
10 лет назад
10 лет назад
10 лет назад
11 лет назад
10 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
10 лет назад
10 лет назад
11 лет назад
10 лет назад
11 лет назад
11 лет назад
10 лет назад
11 лет назад
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  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. FN5, 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. RSHIFT_RPAREN,
  125. };
  126. enum macro_id {
  127. LSHIFT_PAREN,
  128. RSHIFT_PAREN,
  129. HELLO,
  130. VOLUP,
  131. };
  132. /*
  133. * Fn action definition
  134. */
  135. #ifdef KEYMAP_SECTION_ENABLE
  136. const uint16_t fn_actions[] __attribute__ ((section (".keymap.fn_actions"))) = {
  137. #else
  138. const uint16_t fn_actions[] PROGMEM = {
  139. #endif
  140. [0] = ACTION_DEFAULT_LAYER_SET(0), // Default layer(not used)
  141. [1] = ACTION_LAYER_TAP_TOGGLE(1), // HHKB layer(toggle with 5 taps)
  142. [2] = ACTION_LAYER_TAP_KEY(2, KC_SLASH), // Cursor layer with Slash*
  143. [3] = ACTION_LAYER_TAP_KEY(3, KC_SCLN), // Mousekey layer with Semicolon*
  144. [4] = ACTION_MODS_TAP_KEY(MOD_RCTL, KC_ENT), // RControl with tap Enter*
  145. [5] = ACTION_MODS_ONESHOT(MOD_LSFT), // Oneshot Shift*
  146. [6] = ACTION_LAYER_TAP_KEY(5, KC_SPC), // Mousekey layer with Space
  147. [7] = ACTION_LAYER_TOGGLE(3), // Mousekey layer(toggle)
  148. [8] = ACTION_MODS_KEY(MOD_LCTL, KC_W), // Close Tab
  149. [9] = ACTION_MODS_KEY(MOD_LSFT, KC_4), // Shift stuck test
  150. // [8] = ACTION_LMOD_TAP_KEY(KC_LCTL, KC_BSPC), // LControl with tap Backspace
  151. // [9] = ACTION_LMOD_TAP_KEY(KC_LCTL, KC_ESC), // LControl with tap Esc
  152. [11] = ACTION_FUNCTION_TAP(LSHIFT_LPAREN), // Function: LShift with tap '('
  153. [12] = ACTION_FUNCTION_TAP(RSHIFT_RPAREN), // Function: RShift with tap ')'
  154. // [13] = ACTION_MACRO_TAP(LSHIFT_PAREN), // Macro: LShift with tap '('
  155. // [14] = ACTION_MACRO_TAP(RSHIFT_PAREN), // Macro: RShift with tap ')'
  156. // [15] = ACTION_MACRO(HELLO), // Macro: say hello
  157. // [9] = ACTION_MACRO(VOLUP), // Macro: media key
  158. };
  159. /*
  160. * Macro definition
  161. */
  162. const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
  163. {
  164. keyevent_t event = record->event;
  165. tap_t tap = record->tap;
  166. switch (id) {
  167. case LSHIFT_PAREN:
  168. if (tap.count > 0 && !tap.interrupted) {
  169. return (event.pressed ?
  170. MACRO( D(LSHIFT), D(9), U(9), U(LSHIFT), END ) : MACRO_NONE);
  171. } else {
  172. return (event.pressed ?
  173. MACRO( D(LSHIFT), END ) : MACRO( U(LSHIFT), END ) );
  174. }
  175. case RSHIFT_PAREN:
  176. if (tap.count > 0 && !tap.interrupted) {
  177. return (event.pressed ?
  178. MACRO( D(RSHIFT), D(0), U(0), U(RSHIFT), END ) : MACRO_NONE);
  179. } else {
  180. return (event.pressed ?
  181. MACRO( D(RSHIFT), END ) : MACRO( U(RSHIFT), END ) );
  182. }
  183. case HELLO:
  184. return (event.pressed ?
  185. MACRO( I(0), T(H), T(E), T(L), T(L), W(255), T(O), END ) :
  186. MACRO_NONE );
  187. case VOLUP:
  188. return (event.pressed ?
  189. MACRO( D(VOLU), U(VOLU), END ) :
  190. MACRO_NONE );
  191. }
  192. return MACRO_NONE;
  193. }
  194. /*
  195. * user defined action function
  196. */
  197. void action_function(keyrecord_t *record, uint8_t id, uint8_t opt)
  198. {
  199. keyevent_t event = record->event;
  200. tap_t tap = record->tap;
  201. switch (id) {
  202. case LSHIFT_LPAREN:
  203. // LShft + tap '('
  204. // NOTE: cant use register_code to avoid conflicting with magic key bind
  205. if (event.pressed) {
  206. if (tap.count == 0 || tap.interrupted) {
  207. //add_mods(MOD_BIT(KC_LSHIFT));
  208. layer_on(1);
  209. } else {
  210. add_mods(MOD_BIT(KC_LSHIFT));
  211. add_key(KC_9);
  212. send_keyboard_report();
  213. del_mods(MOD_BIT(KC_LSHIFT));
  214. del_key(KC_9);
  215. send_keyboard_report();
  216. }
  217. } else {
  218. if (tap.count == 0 || tap.interrupted) {
  219. //del_mods(MOD_BIT(KC_LSHIFT));
  220. layer_off(1);
  221. }
  222. }
  223. break;
  224. case RSHIFT_RPAREN:
  225. // RShift + tap ')'
  226. if (event.pressed) {
  227. if (tap.count == 0 || tap.interrupted) {
  228. add_mods(MOD_BIT(KC_RSHIFT));
  229. } else {
  230. add_mods(MOD_BIT(KC_RSHIFT));
  231. add_key(KC_0);
  232. send_keyboard_report();
  233. del_mods(MOD_BIT(KC_RSHIFT));
  234. del_key(KC_0);
  235. send_keyboard_report();
  236. }
  237. } else {
  238. if (tap.count == 0 || tap.interrupted) {
  239. del_mods(MOD_BIT(KC_RSHIFT));
  240. }
  241. }
  242. break;
  243. }
  244. }