aboutsummaryrefslogtreecommitdiff
path: root/mousew16.c
diff options
context:
space:
mode:
authorJavier <dev.git@javispedro.com>2022-03-13 18:40:01 +0100
committerJavier <dev.git@javispedro.com>2022-03-13 18:40:01 +0100
commit45aeeabc0613326b8597659b17f975a0ec4b1209 (patch)
treed278bbf6b8226b5d1e3779fd5377245bba0ce311 /mousew16.c
parent0ebcd2c1c9148e8647a5b2f89654949435403058 (diff)
downloadvbmouse-45aeeabc0613326b8597659b17f975a0ec4b1209.tar.gz
vbmouse-45aeeabc0613326b8597659b17f975a0ec4b1209.zip
split ps/2 initialization into more functions
Diffstat (limited to 'mousew16.c')
-rw-r--r--mousew16.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/mousew16.c b/mousew16.c
index 45c0266..4d54175 100644
--- a/mousew16.c
+++ b/mousew16.c
@@ -238,21 +238,32 @@ WORD FAR PASCAL Inquire(LPMOUSEINFO lpMouseInfo)
* @param lpEventProc Callback function to call when a mouse event happens. */
VOID FAR PASCAL Enable(LPFN_MOUSEEVENT lpEventProc)
{
+ // Store the windows-given callback
cli(); // Write to far pointer may not be atomic, and we could be interrupted mid-write
eventproc = lpEventProc;
sti();
if (!(mouseflags & MOUSEFLAGS_ENABLED)) {
+ // Configure the PS/2 bios and reset the mouse
int err;
- if ((err = ps2_init())) {
+ if ((err = ps2m_init(PS2_MOUSE_PLAIN_PACKET_SIZE))) {
vbox_logs("PS2 init failure\n");
return;
}
- if ((err = ps2_set_callback(ps2_mouse_callback))) {
+
+ // Configure mouse settings; just use the same defaults as Windows.
+ // Note that protected mode Windows just ignores all of these anyway.
+ ps2m_set_resolution(3); // 3 = 200 dpi, 8 counts per millimeter
+ ps2m_set_sample_rate(2); // 2 = 40 reports per second
+ ps2m_set_scaling_factor(1); // 1 = 1:1 scaling
+ // Don't check errors for these, we don't care much
+
+ if ((err = ps2m_set_callback(ps2_mouse_callback))) {
vbox_logs("PS2 set handler failure\n");
return;
}
- if ((err = ps2_enable(true))) {
+
+ if ((err = ps2m_enable(true))) {
vbox_logs("PS2 enable failure\n");
return;
}
@@ -306,8 +317,8 @@ VOID FAR PASCAL Disable(VOID)
}
#endif
- ps2_enable(false);
- ps2_set_callback(NULL);
+ ps2m_enable(false);
+ ps2m_set_callback(NULL);
vbox_logs("PS2 Disabled!\n");
mouseflags &= ~MOUSEFLAGS_ENABLED;