Compare commits

...

20 Commits

Author SHA1 Message Date
Mikhail Filippov
dd132ff89f
Merge bbc95a7abf into 9bea332a21 2024-11-20 22:22:14 -08:00
Ryan
9bea332a21
qmk via2json: Improve macro parsing (#24345) 2024-11-21 17:20:05 +11:00
Ryan
8cbcdcac62
qmk new-keymap: validate keymap name (#23420) 2024-11-21 17:18:51 +11:00
Tepphhra
bbc95a7abf
Update keyboard.json 2024-08-30 12:07:17 +03:00
Tepphhra
e4b025eb8c
Update keyboards/tepphhra/rlycoolmacropad/keyboard.json
Co-authored-by: Drashna Jaelre <drashna@live.com>
2024-08-30 07:53:12 +03:00
Tepphhra
a0482d0d8f
Update keyboard.json 2024-08-29 13:33:09 +03:00
Tepphhra
001cec3102
Update readme.md 2024-08-29 04:18:18 +03:00
Tepphhra
b190fc60ce
Update keymap.c 2024-08-29 04:06:34 +03:00
Tepphhra
cdf08b5734
Rename info.json to keyboard.json 2024-08-29 03:56:33 +03:00
Tepphhra
9f794554dd
Delete keyboards/tepphhra/rlycoolmacropad/config.h 2024-08-29 03:56:09 +03:00
Tepphhra
86202bd514
Update keyboards/tepphhra/rlycoolmacropad/info.json
Co-authored-by: jack <jack@pngu.org>
2024-08-29 03:55:34 +03:00
Tepphhra
3cd13f6fb8
Update keyboards/tepphhra/rlycoolmacropad/info.json
Co-authored-by: jack <jack@pngu.org>
2024-08-29 03:55:13 +03:00
Tepphhra
e1b1e1bb41
Delete keyboards/tepphhra/rlycoolmacropad/rules.mk 2024-08-29 03:36:15 +03:00
Tepphhra
1eb393dee2
Update readme.md 2024-08-29 03:34:07 +03:00
Tepphhra
574732cb58
Create readme.md 2024-08-29 03:32:28 +03:00
Tepphhra
126e739a06
Update keymap.c 2024-08-29 03:18:04 +03:00
Tepphhra
40de02ba4f
Delete keyboards/tepphhra/rlycoolmacropad/keymaps/default/zxc 2024-08-29 03:03:38 +03:00
Tepphhra
ae58ee634a
Add files via upload 2024-08-29 03:02:26 +03:00
Tepphhra
ddbb445255
Add files via upload 2024-08-29 03:01:35 +03:00
Tepphhra
9d814aaa0b
Create new folder 2024-08-29 03:01:01 +03:00
5 changed files with 147 additions and 9 deletions

View File

@ -0,0 +1,49 @@
{
"keyboard_name": "rlycoolmacropad",
"manufacturer": "tepphhra",
"url": "",
"maintainer": "tepphhra",
"processor": "atmega32u4",
"bootloader": "caterina",
"matrix_pins": {
"cols": ["C6", "D4", "D0", "D1"],
"rows": ["B6", "E6", "B4", "B5"]
},
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"extrakey": true,
"mousekey": true,
"nkro": true
},
"layouts": {
"LAYOUT": {
"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": [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": [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": [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}
]
}
},
"usb": {
"vid": "0xFEED",
"pid": "0x0000",
"device_version": "0x0001"
}
}

View File

@ -0,0 +1,39 @@
/* Copyright 2024 Mikhail Filippov
*
* 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
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
/*
* -
* 0 / * -
* -
* 7 8 9 +
* -
* 4 5 6 <-
* -
* 1 2 3 ENTR
* -
*/
KC_KP_0, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS,
KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS,
KC_KP_4, KC_KP_5, KC_KP_6, KC_BACKSPACE,
KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ENTER
)
};

View File

@ -0,0 +1,22 @@
# rlycoolmacropad
4x4 ortholinear macropad on ATmega32u4
* Keyboard Maintainer: [Tepphhra](https://github.com/Tepphhra)
* Hardware Supported: ATmega32u4
Make example for this keyboard (after setting up your build environment):
make rlycoolmacropad:default
Flashing example for this keyboard:
make rlycoolmacropad:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader the following way:
* **Physical reset button**: Briefly press the button inside the case.

View File

@ -1,5 +1,6 @@
"""This script automates the copying of the default keymap into your own keymap. """This script automates the copying of the default keymap into your own keymap.
""" """
import re
import shutil import shutil
from milc import cli from milc import cli
@ -13,6 +14,13 @@ from qmk.keyboard import keyboard_completer, keyboard_folder
from qmk.userspace import UserspaceDefs from qmk.userspace import UserspaceDefs
def validate_keymap_name(name):
"""Returns True if the given keymap name contains only a-z, 0-9 and underscore characters.
"""
regex = re.compile(r'^[a-zA-Z0-9][a-zA-Z0-9_]+$')
return bool(regex.match(name))
def prompt_keyboard(): def prompt_keyboard():
prompt = """{fg_yellow}Select Keyboard{style_reset_all} prompt = """{fg_yellow}Select Keyboard{style_reset_all}
If you`re unsure you can view a full list of supported keyboards with {fg_yellow}qmk list-keyboards{style_reset_all}. If you`re unsure you can view a full list of supported keyboards with {fg_yellow}qmk list-keyboards{style_reset_all}.
@ -60,6 +68,10 @@ def new_keymap(cli):
cli.log.error(f'Default keymap {{fg_cyan}}{keymap_path_default}{{fg_reset}} does not exist!') cli.log.error(f'Default keymap {{fg_cyan}}{keymap_path_default}{{fg_reset}} does not exist!')
return False return False
if not validate_keymap_name(user_name):
cli.log.error('Keymap names must contain only {fg_cyan}a-z{fg_reset}, {fg_cyan}0-9{fg_reset} and {fg_cyan}_{fg_reset}! Please choose a different name.')
return False
if keymap_path_new.exists(): if keymap_path_new.exists():
cli.log.error(f'Keymap {{fg_cyan}}{user_name}{{fg_reset}} already exists! Please choose a different name.') cli.log.error(f'Keymap {{fg_cyan}}{user_name}{{fg_reset}} already exists! Please choose a different name.')
return False return False

View File

@ -29,6 +29,7 @@ def _convert_macros(via_macros):
if len(via_macros) == 0: if len(via_macros) == 0:
return list() return list()
split_regex = re.compile(r'(}\,)|(\,{)') split_regex = re.compile(r'(}\,)|(\,{)')
macro_group_regex = re.compile(r'({.+?})')
macros = list() macros = list()
for via_macro in via_macros: for via_macro in via_macros:
# Split VIA macro to its elements # Split VIA macro to its elements
@ -38,13 +39,28 @@ def _convert_macros(via_macros):
macro_data = list() macro_data = list()
for m in macro: for m in macro:
if '{' in m or '}' in m: if '{' in m or '}' in m:
# Found keycode(s) # Split macro groups
keycodes = m.split(',') macro_groups = macro_group_regex.findall(m)
# Remove whitespaces and curly braces from around keycodes for macro_group in macro_groups:
keycodes = list(map(lambda s: s.strip(' {}'), keycodes)) # Remove whitespaces and curly braces from around group
# Remove the KC prefix macro_group = macro_group.strip(' {}')
keycodes = list(map(lambda s: s.replace('KC_', ''), keycodes))
macro_data.append({"action": "tap", "keycodes": keycodes}) macro_action = 'tap'
macro_keycodes = []
if macro_group[0] == '+':
macro_action = 'down'
macro_keycodes.append(macro_group[1:])
elif macro_group[0] == '-':
macro_action = 'up'
macro_keycodes.append(macro_group[1:])
else:
macro_keycodes.extend(macro_group.split(',') if ',' in macro_group else [macro_group])
# Remove the KC prefixes
macro_keycodes = list(map(lambda s: s.replace('KC_', ''), macro_keycodes))
macro_data.append({"action": macro_action, "keycodes": macro_keycodes})
else: else:
# Found text # Found text
macro_data.append(m) macro_data.append(m)
@ -54,13 +70,13 @@ def _convert_macros(via_macros):
def _fix_macro_keys(keymap_data): def _fix_macro_keys(keymap_data):
macro_no = re.compile(r'MACRO0?([0-9]{1,2})') macro_no = re.compile(r'MACRO0?\(([0-9]{1,2})\)')
for i in range(0, len(keymap_data)): for i in range(0, len(keymap_data)):
for j in range(0, len(keymap_data[i])): for j in range(0, len(keymap_data[i])):
kc = keymap_data[i][j] kc = keymap_data[i][j]
m = macro_no.match(kc) m = macro_no.match(kc)
if m: if m:
keymap_data[i][j] = f'MACRO_{m.group(1)}' keymap_data[i][j] = f'MC_{m.group(1)}'
return keymap_data return keymap_data