From 9682fca47b1d36dc5b502cc3e1f569464c41669a Mon Sep 17 00:00:00 2001 From: Leon Anavi Date: Sat, 20 Feb 2021 21:47:05 +0200 Subject: [PATCH] [Keyboard] keyboards/anavi: Add ANAVI Macro Pad 2 (#11821) ANAVI Macro Pad 2 is an open source mini mechanical keyboard with 2 keys and backlit. Powered by ATtiny 85 microcontroller and with microUSB connector. Designed with KiCad. Provides the following keymaps for ANAVI Macro Pad 2: - Default (with a, b and combo to control the LEDs) - Copy & paste - Tap dance example with a, b and c - Mute - Volume - Zoom - Jitsi Meet Co-authored-by: Drashna Jaelre Signed-off-by: Leon Anavi Co-authored-by: Drashna Jaelre --- keyboards/anavi/macropad2/config.h | 69 +++++++++++++++++++ keyboards/anavi/macropad2/info.json | 16 +++++ .../macropad2/keymaps/copypaste/keymap.c | 30 ++++++++ .../macropad2/keymaps/copypaste/rules.mk | 1 + .../anavi/macropad2/keymaps/default/keymap.c | 30 ++++++++ .../anavi/macropad2/keymaps/default/rules.mk | 1 + .../anavi/macropad2/keymaps/jitsi/keymap.c | 36 ++++++++++ .../anavi/macropad2/keymaps/jitsi/rules.mk | 1 + .../anavi/macropad2/keymaps/mute/keymap.c | 23 +++++++ .../anavi/macropad2/keymaps/mute/rules.mk | 2 + .../macropad2/keymaps/tap_dance/config.h | 3 + .../macropad2/keymaps/tap_dance/keymap.c | 35 ++++++++++ .../macropad2/keymaps/tap_dance/rules.mk | 1 + .../anavi/macropad2/keymaps/volume/keymap.c | 23 +++++++ .../anavi/macropad2/keymaps/volume/rules.mk | 2 + .../anavi/macropad2/keymaps/zoom/keymap.c | 37 ++++++++++ .../anavi/macropad2/keymaps/zoom/rules.mk | 1 + keyboards/anavi/macropad2/macropad2.c | 18 +++++ keyboards/anavi/macropad2/macropad2.h | 35 ++++++++++ keyboards/anavi/macropad2/readme.md | 49 +++++++++++++ keyboards/anavi/macropad2/rules.mk | 34 +++++++++ 21 files changed, 447 insertions(+) create mode 100644 keyboards/anavi/macropad2/config.h create mode 100644 keyboards/anavi/macropad2/info.json create mode 100644 keyboards/anavi/macropad2/keymaps/copypaste/keymap.c create mode 100644 keyboards/anavi/macropad2/keymaps/copypaste/rules.mk create mode 100644 keyboards/anavi/macropad2/keymaps/default/keymap.c create mode 100644 keyboards/anavi/macropad2/keymaps/default/rules.mk create mode 100644 keyboards/anavi/macropad2/keymaps/jitsi/keymap.c create mode 100644 keyboards/anavi/macropad2/keymaps/jitsi/rules.mk create mode 100644 keyboards/anavi/macropad2/keymaps/mute/keymap.c create mode 100644 keyboards/anavi/macropad2/keymaps/mute/rules.mk create mode 100644 keyboards/anavi/macropad2/keymaps/tap_dance/config.h create mode 100644 keyboards/anavi/macropad2/keymaps/tap_dance/keymap.c create mode 100644 keyboards/anavi/macropad2/keymaps/tap_dance/rules.mk create mode 100644 keyboards/anavi/macropad2/keymaps/volume/keymap.c create mode 100644 keyboards/anavi/macropad2/keymaps/volume/rules.mk create mode 100644 keyboards/anavi/macropad2/keymaps/zoom/keymap.c create mode 100644 keyboards/anavi/macropad2/keymaps/zoom/rules.mk create mode 100644 keyboards/anavi/macropad2/macropad2.c create mode 100644 keyboards/anavi/macropad2/macropad2.h create mode 100644 keyboards/anavi/macropad2/readme.md create mode 100644 keyboards/anavi/macropad2/rules.mk diff --git a/keyboards/anavi/macropad2/config.h b/keyboards/anavi/macropad2/config.h new file mode 100644 index 0000000000..f0448e4d71 --- /dev/null +++ b/keyboards/anavi/macropad2/config.h @@ -0,0 +1,69 @@ +/* +Copyright 2021 Leon Anavi + +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 "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xCEEB +#define PRODUCT_ID 0x0002 +#define DEVICE_VER 0x0001 +#define MANUFACTURER ANAVI +#define PRODUCT Macro Pad 2 + +/* matrix size */ +#define MATRIX_ROWS 1 +#define MATRIX_COLS 2 + +/* + * Keyboard Matrix Assignments + * + * On this board we have direct connection: no diodes. + */ +#define DIRECT_PINS {{ B2, B0 }} + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +#define BACKLIGHT_PIN B1 +#define BACKLIGHT_LEVELS 2 +#define RGBLIGHT_SLEEP + +//#define RGBLED_NUM 2 +//#define RGB_DI_PIN B2 + +// Save as much space as we can... +#define LAYER_STATE_8BIT +#define NO_ACTION_LAYER +#define NO_ACTION_TAPPING +#define NO_ACTION_ONESHOT +#define NO_RESET + +// usbconfig.h overrides +#define USB_CFG_IOPORTNAME B +#define USB_CFG_DMINUS_BIT 3 +#define USB_CFG_DPLUS_BIT 4 +#define USB_COUNT_SOF 0 +#define USB_INTR_CFG PCMSK +#define USB_INTR_CFG_SET (1< + * + * 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 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + C(KC_C), C(KC_V) + ) +}; + +const uint16_t PROGMEM test_combo[] = {C(KC_C), C(KC_V), COMBO_END}; +combo_t key_combos[COMBO_COUNT] = {COMBO_ACTION(test_combo)}; + +void process_combo_event(uint16_t combo_index, bool pressed) { + backlight_step(); +} diff --git a/keyboards/anavi/macropad2/keymaps/copypaste/rules.mk b/keyboards/anavi/macropad2/keymaps/copypaste/rules.mk new file mode 100644 index 0000000000..ab1e438182 --- /dev/null +++ b/keyboards/anavi/macropad2/keymaps/copypaste/rules.mk @@ -0,0 +1 @@ +COMBO_ENABLE = yes diff --git a/keyboards/anavi/macropad2/keymaps/default/keymap.c b/keyboards/anavi/macropad2/keymaps/default/keymap.c new file mode 100644 index 0000000000..c880ff660a --- /dev/null +++ b/keyboards/anavi/macropad2/keymaps/default/keymap.c @@ -0,0 +1,30 @@ +/* Copyright 2021 Leon Anavi + * + * 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 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_A, KC_B + ) +}; + +const uint16_t PROGMEM test_combo[] = {KC_A, KC_B, COMBO_END}; +combo_t key_combos[COMBO_COUNT] = {COMBO_ACTION(test_combo)}; + +void process_combo_event(uint16_t combo_index, bool pressed) { + backlight_step(); +} diff --git a/keyboards/anavi/macropad2/keymaps/default/rules.mk b/keyboards/anavi/macropad2/keymaps/default/rules.mk new file mode 100644 index 0000000000..ab1e438182 --- /dev/null +++ b/keyboards/anavi/macropad2/keymaps/default/rules.mk @@ -0,0 +1 @@ +COMBO_ENABLE = yes diff --git a/keyboards/anavi/macropad2/keymaps/jitsi/keymap.c b/keyboards/anavi/macropad2/keymaps/jitsi/keymap.c new file mode 100644 index 0000000000..afd1dd1d14 --- /dev/null +++ b/keyboards/anavi/macropad2/keymaps/jitsi/keymap.c @@ -0,0 +1,36 @@ +/* Copyright 2021 Leon Anavi + * + * 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 + +/* + * Jitsi Meet keyboard shortcuts: + * V - Start or stop your camera + * M - Mute or unmute your microphone + */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_M, KC_V + ) +}; + +const uint16_t PROGMEM test_combo[] = {KC_M, KC_V, COMBO_END}; +combo_t key_combos[COMBO_COUNT] = {COMBO_ACTION(test_combo)}; + +void process_combo_event(uint16_t combo_index, bool pressed) { + backlight_step(); +} diff --git a/keyboards/anavi/macropad2/keymaps/jitsi/rules.mk b/keyboards/anavi/macropad2/keymaps/jitsi/rules.mk new file mode 100644 index 0000000000..ab1e438182 --- /dev/null +++ b/keyboards/anavi/macropad2/keymaps/jitsi/rules.mk @@ -0,0 +1 @@ +COMBO_ENABLE = yes diff --git a/keyboards/anavi/macropad2/keymaps/mute/keymap.c b/keyboards/anavi/macropad2/keymaps/mute/keymap.c new file mode 100644 index 0000000000..642bf66a8f --- /dev/null +++ b/keyboards/anavi/macropad2/keymaps/mute/keymap.c @@ -0,0 +1,23 @@ +/* Copyright 2021 Leon Anavi + * + * 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 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_AUDIO_MUTE, BL_TOGG + ) +}; diff --git a/keyboards/anavi/macropad2/keymaps/mute/rules.mk b/keyboards/anavi/macropad2/keymaps/mute/rules.mk new file mode 100644 index 0000000000..a8b1459346 --- /dev/null +++ b/keyboards/anavi/macropad2/keymaps/mute/rules.mk @@ -0,0 +1,2 @@ +EXTRAKEY_ENABLE = yes +BACKLIGHT_ENABLE = no diff --git a/keyboards/anavi/macropad2/keymaps/tap_dance/config.h b/keyboards/anavi/macropad2/keymaps/tap_dance/config.h new file mode 100644 index 0000000000..b86e862d30 --- /dev/null +++ b/keyboards/anavi/macropad2/keymaps/tap_dance/config.h @@ -0,0 +1,3 @@ +#pragma once + +#define TAPPING_TERM 500 diff --git a/keyboards/anavi/macropad2/keymaps/tap_dance/keymap.c b/keyboards/anavi/macropad2/keymaps/tap_dance/keymap.c new file mode 100644 index 0000000000..63854a62e3 --- /dev/null +++ b/keyboards/anavi/macropad2/keymaps/tap_dance/keymap.c @@ -0,0 +1,35 @@ +/* Copyright 2021 Leon Anavi + * + * 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 + +enum layers { + _BASE = 0, +}; + +enum { + TD_BC = 0 +}; + +qk_tap_dance_action_t tap_dance_actions[] = { + [TD_BC] = ACTION_TAP_DANCE_DOUBLE(KC_B, KC_C) +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + KC_A, TD(TD_BC) + ) +}; diff --git a/keyboards/anavi/macropad2/keymaps/tap_dance/rules.mk b/keyboards/anavi/macropad2/keymaps/tap_dance/rules.mk new file mode 100644 index 0000000000..e5ddcae8d9 --- /dev/null +++ b/keyboards/anavi/macropad2/keymaps/tap_dance/rules.mk @@ -0,0 +1 @@ +TAP_DANCE_ENABLE = yes diff --git a/keyboards/anavi/macropad2/keymaps/volume/keymap.c b/keyboards/anavi/macropad2/keymaps/volume/keymap.c new file mode 100644 index 0000000000..f9ad20d5c5 --- /dev/null +++ b/keyboards/anavi/macropad2/keymaps/volume/keymap.c @@ -0,0 +1,23 @@ +/* Copyright 2021 Leon Anavi + * + * 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 + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_VOLU, KC_VOLD + ) +}; diff --git a/keyboards/anavi/macropad2/keymaps/volume/rules.mk b/keyboards/anavi/macropad2/keymaps/volume/rules.mk new file mode 100644 index 0000000000..a8b1459346 --- /dev/null +++ b/keyboards/anavi/macropad2/keymaps/volume/rules.mk @@ -0,0 +1,2 @@ +EXTRAKEY_ENABLE = yes +BACKLIGHT_ENABLE = no diff --git a/keyboards/anavi/macropad2/keymaps/zoom/keymap.c b/keyboards/anavi/macropad2/keymaps/zoom/keymap.c new file mode 100644 index 0000000000..4f681d17f1 --- /dev/null +++ b/keyboards/anavi/macropad2/keymaps/zoom/keymap.c @@ -0,0 +1,37 @@ +/* Copyright 2021 Leon Anavi + * + * 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 + +/* + * The keymap contains the following shortcuts for Zoom meeting: + * + * Alt+A: Mute/unmute my audio + * Alt+V: Start/stop video + */ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + LALT(KC_A), LALT(KC_V) + ) +}; + +const uint16_t PROGMEM test_combo[] = {LALT(KC_A), LALT(KC_V), COMBO_END}; +combo_t key_combos[COMBO_COUNT] = {COMBO_ACTION(test_combo)}; + +void process_combo_event(uint16_t combo_index, bool pressed) { + backlight_step(); +} diff --git a/keyboards/anavi/macropad2/keymaps/zoom/rules.mk b/keyboards/anavi/macropad2/keymaps/zoom/rules.mk new file mode 100644 index 0000000000..ab1e438182 --- /dev/null +++ b/keyboards/anavi/macropad2/keymaps/zoom/rules.mk @@ -0,0 +1 @@ +COMBO_ENABLE = yes diff --git a/keyboards/anavi/macropad2/macropad2.c b/keyboards/anavi/macropad2/macropad2.c new file mode 100644 index 0000000000..0a95d5d27c --- /dev/null +++ b/keyboards/anavi/macropad2/macropad2.c @@ -0,0 +1,18 @@ +/* +Copyright 2021 Leon Anavi + +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 "macropad2.h" diff --git a/keyboards/anavi/macropad2/macropad2.h b/keyboards/anavi/macropad2/macropad2.h new file mode 100644 index 0000000000..f3d43ad4f8 --- /dev/null +++ b/keyboards/anavi/macropad2/macropad2.h @@ -0,0 +1,35 @@ +/* +Copyright 2021 Leon Anavi + +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" + +/* This a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ +#define LAYOUT( \ + K01, K02 \ +) \ +{ \ + { K01, K02 }, \ +} diff --git a/keyboards/anavi/macropad2/readme.md b/keyboards/anavi/macropad2/readme.md new file mode 100644 index 0000000000..0ef2fede47 --- /dev/null +++ b/keyboards/anavi/macropad2/readme.md @@ -0,0 +1,49 @@ +# ANAVI Macro Pad 8 + +ANAVI Macro Pad 2 is an open source mini mechanical keyboard with 2 keys and backlit. Powered by ATtiny 85 microcontroller and with microUSB connector. Designed with KiCad. + +* Keyboard Maintainer: [Leon Anavi](https://github.com/leon-anavi) +* Hardware Supported: ANAVI Macro Pad 2 +* Hardware Availability: [PCB Files](https://github.com/AnaviTechnology/anavi-macro-pad-2) + +**Note**: Due to limited firmware space, a _**lot**_ of features have to be disabled to get a functioning QMK based keyboard. + +Make example for this keyboard (after setting up your build environment): + + make anavi/macropad2:default + +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). + +## Flashing +### Prerequisites + +```bash +git clone https://github.com/micronucleus/micronucleus.git +cd micronucleus/commandline/ +sudo make install +``` + +On GNU/Linux distributions, you will need proper privileges to access the MCU. You can either use `sudo` when flashing firmware, or place [these files](https://github.com/micronucleus/micronucleus/blob/master/commandline/49-micronucleus.rules) in /etc/udev/rules.d/. Once added run the following: + +```bash +sudo udevadm control --reload-rules +sudo udevadm trigger +``` + +### Instructions + +* Run one of the following commands: + +```bash +make anavi/macropad2:default:flash + +# or directly with... +micronucleus --run +``` + +* Plug ANAVI Macro Pad 2 to the USB port and the flashing procedure should start + +### Recovery + +* [Original Firmware](https://github.com/AnaviTechnology/anavi-macro-pad-2/tree/main/bootloader) +* [Bootloader Repair](https://digistump.com/wiki/digispark/tutorials/proisp) diff --git a/keyboards/anavi/macropad2/rules.mk b/keyboards/anavi/macropad2/rules.mk new file mode 100644 index 0000000000..9841425905 --- /dev/null +++ b/keyboards/anavi/macropad2/rules.mk @@ -0,0 +1,34 @@ +# MCU name +MCU = attiny85 + +# Bootloader selection +BOOTLOADER = micronucleus +OPT_DEFS += -DBOOTLOADER_SIZE=1862 +PROGRAM_CMD = micronucleus --run $(BUILD_DIR)/$(TARGET).hex + +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys +EXTRAKEY_ENABLE = no # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +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 +# if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +NKRO_ENABLE = no # USB Nkey Rollover +BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +MIDI_ENABLE = no # MIDI support +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth +AUDIO_ENABLE = no # Audio output + +# Save as much space as we can... +LTO_ENABLE = yes +GRAVE_ESC_ENABLE = no +MAGIC_ENABLE = no +SPACE_CADET_ENABLE = no + +BACKLIGHT_DRIVER = software