1 #include QMK_KEYBOARD_H
5 #include "split_util.h"
11 extern keymap_config_t keymap_config;
12 extern uint8_t is_master;
14 #ifdef RGBLIGHT_ENABLE
15 //Following line allows macro to read current RGB settings
16 extern rgblight_config_t rgblight_config;
20 RGBRST = NEW_SAFE_RANGE
24 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
25 [_QWERTY] = LAYOUT_wrapper(
26 KC_ESC, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_BSPC,
27 KC_TAB, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_QUOT,
28 KC_MLSF, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, KC_MRSF,
29 LT(_LOWER,KC_GRV), KC_SPC, KC_BSPC, KC_DEL, KC_ENT, RAISE
31 [_COLEMAK] = LAYOUT_wrapper(
32 KC_ESC, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_BSPC,
33 KC_TAB, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_QUOT,
34 KC_MLSF, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, KC_MRSF,
35 LT(_LOWER,KC_GRV), KC_SPC, KC_BSPC, KC_DEL, KC_ENT, RAISE
37 [_DVORAK] = LAYOUT_wrapper(
38 KC_ESC, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_BSPC,
39 KC_TAB, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_QUOT,
40 KC_MLSF, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, KC_MRSF,
41 LT(_LOWER,KC_GRV), KC_SPC, KC_BSPC, KC_DEL, KC_ENT, RAISE
43 [_WORKMAN] = LAYOUT_wrapper(
44 KC_ESC, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_BSPC,
45 KC_TAB, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, KC_QUOT,
46 KC_MLSF, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, KC_MRSF,
47 LT(_LOWER,KC_GRV), KC_SPC, KC_BSPC, KC_DEL, KC_ENT, RAISE
50 [_MODS] = LAYOUT_wrapper(
51 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
52 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
53 KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_RSFT,
54 _______, _______, _______, _______, _______, _______
57 [_LOWER] = LAYOUT_wrapper(
58 KC_TILD, _________________LOWER_L1__________________, _________________LOWER_R1__________________, KC_BSPC,
59 KC_F11, _________________LOWER_L2__________________, _________________LOWER_R2__________________, KC_PIPE,
60 KC_F12, _________________LOWER_L3__________________, _________________LOWER_R3__________________, _______,
61 _______, _______, _______, _______, _______, _______
64 [_RAISE] = LAYOUT_wrapper( \
65 KC_GRV, _________________RAISE_L1__________________, _________________RAISE_R1__________________, KC_BSPC,
66 _______, _________________RAISE_L2__________________, _________________RAISE_R2__________________, KC_BSLS,
67 _______, _________________RAISE_L3__________________, _________________RAISE_R3__________________, _______,
68 _______, _______, _______, _______, _______, _______ //`--------------------' `--------------------'
71 [_ADJUST] = LAYOUT_wrapper( \
72 KC_MAKE, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, KC_RESET,
73 VRSN, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EPRM,
74 TG_MODS, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, KC_MPLY,
75 _______, _______, _______, _______, _______, _______
81 void matrix_init_keymap(void) {
82 #ifdef RGBLIGHT_ENABLE
83 RGB_current_mode = rgblight_config.mode;
85 //SSD1306 OLED init, make sure to add #define SSD1306OLED in config.h
87 iota_gfx_init(!has_usb()); // turns on the display
96 //SSD1306 OLED update loop, make sure to add #define SSD1306OLED in config.h
99 // When add source files to SRC in rules.mk, you can use functions.
100 const char *read_layer_state(void);
101 const char *read_logo(void);
102 void set_keylog(uint16_t keycode, keyrecord_t *record);
103 const char *read_keylog(void);
104 const char *read_keylogs(void);
106 // const char *read_mode_icon(bool swap);
107 // const char *read_host_led_state(void);
108 // void set_timelog(void);
109 // const char *read_timelog(void);
111 void matrix_scan_keymap(void) {
115 void matrix_render_user(struct CharacterMatrix *matrix) {
117 // If you want to change the display of OLED, you need to change here
118 matrix_write_ln(matrix, read_layer_state());
119 matrix_write_ln(matrix, read_keylog());
120 matrix_write_ln(matrix, read_keylogs());
121 //matrix_write_ln(matrix, read_mode_icon(keymap_config.swap_lalt_lgui));
122 //matrix_write_ln(matrix, read_host_led_state());
123 //matrix_write_ln(matrix, read_timelog());
125 matrix_write(matrix, read_logo());
129 void matrix_update(struct CharacterMatrix *dest, const struct CharacterMatrix *source) {
130 if (memcmp(dest->display, source->display, sizeof(dest->display))) {
131 memcpy(dest->display, source->display, sizeof(dest->display));
136 void iota_gfx_task_user(void) {
137 struct CharacterMatrix matrix;
138 matrix_clear(&matrix);
139 matrix_render_user(&matrix);
140 matrix_update(&display, &matrix);
143 bool process_record_keymap(uint16_t keycode, keyrecord_t *record) {
144 if (record->event.pressed) {
145 set_keylog(keycode, record);
151 #ifdef RGBLIGHT_ENABLE
152 if (record->event.pressed) {
153 rgblight_mode_noeeprom(RGB_current_mode);
155 RGB_current_mode = rgblight_config.mode;
161 #ifdef RGBLIGHT_ENABLE
162 if (record->event.pressed) {
163 eeconfig_update_rgblight_default();
165 RGB_current_mode = rgblight_config.mode;