Browse Source

Updates to mlego m65 (#20220)

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
pull/22256/head
Alin Marin Elena 8 months ago
committed by GitHub
parent
commit
007c0c1db4
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
37 changed files with 816 additions and 1502 deletions
  1. +0
    -21
      keyboards/mlego/m65/config.h
  2. +0
    -84
      keyboards/mlego/m65/info.json
  3. +2
    -16
      keyboards/mlego/m65/keymaps/default/config.h
  4. +14
    -80
      keyboards/mlego/m65/keymaps/default/keymap.c
  5. +1
    -0
      keyboards/mlego/m65/keymaps/default/rules.mk
  6. +0
    -20
      keyboards/mlego/m65/keymaps/dk/config.h
  7. +0
    -121
      keyboards/mlego/m65/keymaps/dk/keymap.c
  8. +0
    -13
      keyboards/mlego/m65/keymaps/dk/readme.md
  9. +6
    -21
      keyboards/mlego/m65/keymaps/uk/config.h
  10. +118
    -190
      keyboards/mlego/m65/keymaps/uk/keymap.c
  11. +1
    -0
      keyboards/mlego/m65/keymaps/uk/rules.mk
  12. +0
    -20
      keyboards/mlego/m65/keymaps/via/config.h
  13. +0
    -118
      keyboards/mlego/m65/keymaps/via/keymap.c
  14. +0
    -1
      keyboards/mlego/m65/keymaps/via/rules.mk
  15. +9
    -224
      keyboards/mlego/m65/lib/glcdfont.c
  16. +144
    -105
      keyboards/mlego/m65/m65.c
  17. +38
    -127
      keyboards/mlego/m65/m65.h
  18. +1
    -1
      keyboards/mlego/m65/readme.md
  19. +4
    -17
      keyboards/mlego/m65/rev1/config.h
  20. +111
    -19
      keyboards/mlego/m65/rev1/info.json
  21. +2
    -20
      keyboards/mlego/m65/rev1/mcuconf.h
  22. +1
    -13
      keyboards/mlego/m65/rev1/rules.mk
  23. +2
    -15
      keyboards/mlego/m65/rev2/board.h
  24. +4
    -17
      keyboards/mlego/m65/rev2/config.h
  25. +110
    -19
      keyboards/mlego/m65/rev2/info.json
  26. +2
    -20
      keyboards/mlego/m65/rev2/mcuconf.h
  27. +1
    -13
      keyboards/mlego/m65/rev2/rules.mk
  28. +4
    -17
      keyboards/mlego/m65/rev3/config.h
  29. +2
    -20
      keyboards/mlego/m65/rev3/halconf.h
  30. +111
    -20
      keyboards/mlego/m65/rev3/info.json
  31. +2
    -20
      keyboards/mlego/m65/rev3/mcuconf.h
  32. +1
    -13
      keyboards/mlego/m65/rev3/rules.mk
  33. +8
    -22
      keyboards/mlego/m65/rev4/config.h
  34. +2
    -20
      keyboards/mlego/m65/rev4/halconf.h
  35. +113
    -20
      keyboards/mlego/m65/rev4/info.json
  36. +2
    -20
      keyboards/mlego/m65/rev4/mcuconf.h
  37. +0
    -15
      keyboards/mlego/m65/rev4/rules.mk

+ 0
- 21
keyboards/mlego/m65/config.h View File

@ -1,21 +0,0 @@
/*
Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
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 <http://www.gnu.org/licenses/>.
*/
#pragma once
#define LOCKING_SUPPORT_ENABLE
#define LOCKING_RESYNC_ENABLE

+ 0
- 84
keyboards/mlego/m65/info.json View File

@ -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}
]
}
}
}

+ 2
- 16
keyboards/mlego/m65/keymaps/default/config.h View File

@ -1,19 +1,5 @@
/*
Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
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 <http://www.gnu.org/licenses/>.
*/
// Copyright 2020-2023 alin m elena (@alinelena)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once


+ 14
- 80
keyboards/mlego/m65/keymaps/default/keymap.c View File

@ -1,19 +1,5 @@
/*
Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
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 <http://www.gnu.org/licenses/>.
*/
// 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
}

+ 1
- 0
keyboards/mlego/m65/keymaps/default/rules.mk View File

@ -0,0 +1 @@
ENCODER_MAP_ENABLE = yes

+ 0
- 20
keyboards/mlego/m65/keymaps/dk/config.h View File

@ -1,20 +0,0 @@
/*
Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
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 <http://www.gnu.org/licenses/>.
*/
#pragma once
#define TAPPING_TOGGLE 2

+ 0
- 121
keyboards/mlego/m65/keymaps/dk/keymap.c View File

@ -1,121 +0,0 @@
/*
Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
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 <http://www.gnu.org/licenses/>.
*/
#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
}

+ 0
- 13
keyboards/mlego/m65/keymaps/dk/readme.md View File

@ -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

+ 6
- 21
keyboards/mlego/m65/keymaps/uk/config.h View File

@ -1,29 +1,14 @@
/*
Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
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 <http://www.gnu.org/licenses/>.
*/
// 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

+ 118
- 190
keyboards/mlego/m65/keymaps/uk/keymap.c View File

@ -1,106 +1,101 @@
/*
Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
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 <http://www.gnu.org/licenses/>.
*/
// 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
*
* ` MUTVupVdnprvplynxtEXTSLPWAKPSC =
*
* σ ω ε ρ ϑ τ π [ ]
* σ ω ε ρ ϑ τ π
*
* α δ φ γ ϰ λ 𝔼
*
* ( ζ ξ χ ν β η μ ± ×
* ( ζ ξ χ ν β η μ ± ×
*
* lwr rse )
* lwr rse )
*
lower layer shifted
raise layer shifted
*
* ¬ =
* ¬ +
*
* MB3 ϕ Ω θ { }
* MB3 ϕ Ω θ
*
* MB2 Α ψ Γ 𝓗 Λ
* MB2 ̇ ψ Γ 𝓗 Λ
*
* (MB1 Ξ ̇ Ν Β MSU
* ( Ξ MSU
*
* MB4lwr rse )MSLMSDMSR
* MB1MB4lwr rse )MSLMSDMSR
*
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 F9F10F11F12
*
@ -204,7 +199,7 @@ raise layer
*
* ă ș
*
* ç MWU
* ç MWU
*
* MWLMWDMWR
*
@ -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
}

+ 1
- 0
keyboards/mlego/m65/keymaps/uk/rules.mk View File

@ -1 +1,2 @@
UNICODEMAP_ENABLE = yes
ENCODER_MAP_ENABLE = yes

+ 0
- 20
keyboards/mlego/m65/keymaps/via/config.h View File

@ -1,20 +0,0 @@
/*
Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
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 <http://www.gnu.org/licenses/>.
*/
#pragma once
#define TAPPING_TOGGLE 2

+ 0
- 118
keyboards/mlego/m65/keymaps/via/keymap.c View File

@ -1,118 +0,0 @@
/*
Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
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 <http://www.gnu.org/licenses/>.
*/
#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
}

+ 0
- 1
keyboards/mlego/m65/keymaps/via/rules.mk View File

@ -1 +0,0 @@
VIA_ENABLE = yes

+ 9
- 224
keyboards/mlego/m65/lib/glcdfont.c View File

@ -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,
};

+ 144
- 105
keyboards/mlego/m65/m65.c View File

@ -1,139 +1,74 @@
/*
Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
// 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 <http://www.gnu.org/licenses/>.
*/
#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();
}

+ 38
- 127
keyboards/mlego/m65/m65.h View File

@ -1,154 +1,65 @@
/*
Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
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 <http://www.gnu.org/licenses/>.
*/
// 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
}

+ 1
- 1
keyboards/mlego/m65/readme.md View File

@ -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):


+ 4
- 17
keyboards/mlego/m65/rev1/config.h View File

@ -1,20 +1,7 @@
/*
Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
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 <http://www.gnu.org/licenses/>.
*/
// 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

+ 111
- 19
keyboards/mlego/m65/rev1/info.json View File

@ -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}
]
}
}
}

+ 2
- 20
keyboards/mlego/m65/rev1/mcuconf.h View File

@ -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 <http://www.gnu.org/licenses/>.
*/
/*
* 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


+ 1
- 13
keyboards/mlego/m65/rev1/rules.mk View File

@ -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

+ 2
- 15
keyboards/mlego/m65/rev2/board.h View File

@ -1,18 +1,5 @@
/* Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
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 <http://www.gnu.org/licenses/>.
*/
// Copyright 2020-2022 alin m elena (@alinelena)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include_next <board.h>


+ 4
- 17
keyboards/mlego/m65/rev2/config.h View File

@ -1,23 +1,10 @@
/*
Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
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 <http://www.gnu.org/licenses/>.
*/
// 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


+ 110
- 19
keyboards/mlego/m65/rev2/info.json View File

@ -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}
]
}
}
}

+ 2
- 20
keyboards/mlego/m65/rev2/mcuconf.h View File

@ -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 <http://www.gnu.org/licenses/>.
*/
/*
* 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


+ 1
- 13
keyboards/mlego/m65/rev2/rules.mk View File

@ -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

+ 4
- 17
keyboards/mlego/m65/rev3/config.h View File

@ -1,20 +1,7 @@
/*
Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
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 <http://www.gnu.org/licenses/>.
*/
// 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

+ 2
- 20
keyboards/mlego/m65/rev3/halconf.h View File

@ -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 <http://www.gnu.org/licenses/>.
*/
/*
* 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


+ 111
- 20
keyboards/mlego/m65/rev3/info.json View File

@ -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}
]
}
}
}

+ 2
- 20
keyboards/mlego/m65/rev3/mcuconf.h View File

@ -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 <http://www.gnu.org/licenses/>.
*/
/*
* 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


+ 1
- 13
keyboards/mlego/m65/rev3/rules.mk View File

@ -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

+ 8
- 22
keyboards/mlego/m65/rev4/config.h View File

@ -1,28 +1,14 @@
/*
Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com>
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 <http://www.gnu.org/licenses/>.
*/
// 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

+ 2
- 20
keyboards/mlego/m65/rev4/halconf.h View File

@ -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 <http://www.gnu.org/licenses/>.
*/
/*
* 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


+ 113
- 20
keyboards/mlego/m65/rev4/info.json View File

@ -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}
]
}
}
}

+ 2
- 20
keyboards/mlego/m65/rev4/mcuconf.h View File

@ -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 <http://www.gnu.org/licenses/>.
*/
/*
* 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


+ 0
- 15
keyboards/mlego/m65/rev4/rules.mk View File

@ -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

Loading…
Cancel
Save