Updates to mlego m65 (#20220)

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: Ryan <fauxpark@gmail.com>
master
Alin Marin Elena 2023-10-12 06:26:20 +01:00 committed by GitHub
parent c72d661b93
commit 007c0c1db4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
37 changed files with 822 additions and 1508 deletions

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

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

View File

@ -1,19 +1,5 @@
/* // Copyright 2020-2023 alin m elena (@alinelena)
Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com> // 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/>.
*/
#pragma once #pragma once

View File

@ -1,19 +1,5 @@
/* // Copyright 2020-2023 alin m elena (@alinelena)
Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com> // 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 QMK_KEYBOARD_H #include QMK_KEYBOARD_H
@ -51,69 +37,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
}; };
// clang-format on // clang-format on
bool led_update_user(led_t led_state) { #if defined(ENCODER_MAP_ENABLE)
// Disable the default LED update code, so that lock LEDs could be reused to show layer status. const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
return false; [_QW] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
} #if defined(RGBLIGHT_ENABLE)
[_LWR] = {ENCODER_CCW_CW(RGB_HUD, RGB_HUI)},
void matrix_scan_user(void) { [_RSE] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[_ADJ] = {ENCODER_CCW_CW(RGB_RMOD, RGB_MOD)},
toggle_leds(); # 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)},
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 #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 #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
}

View File

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

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

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
}

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

View File

@ -1,29 +1,14 @@
/* // Copyright 2020-2023 alin m elena (@alinelena)
Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com> // 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/>.
*/
#pragma once #pragma once
#define TAPPING_TOGGLE 2 #define TAPPING_TOGGLE 2
#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX #define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX, UNICODE_MODE_MACOS, UNICODE_MODE_WINDOWS, UNICODE_MODE_WINCOMPOSE
//#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX, UNICODE_MODE_MACOS, UNICODE_MODE_WINCOMPOSE
#ifdef WPM_ENABLE #ifdef WPM_ENABLE
#define WPM_SAMPLE_SECONDS 10 # define WPM_SAMPLE_SECONDS 10
#define WPM_SAMPLE_PERIODS 100 # define WPM_SAMPLE_PERIODS 100
#define WPM_ALLOW_COUNT_REGRESSION # define WPM_ALLOW_COUNT_REGRESSION
#endif #endif

View File

@ -1,106 +1,101 @@
/* // Copyright 2020-2023 alin m elena (@alinelena)
Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com> // 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 QMK_KEYBOARD_H #include QMK_KEYBOARD_H
#include "keymap_uk.h" #include "keymap_uk.h"
#ifdef CONSOLE_ENABLE
#include "print.h"
#endif
const uint32_t unicode_map[] PROGMEM = { const uint32_t unicode_map[] PROGMEM = {
[la] = 0x03B1 , // α [la] = 0x03B1, // α
[lA] = 0x0391 , // Α [lA] = 0x0307, //
[lb] = 0x03B2 , // β [lb] = 0x03B2, // β
[lB] = 0x0392 , // Β [lB] = 0x2229, // ∩
[lc] = 0x03C7 , // χ [lc] = 0x03C7, // χ
[lC] = 0x0307 , // [lC] = 0x2282, // ⊂
[ld] = 0x03B4 , // δ [ld] = 0x03B4, // δ
[lD] = 0x2202 , // ∂ [lD] = 0x2202, // ∂
[le] = 0x03B5 , // ε [le] = 0x03B5, // ε
[lE] = 0x2107 , // ℇ [lE] = 0x2107, // ℇ
[lf] = 0x03C6 , // φ [lf] = 0x03C6, // φ
[lF] = 0x03C8 , // ψ [lF] = 0x03C8, // ψ
[lg] = 0x03B3 , // γ [lg] = 0x03B3, // γ
[lG] = 0x0393 , // Γ [lG] = 0x0393, // Γ
[lh] = 0x210F , // ℏ [lh] = 0x210F, // ℏ
[lH] = 0x1D4D7, // 𝓗 [lH] = 0x1D4D7, // 𝓗
[li] = 0x222B , // ∫ [li] = 0x222B, // ∫
[lI] = 0x222E , // ∮ [lI] = 0x222E, // ∮
[lj] = 0x2208 , // ∈ [lj] = 0x2208, // ∈
[lJ] = 0x2209 , // ∉ [lJ] = 0x2209, // ∉
[lk] = 0x03F0 , // ϰ [lk] = 0x03F0, // ϰ
[lK] = 0x2206 , // ∆ [lK] = 0x2206, // ∆
[ll] = 0x03BB , // λ [ll] = 0x03BB, // λ
[lL] = 0x039B , // Λ [lL] = 0x039B, // Λ
[lm] = 0x03BC , // μ [lm] = 0x03BC, // μ
[lM] = 0x2218 , // ∘ [lM] = 0x2218, // ∘
[ln] = 0x03B7 , // η [ln] = 0x03B7, // η
[lN] = 0x222A , // [lN] = 0x222A, //
[lo] = 0x221E , // ∞ [lo] = 0x221E, // ∞
[lO] = 0x2297 , // ⊗ [lO] = 0x2297, // ⊗
[lp] = 0x03C0 , // π [lp] = 0x03C0, // π
[lP] = 0x220F , // ∏ [lP] = 0x220F, // ∏
[lq] = 0x03C3 , // σ [lq] = 0x03C3, // σ
[lQ] = 0x03D5 , // ϕ [lQ] = 0x03D5, // ϕ
[lr] = 0x03C1 , // ρ [lr] = 0x03C1, // ρ
[lR] = 0x2207 , // ∇ [lR] = 0x2207, // ∇
[ls] = 0x2211 , // ∑ [ls] = 0x2211, // ∑
[lS] = 0x2A0B , // ⨋ [lS] = 0x2A0B, // ⨋
[lt] = 0x03D1 , // ϑ [lt] = 0x03D1, // ϑ
[lT] = 0x03B8 , // θ [lT] = 0x03B8, // θ
[lu] = 0x03C4 , // τ [lu] = 0x03C4, // τ
[lU] = 0x2102 , // [lU] = 0x2102, //
[lv] = 0x03BD , // χ [lv] = 0x03BD, // χ
[lV] = 0x039D , // Ν [lV] = 0x2283, // ⊃
[lw] = 0x03C9 , // ω [lw] = 0x03C9, // ω
[lW] = 0x03A9 , // Ω [lW] = 0x03A9, // Ω
[lx] = 0x03BE , // ξ [lx] = 0x03BE, // ξ
[lX] = 0x039E , // Ξ [lX] = 0x039E, // Ξ
[ly] = 0x211d , // [ly] = 0x211d, //
[lY] = 0x2124 , // [lY] = 0x2124, //
[lz] = 0x03B6 , // ζ [lz] = 0x03B6, // ζ
[lZ] = 0x2221 , // ∡ [lZ] = 0x2221, // ∡
[lc1] = 0x224A , // ≊ [lc1] = 0x2248, // ≈
[lC1] = 0x2248 , // ≈ [lC1] = 0x2249, // ≉
[lp1] = 0x00B1 , // ± [lp1] = 0x00B1, // ±
[lP1] = 0x2213 , // ∓ [lP1] = 0x2213, // ∓
[lq1] = 0x00D7 , // × [lq1] = 0x00D7, // ×
[lQ1] = 0x22C5 , // ⋅ [lQ1] = 0x22C5, // ⋅
[ll1] = 0x1D53C, // 𝔼 [ll1] = 0x1D53C, // 𝔼
[lL1] = 0x212b , // Å [lL1] = 0x212b, // Å
[lk1] = 0x221D , // ∝ [lk1] = 0x221D, // ∝
[lK1] = 0x2112 , // [lK1] = 0x2112, //
[ra] = 0x0103 , // ă [lbo1] = 0x22DC, // ⋜
[rA] = 0x0102 , // Ă [lbo2] = 0x2260, // ≠
[ra1] = 0x00E2 , // â [lbc1] = 0x22DD, // ⋝
[rA1] = 0x00C2 , // Â [lbc2] = 0x2245, // ≅
[rc] = 0x00E7 , // ç [ls1] = 0x2261, // ≡
[rC] = 0x00C7 , // Ç [ls2] = 0x2262, // ≢
[ri] = 0x00EE , // î [ra] = 0x0103, // ă
[rI] = 0x00CE , // Î [rA] = 0x0102, // Ă
[rs] = 0x0219 , // ș [ra1] = 0x00E2, // â
[rS] = 0x0218 , // Ș [rA1] = 0x00C2, // Â
[rt] = 0x021B , // ț [rx] = 0x00E7, // ç
[rT] = 0x021A , // Ț [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 // clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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), 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 = * ` 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 MB - mouse buttons
MS - mouse directions MS - mouse directions
@ -196,7 +191,7 @@ MS - mouse directions
_______, KC_BTN4, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R), _______, KC_BTN4, _______, _______, _______, _______, _______, _______, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R),
/* /*
raise layer lower layer
* *
* F1 F2 F3 F4 F5 F6 F7 F8 F9F10F11F12 * F1 F2 F3 F4 F5 F6 F7 F8 F9F10F11F12
* *
@ -204,7 +199,7 @@ raise layer
* *
* ă ș * ă ș
* *
* ç MWU * ç MWU
* *
* MWLMWDMWR * MWLMWDMWR
* *
@ -217,7 +212,7 @@ raise layer shifted
* *
* Ă Ș * Ă Ș
* *
* Ç * Ç
* *
* *
* *
@ -245,90 +240,23 @@ adj layer
[_ADJ] = LAYOUT_ortho_5x13( [_ADJ] = LAYOUT_ortho_5x13(
RGB_MOD, RGB_RMOD, A(KC_F2), _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_T , RGB_M_SW, 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_HUI, RGB_HUD , RGB_M_P , _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______ , RGB_M_SN,
RGB_SAI, RGB_SAD , RGB_M_B , _______, _______, _______, _______, _______, _______, _______, _______, _______ , RGB_M_K , RGB_SAI, RGB_SAD , RGB_M_B , _______, UC_NEXT, _______, _______, _______, _______, _______, _______, _______ , RGB_M_K ,
RGB_VAI, RGB_VAD , RGB_M_R , _______, _______, _______, _______, _______, _______, _______, _______, _______ , RGB_M_X , 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), RGB_TOG, _______ , _______ , _______, _______, _______, _______, _______, _______, _______, _______, RGB_M_TW, RGB_M_G),
}; };
// clang-format on // clang-format on
bool led_update_user(led_t led_state) { #if defined(ENCODER_MAP_ENABLE)
// Disable the default LED update code, so that lock LEDs could be reused to show layer status. const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
return false; [_QW] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
} #if defined(RGBLIGHT_ENABLE)
[_LWR] = {ENCODER_CCW_CW(RGB_HUD, RGB_HUI)},
void matrix_scan_user(void) { [_RSE] = {ENCODER_CCW_CW(RGB_VAD, RGB_VAI)},
[_ADJ] = {ENCODER_CCW_CW(RGB_RMOD, RGB_MOD)},
toggle_leds(); #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)},
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 #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 #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
#ifdef CONSOLE_ENABLE
debug_enable = true;
debug_matrix = true;
debug_keyboard = true;
#endif
}

View File

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

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

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
}

View File

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

View File

@ -4,228 +4,13 @@
#include "progmem.h" #include "progmem.h"
static const unsigned char PROGMEM font[] = { static const unsigned char PROGMEM font[] = {
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,
0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 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,
0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 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,
0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 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,
0x18, 0x3C, 0x7E, 0x3C, 0x18, 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,
0x1C, 0x57, 0x7D, 0x57, 0x1C, 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,
0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 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, 0x18, 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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,
0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, 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, 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,
}; };

View File

@ -1,139 +1,74 @@
/* // Copyright 2020-2023 alin m elena (@alinelena)
Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com> // SPDX-License-Identifier: GPL-2.0-or-later
This program is free software: you can redistribute it and/or modify #include QMK_KEYBOARD_H
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"
// let us assume we start with both layers off // let us assume we start with both layers off
static bool toggle_lwr = false; static bool toggle_lwr = false;
static bool toggle_rse = 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_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_CYAN}); 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_RED}); 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_GREEN}); 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); 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 #endif
#ifdef OLED_ENABLE #if defined(OLED_ENABLE)
static uint32_t oled_logo_timer = 0;
static uint32_t oled_logo_timer = 0; static bool clear_logo = true;
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};
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};
#endif #endif
#ifdef RGBLIGHT_ENABLE #if defined(RGBLIGHT_ENABLE)
void set_rgb_layers(layer_state_t state){
void set_rgb_layers(layer_state_t state) {
rgblight_set_layer_state(0, layer_state_cmp(state, _QW)); rgblight_set_layer_state(0, layer_state_cmp(state, _QW));
rgblight_set_layer_state(1, layer_state_cmp(state, _LWR)); rgblight_set_layer_state(1, layer_state_cmp(state, _LWR));
rgblight_set_layer_state(2, layer_state_cmp(state, _RSE)); rgblight_set_layer_state(2, layer_state_cmp(state, _RSE));
rgblight_set_layer_state(3, layer_state_cmp(state, _ADJ)); 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)); 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; return my_rgb_layers;
} }
#endif #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) { switch (layer) {
case _LWR: case _LWR:
toggle_lwr = state; toggle_lwr = state;
break; break;
case _RSE: case _RSE:
toggle_rse = state; toggle_rse = state;
break; break;
default: default:
break; break;
} }
} }
void toggle_leds(void){ void toggle_leds(const bool toggle_lwr, const bool toggle_rse) {
led_lwr(toggle_lwr); led_lwr(toggle_lwr);
led_rse(toggle_rse); led_rse(toggle_rse);
led_t led_state = host_keyboard_led_state();
led_caps(led_state.caps_lock);
if (layer_state_is(_ADJ)) { if (layer_state_is(_ADJ)) {
led_lwr(true); led_lwr(true);
led_rse(true); led_rse(true);
} }
} }
#ifdef ENCODER_ENABLE #if defined(OLED_ENABLE)
# define MEDIA_KEY_DELAY 10 void init_timer(void) {
oled_logo_timer = timer_read32();
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 user_oled_magic(void) { 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.num_lock ? PSTR("Lower ") : PSTR(" "), false);
oled_write_P(led_state.scroll_lock ? PSTR("Raise ") : PSTR(" "), false); oled_write_P(led_state.scroll_lock ? PSTR("Raise ") : PSTR(" "), false);
oled_write_P(led_state.caps_lock ? PSTR("CapsLock ") : 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); oled_write_P(PSTR("\nwpm: "), false);
uint8_t wpm = get_current_wpm(); uint8_t wpm = get_current_wpm();
oled_write_P(wpm != 0 ? get_u8_str(wpm,' ') : PSTR(" "), false); oled_write_P(wpm != 0 ? get_u8_str(wpm, ' ') : PSTR(" "), false);
#endif # endif
} }
void render_logo(void) { void render_logo(void) {
@ -175,13 +137,13 @@ void render_logo(void) {
} }
void clear_screen(void) { void clear_screen(void) {
if (clear_logo){ if (clear_logo) {
for (uint8_t i = 0; i < OLED_DISPLAY_HEIGHT; ++i) { for (uint8_t i = 0; i < OLED_DISPLAY_HEIGHT; ++i) {
for (uint8_t j = 0; j < OLED_DISPLAY_WIDTH; ++j) { for (uint8_t j = 0; j < OLED_DISPLAY_WIDTH; ++j) {
oled_write_raw_byte(0x0, i*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 # define SHOW_LOGO 5000
bool oled_task_kb(void) { bool oled_task_kb(void) {
if (!oled_task_user()) { return false; } if (!oled_task_user()) {
if ((timer_elapsed32(oled_logo_timer) < SHOW_LOGO)){ return false;
}
if ((timer_elapsed32(oled_logo_timer) < SHOW_LOGO)) {
render_logo(); render_logo();
}else{ } else {
clear_screen(); clear_screen();
user_oled_magic(); user_oled_magic();
} }
return false; return false;
} }
#endif #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();
}

View File

@ -1,154 +1,65 @@
/* // Copyright 2020-2023 alin m elena (@alinelena)
Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com> // 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/>.
*/
#pragma once #pragma once
#include "quantum.h" #include "quantum.h"
enum unicode_names { #if defined(UNICODEMAP_ENABLE)
la = 0, 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 };
lA, #endif
lb,
lB, enum layer_names { _QW = 0, _LWR, _RSE, _ADJ };
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
};
enum layer_names { #if defined(OLED_ENABLE)
_QW = 0,
_LWR,
_RSE,
_ADJ
};
#ifdef OLED_ENABLE
void user_oled_magic(void); void user_oled_magic(void);
void render_logo(void); void render_logo(void);
void clear_screen(void); void clear_screen(void);
void init_timer(void); void init_timer(void);
#endif #endif
#ifdef ENCODER_ENABLE #if defined(RGBLIGHT_ENABLE)
void my_encoders(const uint8_t, const bool); void set_rgb_layers(layer_state_t);
bool encoder_update_user(uint8_t, bool); const rgblight_segment_t* const* my_rgb(void);
void set_default_rgb_layers(layer_state_t);
#endif #endif
#ifdef RGBLIGHT_ENABLE void toggle_leds(const bool, const bool);
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(void);
void set_led_toggle(const uint8_t, 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
#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) { static inline void led_lwr(const bool on) {
#ifdef LED_NUM_LOCK_PIN #if defined(LED_LWR_PIN)
writePin(LED_NUM_LOCK_PIN, on); 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 #endif
} }
static inline void led_rse(const bool on) { static inline void led_rse(const bool on) {
#ifdef LED_SCROLL_LOCK_PIN #if defined(LED_RSE_PIN)
writePin(LED_SCROLL_LOCK_PIN, on); if ((PRODUCT_ID == 0x6064) || (PRODUCT_ID == 0x6065) ||
#endif (PRODUCT_ID == 0x6066) || (PRODUCT_ID == 0x6067)) {
} writePin(LED_RSE_PIN, !on);
static inline void led_caps(const bool on) { }else{
#ifdef LED_CAPS_LOCK_PIN writePin(LED_RSE_PIN, on);
if ((PRODUCT_ID == 0x6061) && (DEVICE_VER == 0x0002)) {
writePin(LED_CAPS_LOCK_PIN, on);
} else {
writePin(LED_CAPS_LOCK_PIN, !on);
} }
#endif #endif
} }

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)) * 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), * 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 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): Make example for this keyboard (after setting up your build environment):

View File

@ -1,20 +1,7 @@
/* // Copyright 2020-2023 alin m elena (@alinelena)
Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com> // 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/>.
*/
#pragma once #pragma once
#define RGBLIGHT_LAYERS #define LED_RSE_PIN B13
#define LED_LWR_PIN B12

View File

@ -1,42 +1,134 @@
{ {
"usb": { "manufacturer": "Alin Elena",
"pid": "0x6061", "keyboard_name": "mlego/m65 rev1",
"device_version": "0.0.1" "maintainer": "alin elena",
}, "bootloader": "stm32duino",
"matrix_pins": { "debounce": 5,
"cols": ["A10", "A15", "B3", "B4", "B5", "B9", "B8", "B7", "B6", "C15", "A0", "A7", "B10"],
"rows": ["B11", "B0", "B1", "A2", "A3"]
},
"diode_direction": "COL2ROW", "diode_direction": "COL2ROW",
"encoder": { "encoder": {
"rotary": [ "rotary": [
{"pin_a": "A8", "pin_b": "A9"} {"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": { "indicators": {
"caps_lock": "C13", "caps_lock": "C13",
"num_lock": "B12", "on_state": 0
"scroll_lock": "B13"
}, },
"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": { "rgblight": {
"saturation_steps": 8,
"led_count": 20,
"animations": { "animations": {
"alternating": true,
"breathing": true, "breathing": true,
"christmas": true,
"knight": true,
"rainbow_mood": true, "rainbow_mood": true,
"rainbow_swirl": true, "rainbow_swirl": true,
"snake": true,
"knight": true,
"christmas": true,
"static_gradient": true,
"rgb_test": true, "rgb_test": true,
"alternating": true, "snake": true,
"static_gradient": true,
"twinkle": 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": { "ws2812": {
"pin": "B15" "pin": "B15"
}, },
"processor": "STM32F103", "layouts": {
"bootloader": "stm32duino" "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}
]
}
}
} }

View File

@ -1,23 +1,5 @@
/* Copyright 2021-2022 QMK // Copyright 2020-2022 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/>.
*/
/*
* This file was auto-generated by:
* `qmk chibios-confmigrate -i keyboards/m65/rev1/mcuconf.h -r platforms/chibios/STM32_F103_STM32DUINO/configs/mcuconf.h`
*/
#pragma once #pragma once

View File

@ -1,13 +1 @@
# Build Options #intentionally blanck
# 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

View File

@ -1,18 +1,5 @@
/* Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com> // Copyright 2020-2022 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/>.
*/
#pragma once #pragma once
#include_next <board.h> #include_next <board.h>

View File

@ -1,23 +1,10 @@
/* // Copyright 2020-2023 alin m elena (@alinelena)
Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com> // 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/>.
*/
#pragma once #pragma once
#define RGBLIGHT_LAYERS #define LED_RSE_PIN B13
#define LED_LWR_PIN B12
#define EEPROM_PAGE_SIZE #define EEPROM_PAGE_SIZE
#define FEE_PAGE_SIZE 0x800 #define FEE_PAGE_SIZE 0x800

View File

@ -1,42 +1,133 @@
{ {
"usb": { "manufacturer": "Alin Elena",
"pid": "0x6061", "keyboard_name": "mlego/m65 rev2",
"device_version": "0.0.2" "maintainer": "alin elena",
}, "bootloader": "stm32duino",
"matrix_pins": {
"cols": ["A10", "A15", "B3", "B4", "B5", "B9", "B8", "B7", "B6", "C15", "A0", "A7", "B10"],
"rows": ["B11", "B0", "B1", "A2", "A3"]
},
"diode_direction": "COL2ROW", "diode_direction": "COL2ROW",
"encoder": { "encoder": {
"rotary": [ "rotary": [
{"pin_a": "A8", "pin_b": "A9"} {"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": { "indicators": {
"caps_lock": "B2", "caps_lock": "B2",
"num_lock": "B12", "on_state": 0
"scroll_lock": "B13"
}, },
"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": { "rgblight": {
"saturation_steps": 8,
"led_count": 20,
"animations": { "animations": {
"alternating": true,
"breathing": true, "breathing": true,
"christmas": true,
"knight": true,
"rainbow_mood": true, "rainbow_mood": true,
"rainbow_swirl": true, "rainbow_swirl": true,
"snake": true,
"knight": true,
"christmas": true,
"static_gradient": true,
"rgb_test": true, "rgb_test": true,
"alternating": true, "snake": true,
"static_gradient": true,
"twinkle": 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": { "ws2812": {
"pin": "B15" "pin": "B15"
}, },
"processor": "STM32F103", // GD32F303CCT6 "layouts": {
"bootloader": "stm32duino" "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}
]
}
}
} }

View File

@ -1,23 +1,5 @@
/* Copyright 2021-2022 QMK // Copyright 2020-2022 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/>.
*/
/*
* This file was auto-generated by:
* `qmk chibios-confmigrate -i keyboards/m65/rev1/mcuconf.h -r platforms/chibios/STM32_F103_STM32DUINO/configs/mcuconf.h`
*/
#pragma once #pragma once

View File

@ -1,13 +1 @@
# Build Options #blank purpose
# 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

View File

@ -1,20 +1,7 @@
/* // Copyright 2021-2023 alin m elena (@alinelena)
Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com> // 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/>.
*/
#pragma once #pragma once
#define RGBLIGHT_LAYERS #define LED_RSE_PIN B13
#define LED_LWR_PIN B12

View File

@ -1,23 +1,5 @@
/* Copyright 2020 QMK // Copyright 2020-2022 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/>.
*/
/*
* This file was auto-generated by:
* `qmk chibios-confmigrate -i keyboards/zvecr/zv48/f401/halconf.h -r platforms/chibios/common/configs/halconf.h`
*/
#pragma once #pragma once

View File

@ -1,43 +1,134 @@
{ {
"usb": { "manufacturer": "Alin Elena",
"pid": "0x6062", "keyboard_name": "mlego/m65 rev3",
"device_version": "0.0.1" "maintainer": "alin elena",
}, "board": "BLACKPILL_STM32_F401",
"matrix_pins": { "bootloader": "tinyuf2",
"cols": ["A10", "A15", "B3", "B4", "B5", "B9", "B8", "B7", "A1", "A2", "A3", "A4", "B1"],
"rows": ["B10", "A5", "A6", "A7", "B0"]
},
"diode_direction": "COL2ROW", "diode_direction": "COL2ROW",
"encoder": { "encoder": {
"rotary": [ "rotary": [
{"pin_a": "A0", "pin_b": "B6"} {"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": { "indicators": {
"caps_lock": "C13", "caps_lock": "C13",
"num_lock": "B12", "on_state": 0
"scroll_lock": "B13"
}, },
"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": { "rgblight": {
"saturation_steps": 8,
"led_count": 20,
"animations": { "animations": {
"alternating": true,
"breathing": true, "breathing": true,
"christmas": true,
"knight": true,
"rainbow_mood": true, "rainbow_mood": true,
"rainbow_swirl": true, "rainbow_swirl": true,
"snake": true,
"knight": true,
"christmas": true,
"static_gradient": true,
"rgb_test": true, "rgb_test": true,
"alternating": true, "snake": true,
"static_gradient": true,
"twinkle": 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": { "ws2812": {
"pin": "B15" "pin": "B15"
}, },
"processor": "STM32F401", "layouts": {
"bootloader": "tinyuf2", "LAYOUT_ortho_5x13": {
"board": "BLACKPILL_STM32_F401" "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}
]
}
}
} }

View File

@ -1,23 +1,5 @@
/* Copyright 2020 QMK // Copyright 2020-2022 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/>.
*/
/*
* 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`
*/
#pragma once #pragma once

View File

@ -1,13 +1 @@
# Build Options #blank on purpose
# 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

View File

@ -1,28 +1,14 @@
/* // Copyright 2021-2023 alin m elena (@alinelena)
Copyright 2021-2022 Alin M Elena <alinm.elena@gmail.com> // 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/>.
*/
#pragma once #pragma once
#define RGBLIGHT_LAYERS #define LED_RSE_PIN B13
#define LED_LWR_PIN B12
#ifdef OLED_ENABLE #ifdef OLED_ENABLE
# define OLED_DISPLAY_128X32 # define I2C1_SCL_PIN B9
#define I2C1_SCL_PIN B9 # define I2C1_SDA_PIN B8
#define I2C1_SDA_PIN B8 # define OLED_BRIGHTNESS 128
#define OLED_BRIGHTNESS 128 # define OLED_FONT_H "keyboards/mlego/m65/lib/glcdfont.c"
#define OLED_FONT_H "keyboards/mlego/m65/lib/glcdfont.c"
#endif #endif

View File

@ -1,23 +1,5 @@
/* Copyright 2020 QMK // Copyright 2021-2022 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/>.
*/
/*
* This file was auto-generated by:
* `qmk chibios-confmigrate -i keyboards/zvecr/zv48/f401/halconf.h -r platforms/chibios/common/configs/halconf.h`
*/
#pragma once #pragma once

View File

@ -1,43 +1,136 @@
{ {
"usb": { "manufacturer": "Alin Elena",
"pid": "0x6062", "keyboard_name": "mlego/m65 rev4",
"device_version": "0.0.2" "maintainer": "alin elena",
}, "board": "BLACKPILL_STM32_F401",
"matrix_pins": { "bootloader": "tinyuf2",
"cols": ["B14", "A8", "A10", "A15", "B3", "B4", "B5", "B7", "A1", "A2", "A3", "A4", "B1"],
"rows": ["B10", "A5", "A6", "A7", "B0"]
},
"diode_direction": "COL2ROW", "diode_direction": "COL2ROW",
"encoder": { "encoder": {
"rotary": [ "rotary": [
{"pin_a": "A0", "pin_b": "B6"} {"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": { "indicators": {
"caps_lock": "C13", "caps_lock": "C13",
"num_lock": "B12", "on_state": 0
"scroll_lock": "B13"
}, },
"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": { "rgblight": {
"saturation_steps": 8,
"led_count": 20,
"animations": { "animations": {
"alternating": true,
"breathing": true, "breathing": true,
"christmas": true,
"knight": true,
"rainbow_mood": true, "rainbow_mood": true,
"rainbow_swirl": true, "rainbow_swirl": true,
"snake": true,
"knight": true,
"christmas": true,
"static_gradient": true,
"rgb_test": true, "rgb_test": true,
"alternating": true, "snake": true,
"static_gradient": true,
"twinkle": 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": { "ws2812": {
"pin": "B15" "pin": "B15"
}, },
"processor": "STM32F401", "layouts": {
"bootloader": "tinyuf2", "LAYOUT_ortho_5x13": {
"board": "BLACKPILL_STM32_F401" "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}
]
}
}
} }

View File

@ -1,23 +1,5 @@
/* Copyright 2020 QMK // Copyright 2021-2022 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/>.
*/
/*
* 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`
*/
#pragma once #pragma once

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