keymap.c 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299
  1. /* Copyright 2020 William Lindvall
  2. *
  3. * This program is free software: you can redistribute it and/or modify
  4. * it under the terms of the GNU General Public License as published by
  5. * the Free Software Foundation, either version 2 of the License, or
  6. * (at your option) any later version.
  7. *
  8. * This program is distributed in the hope that it will be useful,
  9. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. * GNU General Public License for more details.
  12. *
  13. * You should have received a copy of the GNU General Public License
  14. * along with this program. If not, see <http://www.gnu.org/licenses/>.
  15. */
  16. #include QMK_KEYBOARD_H
  17. enum custom_keycodes {
  18. LIQUOT = SAFE_RANGE,
  19. RIQUOT,
  20. LQUOT,
  21. RQUOT,
  22. LTITLE,
  23. RTITLE,
  24. TBULLET,
  25. FBULLET,
  26. FN_ARROW,
  27. MAIL,
  28. GITHUB,
  29. HEART,
  30. E_LCRY,
  31. E_FLOWER,
  32. E_SHEART,
  33. E_KISS,
  34. E_PHEART,
  35. E_NOGOOD,
  36. E_PARTY,
  37. E_ROCKET,
  38. E_SHRUG,
  39. E_WIZARD,
  40. E_OKBUST,
  41. E_OKHAND,
  42. E_SLEEP,
  43. E_HUNNED,
  44. E_2HEART
  45. };
  46. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  47. switch (keycode) {
  48. case LIQUOT:
  49. if (record->event.pressed) {
  50. SEND_STRING(SS_LALT("300a"));
  51. }
  52. return false;
  53. case RIQUOT:
  54. if (record->event.pressed) {
  55. SEND_STRING(SS_LALT("300b"));
  56. }
  57. return false;
  58. case LQUOT:
  59. if (record->event.pressed) {
  60. SEND_STRING(SS_LALT("300c"));
  61. }
  62. return false;
  63. case RQUOT:
  64. if (record->event.pressed) {
  65. SEND_STRING(SS_LALT("300d"));
  66. }
  67. return false;
  68. case LTITLE:
  69. if (record->event.pressed) {
  70. SEND_STRING(SS_LALT("3010"));
  71. }
  72. return false;
  73. case RTITLE:
  74. if (record->event.pressed) {
  75. SEND_STRING(SS_LALT("3011"));
  76. }
  77. return false;
  78. case TBULLET:
  79. if (record->event.pressed) {
  80. SEND_STRING(SS_LALT("2023"));
  81. }
  82. return false;
  83. case FBULLET:
  84. if (record->event.pressed) {
  85. SEND_STRING(SS_LALT("2055"));
  86. }
  87. return false;
  88. case MAIL:
  89. if (record->event.pressed) {
  90. SEND_STRING("w-lindvall@outlook.com");
  91. }
  92. return false;
  93. case GITHUB:
  94. if (record->event.pressed) {
  95. SEND_STRING("https://github.com/shwilliam");
  96. }
  97. return false;
  98. case FN_ARROW:
  99. if (record->event.pressed) {
  100. SEND_STRING("=>");
  101. }
  102. return false;
  103. case HEART:
  104. if (record->event.pressed) {
  105. SEND_STRING(SS_LALT("2661"));
  106. }
  107. return false;
  108. case E_LCRY:
  109. if (record->event.pressed) {
  110. SEND_STRING(SS_LALT("D83D+DE02"));
  111. }
  112. return false;
  113. case E_FLOWER:
  114. if (record->event.pressed) {
  115. SEND_STRING(SS_LALT("D83C+DF38"));
  116. }
  117. return false;
  118. case E_SHEART:
  119. if (record->event.pressed) {
  120. SEND_STRING(SS_LALT("D83D+DC96"));
  121. }
  122. return false;
  123. case E_KISS:
  124. if (record->event.pressed) {
  125. SEND_STRING(SS_LALT("D83D+DE18"));
  126. }
  127. return false;
  128. case E_PHEART:
  129. if (record->event.pressed) {
  130. SEND_STRING(SS_LALT("D83D+DC9C"));
  131. }
  132. return false;
  133. case E_NOGOOD:
  134. if (record->event.pressed) {
  135. SEND_STRING(SS_LALT("D83D+DE45"));
  136. }
  137. return false;
  138. case E_PARTY:
  139. if (record->event.pressed) {
  140. SEND_STRING(SS_LALT("D83C+DF8A"));
  141. }
  142. return false;
  143. case E_ROCKET:
  144. if (record->event.pressed) {
  145. SEND_STRING(SS_LALT("D83D+DE80"));
  146. }
  147. return false;
  148. case E_SHRUG:
  149. if (record->event.pressed) {
  150. SEND_STRING(SS_LALT("D83E+DD37"));
  151. }
  152. return false;
  153. case E_WIZARD:
  154. if (record->event.pressed) {
  155. SEND_STRING(SS_LALT("D83E+DDD9"));
  156. }
  157. return false;
  158. case E_OKBUST:
  159. if (record->event.pressed) {
  160. SEND_STRING(SS_LALT("D83D+DE46"));
  161. }
  162. return false;
  163. case E_OKHAND:
  164. if (record->event.pressed) {
  165. SEND_STRING(SS_LALT("D83D+DC4C"));
  166. }
  167. return false;
  168. case E_SLEEP:
  169. if (record->event.pressed) {
  170. SEND_STRING(SS_LALT("D83D+DE34"));
  171. }
  172. return false;
  173. case E_HUNNED:
  174. if (record->event.pressed) {
  175. SEND_STRING(SS_LALT("D83D+DCAF"));
  176. }
  177. return false;
  178. case E_2HEART:
  179. if (record->event.pressed) {
  180. SEND_STRING(SS_LALT("D83D+DC95"));
  181. }
  182. return false;
  183. }
  184. return true;
  185. };
  186. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  187. /* qwerty
  188. * ,-----------------------------------------------------------------------------------.
  189. * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Del |
  190. * |------+------+------+------+------+------+------+------+------+------+------+------|
  191. * | Tab | q | w | e | r | t | y | u | i | o | p | Bksp |
  192. * |------+------+------+------+------+-------------+------+------+------+------+------|
  193. * | H/Esc| a | s | d | f | g | h | j | k | l | ' | Enter|
  194. * |------+------+------+------+------+------|------+------+------+------+------+------|
  195. * | Shift| z | x | c | v | b | n | m | , | . | / | ; |
  196. * |------+------+------+------+------+------+------+------+------+------+------+------|
  197. * | PDown| PUp | Alt | OS | Opt | Raise| Space| Lower| Left | Down | Up | Right|
  198. * `-----------------------------------------------------------------------------------'
  199. */
  200. [0] = LAYOUT_preonic_grid(
  201. KC_GRV ,KC_1 ,KC_2 ,KC_3 ,KC_4 ,KC_5 ,KC_6 ,KC_7 ,KC_8 ,KC_9 ,KC_0 ,KC_DEL,
  202. KC_TAB ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T ,KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,KC_BSPC,
  203. C_S_T(KC_ESC),KC_A ,KC_S ,KC_D ,KC_F ,KC_G ,KC_H ,KC_J ,KC_K ,KC_L ,KC_QUOT ,KC_ENT,
  204. KC_LSFT ,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B ,KC_N ,KC_M ,KC_COMM ,KC_DOT ,KC_SLSH ,KC_SCLN,
  205. KC_PGDN ,KC_PGUP ,KC_LALT ,KC_LGUI ,KC_LCTL ,MO(1) ,KC_SPC ,MO(2) ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT
  206. ),
  207. /* raise
  208. * ,-----------------------------------------------------------------------------------.
  209. * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) |SRight|
  210. * |------+------+------+------+------+------+------+------+------+------+------+------|
  211. * | | Q | W | E | R | T | Y | U | I | O | P | SLeft|
  212. * |------+------+------+------+------+-------------+------+------+------+------+------|
  213. * | | A | S | D | F | G | H | J | K | L | " | \ |
  214. * |------+------+------+------+------+------|------+------+------+------+------+------|
  215. * | Emoji| Z | X | C | V | B | N | M | < | > | ? | : |
  216. * |------+------+------+------+------+------+------+------+------+------+------+------|
  217. * | End | Home | ShAlt| ShOS | ShOpt|~~~~~~| Space| | | BDown| BUp | |
  218. * `-----------------------------------------------------------------------------------'
  219. */
  220. [1] = LAYOUT_preonic_grid(
  221. KC_TILD ,KC_EXLM ,KC_AT ,KC_HASH ,KC_DLR ,KC_PERC ,KC_CIRC ,KC_AMPR ,KC_ASTR ,KC_LPRN ,KC_RPRN ,SGUI(KC_RGHT),
  222. KC_NO ,LSFT(KC_Q),LSFT(KC_W) ,LSFT(KC_E) ,LSFT(KC_R) ,LSFT(KC_T),LSFT(KC_Y),LSFT(KC_U),LSFT(KC_I),LSFT(KC_O),LSFT(KC_P),SGUI(KC_LEFT),
  223. KC_NO ,LSFT(KC_A),LSFT(KC_S) ,LSFT(KC_D) ,LSFT(KC_F) ,LSFT(KC_G),LSFT(KC_H),LSFT(KC_J),LSFT(KC_K),LSFT(KC_L),KC_DQUO ,KC_BSLS,
  224. OSL(3) ,LSFT(KC_Z),LSFT(KC_X) ,LSFT(KC_C) ,LSFT(KC_V) ,LSFT(KC_B),LSFT(KC_N),LSFT(KC_M),KC_LT ,KC_GT ,KC_QUES ,KC_COLN,
  225. KC_END ,KC_HOME ,LSFT(KC_LALT),LSFT(KC_LGUI),LSFT(KC_LCTL),KC_TRNS ,KC_SPC ,KC_TRNS ,KC_NO ,KC_BRID ,KC_BRIU ,KC_NO
  226. ),
  227. /* lower
  228. * ,-----------------------------------------------------------------------------------.
  229. * | ♡ | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | |
  230. * |------+------+------+------+------+------+------+------+------+------+------+------|
  231. * | ‣ | CLeft| MUp |CRight|MWDown| 【 | - | _ | | | = | + | DLeft|
  232. * |------+------+------+------+------+-------------+------+------+------+------+------|
  233. * | | MLeft| MDown|MRight| MWUp | 】 | Left | Down | Up | Right| ( | ) |
  234. * |------+------+------+------+------+------|------+------+------+------+------+------|
  235. * | | 《 | 》 | 「 | 」 | ⁕ | | { | } | [ | ] | => |
  236. * |------+------+------+------+------+------+------+------+------+------+------+------|
  237. * | Mail |GitHub| | | | | Space|~~~~~~| VMute| VDown| VUp | |
  238. * `-----------------------------------------------------------------------------------'
  239. */
  240. [2] = LAYOUT_preonic_grid(
  241. HEART ,KC_F1 ,KC_F2 ,KC_F3 ,KC_F4 ,KC_F5 ,KC_F6 ,KC_F7 ,KC_F8 ,KC_F9 ,KC_F10 ,KC_NO,
  242. TBULLET ,KC_BTN1 ,KC_MS_U ,KC_BTN2 ,KC_WH_D ,LTITLE ,KC_MINS ,KC_UNDS ,KC_PIPE ,KC_EQL ,KC_PLUS ,LGUI(KC_BSPC),
  243. KC_NO ,KC_MS_L ,KC_MS_D ,KC_MS_R ,KC_WH_U ,RTITLE ,KC_LEFT ,KC_DOWN ,KC_UP ,KC_RGHT ,KC_LPRN ,KC_RPRN,
  244. KC_NO ,LIQUOT ,RIQUOT ,LQUOT ,RQUOT ,FBULLET ,KC_NO ,KC_LCBR ,KC_RCBR ,KC_LBRC ,KC_RBRC ,FN_ARROW,
  245. MAIL ,GITHUB ,KC_NO ,KC_NO ,KC_NO ,KC_TRNS ,KC_BSPC ,KC_TRNS ,KC_MUTE ,KC_VOLD ,KC_VOLU ,KC_NO
  246. ),
  247. /* emoji
  248. * ,-----------------------------------------------------------------------------------.
  249. * | | 1 | 2 | | | | | | | | | |
  250. * |------+------+------+------+------+------+------+------+------+------+------+------|
  251. * | | | w | | r | | y | | | o | p | |
  252. * |------+------+------+------+------+-------------+------+------+------+------+------|
  253. * | | | s | | f | | h | | k | l | | |
  254. * |------+------+------+------+------+------|------+------+------+------+------+------|
  255. * | | z | | c | | | n | | | | | |
  256. * |------+------+------+------+------+------+------+------+------+------+------+------|
  257. * | | | | | | | | | | | | |
  258. * `-----------------------------------------------------------------------------------'
  259. *
  260. * mnemonics:
  261. *
  262. * 100 - 💯
  263. * 2 hearts - 💕
  264. * cry - 😂
  265. * flower - 🌸
  266. * heart - 💖
  267. * kiss - 😘
  268. * love - 💜
  269. * no - 🙅
  270. * ok - 🙆
  271. * party - 🎊
  272. * rocket - 🚀
  273. * shrug - 🤷
  274. * wizard - 🧙
  275. * yes - 👌
  276. * zzz - 😴
  277. *
  278. */
  279. [3] = LAYOUT_preonic_grid(
  280. KC_NO ,E_HUNNED,E_2HEART,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO,
  281. KC_NO ,KC_NO ,E_WIZARD,KC_NO ,E_ROCKET,KC_NO ,E_OKHAND,KC_NO ,KC_NO ,E_OKBUST,E_PARTY ,KC_NO,
  282. KC_NO ,KC_NO ,E_SHRUG ,KC_NO ,E_FLOWER,KC_NO ,E_SHEART,KC_NO ,E_KISS ,E_PHEART,KC_NO ,KC_NO,
  283. KC_NO ,E_SLEEP ,KC_NO ,E_LCRY ,KC_NO ,KC_NO ,E_NOGOOD,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO,
  284. KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO ,KC_NO
  285. )
  286. };