aboutsummaryrefslogtreecommitdiff
path: root/keyboards/percent
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/percent')
-rw-r--r--keyboards/percent/canoe/canoe.c10
-rw-r--r--keyboards/percent/canoe/canoe.h10
-rw-r--r--keyboards/percent/canoe/config.h6
-rw-r--r--keyboards/percent/canoe/matrix.c112
-rw-r--r--keyboards/percent/canoe/rules.mk4
-rw-r--r--keyboards/percent/skog/config.h6
-rw-r--r--keyboards/percent/skog/keymaps/default/keymap.c8
-rw-r--r--keyboards/percent/skog/matrix.c112
-rw-r--r--keyboards/percent/skog/skog.c10
-rw-r--r--keyboards/percent/skog/skog.h1
10 files changed, 10 insertions, 269 deletions
diff --git a/keyboards/percent/canoe/canoe.c b/keyboards/percent/canoe/canoe.c
index e59b0dd7b..79c6330fe 100644
--- a/keyboards/percent/canoe/canoe.c
+++ b/keyboards/percent/canoe/canoe.c
@@ -17,16 +17,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
17 17
18#include "canoe.h" 18#include "canoe.h"
19 19
20void matrix_init_kb(void) { matrix_init_user(); }
21
22__attribute__ ((weak))
23void matrix_init_user(void) {}
24
25void matrix_scan_kb(void) { matrix_scan_user(); }
26
27__attribute__ ((weak))
28void matrix_scan_user(void) {}
29
30#ifdef BACKLIGHT_ENABLE 20#ifdef BACKLIGHT_ENABLE
31void backlight_set(uint8_t level) { 21void backlight_set(uint8_t level) {
32 if (level == 0) { 22 if (level == 0) {
diff --git a/keyboards/percent/canoe/canoe.h b/keyboards/percent/canoe/canoe.h
index 9e1e3e3d6..83d7c08bb 100644
--- a/keyboards/percent/canoe/canoe.h
+++ b/keyboards/percent/canoe/canoe.h
@@ -32,10 +32,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
32 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \ 32 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
33 { _x_, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \ 33 { _x_, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
34 { K30, _x_, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ 34 { K30, _x_, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
35 { K40, _x_, K42, K43, K44, _x_, _x_, _x_, K48, _x_, K4A, K4B, K4C, K4D, K4E }, \ 35 { K40, _x_, K42, K43, K44, _x_, _x_, _x_, K48, _x_, K4A, K4B, K4C, K4D, K4E } \
36 { _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_ }, \
37 { _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_ }, \
38 { _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_ } \
39} 36}
40 37
41#define LAYOUT_65_ansi_blocker( \ 38#define LAYOUT_65_ansi_blocker( \
@@ -49,10 +46,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
49 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \ 46 { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E }, \
50 { _x_, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \ 47 { _x_, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E }, \
51 { K30, _x_, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \ 48 { K30, _x_, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E }, \
52 { K40, _x_, K42, K43, K44, _x_, _x_, _x_, K48, _x_, _x_, K4B, K4C, K4D, K4E }, \ 49 { K40, _x_, K42, K43, K44, _x_, _x_, _x_, K48, _x_, _x_, K4B, K4C, K4D, K4E } \
53 { _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_ }, \
54 { _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_ }, \
55 { _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_, _x_ } \
56} 50}
57 51
58#define LAYOUT LAYOUT_65_ansi_blocker // added to not break existing checked in keymaps 52#define LAYOUT LAYOUT_65_ansi_blocker // added to not break existing checked in keymaps
diff --git a/keyboards/percent/canoe/config.h b/keyboards/percent/canoe/config.h
index bae6ed20f..950e0806e 100644
--- a/keyboards/percent/canoe/config.h
+++ b/keyboards/percent/canoe/config.h
@@ -28,11 +28,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
28 28
29#define RGBLED_NUM 2 29#define RGBLED_NUM 2
30 30
31#define MATRIX_ROWS 8 31#define MATRIX_ROWS 5
32#define MATRIX_COLS 15 32#define MATRIX_COLS 15
33 33
34#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4, B5, B6, B7 } 34#define MATRIX_ROW_PINS { B0, B1, B2, B3, B4 }
35#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, C1 } 35#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2, D7 }
36#define UNUSED_PINS 36#define UNUSED_PINS
37 37
38#define DIODE_DIRECTION COL2ROW 38#define DIODE_DIRECTION COL2ROW
diff --git a/keyboards/percent/canoe/matrix.c b/keyboards/percent/canoe/matrix.c
deleted file mode 100644
index 245813dfd..000000000
--- a/keyboards/percent/canoe/matrix.c
+++ /dev/null
@@ -1,112 +0,0 @@
1/*
2Copyright 2017 Luiz Ribeiro <luizribeiro@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#include <avr/io.h>
19#include <util/delay.h>
20
21#include "matrix.h"
22
23#ifndef DEBOUNCE
24# define DEBOUNCE 5
25#endif
26
27static uint8_t debouncing = DEBOUNCE;
28
29static matrix_row_t matrix[MATRIX_ROWS];
30static matrix_row_t matrix_debouncing[MATRIX_ROWS];
31
32void matrix_set_row_status(uint8_t row);
33uint8_t bit_reverse(uint8_t x);
34
35void matrix_init(void) {
36 // all outputs for rows high
37 DDRB = 0xFF;
38 PORTB = 0xFF;
39 // all inputs for columns
40 DDRA = 0x00;
41 DDRC &= ~(0x111111<<2);
42 DDRD &= ~(1<<PIND7);
43 // all columns are pulled-up
44 PORTA = 0xFF;
45 PORTC |= (0b111111<<2);
46 PORTD |= (1<<PIND7);
47
48 // initialize matrix state: all keys off
49 for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
50 matrix[row] = 0x00;
51 matrix_debouncing[row] = 0x00;
52 }
53
54 matrix_init_quantum();
55}
56
57uint8_t matrix_scan(void) {
58 for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
59 matrix_set_row_status(row);
60 _delay_us(5);
61
62 matrix_row_t cols = (
63 // cols 0..7, PORTA 0 -> 7
64 (~PINA) & 0xFF
65 ) | (
66 // cols 8..13, PORTC 7 -> 0
67 bit_reverse((~PINC) & 0xFF) << 8
68 ) | (
69 // col 14, PORTD 7
70 ((~PIND) & (1 << PIND7)) << 7
71 );
72
73 if (matrix_debouncing[row] != cols) {
74 matrix_debouncing[row] = cols;
75 debouncing = DEBOUNCE;
76 }
77 }
78
79 if (debouncing) {
80 if (--debouncing) {
81 _delay_ms(1);
82 } else {
83 for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
84 matrix[i] = matrix_debouncing[i];
85 }
86 }
87 }
88
89 matrix_scan_quantum();
90
91 return 1;
92}
93
94// declarations
95void matrix_set_row_status(uint8_t row) {
96 DDRB = (1 << row);
97 PORTB = ~(1 << row);
98}
99
100uint8_t bit_reverse(uint8_t x) {
101 x = ((x >> 1) & 0x55) | ((x << 1) & 0xaa);
102 x = ((x >> 2) & 0x33) | ((x << 2) & 0xcc);
103 x = ((x >> 4) & 0x0f) | ((x << 4) & 0xf0);
104 return x;
105}
106
107inline matrix_row_t matrix_get_row(uint8_t row) {
108 return matrix[row];
109}
110
111void matrix_print(void) {
112}
diff --git a/keyboards/percent/canoe/rules.mk b/keyboards/percent/canoe/rules.mk
index f2f6ee4e5..6340c8122 100644
--- a/keyboards/percent/canoe/rules.mk
+++ b/keyboards/percent/canoe/rules.mk
@@ -23,8 +23,4 @@ WS2812_DRIVER = i2c
23 23
24OPT_DEFS = -DDEBUG_LEVEL=0 24OPT_DEFS = -DDEBUG_LEVEL=0
25 25
26# custom matrix setup
27CUSTOM_MATRIX = yes
28SRC = matrix.c
29
30LAYOUTS = 65_ansi_blocker 65_iso_blocker 26LAYOUTS = 65_ansi_blocker 65_iso_blocker
diff --git a/keyboards/percent/skog/config.h b/keyboards/percent/skog/config.h
index 7c68d797d..7a0c703ec 100644
--- a/keyboards/percent/skog/config.h
+++ b/keyboards/percent/skog/config.h
@@ -26,9 +26,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
26#define PRODUCT Skog TKL 26#define PRODUCT Skog TKL
27 27
28/* matrix size */ 28/* matrix size */
29#define MATRIX_ROWS 8 29#define MATRIX_ROWS 7
30#define MATRIX_COLS 14 30#define MATRIX_COLS 14
31 31
32#define MATRIX_ROW_PINS { B0, B1, B2, B3, B5, B6, B7 }
33#define MATRIX_COL_PINS { A0, A1, A2, A3, A4, A5, A6, A7, C7, C6, C5, C4, C3, C2 }
34#define DIODE_DIRECTION COL2ROW
35
32#define RGBLED_NUM 2 36#define RGBLED_NUM 2
33#define RGBLIGHT_ANIMATIONS 37#define RGBLIGHT_ANIMATIONS
34 38
diff --git a/keyboards/percent/skog/keymaps/default/keymap.c b/keyboards/percent/skog/keymaps/default/keymap.c
index eefc24cb0..282ce39a5 100644
--- a/keyboards/percent/skog/keymaps/default/keymap.c
+++ b/keyboards/percent/skog/keymaps/default/keymap.c
@@ -27,11 +27,3 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
27 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT 27 KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
28 ) 28 )
29}; 29};
30
31void matrix_init_user(void) {
32
33}
34
35void matrix_scan_user(void) {
36
37}
diff --git a/keyboards/percent/skog/matrix.c b/keyboards/percent/skog/matrix.c
deleted file mode 100644
index 245813dfd..000000000
--- a/keyboards/percent/skog/matrix.c
+++ /dev/null
@@ -1,112 +0,0 @@
1/*
2Copyright 2017 Luiz Ribeiro <luizribeiro@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#include <avr/io.h>
19#include <util/delay.h>
20
21#include "matrix.h"
22
23#ifndef DEBOUNCE
24# define DEBOUNCE 5
25#endif
26
27static uint8_t debouncing = DEBOUNCE;
28
29static matrix_row_t matrix[MATRIX_ROWS];
30static matrix_row_t matrix_debouncing[MATRIX_ROWS];
31
32void matrix_set_row_status(uint8_t row);
33uint8_t bit_reverse(uint8_t x);
34
35void matrix_init(void) {
36 // all outputs for rows high
37 DDRB = 0xFF;
38 PORTB = 0xFF;
39 // all inputs for columns
40 DDRA = 0x00;
41 DDRC &= ~(0x111111<<2);
42 DDRD &= ~(1<<PIND7);
43 // all columns are pulled-up
44 PORTA = 0xFF;
45 PORTC |= (0b111111<<2);
46 PORTD |= (1<<PIND7);
47
48 // initialize matrix state: all keys off
49 for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
50 matrix[row] = 0x00;
51 matrix_debouncing[row] = 0x00;
52 }
53
54 matrix_init_quantum();
55}
56
57uint8_t matrix_scan(void) {
58 for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
59 matrix_set_row_status(row);
60 _delay_us(5);
61
62 matrix_row_t cols = (
63 // cols 0..7, PORTA 0 -> 7
64 (~PINA) & 0xFF
65 ) | (
66 // cols 8..13, PORTC 7 -> 0
67 bit_reverse((~PINC) & 0xFF) << 8
68 ) | (
69 // col 14, PORTD 7
70 ((~PIND) & (1 << PIND7)) << 7
71 );
72
73 if (matrix_debouncing[row] != cols) {
74 matrix_debouncing[row] = cols;
75 debouncing = DEBOUNCE;
76 }
77 }
78
79 if (debouncing) {
80 if (--debouncing) {
81 _delay_ms(1);
82 } else {
83 for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
84 matrix[i] = matrix_debouncing[i];
85 }
86 }
87 }
88
89 matrix_scan_quantum();
90
91 return 1;
92}
93
94// declarations
95void matrix_set_row_status(uint8_t row) {
96 DDRB = (1 << row);
97 PORTB = ~(1 << row);
98}
99
100uint8_t bit_reverse(uint8_t x) {
101 x = ((x >> 1) & 0x55) | ((x << 1) & 0xaa);
102 x = ((x >> 2) & 0x33) | ((x << 2) & 0xcc);
103 x = ((x >> 4) & 0x0f) | ((x << 4) & 0xf0);
104 return x;
105}
106
107inline matrix_row_t matrix_get_row(uint8_t row) {
108 return matrix[row];
109}
110
111void matrix_print(void) {
112}
diff --git a/keyboards/percent/skog/skog.c b/keyboards/percent/skog/skog.c
index 8678d483a..1c26c550e 100644
--- a/keyboards/percent/skog/skog.c
+++ b/keyboards/percent/skog/skog.c
@@ -22,16 +22,6 @@ ps2avrGB support code by Kenneth A. (bminiex/.[ch])
22#include "backlight.h" 22#include "backlight.h"
23#include "backlight_custom.h" 23#include "backlight_custom.h"
24 24
25void matrix_init_kb(void) { matrix_init_user(); }
26
27__attribute__ ((weak))
28void matrix_init_user(void) {}
29
30void matrix_scan_kb(void) { matrix_scan_user(); }
31
32__attribute__ ((weak))
33void matrix_scan_user(void) {}
34
35#ifdef BACKLIGHT_ENABLE 25#ifdef BACKLIGHT_ENABLE
36/// Overrides functions in `quantum.c` 26/// Overrides functions in `quantum.c`
37void backlight_init_ports(void) { 27void backlight_init_ports(void) {
diff --git a/keyboards/percent/skog/skog.h b/keyboards/percent/skog/skog.h
index 17be94621..c04a765b2 100644
--- a/keyboards/percent/skog/skog.h
+++ b/keyboards/percent/skog/skog.h
@@ -32,7 +32,6 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
32 { K01, K11, K21, K31, K41, K51, K61, KC_NO, K81, K91, KA1, KB1, KC1, KD1 }, \ 32 { K01, K11, K21, K31, K41, K51, K61, KC_NO, K81, K91, KA1, KB1, KC1, KD1 }, \
33 { K02, K12, K22, K32, K42, K52, K62, K72, K82, K92, KA2, KB2, KC2, KD2 }, \ 33 { K02, K12, K22, K32, K42, K52, K62, K72, K82, K92, KA2, KB2, KC2, KD2 }, \
34 { K03, K13, K23, K33, K43, K53, K63, K73, K83, K93, KA3, KB3, KC3, KD3 }, \ 34 { K03, K13, K23, K33, K43, K53, K63, K73, K83, K93, KA3, KB3, KC3, KD3 }, \
35 { KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO }, \
36 { K05, K15, K25, K35, K45, K55, K65, K75, K85, K95, KA5, KB5, KC5, KC_NO }, \ 35 { K05, K15, K25, K35, K45, K55, K65, K75, K85, K95, KA5, KB5, KC5, KC_NO }, \
37 { K06, K16, K26, K36, K46, K56, K66, K76, K86, K96, KA6, KB6, KC6, KD6 }, \ 36 { K06, K16, K26, K36, K46, K56, K66, K76, K86, K96, KA6, KB6, KC6, KD6 }, \
38 { K07, K17, K27, K37, KC_NO, K57, KC_NO, KC_NO, K87, K97, KA7, KB7, KC7, KD7 } \ 37 { K07, K17, K27, K37, KC_NO, K57, KC_NO, KC_NO, K87, K97, KA7, KB7, KC7, KD7 } \