Anne Pro 2 Refactor (#16864) * move RGB Matrix rules to keyboard level * move PERMISSIVE_HOLD config to keyboard level * annepro2.c: convert tabs to spaces * refactor rules.mk files Reformats each version's `rules.mk` file to be arranged more similarly to those of the rest of the keyboards in QMK. No logic change. * annepro2.c: allow compilation without RGB Matrix Wraps the `led_enabled` definition and the `KC_AP_RGB_*` keycodes in `#ifdef RGB_MATRIX_ENABLE`, allowing successful compilation if the user sets `RGB_MATRIX_ENABLE = no`. * rework readme files Reworks the main `readme.md` file to be more friendly to GitHub viewing, and removes the single-line version-specific readme files (exposes the main readme to QMK Configurator users). * info.json: update maintainer value * info.json: apply friendly formatting
13 files changed, 211 insertions(+), 503 deletions(-) M keyboards/annepro2/annepro2.c M keyboards/annepro2/c15/config.h D keyboards/annepro2/c15/readme.md M keyboards/annepro2/c15/rules.mk M keyboards/annepro2/c18/config.h D keyboards/annepro2/c18/readme.md M keyboards/annepro2/c18/rules.mk M keyboards/annepro2/info.json D keyboards/annepro2/keymaps/default-full-caps/config.h D keyboards/annepro2/keymaps/default-layer-indicators/config.h D keyboards/annepro2/keymaps/default/config.h D keyboards/annepro2/keymaps/default/rules.mk M keyboards/annepro2/readme.md
M keyboards/annepro2/annepro2.c => keyboards/annepro2/annepro2.c +56 -57
@@ 42,11 42,10 @@ static const SerialConfig ble_uart_config = { static uint8_t led_mcu_wakeup[11] = {0x7b, 0x10, 0x43, 0x10, 0x03, 0x00, 0x00, 0x7d, 0x02, 0x01, 0x02}; static uint8_t led_enabled = 1; ble_capslock_t ble_capslock = {._dummy = {0}, .caps_lock = false}; #ifdef RGB_MATRIX_ENABLE static uint8_t led_enabled = 1; static uint8_t current_rgb_row = 0; #endif @@ 227,69 226,69 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { if(rgb_matrix_is_enabled()) ap2_led_disable(); else ap2_led_enable(); return true; #endif case KC_AP_RGB_VAI: if (record->event.pressed) { if (get_mods() & MOD_MASK_SHIFT) { rgb_matrix_increase_hue(); return false; } else if (get_mods() & MOD_MASK_CTRL) { rgb_matrix_decrease_hue(); return false; } else { rgb_matrix_increase_val(); } } if (record->event.pressed) { if (get_mods() & MOD_MASK_SHIFT) { rgb_matrix_increase_hue(); return false; } else if (get_mods() & MOD_MASK_CTRL) { rgb_matrix_decrease_hue(); return false; } else { rgb_matrix_increase_val(); } } return true; case KC_AP_RGB_VAD: if (record->event.pressed) { if (get_mods() & MOD_MASK_SHIFT) { rgb_matrix_increase_sat(); return false; } else if (get_mods() & MOD_MASK_CTRL) { rgb_matrix_decrease_sat(); return false; } else { rgb_matrix_decrease_val(); } } if (record->event.pressed) { if (get_mods() & MOD_MASK_SHIFT) { rgb_matrix_increase_sat(); return false; } else if (get_mods() & MOD_MASK_CTRL) { rgb_matrix_decrease_sat(); return false; } else { rgb_matrix_decrease_val(); } } return true; case KC_AP_RGB_TOG: if (record->event.pressed) { if (get_mods() & MOD_MASK_SHIFT) { rgb_matrix_increase_speed(); return false; } else if (get_mods() & MOD_MASK_CTRL) { rgb_matrix_decrease_speed(); return false; } else { if (led_enabled) { ap2_led_disable(); rgb_matrix_disable(); led_enabled = 0; } else { ap2_led_enable(); rgb_matrix_enable(); led_enabled = 1; } return true; } } if (record->event.pressed) { if (get_mods() & MOD_MASK_SHIFT) { rgb_matrix_increase_speed(); return false; } else if (get_mods() & MOD_MASK_CTRL) { rgb_matrix_decrease_speed(); return false; } else { if (led_enabled) { ap2_led_disable(); rgb_matrix_disable(); led_enabled = 0; } else { ap2_led_enable(); rgb_matrix_enable(); led_enabled = 1; } return true; } } return true; case KC_AP_RGB_MOD: if (record->event.pressed) { if (get_mods() & MOD_MASK_CTRL) { rgb_matrix_step_reverse(); return false; } else { rgb_matrix_step(); } } if (record->event.pressed) { if (get_mods() & MOD_MASK_CTRL) { rgb_matrix_step_reverse(); return false; } else { rgb_matrix_step(); } } return true; #endif default: break;
M keyboards/annepro2/c15/config.h => keyboards/annepro2/c15/config.h +3 -0
@@ 46,3 46,6 @@ #define MATRIX_COL_PINS \ { C4, C5, B10, B11, C0, A15, A8, A10, A11, A12, A13, A14, B2, B3 } // Obins stock firmware has something similar to this already enabled, but disabled by default in QMK #define PERMISSIVE_HOLD
D keyboards/annepro2/c15/readme.md => keyboards/annepro2/c15/readme.md +0 -1
M keyboards/annepro2/c15/rules.mk => keyboards/annepro2/c15/rules.mk +32 -20
@@ 1,12 1,3 @@ # Anne Pro 2 SRC = \ matrix.c \ annepro2_ble.c \ ap2_led.c \ protocol.c \ rgb_driver.c \ config_led.c # MCU MCU = cortex-m0plus @@ ARMV = 6 18,23 9,44 @@ MCU_STARTUP = ht32f523xx BOARD = ANNEPRO2_C15 # Options # Bootloader selection BOOTLOADER = custom PROGRAM_CMD = annepro2_tools --boot $(BUILD_DIR)/$(TARGET).bin # Build Options # change yes to no to disable # BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # 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 = no # Enable N-Key Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow AUDIO_ENABLE = no # Audio output # Custom RGB matrix handling RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = custom # Keys CUSTOM_MATRIX = lite NKRO_ENABLE = no MOUSEKEY_ENABLE = no EXTRAKEY_ENABLE = yes KEY_LOCK_ENABLE = no LAYOUTS = 60_ansi # Other featues BOOTMAGIC_ENABLE = no CONSOLE_ENABLE = no COMMAND_ENABLE = no # Other features RAW_ENABLE = no MIDI_ENABLE = no VIRTSER_ENABLE = no COMBO_ENABLE = no BOOTLOADER = custom PROGRAM_CMD = annepro2_tools --boot $(BUILD_DIR)/$(TARGET).bin LAYOUTS = 60_ansi # Anne Pro 2 SRC = \ matrix.c \ annepro2_ble.c \ ap2_led.c \ protocol.c \ rgb_driver.c \ config_led.c
M keyboards/annepro2/c18/config.h => keyboards/annepro2/c18/config.h +3 -0
@@ 44,3 44,6 @@ // inputs (columns are sampled) #define MATRIX_COL_PINS \ { C4, C5, D0, B15, C11, A15, C12, C13, A8, A10, A11, A14, D2, D3 } // Obins stock firmware has something similar to this already enabled, but disabled by default in QMK #define PERMISSIVE_HOLD
D keyboards/annepro2/c18/readme.md => keyboards/annepro2/c18/readme.md +0 -1
M keyboards/annepro2/c18/rules.mk => keyboards/annepro2/c18/rules.mk +32 -20
@@ 1,12 1,3 @@ # Anne Pro 2 SRC = \ matrix.c \ annepro2_ble.c \ ap2_led.c \ protocol.c \ rgb_driver.c \ config_led.c # MCU MCU = cortex-m0plus @@ ARMV = 6 18,23 9,44 @@ MCU_STARTUP = ht32f523xx BOARD = ANNEPRO2_C18 # Options # Bootloader selection BOOTLOADER = custom PROGRAM_CMD = annepro2_tools --boot $(BUILD_DIR)/$(TARGET).bin # Build Options # change yes to no to disable # BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite MOUSEKEY_ENABLE = no # 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 = no # Enable N-Key Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow AUDIO_ENABLE = no # Audio output # Custom RGB matrix handling RGB_MATRIX_ENABLE = yes RGB_MATRIX_DRIVER = custom # Keys CUSTOM_MATRIX = lite NKRO_ENABLE = no MOUSEKEY_ENABLE = no EXTRAKEY_ENABLE = yes KEY_LOCK_ENABLE = no LAYOUTS = 60_ansi # Other featues BOOTMAGIC_ENABLE = yes CONSOLE_ENABLE = no COMMAND_ENABLE = no # Other features RAW_ENABLE = no MIDI_ENABLE = no VIRTSER_ENABLE = no COMBO_ENABLE = no BOOTLOADER = custom PROGRAM_CMD = annepro2_tools --boot $(BUILD_DIR)/$(TARGET).bin LAYOUTS = 60_ansi # Anne Pro 2 SRC = \ matrix.c \ annepro2_ble.c \ ap2_led.c \ protocol.c \ rgb_driver.c \ config_led.c
M keyboards/annepro2/info.json => keyboards/annepro2/info.json +66 -320
@@ 1,329 1,75 @@ { "keyboard_name": "Anne Pro 2", "url": "https://openannepro.github.io/", "maintainer": "community", "maintainer": "bwisn", "layouts": { "LAYOUT_60_ansi": { "layout": [ { "label": "~", "x": 0, "y": 0 }, { "label": "!", "x": 1, "y": 0 }, { "label": "@", "x": 2, "y": 0 }, { "label": "#", "x": 3, "y": 0 }, { "label": "$", "x": 4, "y": 0 }, { "label": "%", "x": 5, "y": 0 }, { "label": "^", "x": 6, "y": 0 }, { "label": "&", "x": 7, "y": 0 }, { "label": "*", "x": 8, "y": 0 }, { "label": "(", "x": 9, "y": 0 }, { "label": ")", "x": 10, "y": 0 }, { "label": "_", "x": 11, "y": 0 }, { "label": "+", "x": 12, "y": 0 }, { "label": "Backspace", "x": 13, "y": 0, "w": 2 }, { "label": "Tab", "x": 0, "y": 1, "w": 1.5 }, { "label": "Q", "x": 1.5, "y": 1 }, { "label": "W", "x": 2.5, "y": 1 }, { "label": "E", "x": 3.5, "y": 1 }, { "label": "R", "x": 4.5, "y": 1 }, { "label": "T", "x": 5.5, "y": 1 }, { "label": "Y", "x": 6.5, "y": 1 }, { "label": "U", "x": 7.5, "y": 1 }, { "label": "I", "x": 8.5, "y": 1 }, { "label": "O", "x": 9.5, "y": 1 }, { "label": "P", "x": 10.5, "y": 1 }, { "label": "{", "x": 11.5, "y": 1 }, { "label": "}", "x": 12.5, "y": 1 }, { "label": "|", "x": 13.5, "y": 1, "w": 1.5 }, { "label": "Caps Lock", "x": 0, "y": 2, "w": 1.75 }, { "label": "A", "x": 1.75, "y": 2 }, { "label": "S", "x": 2.75, "y": 2 }, { "label": "D", "x": 3.75, "y": 2 }, { "label": "F", "x": 4.75, "y": 2 }, { "label": "G", "x": 5.75, "y": 2 }, { "label": "H", "x": 6.75, "y": 2 }, { "label": "J", "x": 7.75, "y": 2 }, { "label": "K", "x": 8.75, "y": 2 }, { "label": "L", "x": 9.75, "y": 2 }, { "label": ":", "x": 10.75, "y": 2 }, { "label": "\"", "x": 11.75, "y": 2 }, { "label": "Enter", "x": 12.75, "y": 2, "w": 2.25 }, { "label": "Shift", "x": 0, "y": 3, "w": 2.25 }, { "label": "Z", "x": 2.25, "y": 3 }, { "label": "X", "x": 3.25, "y": 3 }, { "label": "C", "x": 4.25, "y": 3 }, { "label": "V", "x": 5.25, "y": 3 }, { "label": "B", "x": 6.25, "y": 3 }, { "label": "N", "x": 7.25, "y": 3 }, { "label": "M", "x": 8.25, "y": 3 }, { "label": "<", "x": 9.25, "y": 3 }, { "label": ">", "x": 10.25, "y": 3 }, { "label": "?", "x": 11.25, "y": 3 }, { "label": "Shift", "x": 12.25, "y": 3, "w": 2.75 }, { "label": "Ctrl", "x": 0, "y": 4, "w": 1.25 }, { "label": "Win", "x": 1.25, "y": 4, "w": 1.25 }, { "label": "Alt", "x": 2.5, "y": 4, "w": 1.25 }, { "x": 3.75, "y": 4, "w": 6.25 }, { "label": "Alt", "x": 10, "y": 4, "w": 1.25 }, { "label": "Win", "x": 11.25, "y": 4, "w": 1.25 }, { "label": "Menu", "x": 12.5, "y": 4, "w": 1.25 }, { "label": "Ctrl", "x": 13.75, "y": 4, "w": 1.25 } {"label":"~", "x":0, "y":0}, {"label":"!", "x":1, "y":0}, {"label":"@", "x":2, "y":0}, {"label":"#", "x":3, "y":0}, {"label":"$", "x":4, "y":0}, {"label":"%", "x":5, "y":0}, {"label":"^", "x":6, "y":0}, {"label":"&", "x":7, "y":0}, {"label":"*", "x":8, "y":0}, {"label":"(", "x":9, "y":0}, {"label":")", "x":10, "y":0}, {"label":"_", "x":11, "y":0}, {"label":"+", "x":12, "y":0}, {"label":"Backspace", "x":13, "y":0, "w":2}, {"label":"Tab", "x":0, "y":1, "w":1.5}, {"label":"Q", "x":1.5, "y":1}, {"label":"W", "x":2.5, "y":1}, {"label":"E", "x":3.5, "y":1}, {"label":"R", "x":4.5, "y":1}, {"label":"T", "x":5.5, "y":1}, {"label":"Y", "x":6.5, "y":1}, {"label":"U", "x":7.5, "y":1}, {"label":"I", "x":8.5, "y":1}, {"label":"O", "x":9.5, "y":1}, {"label":"P", "x":10.5, "y":1}, {"label":"{", "x":11.5, "y":1}, {"label":"}", "x":12.5, "y":1}, {"label":"|", "x":13.5, "y":1, "w":1.5}, {"label":"Caps Lock", "x":0, "y":2, "w":1.75}, {"label":"A", "x":1.75, "y":2}, {"label":"S", "x":2.75, "y":2}, {"label":"D", "x":3.75, "y":2}, {"label":"F", "x":4.75, "y":2}, {"label":"G", "x":5.75, "y":2}, {"label":"H", "x":6.75, "y":2}, {"label":"J", "x":7.75, "y":2}, {"label":"K", "x":8.75, "y":2}, {"label":"L", "x":9.75, "y":2}, {"label":":", "x":10.75, "y":2}, {"label":"\"", "x":11.75, "y":2}, {"label":"Enter", "x":12.75, "y":2, "w":2.25}, {"label":"Shift", "x":0, "y":3, "w":2.25}, {"label":"Z", "x":2.25, "y":3}, {"label":"X", "x":3.25, "y":3}, {"label":"C", "x":4.25, "y":3}, {"label":"V", "x":5.25, "y":3}, {"label":"B", "x":6.25, "y":3}, {"label":"N", "x":7.25, "y":3}, {"label":"M", "x":8.25, "y":3}, {"label":"<", "x":9.25, "y":3}, {"label":">", "x":10.25, "y":3}, {"label":"?", "x":11.25, "y":3}, {"label":"Shift", "x":12.25, "y":3, "w":2.75}, {"label":"Ctrl", "x":0, "y":4, "w":1.25}, {"label":"Win", "x":1.25, "y":4, "w":1.25}, {"label":"Alt", "x":2.5, "y":4, "w":1.25}, {"x":3.75, "y":4, "w":6.25}, {"label":"Alt", "x":10, "y":4, "w":1.25}, {"label":"Win", "x":11.25, "y":4, "w":1.25}, {"label":"Menu", "x":12.5, "y":4, "w":1.25}, {"label":"Ctrl", "x":13.75, "y":4, "w":1.25} ] } }
D keyboards/annepro2/keymaps/default-full-caps/config.h => keyboards/annepro2/keymaps/default-full-caps/config.h +0 -20
@@ 1,20 0,0 @@ /* Copyright 2021 OpenAnnePro community * * 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 // Obins stock firmware has something similar to this already enabled, but disabled by default in QMK #define PERMISSIVE_HOLD
D keyboards/annepro2/keymaps/default-layer-indicators/config.h => keyboards/annepro2/keymaps/default-layer-indicators/config.h +0 -20
@@ 1,20 0,0 @@ /* Copyright 2021 OpenAnnePro community * * 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 // Obins stock firmware has something similar to this already enabled, but disabled by default in QMK #define PERMISSIVE_HOLD
D keyboards/annepro2/keymaps/default/config.h => keyboards/annepro2/keymaps/default/config.h +0 -20
@@ 1,20 0,0 @@ /* Copyright 2021 OpenAnnePro community * * 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 // Obins stock firmware has something similar to this already enabled, but disabled by default in QMK #define PERMISSIVE_HOLD
D keyboards/annepro2/keymaps/default/rules.mk => keyboards/annepro2/keymaps/default/rules.mk +0 -3
M keyboards/annepro2/readme.md => keyboards/annepro2/readme.md +19 -21
@@ 1,12 1,10 @@ # Anne Pro 2 rev. C15 and C18 QMK firmware ## Introduction An ANSI-layout 60% keyboard featuring Bluetooth support and per-key RGB lighting. This is the QMK firmware repository for the Anne Pro 2 rev. C15 and C18 keyboard. ## Layouts Keyboard has 60% ANSI standard layout. * Keyboard Maintainer: [bwisn](https://github.com/bwisn) * Hardware Supported: Anne Pro 2, [C15](c15/) and [C18](c18/) versions * Hardware Availability: [annepro.net](https://www.annepro.net/), [Hexcore](https://www.hexcore.xyz/annepro2) ## How to compile @@ 25,26 23,26 @@ If you want to compile the Anne Pro 2 C15 default keymap use: If you want the executable instead of compiling it yourself, [download it here](https://ci.codetector.org/job/OpenAnnePro/job/AnnePro2-Tools/job/master/). Windows and Linux versions are available. Otherwise, follow the steps below: 0. Install the latest stable `rust` toolchain using [rustup](https://rustup.rs/) 0. Also install [Visual Studio Community edition](https://visualstudio.microsoft.com/downloads/) 1. Install the latest stable `rust` toolchain using [rustup](https://rustup.rs/) 1. Also install [Visual Studio Community edition](https://visualstudio.microsoft.com/downloads/) including the C/C++ module to prevent errors while compiling 0. Download or Clone the [AnnePro2-Tools](https://github.com/OpenAnnePro/AnnePro2-Tools) project. 0. Compile the tool using ```bash cargo build --release ``` 0. The compiled tool should be in `./target/release/annepro2_tools` (In later I will refer to this as `annepro2_tools`) 1. Download or Clone the [AnnePro2-Tools](https://github.com/OpenAnnePro/AnnePro2-Tools) project. 1. Compile the tool using ```bash cargo build --release ``` The compiled tool should be in `./target/release/annepro2_tools` (In later I will refer to this as `annepro2_tools`) ### Flashing the firmware 0. Put the keyboard into DFU/IAP mode by unplugging the keyboard, then holding ESC while plugging it back in. 0. Run annepro2_tools with the firmware you just built. **Please substitute with the correct paths and correct bin file if you chose another keymap profile** ```bash annepro2_tools annepro2_c15_default.bin ``` 1. Put the keyboard into DFU/IAP mode by unplugging the keyboard, then holding ESC while plugging it back in. 1. Run annepro2_tools with the firmware you just built. **Please substitute with the correct paths and correct bin file if you chose another keymap profile.** ```bash annepro2_tools annepro2_c15_default.bin ``` If the tool can't find the keyboard please double check you have the keyboard in IAP mode. 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). \ No newline at end of file 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).