aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLEdiodes <mkerfoot@users.noreply.github.com>2018-01-28 14:58:42 -0600
committerJack Humbert <jack.humb@gmail.com>2018-01-28 15:58:42 -0500
commitb0805e38b9389ff79e4ba9b4e35ec08b18f7a728 (patch)
treeeea78e228def2e0ff43d097e7ff8f6910b9236cf
parent2480e5d69a11fd0774d16e57384b69c1e92cbfc8 (diff)
downloadqmk_firmware-b0805e38b9389ff79e4ba9b4e35ec08b18f7a728.tar.gz
qmk_firmware-b0805e38b9389ff79e4ba9b4e35ec08b18f7a728.zip
added ATOM47 (Vortex Core QMK powered PCB) & DZ60 Custom config(LEdiodes) (#2310)
* added ATOM47 (Vortex Core QMK powered PCB) * fixed broken\unfinished comment block * moved Layer template to default template. * moved Layer template to default template and removed template from the keymap.c file. * Added LEdiodes config * created readme.md contains an image of 60% board(LEdiodes). * updated readme.md with images added images of the PCB and some feature details from https://geekhack.org/index.php?topic=93447.msg2545221#msg2545221 * removed excess words. * followed the readme template to a T. * formatting fix : added a return.
-rw-r--r--keyboards/atom47/atom47.c31
-rw-r--r--keyboards/atom47/atom47.h25
-rw-r--r--keyboards/atom47/config.h73
-rw-r--r--keyboards/atom47/keymaps/LEdiodes/atom47.c31
-rw-r--r--keyboards/atom47/keymaps/LEdiodes/atom47.h25
-rw-r--r--keyboards/atom47/keymaps/LEdiodes/config.h73
-rw-r--r--keyboards/atom47/keymaps/LEdiodes/keymap.c35
-rw-r--r--keyboards/atom47/keymaps/LEdiodes/rules.mk65
-rw-r--r--keyboards/atom47/keymaps/default/keymap.c39
-rw-r--r--keyboards/atom47/keymaps/default/readme.md10
-rw-r--r--keyboards/atom47/readme.md28
-rw-r--r--keyboards/atom47/rules.mk65
-rw-r--r--keyboards/dz60/keymaps/LEdiodes/config.h58
-rw-r--r--keyboards/dz60/keymaps/LEdiodes/keymap.c141
-rw-r--r--keyboards/dz60/keymaps/LEdiodes/readme.md9
-rw-r--r--keyboards/dz60/keymaps/LEdiodes/rules.mk57
16 files changed, 765 insertions, 0 deletions
diff --git a/keyboards/atom47/atom47.c b/keyboards/atom47/atom47.c
new file mode 100644
index 000000000..7b839e796
--- /dev/null
+++ b/keyboards/atom47/atom47.c
@@ -0,0 +1,31 @@
1#include "atom47.h"
2#include "led.h"
3
4void matrix_init_kb(void) {
5 // put your keyboard start-up code here
6 // runs once when the firmware starts up
7 matrix_init_user();
8 led_init_ports();
9};
10
11void matrix_scan_kb(void) {
12 // put your looping keyboard code here
13 // runs every cycle (a lot)
14 matrix_scan_user();
15};
16
17void led_init_ports(void) {
18 // * Set our LED pins as output
19 DDRB &= ~(1<<5);
20}
21
22void led_set_kb(uint8_t usb_led) {
23 if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
24 // Turn capslock on
25 PORTF |= (1<<5);
26 } else {
27 // Turn capslock off
28 PORTF &= ~(1<<5);
29 }
30 led_set_user(usb_led);
31}
diff --git a/keyboards/atom47/atom47.h b/keyboards/atom47/atom47.h
new file mode 100644
index 000000000..2c19a20cc
--- /dev/null
+++ b/keyboards/atom47/atom47.h
@@ -0,0 +1,25 @@
1#ifndef ATOM47_H
2#define ATOM47_H
3
4#include "quantum.h"
5
6// readability
7#define XXX KC_NO
8
9#define KEYMAP_ANSI( \
10 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, \
11 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1c, \
12 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2c, \
13 k30, k31, k32, k33, k34, k36, k38, k39, k3a, k3c \
14) \
15{ \
16 {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c}, \
17 {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, XXX, k1c}, \
18 {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, XXX, k2c}, \
19 {k30, k31, k32, k33, k34, XXX, k36, XXX, k38, k39, k3a, XXX, k3c} \
20}
21
22void matrix_init_user(void);
23void matrix_scan_user(void);
24
25#endif
diff --git a/keyboards/atom47/config.h b/keyboards/atom47/config.h
new file mode 100644
index 000000000..410650f71
--- /dev/null
+++ b/keyboards/atom47/config.h
@@ -0,0 +1,73 @@
1/*
2Copyright 2012 Maarten Dekkers <atomkeeb@gmail.com
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#ifndef CONFIG_H
19#define CONFIG_H
20
21#include "config_common.h"
22
23/* USB Device descriptor parameter */
24#define VENDOR_ID 0xFEED
25#define PRODUCT_ID 0x6060
26#define DEVICE_VER 0x0003
27#define MANUFACTURER Vortex
28#define PRODUCT Core
29#define DESCRIPTION Atom47 PCB for the Vortex Core
30
31/* key matrix size */
32#define MATRIX_ROWS 4
33#define MATRIX_COLS 13
34
35// ROWS: Top to bottom, COLS: Left to right
36
37#define MATRIX_ROW_PINS {B1,B2,B3,B7}
38#define MATRIX_COL_PINS {D7,D5,F0,F1,F4,F6,F7,D4,C7,C6,D6,B5,B4}
39#define UNUSED_PINS
40
41#define BACKLIGHT_PIN B6
42
43/* COL2ROW or ROW2COL */
44#define DIODE_DIRECTION COL2ROW
45
46/* define if matrix has ghost */
47//#define MATRIX_HAS_GHOST
48
49/* Set 0 if debouncing isn't needed */
50#define DEBOUNCING_DELAY 5
51
52/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
53#define LOCKING_SUPPORT_ENABLE
54/* Locking resynchronize hack */
55#define LOCKING_RESYNC_ENABLE
56
57/* key combination for command */
58#define IS_COMMAND() ( \
59 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
60)
61
62/* Backlight configuration
63 */
64#define BACKLIGHT_LEVELS 4
65
66#endif
67
68#define RGB_DI_PIN D0 // The pin the LED strip is connected to
69#define RGBLED_NUM 1 // Number of LEDs in your strip
70
71#define QMK_ESC_OUTPUT D7 // usually COL
72#define QMK_ESC_INPUT B1 // usually ROW
73#define QMK_LED B6 \ No newline at end of file
diff --git a/keyboards/atom47/keymaps/LEdiodes/atom47.c b/keyboards/atom47/keymaps/LEdiodes/atom47.c
new file mode 100644
index 000000000..7b839e796
--- /dev/null
+++ b/keyboards/atom47/keymaps/LEdiodes/atom47.c
@@ -0,0 +1,31 @@
1#include "atom47.h"
2#include "led.h"
3
4void matrix_init_kb(void) {
5 // put your keyboard start-up code here
6 // runs once when the firmware starts up
7 matrix_init_user();
8 led_init_ports();
9};
10
11void matrix_scan_kb(void) {
12 // put your looping keyboard code here
13 // runs every cycle (a lot)
14 matrix_scan_user();
15};
16
17void led_init_ports(void) {
18 // * Set our LED pins as output
19 DDRB &= ~(1<<5);
20}
21
22void led_set_kb(uint8_t usb_led) {
23 if (usb_led & (1<<USB_LED_CAPS_LOCK)) {
24 // Turn capslock on
25 PORTF |= (1<<5);
26 } else {
27 // Turn capslock off
28 PORTF &= ~(1<<5);
29 }
30 led_set_user(usb_led);
31}
diff --git a/keyboards/atom47/keymaps/LEdiodes/atom47.h b/keyboards/atom47/keymaps/LEdiodes/atom47.h
new file mode 100644
index 000000000..2c19a20cc
--- /dev/null
+++ b/keyboards/atom47/keymaps/LEdiodes/atom47.h
@@ -0,0 +1,25 @@
1#ifndef ATOM47_H
2#define ATOM47_H
3
4#include "quantum.h"
5
6// readability
7#define XXX KC_NO
8
9#define KEYMAP_ANSI( \
10 k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c, \
11 k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, k1c, \
12 k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, k2c, \
13 k30, k31, k32, k33, k34, k36, k38, k39, k3a, k3c \
14) \
15{ \
16 {k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0a, k0b, k0c}, \
17 {k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1a, XXX, k1c}, \
18 {k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2a, XXX, k2c}, \
19 {k30, k31, k32, k33, k34, XXX, k36, XXX, k38, k39, k3a, XXX, k3c} \
20}
21
22void matrix_init_user(void);
23void matrix_scan_user(void);
24
25#endif
diff --git a/keyboards/atom47/keymaps/LEdiodes/config.h b/keyboards/atom47/keymaps/LEdiodes/config.h
new file mode 100644
index 000000000..410650f71
--- /dev/null
+++ b/keyboards/atom47/keymaps/LEdiodes/config.h
@@ -0,0 +1,73 @@
1/*
2Copyright 2012 Maarten Dekkers <atomkeeb@gmail.com
3
4This program is free software: you can redistribute it and/or modify
5it under the terms of the GNU General Public License as published by
6the Free Software Foundation, either version 2 of the License, or
7(at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12GNU General Public License for more details.
13
14You should have received a copy of the GNU General Public License
15along with this program. If not, see <http://www.gnu.org/licenses/>.
16*/
17
18#ifndef CONFIG_H
19#define CONFIG_H
20
21#include "config_common.h"
22
23/* USB Device descriptor parameter */
24#define VENDOR_ID 0xFEED
25#define PRODUCT_ID 0x6060
26#define DEVICE_VER 0x0003
27#define MANUFACTURER Vortex
28#define PRODUCT Core
29#define DESCRIPTION Atom47 PCB for the Vortex Core
30
31/* key matrix size */
32#define MATRIX_ROWS 4
33#define MATRIX_COLS 13
34
35// ROWS: Top to bottom, COLS: Left to right
36
37#define MATRIX_ROW_PINS {B1,B2,B3,B7}
38#define MATRIX_COL_PINS {D7,D5,F0,F1,F4,F6,F7,D4,C7,C6,D6,B5,B4}
39#define UNUSED_PINS
40
41#define BACKLIGHT_PIN B6
42
43/* COL2ROW or ROW2COL */
44#define DIODE_DIRECTION COL2ROW
45
46/* define if matrix has ghost */
47//#define MATRIX_HAS_GHOST
48
49/* Set 0 if debouncing isn't needed */
50#define DEBOUNCING_DELAY 5
51
52/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
53#define LOCKING_SUPPORT_ENABLE
54/* Locking resynchronize hack */
55#define LOCKING_RESYNC_ENABLE
56
57/* key combination for command */
58#define IS_COMMAND() ( \
59 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
60)
61
62/* Backlight configuration
63 */
64#define BACKLIGHT_LEVELS 4
65
66#endif
67
68#define RGB_DI_PIN D0 // The pin the LED strip is connected to
69#define RGBLED_NUM 1 // Number of LEDs in your strip
70
71#define QMK_ESC_OUTPUT D7 // usually COL
72#define QMK_ESC_INPUT B1 // usually ROW
73#define QMK_LED B6 \ No newline at end of file
diff --git a/keyboards/atom47/keymaps/LEdiodes/keymap.c b/keyboards/atom47/keymaps/LEdiodes/keymap.c
new file mode 100644
index 000000000..3ea8609b6
--- /dev/null
+++ b/keyboards/atom47/keymaps/LEdiodes/keymap.c
@@ -0,0 +1,35 @@
1#include QMK_KEYBOARD_H
2
3// These are all aliases for the function layers.
4#define _L0 0
5#define _L1 1
6#define _L2 2
7#define _L3 3
8
9#define _______ KC_TRNS
10
11const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
12[_L0] = KEYMAP_ANSI(
13 KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC, \
14 KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, \
15 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, MO(_L1), \
16 KC_LCTL, KC_LGUI, KC_LALT, TG(_L3), KC_SPC, KC_SPC, MO(_L2), KC_RALT, KC_APP, KC_RCTRL), \
17
18[_L2] = KEYMAP_ANSI(
19 _______, KC_VOLD, KC_VOLU, KC_MUTE, RESET, _______, KC_CALC, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, \
20 KC_CAPS, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_INS, _______, \
21 _______, _______, _______, _______, _______, _______, _______, BL_TOGG, BL_DEC, BL_INC, _______, _______, \
22 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), \
23
24[_L1] = KEYMAP_ANSI(
25 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
26 KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, \
27 _______, _______, _______, _______, _______, KC_QUOT, KC_SLSH, KC_LBRC, KC_RBRC, KC_BSLS, KC_RSFT, _______, \
28 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), \
29
30[_L3] = KEYMAP_ANSI(
31 _______, _______, _______, KC_7, KC_8, KC_9, _______, _______, _______, _______, _______, _______, _______, \
32 _______, _______, _______, KC_4, KC_5, KC_6, _______, _______, _______, _______, _______, _______, \
33 _______, _______, _______, KC_1, KC_2, KC_3, _______, _______, _______, _______, _______, _______, \
34 _______, _______, _______, _______, KC_0, KC_DOT, _______, _______, _______, RESET), \
35};
diff --git a/keyboards/atom47/keymaps/LEdiodes/rules.mk b/keyboards/atom47/keymaps/LEdiodes/rules.mk
new file mode 100644
index 000000000..d446d3a69
--- /dev/null
+++ b/keyboards/atom47/keymaps/LEdiodes/rules.mk
@@ -0,0 +1,65 @@
1# MCU name
2#MCU = at90usb1287
3MCU = atmega32u4
4
5# Processor frequency.
6# This will define a symbol, F_CPU, in all source code files equal to the
7# processor frequency in Hz. You can then use this symbol in your source code to
8# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
9# automatically to create a 32-bit value in your source code.
10#
11# This will be an integer division of F_USB below, as it is sourced by
12# F_USB after it has run through any CPU prescalers. Note that this value
13# does not *change* the processor frequency - it should merely be updated to
14# reflect the processor speed set externally so that the code can use accurate
15# software delays.
16F_CPU = 16000000
17
18
19#
20# LUFA specific
21#
22# Target architecture (see library "Board Types" documentation).
23ARCH = AVR8
24
25# Input clock frequency.
26# This will define a symbol, F_USB, in all source code files equal to the
27# input clock frequency (before any prescaling is performed) in Hz. This value may
28# differ from F_CPU if prescaling is used on the latter, and is required as the
29# raw input clock is fed directly to the PLL sections of the AVR for high speed
30# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
31# at the end, this will be done automatically to create a 32-bit value in your
32# source code.
33#
34# If no clock division is performed on the input clock inside the AVR (via the
35# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
36F_USB = $(F_CPU)
37
38# Interrupt driven control endpoint task(+60)
39OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
40
41
42# Boot Section Size in *bytes*
43# Teensy halfKay 512
44# Teensy++ halfKay 1024
45# Atmel DFU loader 4096
46# LUFA bootloader 4096
47# USBaspLoader 2048
48OPT_DEFS += -DBOOTLOADER_SIZE=4096
49
50
51# Build Options
52# comment out to disable the options.
53#
54BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
55MOUSEKEY_ENABLE = no # Mouse keys(+4700)
56EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
57CONSOLE_ENABLE = no # Console for debug(+400)
58COMMAND_ENABLE = no # Commands for debug and configuration
59NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
60RGBLIGHT_ENABLE = no # Enable keyboard underlight functionality (+4870)
61BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality (+1150)
62MIDI_ENABLE = no # MIDI controls
63AUDIO_ENABLE = no
64UNICODE_ENABLE = no # Unicode
65BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
diff --git a/keyboards/atom47/keymaps/default/keymap.c b/keyboards/atom47/keymaps/default/keymap.c
new file mode 100644
index 000000000..cd8e622f2
--- /dev/null
+++ b/keyboards/atom47/keymaps/default/keymap.c
@@ -0,0 +1,39 @@
1#include QMK_KEYBOARD_H
2
3// Each layer gets a name for readability, which is then used in the keymap matrix below.
4// The underscores don't mean anything - you can have a layer called STUFF or any other name.
5// Layer names don't all need to be of the same length, obviously, and you can also skip them
6// entirely and just use numbers.
7
8#define _MA 0 //Main layer
9#define _FN 1 //Fn
10#define _FN1 2 //Fn1
11#define _PN 3 //Pn
12
13#define _______ KC_TRNS
14
15const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
16[_MA] = KEYMAP_ANSI(
17 KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC, \
18 KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, \
19 KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT, MO(_FN1), \
20 KC_LCTL, KC_LGUI, KC_LALT, MO(_PN), KC_SPC, KC_SPC, MO(_FN), KC_RALT, KC_APP, KC_RCTRL), \
21
22[_FN] = KEYMAP_ANSI(
23 _______, KC_VOLD, KC_VOLU, KC_MUTE, RESET, _______, KC_CALC, KC_PGUP, KC_UP, KC_PGDN, KC_PSCR, KC_SLCK, KC_PAUS, \
24 KC_CAPS, KC_MPRV, KC_MPLY, KC_MNXT, _______, _______, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_INS, _______, \
25 _______, _______, _______, _______, _______, _______, _______, BL_TOGG, BL_DEC, BL_INC, _______, _______, \
26 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), \
27
28[_FN1] = KEYMAP_ANSI(
29 KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, \
30 KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, \
31 _______, _______, _______, _______, _______, KC_QUOT, KC_SLSH, KC_LBRC, KC_RBRC, KC_BSLS, KC_RSFT, _______, \
32 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______), \
33
34[_PN] = KEYMAP_ANSI(
35 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
36 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
37 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
38 _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET),
39}; \ No newline at end of file
diff --git a/keyboards/atom47/keymaps/default/readme.md b/keyboards/atom47/keymaps/default/readme.md
new file mode 100644
index 000000000..02422eb97
--- /dev/null
+++ b/keyboards/atom47/keymaps/default/readme.md
@@ -0,0 +1,10 @@
1To be updated...
2
3
4// This layer is just a blank template to be copied for easy layer creation. please don not edit it.
5
6 [_LX] = KEYMAP_ANSI(
7 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
8 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
9 _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \
10 _______, _______, _______, _______, _______, _______, _______, _______, _______, RESET),
diff --git a/keyboards/atom47/readme.md b/keyboards/atom47/readme.md
new file mode 100644
index 000000000..fec7843ae
--- /dev/null
+++ b/keyboards/atom47/readme.md
@@ -0,0 +1,28 @@
1# ATOM47
2
3![ATOM47](https://i.imgur.com/rjrFTKT.png)
4
5## Support
6Keyboard Maintainer: [Matthew Kerfoot(https://github.com/mkerfoot)
7Hardware Supported: ATOM47
8Hardware Availability: [GeekHack.com Group Buy](https://geekhack.org/index.php?topic=93447.msg2545221)
9
10
11## Features
12QMK Firmware
136 Underglow RGB leds
14In-switch leds
15Through-hole micro usb connector (less likely to break off!)
16South facing leds for the QMX/Zealencio users
17Multiple layouts
18Easily reachable reset button under the spacebar
19CapsLock indicator
20
21## Build
22To build the default keymap, simply run `make atom47:default`.
23
24For an alternative, heavily modified layout you would just need to run `make atom47:LEdiodes`.
25
26See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information.
27
28![ATOM47](https://i.imgur.com/WebeUOF.png)
diff --git a/keyboards/atom47/rules.mk b/keyboards/atom47/rules.mk
new file mode 100644
index 000000000..d446d3a69
--- /dev/null
+++ b/keyboards/atom47/rules.mk
@@ -0,0 +1,65 @@
1# MCU name
2#MCU = at90usb1287
3MCU = atmega32u4
4
5# Processor frequency.
6# This will define a symbol, F_CPU, in all source code files equal to the
7# processor frequency in Hz. You can then use this symbol in your source code to
8# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
9# automatically to create a 32-bit value in your source code.
10#
11# This will be an integer division of F_USB below, as it is sourced by
12# F_USB after it has run through any CPU prescalers. Note that this value
13# does not *change* the processor frequency - it should merely be updated to
14# reflect the processor speed set externally so that the code can use accurate
15# software delays.
16F_CPU = 16000000
17
18
19#
20# LUFA specific
21#
22# Target architecture (see library "Board Types" documentation).
23ARCH = AVR8
24
25# Input clock frequency.
26# This will define a symbol, F_USB, in all source code files equal to the
27# input clock frequency (before any prescaling is performed) in Hz. This value may
28# differ from F_CPU if prescaling is used on the latter, and is required as the
29# raw input clock is fed directly to the PLL sections of the AVR for high speed
30# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
31# at the end, this will be done automatically to create a 32-bit value in your
32# source code.
33#
34# If no clock division is performed on the input clock inside the AVR (via the
35# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
36F_USB = $(F_CPU)
37
38# Interrupt driven control endpoint task(+60)
39OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
40
41
42# Boot Section Size in *bytes*
43# Teensy halfKay 512
44# Teensy++ halfKay 1024
45# Atmel DFU loader 4096
46# LUFA bootloader 4096
47# USBaspLoader 2048
48OPT_DEFS += -DBOOTLOADER_SIZE=4096
49
50
51# Build Options
52# comment out to disable the options.
53#
54BOOTMAGIC_ENABLE = no # Virtual DIP switch configuration(+1000)
55MOUSEKEY_ENABLE = no # Mouse keys(+4700)
56EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
57CONSOLE_ENABLE = no # Console for debug(+400)
58COMMAND_ENABLE = no # Commands for debug and configuration
59NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
60RGBLIGHT_ENABLE = no # Enable keyboard underlight functionality (+4870)
61BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality (+1150)
62MIDI_ENABLE = no # MIDI controls
63AUDIO_ENABLE = no
64UNICODE_ENABLE = no # Unicode
65BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
diff --git a/keyboards/dz60/keymaps/LEdiodes/config.h b/keyboards/dz60/keymaps/LEdiodes/config.h
new file mode 100644
index 000000000..bb78d9bb6
--- /dev/null
+++ b/keyboards/dz60/keymaps/LEdiodes/config.h
@@ -0,0 +1,58 @@
1#ifndef CONFIG_H
2#define CONFIG_H
3
4#include "config.h"
5
6/* USB Device descriptor parameter */
7#define VENDOR_ID 0xFEED
8#define PRODUCT_ID 0x2260
9#define DEVICE_VER 0x0001
10#define MANUFACTURER KBDFans
11#define PRODUCT DZ60
12#define DESCRIPTION DZ60 Keyboard
13
14/* key matrix size */
15#define MATRIX_ROWS 5
16#define MATRIX_COLS 15
17
18/* key matrix pins */
19#define MATRIX_ROW_PINS { D0, D1, D2, D3, D5 }
20#define MATRIX_COL_PINS { F0, F1, E6, C7, C6, B7, D4, B1, B0, B5, B4, D7, D6, B3, F4 }
21#define UNUSED_PINS
22
23/* COL2ROW or ROW2COL */
24#define DIODE_DIRECTION COL2ROW
25
26/* number of backlight levels */
27#define BACKLIGHT_PIN B6
28#define BACKLIGHT_LEVELS 5
29
30/* Set 0 if debouncing isn't needed */
31#define DEBOUNCING_DELAY 5
32
33/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
34#define LOCKING_SUPPORT_ENABLE
35
36/* Locking resynchronize hack */
37#define LOCKING_RESYNC_ENABLE
38
39/* key combination for command */
40#define IS_COMMAND() ( \
41 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
42)
43
44/* prevent stuck modifiers */
45#define PREVENT_STUCK_MODIFIERS
46
47#define RGB_DI_PIN E2
48#define RGBLIGHT_ANIMATIONS
49#define RGBLED_NUM 16
50#define RGBLIGHT_HUE_STEP 8
51#define RGBLIGHT_SAT_STEP 8
52#define RGBLIGHT_VAL_STEP 8
53
54/* sets 'Auto Shift' timeouts */
55#define AUTO_SHIFT_TIMEOUT 150
56#define NO_AUTO_SHIFT_SPECIAL
57
58#endif
diff --git a/keyboards/dz60/keymaps/LEdiodes/keymap.c b/keyboards/dz60/keymaps/LEdiodes/keymap.c
new file mode 100644
index 000000000..46bdb5fed
--- /dev/null
+++ b/keyboards/dz60/keymaps/LEdiodes/keymap.c
@@ -0,0 +1,141 @@
1#include "xd60.h"
2#include "action_layer.h"
3
4#Define _L0 0
5#Define _L1 1
6#Define _L2 2
7#Define _L3 3
8#Define _L4 4
9
10#define _______ KC_TRNS
11
12/*
13 * template
14 * [_L1] = KEYMAP(
15 * _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \
16 * _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
17 * _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
18 * _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \
19 * _______,_______,_______, _______,_______,_______, _______,_______,_______,_______,_______,
20 *
21 *
22 *\
23
24const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
25/* Keymap _L0: (Layer 0 - Base Layer) This is the default layer
26 * This layer has a key set to MO(_L1) which means when held down Layer 1 will become active, If Layer 1 does not have anything set for tat key is will revert to uing the key set at layer 0.
27 * LT(_L1, KC_1) means that when the "1" key is long touched then it will activate the layer _L1 key(F1) but if the key is just tapped it will activate the "1" key.
28 * KC_GESC = Escape when tapped, ` when pressed with Shift or GUI
29 * KC_LSPO = Left Shift when held, ( when tapped
30 * TD(LT(_L3,KC_SPACE)) = This is a test... hoping it will tap dance if double tapped it does enter if single tap it does space if long hold down it does _L3(Layer 3).
31 * LT(_L3,KC_SPACE) = if tapped it does space, is long touch it does _L3(Layer 3)
32 * BL_TOGG = Toggles the LEDs.
33 * ,-----------------------------------------------------------------------------------------.
34 * | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |Bkspc| Del |
35 * |-----------------------------------------------------------------------------------------+
36 * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | \ |
37 * |-----------------------------------------------------------------------------------------+
38 * | _L4 | A | S | D | F | G | H | J | K | L | ; | ' | Enter |
39 * |-----------------------------------------------------------------------------------------+
40 * | Shift | Z | X | C | V | B | N | M | , | . | / | RSh | U | _L1 |
41 * |-----------------------------------------------------------------------------------------+
42 * | Ctrl | Win | Alt | _L3[Space] |LEdiodes| Space |Win | _L2| L | D | R |
43 * `-----------------------------------------------------------------------------------------'
44 */
45[_L0] = KEYMAP(
46 KC_GESC, LT(_L1, KC_1),LT(_L1, KC_2),LT(_L1, KC_3),LT(_L1, KC_4),LT(_L1, KC_5),LT(_L1, KC_6),LT(_L1, KC_7),LT(_L1, KC_8),LT(_L1, KC_9),LT(_L1, KC_0),LT(_L1, KC_MINS),LT(_L1, KC_EQL),KC_BSPC, KC_DEL, \
47 KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, \
48 KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NO, KC_ENT, \
49 KC_LSPO, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSPO, KC_UP, M0(_L1), \
50 KC_LCTL, KC_LGUI, KC_LALT, TD(LT(_L3,KC_SPACE)),BL_TOGG,TD(TD_SPC_ENT), KC_RGUI, M0(_L2), KC_LEFT, KC_DOWN, KC_RIGHT),
51
52/* Keymap _L1: (Layer 1) This is function layer 1
53 * This layer is activated while the Fn key is being held down.
54 * ,-----------------------------------------------------------------------------------------.
55 * | Reset | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | F13| F14|
56 * |-----------------------------------------------------------------------------------------+
57 * | | WhUp| U | WhDn | | | | | | PrtScr | | | | |
58 * |-----------------------------------------------------------------------------------------+
59 * | | L | D | R | | | Home | | | | | | |
60 * |-----------------------------------------------------------------------------------------+
61 * | | | | | | | End | VolDn|VolUp|Mute | | | PgUp| |
62 * |-----------------------------------------------------------------------------------------+
63 * | | | | | | | | | Home| PgDn| End |
64 * `-----------------------------------------------------------------------------------------'
65 */
66[_L1] = KEYMAP(
67 RESET, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_F14, \
68 _______, KC_WH_U, KC_UP, KC_WH_D, _______, _______,_______, _______, _______, _______, KC_PSCR, _______, _______, _______, \
69 _______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, KC_HOME, _______, _______, _______, KC_HOME, _______, _______, _______, \
70 _______, _______, _______, KC_APP, BL_STEP,_______, KC_END, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, KC_PGUP, _______, \
71 _______, _______, _______, _______,_______,_______, _______, _______, KC_HOME, KC_PGDOWN, KC_END),
72
73/* Keymap _L2: (Layer 2) This is function layer 2
74 * This layer is activated while the Fn2 key is being held down.
75 * LCA(KC_TAB) = Hold Left Control and Alt and press kc_tab which cycles trough open apps.
76 * MEH(KC_TAB) = Hold Left Control, Shift and Alt and press kc_TAB to cycle backwards through apps.
77 * ,-----------------------------------------------------------------------------------------.
78 * | | | | | | | | | | | | | | | LCA(KC_TAB)|
79 * |-----------------------------------------------------------------------------------------+
80 * | | | | | | | | | | | | | | |MEH(KC_TAB)
81 * |-----------------------------------------------------------------------------------------+
82 * | | | | | | | | | | | | | |
83 * |-----------------------------------------------------------------------------------------+
84 * | | | | | | | | || | | | | |
85 * |-----------------------------------------------------------------------------------------+
86 * | | | | | | | | | | | |
87 * `-----------------------------------------------------------------------------------------'
88 */
89[_L2] = KEYMAP(
90 _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,LCA(KC_TAB), \
91 _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, MEH(KC_TAB), \
92 _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, \
93 _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,KC_MS_BTN1,KC_MS_UP,KC_MS_BTN2, \
94 _______,_______,_______, _______,_______,_______, _______,_______,KC_MS_LEFT,KC_MS_DOWN,KC_MS_RIGHT,
95
96};
97
98// Custom Actions
99const uint16_t PROGMEM fn_actions[] = {
100 [0] = ACTION_LAYER_MOMENTARY(1), // to Fn overlay
101};
102
103// Macros
104const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt) {
105
106 // MACRODOWN only works in this function
107 switch(id) {
108 case 0:
109 if (record->event.pressed) { register_code(KC_RSFT); }
110 else { unregister_code(KC_RSFT); }
111 break;
112 }
113
114 return MACRO_NONE;
115};
116
117// Loop
118void matrix_scan_user(void) {
119 // Empty
120};
121
122//Tap Dance Declarations
123enum {
124 TD_SPC_ENT = 0,
125 TD_KC_LSFT_CAPS = 0,
126 TD_KC_RSFT_CAPS = 0
127};
128
129//Tap Dance Definitions
130qk_tap_dance_action_t tap_dance_actions[] = {
131
132 //Tap once for space, tap twice for enter
133 [TD_SPC_ENT] = ACTION_TAP_DANCE_DOUBLE(KC_SPC, KC_ENT),
134 //Tap once for Left Shift, twice for Caps Lock
135 [TD_KC_LSFT_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_CAPS),
136 //Tap once for Right Shift, twice for Caps Lock
137 [TD_KC_RSFT_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_RSFT, KC_CAPS)
138
139// Other declarations would go here, separated by commas, if you have them
140
141};
diff --git a/keyboards/dz60/keymaps/LEdiodes/readme.md b/keyboards/dz60/keymaps/LEdiodes/readme.md
new file mode 100644
index 000000000..db83b2494
--- /dev/null
+++ b/keyboards/dz60/keymaps/LEdiodes/readme.md
@@ -0,0 +1,9 @@
1# LEdiodes Keymap for XD60 60% PCB
2
3![LEdiodes Layer 0 Keymap for XD60](https://i.imgur.com/pDneawX.jpg)
4
5## Additional Notes
6Layer 0(default) Keymap for LEdiodes XD60.
7
8## Build
9To build the default keymap, simply run `make xd60:LEdiodes`.
diff --git a/keyboards/dz60/keymaps/LEdiodes/rules.mk b/keyboards/dz60/keymaps/LEdiodes/rules.mk
new file mode 100644
index 000000000..f54d9500f
--- /dev/null
+++ b/keyboards/dz60/keymaps/LEdiodes/rules.mk
@@ -0,0 +1,57 @@
1# MCU name
2MCU = atmega32u4
3
4# Processor frequency.
5# This will define a symbol, F_CPU, in all source code files equal to the
6# processor frequency in Hz. You can then use this symbol in your source code to
7# calculate timings. Do NOT tack on a 'UL' at the end, this will be done
8# automatically to create a 32-bit value in your source code.
9#
10# This will be an integer division of F_USB below, as it is sourced by
11# F_USB after it has run through any CPU prescalers. Note that this value
12# does not *change* the processor frequency - it should merely be updated to
13# reflect the processor speed set externally so that the code can use accurate
14# software delays.
15F_CPU = 16000000
16
17#
18# LUFA specific
19#
20# Target architecture (see library "Board Types" documentation).
21ARCH = AVR8
22
23# Input clock frequency.
24# This will define a symbol, F_USB, in all source code files equal to the
25# input clock frequency (before any prescaling is performed) in Hz. This value may
26# differ from F_CPU if prescaling is used on the latter, and is required as the
27# raw input clock is fed directly to the PLL sections of the AVR for high speed
28# clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL'
29# at the end, this will be done automatically to create a 32-bit value in your
30# source code.
31#
32# If no clock division is performed on the input clock inside the AVR (via the
33# CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU.
34F_USB = $(F_CPU)
35
36# Interrupt driven control endpoint task(+60)
37OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT
38
39
40# Boot Section Size in *bytes*
41OPT_DEFS += -DBOOTLOADER_SIZE=4096
42
43
44# Build Options
45# comment out to disable the options.
46#
47BOOTMAGIC_ENABLE = yes # Virtual DIP switch configuration(+1000)
48MOUSEKEY_ENABLE = yes # Mouse keys(+4700)
49EXTRAKEY_ENABLE = yes # Audio control and System control(+450)
50CONSOLE_ENABLE = no # Console for debug(+400)
51COMMAND_ENABLE = no # Commands for debug and configuration
52SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
53NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
54BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
55AUDIO_ENABLE = no
56RGBLIGHT_ENABLE = yes
57AUTO_SHIFT_ENABLE = yes # If the time depressed is greater than or equal to the AUTO_SHIFT_TIMEOUT, then a shifted version of the key is emitted. If the time is less than the AUTO_SHIFT_TIMEOUT time, then the normal state is emitted \ No newline at end of file