From 8a709c2750eab09ec0f83450410a13640931d48e Mon Sep 17 00:00:00 2001 From: tmk Date: Sun, 16 Dec 2012 02:32:07 +0900 Subject: Add initial fix for new keymap. --- common/keyboard.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'common/keyboard.h') diff --git a/common/keyboard.h b/common/keyboard.h index 2353805e1..37df6a4de 100644 --- a/common/keyboard.h +++ b/common/keyboard.h @@ -29,10 +29,10 @@ extern "C" { typedef struct { uint8_t row; uint8_t col; -} key_t; +} keypos_t; typedef struct { - key_t key; + keypos_t key; bool pressed; } keyevent_t; @@ -45,7 +45,6 @@ typedef struct { #define KEYEQ(keya, keyb) (keya.row == keyb.row && keya.col == keyb.col) - extern uint8_t current_layer; extern uint8_t default_layer; -- cgit v1.2.3-24-g4f1b From 411de9cc22e927313a5a768f3bf41f2f99bca126 Mon Sep 17 00:00:00 2001 From: tmk Date: Wed, 9 Jan 2013 22:33:33 +0900 Subject: Add new layer actions. --- common/keyboard.h | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) (limited to 'common/keyboard.h') diff --git a/common/keyboard.h b/common/keyboard.h index 37df6a4de..116653661 100644 --- a/common/keyboard.h +++ b/common/keyboard.h @@ -34,15 +34,9 @@ typedef struct { typedef struct { keypos_t key; bool pressed; + uint16_t time; } keyevent_t; -typedef struct { - keyevent_t event; - uint8_t code; - uint8_t mods; - uint16_t time; -} keyrecord_t; - #define KEYEQ(keya, keyb) (keya.row == keyb.row && keya.col == keyb.col) extern uint8_t current_layer; -- cgit v1.2.3-24-g4f1b From f609712da3b94ea36612a6f210bd6ce902b74631 Mon Sep 17 00:00:00 2001 From: tmk Date: Tue, 15 Jan 2013 00:06:52 +0900 Subject: Fix waiting_keys and periodical update for delaying layer. --- common/keyboard.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'common/keyboard.h') diff --git a/common/keyboard.h b/common/keyboard.h index 116653661..cf85b1233 100644 --- a/common/keyboard.h +++ b/common/keyboard.h @@ -37,7 +37,14 @@ typedef struct { uint16_t time; } keyevent_t; -#define KEYEQ(keya, keyb) (keya.row == keyb.row && keya.col == keyb.col) +#define KEYEQ(keya, keyb) (keya.row == keyb.row && keya.col == keyb.col) +#define IS_NOEVENT(event) (event.time == 0) +#define NOEVENT (keyevent_t) { \ + .key = (keypos_t){ .row = 255, .col = 255 }, \ + .pressed = false, \ + .time = 0, \ +} + extern uint8_t current_layer; extern uint8_t default_layer; -- cgit v1.2.3-24-g4f1b From 567b2ae5259634a5293afbc6a710a19d7c45dcda Mon Sep 17 00:00:00 2001 From: tmk Date: Thu, 17 Jan 2013 11:46:38 +0900 Subject: Fix mods with tap key but some problems still exists. - stuck tap key after tapping. seq[mods(d), key(d), mods(u), key(u)] - tap key doesn't work when fast type. [key(d), mods(d), key(u), mods(u)] --- common/keyboard.h | 1 + 1 file changed, 1 insertion(+) (limited to 'common/keyboard.h') diff --git a/common/keyboard.h b/common/keyboard.h index cf85b1233..907ee1f97 100644 --- a/common/keyboard.h +++ b/common/keyboard.h @@ -26,6 +26,7 @@ along with this program. If not, see . extern "C" { #endif +// TODO: union {raw = row:col} typedef struct { uint8_t row; uint8_t col; -- cgit v1.2.3-24-g4f1b From ee7ce433357a1c1bbcaba54525fc5b5b5404aa82 Mon Sep 17 00:00:00 2001 From: tmk Date: Thu, 17 Jan 2013 15:00:41 +0900 Subject: Refactor struct keyevent_t. --- common/keyboard.h | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'common/keyboard.h') diff --git a/common/keyboard.h b/common/keyboard.h index 907ee1f97..4518cdddc 100644 --- a/common/keyboard.h +++ b/common/keyboard.h @@ -26,19 +26,23 @@ along with this program. If not, see . extern "C" { #endif -// TODO: union {raw = row:col} typedef struct { - uint8_t row; uint8_t col; + uint8_t row; } keypos_t; +typedef union { + uint16_t raw; + keypos_t pos; +} key_t; + typedef struct { - keypos_t key; + key_t key; bool pressed; uint16_t time; } keyevent_t; -#define KEYEQ(keya, keyb) (keya.row == keyb.row && keya.col == keyb.col) +#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 }, \ -- cgit v1.2.3-24-g4f1b From f71a5217b762225eec294b02f9403f29a25ceb6a Mon Sep 17 00:00:00 2001 From: tmk Date: Sun, 20 Jan 2013 15:03:07 +0900 Subject: Fix mods with tapping. --- common/keyboard.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'common/keyboard.h') diff --git a/common/keyboard.h b/common/keyboard.h index 4518cdddc..4a3ee85a8 100644 --- a/common/keyboard.h +++ b/common/keyboard.h @@ -37,7 +37,7 @@ typedef union { } key_t; typedef struct { - key_t key; + key_t key; bool pressed; uint16_t time; } keyevent_t; -- cgit v1.2.3-24-g4f1b From 28b5f69ce5c8b35d40725b490e7a2d4bfe922ad4 Mon Sep 17 00:00:00 2001 From: tmk Date: Wed, 23 Jan 2013 23:53:51 +0900 Subject: Add prototype of Action Function. --- common/keyboard.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'common/keyboard.h') diff --git a/common/keyboard.h b/common/keyboard.h index 4a3ee85a8..6d06c95bb 100644 --- a/common/keyboard.h +++ b/common/keyboard.h @@ -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) { \ +#define NOEVENT (keyevent_t){ \ .key = (keypos_t){ .row = 255, .col = 255 }, \ .pressed = false, \ - .time = 0, \ + .time = 0 \ } -- cgit v1.2.3-24-g4f1b From d8dddf9f25181e29e3fb82250833a00a11921452 Mon Sep 17 00:00:00 2001 From: tmk Date: Thu, 24 Jan 2013 01:02:11 +0900 Subject: Minor fixes in keyboard.c. --- common/keyboard.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'common/keyboard.h') diff --git a/common/keyboard.h b/common/keyboard.h index 6d06c95bb..84f03c9a6 100644 --- a/common/keyboard.h +++ b/common/keyboard.h @@ -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 \ } -- cgit v1.2.3-24-g4f1b From ef873791bdbff5cc6971705544e120c69ca94212 Mon Sep 17 00:00:00 2001 From: tmk Date: Sun, 27 Jan 2013 02:42:48 +0900 Subject: New tapping logic. --- common/keyboard.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'common/keyboard.h') diff --git a/common/keyboard.h b/common/keyboard.h index 84f03c9a6..dd1ebb2bd 100644 --- a/common/keyboard.h +++ b/common/keyboard.h @@ -42,13 +42,18 @@ typedef struct { uint16_t time; } keyevent_t; -#define KEYEQ(keya, keyb) (keya.raw == keyb.raw) -#define IS_NOEVENT(event) (event.time == 0) +#define KEYEQ(keya, keyb) ((keya).raw == (keyb).raw) +#define IS_NOEVENT(event) ((event).key.pos.row == 255 && (event).key.pos.col == 255) #define NOEVENT (keyevent_t){ \ .key.pos = (keypos_t){ .row = 255, .col = 255 }, \ .pressed = false, \ .time = 0 \ } +#define TICK (keyevent_t){ \ + .key.pos = (keypos_t){ .row = 255, .col = 255 }, \ + .pressed = false, \ + .time = timer_read() \ +} extern uint8_t current_layer; -- cgit v1.2.3-24-g4f1b From 1e3e41a2c9ed8b2f7d44be0aed5d96ed557fa13d Mon Sep 17 00:00:00 2001 From: tmk Date: Mon, 28 Jan 2013 14:06:42 +0900 Subject: Clean code. --- common/keyboard.h | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'common/keyboard.h') diff --git a/common/keyboard.h b/common/keyboard.h index dd1ebb2bd..32c1bf464 100644 --- a/common/keyboard.h +++ b/common/keyboard.h @@ -1,5 +1,5 @@ /* -Copyright 2011 Jun Wako +Copyright 2011,2012,2013 Jun Wako 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 @@ -26,6 +26,7 @@ along with this program. If not, see . extern "C" { #endif +/* key matrix position */ typedef struct { uint8_t col; uint8_t row; @@ -36,29 +37,33 @@ typedef union { keypos_t pos; } key_t; +/* key event */ typedef struct { key_t key; bool pressed; uint16_t time; } keyevent_t; +/* equivalent test of key_t */ #define KEYEQ(keya, keyb) ((keya).raw == (keyb).raw) -#define IS_NOEVENT(event) ((event).key.pos.row == 255 && (event).key.pos.col == 255) + +/* (time == 0) means no event and assumes matrix has no 255 line. */ +#define IS_NOEVENT(event) ((event).time == 0 || ((event).key.pos.row == 255 && (event).key.pos.col == 255)) + #define NOEVENT (keyevent_t){ \ .key.pos = (keypos_t){ .row = 255, .col = 255 }, \ .pressed = false, \ .time = 0 \ } + +/* tick event */ #define TICK (keyevent_t){ \ .key.pos = (keypos_t){ .row = 255, .col = 255 }, \ .pressed = false, \ - .time = timer_read() \ + .time = (timer_read() | 1) \ } -extern uint8_t current_layer; -extern uint8_t default_layer; - void keyboard_init(void); void keyboard_task(void); void keyboard_set_leds(uint8_t leds); -- cgit v1.2.3-24-g4f1b From 1d7962ba8a20323dc13cc913381608e117afaeb4 Mon Sep 17 00:00:00 2001 From: tmk Date: Fri, 1 Feb 2013 14:48:11 +0900 Subject: Add user defined function to action. --- common/keyboard.h | 1 + 1 file changed, 1 insertion(+) (limited to 'common/keyboard.h') diff --git a/common/keyboard.h b/common/keyboard.h index 32c1bf464..e1cab3119 100644 --- a/common/keyboard.h +++ b/common/keyboard.h @@ -32,6 +32,7 @@ typedef struct { uint8_t row; } keypos_t; +// TODO: need raw? keypos_t -> key_t? typedef union { uint16_t raw; keypos_t pos; -- cgit v1.2.3-24-g4f1b