adb_usb: Fix #518 Lag on typing
This commit is contained in:
parent
01b881e87e
commit
d00d7e8afa
1 changed files with 18 additions and 3 deletions
|
|
@ -30,13 +30,13 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#include "report.h"
|
#include "report.h"
|
||||||
#include "host.h"
|
#include "host.h"
|
||||||
#include "led.h"
|
#include "led.h"
|
||||||
|
#include "timer.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static bool has_media_keys = false;
|
static bool has_media_keys = false;
|
||||||
static bool is_iso_layout = false;
|
static bool is_iso_layout = false;
|
||||||
static report_mouse_t mouse_report = {};
|
|
||||||
|
|
||||||
// matrix state buffer(1:on, 0:off)
|
// matrix state buffer(1:on, 0:off)
|
||||||
static matrix_row_t matrix[MATRIX_ROWS];
|
static matrix_row_t matrix[MATRIX_ROWS];
|
||||||
|
|
@ -122,12 +122,21 @@ void matrix_init(void)
|
||||||
#endif
|
#endif
|
||||||
#define MAX(X, Y) ((X) > (Y) ? (X) : (Y))
|
#define MAX(X, Y) ((X) > (Y) ? (X) : (Y))
|
||||||
|
|
||||||
|
static report_mouse_t mouse_report = {};
|
||||||
|
|
||||||
void adb_mouse_task(void)
|
void adb_mouse_task(void)
|
||||||
{
|
{
|
||||||
uint16_t codes;
|
uint16_t codes;
|
||||||
int16_t x, y;
|
int16_t x, y;
|
||||||
static int8_t mouseacc;
|
static int8_t mouseacc;
|
||||||
_delay_ms(12); // delay for preventing overload of poor ADB keyboard controller
|
|
||||||
|
/* tick of last polling */
|
||||||
|
static uint16_t tick_ms;
|
||||||
|
|
||||||
|
// polling with 12ms interval
|
||||||
|
if (timer_elapsed(tick_ms) < 12) return;
|
||||||
|
tick_ms = timer_read();
|
||||||
|
|
||||||
codes = adb_host_mouse_recv();
|
codes = adb_host_mouse_recv();
|
||||||
// If nothing received reset mouse acceleration, and quit.
|
// If nothing received reset mouse acceleration, and quit.
|
||||||
if (!codes) {
|
if (!codes) {
|
||||||
|
|
@ -185,12 +194,18 @@ uint8_t matrix_scan(void)
|
||||||
uint16_t codes;
|
uint16_t codes;
|
||||||
uint8_t key0, key1;
|
uint8_t key0, key1;
|
||||||
|
|
||||||
|
/* tick of last polling */
|
||||||
|
static uint16_t tick_ms;
|
||||||
|
|
||||||
codes = extra_key;
|
codes = extra_key;
|
||||||
extra_key = 0xFFFF;
|
extra_key = 0xFFFF;
|
||||||
|
|
||||||
if ( codes == 0xFFFF )
|
if ( codes == 0xFFFF )
|
||||||
{
|
{
|
||||||
_delay_ms(12); // delay for preventing overload of poor ADB keyboard controller
|
// polling with 12ms interval
|
||||||
|
if (timer_elapsed(tick_ms) < 12) return 0;
|
||||||
|
tick_ms = timer_read();
|
||||||
|
|
||||||
codes = adb_host_kbd_recv(ADB_ADDR_KEYBOARD);
|
codes = adb_host_kbd_recv(ADB_ADDR_KEYBOARD);
|
||||||
|
|
||||||
// Adjustable keybaord media keys
|
// Adjustable keybaord media keys
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue