forked from mirror/qmk_firmware
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
709628dfb2 | ||
|
|
e5faeea94d | ||
|
|
7ec819eb22 | ||
|
|
7785e87029 | ||
|
|
afb5335bf3 | ||
|
|
9fd72b352b | ||
|
|
7fe0c9c746 |
3
.github/workflows/unit_test.yml
vendored
3
.github/workflows/unit_test.yml
vendored
@@ -11,6 +11,7 @@ on:
|
||||
pull_request:
|
||||
paths:
|
||||
- 'builddefs/**'
|
||||
- '!builddefs/docsgen/**'
|
||||
- 'quantum/**'
|
||||
- 'platforms/**'
|
||||
- 'tmk_core/**'
|
||||
@@ -34,4 +35,4 @@ jobs:
|
||||
run: pip3 install -r requirements-dev.txt
|
||||
|
||||
- name: Run tests
|
||||
run: qmk test-c
|
||||
run: qmk test-c -j $(nproc)
|
||||
|
||||
@@ -136,6 +136,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
print_stored_setups();
|
||||
}
|
||||
return false;
|
||||
default:
|
||||
return true; // Process all other keycodes normally
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
@@ -8,8 +8,7 @@ A split 34 keys column staggered keyboard named and decorated after the rustlang
|
||||
* Hardware Supported:
|
||||
* Ferris 0.1 (With atmega32u4 chip. Comes in 4 variants: base, low, high and compact)
|
||||
* Ferris 0.2 (With stm32f072 chip. Comes in 4 variants: bling, mini, high and compact)
|
||||
* Ferris sweep (With pro-micro. Comes in a couple of PCB edge cuts shapes, but with identical pinout)
|
||||
* Hardware Availability: [Cuddly Keyboards](https://cuddlykeyboards.com)
|
||||
* Ferris sweep (With pro-micro. Comes in a couple of PCB edge cut shapes, but with an identical pinout)
|
||||
|
||||
Make examples for this keyboard (after setting up your build environment):
|
||||
|
||||
|
||||
126
keyboards/nulldesignco/nullpad/v1/keyboard.json
Executable file
126
keyboards/nulldesignco/nullpad/v1/keyboard.json
Executable file
@@ -0,0 +1,126 @@
|
||||
{
|
||||
"manufacturer": "nulldesignco",
|
||||
"keyboard_name": "nullpad",
|
||||
"maintainer": "quark-works",
|
||||
"bootloader": "rp2040",
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"rgb_matrix": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["GP27", "GP28", "GP8", "GP10"],
|
||||
"rows": ["GP12", "GP25", "GP11", "GP26", "GP9", "GP21"]
|
||||
},
|
||||
"processor": "RP2040",
|
||||
"rgb_matrix": {
|
||||
"animations": {
|
||||
"alphas_mods": true,
|
||||
"band_pinwheel_sat": true,
|
||||
"band_pinwheel_val": true,
|
||||
"band_sat": true,
|
||||
"band_spiral_sat": true,
|
||||
"band_spiral_val": true,
|
||||
"band_val": true,
|
||||
"breathing": true,
|
||||
"cycle_all": true,
|
||||
"cycle_left_right": true,
|
||||
"cycle_out_in": true,
|
||||
"cycle_out_in_dual": true,
|
||||
"cycle_pinwheel": true,
|
||||
"cycle_spiral": true,
|
||||
"cycle_up_down": true,
|
||||
"digital_rain": true,
|
||||
"dual_beacon": true,
|
||||
"flower_blooming": true,
|
||||
"gradient_left_right": true,
|
||||
"gradient_up_down": true,
|
||||
"hue_breathing": true,
|
||||
"hue_pendulum": true,
|
||||
"hue_wave": true,
|
||||
"jellybean_raindrops": true,
|
||||
"multisplash": true,
|
||||
"pixel_flow": true,
|
||||
"pixel_fractal": true,
|
||||
"pixel_rain": true,
|
||||
"rainbow_beacon": true,
|
||||
"rainbow_moving_chevron": true,
|
||||
"rainbow_pinwheels": true,
|
||||
"raindrops": true,
|
||||
"riverflow": true,
|
||||
"solid_multisplash": true,
|
||||
"solid_reactive": true,
|
||||
"solid_reactive_cross": true,
|
||||
"solid_reactive_multicross": true,
|
||||
"solid_reactive_multinexus": true,
|
||||
"solid_reactive_multiwide": true,
|
||||
"solid_reactive_nexus": true,
|
||||
"solid_reactive_simple": true,
|
||||
"solid_reactive_wide": true,
|
||||
"solid_splash": true,
|
||||
"splash": true,
|
||||
"starlight": true,
|
||||
"starlight_dual_hue": true,
|
||||
"starlight_dual_sat": true,
|
||||
"typing_heatmap": true
|
||||
},
|
||||
"driver": "ws2812",
|
||||
"layout": [
|
||||
{"matrix": [5, 1], "x": 37, "y": 0, "flags": 4},
|
||||
{"matrix": [3, 0], "x": 0, "y": 16, "flags": 4},
|
||||
{"matrix": [3, 1], "x": 75, "y": 16, "flags": 4},
|
||||
{"matrix": [3, 2], "x": 150, "y": 16, "flags": 4},
|
||||
{"matrix": [4, 2], "x": 150, "y": 0, "flags": 4},
|
||||
{"matrix": [4, 3], "x": 224, "y": 8, "flags": 4},
|
||||
{"matrix": [2, 2], "x": 150, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 1], "x": 75, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 0], "x": 0, "y": 32, "flags": 4},
|
||||
{"matrix": [1, 0], "x": 0, "y": 48, "flags": 4},
|
||||
{"matrix": [1, 1], "x": 75, "y": 48, "flags": 4},
|
||||
{"matrix": [1, 2], "x": 150, "y": 48, "flags": 4},
|
||||
{"matrix": [2, 3], "x": 224, "y": 40, "flags": 4},
|
||||
{"matrix": [0, 3], "x": 224, "y": 64, "flags": 4},
|
||||
{"matrix": [0, 2], "x": 150, "y": 64, "flags": 4},
|
||||
{"matrix": [0, 1], "x": 75, "y": 64, "flags": 4},
|
||||
{"matrix": [0, 0], "x": 0, "y": 64, "flags": 4}
|
||||
],
|
||||
"sleep": true
|
||||
},
|
||||
"url": "https://nulldesignco.com/",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x0011",
|
||||
"vid": "0x6E6C"
|
||||
},
|
||||
"ws2812": {
|
||||
"driver": "vendor",
|
||||
"pin": "GP18"
|
||||
},
|
||||
"community_layouts": ["numpad_5x4"],
|
||||
"layouts": {
|
||||
"LAYOUT_numpad_5x4": {
|
||||
"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": [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": 1, "h": 2},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3},
|
||||
{"matrix": [3, 1], "x": 1, "y": 3},
|
||||
{"matrix": [3, 2], "x": 2, "y": 3},
|
||||
{"matrix": [5, 1], "x": 0, "y": 4, "w": 2},
|
||||
{"matrix": [4, 2], "x": 2, "y": 4},
|
||||
{"matrix": [4, 3], "x": 3, "y": 3, "h": 2}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
22
keyboards/nulldesignco/nullpad/v1/keymaps/default/keymap.c
Executable file
22
keyboards/nulldesignco/nullpad/v1/keymaps/default/keymap.c
Executable file
@@ -0,0 +1,22 @@
|
||||
// Copyright 2025 quark-works
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT_numpad_5x4(
|
||||
KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
KC_P7, KC_P8, KC_P9,
|
||||
KC_P4, KC_P5, KC_P6, KC_PPLS,
|
||||
KC_P1, KC_P2, KC_P3,
|
||||
KC_P0, KC_PDOT, KC_PENT
|
||||
)
|
||||
};
|
||||
|
||||
bool rgb_matrix_indicators_user(void) {
|
||||
if (host_keyboard_led_state().num_lock) {
|
||||
rgb_matrix_set_color(16, 255, 0, 0);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
27
keyboards/nulldesignco/nullpad/v1/readme.md
Executable file
27
keyboards/nulldesignco/nullpad/v1/readme.md
Executable file
@@ -0,0 +1,27 @@
|
||||
# nullpad v1
|
||||
|
||||

|
||||
|
||||
Numpad tray mount PCB with RGB per key.
|
||||
|
||||
* Keyboard Maintainer: [Quark](https://github.com/quark-works)
|
||||
* Hardware Supported: PCB
|
||||
* Hardware Availability: https://nulldesignco.com/
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make nulldesignco/nullpad/v1:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make nulldesignco/nullpad/v1: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 in 3 ways:
|
||||
|
||||
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (top left key or NumLock) and plug in the keyboard
|
||||
* **Physical boot button**: Hold the button labeled as "BOOT" on the back of the board while you connect the keyboard to your computer.
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
|
||||
@@ -23,7 +23,7 @@ def mass_compile_targets(targets: List[BuildTarget], clean: bool, dry_run: bool,
|
||||
os.environ.setdefault('SKIP_SCHEMA_VALIDATION', '1')
|
||||
|
||||
make_cmd = find_make()
|
||||
builddir = Path(QMK_FIRMWARE) / '.build'
|
||||
builddir = Path(env.get("BUILD_DIR")) if env.get("BUILD_DIR") is not None else Path(QMK_FIRMWARE) / '.build'
|
||||
makefile = builddir / 'parallel_kb_builds.mk'
|
||||
|
||||
if dry_run:
|
||||
@@ -71,8 +71,8 @@ print_failures: all_targets
|
||||
command = target.compile_command(**env)
|
||||
command[0] = '+@$(MAKE)' # Override the make so that we can use jobserver to handle parallelism
|
||||
extra_args = '_'.join([f"{k}_{v}" for k, v in target.extra_args.items()])
|
||||
build_log = f"{QMK_FIRMWARE}/.build/build.log.{os.getpid()}.{keyboard_safe}.{keymap_name}"
|
||||
failed_log = f"{QMK_FIRMWARE}/.build/failed.log.{os.getpid()}.{keyboard_safe}.{keymap_name}"
|
||||
build_log = f"{builddir}/build.log.{os.getpid()}.{keyboard_safe}.{keymap_name}"
|
||||
failed_log = f"{builddir}/failed.log.{os.getpid()}.{keyboard_safe}.{keymap_name}"
|
||||
target_suffix = ''
|
||||
if len(extra_args) > 0:
|
||||
build_log += f".{extra_args}"
|
||||
@@ -101,9 +101,9 @@ all_targets: {target_filename}{target_suffix}_binary
|
||||
# yapf: disable
|
||||
f.write(
|
||||
f"""\
|
||||
@rm -rf "{QMK_FIRMWARE}/.build/{target_filename}.elf" 2>/dev/null || true
|
||||
@rm -rf "{QMK_FIRMWARE}/.build/{target_filename}.map" 2>/dev/null || true
|
||||
@rm -rf "{QMK_FIRMWARE}/.build/obj_{target_filename}" || true
|
||||
@rm -rf "{builddir}/{target_filename}.elf" 2>/dev/null || true
|
||||
@rm -rf "{builddir}/{target_filename}.map" 2>/dev/null || true
|
||||
@rm -rf "{builddir}/obj_{target_filename}" || true
|
||||
"""# noqa
|
||||
)
|
||||
# yapf: enable
|
||||
|
||||
@@ -418,7 +418,7 @@ __EOT__
|
||||
# Get the latest toolchain release from https://github.com/qmk/qmk_toolchains
|
||||
local latest_toolchains_release=$(github_api_call repos/qmk/qmk_toolchains/releases/latest - | grep -oE '"tag_name": "[^"]+' | grep -oE '[^"]+$')
|
||||
# Download the specific release asset with a matching keyword
|
||||
local toolchain_url=$(github_api_call repos/qmk/qmk_toolchains/releases/tags/$latest_toolchains_release - | grep -oE '"browser_download_url": "[^"]+"' | grep -oE 'https://[^"]+' | grep $(fn_os)$(fn_arch))
|
||||
local toolchain_url=$(github_api_call repos/qmk/qmk_toolchains/releases/tags/$latest_toolchains_release - | grep -oE '"browser_download_url": "[^"]+"' | grep -oE 'https://[^"]+' | grep -E "qmk_toolchains-.*$(fn_os)$(fn_arch)")
|
||||
if [ -z "$toolchain_url" ]; then
|
||||
echo "No toolchain found for this OS/Arch combination." >&2
|
||||
exit 1
|
||||
@@ -445,7 +445,7 @@ __EOT__
|
||||
# Get the latest flashing tools release from https://github.com/qmk/qmk_flashutils
|
||||
local latest_flashutils_release=$(github_api_call repos/qmk/qmk_flashutils/releases/latest - | grep -oE '"tag_name": "[^"]+' | grep -oE '[^"]+$')
|
||||
# Download the specific release asset with a matching keyword
|
||||
local flashutils_url=$(github_api_call repos/qmk/qmk_flashutils/releases/tags/$latest_flashutils_release - | grep -oE '"browser_download_url": "[^"]+"' | grep -oE 'https://[^"]+' | grep "$osarchvariant")
|
||||
local flashutils_url=$(github_api_call repos/qmk/qmk_flashutils/releases/tags/$latest_flashutils_release - | grep -oE '"browser_download_url": "[^"]+"' | grep -oE 'https://[^"]+' | grep -E "qmk_flashutils-.*$osarchvariant")
|
||||
if [ -z "$flashutils_url" ]; then
|
||||
echo "No flashing tools found for this OS/Arch combination." >&2
|
||||
exit 1
|
||||
|
||||
Reference in New Issue
Block a user