core: Mouse buttons state integration #101

This allows users to use mousekey buttons with PS/2, ADB or
Serial pointing device.
This commit is contained in:
tmk 2021-11-13 08:03:45 +09:00
parent b981b8e266
commit 5f7d388dee
12 changed files with 86 additions and 0 deletions

View file

@ -22,6 +22,22 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "util.h"
#include "debug.h"
#ifdef MOUSEKEY_ENABLE
# include "mousekey.h"
#endif
#ifdef PS2_MOUSE_ENABLE
# include "ps2_mouse.h"
#endif
#ifdef SERIAL_MOUSE_ENABLE
# include "serial_mouse.h"
#endif
#ifdef ADB_MOUSE_ENABLE
# include "adb.h"
#endif
#ifdef IBMPC_MOUSE_ENABLE
uint8_t ibmpc_mouse_buttons(void);
#endif
#if defined(NKRO_ENABLE) || defined(NKRO_6KRO_ENABLE)
bool keyboard_nkro = true;
@ -70,7 +86,26 @@ void host_mouse_send(report_mouse_t *report)
report->boot_x = (report->x > 127) ? 127 : ((report->x < -127) ? -127 : report->x);
report->boot_y = (report->y > 127) ? 127 : ((report->y < -127) ? -127 : report->y);
#endif
/* Mouse buttons integration */
uint8_t b = report->buttons;
#ifdef MOUSEKEY_ENABLE
report->buttons |= mousekey_buttons();
#endif
#ifdef PS2_MOUSE_ENABLE
report->buttons |= ps2_mouse_buttons();
#endif
#ifdef SERIAL_MOUSE_ENABLE
report->buttons |= serial_mouse_buttons();
#endif
#ifdef ADB_MOUSE_ENABLE
report->buttons |= adb_mouse_buttons();
#endif
#ifdef IBMPC_MOUSE_ENABLE
report->buttons |= ibmpc_mouse_buttons();
#endif
(*driver->send_mouse)(report);
report->buttons = b;
}
void host_system_send(uint16_t report)

View file

@ -182,6 +182,11 @@ void mousekey_clear(void)
mousekey_accel = 0;
}
uint8_t mousekey_buttons(void)
{
return mouse_report.buttons;
}
static void mousekey_debug(void)
{
if (!debug_mouse) return;

View file

@ -69,6 +69,7 @@ void mousekey_on(uint8_t code);
void mousekey_off(uint8_t code);
void mousekey_clear(void);
void mousekey_send(void);
uint8_t mousekey_buttons(void);
#ifdef __cplusplus
}