qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

xmk_matrix.c (917B)


      1 // Copyright 2022 Manna Harbour (@manna-harbour)
      2 // https://github.com/manna-harbour/xmk
      3 
      4 // SPDX-License-Identifier: GPL-2.0-or-later
      5 
      6 #include "xmk_matrix.h"
      7 #include "matrix.h"
      8 #include "debug.h"
      9 
     10 bool xmk_changed = false;
     11 matrix_row_t xmk_rows[MATRIX_ROWS];
     12 
     13 bool matrix_scan_custom(matrix_row_t current_matrix[]) {
     14   if (xmk_changed) {
     15     for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
     16       current_matrix[row] = xmk_rows[row];
     17     }
     18     xmk_changed = false;
     19     return true;
     20   } else {
     21     return false;
     22   }
     23 }
     24 
     25 void xmk_matrix_key(bool press, uint8_t key) {
     26   dprintf("xmk_matrix_key: press: %s, key: %u\n", press?"true":"false", key);
     27   uint8_t row = key / MATRIX_COLS;
     28   if (row < MATRIX_ROWS) {
     29     uint8_t col = key % MATRIX_COLS;
     30     xmk_changed = true;
     31     if (press) {
     32       xmk_rows[row] |= (MATRIX_ROW_SHIFTER << col);
     33     } else {
     34       xmk_rows[row] &= ~(MATRIX_ROW_SHIFTER << col);
     35     }
     36   }
     37 }