Squashed 'tmk_core/' changes from b9e0ea0..caca2c0

caca2c0 Add mouse support to ADB
5b0835a Merge commit '1fe4406f37'
f2f7556 Remove unneeded tap delays #201
8124195 Fix URL of HID Usage Tables pdf
0bb4679 Fix typo of doc/keycode.txt
b24fa1a Fix handling of consumer usage #199
6ae1a3d Improve anti-ghosting behavior for fast typing
a4c9763 Fix dfu-programmer parameters
b62b3f2 Move ring_buffer.h file
6ec424f Fix debug print
502fb0c Fix ibm4704 protocol with using interrupt

git-subtree-dir: tmk_core
git-subtree-split: caca2c01553394d959550034c817520d575c7fa0
This commit is contained in:
tmk 2015-04-28 11:27:10 +09:00
parent 1fe4406f37
commit 4d116a04e9
13 changed files with 213 additions and 75 deletions

View file

@ -39,6 +39,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifdef SERIAL_MOUSE_ENABLE
#include "serial_mouse.h"
#endif
#ifdef ADB_MOUSE_ENABLE
#include "adb.h"
#endif
#ifdef MATRIX_HAS_GHOST
@ -69,6 +72,9 @@ void keyboard_init(void)
#ifdef SERIAL_MOUSE_ENABLE
serial_mouse_init();
#endif
#ifdef ADB_MOUSE_ENABLE
adb_mouse_init();
#endif
#ifdef BOOTMAGIC_ENABLE
@ -87,6 +93,9 @@ void keyboard_init(void)
void keyboard_task(void)
{
static matrix_row_t matrix_prev[MATRIX_ROWS];
#ifdef MATRIX_HAS_GHOST
static matrix_row_t matrix_ghost[MATRIX_ROWS];
#endif
static uint8_t led_status = 0;
matrix_row_t matrix_row = 0;
matrix_row_t matrix_change = 0;
@ -96,13 +105,21 @@ void keyboard_task(void)
matrix_row = matrix_get_row(r);
matrix_change = matrix_row ^ matrix_prev[r];
if (matrix_change) {
if (debug_matrix) matrix_print();
#ifdef MATRIX_HAS_GHOST
if (has_ghost_in_row(r)) {
matrix_prev[r] = matrix_row;
/* Keep track of whether ghosted status has changed for
* debugging. But don't update matrix_prev until un-ghosted, or
* the last key would be lost.
*/
if (debug_matrix && matrix_ghost[r] != matrix_row) {
matrix_print();
}
matrix_ghost[r] = matrix_row;
continue;
}
matrix_ghost[r] = matrix_row;
#endif
if (debug_matrix) matrix_print();
for (uint8_t c = 0; c < MATRIX_COLS; c++) {
if (matrix_change & ((matrix_row_t)1<<c)) {
action_exec((keyevent_t){
@ -136,6 +153,10 @@ MATRIX_LOOP_END:
serial_mouse_task();
#endif
#ifdef ADB_MOUSE_ENABLE
adb_mouse_task();
#endif
// update LED
if (led_status != host_keyboard_leds()) {
led_status = host_keyboard_leds();