keymap.c 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420
  1. /* Copyright 2019 Thomas Baart <thomas@splitkb.com>
  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. #include "keymap_spanish.h"
  18. enum layers {
  19. _QWERTY = 0,
  20. _DVORAK,
  21. _COLEMAK_DH,
  22. _NAV,
  23. _SYM,
  24. _FUNCTION,
  25. _ADJUST,
  26. _NUMPAD,
  27. _MOUSE
  28. };
  29. // Aliases for readability
  30. #define QWERTY DF(_QWERTY)
  31. #define COLEMAK DF(_COLEMAK_DH)
  32. #define DVORAK DF(_DVORAK)
  33. #define NUMPAD DF(_NUMPAD)
  34. #define MOUSE DF(_MOUSE)
  35. #define DNAV DF(_NAV)
  36. #define SYM MO(_SYM)
  37. #define NAV MO(_NAV)
  38. #define FKEYS MO(_FUNCTION)
  39. #define ADJUST MO(_ADJUST)
  40. #define CTL_ESC MT(MOD_LCTL, KC_ESC)
  41. #define CTL_QUOT MT(MOD_RCTL, KC_QUOTE)
  42. #define CTL_MINS MT(MOD_RCTL, KC_MINUS)
  43. #define ALT_ENT MT(MOD_LALT, KC_ENT)
  44. #define LGUI_ENT MT(MOD_LGUI, KC_ENT)
  45. #define LALT_SUP MT(MOD_LALT, KC_DEL)
  46. #define RGUI_TAB MT(MOD_RGUI, KC_TAB)
  47. #define RALT_BS MT(MOD_RALT, KC_BSPC)
  48. #define LSFT_LPR MT(MOD_LSFT, ES_LPRN)
  49. #define RSFT_RPR MT(MOD_RSFT, ES_RPRN)
  50. #define NAV_ESC LT(NAV, KC_ESC)
  51. #define SYM_SPC LT(SYM, KC_SPC)
  52. #define NAV_SPC LT(NAV, KC_SPC)
  53. #define SYM_ENT LT(SYM, KC_ENT)
  54. #define OSX_TILD ALGR(KC_SCLN)
  55. // Note: LAlt/Enter (ALT_ENT) is not the same thing as the keyboard shortcut Alt+Enter.
  56. // The notation `mod/tap` denotes a key that activates the modifier `mod` when held down, and
  57. // produces the key `tap` when tapped (i.e. pressed and released).
  58. // clang-format off
  59. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  60. /*
  61. * Base Layer: QWERTY
  62. *
  63. * ,-------------------------------------------. ,-------------------------------------------.
  64. * | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
  65. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  66. * |Ctrl/Esc| A | S | D | F | G | | H | J | K | L | Ñ |Ctrl/´ ¨|
  67. * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
  68. * |LShift/(| Z | X | C | V | B | `^[ |CapsLk| |F-keys| +*] | N | M | , ; | . : | - _ |RShift/)|
  69. * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
  70. * |Adjust| LAlt/| LGUI/| Sym/ | Nav/ | | Sym/ | Nav/ | RGUI/| RAlt/| Menu |
  71. * | | Supr | Enter| Space| Esc | | Enter| Space| Tab | Bksp | |
  72. * `----------------------------------' `----------------------------------'
  73. */
  74. [_QWERTY] = LAYOUT(
  75. KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y, KC_U , KC_I , KC_O , KC_P , KC_BSPC,
  76. CTL_ESC , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H, KC_J , KC_K , KC_L , KC_SCLN, CTL_QUOT,
  77. LSFT_LPR , KC_Z , KC_X , KC_C , KC_V , KC_B , ES_GRV , KC_CAPS, FKEYS , ES_PLUS , KC_N , KC_M, KC_COMM , KC_DOT , KC_SLSH, RSFT_RPR,
  78. ADJUST , LALT_SUP, LGUI_ENT, SYM_SPC , NAV_ESC, SYM_ENT, NAV_SPC , RGUI_TAB, RALT_BS, KC_APP
  79. ),
  80. /*
  81. * Base Layer: Dvorak
  82. *
  83. * ,-------------------------------------------. ,-------------------------------------------.
  84. * | Tab | ´ ¨ | , ; | . : | P | Y | | F | G | C | R | L | Bksp |
  85. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  86. * |Ctrl/Esc| A | O | E | U | I | | D | H | T | N | S |Ctrl/' ?|
  87. * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
  88. * |LShift/(| Ñ | Q | J | K | X | `^[ |CapsLk| |F-keys| +*] | B | M | W | V | Z |RShift/)|
  89. * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
  90. * |Adjust| LAlt/| LGUI/| Sym/ | Nav/ | | Sym/ | Nav/ | RGUI/| RAlt/| Menu |
  91. * | | Supr | Enter| Space| Esc | | Enter| Space| Tab | Bksp | |
  92. * `----------------------------------' `----------------------------------'
  93. */
  94. [_DVORAK] = LAYOUT(
  95. KC_TAB ,KC_QUOTE,KC_COMM, KC_DOT, KC_P , KC_Y , KC_F, KC_G , KC_C , KC_R , KC_L , KC_BSPC,
  96. CTL_ESC , KC_A , KC_O , KC_E , KC_U , KC_I , KC_D, KC_H , KC_T , KC_N , KC_S , CTL_MINS,
  97. LSFT_LPR ,KC_SCLN, KC_Q , KC_J , KC_K , KC_X , ES_GRV, KC_CAPS, FKEYS , ES_PLUS, KC_B, KC_M , KC_W , KC_V , KC_Z , RSFT_RPR,
  98. ADJUST , LALT_SUP, LGUI_ENT, SYM_SPC , NAV_ESC, SYM_ENT, NAV_SPC , RGUI_TAB, RALT_BS, KC_APP
  99. ),
  100. /*
  101. * Base Layer: Colemak DH
  102. *
  103. * ,-------------------------------------------. ,-------------------------------------------.
  104. * | Tab | Q | W | F | P | B | | J | L | U | Y | Ñ | Bksp |
  105. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  106. * |Ctrl/Esc| A | R | S | T | G | | M | N | E | I | O |Ctrl/´ ¨|
  107. * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
  108. * |LShift/(| Z | X | C | D | V | `^[ |CapsLk| |F-keys| +*] | K | H | , ; | . : | - _ |RShift/)|
  109. * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
  110. * |Adjust| LAlt/| LGUI/| Sym/ | Nav/ | | Sym/ | Nav/ | RGUI/| RAlt/| Menu |
  111. * | | Supr | Enter| Space| Esc | | Enter| Space| Tab | Bksp | |
  112. * `----------------------------------' `----------------------------------'
  113. */
  114. [_COLEMAK_DH] = LAYOUT(
  115. KC_TAB , KC_Q , KC_W , KC_F , KC_P , KC_B , KC_J, KC_L , KC_U , KC_Y , KC_SCLN , KC_BSPC,
  116. CTL_ESC , KC_A , KC_R , KC_S , KC_T , KC_G , KC_M, KC_N , KC_E , KC_I , KC_O , CTL_QUOT,
  117. LSFT_LPR , KC_Z , KC_X , KC_C , KC_D , KC_V , ES_GRV, KC_CAPS, FKEYS , ES_PLUS , KC_K , KC_H , KC_COMM , KC_DOT , KC_SLSH, RSFT_RPR,
  118. ADJUST , LALT_SUP, LGUI_ENT, SYM_SPC , NAV_ESC, SYM_ENT, NAV_SPC , RGUI_TAB , RALT_BS , KC_APP
  119. ),
  120. /*
  121. * Nav Layer: Media, navigation
  122. *
  123. * ,-------------------------------------------. ,-------------------------------------------.
  124. * | | | | | | | | PgUp | Home | ↑ | End | VolUp| Delete |
  125. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  126. * | | Shift| Ctrl | Alt | GUI | | | PgDn | ← | ↓ | → | VolDn| Insert |
  127. * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
  128. * | | | | | | | |ScLck | | | | Pause|M Prev|M Play|M Next|VolMut| PrtSc |
  129. * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
  130. * | | | | | | | | | | | |
  131. * | | | | | | | | | | | |
  132. * `----------------------------------' `----------------------------------'
  133. */
  134. [_NAV] = LAYOUT(
  135. _______, _______, _______, _______, _______, _______, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_VOLU, KC_DEL,
  136. _______, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_VOLD, KC_INS,
  137. _______, _______, _______, _______, _______, _______, _______, KC_SCRL, _______, _______,KC_PAUSE, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_PSCR,
  138. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
  139. ),
  140. /*
  141. * Sym Layer: Numbers and symbols
  142. *
  143. * ,-------------------------------------------. ,-------------------------------------------.
  144. * | º | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ' |
  145. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  146. * | ª | ! | " | · | $ | % | | & | / | ( | ) | = | ? |
  147. * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
  148. * | \ | | | @ | # | ~ | € | ¬ | | | | | ¡ | < | > | { | } | ¿ |
  149. * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
  150. * | | | | | | | | | | | |
  151. * | | | | | | | | | | | |
  152. * `----------------------------------' `----------------------------------'
  153. */
  154. [_SYM] = LAYOUT(
  155. KC_NUBS, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , ES_QUOT,
  156. S(KC_NUBS) , ES_EXLM, ES_DQUO , ES_BULT, ES_DLR, ES_PERC, ES_AMPR, ES_SLSH, ES_LPRN, ES_RPRN, ES_EQL, ES_QUES,
  157. A(KC_NUBS), ES_PIPE, ES_AT, ES_HASH , OSX_TILD, A(KC_E), ES_NOT, _______, S(ES_CCED), ES_CCED, ES_IEXL, KC_GRAVE, S(KC_GRAVE), ES_LCBR, ES_RCBR, ES_IQUE,
  158. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
  159. ),
  160. /*
  161. * Sym Layer: Numbers and symbols
  162. *
  163. * ,-------------------------------------------. ,-------------------------------------------.
  164. * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ' |
  165. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  166. * | ~ | ! | @ | · | $ | % | | & | / | ( | ) | = | ¿ |
  167. * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
  168. * | | | \ | : | ; | - | [ | { | | | | } | ] | _ | , | . | / | ? |
  169. * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
  170. * | | | | | | | | | | | |
  171. * | | | | | | | | | | | |
  172. * `----------------------------------' `----------------------------------'
  173. */
  174. // [_SYM] = LAYOUT(
  175. // C(KC_GRV), KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_EQL ,
  176. // OSX_TILD , KC_EXLM, KC_AT , KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PLUS,
  177. // ES_PIPE , A(KC_NUHS) , ES_COLN, ES_SCLN, ES_MINS, ES_LBRC, ES_LCBR, _______, _______, ES_RCBR, ES_RBRC, ES_UNDS, ES_COMM, ES_DOT, ES_SLSH, ES_QUOT,
  178. // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
  179. // ),
  180. /*
  181. * Function Layer: Function keys
  182. *
  183. * ,-------------------------------------------. ,-------------------------------------------.
  184. * | | F9 | F10 | F11 | F12 | | | | | | | | |
  185. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  186. * | | F5 | F6 | F7 | F8 | | | | GUI | Alt | Ctrl | Shift| |
  187. * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
  188. * | | F1 | F2 | F3 | F4 | | | | | | | | | | | | |
  189. * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
  190. * | | | | | | | | | | | |
  191. * | | | | | | | | | | | |
  192. * `----------------------------------' `----------------------------------'
  193. */
  194. [_FUNCTION] = LAYOUT(
  195. _______, KC_F9 , KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______,
  196. _______, KC_F5 , KC_F6 , KC_F7 , KC_F8 , _______, _______, KC_RGUI, KC_RALT, KC_RCTL, KC_RSFT, _______,
  197. _______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  198. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
  199. ),
  200. /*
  201. * Adjust Layer: Default layer settings, RGB
  202. *
  203. * ,-------------------------------------------. ,-------------------------------------------.
  204. * | NumPad | | |QWERTY| | | | | | | | | Boot |
  205. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  206. * | Mouse | | |Dvorak| | | | TOG | SAI | HUI | VAI | MOD | Debug |
  207. * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
  208. * |Nav Perm| | |Colmak| | | | | | | | | SAD | HUD | VAD | RMOD | EE_CLR |
  209. * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
  210. * | | | | | | | | | | | |
  211. * | | | | | | | | | | | |
  212. * `----------------------------------' `----------------------------------'
  213. */
  214. [_ADJUST] = LAYOUT(
  215. NUMPAD , _______, _______, QWERTY , _______, _______, _______, _______, _______, _______, _______, QK_BOOT,
  216. MOUSE , _______, _______, DVORAK , _______, _______, RGB_TOG, RGB_SAI, RGB_HUI, RGB_VAI, RGB_MOD, DB_TOGG,
  217. DNAV , _______, _______, COLEMAK, _______, _______,_______, _______, _______, _______, _______, RGB_SAD, RGB_HUD, RGB_VAD, RGB_RMOD, EE_CLR,
  218. _______, _______, _______,_______, _______, _______, _______, _______, _______, _______
  219. ),
  220. /*
  221. * Layer NumPad
  222. *
  223. * ,-------------------------------------------. ,-------------------------------------------.
  224. * | | | | | | | | | | | | | |
  225. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  226. * | | | | | | | | | | | | | |
  227. * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
  228. * | | | | | | | | | | | | | | | | | |
  229. * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
  230. * |Adjust| | | | | | | | | | |
  231. * | | | | | | | | | | | |
  232. * `----------------------------------' `----------------------------------'
  233. */
  234. [_NUMPAD] = LAYOUT(
  235. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  236. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  237. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  238. ADJUST , _______, _______, _______, _______, _______, _______, _______, _______, _______
  239. ),
  240. /*
  241. * Layer Mouse
  242. *
  243. * ,-------------------------------------------. ,-------------------------------------------.
  244. * | | | | | | | | |MS LCL| MS ↑ |MS RCL| Whl ↑| |
  245. * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  246. * | | Shift| Ctrl | Alt | GUI | | | | MS ← | MS ↓ | MS → | Whl ↓| |
  247. * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
  248. * | | | | | | | | | | | | | | | | | |
  249. * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
  250. * |Adjust| | | | | | | | | | |
  251. * | | | | | | | | | | | |
  252. * `----------------------------------' `----------------------------------'
  253. */
  254. [_MOUSE] = LAYOUT(
  255. _______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, _______,
  256. _______, KC_LSFT, KC_LCTL, KC_LALT, KC_LGUI, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______,
  257. _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  258. ADJUST , _______, _______, _______, _______, _______, _______, _______, _______, _______
  259. ),
  260. /*
  261. // * Layer template
  262. // *
  263. // * ,-------------------------------------------. ,-------------------------------------------.
  264. // * | | | | | | | | | | | | | |
  265. // * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
  266. // * | | | | | | | | | | | | | |
  267. // * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
  268. // * | | | | | | | | | | | | | | | | | |
  269. // * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
  270. // * | | | | | | | | | | | |
  271. // * | | | | | | | | | | | |
  272. // * `----------------------------------' `----------------------------------'
  273. // */
  274. // [_LAYERINDEX] = LAYOUT(
  275. // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  276. // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  277. // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
  278. // _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
  279. // ),
  280. };
  281. /* The default OLED and rotary encoder code can be found at the bottom of qmk_firmware/keyboards/splitkb/kyria/rev1/rev1.c
  282. * These default settings can be overriden by your own settings in your keymap.c
  283. * For your convenience, here's a copy of those settings so that you can uncomment them if you wish to apply your own modifications.
  284. * DO NOT edit the rev1.c file; instead override the weakly defined default functions by your own.
  285. */
  286. #ifdef OLED_ENABLE
  287. oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; }
  288. bool oled_task_user(void) {
  289. if (is_keyboard_master()) {
  290. // QMK Logo and version information
  291. // clang-format off
  292. static const char PROGMEM qmk_logo[] = {
  293. 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
  294. 0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
  295. 0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0};
  296. // clang-format on
  297. oled_write_P(qmk_logo, false);
  298. oled_write_P(PSTR("Kyria AdG v0.1\n\n"), false);
  299. // Host Keyboard Layer Status
  300. oled_write_P(PSTR("Layer: "), false);
  301. switch (get_highest_layer(layer_state|default_layer_state)) {
  302. case _QWERTY:
  303. oled_write_P(PSTR("QWERTY\n"), false);
  304. break;
  305. case _DVORAK:
  306. oled_write_P(PSTR("Dvorak\n"), false);
  307. break;
  308. case _COLEMAK_DH:
  309. oled_write_P(PSTR("Colemak-DH\n"), false);
  310. break;
  311. case _NAV:
  312. oled_write_P(PSTR("Nav\n"), false);
  313. break;
  314. case _SYM:
  315. oled_write_P(PSTR("Sym\n"), false);
  316. break;
  317. case _FUNCTION:
  318. oled_write_P(PSTR("Function\n"), false);
  319. break;
  320. case _ADJUST:
  321. oled_write_P(PSTR("Adjust\n"), false);
  322. break;
  323. case _NUMPAD:
  324. oled_write_P(PSTR("NumPad\n"), false);
  325. break;
  326. case _MOUSE:
  327. oled_write_P(PSTR("Mouse\n"), false);
  328. break;
  329. default:
  330. oled_write_P(PSTR("Undefined\n"), false);
  331. }
  332. // Write host Keyboard LED Status to OLEDs
  333. led_t led_usb_state = host_keyboard_led_state();
  334. oled_write_P(led_usb_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false);
  335. oled_write_P(led_usb_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false);
  336. oled_write_P(led_usb_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false);
  337. } else {
  338. // clang-format off
  339. static const char PROGMEM kyria_logo[] = {
  340. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  341. 0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  342. 0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  343. 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0,
  344. 0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0,
  345. 0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  346. 0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  347. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  348. };
  349. // clang-format on
  350. oled_write_raw_P(kyria_logo, sizeof(kyria_logo));
  351. }
  352. return false;
  353. }
  354. #endif
  355. #ifdef ENCODER_ENABLE
  356. bool encoder_update_user(uint8_t index, bool clockwise) {
  357. if (index == 0) {
  358. // Volume control
  359. if (clockwise) {
  360. tap_code(KC_VOLU);
  361. } else {
  362. tap_code(KC_VOLD);
  363. }
  364. } else if (index == 1) {
  365. // Page up/Page down
  366. if (clockwise) {
  367. tap_code(KC_PGDN);
  368. } else {
  369. tap_code(KC_PGUP);
  370. }
  371. }
  372. return false;
  373. }
  374. #endif
  375. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  376. switch (keycode) {
  377. case LSFT_LPR:
  378. if (record->tap.count && record->event.pressed) {
  379. tap_code16(ES_LPRN); // Send KC_DQUO on tap
  380. return false; // Return false to ignore further processing of key
  381. }
  382. break;
  383. case RSFT_RPR:
  384. if (record->tap.count && record->event.pressed) {
  385. tap_code16(ES_RPRN); // Send KC_DQUO on tap
  386. return false; // Return false to ignore further processing of key
  387. }
  388. break;
  389. }
  390. return true;
  391. }