mirror of
https://github.com/Keychron/qmk_firmware.git
synced 2024-11-25 09:56:54 +06:00
Implemented weak ps2_mouse_init_user()
There are a lot of PS/2 commands, some are vendor/device specific, so we provide a weak ps2_mouse_init_user() to be implemented in each keyboard that need it.
This commit is contained in:
parent
f39e1b5dfe
commit
d059624bfb
|
@ -28,53 +28,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
/* ============================= MACROS ============================ */
|
/* ============================= MACROS ============================ */
|
||||||
|
|
||||||
#define PS2_MOUSE_SEND(command, message) \
|
static report_mouse_t mouse_report = {};./
|
||||||
do { \
|
|
||||||
uint8_t rcv = ps2_host_send(command); \
|
|
||||||
if (debug_mouse) { \
|
|
||||||
print((message)); \
|
|
||||||
xprintf(" command: %X, result: %X, error: %X \n", command, rcv, ps2_error); \
|
|
||||||
} \
|
|
||||||
} while(0)
|
|
||||||
|
|
||||||
#define PS2_MOUSE_SEND_SAFE(command, message) \
|
|
||||||
do { \
|
|
||||||
if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \
|
|
||||||
ps2_mouse_disable_data_reporting(); \
|
|
||||||
} \
|
|
||||||
PS2_MOUSE_SEND(command, message); \
|
|
||||||
if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \
|
|
||||||
ps2_mouse_enable_data_reporting(); \
|
|
||||||
} \
|
|
||||||
} while(0)
|
|
||||||
|
|
||||||
#define PS2_MOUSE_SET_SAFE(command, value, message) \
|
|
||||||
do { \
|
|
||||||
if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \
|
|
||||||
ps2_mouse_disable_data_reporting(); \
|
|
||||||
} \
|
|
||||||
PS2_MOUSE_SEND(command, message); \
|
|
||||||
PS2_MOUSE_SEND(value, "Sending value"); \
|
|
||||||
if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \
|
|
||||||
ps2_mouse_enable_data_reporting(); \
|
|
||||||
} \
|
|
||||||
} while(0)
|
|
||||||
|
|
||||||
#define PS2_MOUSE_RECEIVE(message) \
|
|
||||||
do { \
|
|
||||||
uint8_t rcv = ps2_host_recv_response(); \
|
|
||||||
if (debug_mouse) { \
|
|
||||||
print((message)); \
|
|
||||||
xprintf(" result: %X, error: %X \n", rcv, ps2_error); \
|
|
||||||
} \
|
|
||||||
} while(0)
|
|
||||||
|
|
||||||
static enum ps2_mouse_mode_e {
|
|
||||||
PS2_MOUSE_STREAM_MODE,
|
|
||||||
PS2_MOUSE_REMOTE_MODE,
|
|
||||||
} ps2_mouse_mode = PS2_MOUSE_STREAM_MODE;
|
|
||||||
|
|
||||||
static report_mouse_t mouse_report = {};
|
|
||||||
|
|
||||||
static inline void ps2_mouse_print_report(report_mouse_t *mouse_report);
|
static inline void ps2_mouse_print_report(report_mouse_t *mouse_report);
|
||||||
static inline void ps2_mouse_convert_report_to_hid(report_mouse_t *mouse_report);
|
static inline void ps2_mouse_convert_report_to_hid(report_mouse_t *mouse_report);
|
||||||
|
@ -108,6 +62,12 @@ void ps2_mouse_init(void) {
|
||||||
#ifdef PS2_MOUSE_USE_2_1_SCALING
|
#ifdef PS2_MOUSE_USE_2_1_SCALING
|
||||||
ps2_mouse_set_scaling_2_1();
|
ps2_mouse_set_scaling_2_1();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
ps2_mouse_init_user();
|
||||||
|
}
|
||||||
|
|
||||||
|
__attribute__((weak))
|
||||||
|
void ps2_mouse_init_user(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void ps2_mouse_task(void) {
|
void ps2_mouse_task(void) {
|
||||||
|
|
|
@ -19,6 +19,53 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#define PS2_MOUSE_H
|
#define PS2_MOUSE_H
|
||||||
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
#include "debug.h"
|
||||||
|
|
||||||
|
#define PS2_MOUSE_SEND(command, message) \
|
||||||
|
do { \
|
||||||
|
uint8_t rcv = ps2_host_send(command); \
|
||||||
|
if (debug_mouse) { \
|
||||||
|
print((message)); \
|
||||||
|
xprintf(" command: %X, result: %X, error: %X \n", command, rcv, ps2_error); \
|
||||||
|
} \
|
||||||
|
} while(0)
|
||||||
|
|
||||||
|
#define PS2_MOUSE_SEND_SAFE(command, message) \
|
||||||
|
do { \
|
||||||
|
if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \
|
||||||
|
ps2_mouse_disable_data_reporting(); \
|
||||||
|
} \
|
||||||
|
PS2_MOUSE_SEND(command, message); \
|
||||||
|
if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \
|
||||||
|
ps2_mouse_enable_data_reporting(); \
|
||||||
|
} \
|
||||||
|
} while(0)
|
||||||
|
|
||||||
|
#define PS2_MOUSE_SET_SAFE(command, value, message) \
|
||||||
|
do { \
|
||||||
|
if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \
|
||||||
|
ps2_mouse_disable_data_reporting(); \
|
||||||
|
} \
|
||||||
|
PS2_MOUSE_SEND(command, message); \
|
||||||
|
PS2_MOUSE_SEND(value, "Sending value"); \
|
||||||
|
if (PS2_MOUSE_STREAM_MODE == ps2_mouse_mode) { \
|
||||||
|
ps2_mouse_enable_data_reporting(); \
|
||||||
|
} \
|
||||||
|
} while(0)
|
||||||
|
|
||||||
|
#define PS2_MOUSE_RECEIVE(message) \
|
||||||
|
do { \
|
||||||
|
uint8_t rcv = ps2_host_recv_response(); \
|
||||||
|
if (debug_mouse) { \
|
||||||
|
print((message)); \
|
||||||
|
xprintf(" result: %X, error: %X \n", rcv, ps2_error); \
|
||||||
|
} \
|
||||||
|
} while(0)
|
||||||
|
|
||||||
|
static enum ps2_mouse_mode_e {
|
||||||
|
PS2_MOUSE_STREAM_MODE,
|
||||||
|
PS2_MOUSE_REMOTE_MODE,
|
||||||
|
} ps2_mouse_mode = PS2_MOUSE_STREAM_MODE;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Data format:
|
* Data format:
|
||||||
|
@ -107,6 +154,8 @@ typedef enum ps2_mouse_sample_rate_e {
|
||||||
|
|
||||||
void ps2_mouse_init(void);
|
void ps2_mouse_init(void);
|
||||||
|
|
||||||
|
void ps2_mouse_init_user(void);
|
||||||
|
|
||||||
void ps2_mouse_task(void);
|
void ps2_mouse_task(void);
|
||||||
|
|
||||||
void ps2_mouse_disable_data_reporting(void);
|
void ps2_mouse_disable_data_reporting(void);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user