2 Copyright 2012 Jun Wako <wakojun@gmail.com>
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.
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.
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/>.
21 #include "config_definitions.h"
23 /* USB Device descriptor parameter */
24 #define VENDOR_ID 0xFEED
25 #define PRODUCT_ID 0x6060
26 #define DEVICE_VER 0x0001
27 #define MANUFACTURER Ortholinear Keyboards
28 #define PRODUCT The Planck Keyboard
29 #define DESCRIPTION A compact ortholinear keyboard
33 #define MATRIX_COLS 12
35 /* Planck PCB default pin-out */
36 #define COLS (int []){ F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7 }
37 #define ROWS (int []){ D0, D5, B5, B6 }
39 /* COL2ROW or ROW2COL */
40 #define DIODE_DIRECTION COL2ROW
42 /* define if matrix has ghost */
43 //#define MATRIX_HAS_GHOST
45 /* number of backlight levels */
46 #define BACKLIGHT_LEVELS 3
48 /* Set 0 if debouncing isn't needed */
51 /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
52 #define LOCKING_SUPPORT_ENABLE
53 /* Locking resynchronize hack */
54 #define LOCKING_RESYNC_ENABLE
56 /* key combination for command */
57 #define IS_COMMAND() ( \
58 keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \
61 #ifdef BLUETOOTH_ENABLE
62 #ifdef __AVR_ATmega32U4__
63 #define SERIAL_UART_BAUD 9600
64 #define SERIAL_UART_DATA UDR1
65 #define SERIAL_UART_UBRR ((F_CPU/(16UL*SERIAL_UART_BAUD))-1)
66 #define SERIAL_UART_RXD_VECT USART1_RX_vect
67 #define SERIAL_UART_TXD_READY (UCSR1A&(1<<UDRE1))
68 #define SERIAL_UART_INIT() do { \
69 UBRR1L = (uint8_t) SERIAL_UART_UBRR; /* baud rate */ \
70 UBRR1H = (uint8_t) (SERIAL_UART_UBRR>>8); /* baud rate */ \
71 UCSR1B = (1<<TXEN1); /* TX: enable */ \
72 UCSR1C = (0<<UPM11) | (0<<UPM10) | /* parity: none(00), even(01), odd(11) */ \
73 (0<<UCSZ12) | (1<<UCSZ11) | (1<<UCSZ10); /* data-8bit(011) */ \
77 # error "USART configuration is needed."
81 // I'm fairly sure these aren't needed, but oh well - Jack
84 * PS/2 Interrupt configuration
87 /* uses INT1 for clock line(ATMega32U4) */
88 #define PS2_CLOCK_PORT PORTD
89 #define PS2_CLOCK_PIN PIND
90 #define PS2_CLOCK_DDR DDRD
91 #define PS2_CLOCK_BIT 1
93 #define PS2_DATA_PORT PORTD
94 #define PS2_DATA_PIN PIND
95 #define PS2_DATA_DDR DDRD
96 #define PS2_DATA_BIT 0
98 #define PS2_INT_INIT() do { \
99 EICRA |= ((1<<ISC11) | \
102 #define PS2_INT_ON() do { \
103 EIMSK |= (1<<INT1); \
105 #define PS2_INT_OFF() do { \
106 EIMSK &= ~(1<<INT1); \
108 #define PS2_INT_VECT INT1_vect
112 * PS/2 Busywait configuration
114 #ifdef PS2_USE_BUSYWAIT
115 #define PS2_CLOCK_PORT PORTD
116 #define PS2_CLOCK_PIN PIND
117 #define PS2_CLOCK_DDR DDRD
118 #define PS2_CLOCK_BIT 1
120 #define PS2_DATA_PORT PORTD
121 #define PS2_DATA_PIN PIND
122 #define PS2_DATA_DDR DDRD
123 #define PS2_DATA_BIT 0
129 * Feature disable options
130 * These options are also useful to firmware size reduction.
133 /* disable debug print */
139 /* disable action features */
140 //#define NO_ACTION_LAYER
141 //#define NO_ACTION_TAPPING
142 //#define NO_ACTION_ONESHOT
143 //#define NO_ACTION_MACRO
144 //#define NO_ACTION_FUNCTION