From 52b7ebd6be2532fc41ef1593be8e22c5f39d9a1e Mon Sep 17 00:00:00 2001 From: James Young <18669334+noroadsleft@users.noreply.github.com> Date: Mon, 15 Mar 2021 01:25:00 -0700 Subject: [PATCH] M10-A refactor (#12242) --- keyboards/m10a/config.h | 38 ++++---- keyboards/m10a/info.json | 26 +++++ keyboards/m10a/keymaps/default/keymap.c | 120 ++++++++++++++++++------ keyboards/m10a/keymaps/via/config.h | 20 +++- keyboards/m10a/keymaps/via/keymap.c | 120 ++++++++++++++++++------ keyboards/m10a/m10a.c | 22 ++++- keyboards/m10a/m10a.h | 29 ++++-- keyboards/m10a/readme.md | 18 +++- keyboards/m10a/rules.mk | 32 +++---- 9 files changed, 311 insertions(+), 114 deletions(-) create mode 100644 keyboards/m10a/info.json diff --git a/keyboards/m10a/config.h b/keyboards/m10a/config.h index 6ece2131b..01f9d0d0a 100644 --- a/keyboards/m10a/config.h +++ b/keyboards/m10a/config.h @@ -1,22 +1,22 @@ -/* -Copyright 2012 Jun Wako +/* Copyright + * 2017 Josh Black (@consolenaut) + * 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ -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 . -*/ - -#ifndef CONFIG_H -#define CONFIG_H +#pragma once #include "config_common.h" @@ -72,5 +72,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -#endif diff --git a/keyboards/m10a/info.json b/keyboards/m10a/info.json new file mode 100644 index 000000000..769225929 --- /dev/null +++ b/keyboards/m10a/info.json @@ -0,0 +1,26 @@ +{ + "keyboard_name": "Rama Works X Machine Industries M10-A Macropad", + "url": "", + "maintainer": "qmk", + "width": 3, + "height": 4, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":0, "y":0}, + {"x":1, "y":0}, + {"x":2, "y":0}, + + {"x":0, "y":1}, + {"x":1, "y":1}, + {"x":2, "y":1}, + + {"x":0, "y":2}, + {"x":1, "y":2}, + {"x":2, "y":2}, + + {"x":1, "y":3, "w":2} + ] + } + } +} diff --git a/keyboards/m10a/keymaps/default/keymap.c b/keyboards/m10a/keymaps/default/keymap.c index 9c9f4c688..4fb8eb584 100644 --- a/keyboards/m10a/keymaps/default/keymap.c +++ b/keyboards/m10a/keymaps/default/keymap.c @@ -1,39 +1,101 @@ +/* Copyright + * 2017 Josh Black (@consolenaut) + * 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include QMK_KEYBOARD_H - -// Each layer gets a name for readability, which is then used in the keymap matrix below. -// The underscores don't mean anything - you can have a layer called STUFF or any other name. -// Layer names don't all need to be of the same length, obviously, and you can also skip them -// entirely and just use numbers. - -enum layers { - _LAYER0, - _LAYER1, - _LAYER2, - _LAYER3, - _LAYER4, - _LAYER5, - _LAYER6, - _LAYER7, - _LAYER8, - _LAYER9 +enum layer_names { + _LAYER0, + _LAYER1, + _LAYER2, + _LAYER3, + _LAYER4, + _LAYER5, + _LAYER6, + _LAYER7, + _LAYER8, + _LAYER9 }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_LAYER0] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER1] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER2] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER3] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER4] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER5] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER6] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER7] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER8] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER9] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J) + [_LAYER0] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER1] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER2] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER3] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER4] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER5] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER6] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER7] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER8] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER9] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ) }; void matrix_init_user(void) { - #ifdef BACKLIGHT_ENABLE +#ifdef BACKLIGHT_ENABLE backlight_level(0); - #endif +#endif } diff --git a/keyboards/m10a/keymaps/via/config.h b/keyboards/m10a/keymaps/via/config.h index 79248f04f..cd097f8da 100644 --- a/keyboards/m10a/keymaps/via/config.h +++ b/keyboards/m10a/keymaps/via/config.h @@ -1,4 +1,22 @@ +/* Copyright + * 2020 Jason Williams (Wilba) + * 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #pragma once // Keep default crazy number of layers -#define DYNAMIC_KEYMAP_LAYER_COUNT 10 \ No newline at end of file +#define DYNAMIC_KEYMAP_LAYER_COUNT 10 diff --git a/keyboards/m10a/keymaps/via/keymap.c b/keyboards/m10a/keymaps/via/keymap.c index 9c9f4c688..59cc38ee8 100644 --- a/keyboards/m10a/keymaps/via/keymap.c +++ b/keyboards/m10a/keymaps/via/keymap.c @@ -1,39 +1,101 @@ +/* Copyright + * 2020 Jason Williams (Wilba) + * 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include QMK_KEYBOARD_H - -// Each layer gets a name for readability, which is then used in the keymap matrix below. -// The underscores don't mean anything - you can have a layer called STUFF or any other name. -// Layer names don't all need to be of the same length, obviously, and you can also skip them -// entirely and just use numbers. - -enum layers { - _LAYER0, - _LAYER1, - _LAYER2, - _LAYER3, - _LAYER4, - _LAYER5, - _LAYER6, - _LAYER7, - _LAYER8, - _LAYER9 +enum layer_names { + _LAYER0, + _LAYER1, + _LAYER2, + _LAYER3, + _LAYER4, + _LAYER5, + _LAYER6, + _LAYER7, + _LAYER8, + _LAYER9 }; const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { - [_LAYER0] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER1] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER2] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER3] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER4] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER5] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER6] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER7] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER8] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J), - [_LAYER9] = LAYOUT(KC_A, KC_B, KC_C, KC_D, KC_E, KC_F, KC_G, KC_H, KC_I, KC_NO, KC_NO, KC_J) + [_LAYER0] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER1] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER2] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER3] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER4] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER5] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER6] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER7] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER8] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ), + [_LAYER9] = LAYOUT( + KC_A, KC_B, KC_C, + KC_D, KC_E, KC_F, + KC_G, KC_H, KC_I, + KC_J + ) }; void matrix_init_user(void) { - #ifdef BACKLIGHT_ENABLE +#ifdef BACKLIGHT_ENABLE backlight_level(0); - #endif +#endif } diff --git a/keyboards/m10a/m10a.c b/keyboards/m10a/m10a.c index 9cc7f069a..d9e7503a4 100644 --- a/keyboards/m10a/m10a.c +++ b/keyboards/m10a/m10a.c @@ -1,5 +1,19 @@ -#include "m10a.h" +/* Copyright + * 2017 Josh Black (@consolenaut) + * 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ -void matrix_init_kb(void) { - matrix_init_user(); -} \ No newline at end of file +#include "m10a.h" diff --git a/keyboards/m10a/m10a.h b/keyboards/m10a/m10a.h index a62913aa2..2eb14b7a7 100644 --- a/keyboards/m10a/m10a.h +++ b/keyboards/m10a/m10a.h @@ -1,19 +1,36 @@ -#ifndef M10A_H -#define M10A_H +/* Copyright + * 2017 Josh Black (@consolenaut) + * 2021 QMK + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once #include "quantum.h" +#define ___ KC_NO + #define LAYOUT( \ k00, k01, k02, \ k10, k11, k12, \ k20, k21, k22, \ - k30, k31, k32 \ + k32 \ ) \ { \ { k00, k01, k02 }, \ { k10, k11, k12 }, \ { k20, k21, k22 }, \ - { k30, k31, k32 } \ + { ___, ___, k32 } \ } - -#endif diff --git a/keyboards/m10a/readme.md b/keyboards/m10a/readme.md index 7123e6462..3918ad21b 100644 --- a/keyboards/m10a/readme.md +++ b/keyboards/m10a/readme.md @@ -1,13 +1,21 @@ # Rama Works X Machine Industries M10-A Macropad -Firmware for custom macropad PCB +![Rama Works X Machine Industries M10-A Macropad](https://raw.githubusercontent.com/noroadsleft/qmk_images/master/keyboards/m10a/image-asset9_640.jpg) -Keyboard Maintainer: QMK Community -Hardware Supported: Rama Works M10-A -Hardware Availability: [Rama Works](https://rama.works/m10-a) +A 10-key macro pad with support for single-color LED backlighting in a milled aluminum case. + +* Keyboard Maintainer: QMK Community +* Hardware Supported: Rama Works M10-A +* Hardware Availability: [Rama Works](https://rama.works/m10-a) Make example for this keyboard (after setting up your build environment): make m10a:default -See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. +Flashing example for this keyboard: + + make m10a:default:flash + +To reset the board into bootloader mode, tap the Reset switch mounted on the top side of the PCB, beneath the 2u keycap. + +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). diff --git a/keyboards/m10a/rules.mk b/keyboards/m10a/rules.mk index 71ef0ed64..0f8368e63 100644 --- a/keyboards/m10a/rules.mk +++ b/keyboards/m10a/rules.mk @@ -2,32 +2,24 @@ MCU = atmega32u4 # Bootloader selection -# Teensy halfkay -# Pro Micro caterina -# Atmel DFU atmel-dfu -# LUFA DFU lufa-dfu -# QMK DFU qmk-dfu -# ATmega32A bootloadHID -# ATmega328P USBasp BOOTLOADER = atmel-dfu # Build Options -# change to "no" to disable the options, or define them in the Makefile in -# the appropriate keymap folder that will get included automatically +# change yes to no to disable # BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration 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 # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality -MIDI_ENABLE = no # MIDI controls -AUDIO_ENABLE = no # Audio output on port C6 -UNICODE_ENABLE = yes # Unicode -BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. -API_SYSEX_ENABLE = yes - +COMMAND_ENABLE = no # Commands for debug and configuration # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE -SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = yes # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +UNICODE_ENABLE = yes # Unicode +API_SYSEX_ENABLE = yes