Updates to mlego m65 (#20220)
Co-authored-by: Drashna Jaelre <drashna@live.com> Co-authored-by: Ryan <fauxpark@gmail.com>master
parent
c72d661b93
commit
007c0c1db4
|
@ -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
|
|
|
@ -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}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
||||||
}
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
ENCODER_MAP_ENABLE = yes
|
|
@ -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
|
|
|
@ -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
|
|
||||||
|
|
||||||
}
|
|
|
@ -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
|
|
|
@ -1,26 +1,11 @@
|
||||||
/*
|
// 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
|
||||||
|
|
|
@ -1,36 +1,16 @@
|
||||||
/*
|
// 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, // ε
|
||||||
|
@ -68,7 +48,7 @@ const uint32_t unicode_map[] PROGMEM = {
|
||||||
[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, // ξ
|
||||||
|
@ -77,8 +57,8 @@ const uint32_t unicode_map[] PROGMEM = {
|
||||||
[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, // ×
|
||||||
|
@ -87,20 +67,35 @@ const uint32_t unicode_map[] PROGMEM = {
|
||||||
[lL1] = 0x212b, // Å
|
[lL1] = 0x212b, // Å
|
||||||
[lk1] = 0x221D, // ∝
|
[lk1] = 0x221D, // ∝
|
||||||
[lK1] = 0x2112, // ℒ
|
[lK1] = 0x2112, // ℒ
|
||||||
|
[lbo1] = 0x22DC, // ⋜
|
||||||
|
[lbo2] = 0x2260, // ≠
|
||||||
|
[lbc1] = 0x22DD, // ⋝
|
||||||
|
[lbc2] = 0x2245, // ≅
|
||||||
|
[ls1] = 0x2261, // ≡
|
||||||
|
[ls2] = 0x2262, // ≢
|
||||||
[ra] = 0x0103, // ă
|
[ra] = 0x0103, // ă
|
||||||
[rA] = 0x0102, // Ă
|
[rA] = 0x0102, // Ă
|
||||||
[ra1] = 0x00E2, // â
|
[ra1] = 0x00E2, // â
|
||||||
[rA1] = 0x00C2, // Â
|
[rA1] = 0x00C2, // Â
|
||||||
[rc] = 0x00E7 , // ç
|
[rx] = 0x00E7, // ç
|
||||||
[rC] = 0x00C7 , // Ç
|
[rX] = 0x00C7, // Ç
|
||||||
[ri] = 0x00EE, // î
|
[ri] = 0x00EE, // î
|
||||||
[rI] = 0x00CE, // Î
|
[rI] = 0x00CE, // Î
|
||||||
[rs] = 0x0219 , // ș
|
[rs] = 0x0219, // ș⊄
|
||||||
[rS] = 0x0218, // Ș
|
[rS] = 0x0218, // Ș
|
||||||
[rt] = 0x021B, // ț
|
[rt] = 0x021B, // ț
|
||||||
[rT] = 0x021A, // Ț
|
[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
|
||||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
|
||||||
* │ ` │MUT│Vup│Vdn│prv│ply│nxt│EXT│SLP│WAK│PSC│ ⌫ │ = │
|
* │ ` │MUT│Vup│Vdn│prv│ply│nxt│EXT│SLP│WAK│PSC│ ⌫ │ = │
|
||||||
* ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
|
* ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
|
||||||
* │ │ σ │ ω │ ε │ ρ │ ϑ │ ℝ │ τ │ ∫ │ ∞ │ π │ [ │ ] │
|
* │ │ σ │ ω │ ε │ ρ │ ϑ │ ℝ │ τ │ ∫ │ ∞ │ π │ ⋜ │ ⋝ │
|
||||||
* ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
|
* ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
|
||||||
* │ │ α │ ∑ │ δ │ φ │ γ │ ℏ │ ∈ │ ϰ │ λ │ 𝔼 │ ∝ │ ⏎ │
|
* │ │ α │ ∑ │ δ │ φ │ γ │ ℏ │ ∈ │ ϰ │ λ │ 𝔼 │ ∝ │ ⏎ │
|
||||||
* ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
|
* ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
|
||||||
* │ ⇧(│ │ ζ │ ξ │ χ │ ν │ β │ η │ μ │ ≊ │ ± │ │ × │
|
* │ ⇧(│ ≡ │ ζ │ ξ │ χ │ ν │ β │ η │ μ │ ≈ │ ± │ │ × │
|
||||||
* ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
|
* ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
|
||||||
* │ ⎈ │ │lwr│⎇ │rse│ │ │ │⎇ │ ⇧)│ │ │ │
|
* │ │ │lwr│⎇ │rse│ │ │ │⎇ │ ⇧)│ │ │ │
|
||||||
* └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
|
* └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
|
||||||
lower layer shifted
|
raise layer shifted
|
||||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
|
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
|
||||||
* │ ¬ │ │ │ │ │ │ │ │ │ │ │ ⌫ │ = │
|
* │ ¬ │ │ │ │ │ │ │ │ │ │ │ ⌫ │ + │
|
||||||
* ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
|
* ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
|
||||||
* │MB3│ ϕ │ Ω │ ℇ │ ∇ │ θ │ ℤ │ ℂ │ ∮ │ ⊗ │ ∏ │ { │ } │
|
* │MB3│ ϕ │ Ω │ ℇ │ ∇ │ θ │ ℤ │ ℂ │ ∮ │ ⊗ │ ∏ │ ≠ │ ≅ │
|
||||||
* ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
|
* ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
|
||||||
* │MB2│ Α │ ⨋ │ ∂ │ ψ │ Γ │ 𝓗 │ ∉ │ ∆ │ Λ │ Å │ ℒ │ ⏎ │
|
* │MB2│ ̇ │ ⨋ │ ∂ │ ψ │ Γ │ 𝓗 │ ∉ │ ∆ │ Λ │ Å │ ℒ │ ⏎ │
|
||||||
* ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
|
* ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
|
||||||
* │ ⇧(│MB1│ ∡ │ Ξ │ ̇ │ Ν │ Β │ ∪ │ ∘ │ ≈ │ ∓ │MSU│ ⋅ │
|
* │ ⇧(│ ≢ │ ∡ │ Ξ │ ⊂ │ ⊃ │ ∩ │ ∪ │ ∘ │ ≉ │ ∓ │MSU│ ⋅ │
|
||||||
* ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
|
* ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
|
||||||
* │ ⎈ │MB4│lwr│⎇ │rse│ │ │ │⎇ │ ⇧)│MSL│MSD│MSR│
|
* │MB1│MB4│lwr│⎇ │rse│ │ │ │⎇ │ ⇧)│MSL│MSD│MSR│
|
||||||
* └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
|
* └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
|
||||||
MB - mouse buttons
|
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│ F9│F10│F11│F12│
|
* │ ⎋ │ F1│ F2│ F3│ F4│ F5│ F6│ F7│ F8│ F9│F10│F11│F12│
|
||||||
* ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
|
* ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
|
||||||
|
@ -204,7 +199,7 @@ raise layer
|
||||||
* ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
|
* ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
|
||||||
* │ ⇪ │ ă │ ș │ │ │ │ │ │ │ │ │ │ │
|
* │ ⇪ │ ă │ ș │ │ │ │ │ │ │ │ │ │ │
|
||||||
* ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
|
* ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
|
||||||
* │ │ │ │ │ ç │ │ │ │ │ │ │MWU│ │
|
* │ │ │ │ ç │ ⊄ │ ⊅ │ ∧ │ ∨ │ │ │ │MWU│ │
|
||||||
* ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
|
* ├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
|
||||||
* │ │ │ │ │ │ │ │ │ │ │MWL│MWD│MWR│
|
* │ │ │ │ │ │ │ │ │ │ │MWL│MWD│MWR│
|
||||||
* └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
|
* └───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
|
||||||
|
@ -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
|
|
||||||
}
|
|
||||||
|
|
|
@ -1 +1,2 @@
|
||||||
UNICODEMAP_ENABLE = yes
|
UNICODEMAP_ENABLE = yes
|
||||||
|
ENCODER_MAP_ENABLE = yes
|
||||||
|
|
|
@ -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
|
|
|
@ -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
|
|
||||||
}
|
|
|
@ -1 +0,0 @@
|
||||||
VIA_ENABLE = yes
|
|
|
@ -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,
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,59 +1,36 @@
|
||||||
/*
|
// 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[] = {
|
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};
|
||||||
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) {
|
||||||
|
@ -67,7 +44,6 @@ const rgblight_segment_t * const* my_rgb(void){
|
||||||
#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;
|
||||||
|
@ -80,57 +56,16 @@ void set_led_toggle(const uint8_t layer, const bool state){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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 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) {
|
void init_timer(void) {
|
||||||
oled_logo_timer = timer_read32();
|
oled_logo_timer = timer_read32();
|
||||||
|
@ -163,7 +98,34 @@ 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);
|
||||||
|
@ -191,7 +153,9 @@ 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()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
if ((timer_elapsed32(oled_logo_timer) < SHOW_LOGO)) {
|
if ((timer_elapsed32(oled_logo_timer) < SHOW_LOGO)) {
|
||||||
render_logo();
|
render_logo();
|
||||||
} else {
|
} else {
|
||||||
|
@ -202,3 +166,78 @@ bool oled_task_kb(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
#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();
|
||||||
|
}
|
||||||
|
|
|
@ -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);
|
|
||||||
bool encoder_update_user(uint8_t, bool);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
void set_rgb_layers(layer_state_t);
|
void set_rgb_layers(layer_state_t);
|
||||||
const rgblight_segment_t* const* my_rgb(void);
|
const rgblight_segment_t* const* my_rgb(void);
|
||||||
void set_default_rgb_layers(layer_state_t);
|
void set_default_rgb_layers(layer_state_t);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
void toggle_leds(const bool, const bool);
|
||||||
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) {
|
|
||||||
#ifdef LED_CAPS_LOCK_PIN
|
|
||||||
if ((PRODUCT_ID == 0x6061) && (DEVICE_VER == 0x0002)) {
|
|
||||||
writePin(LED_CAPS_LOCK_PIN, on);
|
|
||||||
}else{
|
}else{
|
||||||
writePin(LED_CAPS_LOCK_PIN, !on);
|
writePin(LED_RSE_PIN, on);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -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):
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
||||||
|
|
|
@ -1,26 +1,12 @@
|
||||||
/*
|
// 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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
# Build Options
|
|
||||||
# change yes to no to disable
|
|
||||||
#
|
|
||||||
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
|
|
||||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
|
||||||
CONSOLE_ENABLE = no # Console for debug
|
|
||||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
|
||||||
NKRO_ENABLE = yes # Enable N-Key Rollover
|
|
||||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
|
||||||
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
|
|
||||||
AUDIO_ENABLE = no # Audio output
|
|
||||||
ENCODER_ENABLE = yes # Enable encoder
|
|
||||||
OLED_ENABLE = yes # Enable OLED
|
|
||||||
WPM_ENABLE = yes # Enable WPM Counter
|
|
Loading…
Reference in New Issue