keymap.c 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. #include QMK_KEYBOARD_H
  2. #include "keymap_jp.h"
  3. #ifdef RGBLIGHT_ENABLE
  4. //Following line allows macro to read current RGB settings
  5. extern rgblight_config_t rgblight_config;
  6. #endif
  7. extern uint8_t is_master;
  8. #ifdef OLED_DRIVER_ENABLE
  9. static uint32_t oled_timer = 0;
  10. #endif
  11. // Each layer gets a name for readability, which is then used in the keymap matrix below.
  12. // The underscores don't mean anything - you can have a layer called STUFF or any other name.
  13. // Layer names don't all need to be of the same length, obviously, and you can also skip them
  14. // entirely and just use numbers.
  15. enum layer_number {
  16. _BASE = 0,
  17. _ARROW,
  18. _MACRO,
  19. _ADJUST,
  20. };
  21. enum custom_keycodes {
  22. RGB_RST = SAFE_RANGE,
  23. SEND_SUM,
  24. SEND_AVE,
  25. SEND_CIF,
  26. SEND_MAX,
  27. SEND_MIN
  28. };
  29. const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
  30. [_BASE] = LAYOUT_numpad_6x4(
  31. //,-----------------------------------|
  32. KC_ESC, KC_F2, JP_EQL, KC_DEL,
  33. //|--------+--------+--------+--------|
  34. KC_NLCK, KC_PSLS, KC_PAST, KC_PMNS,
  35. //|--------+--------+--------+--------|
  36. KC_P7, KC_P8, KC_P9,
  37. //|--------+--------+--------+--------|
  38. KC_P4, KC_P5, KC_P6, KC_PPLS,
  39. //|--------+--------+--------+--------|
  40. KC_P1, KC_P2, KC_P3,
  41. //|--------+--------+--------+--------|
  42. LT(_ARROW, KC_P0),LT(_MACRO, KC_PDOT),KC_PENT
  43. //`-----------------------------------'
  44. ),
  45. [_ARROW] = LAYOUT_numpad_6x4(
  46. //,-----------------------------------|
  47. _______, _______, _______, _______,
  48. //|--------+--------+--------+--------|
  49. XXXXXXX, _______, _______, _______,
  50. //|--------+--------+--------+--------|
  51. XXXXXXX, KC_UP, XXXXXXX,
  52. //|--------+--------+--------+--------|
  53. KC_LEFT, KC_DOWN,KC_RIGHT, _______,
  54. //|--------+--------+--------+--------|
  55. XXXXXXX, KC_DOWN, XXXXXXX,
  56. //|--------+--------+--------+--------|
  57. MO(_ARROW), MO(_MACRO), _______
  58. //`-----------------------------------'
  59. ),
  60. [_MACRO] = LAYOUT_numpad_6x4(
  61. //,-----------------------------------|
  62. _______, _______, _______, _______,
  63. //|--------+--------+--------+--------|
  64. SEND_MIN,SEND_MAX,SEND_CIF,SEND_AVE,
  65. //|--------+--------+--------+--------|
  66. KC_F7, KC_F8, KC_F9,
  67. //|--------+--------+--------+--------|
  68. KC_F4, KC_F5, KC_F6,SEND_SUM,
  69. //|--------+--------+--------+--------|
  70. KC_F11, KC_F12, KC_F3,
  71. //|--------+--------+--------+--------|
  72. _______, _______, JP_RPRN
  73. //`-----------------------------------'
  74. ),
  75. [_ADJUST] = LAYOUT_numpad_6x4( /* Base */
  76. //,-----------------------------------|
  77. _______, _______, _______, _______,
  78. //|--------+--------+--------+--------|
  79. XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
  80. //|--------+--------+--------+--------|
  81. RGB_SAD, RGB_SAI, XXXXXXX,
  82. //|--------+--------+--------+--------|
  83. RGB_HUD, RGB_HUI, XXXXXXX, RGB_TOG,
  84. //|--------+--------+--------+--------|
  85. RGB_VAD, RGB_VAI, XXXXXXX,
  86. //|--------+--------+--------+--------|
  87. _______, _______, RGB_MOD
  88. //`-----------------------------------'
  89. )
  90. };
  91. //A description for expressing the layer position in LED mode.
  92. layer_state_t layer_state_set_user(layer_state_t state) {
  93. return update_tri_layer_state(state, _ARROW, _MACRO, _ADJUST);
  94. }
  95. int RGB_current_mode;
  96. bool process_record_user(uint16_t keycode, keyrecord_t *record) {
  97. bool result = false;
  98. if (record->event.pressed) {
  99. #ifdef OLED_DRIVER_ENABLE
  100. oled_timer = timer_read32();
  101. #endif
  102. }
  103. switch (keycode) {
  104. case SEND_SUM:
  105. if (record->event.pressed) {
  106. SEND_STRING("_SUM*");
  107. }
  108. break;
  109. case SEND_AVE:
  110. if (record->event.pressed) {
  111. SEND_STRING("_AVERAGE*");
  112. }
  113. break;
  114. case SEND_CIF:
  115. if (record->event.pressed) {
  116. SEND_STRING("_COUNTIF*");
  117. }
  118. break;
  119. case SEND_MAX:
  120. if (record->event.pressed) {
  121. SEND_STRING("_MAX*");
  122. }
  123. break;
  124. case SEND_MIN:
  125. if (record->event.pressed) {
  126. SEND_STRING("_MIN*");
  127. }
  128. break;
  129. #ifdef RGBLIGHT_ENABLE
  130. case RGB_MOD:
  131. if (record->event.pressed) {
  132. rgblight_mode(RGB_current_mode);
  133. rgblight_step();
  134. RGB_current_mode = rgblight_config.mode;
  135. }
  136. break;
  137. case RGB_RST:
  138. if (record->event.pressed) {
  139. eeconfig_update_rgblight_default();
  140. rgblight_enable();
  141. RGB_current_mode = rgblight_config.mode;
  142. }
  143. break;
  144. #endif
  145. default:
  146. result = true;
  147. break;
  148. }
  149. return result;
  150. }
  151. #ifdef OLED_DRIVER_ENABLE
  152. oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_0; }
  153. void render_layer_state(void) {
  154. oled_write_P(PSTR("LAYER: "), false);
  155. oled_write_P(PSTR(" Arrow "), layer_state_is(_ARROW));
  156. oled_write_P(PSTR(" Macro "), layer_state_is(_MACRO));
  157. }
  158. void render_keylock_status(uint8_t led_usb_state) {
  159. oled_write_P(PSTR("NumLock"), led_usb_state & (1 << USB_LED_NUM_LOCK));
  160. oled_write_P(PSTR(" "), false);
  161. }
  162. void render_layer_messages(void) {
  163. oled_write_P(PSTR("Setta21 For Your Good Job. "), false);
  164. }
  165. void render_status(void) {
  166. /* Show Keyboard Layout */
  167. render_layer_messages();
  168. render_keylock_status(host_keyboard_leds());
  169. render_layer_state();
  170. }
  171. void oled_task_user(void) {
  172. render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
  173. }
  174. #endif