diff --git a/keyboards/mlego/m65/config.h b/keyboards/mlego/m65/config.h deleted file mode 100644 index bdb0c1662115..000000000000 --- a/keyboards/mlego/m65/config.h +++ /dev/null @@ -1,21 +0,0 @@ -/* -Copyright 2021-2022 Alin M Elena - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#define LOCKING_SUPPORT_ENABLE -#define LOCKING_RESYNC_ENABLE diff --git a/keyboards/mlego/m65/info.json b/keyboards/mlego/m65/info.json deleted file mode 100644 index c032cda3fe78..000000000000 --- a/keyboards/mlego/m65/info.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "keyboard_name": "m65", - "manufacturer": "Alin Elena", - "url": "https://gitlab.com/m-lego/m65", - "maintainer": "alin elena", - "usb": { - "vid": "0xBABA" - }, - "layouts": { - "LAYOUT_ortho_5x13": { - "layout": [ - {"matrix": [0, 0], "x": 0, "y": 0}, - {"matrix": [0, 1], "x": 1, "y": 0}, - {"matrix": [0, 2], "x": 2, "y": 0}, - {"matrix": [0, 3], "x": 3, "y": 0}, - {"matrix": [0, 4], "x": 4, "y": 0}, - {"matrix": [0, 5], "x": 5, "y": 0}, - {"matrix": [0, 6], "x": 6, "y": 0}, - {"matrix": [0, 7], "x": 7, "y": 0}, - {"matrix": [0, 8], "x": 8, "y": 0}, - {"matrix": [0, 9], "x": 9, "y": 0}, - {"matrix": [0, 10], "x": 10, "y": 0}, - {"matrix": [0, 11], "x": 11, "y": 0}, - {"matrix": [0, 12], "x": 12, "y": 0}, - - {"matrix": [1, 0], "x": 0, "y": 1}, - {"matrix": [1, 1], "x": 1, "y": 1}, - {"matrix": [1, 2], "x": 2, "y": 1}, - {"matrix": [1, 3], "x": 3, "y": 1}, - {"matrix": [1, 4], "x": 4, "y": 1}, - {"matrix": [1, 5], "x": 5, "y": 1}, - {"matrix": [1, 6], "x": 6, "y": 1}, - {"matrix": [1, 7], "x": 7, "y": 1}, - {"matrix": [1, 8], "x": 8, "y": 1}, - {"matrix": [1, 9], "x": 9, "y": 1}, - {"matrix": [1, 10], "x": 10, "y": 1}, - {"matrix": [1, 11], "x": 11, "y": 1}, - {"matrix": [1, 12], "x": 12, "y": 1}, - - {"matrix": [2, 0], "x": 0, "y": 2}, - {"matrix": [2, 1], "x": 1, "y": 2}, - {"matrix": [2, 2], "x": 2, "y": 2}, - {"matrix": [2, 3], "x": 3, "y": 2}, - {"matrix": [2, 4], "x": 4, "y": 2}, - {"matrix": [2, 5], "x": 5, "y": 2}, - {"matrix": [2, 6], "x": 6, "y": 2}, - {"matrix": [2, 7], "x": 7, "y": 2}, - {"matrix": [2, 8], "x": 8, "y": 2}, - {"matrix": [2, 9], "x": 9, "y": 2}, - {"matrix": [2, 10], "x": 10, "y": 2}, - {"matrix": [2, 11], "x": 11, "y": 2}, - {"matrix": [2, 12], "x": 12, "y": 2}, - - {"matrix": [3, 0], "x": 0, "y": 3}, - {"matrix": [3, 1], "x": 1, "y": 3}, - {"matrix": [3, 2], "x": 2, "y": 3}, - {"matrix": [3, 3], "x": 3, "y": 3}, - {"matrix": [3, 4], "x": 4, "y": 3}, - {"matrix": [3, 5], "x": 5, "y": 3}, - {"matrix": [3, 6], "x": 6, "y": 3}, - {"matrix": [3, 7], "x": 7, "y": 3}, - {"matrix": [3, 8], "x": 8, "y": 3}, - {"matrix": [3, 9], "x": 9, "y": 3}, - {"matrix": [3, 10], "x": 10, "y": 3}, - {"matrix": [3, 11], "x": 11, "y": 3}, - {"matrix": [3, 12], "x": 12, "y": 3}, - - {"matrix": [4, 0], "x": 0, "y": 4}, - {"matrix": [4, 1], "x": 1, "y": 4}, - {"matrix": [4, 2], "x": 2, "y": 4}, - {"matrix": [4, 3], "x": 3, "y": 4}, - {"matrix": [4, 4], "x": 4, "y": 4}, - {"matrix": [4, 5], "x": 5, "y": 4}, - {"matrix": [4, 6], "x": 6, "y": 4}, - {"matrix": [4, 7], "x": 7, "y": 4}, - {"matrix": [4, 8], "x": 8, "y": 4}, - {"matrix": [4, 9], "x": 9, "y": 4}, - {"matrix": [4, 10], "x": 10, "y": 4}, - {"matrix": [4, 11], "x": 11, "y": 4}, - {"matrix": [4, 12], "x": 12, "y": 4} - ] - } - } -} diff --git a/keyboards/mlego/m65/keymaps/default/config.h b/keyboards/mlego/m65/keymaps/default/config.h index 637c0a8faf01..dba9c658aed4 100644 --- a/keyboards/mlego/m65/keymaps/default/config.h +++ b/keyboards/mlego/m65/keymaps/default/config.h @@ -1,19 +1,5 @@ -/* -Copyright 2021-2022 Alin M Elena - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ +// Copyright 2020-2023 alin m elena (@alinelena) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once diff --git a/keyboards/mlego/m65/keymaps/default/keymap.c b/keyboards/mlego/m65/keymaps/default/keymap.c index 00e144e22191..d7421f659c9f 100644 --- a/keyboards/mlego/m65/keymaps/default/keymap.c +++ b/keyboards/mlego/m65/keymaps/default/keymap.c @@ -1,19 +1,5 @@ -/* -Copyright 2021-2022 Alin M Elena - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ +// Copyright 2020-2023 alin m elena (@alinelena) +// SPDX-License-Identifier: GPL-2.0-or-later #include QMK_KEYBOARD_H @@ -51,69 +37,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; // clang-format on -bool led_update_user(led_t led_state) { - // Disable the default LED update code, so that lock LEDs could be reused to show layer status. - return false; -} - -void matrix_scan_user(void) { - - toggle_leds(); - -} - -bool process_record_user(uint16_t keycode, keyrecord_t* record) { - switch (keycode) { - case (TT(_LWR)): - if (!record->event.pressed && record->tap.count == TAPPING_TOGGLE) { - // This runs before the TT() handler toggles the layer state, so the current layer state is the opposite of the final one after toggle. - set_led_toggle(_LWR, !layer_state_is(_LWR)); - } - return true; - break; - case (TT(_RSE)): - if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) { - set_led_toggle(_RSE, !layer_state_is(_RSE)); - } - return true; - break; - default: - return true; - } -} - -layer_state_t layer_state_set_user(layer_state_t state) { - -#ifdef RGBLIGHT_ENABLE - - set_rgb_layers(state); - +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [_QW] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, +#if defined(RGBLIGHT_ENABLE) + [_LWR] = {ENCODER_CCW_CW(RGB_HUD, RGB_HUI)}, + [_RSE] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}, + [_ADJ] = {ENCODER_CCW_CW(RGB_RMOD, RGB_MOD)}, +# else + [_LWR] = {ENCODER_CCW_CW(KC_MNXT, KC_MPRV)}, + [_RSE] = {ENCODER_CCW_CW(KC_MFFD, KC_MRWD)}, + [_ADJ] = {ENCODER_CCW_CW(KC_PGDN, KC_PGUP)}, #endif - - return update_tri_layer_state(state, _LWR, _RSE, _ADJ); -} - -#ifdef RGBLIGHT_ENABLE - -layer_state_t default_layer_state_set_user(layer_state_t state) { - set_default_rgb_layers(state); - return state; -} - -#endif - -void keyboard_post_init_user(void) { - -#ifdef RGBLIGHT_ENABLE - - // Enable the LED layers - rgblight_layers = my_rgb(); - -#endif - -#ifdef OLED_ENABLE - - init_timer(); - +}; #endif -} diff --git a/keyboards/mlego/m65/keymaps/default/rules.mk b/keyboards/mlego/m65/keymaps/default/rules.mk new file mode 100644 index 000000000000..ee325681483f --- /dev/null +++ b/keyboards/mlego/m65/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/mlego/m65/keymaps/dk/config.h b/keyboards/mlego/m65/keymaps/dk/config.h deleted file mode 100644 index 637c0a8faf01..000000000000 --- a/keyboards/mlego/m65/keymaps/dk/config.h +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright 2021-2022 Alin M Elena - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#define TAPPING_TOGGLE 2 diff --git a/keyboards/mlego/m65/keymaps/dk/keymap.c b/keyboards/mlego/m65/keymaps/dk/keymap.c deleted file mode 100644 index 2bf20bf2f601..000000000000 --- a/keyboards/mlego/m65/keymaps/dk/keymap.c +++ /dev/null @@ -1,121 +0,0 @@ -/* -Copyright 2021-2022 Alin M Elena - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#include QMK_KEYBOARD_H -#include "keymap_danish.h" - -// clang-format off -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_QW] = LAYOUT_ortho_5x13( - KC_ESC, DK_1 , DK_2 , DK_3 , DK_4 , DK_5 , DK_6 , DK_7 , DK_8 , DK_9 , DK_0 , DK_PLUS, KC_BSPC , - KC_TAB, DK_Q , DK_W , DK_E , DK_R , DK_T , DK_Y , DK_U , DK_I , DK_O , DK_P , DK_ARNG, DK_DIAE , - DK_QUOT, DK_A , DK_S , DK_D , DK_F , DK_G , DK_H , DK_J , DK_K , DK_L , DK_AE , DK_OSTR, KC_ENT , - SC_LSPO, DK_LABK, DK_Z , DK_X , DK_C , DK_V , DK_B , DK_N , DK_M , DK_COMM, DK_DOT , KC_UP , DK_MINS , - KC_LCTL, KC_LGUI, TT(_LWR), KC_LALT, TT(_RSE), KC_SPC, KC_SPC, KC_SPC, KC_RALT, SC_RSPC, KC_LEFT, KC_DOWN, KC_RGHT), - - [_LWR] = LAYOUT_ortho_5x13( - DK_HALF, KC_MUTE, KC_VOLU, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, G(KC_P), KC_SLEP, KC_WAKE, KC_PSCR, KC_DEL , DK_ACUT , - KC_BTN3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , - KC_BTN2, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , - _______, KC_BTN1, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_U, _______ , - _______, KC_BTN4, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R), - - [_RSE] = LAYOUT_ortho_5x13( - KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , - KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_U, _______ , - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_L, KC_WH_D, KC_WH_R), - - [_ADJ] = LAYOUT_ortho_5x13( - RGB_MOD,RGB_RMOD, A(KC_F2), _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_T, RGB_M_SW , - RGB_HUI, RGB_HUD, RGB_M_P , _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, RGB_M_SN , - RGB_SAI, RGB_SAD, RGB_M_B , _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_K , - RGB_VAI, RGB_VAD, RGB_M_R , _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_X , - RGB_TOG, _______, _______ , _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_TW, RGB_M_G), - -}; -// clang-format on - -bool led_update_user(led_t led_state) { - // Disable the default LED update code, so that lock LEDs could be reused to show layer status. - return false; -} - -void matrix_scan_user(void) { - - toggle_leds(); - -} - -bool process_record_user(uint16_t keycode, keyrecord_t* record) { - switch (keycode) { - case (TT(_LWR)): - if (!record->event.pressed && record->tap.count == TAPPING_TOGGLE) { - // This runs before the TT() handler toggles the layer state, so the current layer state is the opposite of the final one after toggle. - set_led_toggle(_LWR, !layer_state_is(_LWR)); - } - return true; - break; - case (TT(_RSE)): - if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) { - set_led_toggle(_RSE, !layer_state_is(_RSE)); - } - return true; - break; - default: - return true; - } -} - -layer_state_t layer_state_set_user(layer_state_t state) { - -#ifdef RGBLIGHT_ENABLE - - set_rgb_layers(state); - -#endif - - return update_tri_layer_state(state, _LWR, _RSE, _ADJ); -} - -#ifdef RGBLIGHT_ENABLE - -layer_state_t default_layer_state_set_user(layer_state_t state) { - set_default_rgb_layers(state); - return state; -} - -#endif - -void keyboard_post_init_user(void) { - -#ifdef RGBLIGHT_ENABLE - - // Enable the LED layers - rgblight_layers = my_rgb(); - -#endif - -#ifdef OLED_ENABLE - - init_timer(); - -#endif - -} diff --git a/keyboards/mlego/m65/keymaps/dk/readme.md b/keyboards/mlego/m65/keymaps/dk/readme.md deleted file mode 100644 index 76ecd8c1397b..000000000000 --- a/keyboards/mlego/m65/keymaps/dk/readme.md +++ /dev/null @@ -1,13 +0,0 @@ -![M65 Layout Image](https://i.imgur.com/RQqsM4gh.png) - -# Default M65 Layout - -This is the Danish keymap for M65. For the most part it's a straightforward and easy to follow layout inspired by ISO with a DK -turn. The only unusual key is the key in the upper left, which sends Escape normally, but Grave when in layer 1 aka LWR. Similarly -number row in layer 1 give the usual audio KC_GRV, KC_AUDIO_MUTE, KC_AUDIO_VOL_UP, KC_AUDIO_VOL_DOWN, KC_MEDIA_PREV_TRACK, -KC_MEDIA_PLAY_PAUSE, KC_MEDIA_NEXT_TRACK, M_EXTDISP, KC_SYSTEM_SLEEP, KC_SYSTEM_WAKE, KC_PRINT_SCREEN, KC_DEL, DK_ACUT in layer 2 aka -RSE one gets F1-F12 mouse emulation can be used in layer 1 and 2. - -flashing is done by LWR+RSE+r - -full layout below see in keymap.c diff --git a/keyboards/mlego/m65/keymaps/uk/config.h b/keyboards/mlego/m65/keymaps/uk/config.h index b0c6cfd639f4..c1f9816c991b 100644 --- a/keyboards/mlego/m65/keymaps/uk/config.h +++ b/keyboards/mlego/m65/keymaps/uk/config.h @@ -1,29 +1,14 @@ -/* -Copyright 2021-2022 Alin M Elena - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ +// Copyright 2020-2023 alin m elena (@alinelena) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once #define TAPPING_TOGGLE 2 -#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX -//#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX, UNICODE_MODE_MACOS, UNICODE_MODE_WINCOMPOSE +#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX, UNICODE_MODE_MACOS, UNICODE_MODE_WINDOWS, UNICODE_MODE_WINCOMPOSE #ifdef WPM_ENABLE -#define WPM_SAMPLE_SECONDS 10 -#define WPM_SAMPLE_PERIODS 100 -#define WPM_ALLOW_COUNT_REGRESSION +# define WPM_SAMPLE_SECONDS 10 +# define WPM_SAMPLE_PERIODS 100 +# define WPM_ALLOW_COUNT_REGRESSION #endif diff --git a/keyboards/mlego/m65/keymaps/uk/keymap.c b/keyboards/mlego/m65/keymaps/uk/keymap.c index ee4887243316..e021756cdd7b 100644 --- a/keyboards/mlego/m65/keymaps/uk/keymap.c +++ b/keyboards/mlego/m65/keymaps/uk/keymap.c @@ -1,106 +1,101 @@ -/* -Copyright 2021-2022 Alin M Elena - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ +// Copyright 2020-2023 alin m elena (@alinelena) +// SPDX-License-Identifier: GPL-2.0-or-later #include QMK_KEYBOARD_H #include "keymap_uk.h" -#ifdef CONSOLE_ENABLE - -#include "print.h" - -#endif - const uint32_t unicode_map[] PROGMEM = { - [la] = 0x03B1 , // α - [lA] = 0x0391 , // Α - [lb] = 0x03B2 , // β - [lB] = 0x0392 , // Β - [lc] = 0x03C7 , // χ - [lC] = 0x0307 , // - [ld] = 0x03B4 , // δ - [lD] = 0x2202 , // ∂ - [le] = 0x03B5 , // ε - [lE] = 0x2107 , // ℇ - [lf] = 0x03C6 , // φ - [lF] = 0x03C8 , // ψ - [lg] = 0x03B3 , // γ - [lG] = 0x0393 , // Γ - [lh] = 0x210F , // ℏ - [lH] = 0x1D4D7, // 𝓗 - [li] = 0x222B , // ∫ - [lI] = 0x222E , // ∮ - [lj] = 0x2208 , // ∈ - [lJ] = 0x2209 , // ∉ - [lk] = 0x03F0 , // ϰ - [lK] = 0x2206 , // ∆ - [ll] = 0x03BB , // λ - [lL] = 0x039B , // Λ - [lm] = 0x03BC , // μ - [lM] = 0x2218 , // ∘ - [ln] = 0x03B7 , // η - [lN] = 0x222A , // ∪ - [lo] = 0x221E , // ∞ - [lO] = 0x2297 , // ⊗ - [lp] = 0x03C0 , // π - [lP] = 0x220F , // ∏ - [lq] = 0x03C3 , // σ - [lQ] = 0x03D5 , // ϕ - [lr] = 0x03C1 , // ρ - [lR] = 0x2207 , // ∇ - [ls] = 0x2211 , // ∑ - [lS] = 0x2A0B , // ⨋ - [lt] = 0x03D1 , // ϑ - [lT] = 0x03B8 , // θ - [lu] = 0x03C4 , // τ - [lU] = 0x2102 , // ℂ - [lv] = 0x03BD , // χ - [lV] = 0x039D , // Ν - [lw] = 0x03C9 , // ω - [lW] = 0x03A9 , // Ω - [lx] = 0x03BE , // ξ - [lX] = 0x039E , // Ξ - [ly] = 0x211d , // ℝ - [lY] = 0x2124 , // ℤ - [lz] = 0x03B6 , // ζ - [lZ] = 0x2221 , // ∡ - [lc1] = 0x224A , // ≊ - [lC1] = 0x2248 , // ≈ - [lp1] = 0x00B1 , // ± - [lP1] = 0x2213 , // ∓ - [lq1] = 0x00D7 , // × - [lQ1] = 0x22C5 , // ⋅ - [ll1] = 0x1D53C, // 𝔼 - [lL1] = 0x212b , // Å - [lk1] = 0x221D , // ∝ - [lK1] = 0x2112 , // ℒ - [ra] = 0x0103 , // ă - [rA] = 0x0102 , // Ă - [ra1] = 0x00E2 , // â - [rA1] = 0x00C2 , // Â - [rc] = 0x00E7 , // ç - [rC] = 0x00C7 , // Ç - [ri] = 0x00EE , // î - [rI] = 0x00CE , // Î - [rs] = 0x0219 , // ș - [rS] = 0x0218 , // Ș - [rt] = 0x021B , // ț - [rT] = 0x021A , // Ț + [la] = 0x03B1, // α + [lA] = 0x0307, // + [lb] = 0x03B2, // β + [lB] = 0x2229, // ∩ + [lc] = 0x03C7, // χ + [lC] = 0x2282, // ⊂ + [ld] = 0x03B4, // δ + [lD] = 0x2202, // ∂ + [le] = 0x03B5, // ε + [lE] = 0x2107, // ℇ + [lf] = 0x03C6, // φ + [lF] = 0x03C8, // ψ + [lg] = 0x03B3, // γ + [lG] = 0x0393, // Γ + [lh] = 0x210F, // ℏ + [lH] = 0x1D4D7, // 𝓗 + [li] = 0x222B, // ∫ + [lI] = 0x222E, // ∮ + [lj] = 0x2208, // ∈ + [lJ] = 0x2209, // ∉ + [lk] = 0x03F0, // ϰ + [lK] = 0x2206, // ∆ + [ll] = 0x03BB, // λ + [lL] = 0x039B, // Λ + [lm] = 0x03BC, // μ + [lM] = 0x2218, // ∘ + [ln] = 0x03B7, // η + [lN] = 0x222A, // ∪ + [lo] = 0x221E, // ∞ + [lO] = 0x2297, // ⊗ + [lp] = 0x03C0, // π + [lP] = 0x220F, // ∏ + [lq] = 0x03C3, // σ + [lQ] = 0x03D5, // ϕ + [lr] = 0x03C1, // ρ + [lR] = 0x2207, // ∇ + [ls] = 0x2211, // ∑ + [lS] = 0x2A0B, // ⨋ + [lt] = 0x03D1, // ϑ + [lT] = 0x03B8, // θ + [lu] = 0x03C4, // τ + [lU] = 0x2102, // ℂ + [lv] = 0x03BD, // χ + [lV] = 0x2283, // ⊃ + [lw] = 0x03C9, // ω + [lW] = 0x03A9, // Ω + [lx] = 0x03BE, // ξ + [lX] = 0x039E, // Ξ + [ly] = 0x211d, // ℝ + [lY] = 0x2124, // ℤ + [lz] = 0x03B6, // ζ + [lZ] = 0x2221, // ∡ + [lc1] = 0x2248, // ≈ + [lC1] = 0x2249, // ≉ + [lp1] = 0x00B1, // ± + [lP1] = 0x2213, // ∓ + [lq1] = 0x00D7, // × + [lQ1] = 0x22C5, // ⋅ + [ll1] = 0x1D53C, // 𝔼 + [lL1] = 0x212b, // Å + [lk1] = 0x221D, // ∝ + [lK1] = 0x2112, // ℒ + [lbo1] = 0x22DC, // ⋜ + [lbo2] = 0x2260, // ≠ + [lbc1] = 0x22DD, // ⋝ + [lbc2] = 0x2245, // ≅ + [ls1] = 0x2261, // ≡ + [ls2] = 0x2262, // ≢ + [ra] = 0x0103, // ă + [rA] = 0x0102, // Ă + [ra1] = 0x00E2, // â + [rA1] = 0x00C2, // Â + [rx] = 0x00E7, // ç + [rX] = 0x00C7, // Ç + [ri] = 0x00EE, // î + [rI] = 0x00CE, // Î + [rs] = 0x0219, // ș⊄ + [rS] = 0x0218, // Ș + [rt] = 0x021B, // ț + [rT] = 0x021A, // Ț + [rc] = 0x2284, // ⊄ + [rC] = 0x2286, // ⊆ + [rv] = 0x2285, // ⊅ + [rV] = 0x2287, // ⊇ + [rb] = 0x2227, // ∧ + [rB] = 0x22BC, // ⊼ + [rn] = 0x2228, // ∨ + [rN] = 0x22BB, // ⊻ }; + // clang-format off const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* @@ -161,29 +156,29 @@ altgr shift symbols KC_LCTL, KC_LGUI, TT(_LWR), KC_LALT, TT(_RSE), KC_SPC, KC_SPC, KC_SPC, KC_RALT, SC_RSPC, KC_LEFT, KC_DOWN, KC_RGHT), /* -lower layer +raise layer * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ * │ ` │MUT│Vup│Vdn│prv│ply│nxt│EXT│SLP│WAK│PSC│ ⌫ │ = │ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ - * │ │ σ │ ω │ ε │ ρ │ ϑ │ ℝ │ τ │ ∫ │ ∞ │ π │ [ │ ] │ + * │ │ σ │ ω │ ε │ ρ │ ϑ │ ℝ │ τ │ ∫ │ ∞ │ π │ ⋜ │ ⋝ │ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ * │ │ α │ ∑ │ δ │ φ │ γ │ ℏ │ ∈ │ ϰ │ λ │ 𝔼 │ ∝ │ ⏎ │ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ - * │ ⇧(│ │ ζ │ ξ │ χ │ ν │ β │ η │ μ │ ≊ │ ± │ │ × │ + * │ ⇧(│ ≡ │ ζ │ ξ │ χ │ ν │ β │ η │ μ │ ≈ │ ± │ │ × │ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ - * │ ⎈ │ │lwr│⎇ │rse│ │ │ │⎇ │ ⇧)│ │ │ │ + * │ │ │lwr│⎇ │rse│ │ │ │⎇ │ ⇧)│ │ │ │ * └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘ -lower layer shifted +raise layer shifted * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ - * │ ¬ │ │ │ │ │ │ │ │ │ │ │ ⌫ │ = │ + * │ ¬ │ │ │ │ │ │ │ │ │ │ │ ⌫ │ + │ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ - * │MB3│ ϕ │ Ω │ ℇ │ ∇ │ θ │ ℤ │ ℂ │ ∮ │ ⊗ │ ∏ │ { │ } │ + * │MB3│ ϕ │ Ω │ ℇ │ ∇ │ θ │ ℤ │ ℂ │ ∮ │ ⊗ │ ∏ │ ≠ │ ≅ │ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ - * │MB2│ Α │ ⨋ │ ∂ │ ψ │ Γ │ 𝓗 │ ∉ │ ∆ │ Λ │ Å │ ℒ │ ⏎ │ + * │MB2│ ̇ │ ⨋ │ ∂ │ ψ │ Γ │ 𝓗 │ ∉ │ ∆ │ Λ │ Å │ ℒ │ ⏎ │ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ - * │ ⇧(│MB1│ ∡ │ Ξ │ ̇ │ Ν │ Β │ ∪ │ ∘ │ ≈ │ ∓ │MSU│ ⋅ │ + * │ ⇧(│ ≢ │ ∡ │ Ξ │ ⊂ │ ⊃ │ ∩ │ ∪ │ ∘ │ ≉ │ ∓ │MSU│ ⋅ │ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ - * │ ⎈ │MB4│lwr│⎇ │rse│ │ │ │⎇ │ ⇧)│MSL│MSD│MSR│ + * │MB1│MB4│lwr│⎇ │rse│ │ │ │⎇ │ ⇧)│MSL│MSD│MSR│ * └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘ MB - mouse buttons MS - mouse directions @@ -196,7 +191,7 @@ MS - mouse directions _______, KC_BTN4, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R), /* -raise layer +lower layer * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐ * │ ⎋ │ F1│ F2│ F3│ F4│ F5│ F6│ F7│ F8│ F9│F10│F11│F12│ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ @@ -204,7 +199,7 @@ raise layer * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ * │ ⇪ │ ă │ ș │ │ │ │ │ │ │ │ │ │ │ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ - * │ │ │ │ │ ç │ │ │ │ │ │ │MWU│ │ + * │ │ │ │ ç │ ⊄ │ ⊅ │ ∧ │ ∨ │ │ │ │MWU│ │ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ * │ │ │ │ │ │ │ │ │ │ │MWL│MWD│MWR│ * └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘ @@ -217,7 +212,7 @@ raise layer shifted * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ * │ │ Ă │ Ș │ │ │ │ │ │ │ │ │ │ │ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ - * │ │ │ │ │ Ç │ │ │ │ │ │ │ │ │ + * │ │ │ │ Ç │ ⊆ │ ⊇ │ ⊼ │ ⊻ │ │ │ │ │ │ * ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ * │ │ │ │ │ │ │ │ │ │ │ │ │ │ * └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘ @@ -245,90 +240,23 @@ adj layer [_ADJ] = LAYOUT_ortho_5x13( RGB_MOD, RGB_RMOD, A(KC_F2), _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_T , RGB_M_SW, RGB_HUI, RGB_HUD , RGB_M_P , _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______ , RGB_M_SN, - RGB_SAI, RGB_SAD , RGB_M_B , _______, _______, _______, _______, _______, _______, _______, _______, _______ , RGB_M_K , - RGB_VAI, RGB_VAD , RGB_M_R , _______, _______, _______, _______, _______, _______, _______, _______, _______ , RGB_M_X , + RGB_SAI, RGB_SAD , RGB_M_B , _______, UC_NEXT, _______, _______, _______, _______, _______, _______, _______ , RGB_M_K , + RGB_VAI, RGB_VAD , RGB_M_R , _______, UC_PREV, UC_LINX, UC_WIN, UC_WINC, UC_MAC, UC_EMAC, _______, _______ , RGB_M_X , RGB_TOG, _______ , _______ , _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_TW, RGB_M_G), }; // clang-format on -bool led_update_user(led_t led_state) { - // Disable the default LED update code, so that lock LEDs could be reused to show layer status. - return false; -} - -void matrix_scan_user(void) { - - toggle_leds(); - -} - -bool process_record_user(uint16_t keycode, keyrecord_t* record) { - -#ifdef CONSOLE_ENABLE - - uprintf("KL: kc: 0x%04X, col: %u, row: %u, pressed: %b, time: %u, interrupt: %b, count: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.time, record->tap.interrupted, record->tap.count); - -#endif - - switch (keycode) { - case (TT(_LWR)): - if (!record->event.pressed && record->tap.count == TAPPING_TOGGLE) { - // This runs before the TT() handler toggles the layer state, so the current layer state is the opposite of the final one after toggle. - set_led_toggle(_LWR, !layer_state_is(_LWR)); - } - return true; - break; - case (TT(_RSE)): - if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) { - set_led_toggle(_RSE, !layer_state_is(_RSE)); - } - return true; - break; - default: - return true; - } -} - -layer_state_t layer_state_set_user(layer_state_t state) { - -#ifdef RGBLIGHT_ENABLE - - set_rgb_layers(state); - -#endif - - return update_tri_layer_state(state, _LWR, _RSE, _ADJ); -} - -#ifdef RGBLIGHT_ENABLE - -layer_state_t default_layer_state_set_user(layer_state_t state) { - - set_default_rgb_layers(state); - return state; -} - +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [_QW] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, +#if defined(RGBLIGHT_ENABLE) + [_LWR] = {ENCODER_CCW_CW(RGB_HUD, RGB_HUI)}, + [_RSE] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)}, + [_ADJ] = {ENCODER_CCW_CW(RGB_RMOD, RGB_MOD)}, +#else + [_LWR] = {ENCODER_CCW_CW(KC_MNXT, KC_MPRV)}, + [_RSE] = {ENCODER_CCW_CW(KC_MFFD, KC_MRWD)}, + [_ADJ] = {ENCODER_CCW_CW(KC_PGDN, KC_PGUP)}, #endif - -void keyboard_post_init_user(void) { -#ifdef RGBLIGHT_ENABLE - - // Enable the LED layers - rgblight_layers = my_rgb(); - -#endif - -#ifdef OLED_ENABLE - - init_timer(); - -#endif - -#ifdef CONSOLE_ENABLE - - debug_enable = true; - debug_matrix = true; - debug_keyboard = true; - +}; #endif -} diff --git a/keyboards/mlego/m65/keymaps/uk/rules.mk b/keyboards/mlego/m65/keymaps/uk/rules.mk index 502b2def7623..846f3443f6b6 100644 --- a/keyboards/mlego/m65/keymaps/uk/rules.mk +++ b/keyboards/mlego/m65/keymaps/uk/rules.mk @@ -1 +1,2 @@ UNICODEMAP_ENABLE = yes +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/mlego/m65/keymaps/via/config.h b/keyboards/mlego/m65/keymaps/via/config.h deleted file mode 100644 index 637c0a8faf01..000000000000 --- a/keyboards/mlego/m65/keymaps/via/config.h +++ /dev/null @@ -1,20 +0,0 @@ -/* -Copyright 2021-2022 Alin M Elena - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#pragma once - -#define TAPPING_TOGGLE 2 diff --git a/keyboards/mlego/m65/keymaps/via/keymap.c b/keyboards/mlego/m65/keymaps/via/keymap.c deleted file mode 100644 index bfdcacc03996..000000000000 --- a/keyboards/mlego/m65/keymaps/via/keymap.c +++ /dev/null @@ -1,118 +0,0 @@ -/* -Copyright 2021-2022 Alin M Elena - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#include QMK_KEYBOARD_H - -// clang-format off -const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - - [_QW] = LAYOUT_ortho_5x13( - KC_ESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_BSPC , - KC_TAB, KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC , - KC_NUHS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_ENT , - SC_LSPO, KC_NUBS, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_UP , KC_SLSH , - KC_LCTL, KC_LGUI, TT(_LWR), KC_LALT, TT(_RSE), KC_SPC, KC_SPC, KC_SPC, KC_RALT, SC_RSPC, KC_LEFT, KC_DOWN, KC_RGHT), - - [_LWR] = LAYOUT_ortho_5x13( - KC_GRV , KC_MUTE, KC_VOLU, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, G(KC_P), KC_SLEP, KC_WAKE, KC_PSCR, KC_DEL , KC_EQL , - KC_BTN3, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , - KC_BTN2, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , - _______, KC_BTN1, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_U, _______ , - _______, KC_BTN4, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R), - - [_RSE] = LAYOUT_ortho_5x13( - KC_ESC , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , - KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ , - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_U, _______ , - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WH_L, KC_WH_D, KC_WH_R), - - [_ADJ] = LAYOUT_ortho_5x13( - RGB_MOD, RGB_RMOD, A(KC_F2), _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_T , RGB_M_SW, - RGB_HUI, RGB_HUD , RGB_M_P , _______, QK_BOOT , _______, _______, _______, _______, _______, _______, _______ , RGB_M_SN, - RGB_SAI, RGB_SAD , RGB_M_B , _______, _______, _______, _______, _______, _______, _______, _______, _______ , RGB_M_K , - RGB_VAI, RGB_VAD , RGB_M_R , _______, _______, _______, _______, _______, _______, _______, _______, _______ , RGB_M_X , - RGB_TOG, _______ , _______ , _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_TW, RGB_M_G), -}; -// clang-format on - -bool led_update_user(led_t led_state) { - // Disable the default LED update code, so that lock LEDs could be reused to show layer status. - return false; -} - -void matrix_scan_user(void) { - - toggle_leds(); - -} - -bool process_record_user(uint16_t keycode, keyrecord_t* record) { - switch (keycode) { - case (TT(_LWR)): - if (!record->event.pressed && record->tap.count == TAPPING_TOGGLE) { - // This runs before the TT() handler toggles the layer state, so the current layer state is the opposite of the final one after toggle. - set_led_toggle(_LWR, !layer_state_is(_LWR)); - } - return true; - break; - case (TT(_RSE)): - if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) { - set_led_toggle(_RSE, !layer_state_is(_RSE)); - } - return true; - break; - default: - return true; - } -} - -layer_state_t layer_state_set_user(layer_state_t state) { - -#ifdef RGBLIGHT_ENABLE - - set_rgb_layers(state); - -#endif - - return update_tri_layer_state(state, _LWR, _RSE, _ADJ); -} - -#ifdef RGBLIGHT_ENABLE - -layer_state_t default_layer_state_set_user(layer_state_t state) { - set_default_rgb_layers(state); - return state; -} - -#endif - -void keyboard_post_init_user(void) { - -#ifdef RGBLIGHT_ENABLE - - // Enable the LED layers - rgblight_layers = my_rgb(); - -#endif - -#ifdef OLED_ENABLE - - init_timer(); - -#endif -} diff --git a/keyboards/mlego/m65/keymaps/via/rules.mk b/keyboards/mlego/m65/keymaps/via/rules.mk deleted file mode 100644 index 1e5b99807cb7..000000000000 --- a/keyboards/mlego/m65/keymaps/via/rules.mk +++ /dev/null @@ -1 +0,0 @@ -VIA_ENABLE = yes diff --git a/keyboards/mlego/m65/lib/glcdfont.c b/keyboards/mlego/m65/lib/glcdfont.c index 4b354756b609..3f64f032cfde 100644 --- a/keyboards/mlego/m65/lib/glcdfont.c +++ b/keyboards/mlego/m65/lib/glcdfont.c @@ -4,228 +4,13 @@ #include "progmem.h" static const unsigned char PROGMEM font[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, - 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, - 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, - 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, - 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, - 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, - 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, - 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, - 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, - 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, - 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, - 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, - 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, - 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, - 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, - 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, - 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, - 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, - 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, - 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, - 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, - 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, - 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, - 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, - 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, - 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, - 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, - 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, - 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, - 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, - 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, - 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, - 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, - 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, - 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, - 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, - 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, - 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, - 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, - 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, - 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, - 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, - 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, - 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, - 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, - 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, - 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, - 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, - 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, - 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, - 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, - 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, - 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, - 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, - 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, - 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, - 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, - 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, - 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, - 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, - 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, - 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, - 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, - 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, - 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, - 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, - 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, - 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, - 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, - 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, - 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, - 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, - 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, - 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, - 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, - 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, - 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, - 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, - 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, - 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, - 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, - 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, - 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, - 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, - 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, - 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, - 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, - 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, - 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, - 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, - 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, - 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, - 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, - 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, - 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, - 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, - 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, - 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, - 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00, - 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, - 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, - 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, - 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, - 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, - 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, - 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, - 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, - 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00, - 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00, - 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, - 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, - 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, - 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, - 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, - 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, - 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, - 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00, - 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, - 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, - 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, - 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, - 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, - 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xE0, 0x18, 0x02, - 0x00, 0x3C, 0x1E, 0x06, 0x0E, 0x0A, - 0x1A, 0x0E, 0x26, 0xFF, 0xBF, 0x0D, - 0x00, 0x80, 0x80, 0x81, 0xFF, 0xFE, - 0xF8, 0x01, 0x01, 0x03, 0x03, 0x03, - 0x03, 0x05, 0x05, 0x02, 0x02, 0x0A, - 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, - 0x0C, 0x04, 0x10, 0x18, 0x20, 0xC0, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xD0, 0x58, 0x78, - 0x68, 0x2C, 0x24, 0x34, 0xF4, 0xF4, - 0x3C, 0x3C, 0xFC, 0xF8, 0xF8, 0x70, - 0xF0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xC0, 0x7C, 0x07, 0x80, 0xE0, - 0x60, 0x64, 0xE2, 0x60, 0x10, 0x10, - 0x20, 0x22, 0x12, 0x17, 0x3F, 0x0B, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, - 0x6F, 0xFC, 0xE0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, - 0x60, 0x60, 0x70, 0x70, 0xF0, 0xF0, - 0xD0, 0xD0, 0xD0, 0xD0, 0x50, 0x50, - 0x50, 0x70, 0x78, 0x78, 0x78, 0x7C, - 0x7F, 0x7D, 0x7C, 0x5E, 0x4F, 0x44, - 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x38, 0x30, 0x30, 0x30, 0x30, - 0x30, 0x30, 0x58, 0x46, 0x47, 0x41, - 0x41, 0x01, 0x01, 0x03, 0x03, 0x42, - 0x42, 0x42, 0x46, 0x46, 0x46, 0x46, - 0x42, 0x43, 0x43, 0x73, 0x77, 0x72, - 0x70, 0x60, 0x60, 0x60, 0x60, 0x60, - 0x60, 0x61, 0x67, 0x6F, 0x7E, 0x78, - 0x78, 0x70, 0x70, 0x70, 0x70, 0x70, - 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, - 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, - 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, - 0x40, 0x40, 0x40, 0x48, 0x58, 0x58, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, + 0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, + 0x72, 0x49, 0x49, 0x49, 0x46, 0x00, 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, + 0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, 0x38, 0x44, 0x44, 0x44, 0x28, 0x00, + 0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, 0x18, 0x24, 0x24, 0x1C, 0x78, 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, 0x7C, 0x18, 0x24, 0x24, 0x18, 0x00, 0x18, 0x24, 0x24, 0x18, 0x7C, 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, + 0x00, 0x41, 0x36, 0x08, 0x00, 0x00, 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x18, 0x02, 0x00, 0x3C, 0x1E, 0x06, 0x0E, 0x0A, 0x1A, 0x0E, 0x26, 0xFF, 0xBF, 0x0D, 0x00, 0x80, 0x80, 0x81, 0xFF, 0xFE, 0xF8, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x05, 0x05, 0x02, 0x02, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0A, 0x0C, 0x04, 0x10, 0x18, 0x20, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x58, 0x78, 0x68, 0x2C, 0x24, 0x34, 0xF4, 0xF4, 0x3C, 0x3C, 0xFC, 0xF8, 0xF8, 0x70, 0xF0, 0xE0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x7C, 0x07, 0x80, 0xE0, 0x60, 0x64, 0xE2, 0x60, 0x10, 0x10, 0x20, 0x22, 0x12, 0x17, 0x3F, 0x0B, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x6F, 0xFC, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x60, 0x60, 0x70, 0x70, 0xF0, 0xF0, 0xD0, 0xD0, 0xD0, 0xD0, 0x50, 0x50, 0x50, 0x70, 0x78, 0x78, 0x78, 0x7C, 0x7F, 0x7D, 0x7C, 0x5E, 0x4F, 0x44, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x58, 0x46, 0x47, 0x41, 0x41, 0x01, 0x01, 0x03, 0x03, 0x42, 0x42, 0x42, 0x46, 0x46, 0x46, 0x46, 0x42, 0x43, 0x43, 0x73, 0x77, 0x72, 0x70, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x61, 0x67, 0x6F, 0x7E, 0x78, 0x78, 0x70, 0x70, 0x70, 0x70, 0x70, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x40, 0x40, 0x40, 0x48, 0x58, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; diff --git a/keyboards/mlego/m65/m65.c b/keyboards/mlego/m65/m65.c index 3f71a27790bc..12ea866f1e52 100644 --- a/keyboards/mlego/m65/m65.c +++ b/keyboards/mlego/m65/m65.c @@ -1,139 +1,74 @@ -/* -Copyright 2021-2022 Alin M Elena +// Copyright 2020-2023 alin m elena (@alinelena) +// SPDX-License-Identifier: GPL-2.0-or-later -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ - -#include "m65.h" +#include QMK_KEYBOARD_H // let us assume we start with both layers off static bool toggle_lwr = false; static bool toggle_rse = false; -#ifdef RGBLIGHT_ENABLE +#if defined(RGBLIGHT_ENABLE) -const rgblight_segment_t PROGMEM my_qwerty_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_PURPLE}); -const rgblight_segment_t PROGMEM my_lwr_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_CYAN}); -const rgblight_segment_t PROGMEM my_rse_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_RED}); -const rgblight_segment_t PROGMEM my_adj_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_GREEN}); +const rgblight_segment_t PROGMEM my_qwerty_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_OFF}); +const rgblight_segment_t PROGMEM my_lwr_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_AZURE}); +const rgblight_segment_t PROGMEM my_rse_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_CORAL}); +const rgblight_segment_t PROGMEM my_adj_layer[] = RGBLIGHT_LAYER_SEGMENTS({0, RGBLED_NUM, HSV_RED}); const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(my_qwerty_layer, my_lwr_layer, my_rse_layer, my_adj_layer); #endif -#ifdef OLED_ENABLE - -static uint32_t oled_logo_timer = 0; -static bool clear_logo = true; -static const char PROGMEM m65_logo[] = { - 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, - 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, - 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, - 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, - 0}; - +#if defined(OLED_ENABLE) +static uint32_t oled_logo_timer = 0; +static bool clear_logo = true; +static const char PROGMEM m65_logo[] = {0x92, 0x92, 0x93, 0x94, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x92, 0x92, 0x93, 0x94, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB2, 0x92, 0xB3, 0xB4, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0}; #endif -#ifdef RGBLIGHT_ENABLE - -void set_rgb_layers(layer_state_t state){ +#if defined(RGBLIGHT_ENABLE) +void set_rgb_layers(layer_state_t state) { rgblight_set_layer_state(0, layer_state_cmp(state, _QW)); rgblight_set_layer_state(1, layer_state_cmp(state, _LWR)); rgblight_set_layer_state(2, layer_state_cmp(state, _RSE)); rgblight_set_layer_state(3, layer_state_cmp(state, _ADJ)); - } -void set_default_rgb_layers(layer_state_t state){ +void set_default_rgb_layers(layer_state_t state) { rgblight_set_layer_state(0, layer_state_cmp(state, _QW)); } -const rgblight_segment_t * const* my_rgb(void){ +const rgblight_segment_t* const* my_rgb(void) { return my_rgb_layers; } #endif -void set_led_toggle(const uint8_t layer, const bool state){ - +void set_led_toggle(const uint8_t layer, const bool state) { switch (layer) { case _LWR: - toggle_lwr = state; - break; + toggle_lwr = state; + break; case _RSE: - toggle_rse = state; - break; + toggle_rse = state; + break; default: - break; + break; } } -void toggle_leds(void){ - +void toggle_leds(const bool toggle_lwr, const bool toggle_rse) { led_lwr(toggle_lwr); led_rse(toggle_rse); - led_t led_state = host_keyboard_led_state(); - led_caps(led_state.caps_lock); if (layer_state_is(_ADJ)) { led_lwr(true); led_rse(true); } - } -#ifdef ENCODER_ENABLE - -# define MEDIA_KEY_DELAY 10 +#if defined(OLED_ENABLE) -void my_encoders(const uint8_t index, const bool clockwise) { - if (index == 0) { /* First encoder */ - if (IS_LAYER_ON(_LWR)) { - if (clockwise) { - rgblight_decrease_val_noeeprom(); - } else { - rgblight_increase_val_noeeprom(); - } - } else if (IS_LAYER_ON(_RSE)) { - if (clockwise) { - rgblight_decrease_hue_noeeprom(); - } else { - rgblight_increase_hue_noeeprom(); - } - - } else { - if (clockwise) { - tap_code_delay(KC_VOLD, MEDIA_KEY_DELAY); - } else { - tap_code_delay(KC_VOLU, MEDIA_KEY_DELAY); - } - } - } -} - -bool encoder_update_kb(uint8_t index, bool clockwise) { - if (!encoder_update_user(index, clockwise)) { return false; } - my_encoders(index, clockwise); - return false; -} - -#endif - -#ifdef OLED_ENABLE - -void init_timer(void){ - oled_logo_timer = timer_read32(); +void init_timer(void) { + oled_logo_timer = timer_read32(); }; void user_oled_magic(void) { @@ -163,11 +98,38 @@ void user_oled_magic(void) { oled_write_P(led_state.num_lock ? PSTR("Lower ") : PSTR(" "), false); oled_write_P(led_state.scroll_lock ? PSTR("Raise ") : PSTR(" "), false); oled_write_P(led_state.caps_lock ? PSTR("CapsLock ") : PSTR(" "), false); -#ifdef WPM_ENABLE + +# if defined(UNICODE_COMMON_ENABLE) + oled_write_P(PSTR("\nunicode: "), false); + switch (get_unicode_input_mode()) { + case UNICODE_MODE_LINUX: + oled_write_P(PSTR("Linux"), false); + break; + case UNICODE_MODE_MACOS: + oled_write_P(PSTR("apple"), false); + break; + case UNICODE_MODE_WINDOWS: + oled_write_P(PSTR("windows"), false); + break; + case UNICODE_MODE_WINCOMPOSE: + oled_write_P(PSTR("windows c"), false); + break; + case UNICODE_MODE_BSD: + oled_write_P(PSTR("bsd"), false); + break; + case UNICODE_MODE_EMACS: + oled_write_P(PSTR("emacs"), false); + break; + default: + oled_write_ln_P(PSTR("not supported"), false); + } +# endif + +# if defined(WPM_ENABLE) oled_write_P(PSTR("\nwpm: "), false); uint8_t wpm = get_current_wpm(); - oled_write_P(wpm != 0 ? get_u8_str(wpm,' ') : PSTR(" "), false); -#endif + oled_write_P(wpm != 0 ? get_u8_str(wpm, ' ') : PSTR(" "), false); +# endif } void render_logo(void) { @@ -175,13 +137,13 @@ void render_logo(void) { } void clear_screen(void) { - if (clear_logo){ - for (uint8_t i = 0; i < OLED_DISPLAY_HEIGHT; ++i) { - for (uint8_t j = 0; j < OLED_DISPLAY_WIDTH; ++j) { - oled_write_raw_byte(0x0, i*OLED_DISPLAY_WIDTH + j); + if (clear_logo) { + for (uint8_t i = 0; i < OLED_DISPLAY_HEIGHT; ++i) { + for (uint8_t j = 0; j < OLED_DISPLAY_WIDTH; ++j) { + oled_write_raw_byte(0x0, i * OLED_DISPLAY_WIDTH + j); + } } - } - clear_logo = false; + clear_logo = false; } } @@ -191,14 +153,91 @@ oled_rotation_t oled_init_user(oled_rotation_t rotation) { # define SHOW_LOGO 5000 bool oled_task_kb(void) { - if (!oled_task_user()) { return false; } - if ((timer_elapsed32(oled_logo_timer) < SHOW_LOGO)){ + if (!oled_task_user()) { + return false; + } + if ((timer_elapsed32(oled_logo_timer) < SHOW_LOGO)) { render_logo(); - }else{ - clear_screen(); - user_oled_magic(); + } else { + clear_screen(); + user_oled_magic(); } return false; } #endif + +void matrix_scan_kb(void) { + matrix_scan_user(); + toggle_leds(toggle_lwr, toggle_rse); +} + +bool process_record_kb(uint16_t keycode, keyrecord_t* record) { +#if defined(CONSOLE_ENABLE) + uprintf("KL: kc: 0x%04X, col: %2u, row: %2u, pressed: %u, time: %5u, int: %u, count: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.time, record->tap.interrupted, record->tap.count); +#endif + + switch (keycode) { + case (TT(_LWR)): + if (!record->event.pressed && record->tap.count == TAPPING_TOGGLE) { + // This runs before the TT() handler toggles the layer state, so the current layer state is the opposite of the final one after toggle. + set_led_toggle(_LWR, !layer_state_is(_LWR)); + } + return true; + break; + case (TT(_RSE)): + if (record->event.pressed && record->tap.count == TAPPING_TOGGLE) { + set_led_toggle(_RSE, !layer_state_is(_RSE)); + } + return true; + break; + default: + return true; + } + return process_record_user(keycode, record); +} + +layer_state_t layer_state_set_kb(layer_state_t state) { + state = layer_state_set_user(state); + +#if defined(RGBLIGHT_ENABLE) + + set_rgb_layers(state); + +#endif + + return update_tri_layer_state(state, _LWR, _RSE, _ADJ); +} + +#if defined(RGBLIGHT_ENABLE) + +layer_state_t default_layer_state_set_kb(layer_state_t state) { + state = default_layer_state_set_user(state); + + set_default_rgb_layers(state); + + return state; +} + +#endif + +void keyboard_post_init_kb(void) { + init_lwr_rse_led(); + +#if defined(RGBLIGHT_ENABLE) + // Enable the LED layers + rgblight_layers = my_rgb(); +#endif + +#if defined(OLED_ENABLE) + init_timer(); +#endif + +#if defined(CONSOLE_ENABLE) + debug_enable = true; + debug_matrix = true; + debug_keyboard = true; +#endif + + keyboard_post_init_user(); +} diff --git a/keyboards/mlego/m65/m65.h b/keyboards/mlego/m65/m65.h index 0c3f3b5ba650..1c5589c1114a 100644 --- a/keyboards/mlego/m65/m65.h +++ b/keyboards/mlego/m65/m65.h @@ -1,154 +1,65 @@ -/* -Copyright 2021-2022 Alin M Elena - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ +// Copyright 2020-2023 alin m elena (@alinelena) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include "quantum.h" -enum unicode_names { - la = 0, - lA, - lb, - lB, - lc, - lC, - ld, - lD, - le, - lE, - lf, - lF, - lg, - lG, - lh, - lH, - li, - lI, - lj, - lJ, - lk, - lK, - ll, - lL, - lm, - lM, - ln, - lN, - lo, - lO, - lp, - lP, - lq, - lQ, - lr, - lR, - ls, - lS, - lt, - lT, - lu, - lU, - lv, - lV, - lw, - lW, - lx, - lX, - ly, - lY, - lz, - lZ, - lc1, - lC1, - lp1, - lP1, - lq1, - lQ1, - ll1, - lL1, - lk1, - lK1, - ra, - rA, - ra1, - rA1, - rc, - rC, - ri, - rI, - rs, - rS, - rt, - rT, - ro, - rO, - ra2, - rA2, - ra3, - rA3 -}; +#if defined(UNICODEMAP_ENABLE) +enum unicode_names { la = 0, lA, lb, lB, lc, lC, ld, lD, le, lE, lf, lF, lg, lG, lh, lH, li, lI, lj, lJ, lk, lK, ll, lL, lm, lM, ln, lN, lo, lO, lp, lP, lq, lQ, lr, lR, ls, lS, lt, lT, lu, lU, lv, lV, lw, lW, lx, lX, ly, lY, lz, lZ, lc1, lC1, lp1, lP1, lq1, lQ1, ll1, lL1, lk1, lK1, lbo1, lbo2, lbc1, lbc2, ls1, ls2, ra, rA, ra1, rA1, rc, rC, ri, rI, rs, rS, rt, rT, ro, rO, ra2, rA2, ra3, rA3, rx, rX, rv, rV, rb, rB, rn, rN }; +#endif +enum layer_names { _QW = 0, _LWR, _RSE, _ADJ }; -enum layer_names { - _QW = 0, - _LWR, - _RSE, - _ADJ -}; -#ifdef OLED_ENABLE +#if defined(OLED_ENABLE) void user_oled_magic(void); void render_logo(void); void clear_screen(void); void init_timer(void); #endif -#ifdef ENCODER_ENABLE -void my_encoders(const uint8_t, const bool); -bool encoder_update_user(uint8_t, bool); +#if defined(RGBLIGHT_ENABLE) +void set_rgb_layers(layer_state_t); +const rgblight_segment_t* const* my_rgb(void); +void set_default_rgb_layers(layer_state_t); #endif -#ifdef RGBLIGHT_ENABLE -void set_rgb_layers(layer_state_t); -const rgblight_segment_t * const* my_rgb(void); -void set_default_rgb_layers(layer_state_t); -#endif +void toggle_leds(const bool, const bool); +void set_led_toggle(const uint8_t, const bool); +static inline void init_lwr_rse_led(void) { +#if defined(LED_LWR_PIN) + setPinOutput(LED_LWR_PIN); + writePin(LED_LWR_PIN, false); + wait_ms(30); +#endif -void toggle_leds(void); -void set_led_toggle(const uint8_t, const bool); +#if defined(LED_RSE_PIN) + setPinOutput(LED_RSE_PIN); + writePin(LED_RSE_PIN, false); + wait_ms(30); +#endif +} static inline void led_lwr(const bool on) { -#ifdef LED_NUM_LOCK_PIN - writePin(LED_NUM_LOCK_PIN, on); +#if defined(LED_LWR_PIN) + if ((PRODUCT_ID == 0x6064) || (PRODUCT_ID == 0x6065) || + (PRODUCT_ID == 0x6066) || (PRODUCT_ID == 0x6067)) { + writePin(LED_LWR_PIN, !on); + }else{ + writePin(LED_LWR_PIN, on); + } #endif } static inline void led_rse(const bool on) { -#ifdef LED_SCROLL_LOCK_PIN - writePin(LED_SCROLL_LOCK_PIN, on); -#endif -} -static inline void led_caps(const bool on) { -#ifdef LED_CAPS_LOCK_PIN - if ((PRODUCT_ID == 0x6061) && (DEVICE_VER == 0x0002)) { - writePin(LED_CAPS_LOCK_PIN, on); - } else { - writePin(LED_CAPS_LOCK_PIN, !on); +#if defined(LED_RSE_PIN) + if ((PRODUCT_ID == 0x6064) || (PRODUCT_ID == 0x6065) || + (PRODUCT_ID == 0x6066) || (PRODUCT_ID == 0x6067)) { + writePin(LED_RSE_PIN, !on); + }else{ + writePin(LED_RSE_PIN, on); } #endif } diff --git a/keyboards/mlego/m65/readme.md b/keyboards/mlego/m65/readme.md index 8076697a2b67..d53475fd570d 100644 --- a/keyboards/mlego/m65/readme.md +++ b/keyboards/mlego/m65/readme.md @@ -7,7 +7,7 @@ A (13x5) ortholinear keyboard that can be hand wired or using a pcb. * Keyboard Maintainer: [Alin Elena](https://github.com/alinelena) ([@drFaustroll on GitLab](https://gitlab.com/drFaustroll)) * Hardware Supported: custom pcb [see](https://gitlab.com/m-lego/m65) STM/APM32F103C8T6, aka Black Pill (rev1), GD32F303CCT6 from we act aka Blue Pill Plus (rev2), STM32F401 from we act (rev3,rev4) STM32F411 can also be used just ask -* Hardware Availability: [custom how to](https://alin.elena.space/blog/keeblego/) +* Hardware Availability: [custom how to](https://mlego.elena.space/m65) Make example for this keyboard (after setting up your build environment): diff --git a/keyboards/mlego/m65/rev1/config.h b/keyboards/mlego/m65/rev1/config.h index 847dd118233a..e832af8fee6d 100644 --- a/keyboards/mlego/m65/rev1/config.h +++ b/keyboards/mlego/m65/rev1/config.h @@ -1,20 +1,7 @@ -/* -Copyright 2021-2022 Alin M Elena - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ +// Copyright 2020-2023 alin m elena (@alinelena) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once -#define RGBLIGHT_LAYERS +#define LED_RSE_PIN B13 +#define LED_LWR_PIN B12 diff --git a/keyboards/mlego/m65/rev1/info.json b/keyboards/mlego/m65/rev1/info.json index 960b9325c8c9..d8bb91de3009 100644 --- a/keyboards/mlego/m65/rev1/info.json +++ b/keyboards/mlego/m65/rev1/info.json @@ -1,42 +1,134 @@ { - "usb": { - "pid": "0x6061", - "device_version": "0.0.1" - }, - "matrix_pins": { - "cols": ["A10", "A15", "B3", "B4", "B5", "B9", "B8", "B7", "B6", "C15", "A0", "A7", "B10"], - "rows": ["B11", "B0", "B1", "A2", "A3"] - }, + "manufacturer": "Alin Elena", + "keyboard_name": "mlego/m65 rev1", + "maintainer": "alin elena", + "bootloader": "stm32duino", + "debounce": 5, "diode_direction": "COL2ROW", "encoder": { "rotary": [ {"pin_a": "A8", "pin_b": "A9"} ] }, + "features": { + "audio": false, + "backlight": false, + "bootmagic": true, + "command": false, + "console": false, + "encoder": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, "indicators": { "caps_lock": "C13", - "num_lock": "B12", - "scroll_lock": "B13" + "on_state": 0 }, + "matrix_pins": { + "cols": ["A10", "A15", "B3", "B4", "B5", "B9", "B8", "B7", "B6", "C15", "A0", "A7", "B10"], + "rows": ["B11", "B0", "B1", "A2", "A3"] + }, + "processor": "STM32F103", "rgblight": { - "saturation_steps": 8, - "led_count": 20, "animations": { + "alternating": true, "breathing": true, + "christmas": true, + "knight": true, "rainbow_mood": true, "rainbow_swirl": true, + "rgb_test": true, "snake": true, - "knight": true, - "christmas": true, "static_gradient": true, - "rgb_test": true, - "alternating": true, "twinkle": true - } + }, + "hue_steps": 8, + "layers": { + "enabled": true + }, + "led_count": 20, + "saturation_steps": 8 + }, + "url": "https://gitlab.com/m-lego/m65", + "usb": { + "device_version": "0.0.1", + "pid": "0x6061", + "vid": "0xBABA" }, "ws2812": { "pin": "B15" }, - "processor": "STM32F103", - "bootloader": "stm32duino" + "layouts": { + "LAYOUT_ortho_5x13": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "Backspace", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1}, + {"label": "q", "matrix": [1, 1], "x": 1, "y": 1}, + {"label": "w", "matrix": [1, 2], "x": 2, "y": 1}, + {"label": "e", "matrix": [1, 3], "x": 3, "y": 1}, + {"label": "r", "matrix": [1, 4], "x": 4, "y": 1}, + {"label": "t", "matrix": [1, 5], "x": 5, "y": 1}, + {"label": "y", "matrix": [1, 6], "x": 6, "y": 1}, + {"label": "u", "matrix": [1, 7], "x": 7, "y": 1}, + {"label": "i", "matrix": [1, 8], "x": 8, "y": 1}, + {"label": "o", "matrix": [1, 9], "x": 9, "y": 1}, + {"label": "p", "matrix": [1, 10], "x": 10, "y": 1}, + {"label": "[", "matrix": [1, 11], "x": 11, "y": 1}, + {"label": "]", "matrix": [1, 12], "x": 12, "y": 1}, + {"label": "#", "matrix": [2, 0], "x": 0, "y": 2}, + {"label": "a", "matrix": [2, 1], "x": 1, "y": 2}, + {"label": "s", "matrix": [2, 2], "x": 2, "y": 2}, + {"label": "d", "matrix": [2, 3], "x": 3, "y": 2}, + {"label": "f", "matrix": [2, 4], "x": 4, "y": 2}, + {"label": "g", "matrix": [2, 5], "x": 5, "y": 2}, + {"label": "h", "matrix": [2, 6], "x": 6, "y": 2}, + {"label": "j", "matrix": [2, 7], "x": 7, "y": 2}, + {"label": "k", "matrix": [2, 8], "x": 8, "y": 2}, + {"label": "l", "matrix": [2, 9], "x": 9, "y": 2}, + {"label": ";", "matrix": [2, 10], "x": 10, "y": 2}, + {"label": "'", "matrix": [2, 11], "x": 11, "y": 2}, + {"label": "Enter", "matrix": [2, 12], "x": 12, "y": 2}, + {"label": "Left Shift", "matrix": [3, 0], "x": 0, "y": 3}, + {"label": "\\", "matrix": [3, 1], "x": 1, "y": 3}, + {"label": "z", "matrix": [3, 2], "x": 2, "y": 3}, + {"label": "x", "matrix": [3, 3], "x": 3, "y": 3}, + {"label": "c", "matrix": [3, 4], "x": 4, "y": 3}, + {"label": "v", "matrix": [3, 5], "x": 5, "y": 3}, + {"label": "b", "matrix": [3, 6], "x": 6, "y": 3}, + {"label": "n", "matrix": [3, 7], "x": 7, "y": 3}, + {"label": "m", "matrix": [3, 8], "x": 8, "y": 3}, + {"label": ",", "matrix": [3, 9], "x": 9, "y": 3}, + {"label": ".", "matrix": [3, 10], "x": 10, "y": 3}, + {"label": "Up", "matrix": [3, 11], "x": 11, "y": 3}, + {"label": "/", "matrix": [3, 12], "x": 12, "y": 3}, + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4}, + {"label": "Menu", "matrix": [4, 1], "x": 1, "y": 4}, + {"label": "Lower", "matrix": [4, 2], "x": 2, "y": 4}, + {"label": "Alt", "matrix": [4, 3], "x": 3, "y": 4}, + {"label": "Raise", "matrix": [4, 4], "x": 4, "y": 4}, + {"label": "Space", "matrix": [4, 5], "x": 5, "y": 4}, + {"label": "Space", "matrix": [4, 6], "x": 6, "y": 4}, + {"label": "Space", "matrix": [4, 7], "x": 7, "y": 4}, + {"label": "Alt Gr", "matrix": [4, 8], "x": 8, "y": 4}, + {"label": "Right Shift", "matrix": [4, 9], "x": 9, "y": 4}, + {"label": "Left", "matrix": [4, 10], "x": 10, "y": 4}, + {"label": "Down", "matrix": [4, 11], "x": 11, "y": 4}, + {"label": "Right", "matrix": [4, 12], "x": 12, "y": 4} + ] + } + } } diff --git a/keyboards/mlego/m65/rev1/mcuconf.h b/keyboards/mlego/m65/rev1/mcuconf.h index 6ba4f72b407d..a8e4fbb31993 100644 --- a/keyboards/mlego/m65/rev1/mcuconf.h +++ b/keyboards/mlego/m65/rev1/mcuconf.h @@ -1,23 +1,5 @@ -/* Copyright 2021-2022 QMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/* - * This file was auto-generated by: - * `qmk chibios-confmigrate -i keyboards/m65/rev1/mcuconf.h -r platforms/chibios/STM32_F103_STM32DUINO/configs/mcuconf.h` - */ +// Copyright 2020-2022 alin m elena (@alinelena) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once diff --git a/keyboards/mlego/m65/rev1/rules.mk b/keyboards/mlego/m65/rev1/rules.mk index fa351eadbace..48c755b14e90 100644 --- a/keyboards/mlego/m65/rev1/rules.mk +++ b/keyboards/mlego/m65/rev1/rules.mk @@ -1,13 +1 @@ -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = yes # Enable N-Key Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -AUDIO_ENABLE = no # Audio output -ENCODER_ENABLE = yes # Enable encoder +#intentionally blanck diff --git a/keyboards/mlego/m65/rev2/board.h b/keyboards/mlego/m65/rev2/board.h index e0d086577637..15ec2705996c 100644 --- a/keyboards/mlego/m65/rev2/board.h +++ b/keyboards/mlego/m65/rev2/board.h @@ -1,18 +1,5 @@ -/* Copyright 2021-2022 Alin M Elena - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ +// Copyright 2020-2022 alin m elena (@alinelena) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include_next diff --git a/keyboards/mlego/m65/rev2/config.h b/keyboards/mlego/m65/rev2/config.h index 666d296ede50..32f7b4eca3a0 100644 --- a/keyboards/mlego/m65/rev2/config.h +++ b/keyboards/mlego/m65/rev2/config.h @@ -1,23 +1,10 @@ -/* -Copyright 2021-2022 Alin M Elena - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ +// Copyright 2020-2023 alin m elena (@alinelena) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once -#define RGBLIGHT_LAYERS +#define LED_RSE_PIN B13 +#define LED_LWR_PIN B12 #define EEPROM_PAGE_SIZE #define FEE_PAGE_SIZE 0x800 diff --git a/keyboards/mlego/m65/rev2/info.json b/keyboards/mlego/m65/rev2/info.json index 8d822ae4e74b..e8575e23e85b 100644 --- a/keyboards/mlego/m65/rev2/info.json +++ b/keyboards/mlego/m65/rev2/info.json @@ -1,42 +1,133 @@ { - "usb": { - "pid": "0x6061", - "device_version": "0.0.2" - }, - "matrix_pins": { - "cols": ["A10", "A15", "B3", "B4", "B5", "B9", "B8", "B7", "B6", "C15", "A0", "A7", "B10"], - "rows": ["B11", "B0", "B1", "A2", "A3"] - }, + "manufacturer": "Alin Elena", + "keyboard_name": "mlego/m65 rev2", + "maintainer": "alin elena", + "bootloader": "stm32duino", "diode_direction": "COL2ROW", "encoder": { "rotary": [ {"pin_a": "A8", "pin_b": "A9"} ] }, + "features": { + "audio": false, + "backlight": false, + "bootmagic": true, + "command": true, + "console": false, + "encoder": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, "indicators": { "caps_lock": "B2", - "num_lock": "B12", - "scroll_lock": "B13" + "on_state": 0 }, + "matrix_pins": { + "cols": ["A10", "A15", "B3", "B4", "B5", "B9", "B8", "B7", "B6", "C15", "A0", "A7", "B10"], + "rows": ["B11", "B0", "B1", "A2", "A3"] + }, + "processor": "STM32F103", "rgblight": { - "saturation_steps": 8, - "led_count": 20, "animations": { + "alternating": true, "breathing": true, + "christmas": true, + "knight": true, "rainbow_mood": true, "rainbow_swirl": true, + "rgb_test": true, "snake": true, - "knight": true, - "christmas": true, "static_gradient": true, - "rgb_test": true, - "alternating": true, "twinkle": true - } + }, + "hue_steps": 8, + "layers": { + "enabled": true + }, + "led_count": 20, + "saturation_steps": 8 + }, + "url": "https://gitlab.com/m-lego/m65", + "usb": { + "device_version": "0.0.2", + "pid": "0x6061", + "vid": "0xBABA" }, "ws2812": { "pin": "B15" }, - "processor": "STM32F103", // GD32F303CCT6 - "bootloader": "stm32duino" + "layouts": { + "LAYOUT_ortho_5x13": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "Backspace", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1}, + {"label": "q", "matrix": [1, 1], "x": 1, "y": 1}, + {"label": "w", "matrix": [1, 2], "x": 2, "y": 1}, + {"label": "e", "matrix": [1, 3], "x": 3, "y": 1}, + {"label": "r", "matrix": [1, 4], "x": 4, "y": 1}, + {"label": "t", "matrix": [1, 5], "x": 5, "y": 1}, + {"label": "y", "matrix": [1, 6], "x": 6, "y": 1}, + {"label": "u", "matrix": [1, 7], "x": 7, "y": 1}, + {"label": "i", "matrix": [1, 8], "x": 8, "y": 1}, + {"label": "o", "matrix": [1, 9], "x": 9, "y": 1}, + {"label": "p", "matrix": [1, 10], "x": 10, "y": 1}, + {"label": "[", "matrix": [1, 11], "x": 11, "y": 1}, + {"label": "]", "matrix": [1, 12], "x": 12, "y": 1}, + {"label": "#", "matrix": [2, 0], "x": 0, "y": 2}, + {"label": "a", "matrix": [2, 1], "x": 1, "y": 2}, + {"label": "s", "matrix": [2, 2], "x": 2, "y": 2}, + {"label": "d", "matrix": [2, 3], "x": 3, "y": 2}, + {"label": "f", "matrix": [2, 4], "x": 4, "y": 2}, + {"label": "g", "matrix": [2, 5], "x": 5, "y": 2}, + {"label": "h", "matrix": [2, 6], "x": 6, "y": 2}, + {"label": "j", "matrix": [2, 7], "x": 7, "y": 2}, + {"label": "k", "matrix": [2, 8], "x": 8, "y": 2}, + {"label": "l", "matrix": [2, 9], "x": 9, "y": 2}, + {"label": ";", "matrix": [2, 10], "x": 10, "y": 2}, + {"label": "'", "matrix": [2, 11], "x": 11, "y": 2}, + {"label": "Enter", "matrix": [2, 12], "x": 12, "y": 2}, + {"label": "Left Shift", "matrix": [3, 0], "x": 0, "y": 3}, + {"label": "\\", "matrix": [3, 1], "x": 1, "y": 3}, + {"label": "z", "matrix": [3, 2], "x": 2, "y": 3}, + {"label": "x", "matrix": [3, 3], "x": 3, "y": 3}, + {"label": "c", "matrix": [3, 4], "x": 4, "y": 3}, + {"label": "v", "matrix": [3, 5], "x": 5, "y": 3}, + {"label": "b", "matrix": [3, 6], "x": 6, "y": 3}, + {"label": "n", "matrix": [3, 7], "x": 7, "y": 3}, + {"label": "m", "matrix": [3, 8], "x": 8, "y": 3}, + {"label": ",", "matrix": [3, 9], "x": 9, "y": 3}, + {"label": ".", "matrix": [3, 10], "x": 10, "y": 3}, + {"label": "Up", "matrix": [3, 11], "x": 11, "y": 3}, + {"label": "/", "matrix": [3, 12], "x": 12, "y": 3}, + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4}, + {"label": "Menu", "matrix": [4, 1], "x": 1, "y": 4}, + {"label": "Lower", "matrix": [4, 2], "x": 2, "y": 4}, + {"label": "Alt", "matrix": [4, 3], "x": 3, "y": 4}, + {"label": "Raise", "matrix": [4, 4], "x": 4, "y": 4}, + {"label": "Space", "matrix": [4, 5], "x": 5, "y": 4}, + {"label": "Space", "matrix": [4, 6], "x": 6, "y": 4}, + {"label": "Space", "matrix": [4, 7], "x": 7, "y": 4}, + {"label": "Alt Gr", "matrix": [4, 8], "x": 8, "y": 4}, + {"label": "Right Shift", "matrix": [4, 9], "x": 9, "y": 4}, + {"label": "Left", "matrix": [4, 10], "x": 10, "y": 4}, + {"label": "Down", "matrix": [4, 11], "x": 11, "y": 4}, + {"label": "Right", "matrix": [4, 12], "x": 12, "y": 4} + ] + } + } } diff --git a/keyboards/mlego/m65/rev2/mcuconf.h b/keyboards/mlego/m65/rev2/mcuconf.h index 6ba4f72b407d..a8e4fbb31993 100644 --- a/keyboards/mlego/m65/rev2/mcuconf.h +++ b/keyboards/mlego/m65/rev2/mcuconf.h @@ -1,23 +1,5 @@ -/* Copyright 2021-2022 QMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/* - * This file was auto-generated by: - * `qmk chibios-confmigrate -i keyboards/m65/rev1/mcuconf.h -r platforms/chibios/STM32_F103_STM32DUINO/configs/mcuconf.h` - */ +// Copyright 2020-2022 alin m elena (@alinelena) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once diff --git a/keyboards/mlego/m65/rev2/rules.mk b/keyboards/mlego/m65/rev2/rules.mk index 51070f971892..9a795b953e4d 100644 --- a/keyboards/mlego/m65/rev2/rules.mk +++ b/keyboards/mlego/m65/rev2/rules.mk @@ -1,13 +1 @@ -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = yes # Console for debug -COMMAND_ENABLE = yes # Commands for debug and configuration -NKRO_ENABLE = yes # Enable N-Key Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -AUDIO_ENABLE = no # Audio output -ENCODER_ENABLE = yes # Enable encoder +#blank purpose diff --git a/keyboards/mlego/m65/rev3/config.h b/keyboards/mlego/m65/rev3/config.h index 847dd118233a..1b351c540acd 100644 --- a/keyboards/mlego/m65/rev3/config.h +++ b/keyboards/mlego/m65/rev3/config.h @@ -1,20 +1,7 @@ -/* -Copyright 2021-2022 Alin M Elena - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ +// Copyright 2021-2023 alin m elena (@alinelena) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once -#define RGBLIGHT_LAYERS +#define LED_RSE_PIN B13 +#define LED_LWR_PIN B12 diff --git a/keyboards/mlego/m65/rev3/halconf.h b/keyboards/mlego/m65/rev3/halconf.h index 89815e23b7a0..decadcb011cd 100644 --- a/keyboards/mlego/m65/rev3/halconf.h +++ b/keyboards/mlego/m65/rev3/halconf.h @@ -1,23 +1,5 @@ -/* Copyright 2020 QMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/* - * This file was auto-generated by: - * `qmk chibios-confmigrate -i keyboards/zvecr/zv48/f401/halconf.h -r platforms/chibios/common/configs/halconf.h` - */ +// Copyright 2020-2022 alin m elena (@alinelena) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once diff --git a/keyboards/mlego/m65/rev3/info.json b/keyboards/mlego/m65/rev3/info.json index 4f9b86656570..d48d52d9d97c 100644 --- a/keyboards/mlego/m65/rev3/info.json +++ b/keyboards/mlego/m65/rev3/info.json @@ -1,43 +1,134 @@ { - "usb": { - "pid": "0x6062", - "device_version": "0.0.1" - }, - "matrix_pins": { - "cols": ["A10", "A15", "B3", "B4", "B5", "B9", "B8", "B7", "A1", "A2", "A3", "A4", "B1"], - "rows": ["B10", "A5", "A6", "A7", "B0"] - }, + "manufacturer": "Alin Elena", + "keyboard_name": "mlego/m65 rev3", + "maintainer": "alin elena", + "board": "BLACKPILL_STM32_F401", + "bootloader": "tinyuf2", "diode_direction": "COL2ROW", "encoder": { "rotary": [ {"pin_a": "A0", "pin_b": "B6"} ] }, + "features": { + "audio": false, + "backlight": false, + "bootmagic": true, + "command": false, + "console": false, + "encoder": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgblight": true + }, "indicators": { "caps_lock": "C13", - "num_lock": "B12", - "scroll_lock": "B13" + "on_state": 0 + }, + "matrix_pins": { + "cols": ["A10", "A15", "B3", "B4", "B5", "B9", "B8", "B7", "A1", "A2", "A3", "A4", "B1"], + "rows": ["B10", "A5", "A6", "A7", "B0"] }, + "processor": "STM32F401", "rgblight": { - "saturation_steps": 8, - "led_count": 20, "animations": { + "alternating": true, "breathing": true, + "christmas": true, + "knight": true, "rainbow_mood": true, "rainbow_swirl": true, + "rgb_test": true, "snake": true, - "knight": true, - "christmas": true, "static_gradient": true, - "rgb_test": true, - "alternating": true, "twinkle": true - } + }, + "hue_steps": 8, + "layers": { + "enabled": true + }, + "led_count": 20, + "saturation_steps": 8 + }, + "url": "https://gitlab.com/m-lego/m65", + "usb": { + "device_version": "0.0.1", + "pid": "0x6062", + "vid": "0xBABA" }, "ws2812": { "pin": "B15" }, - "processor": "STM32F401", - "bootloader": "tinyuf2", - "board": "BLACKPILL_STM32_F401" + "layouts": { + "LAYOUT_ortho_5x13": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "Backspace", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1}, + {"label": "q", "matrix": [1, 1], "x": 1, "y": 1}, + {"label": "w", "matrix": [1, 2], "x": 2, "y": 1}, + {"label": "e", "matrix": [1, 3], "x": 3, "y": 1}, + {"label": "r", "matrix": [1, 4], "x": 4, "y": 1}, + {"label": "t", "matrix": [1, 5], "x": 5, "y": 1}, + {"label": "y", "matrix": [1, 6], "x": 6, "y": 1}, + {"label": "u", "matrix": [1, 7], "x": 7, "y": 1}, + {"label": "i", "matrix": [1, 8], "x": 8, "y": 1}, + {"label": "o", "matrix": [1, 9], "x": 9, "y": 1}, + {"label": "p", "matrix": [1, 10], "x": 10, "y": 1}, + {"label": "[", "matrix": [1, 11], "x": 11, "y": 1}, + {"label": "]", "matrix": [1, 12], "x": 12, "y": 1}, + {"label": "#", "matrix": [2, 0], "x": 0, "y": 2}, + {"label": "a", "matrix": [2, 1], "x": 1, "y": 2}, + {"label": "s", "matrix": [2, 2], "x": 2, "y": 2}, + {"label": "d", "matrix": [2, 3], "x": 3, "y": 2}, + {"label": "f", "matrix": [2, 4], "x": 4, "y": 2}, + {"label": "g", "matrix": [2, 5], "x": 5, "y": 2}, + {"label": "h", "matrix": [2, 6], "x": 6, "y": 2}, + {"label": "j", "matrix": [2, 7], "x": 7, "y": 2}, + {"label": "k", "matrix": [2, 8], "x": 8, "y": 2}, + {"label": "l", "matrix": [2, 9], "x": 9, "y": 2}, + {"label": ";", "matrix": [2, 10], "x": 10, "y": 2}, + {"label": "'", "matrix": [2, 11], "x": 11, "y": 2}, + {"label": "Enter", "matrix": [2, 12], "x": 12, "y": 2}, + {"label": "Left Shift", "matrix": [3, 0], "x": 0, "y": 3}, + {"label": "\\", "matrix": [3, 1], "x": 1, "y": 3}, + {"label": "z", "matrix": [3, 2], "x": 2, "y": 3}, + {"label": "x", "matrix": [3, 3], "x": 3, "y": 3}, + {"label": "c", "matrix": [3, 4], "x": 4, "y": 3}, + {"label": "v", "matrix": [3, 5], "x": 5, "y": 3}, + {"label": "b", "matrix": [3, 6], "x": 6, "y": 3}, + {"label": "n", "matrix": [3, 7], "x": 7, "y": 3}, + {"label": "m", "matrix": [3, 8], "x": 8, "y": 3}, + {"label": ",", "matrix": [3, 9], "x": 9, "y": 3}, + {"label": ".", "matrix": [3, 10], "x": 10, "y": 3}, + {"label": "Up", "matrix": [3, 11], "x": 11, "y": 3}, + {"label": "/", "matrix": [3, 12], "x": 12, "y": 3}, + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4}, + {"label": "Menu", "matrix": [4, 1], "x": 1, "y": 4}, + {"label": "Lower", "matrix": [4, 2], "x": 2, "y": 4}, + {"label": "Alt", "matrix": [4, 3], "x": 3, "y": 4}, + {"label": "Raise", "matrix": [4, 4], "x": 4, "y": 4}, + {"label": "Space", "matrix": [4, 5], "x": 5, "y": 4}, + {"label": "Space", "matrix": [4, 6], "x": 6, "y": 4}, + {"label": "Space", "matrix": [4, 7], "x": 7, "y": 4}, + {"label": "Alt Gr", "matrix": [4, 8], "x": 8, "y": 4}, + {"label": "Right Shift", "matrix": [4, 9], "x": 9, "y": 4}, + {"label": "Left", "matrix": [4, 10], "x": 10, "y": 4}, + {"label": "Down", "matrix": [4, 11], "x": 11, "y": 4}, + {"label": "Right", "matrix": [4, 12], "x": 12, "y": 4} + ] + } + } } diff --git a/keyboards/mlego/m65/rev3/mcuconf.h b/keyboards/mlego/m65/rev3/mcuconf.h index 4d90ec07eafb..05c6656170f8 100644 --- a/keyboards/mlego/m65/rev3/mcuconf.h +++ b/keyboards/mlego/m65/rev3/mcuconf.h @@ -1,23 +1,5 @@ -/* Copyright 2020 QMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/* - * This file was auto-generated by: - * `qmk chibios-confmigrate -i keyboards/zvecr/zv48/f401/mcuconf.h -r platforms/chibios/BLACKPILL_STM32_F401/configs/mcuconf.h` - */ +// Copyright 2020-2022 alin m elena (@alinelena) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once diff --git a/keyboards/mlego/m65/rev3/rules.mk b/keyboards/mlego/m65/rev3/rules.mk index fa351eadbace..8b4c9539892c 100644 --- a/keyboards/mlego/m65/rev3/rules.mk +++ b/keyboards/mlego/m65/rev3/rules.mk @@ -1,13 +1 @@ -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = yes # Enable N-Key Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -AUDIO_ENABLE = no # Audio output -ENCODER_ENABLE = yes # Enable encoder +#blank on purpose diff --git a/keyboards/mlego/m65/rev4/config.h b/keyboards/mlego/m65/rev4/config.h index d0475aabafe3..181ebc565ae7 100644 --- a/keyboards/mlego/m65/rev4/config.h +++ b/keyboards/mlego/m65/rev4/config.h @@ -1,28 +1,14 @@ -/* -Copyright 2021-2022 Alin M Elena - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -*/ +// Copyright 2021-2023 alin m elena (@alinelena) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once -#define RGBLIGHT_LAYERS +#define LED_RSE_PIN B13 +#define LED_LWR_PIN B12 #ifdef OLED_ENABLE -# define OLED_DISPLAY_128X32 -#define I2C1_SCL_PIN B9 -#define I2C1_SDA_PIN B8 -#define OLED_BRIGHTNESS 128 -#define OLED_FONT_H "keyboards/mlego/m65/lib/glcdfont.c" +# define I2C1_SCL_PIN B9 +# define I2C1_SDA_PIN B8 +# define OLED_BRIGHTNESS 128 +# define OLED_FONT_H "keyboards/mlego/m65/lib/glcdfont.c" #endif diff --git a/keyboards/mlego/m65/rev4/halconf.h b/keyboards/mlego/m65/rev4/halconf.h index c1a060ad711d..99f8ae4bf143 100644 --- a/keyboards/mlego/m65/rev4/halconf.h +++ b/keyboards/mlego/m65/rev4/halconf.h @@ -1,23 +1,5 @@ -/* Copyright 2020 QMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/* - * This file was auto-generated by: - * `qmk chibios-confmigrate -i keyboards/zvecr/zv48/f401/halconf.h -r platforms/chibios/common/configs/halconf.h` - */ +// Copyright 2021-2022 alin m elena (@alinelena) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once diff --git a/keyboards/mlego/m65/rev4/info.json b/keyboards/mlego/m65/rev4/info.json index a97c734ff8b1..56fed15317fe 100644 --- a/keyboards/mlego/m65/rev4/info.json +++ b/keyboards/mlego/m65/rev4/info.json @@ -1,43 +1,136 @@ { - "usb": { - "pid": "0x6062", - "device_version": "0.0.2" - }, - "matrix_pins": { - "cols": ["B14", "A8", "A10", "A15", "B3", "B4", "B5", "B7", "A1", "A2", "A3", "A4", "B1"], - "rows": ["B10", "A5", "A6", "A7", "B0"] - }, + "manufacturer": "Alin Elena", + "keyboard_name": "mlego/m65 rev4", + "maintainer": "alin elena", + "board": "BLACKPILL_STM32_F401", + "bootloader": "tinyuf2", "diode_direction": "COL2ROW", "encoder": { "rotary": [ {"pin_a": "A0", "pin_b": "B6"} ] }, + "features": { + "audio": false, + "backlight": false, + "bootmagic": true, + "command": false, + "console": true, + "encoder": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "oled": true, + "rgblight": true, + "wpm": true + }, "indicators": { "caps_lock": "C13", - "num_lock": "B12", - "scroll_lock": "B13" + "on_state": 0 + }, + "matrix_pins": { + "cols": ["B14", "A8", "A10", "A15", "B3", "B4", "B5", "B7", "A1", "A2", "A3", "A4", "B1"], + "rows": ["B10", "A5", "A6", "A7", "B0"] }, + "processor": "STM32F401", "rgblight": { - "saturation_steps": 8, - "led_count": 20, "animations": { + "alternating": true, "breathing": true, + "christmas": true, + "knight": true, "rainbow_mood": true, "rainbow_swirl": true, + "rgb_test": true, "snake": true, - "knight": true, - "christmas": true, "static_gradient": true, - "rgb_test": true, - "alternating": true, "twinkle": true - } + }, + "hue_steps": 8, + "layers": { + "enabled": true + }, + "led_count": 20, + "saturation_steps": 8 + }, + "url": "https://gitlab.com/m-lego/m65", + "usb": { + "device_version": "0.0.2", + "pid": "0x6062", + "vid": "0xBABA" }, "ws2812": { "pin": "B15" }, - "processor": "STM32F401", - "bootloader": "tinyuf2", - "board": "BLACKPILL_STM32_F401" + "layouts": { + "LAYOUT_ortho_5x13": { + "layout": [ + {"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "1", "matrix": [0, 1], "x": 1, "y": 0}, + {"label": "2", "matrix": [0, 2], "x": 2, "y": 0}, + {"label": "3", "matrix": [0, 3], "x": 3, "y": 0}, + {"label": "4", "matrix": [0, 4], "x": 4, "y": 0}, + {"label": "5", "matrix": [0, 5], "x": 5, "y": 0}, + {"label": "6", "matrix": [0, 6], "x": 6, "y": 0}, + {"label": "7", "matrix": [0, 7], "x": 7, "y": 0}, + {"label": "8", "matrix": [0, 8], "x": 8, "y": 0}, + {"label": "9", "matrix": [0, 9], "x": 9, "y": 0}, + {"label": "0", "matrix": [0, 10], "x": 10, "y": 0}, + {"label": "-", "matrix": [0, 11], "x": 11, "y": 0}, + {"label": "Backspace", "matrix": [0, 12], "x": 12, "y": 0}, + {"label": "Tab", "matrix": [1, 0], "x": 0, "y": 1}, + {"label": "q", "matrix": [1, 1], "x": 1, "y": 1}, + {"label": "w", "matrix": [1, 2], "x": 2, "y": 1}, + {"label": "e", "matrix": [1, 3], "x": 3, "y": 1}, + {"label": "r", "matrix": [1, 4], "x": 4, "y": 1}, + {"label": "t", "matrix": [1, 5], "x": 5, "y": 1}, + {"label": "y", "matrix": [1, 6], "x": 6, "y": 1}, + {"label": "u", "matrix": [1, 7], "x": 7, "y": 1}, + {"label": "i", "matrix": [1, 8], "x": 8, "y": 1}, + {"label": "o", "matrix": [1, 9], "x": 9, "y": 1}, + {"label": "p", "matrix": [1, 10], "x": 10, "y": 1}, + {"label": "[", "matrix": [1, 11], "x": 11, "y": 1}, + {"label": "]", "matrix": [1, 12], "x": 12, "y": 1}, + {"label": "#", "matrix": [2, 0], "x": 0, "y": 2}, + {"label": "a", "matrix": [2, 1], "x": 1, "y": 2}, + {"label": "s", "matrix": [2, 2], "x": 2, "y": 2}, + {"label": "d", "matrix": [2, 3], "x": 3, "y": 2}, + {"label": "f", "matrix": [2, 4], "x": 4, "y": 2}, + {"label": "g", "matrix": [2, 5], "x": 5, "y": 2}, + {"label": "h", "matrix": [2, 6], "x": 6, "y": 2}, + {"label": "j", "matrix": [2, 7], "x": 7, "y": 2}, + {"label": "k", "matrix": [2, 8], "x": 8, "y": 2}, + {"label": "l", "matrix": [2, 9], "x": 9, "y": 2}, + {"label": ";", "matrix": [2, 10], "x": 10, "y": 2}, + {"label": "'", "matrix": [2, 11], "x": 11, "y": 2}, + {"label": "Enter", "matrix": [2, 12], "x": 12, "y": 2}, + {"label": "Left Shift", "matrix": [3, 0], "x": 0, "y": 3}, + {"label": "\\", "matrix": [3, 1], "x": 1, "y": 3}, + {"label": "z", "matrix": [3, 2], "x": 2, "y": 3}, + {"label": "x", "matrix": [3, 3], "x": 3, "y": 3}, + {"label": "c", "matrix": [3, 4], "x": 4, "y": 3}, + {"label": "v", "matrix": [3, 5], "x": 5, "y": 3}, + {"label": "b", "matrix": [3, 6], "x": 6, "y": 3}, + {"label": "n", "matrix": [3, 7], "x": 7, "y": 3}, + {"label": "m", "matrix": [3, 8], "x": 8, "y": 3}, + {"label": ",", "matrix": [3, 9], "x": 9, "y": 3}, + {"label": ".", "matrix": [3, 10], "x": 10, "y": 3}, + {"label": "Up", "matrix": [3, 11], "x": 11, "y": 3}, + {"label": "/", "matrix": [3, 12], "x": 12, "y": 3}, + {"label": "Ctrl", "matrix": [4, 0], "x": 0, "y": 4}, + {"label": "Menu", "matrix": [4, 1], "x": 1, "y": 4}, + {"label": "Lower", "matrix": [4, 2], "x": 2, "y": 4}, + {"label": "Alt", "matrix": [4, 3], "x": 3, "y": 4}, + {"label": "Raise", "matrix": [4, 4], "x": 4, "y": 4}, + {"label": "Space", "matrix": [4, 5], "x": 5, "y": 4}, + {"label": "Space", "matrix": [4, 6], "x": 6, "y": 4}, + {"label": "Space", "matrix": [4, 7], "x": 7, "y": 4}, + {"label": "Alt Gr", "matrix": [4, 8], "x": 8, "y": 4}, + {"label": "Right Shift", "matrix": [4, 9], "x": 9, "y": 4}, + {"label": "Left", "matrix": [4, 10], "x": 10, "y": 4}, + {"label": "Down", "matrix": [4, 11], "x": 11, "y": 4}, + {"label": "Right", "matrix": [4, 12], "x": 12, "y": 4} + ] + } + } } diff --git a/keyboards/mlego/m65/rev4/mcuconf.h b/keyboards/mlego/m65/rev4/mcuconf.h index ba1cd32fd30b..abae5f94bd44 100644 --- a/keyboards/mlego/m65/rev4/mcuconf.h +++ b/keyboards/mlego/m65/rev4/mcuconf.h @@ -1,23 +1,5 @@ -/* Copyright 2020 QMK - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -/* - * This file was auto-generated by: - * `qmk chibios-confmigrate -i keyboards/zvecr/zv48/f401/mcuconf.h -r platforms/chibios/BLACKPILL_STM32_F401/configs/mcuconf.h` - */ +// Copyright 2021-2022 alin m elena (@alinelena) +// SPDX-License-Identifier: GPL-2.0-or-later #pragma once diff --git a/keyboards/mlego/m65/rev4/rules.mk b/keyboards/mlego/m65/rev4/rules.mk index 3e44c80fe0a8..e69de29bb2d1 100644 --- a/keyboards/mlego/m65/rev4/rules.mk +++ b/keyboards/mlego/m65/rev4/rules.mk @@ -1,15 +0,0 @@ -# Build Options -# change yes to no to disable -# -BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite -MOUSEKEY_ENABLE = yes # Mouse keys -EXTRAKEY_ENABLE = yes # Audio control and System control -CONSOLE_ENABLE = no # Console for debug -COMMAND_ENABLE = no # Commands for debug and configuration -NKRO_ENABLE = yes # Enable N-Key Rollover -BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow -AUDIO_ENABLE = no # Audio output -ENCODER_ENABLE = yes # Enable encoder -OLED_ENABLE = yes # Enable OLED -WPM_ENABLE = yes # Enable WPM Counter