123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- #pragma once
- #include <common/glib.h>
- #define PS2_MOUSE_INTR_VECTOR 0x2c
- #define KEYBOARD_COMMAND_SEND_TO_PS2_MOUSE 0xd4
- #define PS2_MOUSE_GET_ID 0xf2
- #define PS2_MOUSE_SET_SAMPLING_RATE 0xf3
- #define PS2_MOUSE_ENABLE 0xf4
- #define PS2_MOUSE_DISABLE 0xf5
- #define PS2_MOUSE_SET_DEFAULT_SAMPLING_RATE 0xf6
- #define PS2_MOUSE_RESEND_LAST_PACKET 0xfe
- #define PS2_MOUSE_RESET 0xff
- #define KEYBOARD_COMMAND_ENABLE_PS2_MOUSE_PORT 0xa8
- #define ps2_mouse_buffer_size 360
- #define PORT_KEYBOARD_DATA 0x60
- #define PORT_KEYBOARD_STATUS 0x64
- #define PORT_KEYBOARD_CONTROL 0x64
- #define KEYBOARD_COMMAND_WRITE 0x60
- #define KEYBOARD_COMMAND_READ 0x20
- #define KEYBOARD_PARAM_INIT 0x47
- #define KEYBOARD_FLAG_OUTBUF_FULL 0x01
- #define KEYBOARD_FLAG_INBUF_FULL 0x02
- #define wait_keyboard_write() while (io_in8(PORT_KEYBOARD_STATUS) & KEYBOARD_FLAG_INBUF_FULL)
- #define wait_keyboard_read() while (io_in8(PORT_KEYBOARD_STATUS) & KEYBOARD_FLAG_OUTBUF_FULL)
- #define SUCCESS 0
- #define EINVALID_ARGUMENT -1
- #define EFAIL -2
- struct ps2_mouse_packet_3bytes
- {
- unsigned char byte0;
-
- char movement_x;
- char movement_y;
- };
- struct ps2_mouse_packet_4bytes
- {
- unsigned char byte0;
-
- char movement_x;
- char movement_y;
- char byte3;
-
-
-
- };
- struct ps2_mouse_input_buffer
- {
- unsigned char *ptr_head;
- unsigned char *ptr_tail;
- int count;
- unsigned char buffer[ps2_mouse_buffer_size];
- };
- void ps2_mouse_init();
- void ps2_mouse_exit();
- int ps2_mouse_set_sample_rate(unsigned int hz);
- int ps2_mouse_get_packet(void *packet);
- void analyze_mousecode();
|