Skip to content

Commit b18c261

Browse files
Gondolindrimfauxparkzvecr
authored
Add Elongate PCB support (#8419)
* Working on proto * Start adding VIA support * Apply suggestions from code review Removed redundant comments and fixed typos Co-Authored-By: Ryan <[email protected]> Co-Authored-By: Joel Challis <[email protected]> * Delete useless config.h As per code review * Delete elongate.c As per code review * Updated readme.md * Update keyboards/acheron/elongate/keymaps/default/keymap.c As per code review Co-Authored-By: Ryan <[email protected]> * Apply suggestions from code review Removed RGB_MODE_TEST definition and substituted for RGB_M_T Co-Authored-By: Ryan <[email protected]> * Apply suggestions from code review Reverted changes to alice.h Co-Authored-By: Ryan <[email protected]> * Update info.json * Update via/keymap.c Co-Authored-By: Ryan <[email protected]> * Solve compiling issue for via keymap * Add botmagic support and remoce console_enable Co-Authored-By: Joel Challis <[email protected]> * Update keyboards/acheron/elongate/rules.mk Co-authored-by: Ryan <[email protected]> * Update keyboards/acheron/elongate/keymaps/via/rules.mk Co-authored-by: Ryan <[email protected]> * Update keyboards/acheron/elongate/rules.mk Co-authored-by: Ryan <[email protected]> * Update keyboards/acheron/elongate/config.h Co-authored-by: Ryan <[email protected]> Co-authored-by: Gondolindrim <[email protected]> Co-authored-by: Ryan <[email protected]> Co-authored-by: Joel Challis <[email protected]>
1 parent bac5d6b commit b18c261

File tree

11 files changed

+522
-0
lines changed

11 files changed

+522
-0
lines changed

keyboards/acheron/elongate/config.h

+250
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,250 @@
1+
/*
2+
Copyright 2020 Gondolindrim
3+
4+
This program is free software: you can redistribute it and/or modify
5+
it under the terms of the GNU General Public License as published by
6+
the Free Software Foundation, either version 2 of the License, or
7+
(at your option) any later version.
8+
9+
This program is distributed in the hope that it will be useful,
10+
but WITHOUT ANY WARRANTY; without even the implied warranty of
11+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12+
GNU General Public License for more details.
13+
14+
You should have received a copy of the GNU General Public License
15+
along with this program. If not, see <http://www.gnu.org/licenses/>.
16+
*/
17+
18+
#pragma once
19+
20+
#include "config_common.h"
21+
22+
/* USB Device descriptor parameter */
23+
#define VENDOR_ID 0x4150 //AP for AcheronProject
24+
#define PRODUCT_ID 0x454C // EL for Elongate
25+
#define DEVICE_VER 0x0001
26+
#define MANUFACTURER Acheron Project
27+
#define PRODUCT Elongate
28+
#define DESCRIPTION Acheron Project Elongate
29+
30+
/* key matrix size */
31+
#define MATRIX_ROWS 5
32+
#define MATRIX_COLS 13
33+
34+
/*
35+
* Keyboard Matrix Assignments
36+
*
37+
* Change this to how you wired your keyboard
38+
* COLS: AVR pins used for columns, left to right
39+
* ROWS: AVR pins used for rows, top to bottom
40+
* DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
41+
* ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
42+
*
43+
*/
44+
#define MATRIX_ROW_PINS { D3, B7, D5, B5, D6 }
45+
#define MATRIX_COL_PINS { F5, F6, F4, F1, F0, B2, B1, C6, B0, B3, E6, D4, B4}
46+
//#define UNUSED_PINS
47+
48+
/* COL2ROW, ROW2COL*/
49+
#define DIODE_DIRECTION COL2ROW
50+
51+
/*
52+
* Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN.
53+
*/
54+
// #define SOFT_SERIAL_PIN D0 // or D1, D2, D3, E6
55+
56+
// #define BACKLIGHT_PIN B7
57+
// #define BACKLIGHT_BREATHING
58+
// #define BACKLIGHT_LEVELS 3
59+
60+
#define RGB_DI_PIN D7
61+
#ifdef RGB_DI_PIN
62+
#define RGBLED_NUM 16
63+
#define RGBLIGHT_HUE_STEP 8
64+
#define RGBLIGHT_SAT_STEP 8
65+
#define RGBLIGHT_VAL_STEP 8
66+
#define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
67+
#define RGBLIGHT_SLEEP /* If defined, the RGB lighting will be switched off when the host goes to sleep */
68+
/*== all animations enable ==*/
69+
#define RGBLIGHT_ANIMATIONS
70+
/*== or choose animations ==*/
71+
// #define RGBLIGHT_EFFECT_BREATHING
72+
// #define RGBLIGHT_EFFECT_RAINBOW_MOOD
73+
// #define RGBLIGHT_EFFECT_RAINBOW_SWIRL
74+
// #define RGBLIGHT_EFFECT_SNAKE
75+
// #define RGBLIGHT_EFFECT_KNIGHT
76+
// #define RGBLIGHT_EFFECT_CHRISTMAS
77+
// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
78+
// #define RGBLIGHT_EFFECT_RGB_TEST
79+
// #define RGBLIGHT_EFFECT_ALTERNATING
80+
/*== customize breathing effect ==*/
81+
/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
82+
#define RGBLIGHT_BREATHE_TABLE_SIZE 256 // 256(default) or 128 or 64
83+
/*==== use exp() and sin() ====*/
84+
// #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85 // 1 to 2.7
85+
// #define RGBLIGHT_EFFECT_BREATHE_MAX 255 // 0 to 255
86+
#endif
87+
88+
/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
89+
#define DEBOUNCE 5
90+
91+
/* define if matrix has ghost (lacks anti-ghosting diodes) */
92+
//#define MATRIX_HAS_GHOST
93+
94+
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
95+
#define LOCKING_SUPPORT_ENABLE
96+
/* Locking resynchronize hack */
97+
#define LOCKING_RESYNC_ENABLE
98+
99+
/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
100+
* This is userful for the Windows task manager shortcut (ctrl+shift+esc).
101+
*/
102+
// #define GRAVE_ESC_CTRL_OVERRIDE
103+
104+
/*
105+
* Force NKRO
106+
*
107+
* Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
108+
* state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
109+
* makefile for this to work.)
110+
*
111+
* If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
112+
* until the next keyboard reset.
113+
*
114+
* NKRO may prevent your keystrokes from being detected in the BIOS, but it is
115+
* fully operational during normal computer usage.
116+
*
117+
* For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
118+
* or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
119+
* bootmagic, NKRO mode will always be enabled until it is toggled again during a
120+
* power-up.
121+
*
122+
*/
123+
//#define FORCE_NKRO
124+
125+
/*
126+
* Magic Key Options
127+
*
128+
* Magic keys are hotkey commands that allow control over firmware functions of
129+
* the keyboard. They are best used in combination with the HID Listen program,
130+
* found here: https://www.pjrc.com/teensy/hid_listen.html
131+
*
132+
* The options below allow the magic key functionality to be changed. This is
133+
* useful if your keyboard/keypad is missing keys and you want magic key support.
134+
*
135+
*/
136+
137+
/* key combination for magic key command */
138+
/* defined by default; to change, uncomment and set to the combination you want */
139+
// #define IS_COMMAND() (get_mods() == MOD_MASK_SHIFT)
140+
141+
/* control how magic key switches layers */
142+
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS true
143+
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS true
144+
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM false
145+
146+
/* override magic key keymap */
147+
//#define MAGIC_KEY_SWITCH_LAYER_WITH_FKEYS
148+
//#define MAGIC_KEY_SWITCH_LAYER_WITH_NKEYS
149+
//#define MAGIC_KEY_SWITCH_LAYER_WITH_CUSTOM
150+
//#define MAGIC_KEY_HELP H
151+
//#define MAGIC_KEY_HELP_ALT SLASH
152+
//#define MAGIC_KEY_DEBUG D
153+
//#define MAGIC_KEY_DEBUG_MATRIX X
154+
//#define MAGIC_KEY_DEBUG_KBD K
155+
//#define MAGIC_KEY_DEBUG_MOUSE M
156+
//#define MAGIC_KEY_VERSION V
157+
//#define MAGIC_KEY_STATUS S
158+
//#define MAGIC_KEY_CONSOLE C
159+
//#define MAGIC_KEY_LAYER0 0
160+
//#define MAGIC_KEY_LAYER0_ALT GRAVE
161+
//#define MAGIC_KEY_LAYER1 1
162+
//#define MAGIC_KEY_LAYER2 2
163+
//#define MAGIC_KEY_LAYER3 3
164+
//#define MAGIC_KEY_LAYER4 4
165+
//#define MAGIC_KEY_LAYER5 5
166+
//#define MAGIC_KEY_LAYER6 6
167+
//#define MAGIC_KEY_LAYER7 7
168+
//#define MAGIC_KEY_LAYER8 8
169+
//#define MAGIC_KEY_LAYER9 9
170+
//#define MAGIC_KEY_BOOTLOADER B
171+
//#define MAGIC_KEY_BOOTLOADER_ALT ESC
172+
//#define MAGIC_KEY_LOCK CAPS
173+
//#define MAGIC_KEY_EEPROM E
174+
//#define MAGIC_KEY_EEPROM_CLEAR BSPACE
175+
//#define MAGIC_KEY_NKRO N
176+
//#define MAGIC_KEY_SLEEP_LED Z
177+
178+
/*
179+
* Feature disable options
180+
* These options are also useful to firmware size reduction.
181+
*/
182+
183+
/* disable debug print */
184+
//#define NO_DEBUG
185+
186+
/* disable print */
187+
//#define NO_PRINT
188+
189+
/* disable action features */
190+
//#define NO_ACTION_LAYER
191+
//#define NO_ACTION_TAPPING
192+
//#define NO_ACTION_ONESHOT
193+
194+
/* disable these deprecated features by default */
195+
#define NO_ACTION_MACRO
196+
#define NO_ACTION_FUNCTION
197+
/*
198+
* MIDI options
199+
*/
200+
201+
/* Prevent use of disabled MIDI features in the keymap */
202+
//#define MIDI_ENABLE_STRICT 1
203+
204+
/* enable basic MIDI features:
205+
- MIDI notes can be sent when in Music mode is on
206+
*/
207+
//#define MIDI_BASIC
208+
209+
/* enable advanced MIDI features:
210+
- MIDI notes can be added to the keymap
211+
- Octave shift and transpose
212+
- Virtual sustain, portamento, and modulation wheel
213+
- etc.
214+
*/
215+
//#define MIDI_ADVANCED
216+
217+
/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
218+
//#define MIDI_TONE_KEYCODE_OCTAVES 1
219+
220+
/*
221+
* HD44780 LCD Display Configuration
222+
*/
223+
/*
224+
#define LCD_LINES 2 //< number of visible lines of the display
225+
#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
226+
227+
#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
228+
229+
#if LCD_IO_MODE
230+
#define LCD_PORT PORTB //< port for the LCD lines
231+
#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
232+
#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
233+
#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
234+
#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3
235+
#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0
236+
#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1
237+
#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2
238+
#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3
239+
#define LCD_RS_PORT LCD_PORT //< port for RS line
240+
#define LCD_RS_PIN 3 //< pin for RS line
241+
#define LCD_RW_PORT LCD_PORT //< port for RW line
242+
#define LCD_RW_PIN 2 //< pin for RW line
243+
#define LCD_E_PORT LCD_PORT //< port for Enable line
244+
#define LCD_E_PIN 1 //< pin for Enable line
245+
#endif
246+
*/
247+
248+
/* Bootmagic Lite key configuration */
249+
// #define BOOTMAGIC_LITE_ROW 0
250+
// #define BOOTMAGIC_LITE_COLUMN 0

keyboards/acheron/elongate/elongate.c

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/* Copyright 2020 Gondolindrim
2+
*
3+
* This program is free software: you can redistribute it and/or modify
4+
* it under the terms of the GNU General Public License as published by
5+
* the Free Software Foundation, either version 2 of the License, or
6+
* (at your option) any later version.
7+
*
8+
* This program is distributed in the hope that it will be useful,
9+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+
* GNU General Public License for more details.
12+
*
13+
* You should have received a copy of the GNU General Public License
14+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
15+
*/
16+
17+
#include "elongate.h"
18+
bool led_update_kb(led_t led_state) {
19+
bool res = led_update_user(led_state);
20+
if(res) {
21+
writePin(D2, led_state.num_lock);
22+
writePin(D1, led_state.caps_lock);
23+
writePin(D0, led_state.scroll_lock);
24+
}
25+
return res;
26+
}

keyboards/acheron/elongate/elongate.h

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/* Copyright 2020 Gondolindrim
2+
*
3+
* This program is free software: you can redistribute it and/or modify
4+
* it under the terms of the GNU General Public License as published by
5+
* the Free Software Foundation, either version 2 of the License, or
6+
* (at your option) any later version.
7+
*
8+
* This program is distributed in the hope that it will be useful,
9+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+
* GNU General Public License for more details.
12+
*
13+
* You should have received a copy of the GNU General Public License
14+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
15+
*/
16+
17+
#pragma once
18+
19+
#include "quantum.h"
20+
21+
/* This is a shortcut to help you visually see your layout.
22+
*
23+
* The first section contains all of the arguments representing the physical
24+
* layout of the board and position of the Keys.
25+
*
26+
* The second converts the arguments into a two-dimensional array which
27+
* represents the switch matrix.
28+
*/
29+
30+
#define KNO KC_NO
31+
32+
#define LAYOUT( \
33+
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K49, K41, \
34+
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1B, K1C, K4A, K42, \
35+
K20, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K4B, K44, \
36+
K30, K31, K32, K34, K37, K3A, K3B, K3C, K3D, K4C, K47 \
37+
)\
38+
{\
39+
{ K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C }, \
40+
{ K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, KNO, K1B, K1C }, \
41+
{ K20, KNO, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C }, \
42+
{ K30, K31, K32, KNO, K34, KNO, KNO, K37, KNO, K3A, K3B, K3C, K3D }, \
43+
{ KNO, K41, K42, KNO, K44, KNO, KNO, K47, KNO, K49, K4A, K4B, K4C } \
44+
}

keyboards/acheron/elongate/info.json

+70
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
{
2+
"keyboard_name": "Elongate",
3+
"url": "http://gondolindrim.github.io/AcheronDocs/elongate/introduction.html",
4+
"maintainer": "Gondolindrim",
5+
"width": 15.5,
6+
"height": 4.25,
7+
"layouts": {
8+
"LAYOUT_all": {
9+
"layout": [
10+
{"label":"Tab", "x":0, "y":0},
11+
{"label":"Q", "x":1, "y":0},
12+
{"label":"W", "x":2, "y":0},
13+
{"label":"E", "x":3, "y":0},
14+
{"label":"R", "x":4, "y":0},
15+
{"label":"T", "x":5, "y":0},
16+
{"label":"Y", "x":6, "y":0},
17+
{"label":"U", "x":7, "y":0},
18+
{"label":"I", "x":8, "y":0},
19+
{"label":"O", "x":9, "y":0},
20+
{"label":"P", "x":10, "y":0},
21+
{"label":"Backspace", "x":11, "y":0},
22+
{"label":"7", "x":12.5, "y":0},
23+
{"label":"8", "x":13.5, "y":0},
24+
{"label":"9", "x":14.5, "y":0},
25+
26+
{"label":"Caps Lock", "x":0, "y":1, "w":1.25},
27+
{"label":"A", "x":1.25, "y":1},
28+
{"label":"S", "x":2.25, "y":1},
29+
{"label":"D", "x":3.25, "y":1},
30+
{"label":"F", "x":4.25, "y":1},
31+
{"label":"G", "x":5.25, "y":1},
32+
{"label":"H", "x":6.25, "y":1},
33+
{"label":"J", "x":7.25, "y":1},
34+
{"label":"K", "x":8.25, "y":1},
35+
{"label":"L", "x":9.25, "y":1},
36+
{"label":"Enter", "x":10.25, "y":1.75},
37+
{"label":"4", "x":12.5, "y":1},
38+
{"label":"5", "x":13.5, "y":1},
39+
{"label":"6", "x":14.5, "y":1},
40+
41+
{"label":"Shift", "x":0, "y":2, "w":1.75},
42+
{"label":"Z", "x":1.75, "y":2},
43+
{"label":"X", "x":2.75, "y":2},
44+
{"label":"C", "x":3.75, "y":2},
45+
{"label":"V", "x":4.75, "y":2},
46+
{"label":"B", "x":5.75, "y":2},
47+
{"label":"N", "x":6.75, "y":2},
48+
{"label":"M", "x":7.75, "y":2},
49+
{"label":"<", "x":8.75, "y":2},
50+
{"label":"Fn1", "x":9.75, "y":2},
51+
{"label":"Up", "x":11.25, "y":2.25},
52+
{"label":"1", "x":12.5, "y":2},
53+
{"label":"2", "x":13.5, "y":2},
54+
{"label":"3", "x":14.5, "y":2},
55+
56+
{"label":"Ctrl", "x":0, "y":3, "w":1.25},
57+
{"label":"Win", "x":1.25, "y":3},
58+
{"label":"Alt", "x":2.25, "y":3, "w":1.25},
59+
{"label":"Space/Fn2", "x":3.5, "y":3, "w":2.25},
60+
{"label":"Space", "x":6.25, "y":3, "w":2.75},
61+
{"label":"Alt", "x":9, "y":3},
62+
{"label":"Left", "x":10.25, "y":3.25},
63+
{"label":"Down", "x":11.25, "y":3.25},
64+
{"label":"Right", "x":12.25, "y":3.25},
65+
{"label":"0", "x":13.5, "y":3},
66+
{"label":".", "x":14.5, "y":3},
67+
]
68+
}
69+
}
70+
}

0 commit comments

Comments
 (0)