From a200f194d14086e2da740ac48bac5ffdf36689d8 Mon Sep 17 00:00:00 2001 From: Sidney Bovet Date: Mon, 15 Jul 2019 19:35:05 +0200 Subject: [Keyboard] Add support for XD004 macro keyboard (#6337) * Add support for XD004 Also applying the following suggested edits: Add hardware availability link in readme Co-Authored-By: Drashna Jaelre Enable lite bootmagic Co-Authored-By: Drashna Jaelre Remove commented out MCU Co-Authored-By: fauxpark * Add more ellaborate keymap Correcting usage of tap_code_16 for modified key, thanks to @drashna * Add information about bootloader type Co-Authored-By: Drashna Jaelre --- keyboards/xd004/v1/config.h | 80 +++++++++++++++++++++++++++++++++++++++++++++ keyboards/xd004/v1/rules.mk | 70 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 150 insertions(+) create mode 100644 keyboards/xd004/v1/config.h create mode 100644 keyboards/xd004/v1/rules.mk (limited to 'keyboards/xd004/v1') diff --git a/keyboards/xd004/v1/config.h b/keyboards/xd004/v1/config.h new file mode 100644 index 0000000000..a141137e98 --- /dev/null +++ b/keyboards/xd004/v1/config.h @@ -0,0 +1,80 @@ +/* +Copyright 2019 Sidney Bovet + +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 . +*/ + +/* +Note: the following configuration uses 98% of the flash memory, be +careful if you enable anything else. Also have a look at rules.mk +where some things are disabled to save space as well. +*/ + +#pragma once + +#include "config_common.h" + +/* USB Device descriptor parameter */ +#define VENDOR_ID 0xCDCD +#define PRODUCT_ID 0x0404 +#define DEVICE_VER 0x0001 +// Note: unsure about manufacturer +#define MANUFACTURER XIUDI +#define PRODUCT XD004 v1 +#define DESCRIPTION XD004 v1 Keyboard PCB + +/* key matrix size */ +#define MATRIX_ROWS 1 +#define MATRIX_COLS 4 + +/* + * Keyboard Matrix Assignments + * + * On this board we have direct connection: no diodes. + */ +#define DIRECT_PINS \ + { \ + { D3, D0, C4, B4 } \ + } +#define UNUSED_PINS + +/* Backlight Setup */ +// Looks like each backlight LED is connected to a single output, D5 is the one furtherst away from USB port +#define BACKLIGHT_PIN D5 +#define BACKLIGHT_LEVELS 6 + +/* COL2ROW or ROW2COL */ +#define DIODE_DIRECTION COL2ROW + +/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ +#define DEBOUNCE 5 + +/* RGB Underglow +This will not be used, as RGBLIGHT_ENABLE is set to 'no' in rules.mk +We do not have enough space in the flash for this at the moment, maybe +further optimizations can be done on that side. +*/ +#define RGB_DI_PIN C6 +#define RGBLIGHT_EFFECT_STATIC_GRADIENT +#define RGBLIGHT_EFFECT_RAINBOW_SWIRL +#define RGBLED_NUM 2 +#define RGBLIGHT_HUE_STEP 10 +#define RGBLIGHT_SAT_STEP 17 +#define RGBLIGHT_VAL_STEP 17 + +/* disable action features */ +// #define NO_ACTION_ONESHOT // 462 bytes <- this needs to be un-commented out if Link Time Optimization is disabled, otherwise file is too large +// The two below are implicit since we use LINK_TIME_OPTIMIZATION_ENABLE (in rules.mk) +// #define NO_ACTION_MACRO +// #define NO_ACTION_FUNCTION \ No newline at end of file diff --git a/keyboards/xd004/v1/rules.mk b/keyboards/xd004/v1/rules.mk new file mode 100644 index 0000000000..ad2d732d43 --- /dev/null +++ b/keyboards/xd004/v1/rules.mk @@ -0,0 +1,70 @@ +# MCU name +MCU = atmega16u2 + + +# Processor frequency. +# This will define a symbol, F_CPU, in all source code files equal to the +# processor frequency in Hz. You can then use this symbol in your source code to +# calculate timings. Do NOT tack on a 'UL' at the end, this will be done +# automatically to create a 32-bit value in your source code. +# +# This will be an integer division of F_USB below, as it is sourced by +# F_USB after it has run through any CPU prescalers. Note that this value +# does not *change* the processor frequency - it should merely be updated to +# reflect the processor speed set externally so that the code can use accurate +# software delays. +F_CPU = 16000000 + + +# LUFA specific +# Target architecture (see library "Board Types" documentation). +ARCH = AVR8 + + +# Input clock frequency. +# This will define a symbol, F_USB, in all source code files equal to the +# input clock frequency (before any prescaling is performed) in Hz. This value may +# differ from F_CPU if prescaling is used on the latter, and is required as the +# raw input clock is fed directly to the PLL sections of the AVR for high speed +# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' +# at the end, this will be done automatically to create a 32-bit value in your +# source code. +# +# If no clock division is performed on the input clock inside the AVR (via the +# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. +F_USB = $(F_CPU) + + +# Interrupt driven control endpoint task(+60) +OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT + + +# Boot Section Size in *bytes* +# Teensy halfKay 512 +# Teensy++ halfKay 2048 +# Atmel DFU loader 4096 +# LUFA bootloader 4096 +# USBaspLoader 2048 +OPT_DEFS += -DBOOTLOADER_SIZE=4096 +BOOTLOADER = atmel-dfu + + +# Build Options +BOOTMAGIC_ENABLE = lite # Virtual DIP switch configuration +MOUSEKEY_ENABLE = no # Mouse keys(+4700) +EXTRAKEY_ENABLE = yes # Audio control and System control(+450) +CONSOLE_ENABLE = no # Console for debug(+400) +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +MIDI_ENABLE = no # MIDI controls +AUDIO_ENABLE = no # Audio output on port C6 +UNICODE_ENABLE = no # Unicode +BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. +SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend + +# Saves about 5% of space: +LINK_TIME_OPTIMIZATION_ENABLE = yes + +#LAYOUTS = ortho_1x4 -- cgit v1.2.3