diff options
Diffstat (limited to 'ps2_vusb/mousekey.c')
-rw-r--r-- | ps2_vusb/mousekey.c | 102 |
1 files changed, 0 insertions, 102 deletions
diff --git a/ps2_vusb/mousekey.c b/ps2_vusb/mousekey.c deleted file mode 100644 index a311eecc2f..0000000000 --- a/ps2_vusb/mousekey.c +++ /dev/null @@ -1,102 +0,0 @@ -#include <stdint.h> -#include <util/delay.h> -#include "usb_keycodes.h" -#include "host.h" -#include "timer.h" -#include "print.h" -#include "mousekey.h" - - -static report_mouse_t report; -static report_mouse_t report_prev; - -static uint8_t mousekey_repeat = 0; - - -/* - * TODO: fix acceleration algorithm - * see wikipedia http://en.wikipedia.org/wiki/Mouse_keys - */ -#ifndef MOUSEKEY_DELAY_TIME -# define MOUSEKEY_DELAY_TIME 255 -#endif - - -static inline uint8_t move_unit(void) -{ - uint8_t unit = (10 + (mousekey_repeat)); - return unit > 127 ? 127 : unit; -} - -void mousekey_decode(uint8_t code) -{ - if (code == KB_MS_UP) report.y -= move_unit(); - else if (code == KB_MS_DOWN) report.y += move_unit(); - else if (code == KB_MS_LEFT) report.x -= move_unit(); - else if (code == KB_MS_RIGHT) report.x += move_unit(); - else if (code == KB_MS_BTN1) report.buttons |= MOUSE_BTN1; - else if (code == KB_MS_BTN2) report.buttons |= MOUSE_BTN2; - else if (code == KB_MS_BTN3) report.buttons |= MOUSE_BTN3; -/* - else if (code == KB_MS_BTN4) report.buttons |= MOUSE_BTN4; - else if (code == KB_MS_BTN5) report.buttons |= MOUSE_BTN5; - else if (code == KB_MS_WH_UP) report.v += 1; - else if (code == KB_MS_WH_DOWN) report.v -= 1; - else if (code == KB_MS_WH_LEFT) report.h -= 1; - else if (code == KB_MS_WH_RIGHT)report.h += 1; -*/ -} - -bool mousekey_changed(void) -{ - return (report.buttons != report_prev.buttons || - report.x != report_prev.x || - report.y != report_prev.y || - report.x || report.y); - //return (report.buttons != report_prev.buttons || report.x || report.y); -} - -void mousekey_send(void) -{ - static uint16_t last_timer = 0; - - if (!mousekey_changed()) { - mousekey_repeat = 0; - return; - } - - // send immediately when buttun state is changed - if (report.buttons == report_prev.buttons) { - // TODO: delay parameter setting - if ((timer_elapsed(last_timer) < (mousekey_repeat == 1 ? 20 : 5))) { - return; - } - } - - if (report.x && report.y) { - report.x *= 0.7; - report.y *= 0.7; - } - - /* - print("mousekey_repeat: "); phex(mousekey_repeat); print("\n"); - print("timer: "); phex16(timer_read()); print("\n"); - print("last_timer: "); phex16(last_timer); print("\n"); - print("mousekey: "); phex(report.buttons); print(" "); phex(report.x); print(" "); phex(report.y); print("\n"); - */ - - host_mouse_send(&report); - report_prev.buttons = report.buttons; - report_prev.x = report.x; - report_prev.y = report.y; - if (mousekey_repeat != 0xFF) mousekey_repeat++; - last_timer = timer_read(); - mousekey_clear_report(); -} - -void mousekey_clear_report(void) -{ - report.buttons = 0; - report.x = 0; - report.y = 0; -} |