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

13 лет назад
10 лет назад
13 лет назад
10 лет назад
13 лет назад
10 лет назад
10 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
13 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
13 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
13 лет назад
11 лет назад
10 лет назад
10 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
11 лет назад
10 лет назад
10 лет назад
11 лет назад
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. }