Updated matrix.c for some PS2AVRGB boards and templates for new_project script (#2992) * Add M6-A keymap * Update XD60 keymap * Update XD60 keymap readme * Update JJ40 and Let's Split keymaps * Add readme for M6-A * Fix typo, update JJ40 README * Update jj40 readme * Cleanup jj40 keymap * Revert Let's Split QWERTY layer to default before #2010 * Update numpad layers * Fix: Let's Split keymap getting stuck mods due to having keycodes assigned on the Raise layer * Keep ASCII art consistent with keymap * Staryu: initial port * Add personal keymap * Added and updated READMEs * Fix: default keymap for staryu * Rudimentary backlight support. * Enabled mousekeys for default keymap * use QMK_KEYBOARD_H and LAYOUT * Update readme.md for NIU mini: flash using avrdude * Fix missing linebreaks for Staryu README * Update readme.md * Update PS2AVRGB boards with new matrix.c * Update canoe matrix.c; untested * Fix canoe.c for building (needs matrix_scan_user and matrix_init_user) * Add personal Iris keymap * Update keymap * Update keymap * Update keymap, disable backlighting and underglow * Move PrintScreen button * Add README
12 files changed, 349 insertions(+), 80 deletions(-) M keyboards/canoe/canoe.c M keyboards/canoe/matrix.c A keyboards/iris/keymaps/krusli/README.md A keyboards/iris/keymaps/krusli/config.h A keyboards/iris/keymaps/krusli/keymap.c A keyboards/iris/keymaps/krusli/rules.mk M keyboards/jj40/matrix.c M keyboards/mechmini/v1/matrix.c M keyboards/mechmini/v1/v1.c M keyboards/ps2avrGB/matrix.c M keyboards/ps2avrGB/ps2avrGB.c M quantum/template/ps2avrgb/matrix.c
M keyboards/canoe/canoe.c => keyboards/canoe/canoe.c +40 -9
@@ 42,24 42,55 @@ void backlight_init_ports(void) { #endif // for keyboard subdirectory level init functions // @Override void matrix_init_kb(void) { // call user level keymaps, if any matrix_init_user(); } #ifdef RGBLIGHT_ENABLE extern rgblight_config_t rgblight_config; // custom RGB driver void rgblight_set(void) { if (!rgblight_config.enable) { for (uint8_t i = 0; i < RGBLED_NUM; i++) { led[i].r = 0; led[i].g = 0; led[i].b = 0; } if (!rgblight_config.enable) { for (uint8_t i=0; i<RGBLED_NUM; i++) { led[i].r = 0; led[i].g = 0; led[i].b = 0; } } i2c_init(); i2c_send(0xb0, (uint8_t*)led, 3 * RGBLED_NUM); } bool rgb_init = false; void matrix_scan_kb(void) { // if LEDs were previously on before poweroff, turn them back on if (rgb_init == false && rgblight_config.enable) { i2c_init(); i2c_send(0xb0, (uint8_t*)led, 3 * RGBLED_NUM); rgb_init = true; } rgblight_task(); #else void matrix_scan_kb(void) { #endif matrix_scan_user(); /* Nothing else for now. */ } __attribute__ ((weak)) __attribute__((weak)) // overridable void matrix_init_user(void) { } __attribute__((weak)) // overridable void matrix_scan_user(void) { rgblight_task(); } #endif
M keyboards/canoe/matrix.c => keyboards/canoe/matrix.c +19 -13
@@ 21,7 21,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "matrix.h" #ifndef DEBOUNCE #define DEBOUNCE 5 # define DEBOUNCE 5 #endif @@ static uint8_t debouncing = DEBOUNCE; 29,6 29,9 @@ static uint8_t debouncing = DEBOUNCE; static matrix_row_t matrix[MATRIX_ROWS]; static matrix_row_t matrix_debouncing[MATRIX_ROWS]; void matrix_set_row_status(uint8_t row); uint8_t bit_reverse(uint8_t x); void matrix_init(void) { // all outputs for rows high @@ DDRB = 0xFF; 47,18 50,8 @@ void matrix_init(void) { matrix[row] = 0x00; matrix_debouncing[row] = 0x00; } } void matrix_set_row_status(uint8_t row) { DDRB = (1 << row); PORTB = ~(1 << row); } uint8_t bit_reverse(uint8_t x) { x = ((x >> 1) & 0x55) | ((x << 1) & 0xaa); x = ((x >> 2) & 0x33) | ((x << 2) & 0xcc); x = ((x >> 4) & 0x0f) | ((x << 4) & 0xf0); return x; matrix_init_quantum(); } @@ uint8_t matrix_scan(void) { 93,11 86,24 @@ uint8_t matrix_scan(void) { } } matrix_scan_user(); matrix_scan_quantum(); return 1; } // declarations void matrix_set_row_status(uint8_t row) { DDRB = (1 << row); PORTB = ~(1 << row); } uint8_t bit_reverse(uint8_t x) { x = ((x >> 1) & 0x55) | ((x << 1) & 0xaa); x = ((x >> 2) & 0x33) | ((x << 2) & 0xcc); x = ((x >> 4) & 0x0f) | ((x << 4) & 0xf0); return x; } inline matrix_row_t matrix_get_row(uint8_t row) { return matrix[row]; }
A keyboards/iris/keymaps/krusli/README.md => keyboards/iris/keymaps/krusli/README.md +2 -0
A keyboards/iris/keymaps/krusli/config.h => keyboards/iris/keymaps/krusli/config.h +43 -0
@@ 0,0 1,43 @@ /* Copyright 2017 Danny Nguyen <danny@keeb.io> 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/>. */ #ifndef CONFIG_USER_H #define CONFIG_USER_H #include "config_common.h" // #define PREVENT_STUCK_MODIFIERS /* Use I2C or Serial, not both */ #define USE_SERIAL // #define USE_I2C /* Select hand configuration */ #define MASTER_LEFT // #define MASTER_RIGHT // #define EE_HANDS #undef RGBLED_NUM #define RGBLIGHT_ANIMATIONS #define RGBLED_NUM 12 #define RGBLIGHT_HUE_STEP 8 #define RGBLIGHT_SAT_STEP 8 #define RGBLIGHT_VAL_STEP 8 #endif
A keyboards/iris/keymaps/krusli/keymap.c => keyboards/iris/keymaps/krusli/keymap.c +98 -0
@@ 0,0 1,98 @@ #include "iris.h" #include "action_layer.h" #include "eeconfig.h" extern keymap_config_t keymap_config; #define _QWERTY 0 #define _LOWER 1 #define _RAISE 2 #define _ADJUST 16 enum custom_keycodes { QWERTY = SAFE_RANGE, LOWER, RAISE, ADJUST, }; #define _______ KC_TRNS const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_QWERTY] = LAYOUT( KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_HOME, KC_END, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LALT ), [_LOWER] = LAYOUT( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, KC_F12, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, _______, _______, _______ ), [_RAISE] = LAYOUT( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, 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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, _______, _______, KC_F12, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, _______, _______, _______ ), [_ADJUST] = LAYOUT( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUD, RGB_SAD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, BL_STEP, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), }; void persistent_default_layer_set(uint16_t default_layer) { eeconfig_update_default_layer(default_layer); default_layer_set(default_layer); } bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case QWERTY: if (record->event.pressed) { persistent_default_layer_set(1UL<<_QWERTY); } return false; break; case LOWER: if (record->event.pressed) { layer_on(_LOWER); update_tri_layer(_LOWER, _RAISE, _ADJUST); } else { layer_off(_LOWER); update_tri_layer(_LOWER, _RAISE, _ADJUST); } return false; break; case RAISE: if (record->event.pressed) { layer_on(_RAISE); update_tri_layer(_LOWER, _RAISE, _ADJUST); } else { layer_off(_RAISE); update_tri_layer(_LOWER, _RAISE, _ADJUST); } return false; break; case ADJUST: if (record->event.pressed) { layer_on(_ADJUST); } else { layer_off(_ADJUST); } return false; break; } return true; }
A keyboards/iris/keymaps/krusli/rules.mk => keyboards/iris/keymaps/krusli/rules.mk +6 -0
@@ 0,0 1,6 @@ RGBLIGHT_ENABLE = no BACKLIGHT_ENABLE = no ifndef QUANTUM_DIR include ../../../../Makefile endif
M keyboards/jj40/matrix.c => keyboards/jj40/matrix.c +2 -2
@@ 51,7 51,7 @@ void matrix_init(void) { matrix_debouncing[row] = 0x00; } matrix_init_quantum(); // missing from original port by Luiz matrix_init_quantum(); } @@ uint8_t matrix_scan(void) { 86,7 86,7 @@ uint8_t matrix_scan(void) { } } matrix_scan_quantum(); // also missing in original PS2AVRGB implementation matrix_scan_quantum(); return 1; }
M keyboards/mechmini/v1/matrix.c => keyboards/mechmini/v1/matrix.c +18 -12
@@ 29,6 29,9 @@ static uint8_t debouncing = DEBOUNCE; static matrix_row_t matrix[MATRIX_ROWS]; static matrix_row_t matrix_debouncing[MATRIX_ROWS]; void matrix_set_row_status(uint8_t row); uint8_t bit_reverse(uint8_t x); void matrix_init(void) { // all outputs for rows high @@ DDRB = 0xFF; 47,18 50,8 @@ void matrix_init(void) { matrix[row] = 0x00; matrix_debouncing[row] = 0x00; } } void matrix_set_row_status(uint8_t row) { DDRB = (1 << row); PORTB = ~(1 << row); } uint8_t bit_reverse(uint8_t x) { x = ((x >> 1) & 0x55) | ((x << 1) & 0xaa); x = ((x >> 2) & 0x33) | ((x << 2) & 0xcc); x = ((x >> 4) & 0x0f) | ((x << 4) & 0xf0); return x; matrix_init_quantum(); } @@ uint8_t matrix_scan(void) { 93,11 86,24 @@ uint8_t matrix_scan(void) { } } matrix_scan_user(); matrix_scan_quantum(); return 1; } // declarations void matrix_set_row_status(uint8_t row) { DDRB = (1 << row); PORTB = ~(1 << row); } uint8_t bit_reverse(uint8_t x) { x = ((x >> 1) & 0x55) | ((x << 1) & 0xaa); x = ((x >> 2) & 0x33) | ((x << 2) & 0xcc); x = ((x >> 4) & 0x0f) | ((x << 4) & 0xf0); return x; } inline matrix_row_t matrix_get_row(uint8_t row) { return matrix[row]; }
M keyboards/mechmini/v1/v1.c => keyboards/mechmini/v1/v1.c +42 -10
@@ 22,23 22,55 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "quantum.h" #include "rgblight.h" // custom RGB driver // for keyboard subdirectory level init functions // @Override void matrix_init_kb(void) { // call user level keymaps, if any matrix_init_user(); } #ifdef RGBLIGHT_ENABLE extern rgblight_config_t rgblight_config; // custom RGB driver void rgblight_set(void) { if (!rgblight_config.enable) { for (uint8_t i = 0; i < RGBLED_NUM; i++) { led[i].r = 0; led[i].g = 0; led[i].b = 0; } if (!rgblight_config.enable) { for (uint8_t i=0; i<RGBLED_NUM; i++) { led[i].r = 0; led[i].g = 0; led[i].b = 0; } } i2c_init(); i2c_send(0xb0, (uint8_t*)led, 3 * RGBLED_NUM); } bool rgb_init = false; void matrix_scan_kb(void) { // if LEDs were previously on before poweroff, turn them back on if (rgb_init == false && rgblight_config.enable) { i2c_init(); i2c_send(0xb0, (uint8_t*)led, 3 * RGBLED_NUM); rgb_init = true; } rgblight_task(); #else void matrix_scan_kb(void) { #endif matrix_scan_user(); /* Nothing else for now. */ } __attribute__ ((weak)) __attribute__((weak)) // overridable void matrix_init_user(void) { } __attribute__((weak)) // overridable void matrix_scan_user(void) { rgblight_task(); /* add other tasks to be done on each matrix scan */ }
M keyboards/ps2avrGB/matrix.c => keyboards/ps2avrGB/matrix.c +19 -13
@@ 21,7 21,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "matrix.h" #ifndef DEBOUNCE #define DEBOUNCE 5 # define DEBOUNCE 5 #endif @@ static uint8_t debouncing = DEBOUNCE; 29,6 29,9 @@ static uint8_t debouncing = DEBOUNCE; static matrix_row_t matrix[MATRIX_ROWS]; static matrix_row_t matrix_debouncing[MATRIX_ROWS]; void matrix_set_row_status(uint8_t row); uint8_t bit_reverse(uint8_t x); void matrix_init(void) { // all outputs for rows high @@ DDRB = 0xFF; 47,18 50,8 @@ void matrix_init(void) { matrix[row] = 0x00; matrix_debouncing[row] = 0x00; } } void matrix_set_row_status(uint8_t row) { DDRB = (1 << row); PORTB = ~(1 << row); } uint8_t bit_reverse(uint8_t x) { x = ((x >> 1) & 0x55) | ((x << 1) & 0xaa); x = ((x >> 2) & 0x33) | ((x << 2) & 0xcc); x = ((x >> 4) & 0x0f) | ((x << 4) & 0xf0); return x; matrix_init_quantum(); } @@ uint8_t matrix_scan(void) { 93,11 86,24 @@ uint8_t matrix_scan(void) { } } matrix_scan_user(); matrix_scan_quantum(); return 1; } // declarations void matrix_set_row_status(uint8_t row) { DDRB = (1 << row); PORTB = ~(1 << row); } uint8_t bit_reverse(uint8_t x) { x = ((x >> 1) & 0x55) | ((x << 1) & 0xaa); x = ((x >> 2) & 0x33) | ((x << 2) & 0xcc); x = ((x >> 4) & 0x0f) | ((x << 4) & 0xf0); return x; } inline matrix_row_t matrix_get_row(uint8_t row) { return matrix[row]; }
M keyboards/ps2avrGB/ps2avrGB.c => keyboards/ps2avrGB/ps2avrGB.c +41 -8
@@ 24,22 24,55 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "i2c.h" #include "quantum.h" // for keyboard subdirectory level init functions // @Override void matrix_init_kb(void) { // call user level keymaps, if any matrix_init_user(); } #ifdef RGBLIGHT_ENABLE extern rgblight_config_t rgblight_config; // custom RGB driver void rgblight_set(void) { if (!rgblight_config.enable) { for (uint8_t i = 0; i < RGBLED_NUM; i++) { led[i].r = 0; led[i].g = 0; led[i].b = 0; } if (!rgblight_config.enable) { for (uint8_t i=0; i<RGBLED_NUM; i++) { led[i].r = 0; led[i].g = 0; led[i].b = 0; } } i2c_init(); i2c_send(0xb0, (uint8_t*)led, 3 * RGBLED_NUM); } bool rgb_init = false; void matrix_scan_kb(void) { // if LEDs were previously on before poweroff, turn them back on if (rgb_init == false && rgblight_config.enable) { i2c_init(); i2c_send(0xb0, (uint8_t*)led, 3 * RGBLED_NUM); rgb_init = true; } rgblight_task(); #else void matrix_scan_kb(void) { #endif matrix_scan_user(); /* Nothing else for now. */ } __attribute__ ((weak)) __attribute__((weak)) // overridable void matrix_init_user(void) { } __attribute__((weak)) // overridable void matrix_scan_user(void) { rgblight_task(); }
M quantum/template/ps2avrgb/matrix.c => quantum/template/ps2avrgb/matrix.c +19 -13
@@ 21,7 21,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. #include "matrix.h" #ifndef DEBOUNCE #define DEBOUNCE 5 # define DEBOUNCE 5 #endif @@ static uint8_t debouncing = DEBOUNCE; 29,6 29,9 @@ static uint8_t debouncing = DEBOUNCE; static matrix_row_t matrix[MATRIX_ROWS]; static matrix_row_t matrix_debouncing[MATRIX_ROWS]; void matrix_set_row_status(uint8_t row); uint8_t bit_reverse(uint8_t x); void matrix_init(void) { // all outputs for rows high @@ DDRB = 0xFF; 47,18 50,8 @@ void matrix_init(void) { matrix[row] = 0x00; matrix_debouncing[row] = 0x00; } } void matrix_set_row_status(uint8_t row) { DDRB = (1 << row); PORTB = ~(1 << row); } uint8_t bit_reverse(uint8_t x) { x = ((x >> 1) & 0x55) | ((x << 1) & 0xaa); x = ((x >> 2) & 0x33) | ((x << 2) & 0xcc); x = ((x >> 4) & 0x0f) | ((x << 4) & 0xf0); return x; matrix_init_quantum(); } @@ uint8_t matrix_scan(void) { 93,11 86,24 @@ uint8_t matrix_scan(void) { } } matrix_scan_user(); matrix_scan_quantum(); return 1; } // declarations void matrix_set_row_status(uint8_t row) { DDRB = (1 << row); PORTB = ~(1 << row); } uint8_t bit_reverse(uint8_t x) { x = ((x >> 1) & 0x55) | ((x << 1) & 0xaa); x = ((x >> 2) & 0x33) | ((x << 2) & 0xcc); x = ((x >> 4) & 0x0f) | ((x << 4) & 0xf0); return x; } inline matrix_row_t matrix_get_row(uint8_t row) { return matrix[row]; }