summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJack Humbert <jack.humb@gmail.com>2015-05-15 21:57:29 -0400
committerJack Humbert <jack.humb@gmail.com>2015-05-15 21:57:29 -0400
commit0e189b6bddb6b71d2aaa019689fbdb03beafa8a3 (patch)
tree87c9918de5f0a070d8f257c1ea1c6c64d6488334
parentcb3e499cc7dbff2607bc43cb05fc8c29a2eb9d30 (diff)
quark
-rw-r--r--keyboard/planck/Makefile4
-rw-r--r--keyboard/planck/backlight.c2
-rw-r--r--keyboard/planck/extended_keymaps/extended_keymap_jack.c9
-rw-r--r--keyboard/planck/keymap_common.h4
-rw-r--r--keyboard/planck/led.c26
-rw-r--r--keyboard/planck/matrix.c76
-rw-r--r--keyboard/planck/matrix_handwire.c193
-rw-r--r--keyboard/quark/Makefile6
-rw-r--r--keyboard/quark/extended_keymaps/extended_keymap_default.c40
-rw-r--r--keyboard/quark/extended_keymaps/extended_keymap_jack.c49
-rw-r--r--keyboard/quark/matrix.c76
-rw-r--r--keyboard/quark/matrix_center.c202
-rw-r--r--keyboard/quark/matrix_handwire.c193
-rw-r--r--rules.mk5
14 files changed, 121 insertions, 764 deletions
diff --git a/keyboard/planck/Makefile b/keyboard/planck/Makefile
index 773783ad1d..2f5517b1b1 100644
--- a/keyboard/planck/Makefile
+++ b/keyboard/planck/Makefile
@@ -53,7 +53,7 @@ TARGET_DIR = .
ifdef COMMON
SRC = keymap_common.c \
- matrix.c \
+ matrix_pcb.c \
led.c \
backlight.c
@@ -66,7 +66,7 @@ endif
else
SRC = extended_keymap_common.c \
- matrix.c \
+ matrix_pcb.c \
led.c \
backlight.c
diff --git a/keyboard/planck/backlight.c b/keyboard/planck/backlight.c
index a560687ec0..06f103b4ac 100644
--- a/keyboard/planck/backlight.c
+++ b/keyboard/planck/backlight.c
@@ -4,7 +4,7 @@
#define CHANNEL OCR1C
-void backlight_init_ports(uint8_t level)
+void backlight_init_ports()
{
// Setup PB7 as output and output low.
diff --git a/keyboard/planck/extended_keymaps/extended_keymap_jack.c b/keyboard/planck/extended_keymaps/extended_keymap_jack.c
index de966ca9df..d39dc5b84c 100644
--- a/keyboard/planck/extended_keymaps/extended_keymap_jack.c
+++ b/keyboard/planck/extended_keymaps/extended_keymap_jack.c
@@ -5,25 +5,26 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
{KC_TAB, CM_Q, CM_W, CM_F, CM_P, CM_G, CM_J, CM_L, CM_U, CM_Y, CM_SCLN, KC_BSPC},
{KC_ESC, CM_A, CM_R, CM_S, CM_T, CM_D, CM_H, CM_N, CM_E, CM_I, CM_O, KC_QUOT},
{KC_LSFT, CM_Z, CM_X, CM_C, CM_V, CM_B, CM_K, CM_M, CM_COMM, CM_DOT, CM_SLSH, KC_ENT},
- {BL_STEP, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_NO, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+ {BL_STEP, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+ // Space is repeated to accommadate for both spacebar wiring positions
},
[1] = { /* Jack hard-coded colemak */
{KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC},
{KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT},
{KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT},
- {KC_FN3, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_NO, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
+ {KC_FN3, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_SPC, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
},
[2] = { /* Jack RAISE */
{KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
{KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS},
{KC_TRNS, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, FUNC(1), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(1), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
},
[3] = { /* Jack LOWER */
{S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_BSPC},
{KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL), S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)},
{KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_TRNS, KC_NO, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
+ {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
}
};
diff --git a/keyboard/planck/keymap_common.h b/keyboard/planck/keymap_common.h
index c74c7e9a28..d888d81733 100644
--- a/keyboard/planck/keymap_common.h
+++ b/keyboard/planck/keymap_common.h
@@ -50,12 +50,12 @@ extern const uint16_t fn_actions[];
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, \
- K30, K31, K32, K33, K34, K35, K37, K38, K39, K3A, K3B \
+ K30, K31, K32, K33, K34, K35, K37, K38, K39, K3A, K3B \
) { \
{ KC_##K00, KC_##K01, KC_##K02, KC_##K03, KC_##K04, KC_##K05, KC_##K06, KC_##K07, KC_##K08, KC_##K09, KC_##K0A, KC_##K0B }, \
{ KC_##K10, KC_##K11, KC_##K12, KC_##K13, KC_##K14, KC_##K15, KC_##K16, KC_##K17, KC_##K18, KC_##K19, KC_##K1A, KC_##K1B }, \
{ KC_##K20, KC_##K21, KC_##K22, KC_##K23, KC_##K24, KC_##K25, KC_##K26, KC_##K27, KC_##K28, KC_##K29, KC_##K2A, KC_##K2B }, \
- { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_NO, KC_##K37, KC_##K38, KC_##K39, KC_##K3A, KC_##K3B } \
+ { KC_##K30, KC_##K31, KC_##K32, KC_##K33, KC_##K34, KC_##K35, KC_##K35, KC_##K37, KC_##K38, KC_##K39, KC_##K3A, KC_##K3B } \
}
// Grid Layout
diff --git a/keyboard/planck/led.c b/keyboard/planck/led.c
index 1f36434883..2c05746607 100644
--- a/keyboard/planck/led.c
+++ b/keyboard/planck/led.c
@@ -22,17 +22,17 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
void led_set(uint8_t usb_led)
{
- // Using PE6 Caps Lock LED
- if (usb_led & (1<<USB_LED_CAPS_LOCK))
- {
- // Output high.
- DDRE |= (1<<6);
- PORTE |= (1<<6);
- }
- else
- {
- // Output low.
- DDRE &= ~(1<<6);
- PORTE &= ~(1<<6);
- }
+ // // Using PE6 Caps Lock LED
+ // if (usb_led & (1<<USB_LED_CAPS_LOCK))
+ // {
+ // // Output high.
+ // DDRE |= (1<<6);
+ // PORTE |= (1<<6);
+ // }
+ // else
+ // {
+ // // Output low.
+ // DDRE &= ~(1<<6);
+ // PORTE &= ~(1<<6);
+ // }
}
diff --git a/keyboard/planck/matrix.c b/keyboard/planck/matrix.c
index 156e081d14..2f2dbdb108 100644
--- a/keyboard/planck/matrix.c
+++ b/keyboard/planck/matrix.c
@@ -27,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "debug.h"
#include "util.h"
#include "matrix.h"
-#include "backlight.h" // TODO fix this dependency
#ifndef DEBOUNCE
@@ -58,13 +57,6 @@ uint8_t matrix_cols(void)
void matrix_init(void)
{
- // To use PORTF disable JTAG with writing JTD bit twice within four cycles.
- MCUCR |= (1<<JTD);
- MCUCR |= (1<<JTD);
-
- // Pass default level here
- backlight_init_ports(15);
-
// initialize row and col
unselect_rows();
init_cols();
@@ -142,19 +134,10 @@ uint8_t matrix_key_count(void)
return count;
}
-//
-// Planck PCB Rev 1 Pin Assignments
-//
-// Column: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
-// Pin: F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7
-//
-
static void init_cols(void)
{
- DDRB &= ~(1<<4 | 1<<0);
- PORTB |= (1<<4 | 1<<0);
- DDRC &= ~(1<<7);
- PORTC |= (1<<7);
+ DDRB &= ~(1<<6 | 1<<5 | 1<<4);
+ PORTB |= (1<<6 | 1<<5 | 1<<4);
DDRD &= ~(1<<7 | 1<<6 | 1<<4);
PORTD |= (1<<7 | 1<<6 | 1<<4);
DDRF &= ~(1<<0 | 1<<1 | 1<<4 | 1<<5 | 1<<6 | 1<<7);
@@ -164,56 +147,47 @@ static void init_cols(void)
static matrix_row_t read_cols(void)
{
- return (PINF&(1<<1) ? 0 : (1<<0)) |
- (PINF&(1<<0) ? 0 : (1<<1)) |
- (PINB&(1<<0) ? 0 : (1<<2)) |
- (PINC&(1<<7) ? 0 : (1<<3)) |
- (PINF&(1<<4) ? 0 : (1<<4)) |
- (PINF&(1<<5) ? 0 : (1<<5)) |
- (PINF&(1<<6) ? 0 : (1<<6)) |
- (PINF&(1<<7) ? 0 : (1<<7)) |
- (PIND&(1<<4) ? 0 : (1<<8)) |
- (PIND&(1<<6) ? 0 : (1<<9)) |
- (PINB&(1<<4) ? 0 : (1<<10)) |
- (PIND&(1<<7) ? 0 : (1<<11));
+ return (PIND&(1<<4) ? 0 : (1<<0)) |
+ (PIND&(1<<6) ? 0 : (1<<1)) |
+ (PIND&(1<<7) ? 0 : (1<<2)) |
+ (PINB&(1<<4) ? 0 : (1<<3)) |
+ (PINB&(1<<5) ? 0 : (1<<4)) |
+ (PINB&(1<<6) ? 0 : (1<<5)) |
+ (PINF&(1<<7) ? 0 : (1<<6)) |
+ (PINF&(1<<6) ? 0 : (1<<7)) |
+ (PINF&(1<<5) ? 0 : (1<<8)) |
+ (PINF&(1<<4) ? 0 : (1<<9)) |
+ (PINF&(1<<1) ? 0 : (1<<10)) |
+ (PINF&(1<<0) ? 0 : (1<<11));
}
static void unselect_rows(void)
{
- DDRB &= ~(1<<5 | 1<<6);
- PORTB |= (1<<5 | 1<<6);
- DDRD &= ~(1<<0 | 1<<5);
- PORTD |= (1<<0 | 1<<5);
+ DDRB &= ~(1<<0 | 1<<1 | 1<<2 | 1<<3);
+ PORTB |= (1<<0 | 1<<1 | 1<<2 | 1<<3);
}
-//
-// Planck PCB Rev 1 Pin Assignments
-//
-// Row: 0, 1, 2, 3
-// Pin: D0, D5, B5, B6
-//
-
static void select_row(uint8_t row)
{
switch (row) {
case 0:
- DDRD |= (1<<0);
- PORTD &= ~(1<<0);
+ DDRB |= (1<<0);
+ PORTB &= ~(1<<0);
break;
case 1:
- DDRD |= (1<<5);
- PORTD &= ~(1<<5);
+ DDRB |= (1<<1);
+ PORTB &= ~(1<<1);
break;
case 2:
- DDRB |= (1<<5);
- PORTB &= ~(1<<5);
+ DDRB |= (1<<2);
+ PORTB &= ~(1<<2);
break;
case 3:
- DDRB |= (1<<6);
- PORTB &= ~(1<<6);
+ DDRB |= (1<<3);
+ PORTB &= ~(1<<3);
break;
}
-} \ No newline at end of file
+}
diff --git a/keyboard/planck/matrix_handwire.c b/keyboard/planck/matrix_handwire.c
deleted file mode 100644
index 2f2dbdb108..0000000000
--- a/keyboard/planck/matrix_handwire.c
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
-Copyright 2012 Jun Wako
-Generated by planckkeyboard.com (2014 Jack Humbert)
-
-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 <http://www.gnu.org/licenses/>.
-*/
-
-/*
- * scan matrix
- */
-#include <stdint.h>
-#include <stdbool.h>
-#include <avr/io.h>
-#include <util/delay.h>
-#include "print.h"
-#include "debug.h"
-#include "util.h"
-#include "matrix.h"
-
-
-#ifndef DEBOUNCE
-# define DEBOUNCE 10
-#endif
-static uint8_t debouncing = DEBOUNCE;
-
-/* matrix state(1:on, 0:off) */
-static matrix_row_t matrix[MATRIX_ROWS];
-static matrix_row_t matrix_debouncing[MATRIX_ROWS];
-
-static matrix_row_t read_cols(void);
-static void init_cols(void);
-static void unselect_rows(void);
-static void select_row(uint8_t row);
-
-inline
-uint8_t matrix_rows(void)
-{
- return MATRIX_ROWS;
-}
-
-inline
-uint8_t matrix_cols(void)
-{
- return MATRIX_COLS;
-}
-
-void matrix_init(void)
-{
- // initialize row and col
- unselect_rows();
- init_cols();
-
- // initialize matrix state: all keys off
- for (uint8_t i=0; i < MATRIX_ROWS; i++) {
- matrix[i] = 0;
- matrix_debouncing[i] = 0;
- }
-}
-
-uint8_t matrix_scan(void)
-{
- for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
- select_row(i);
- _delay_us(30); // without this wait read unstable value.
- matrix_row_t cols = read_cols();
- if (matrix_debouncing[i] != cols) {
- matrix_debouncing[i] = cols;
- if (debouncing) {
- debug("bounce!: "); debug_hex(debouncing); debug("\n");
- }
- debouncing = DEBOUNCE;
- }
- unselect_rows();
- }
-
- if (debouncing) {
- if (--debouncing) {
- _delay_ms(1);
- } else {
- for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
- matrix[i] = matrix_debouncing[i];
- }
- }
- }
-
- return 1;
-}
-
-bool matrix_is_modified(void)
-{
- if (debouncing) return false;
- return true;
-}
-
-inline
-bool matrix_is_on(uint8_t row, uint8_t col)
-{
- return (matrix[row] & ((matrix_row_t)1<col));
-}
-
-inline
-matrix_row_t matrix_get_row(uint8_t row)
-{
- return matrix[row];
-}
-
-void matrix_print(void)
-{
- print("\nr/c 0123456789ABCDEF\n");
- for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
- phex(row); print(": ");
- pbin_reverse16(matrix_get_row(row));
- print("\n");
- }
-}
-
-uint8_t matrix_key_count(void)
-{
- uint8_t count = 0;
- for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
- count += bitpop16(matrix[i]);
- }
- return count;
-}
-
-static void init_cols(void)
-{
- DDRB &= ~(1<<6 | 1<<5 | 1<<4);
- PORTB |= (1<<6 | 1<<5 | 1<<4);
- DDRD &= ~(1<<7 | 1<<6 | 1<<4);
- PORTD |= (1<<7 | 1<<6 | 1<<4);
- DDRF &= ~(1<<0 | 1<<1 | 1<<4 | 1<<5 | 1<<6 | 1<<7);
- PORTF |= (1<<0 | 1<<1 | 1<<4 | 1<<5 | 1<<6 | 1<<7);
-
-}
-
-static matrix_row_t read_cols(void)
-{
- return (PIND&(1<<4) ? 0 : (1<<0)) |
- (PIND&(1<<6) ? 0 : (1<<1)) |
- (PIND&(1<<7) ? 0 : (1<<2)) |
- (PINB&(1<<4) ? 0 : (1<<3)) |
- (PINB&(1<<5) ? 0 : (1<<4)) |
- (PINB&(1<<6) ? 0 : (1<<5)) |
- (PINF&(1<<7) ? 0 : (1<<6)) |
- (PINF&(1<<6) ? 0 : (1<<7)) |
- (PINF&(1<<5) ? 0 : (1<<8)) |
- (PINF&(1<<4) ? 0 : (1<<9)) |
- (PINF&(1<<1) ? 0 : (1<<10)) |
- (PINF&(1<<0) ? 0 : (1<<11));
-
-}
-
-static void unselect_rows(void)
-{
- DDRB &= ~(1<<0 | 1<<1 | 1<<2 | 1<<3);
- PORTB |= (1<<0 | 1<<1 | 1<<2 | 1<<3);
-
-}
-
-static void select_row(uint8_t row)
-{
- switch (row) {
- case 0:
- DDRB |= (1<<0);
- PORTB &= ~(1<<0);
- break;
- case 1:
- DDRB |= (1<<1);
- PORTB &= ~(1<<1);
- break;
- case 2:
- DDRB |= (1<<2);
- PORTB &= ~(1<<2);
- break;
- case 3:
- DDRB |= (1<<3);
- PORTB &= ~(1<<3);
- break;
-
- }
-}
diff --git a/keyboard/quark/Makefile b/keyboard/quark/Makefile
index df012064d1..f79445e23b 100644
--- a/keyboard/quark/Makefile
+++ b/keyboard/quark/Makefile
@@ -53,7 +53,7 @@ TARGET_DIR = .
ifdef COMMON
SRC = keymap_common.c \
- matrix_handwire.c \
+ matrix.c \
led.c \
backlight.c
@@ -66,14 +66,14 @@ endif
else
SRC = extended_keymap_common.c \
- matrix_handwire.c \
+ matrix.c \
led.c \
backlight.c
ifdef KEYMAP
SRC := extended_keymaps/extended_keymap_$(KEYMAP).c $(SRC)
else
- SRC := extended_keymaps/extended_keymap_jack.c $(SRC)
+ SRC := extended_keymaps/extended_keymap_default.c $(SRC)
endif
endif
diff --git a/keyboard/quark/extended_keymaps/extended_keymap_default.c b/keyboard/quark/extended_keymaps/extended_keymap_default.c
new file mode 100644
index 0000000000..7ddc1aad96
--- /dev/null
+++ b/keyboard/quark/extended_keymaps/extended_keymap_default.c
@@ -0,0 +1,40 @@
+#include "extended_keymap_common.h"
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+[0] = {
+ {KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC},
+ { KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_NO, KC_ENT},
+ {KC_CAPS, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT},
+ { KC_LCTL, KC_LALT, KC_LGUI, KC_NO, FUNC(2), KC_SPC, KC_NO, KC_NO, FUNC(1), KC_LEFT, KC_DOWN, KC_RGHT}
+},
+[1] = {
+ {KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL},
+ { KC_TAB, KC_A, KC_S,S(KC_BSLS), S(KC_COMM),S(KC_DOT),S(KC_MINS),S(KC_GRV),S(KC_LBRC), S(KC_RBRC), KC_NO, KC_ENT},
+ {KC_CAPS, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_SCLN, S(KC_SCLN), KC_HOME, KC_PGUP, KC_RSFT},
+ { KC_LCTL, KC_LALT, KC_LGUI, KC_NO, FUNC(2), KC_SPC, KC_NO, KC_NO, FUNC(1), KC_SCLN, KC_QUOT, KC_SLSH}
+},
+[2] = {
+ {KC_ESC, S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_BSPC},
+ { KC_TAB, KC_A, KC_S, KC_D, KC_BSLS, KC_SLSH, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_NO, KC_ENT},
+ {KC_CAPS, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, S(KC_7), S(KC_EQL), KC_COMM, KC_UP, KC_RSFT},
+ { KC_LCTL, KC_LALT, KC_LGUI, KC_NO, FUNC(2), KC_SPC, KC_NO, KC_NO, FUNC(1), KC_LEFT, KC_DOWN, KC_RGHT}
+}
+};
+
+
+const uint16_t PROGMEM fn_actions[] = {
+ [1] = ACTION_LAYER_MOMENTARY(1), // to Fn overlay
+ [2] = ACTION_LAYER_MOMENTARY(2), // to Fn overlay
+
+};
+
+const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
+{
+ // MACRODOWN only works in this function
+ switch(id) {
+ case 0:
+ return MACRO_NONE;
+ break;
+ }
+ return MACRO_NONE;
+};
diff --git a/keyboard/quark/extended_keymaps/extended_keymap_jack.c b/keyboard/quark/extended_keymaps/extended_keymap_jack.c
deleted file mode 100644
index 416ae83450..0000000000
--- a/keyboard/quark/extended_keymaps/extended_keymap_jack.c
+++ /dev/null
@@ -1,49 +0,0 @@
-#include "extended_keymap_common.h"
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-[0] = { /* Jack soft-coded colemak */
- {KC_TAB, CM_Q, CM_W, CM_F, CM_P, CM_G, CM_J, CM_L, CM_U, CM_Y, CM_SCLN, KC_BSPC},
- {KC_ESC, CM_A, CM_R, CM_S, CM_T, CM_D, CM_H, CM_N, CM_E, CM_I, CM_O, KC_QUOT},
- {KC_LSFT, CM_Z, CM_X, CM_C, CM_V, CM_B, CM_K, CM_M, CM_COMM, CM_DOT, CM_SLSH, KC_ENT},
- {M(0), KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_NO, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
-},
-[1] = { /* Jack hard-coded colemak */
- {KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC},
- {KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT},
- {KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT},
- {KC_FN3, KC_LCTL, KC_LALT, KC_LGUI, FUNC(2), KC_SPC, KC_NO, FUNC(1), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT}
-},
-[2] = { /* Jack RAISE */
- {KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC},
- {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS},
- {KC_TRNS, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, FUNC(1), KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
-},
-[3] = { /* Jack LOWER */
- {S(KC_GRV), S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), S(KC_6), S(KC_7), S(KC_8), S(KC_9), S(KC_0), KC_BSPC},
- {KC_TRNS, FUNC(3), FUNC(4), LSFT(RSFT(KC_PAUSE)), KC_TRNS, KC_TRNS, KC_TRNS, S(KC_MINS), S(KC_EQL), S(KC_LBRC), S(KC_RBRC), S(KC_BSLS)},
- {KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS},
- {KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, FUNC(2), KC_TRNS, KC_NO, KC_TRNS, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY}
-}
-};
-
-
-const uint16_t PROGMEM fn_actions[] = {
- [1] = ACTION_LAYER_MOMENTARY(2), // to Fn overlay
- [2] = ACTION_LAYER_MOMENTARY(3), // to Fn overlay
-
- [3] = ACTION_DEFAULT_LAYER_SET(0),
- [4] = ACTION_DEFAULT_LAYER_SET(1),
-
-};
-
-const macro_t *action_get_macro(keyrecord_t *record, uint8_t id, uint8_t opt)
-{
- // MACRODOWN only works in this function
- switch(id) {
- case 0:
- return MACRODOWN(T(CM_T), END);
- break;
- }
- return MACRO_NONE;
-};
diff --git a/keyboard/quark/matrix.c b/keyboard/quark/matrix.c
index e3926caece..2f2dbdb108 100644
--- a/keyboard/quark/matrix.c
+++ b/keyboard/quark/matrix.c
@@ -27,7 +27,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "debug.h"
#include "util.h"
#include "matrix.h"
-#include "backlight.h" // TODO fix this dependency
#ifndef DEBOUNCE
@@ -58,13 +57,6 @@ uint8_t matrix_cols(void)
void matrix_init(void)
{
- // To use PORTF disable JTAG with writing JTD bit twice within four cycles.
- MCUCR |= (1<<JTD);
- MCUCR |= (1<<JTD);
-
- // TODO fix this dependency
- backlight_init_ports();
-
// initialize row and col
unselect_rows();
init_cols();
@@ -142,19 +134,10 @@ uint8_t matrix_key_count(void)
return count;
}
-//
-// Planck PCB Rev 1 Pin Assignments
-//
-// Column: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
-// Pin: F1, F0, B0, C7, F4, F5, F6, F7, D4, D6, B4, D7
-//
-
static void init_cols(void)
{
- DDRB &= ~(1<<4 | 1<<0);
- PORTB |= (1<<4 | 1<<0);
- DDRC &= ~(1<<7);
- PORTC |= (1<<7);
+ DDRB &= ~(1<<6 | 1<<5 | 1<<4);
+ PORTB |= (1<<6 | 1<<5 | 1<<4);
DDRD &= ~(1<<7 | 1<<6 | 1<<4);
PORTD |= (1<<7 | 1<<6 | 1<<4);
DDRF &= ~(1<<0 | 1<<1 | 1<<4 | 1<<5 | 1<<6 | 1<<7);
@@ -164,56 +147,47 @@ static void init_cols(void)
static matrix_row_t read_cols(void)
{
- return (PINF&(1<<1) ? 0 : (1<<0)) |
- (PINF&(1<<0) ? 0 : (1<<1)) |
- (PINB&(1<<0) ? 0 : (1<<2)) |
- (PINC&(1<<7) ? 0 : (1<<3)) |
- (PINF&(1<<4) ? 0 : (1<<4)) |
- (PINF&(1<<5) ? 0 : (1<<5)) |
- (PINF&(1<<6) ? 0 : (1<<6)) |
- (PINF&(1<<7) ? 0 : (1<<7)) |
- (PIND&(1<<4) ? 0 : (1<<8)) |
- (PIND&(1<<6) ? 0 : (1<<9)) |
- (PINB&(1<<4) ? 0 : (1<<10)) |
- (PIND&(1<<7) ? 0 : (1<<11));
+ return (PIND&(1<<4) ? 0 : (1<<0)) |
+ (PIND&(1<<6) ? 0 : (1<<1)) |
+ (PIND&(1<<7) ? 0 : (1<<2)) |
+ (PINB&(1<<4) ? 0 : (1<<3)) |
+ (PINB&(1<<5) ? 0 : (1<<4)) |
+ (PINB&(1<<6) ? 0 : (1<<5)) |
+ (PINF&(1<<7) ? 0 : (1<<6)) |
+ (PINF&(1<<6) ? 0 : (1<<7)) |
+ (PINF&(1<<5) ? 0 : (1<<8)) |
+ (PINF&(1<<4) ? 0 : (1<<9)) |
+ (PINF&(1<<1) ? 0 : (1<<10)) |
+ (PINF&(1<<0) ? 0 : (1<<11));
}
static void unselect_rows(void)
{
- DDRB &= ~(1<<5 | 1<<6);
- PORTB |= (1<<5 | 1<<6);
- DDRD &= ~(1<<0 | 1<<5);
- PORTD |= (1<<0 | 1<<5);
+ DDRB &= ~(1<<0 | 1<<1 | 1<<2 | 1<<3);
+ PORTB |= (1<<0 | 1<<1 | 1<<2 | 1<<3);
}
-//
-// Planck PCB Rev 1 Pin Assignments
-//
-// Row: 0, 1, 2, 3
-// Pin: D0, D5, B5, B6
-//
-
static void select_row(uint8_t row)
{
switch (row) {
case 0:
- DDRD |= (1<<0);
- PORTD &= ~(1<<0);
+ DDRB |= (1<<0);
+ PORTB &= ~(1<<0);
break;
case 1:
- DDRD |= (1<<5);
- PORTD &= ~(1<<5);
+ DDRB |= (1<<1);
+ PORTB &= ~(1<<1);
break;
case 2:
- DDRB |= (1<<5);
- PORTB &= ~(1<<5);
+ DDRB |= (1<<2);
+ PORTB &= ~(1<<2);
break;
case 3:
- DDRB |= (1<<6);
- PORTB &= ~(1<<6);
+ DDRB |= (1<<3);
+ PORTB &= ~(1<<3);
break;
}
-} \ No newline at end of file
+}
diff --git a/keyboard/quark/matrix_center.c b/keyboard/quark/matrix_center.c
deleted file mode 100644
index 8e34130d6f..0000000000
--- a/keyboard/quark/matrix_center.c
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
-Copyright 2012 Jun Wako <wakojun@gmail.com>
-
-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 <http://www.gnu.org/licenses/>.
-*/
-
-/*
- * scan matrix
- */
-#include <stdint.h>
-#include <stdbool.h>
-#include <avr/io.h>
-#include <util/delay.h>
-#include "action_layer.h"
-#include "print.h"
-#include "debug.h"
-#include "util.h"
-#include "matrix.h"
-
-
-#ifndef DEBOUNCE
-# define DEBOUNCE 10
-#endif
-static uint8_t debouncing = DEBOUNCE;
-
-/* matrix state(1:on, 0:off) */
-static matrix_row_t matrix[MATRIX_ROWS];
-static matrix_row_t matrix_debouncing[MATRIX_ROWS];
-
-static matrix_row_t read_cols(void);
-static void init_cols(void);
-static void unselect_rows(void);
-static void select_row(uint8_t row);
-
-
-inline
-uint8_t matrix_rows(void)
-{
- return MATRIX_ROWS;
-}
-
-inline
-uint8_t matrix_cols(void)
-{
- return MATRIX_COLS;
-}
-
-void matrix_init(void)
-{
- // initialize row and col
- unselect_rows();
- init_cols();
-
- // initialize matrix state: all keys off
- for (uint8_t i=0; i < MATRIX_ROWS; i++) {
- matrix[i] = 0;
- matrix_debouncing[i] = 0;
- }
-}
-
-uint8_t matrix_scan(void)
-{
- for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
- select_row(i);
- _delay_us(30); // without this wait read unstable value.
- matrix_row_t cols = read_cols();
- if (matrix_debouncing[i] != cols) {
- matrix_debouncing[i] = cols;
- if (debouncing) {
- debug("bounce!: "); debug_hex(debouncing); debug("\n");
- }
- debouncing = DEBOUNCE;
- }
- unselect_rows();
- }
-
- if (debouncing) {
- if (--debouncing) {
- _delay_ms(1);
- } else {
- for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
- matrix[i] = matrix_debouncing[i];
- }
- }
- }
-
- return 1;
-}
-
-bool matrix_is_modified(void)
-{
- if (debouncing) return false;
- return true;
-}
-
-inline
-bool matrix_is_on(uint8_t row, uint8_t col)
-{
- return (matrix[row] & ((matrix_row_t)1<<col));
-}
-
-inline
-matrix_row_t matrix_get_row(uint8_t row)
-{
- return matrix[row];
-}
-
-void matrix_print(void)
-{
- print("\nr/c 0123456789ABCDEF\n");
- for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
- phex(row); print(": ");
- pbin_reverse16(matrix_get_row(row));
- print("\n");
- }
-}
-
-uint8_t matrix_key_count(void)
-{
- uint8_t count = 0;
- for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
- count += bitpop16(matrix[i]);
- }
- return count;
-}
-
-/* Column pin configuration
- * col: 0 1 2 3 4 5 6 7 8 9 10 11
- * pin: F0 F1 F4 F5 F6 F7 B6 B5 B4 D7 D5 D4
- */
-
-static void init_cols(void)
-{
- DDRF &= ~(1<<0 | 1<<1 | 1<<4 | 1<<5 | 1<<6 | 1<<7);
- PORTF |= (1<<0 | 1<<1 | 1<<4 | 1<<5 | 1<<6 | 1<<7);
- DDRD &= ~(1<<0);
- PORTD |= (1<<0);
- DDRB &= ~(1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<7);
- PORTB |= (1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<7);
-}
-
-static matrix_row_t read_cols(void)
-{
- return (PINB&(1<<0) ? 0 : (1<< 0)) |
- (PINB&(1<<1) ? 0 : (1<< 1)) |
- (PINB&(1<<2) ? 0 : (1<< 2)) |
- (PINB&(1<<3) ? 0 : (1<< 3)) |
- (PINB&(1<<7) ? 0 : (1<< 4)) |
- (PIND&(1<<0) ? 0 : (1<< 5)) |
- (PINF&(1<<7) ? 0 : (1<< 6)) |
- (PINF&(1<<6) ? 0 : (1<< 7)) |
- (PINF&(1<<5) ? 0 : (1<< 8)) |
- (PINF&(1<<4) ? 0 : (1<< 9)) |
- (PINF&(1<<1) ? 0 : (1<<10)) |
- (PINF&(1<<0) ? 0 : (1<<11));
-}
-
-/* Row pin configuration
- * row: 0 1 2 3
- * pin: B0 B1 B2 B3
- */
-static void unselect_rows(void)
-{
- // Hi-Z(DDR:0, PORT:0) to unselect
- DDRB &= ~0b01110000;
- PORTB &= ~0b01110000;
- DDRD &= ~0b10000000;
- PORTD &= ~0b10000000;
-}
-
-static void select_row(uint8_t row)
-{
- switch (row) {
- case 0:
- DDRB |= (1<<6);
- PORTB &= ~(1<<6);
- break;
- case 1:
- DDRB |= (1<<5);
- PORTB &= ~(1<<5);
- break;
- case 2:
- DDRB |= (1<<4);
- PORTB &= ~(1<<4);
- break;
- case 3:
- DDRD |= (1<<7);
- PORTD &= ~(1<<7);
- break;
- }
-}
diff --git a/keyboard/quark/matrix_handwire.c b/keyboard/quark/matrix_handwire.c
deleted file mode 100644
index 2f2dbdb108..0000000000
--- a/keyboard/quark/matrix_handwire.c
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
-Copyright 2012 Jun Wako
-Generated by planckkeyboard.com (2014 Jack Humbert)
-
-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 <http://www.gnu.org/licenses/>.
-*/
-
-/*
- * scan matrix
- */
-#include <stdint.h>
-#include <stdbool.h>
-#include <avr/io.h>
-#include <util/delay.h>
-#include "print.h"
-#include "debug.h"
-#include "util.h"
-#include "matrix.h"
-
-
-#ifndef DEBOUNCE
-# define DEBOUNCE 10
-#endif
-static uint8_t debouncing = DEBOUNCE;
-
-/* matrix state(1:on, 0:off) */
-static matrix_row_t matrix[MATRIX_ROWS];
-static matrix_row_t matrix_debouncing[MATRIX_ROWS];
-
-static matrix_row_t read_cols(void);
-static void init_cols(void);
-static void unselect_rows(void);
-static void select_row(uint8_t row);
-
-inline
-uint8_t matrix_rows(void)
-{
- return MATRIX_ROWS;
-}
-
-inline
-uint8_t matrix_cols(void)
-{
- return MATRIX_COLS;
-}
-
-void matrix_init(void)
-{
- // initialize row and col
- unselect_rows();
- init_cols();
-
- // initialize matrix state: all keys off
- for (uint8_t i=0; i < MATRIX_ROWS; i++) {
- matrix[i] = 0;
- matrix_debouncing[i] = 0;
- }
-}
-
-uint8_t matrix_scan(void)
-{
- for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
- select_row(i);
- _delay_us(30); // without this wait read unstable value.
- matrix_row_t cols = read_cols();
- if (matrix_debouncing[i] != cols) {
- matrix_debouncing[i] = cols;
- if (debouncing) {
- debug("bounce!: "); debug_hex(debouncing); debug("\n");
- }
- debouncing = DEBOUNCE;
- }
- unselect_rows();
- }
-
- if (debouncing) {
- if (--debouncing) {
- _delay_ms(1);
- } else {
- for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
- matrix[i] = matrix_debouncing[i];
- }
- }
- }
-
- return 1;
-}
-
-bool matrix_is_modified(void)
-{
- if (debouncing) return false;
- return true;
-}
-
-inline
-bool matrix_is_on(uint8_t row, uint8_t col)
-{
- return (matrix[row] & ((matrix_row_t)1<col));
-}
-
-inline
-matrix_row_t matrix_get_row(uint8_t row)
-{
- return matrix[row];
-}
-
-void matrix_print(void)
-{
- print("\nr/c 0123456789ABCDEF\n");
- for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
- phex(row); print(": ");
- pbin_reverse16(matrix_get_row(row));
- print("\n");
- }
-}
-
-uint8_t matrix_key_count(void)
-{
- uint8_t count = 0;
- for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
- count += bitpop16(matrix[i]);
- }
- return count;
-}
-
-static void init_cols(void)
-{
- DDRB &= ~(1<<6 | 1<<5 | 1<<4);
- PORTB |= (1<<6 | 1<<5 | 1<<4);
- DDRD &= ~(1<<7 | 1<<6 | 1<<4);
- PORTD |= (1<<7 | 1<<6 | 1<<4);
- DDRF &= ~(1<<0 | 1<<1 | 1<<4 | 1<<5 | 1<<6 | 1<<7);
- PORTF |= (1<<0 | 1<<1 | 1<<4 | 1<<5 | 1<<6 | 1<<7);
-
-}
-
-static matrix_row_t read_cols(void)
-{
- return (PIND&(1<<4) ? 0 : (1<<0)) |
- (PIND&(1<<6) ? 0 : (1<<1)) |
- (PIND&(1<<7) ? 0 : (1<<2)) |
- (PINB&(1<<4) ? 0 : (1<<3)) |
- (PINB&(1<<5) ? 0 : (1<<4)) |
- (PINB&(1<<6) ? 0 : (1<<5)) |
- (PINF&(1<<7) ? 0 : (1<<6)) |
- (PINF&(1<<6) ? 0 : (1<<7)) |
- (PINF&(1<<5) ? 0 : (1<<8)) |
- (PINF&(1<<4) ? 0 : (1<<9)) |
- (PINF&(1<<1) ? 0 : (1<<10)) |
- (PINF&(1<<0) ? 0 : (1<<11));
-
-}
-
-static void unselect_rows(void)
-{
- DDRB &= ~(1<<0 | 1<<1 | 1<<2 | 1<<3);
- PORTB |= (1<<0 | 1<<1 | 1<<2 | 1<<3);
-
-}
-
-static void select_row(uint8_t row)
-{
- switch (row) {
- case 0:
- DDRB |= (1<<0);
- PORTB &= ~(1<<0);
- break;
- case 1:
- DDRB |= (1<<1);
- PORTB &= ~(1<<1);
- break;
- case 2:
- DDRB |= (1<<2);
- PORTB &= ~(1<<2);
- break;
- case 3:
- DDRB |= (1<<3);
- PORTB &= ~(1<<3);
- break;
-
- }
-}
diff --git a/rules.mk b/rules.mk
index 83c9da5f84..b7380fc89a 100644
--- a/rules.mk
+++ b/rules.mk
@@ -422,6 +422,11 @@ dfu: $(TARGET).hex
dfu-programmer $(MCU) erase
dfu-programmer $(MCU) flash $(TARGET).hex
dfu-programmer $(MCU) reset
+
+dfu-force: $(TARGET).hex
+ dfu-programmer $(MCU) erase --force
+ dfu-programmer $(MCU) flash $(TARGET).hex
+ dfu-programmer $(MCU) reset
dfu-start:
dfu-programmer $(MCU) reset