~ruther/qmk_firmware

d8dddf9f25181e29e3fb82250833a00a11921452 — tmk 12 years ago 28b5f69
Minor fixes in keyboard.c.
2 files changed, 10 insertions(+), 14 deletions(-)

M common/keyboard.c
M common/keyboard.h
M common/keyboard.c => common/keyboard.c +6 -10
@@ 26,6 26,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
#include "command.h"
#include "util.h"
#include "sendchar.h"
#include "bootloader.h"
#ifdef MOUSEKEY_ENABLE
#include "mousekey.h"
#endif


@@ 68,21 69,21 @@ void keyboard_task(void)
    matrix_row_t matrix_change = 0;

    matrix_scan();
    for (int r = 0; r < MATRIX_ROWS; r++) {
    for (uint8_t r = 0; r < MATRIX_ROWS; r++) {
        matrix_row = matrix_get_row(r);
        matrix_change = matrix_row ^ matrix_prev[r];
        if (matrix_change) {
            if (debug_matrix) matrix_print();

            for (int c = 0; c < MATRIX_COLS; c++) {
                if (matrix_change & (1<<c)) {
            for (uint8_t c = 0; c < MATRIX_COLS; c++) {
                if (matrix_change & ((matrix_row_t)1<<c)) {
                    action_exec((keyevent_t){
                        .key.pos  = (keypos_t){ .row = r, .col = c },
                        .pressed = (matrix_row & (1<<c)),
                        .time = (timer_read() | 1) /* NOTE: 0 means no event */
                    });
                    // record a processed key
                    matrix_prev[r] ^= (1<<c);
                    matrix_prev[r] ^= ((matrix_row_t)1<<c);
                    // process a key per task call
                    goto MATRIX_LOOP_END;
                }


@@ 90,12 91,7 @@ void keyboard_task(void)
        }
    }
    // call with not real event to update state of aciton
    // TODO: use NOEVENT macro
    action_exec((keyevent_t) {
        .key.pos = (keypos_t){ .row = 255, .col = 255 }, // assume this key doesn't exist
        .pressed = false,
        .time = 0,
    });
    action_exec(NOEVENT);

MATRIX_LOOP_END:


M common/keyboard.h => common/keyboard.h +4 -4
@@ 44,10 44,10 @@ typedef struct {

#define KEYEQ(keya, keyb)       (keya.raw == keyb.raw)
#define IS_NOEVENT(event)       (event.time == 0)
#define NOEVENT                 (keyevent_t){       \
    .key = (keypos_t){ .row = 255, .col = 255 },    \
    .pressed = false,                               \
    .time = 0                                       \
#define NOEVENT                 (keyevent_t){           \
    .key.pos = (keypos_t){ .row = 255, .col = 255 },    \
    .pressed = false,                                   \
    .time = 0                                           \
}