Ultibo API
C/C++ API for Ultibo Core
Loading...
Searching...
No Matches
ps2.h File Reference

Go to the source code of this file.

Data Structures

struct  _PS2_KEYBOARD_SCANCODE
struct  _PS2_MOUSE_PACKET

Macros

#define PS2_KEYBOARD_COMMAND_SET_LEDS   0xED
 Set LEDS (Data: See below).
#define PS2_KEYBOARD_COMMAND_ECHO   0xEE
 Echo (Data: None).
#define PS2_KEYBOARD_COMMAND_SCANCODE   0xF0
 Get/set current scan code (Data: See below).
#define PS2_KEYBOARD_COMMAND_IDENTIFY   0xF2
 Identify (Data: None) (See: http://wiki.osdev.org/%228042%22_PS/2_Controller#Detecting_PS.2F2_Device_Types).
#define PS2_KEYBOARD_COMMAND_SET_RATE_DELAY   0xF3
 Set typematic rate and delay (Data: See below).
#define PS2_KEYBOARD_COMMAND_ENABLE_SCAN   0xF4
 Enable scanning (keyboard will send scan codes) (Data: None).
#define PS2_KEYBOARD_COMMAND_DISABLE_SCAN   0xF5
 Disable scanning (keyboard won't send scan codes) (Data: None) Note: May also restore default parameters.
#define PS2_KEYBOARD_COMMAND_SET_DEFAULTS   0xF6
 Set default parameters (Data: None).
#define PS2_KEYBOARD_COMMAND_SET_ALL_TYPEMATIC_ONLY   0xF7
 Set all keys to typematic/autorepeat only (Scancode set 3 only) (Data: None).
#define PS2_KEYBOARD_COMMAND_SET_ALL_MAKE_RELEASE   0xF8
 Set all keys to make/release (Scancode set 3 only) (Data: None).
#define PS2_KEYBOARD_COMMAND_SET_ALL_MAKE_ONLY   0xF9
 Set all keys to make only (Scancode set 3 only) (Data: None).
#define PS2_KEYBOARD_COMMAND_SET_ALL_MAKE_TYPEMATIC   0xFA
 Set all keys to typematic/autorepeat/make/release (Scancode set 3 only) (Data: None).
#define PS2_KEYBOARD_COMMAND_SET_TYPEMATIC_ONLY   0xFB
 Set specific key to typematic/autorepeat only (Scancode set 3 only) (Data: Scancode for key).
#define PS2_KEYBOARD_COMMAND_SET_MAKE_RELEASE   0xFC
 Set specific key to make/release (Scancode set 3 only) (Data: Scancode for key).
#define PS2_KEYBOARD_COMMAND_SET_MAKE_ONLY   0xFD
 Set specific key to make only (Scancode set 3 only) (Data: Scancode for key).
#define PS2_KEYBOARD_COMMAND_RESEND   0xFE
 Resend last byte (Data: None).
#define PS2_KEYBOARD_COMMAND_RESET   0xFF
 Reset and start self-test (Data: None).
#define PS2_KEYBOARD_SET_LEDS_SCROLLLOCK   (1 << 0)
 ScrollLock.
#define PS2_KEYBOARD_SET_LEDS_NUMLOCK   (1 << 1)
 NumberLock.
#define PS2_KEYBOARD_SET_LEDS_CAPSLOCK   (1 << 2)
 CapsLock.
#define PS2_KEYBOARD_SCANCODE_GET   0
 Get current scan code set.
#define PS2_KEYBOARD_SCANCODE_SET1   1
 Set scan code set 1.
#define PS2_KEYBOARD_SCANCODE_SET2   2
 Set scan code set 2.
#define PS2_KEYBOARD_SCANCODE_SET3   3
 Set scan code set 3.
#define PS2_KEYBOARD_SET_REPEAT_RATE_MASK   0x0F
 Repeat rate (00000b = 30 Hz, ..., 11111b = 2 Hz).
#define PS2_KEYBOARD_SET_DELAY_MASK   0x70
 Delay before keys repeat (00b = 250 ms, 01b = 500 ms, 10b = 750 ms, 11b = 1000 ms).
#define PS2_KEYBOARD_SET_REPEAT_RATE_30_0   0x00
 30.0cps
#define PS2_KEYBOARD_SET_REPEAT_RATE_26_7   0x01
 26.7cps
#define PS2_KEYBOARD_SET_REPEAT_RATE_24_0   0x02
 24.0cps
#define PS2_KEYBOARD_SET_REPEAT_RATE_21_8   0x03
 21.8cps
#define PS2_KEYBOARD_SET_REPEAT_RATE_20_7   0x04
 20.7cps
#define PS2_KEYBOARD_SET_REPEAT_RATE_18_5   0x05
 18.5cps
#define PS2_KEYBOARD_SET_REPEAT_RATE_17_1   0x06
 17.1cps
#define PS2_KEYBOARD_SET_REPEAT_RATE_16_0   0x07
 16.0cps
#define PS2_KEYBOARD_SET_REPEAT_RATE_15_0   0x08
 15.0cps
#define PS2_KEYBOARD_SET_REPEAT_RATE_13_3   0x09
 13.3cps
#define PS2_KEYBOARD_SET_REPEAT_RATE_12_0   0x0A
 12.0cps
#define PS2_KEYBOARD_SET_REPEAT_RATE_10_9   0x0B
 10.9cps
#define PS2_KEYBOARD_SET_REPEAT_RATE_10_0   0x0C
 10.0cps
#define PS2_KEYBOARD_SET_REPEAT_RATE_9_2   0x0D
 9.2cps
#define PS2_KEYBOARD_SET_REPEAT_RATE_8_6   0x0E
 8.6cps
#define PS2_KEYBOARD_SET_REPEAT_RATE_8_0   0x0F
 8.0cps
#define PS2_KEYBOARD_SET_REPEAT_RATE_7_5   0x10
 7.5cps
#define PS2_KEYBOARD_SET_REPEAT_RATE_6_7   0x11
 6.7cps
#define PS2_KEYBOARD_SET_REPEAT_RATE_6_0   0x12
 6.0cps
#define PS2_KEYBOARD_SET_REPEAT_RATE_5_5   0x13
 5.5cps
#define PS2_KEYBOARD_SET_REPEAT_RATE_5_0   0x14
 5.0cps
#define PS2_KEYBOARD_SET_REPEAT_RATE_4_6   0x15
 4.6cps
#define PS2_KEYBOARD_SET_REPEAT_RATE_4_3   0x16
 4.3cps
#define PS2_KEYBOARD_SET_REPEAT_RATE_4_0   0x17
 4.0cps
#define PS2_KEYBOARD_SET_REPEAT_RATE_3_7   0x18
 3.7cps
#define PS2_KEYBOARD_SET_REPEAT_RATE_3_3   0x19
 3.3cps
#define PS2_KEYBOARD_SET_REPEAT_RATE_3_0   0x1A
 3.0cps
#define PS2_KEYBOARD_SET_REPEAT_RATE_2_7   0x1B
 2.7cps
#define PS2_KEYBOARD_SET_REPEAT_RATE_2_5   0x1C
 2.5cps
#define PS2_KEYBOARD_SET_REPEAT_RATE_2_3   0x1D
 2.3cps
#define PS2_KEYBOARD_SET_REPEAT_RATE_2_1   0x1E
 2.1cps
#define PS2_KEYBOARD_SET_REPEAT_RATE_2_0   0x1F
 2.0cps
#define PS2_KEYBOARD_SET_DELAY_250   0x00
 250ms
#define PS2_KEYBOARD_SET_DELAY_500   0x10
 500ms
#define PS2_KEYBOARD_SET_DELAY_750   0x20
 750ms
#define PS2_KEYBOARD_SET_DELAY_1000   0x30
 1000ms
#define PS2_MOUSE_COMMAND_RESET   0xFF
 Reset (Data: None).
#define PS2_MOUSE_COMMAND_RESEND   0xFE
 Resend (Data: None).
#define PS2_MOUSE_COMMAND_SET_DEFAULTS   0xF6
 Set Defaults (Data: None).
#define PS2_MOUSE_COMMAND_DISABLE_REPORT   0xF5
 Disable Data Reporting (Data: None).
#define PS2_MOUSE_COMMAND_ENABLE_REPORT   0xF4
 Enable Data Reporting (Data: None).
#define PS2_MOUSE_COMMAND_SET_SAMPLE_RATE   0xF3
 Set Sample Rate (Data: Sample rate, ranges from 10-200).
#define PS2_MOUSE_COMMAND_GET_DEVICE_ID   0xF2
 Get Device ID (Data: None) (See: http://wiki.osdev.org/%228042%22_PS/2_Controller#Detecting_PS.2F2_Device_Types).
#define PS2_MOUSE_COMMAND_SET_REMOTE_MODE   0xF0
 Set Remote Mode (Data: None).
#define PS2_MOUSE_COMMAND_SET_WRAP_MODE   0xEE
 Set Wrap Mode (Data: None).
#define PS2_MOUSE_COMMAND_RESET_WRAP_MODE   0xEC
 Reset Wrap Mode (Data: None).
#define PS2_MOUSE_COMMAND_READ_DATA   0xEB
 Read Data (Data: None).
#define PS2_MOUSE_COMMAND_SET_STREAM_MODE   0xEA
 Set Stream Mode (Data: None).
#define PS2_MOUSE_COMMAND_STATUS_REQUEST   0xE9
 Status Request (Data: None).
#define PS2_MOUSE_COMMAND_SET_RESOLUTION   0xE8
 Set Resolution (Data: See below).
#define PS2_MOUSE_COMMAND_SAMPLE_RATE_10   10
 10 samples/sec
#define PS2_MOUSE_COMMAND_SAMPLE_RATE_20   20
 20 samples/sec
#define PS2_MOUSE_COMMAND_SAMPLE_RATE_40   40
 40 samples/sec
#define PS2_MOUSE_COMMAND_SAMPLE_RATE_60   60
 60 samples/sec
#define PS2_MOUSE_COMMAND_SAMPLE_RATE_80   80
 80 samples/sec
#define PS2_MOUSE_COMMAND_SAMPLE_RATE_100   100
 100 samples/sec
#define PS2_MOUSE_COMMAND_SAMPLE_RATE_200   200
 200 samples/sec
#define PS2_MOUSE_COMMAND_RESOLUTION_1   0x00
 1 count/mm
#define PS2_MOUSE_COMMAND_RESOLUTION_2   0x01
 2 count/mm
#define PS2_MOUSE_COMMAND_RESOLUTION_4   0x02
 4 count/mm
#define PS2_MOUSE_COMMAND_RESOLUTION_5   0x03
 8 count/mm
#define PS2_RESPONSE_NONE   0x00
 Key detection error or internal buffer overrun.
#define PS2_RESPONSE_SELF_TEST_PASS   0xAA
 Self test passed (sent after "0xFF (reset)" command or keyboard power up).
#define PS2_RESPONSE_ECHO   0xEE
 Response to "0xEE (echo)" command.
#define PS2_RESPONSE_ACK   0xFA
 Command acknowledged (ACK).
#define PS2_RESPONSE_SELFTEST_FAIL1   0xFC
 Self test failed (sent after "0xFF (reset)" command or keyboard power up).
#define PS2_RESPONSE_SELFTEST_FAIL2   0xFD
 Self test failed (sent after "0xFF (reset)" command or keyboard power up).
#define PS2_RESPONSE_RESEND   0xFE
 Resend (keyboard wants controller to repeat last command it sent).
#define PS2_RESPONSE_ERROR   0xFF
 Key detection error or internal buffer overrun.
#define PS2_MOUSE_BITS_YO   (1 << 7)
 Y-Axis Overflow.
#define PS2_MOUSE_BITS_XO   (1 << 6)
 X-Axis Overflow.
#define PS2_MOUSE_BITS_YS   (1 << 5)
 Y-Axis Sign Bit (9-Bit Y-Axis Relative Offset).
#define PS2_MOUSE_BITS_XS   (1 << 4)
 X-Axis Sign Bit (9-Bit X-Axis Relative Offset).
#define PS2_MOUSE_BITS_AO   (1 << 3)
 Always One.
#define PS2_MOUSE_BITS_BM   (1 << 2)
 Button Middle (Normally Off = 0).
#define PS2_MOUSE_BITS_BR   (1 << 1)
 Button Right (Normally Off = 0).
#define PS2_MOUSE_BITS_BL   (1 << 0)
 Button Left (Normally Off = 0).
#define PS2_SCANCODE_MAKE   0
 Key Down (Press).
#define PS2_SCANCODE_BREAK   1
 Key Up (Release).
#define PS2_SCANCODE_PC104_COUNT   104
#define PS2_SCANCODE_ACPI_COUNT   3
#define PS2_SCANCODE_MULTIMEDIA_COUNT   18
#define PS2_SCANCODE_COUNT   PS2_SCANCODE_PC104_COUNT + PS2_SCANCODE_ACPI_COUNT + PS2_SCANCODE_MULTIMEDIA_COUNT

Typedefs

typedef uint8_t PS2_SCANCODE_DATA[PS2_SCANCODE_COUNT *2][10]
typedef struct _PS2_KEYBOARD_SCANCODE PS2_KEYBOARD_SCANCODE
typedef struct _PS2_MOUSE_PACKET PS2_MOUSE_PACKET

Functions

uint32_t STDCALL keyboard_leds_to_ps2_leds (uint32_t leds, uint8_t *ps2leds)
 Map the Keyboard LED values to the PS/2 Keyboard LED values.
uint32_t STDCALL keyboard_rate_and_delay_to_ps2_typematic (uint32_t rate, uint32_t delay, uint8_t *ps2typematic)
 Translate the Keyboard Repeat Rate and Delay values to the PS/2 Keyboard Typematic value.
uint32_t STDCALL ps2_keyboard_scancode_match (PS2_KEYBOARD_SCANCODE *keyboardscancode, int32_t *index)
 Check a set of scancode bytes against the specified PS/2 Scancode set for a match.
uint32_t STDCALL ps2_keyboard_scancode_to_scan_code (PS2_KEYBOARD_SCANCODE *keyboardscancode, int32_t index, uint16_t *scancode)
 Return the Keyboard Scan Code value for a PS/2 scancode value.
uint32_t STDCALL ps2_keyboard_scancode_to_modifiers (PS2_KEYBOARD_SCANCODE *keyboardscancode, int32_t index, uint32_t *modifiers)
 Return the Keyboard Modifiers flags for a PS/2 scancode value.
uint32_t STDCALL mouse_sample_rate_to_ps2_sample_rate (uint32_t rate, uint8_t *ps2rate)
 Translate a Mouse Sample Rate value to the PS/2 Mouse Sample Rate value.
uint32_t STDCALL ps2_mouse_packet_to_mouse_data (PS2_MOUSE_PACKET *mousepacket, MOUSE_DATA *mousedata, uint32_t flags, uint32_t rotation)
 Translate a PS/2 Mouse Packet into a Mouse Data structure.

Macro Definition Documentation

◆ PS2_KEYBOARD_COMMAND_SET_LEDS

#define PS2_KEYBOARD_COMMAND_SET_LEDS   0xED

Set LEDS (Data: See below).

PS2 specific constants Keyboard command constants (See: http://wiki.osdev.org/PS/2_Keyboard)

◆ PS2_KEYBOARD_COMMAND_ECHO

#define PS2_KEYBOARD_COMMAND_ECHO   0xEE

Echo (Data: None).

◆ PS2_KEYBOARD_COMMAND_SCANCODE

#define PS2_KEYBOARD_COMMAND_SCANCODE   0xF0

Get/set current scan code (Data: See below).

◆ PS2_KEYBOARD_COMMAND_IDENTIFY

#define PS2_KEYBOARD_COMMAND_IDENTIFY   0xF2

◆ PS2_KEYBOARD_COMMAND_SET_RATE_DELAY

#define PS2_KEYBOARD_COMMAND_SET_RATE_DELAY   0xF3

Set typematic rate and delay (Data: See below).

◆ PS2_KEYBOARD_COMMAND_ENABLE_SCAN

#define PS2_KEYBOARD_COMMAND_ENABLE_SCAN   0xF4

Enable scanning (keyboard will send scan codes) (Data: None).

◆ PS2_KEYBOARD_COMMAND_DISABLE_SCAN

#define PS2_KEYBOARD_COMMAND_DISABLE_SCAN   0xF5

Disable scanning (keyboard won't send scan codes) (Data: None) Note: May also restore default parameters.

◆ PS2_KEYBOARD_COMMAND_SET_DEFAULTS

#define PS2_KEYBOARD_COMMAND_SET_DEFAULTS   0xF6

Set default parameters (Data: None).

◆ PS2_KEYBOARD_COMMAND_SET_ALL_TYPEMATIC_ONLY

#define PS2_KEYBOARD_COMMAND_SET_ALL_TYPEMATIC_ONLY   0xF7

Set all keys to typematic/autorepeat only (Scancode set 3 only) (Data: None).

◆ PS2_KEYBOARD_COMMAND_SET_ALL_MAKE_RELEASE

#define PS2_KEYBOARD_COMMAND_SET_ALL_MAKE_RELEASE   0xF8

Set all keys to make/release (Scancode set 3 only) (Data: None).

◆ PS2_KEYBOARD_COMMAND_SET_ALL_MAKE_ONLY

#define PS2_KEYBOARD_COMMAND_SET_ALL_MAKE_ONLY   0xF9

Set all keys to make only (Scancode set 3 only) (Data: None).

◆ PS2_KEYBOARD_COMMAND_SET_ALL_MAKE_TYPEMATIC

#define PS2_KEYBOARD_COMMAND_SET_ALL_MAKE_TYPEMATIC   0xFA

Set all keys to typematic/autorepeat/make/release (Scancode set 3 only) (Data: None).

◆ PS2_KEYBOARD_COMMAND_SET_TYPEMATIC_ONLY

#define PS2_KEYBOARD_COMMAND_SET_TYPEMATIC_ONLY   0xFB

Set specific key to typematic/autorepeat only (Scancode set 3 only) (Data: Scancode for key).

◆ PS2_KEYBOARD_COMMAND_SET_MAKE_RELEASE

#define PS2_KEYBOARD_COMMAND_SET_MAKE_RELEASE   0xFC

Set specific key to make/release (Scancode set 3 only) (Data: Scancode for key).

◆ PS2_KEYBOARD_COMMAND_SET_MAKE_ONLY

#define PS2_KEYBOARD_COMMAND_SET_MAKE_ONLY   0xFD

Set specific key to make only (Scancode set 3 only) (Data: Scancode for key).

◆ PS2_KEYBOARD_COMMAND_RESEND

#define PS2_KEYBOARD_COMMAND_RESEND   0xFE

Resend last byte (Data: None).

◆ PS2_KEYBOARD_COMMAND_RESET

#define PS2_KEYBOARD_COMMAND_RESET   0xFF

Reset and start self-test (Data: None).

◆ PS2_KEYBOARD_SET_LEDS_SCROLLLOCK

#define PS2_KEYBOARD_SET_LEDS_SCROLLLOCK   (1 << 0)

ScrollLock.

◆ PS2_KEYBOARD_SET_LEDS_NUMLOCK

#define PS2_KEYBOARD_SET_LEDS_NUMLOCK   (1 << 1)

NumberLock.

◆ PS2_KEYBOARD_SET_LEDS_CAPSLOCK

#define PS2_KEYBOARD_SET_LEDS_CAPSLOCK   (1 << 2)

CapsLock.

◆ PS2_KEYBOARD_SCANCODE_GET

#define PS2_KEYBOARD_SCANCODE_GET   0

Get current scan code set.

◆ PS2_KEYBOARD_SCANCODE_SET1

#define PS2_KEYBOARD_SCANCODE_SET1   1

Set scan code set 1.

◆ PS2_KEYBOARD_SCANCODE_SET2

#define PS2_KEYBOARD_SCANCODE_SET2   2

Set scan code set 2.

◆ PS2_KEYBOARD_SCANCODE_SET3

#define PS2_KEYBOARD_SCANCODE_SET3   3

Set scan code set 3.

◆ PS2_KEYBOARD_SET_REPEAT_RATE_MASK

#define PS2_KEYBOARD_SET_REPEAT_RATE_MASK   0x0F

Repeat rate (00000b = 30 Hz, ..., 11111b = 2 Hz).

◆ PS2_KEYBOARD_SET_DELAY_MASK

#define PS2_KEYBOARD_SET_DELAY_MASK   0x70

Delay before keys repeat (00b = 250 ms, 01b = 500 ms, 10b = 750 ms, 11b = 1000 ms).

◆ PS2_KEYBOARD_SET_REPEAT_RATE_30_0

#define PS2_KEYBOARD_SET_REPEAT_RATE_30_0   0x00

30.0cps

Bit 7 Must be zero

◆ PS2_KEYBOARD_SET_REPEAT_RATE_26_7

#define PS2_KEYBOARD_SET_REPEAT_RATE_26_7   0x01

26.7cps

◆ PS2_KEYBOARD_SET_REPEAT_RATE_24_0

#define PS2_KEYBOARD_SET_REPEAT_RATE_24_0   0x02

24.0cps

◆ PS2_KEYBOARD_SET_REPEAT_RATE_21_8

#define PS2_KEYBOARD_SET_REPEAT_RATE_21_8   0x03

21.8cps

◆ PS2_KEYBOARD_SET_REPEAT_RATE_20_7

#define PS2_KEYBOARD_SET_REPEAT_RATE_20_7   0x04

20.7cps

◆ PS2_KEYBOARD_SET_REPEAT_RATE_18_5

#define PS2_KEYBOARD_SET_REPEAT_RATE_18_5   0x05

18.5cps

◆ PS2_KEYBOARD_SET_REPEAT_RATE_17_1

#define PS2_KEYBOARD_SET_REPEAT_RATE_17_1   0x06

17.1cps

◆ PS2_KEYBOARD_SET_REPEAT_RATE_16_0

#define PS2_KEYBOARD_SET_REPEAT_RATE_16_0   0x07

16.0cps

◆ PS2_KEYBOARD_SET_REPEAT_RATE_15_0

#define PS2_KEYBOARD_SET_REPEAT_RATE_15_0   0x08

15.0cps

◆ PS2_KEYBOARD_SET_REPEAT_RATE_13_3

#define PS2_KEYBOARD_SET_REPEAT_RATE_13_3   0x09

13.3cps

◆ PS2_KEYBOARD_SET_REPEAT_RATE_12_0

#define PS2_KEYBOARD_SET_REPEAT_RATE_12_0   0x0A

12.0cps

◆ PS2_KEYBOARD_SET_REPEAT_RATE_10_9

#define PS2_KEYBOARD_SET_REPEAT_RATE_10_9   0x0B

10.9cps

◆ PS2_KEYBOARD_SET_REPEAT_RATE_10_0

#define PS2_KEYBOARD_SET_REPEAT_RATE_10_0   0x0C

10.0cps

◆ PS2_KEYBOARD_SET_REPEAT_RATE_9_2

#define PS2_KEYBOARD_SET_REPEAT_RATE_9_2   0x0D

9.2cps

◆ PS2_KEYBOARD_SET_REPEAT_RATE_8_6

#define PS2_KEYBOARD_SET_REPEAT_RATE_8_6   0x0E

8.6cps

◆ PS2_KEYBOARD_SET_REPEAT_RATE_8_0

#define PS2_KEYBOARD_SET_REPEAT_RATE_8_0   0x0F

8.0cps

◆ PS2_KEYBOARD_SET_REPEAT_RATE_7_5

#define PS2_KEYBOARD_SET_REPEAT_RATE_7_5   0x10

7.5cps

◆ PS2_KEYBOARD_SET_REPEAT_RATE_6_7

#define PS2_KEYBOARD_SET_REPEAT_RATE_6_7   0x11

6.7cps

◆ PS2_KEYBOARD_SET_REPEAT_RATE_6_0

#define PS2_KEYBOARD_SET_REPEAT_RATE_6_0   0x12

6.0cps

◆ PS2_KEYBOARD_SET_REPEAT_RATE_5_5

#define PS2_KEYBOARD_SET_REPEAT_RATE_5_5   0x13

5.5cps

◆ PS2_KEYBOARD_SET_REPEAT_RATE_5_0

#define PS2_KEYBOARD_SET_REPEAT_RATE_5_0   0x14

5.0cps

◆ PS2_KEYBOARD_SET_REPEAT_RATE_4_6

#define PS2_KEYBOARD_SET_REPEAT_RATE_4_6   0x15

4.6cps

◆ PS2_KEYBOARD_SET_REPEAT_RATE_4_3

#define PS2_KEYBOARD_SET_REPEAT_RATE_4_3   0x16

4.3cps

◆ PS2_KEYBOARD_SET_REPEAT_RATE_4_0

#define PS2_KEYBOARD_SET_REPEAT_RATE_4_0   0x17

4.0cps

◆ PS2_KEYBOARD_SET_REPEAT_RATE_3_7

#define PS2_KEYBOARD_SET_REPEAT_RATE_3_7   0x18

3.7cps

◆ PS2_KEYBOARD_SET_REPEAT_RATE_3_3

#define PS2_KEYBOARD_SET_REPEAT_RATE_3_3   0x19

3.3cps

◆ PS2_KEYBOARD_SET_REPEAT_RATE_3_0

#define PS2_KEYBOARD_SET_REPEAT_RATE_3_0   0x1A

3.0cps

◆ PS2_KEYBOARD_SET_REPEAT_RATE_2_7

#define PS2_KEYBOARD_SET_REPEAT_RATE_2_7   0x1B

2.7cps

◆ PS2_KEYBOARD_SET_REPEAT_RATE_2_5

#define PS2_KEYBOARD_SET_REPEAT_RATE_2_5   0x1C

2.5cps

◆ PS2_KEYBOARD_SET_REPEAT_RATE_2_3

#define PS2_KEYBOARD_SET_REPEAT_RATE_2_3   0x1D

2.3cps

◆ PS2_KEYBOARD_SET_REPEAT_RATE_2_1

#define PS2_KEYBOARD_SET_REPEAT_RATE_2_1   0x1E

2.1cps

◆ PS2_KEYBOARD_SET_REPEAT_RATE_2_0

#define PS2_KEYBOARD_SET_REPEAT_RATE_2_0   0x1F

2.0cps

◆ PS2_KEYBOARD_SET_DELAY_250

#define PS2_KEYBOARD_SET_DELAY_250   0x00

250ms

◆ PS2_KEYBOARD_SET_DELAY_500

#define PS2_KEYBOARD_SET_DELAY_500   0x10

500ms

◆ PS2_KEYBOARD_SET_DELAY_750

#define PS2_KEYBOARD_SET_DELAY_750   0x20

750ms

◆ PS2_KEYBOARD_SET_DELAY_1000

#define PS2_KEYBOARD_SET_DELAY_1000   0x30

1000ms

◆ PS2_MOUSE_COMMAND_RESET

#define PS2_MOUSE_COMMAND_RESET   0xFF

Reset (Data: None).

Mouse command constants (See: http://wiki.osdev.org/PS/2_Mouse)

◆ PS2_MOUSE_COMMAND_RESEND

#define PS2_MOUSE_COMMAND_RESEND   0xFE

Resend (Data: None).

◆ PS2_MOUSE_COMMAND_SET_DEFAULTS

#define PS2_MOUSE_COMMAND_SET_DEFAULTS   0xF6

Set Defaults (Data: None).

◆ PS2_MOUSE_COMMAND_DISABLE_REPORT

#define PS2_MOUSE_COMMAND_DISABLE_REPORT   0xF5

Disable Data Reporting (Data: None).

◆ PS2_MOUSE_COMMAND_ENABLE_REPORT

#define PS2_MOUSE_COMMAND_ENABLE_REPORT   0xF4

Enable Data Reporting (Data: None).

◆ PS2_MOUSE_COMMAND_SET_SAMPLE_RATE

#define PS2_MOUSE_COMMAND_SET_SAMPLE_RATE   0xF3

Set Sample Rate (Data: Sample rate, ranges from 10-200).

◆ PS2_MOUSE_COMMAND_GET_DEVICE_ID

#define PS2_MOUSE_COMMAND_GET_DEVICE_ID   0xF2

◆ PS2_MOUSE_COMMAND_SET_REMOTE_MODE

#define PS2_MOUSE_COMMAND_SET_REMOTE_MODE   0xF0

Set Remote Mode (Data: None).

◆ PS2_MOUSE_COMMAND_SET_WRAP_MODE

#define PS2_MOUSE_COMMAND_SET_WRAP_MODE   0xEE

Set Wrap Mode (Data: None).

◆ PS2_MOUSE_COMMAND_RESET_WRAP_MODE

#define PS2_MOUSE_COMMAND_RESET_WRAP_MODE   0xEC

Reset Wrap Mode (Data: None).

◆ PS2_MOUSE_COMMAND_READ_DATA

#define PS2_MOUSE_COMMAND_READ_DATA   0xEB

Read Data (Data: None).

◆ PS2_MOUSE_COMMAND_SET_STREAM_MODE

#define PS2_MOUSE_COMMAND_SET_STREAM_MODE   0xEA

Set Stream Mode (Data: None).

◆ PS2_MOUSE_COMMAND_STATUS_REQUEST

#define PS2_MOUSE_COMMAND_STATUS_REQUEST   0xE9

Status Request (Data: None).

◆ PS2_MOUSE_COMMAND_SET_RESOLUTION

#define PS2_MOUSE_COMMAND_SET_RESOLUTION   0xE8

Set Resolution (Data: See below).

◆ PS2_MOUSE_COMMAND_SAMPLE_RATE_10

#define PS2_MOUSE_COMMAND_SAMPLE_RATE_10   10

10 samples/sec

◆ PS2_MOUSE_COMMAND_SAMPLE_RATE_20

#define PS2_MOUSE_COMMAND_SAMPLE_RATE_20   20

20 samples/sec

◆ PS2_MOUSE_COMMAND_SAMPLE_RATE_40

#define PS2_MOUSE_COMMAND_SAMPLE_RATE_40   40

40 samples/sec

◆ PS2_MOUSE_COMMAND_SAMPLE_RATE_60

#define PS2_MOUSE_COMMAND_SAMPLE_RATE_60   60

60 samples/sec

◆ PS2_MOUSE_COMMAND_SAMPLE_RATE_80

#define PS2_MOUSE_COMMAND_SAMPLE_RATE_80   80

80 samples/sec

◆ PS2_MOUSE_COMMAND_SAMPLE_RATE_100

#define PS2_MOUSE_COMMAND_SAMPLE_RATE_100   100

100 samples/sec

◆ PS2_MOUSE_COMMAND_SAMPLE_RATE_200

#define PS2_MOUSE_COMMAND_SAMPLE_RATE_200   200

200 samples/sec

◆ PS2_MOUSE_COMMAND_RESOLUTION_1

#define PS2_MOUSE_COMMAND_RESOLUTION_1   0x00

1 count/mm

◆ PS2_MOUSE_COMMAND_RESOLUTION_2

#define PS2_MOUSE_COMMAND_RESOLUTION_2   0x01

2 count/mm

◆ PS2_MOUSE_COMMAND_RESOLUTION_4

#define PS2_MOUSE_COMMAND_RESOLUTION_4   0x02

4 count/mm

◆ PS2_MOUSE_COMMAND_RESOLUTION_5

#define PS2_MOUSE_COMMAND_RESOLUTION_5   0x03

8 count/mm

◆ PS2_RESPONSE_NONE

#define PS2_RESPONSE_NONE   0x00

Key detection error or internal buffer overrun.

Response constants

◆ PS2_RESPONSE_SELF_TEST_PASS

#define PS2_RESPONSE_SELF_TEST_PASS   0xAA

Self test passed (sent after "0xFF (reset)" command or keyboard power up).

◆ PS2_RESPONSE_ECHO

#define PS2_RESPONSE_ECHO   0xEE

Response to "0xEE (echo)" command.

◆ PS2_RESPONSE_ACK

#define PS2_RESPONSE_ACK   0xFA

Command acknowledged (ACK).

◆ PS2_RESPONSE_SELFTEST_FAIL1

#define PS2_RESPONSE_SELFTEST_FAIL1   0xFC

Self test failed (sent after "0xFF (reset)" command or keyboard power up).

◆ PS2_RESPONSE_SELFTEST_FAIL2

#define PS2_RESPONSE_SELFTEST_FAIL2   0xFD

Self test failed (sent after "0xFF (reset)" command or keyboard power up).

◆ PS2_RESPONSE_RESEND

#define PS2_RESPONSE_RESEND   0xFE

Resend (keyboard wants controller to repeat last command it sent).

◆ PS2_RESPONSE_ERROR

#define PS2_RESPONSE_ERROR   0xFF

Key detection error or internal buffer overrun.

◆ PS2_MOUSE_BITS_YO

#define PS2_MOUSE_BITS_YO   (1 << 7)

Y-Axis Overflow.

Mouse packet bits

◆ PS2_MOUSE_BITS_XO

#define PS2_MOUSE_BITS_XO   (1 << 6)

X-Axis Overflow.

◆ PS2_MOUSE_BITS_YS

#define PS2_MOUSE_BITS_YS   (1 << 5)

Y-Axis Sign Bit (9-Bit Y-Axis Relative Offset).

◆ PS2_MOUSE_BITS_XS

#define PS2_MOUSE_BITS_XS   (1 << 4)

X-Axis Sign Bit (9-Bit X-Axis Relative Offset).

◆ PS2_MOUSE_BITS_AO

#define PS2_MOUSE_BITS_AO   (1 << 3)

Always One.

◆ PS2_MOUSE_BITS_BM

#define PS2_MOUSE_BITS_BM   (1 << 2)

Button Middle (Normally Off = 0).

◆ PS2_MOUSE_BITS_BR

#define PS2_MOUSE_BITS_BR   (1 << 1)

Button Right (Normally Off = 0).

◆ PS2_MOUSE_BITS_BL

#define PS2_MOUSE_BITS_BL   (1 << 0)

Button Left (Normally Off = 0).

◆ PS2_SCANCODE_MAKE

#define PS2_SCANCODE_MAKE   0

Key Down (Press).

Keyboard scancode types

◆ PS2_SCANCODE_BREAK

#define PS2_SCANCODE_BREAK   1

Key Up (Release).

◆ PS2_SCANCODE_PC104_COUNT

#define PS2_SCANCODE_PC104_COUNT   104

Keyboard scancode counts

◆ PS2_SCANCODE_ACPI_COUNT

#define PS2_SCANCODE_ACPI_COUNT   3

◆ PS2_SCANCODE_MULTIMEDIA_COUNT

#define PS2_SCANCODE_MULTIMEDIA_COUNT   18

◆ PS2_SCANCODE_COUNT

Typedef Documentation

◆ PS2_SCANCODE_DATA

typedef uint8_t PS2_SCANCODE_DATA[PS2_SCANCODE_COUNT *2][10]

PS2 specific types

◆ PS2_KEYBOARD_SCANCODE

Keyboard types

◆ PS2_MOUSE_PACKET

Mouse types

Function Documentation

◆ keyboard_leds_to_ps2_leds()

uint32_t STDCALL keyboard_leds_to_ps2_leds ( uint32_t leds,
uint8_t * ps2leds )

Map the Keyboard LED values to the PS/2 Keyboard LED values.

PS2 Helper Functions

Parameters
LEDsThe Keyboard LED values to map (eg KEYBOARD_LED_NUMLOCK)
PS2LEDsThe returned PS/2 Keyboard LED values (eg PS2_KEYBOARD_SET_LEDS_NUMLOCK)
Returns
ERROR_SUCCESS if completed or another error code on failure

◆ keyboard_rate_and_delay_to_ps2_typematic()

uint32_t STDCALL keyboard_rate_and_delay_to_ps2_typematic ( uint32_t rate,
uint32_t delay,
uint8_t * ps2typematic )

Translate the Keyboard Repeat Rate and Delay values to the PS/2 Keyboard Typematic value.

Parameters
RateThe Keyboard Repeat Rate to translate (Milliseconds between repeats)
DelayThe Keyboard Repeat Delay to translate (Number of Repeat Rate intervals before first repeat)
PS2TypematicThe translated PS/2 Typematic value returned
Returns
ERROR_SUCCESS if completed or another error code on failure

◆ ps2_keyboard_scancode_match()

uint32_t STDCALL ps2_keyboard_scancode_match ( PS2_KEYBOARD_SCANCODE * keyboardscancode,
int32_t * index )

Check a set of scancode bytes against the specified PS/2 Scancode set for a match.

Parameters
KeyboardScancodePointer to the scancode bytes and scancode set information
IndexThe index of the matching scancode on success or the nearest match on not found (Pass -1 to start search from first entry, on subsequent calls pass the previous value to continue)
Returns
ERROR_SUCCESS if matched, ERROR_NOT_FOUND if not matched or another error code on failure

◆ ps2_keyboard_scancode_to_scan_code()

uint32_t STDCALL ps2_keyboard_scancode_to_scan_code ( PS2_KEYBOARD_SCANCODE * keyboardscancode,
int32_t index,
uint16_t * scancode )

Return the Keyboard Scan Code value for a PS/2 scancode value.

Parameters
KeyboardScancodePointer to the scancode bytes and scancode set information
IndexThe index value returned by PS2KeyboardScancodeMatch (-1 to search for match)
ScanCodeThe returned keyboard scan code value (eg SCAN_CODE_A)
Returns
ERROR_SUCCESS if completed or another error code on failure (ERROR_NOT_FOUND if not matched)

◆ ps2_keyboard_scancode_to_modifiers()

uint32_t STDCALL ps2_keyboard_scancode_to_modifiers ( PS2_KEYBOARD_SCANCODE * keyboardscancode,
int32_t index,
uint32_t * modifiers )

Return the Keyboard Modifiers flags for a PS/2 scancode value.

Parameters
IndexThe index value returned by PS2KeyboardScancodeMatch (-1 to search for match)
ModifiersThe returned keyboard modifiers flags (eg KEYBOARD_LEFT_CTRL)
Returns
ERROR_SUCCESS if completed or another error code on failure (ERROR_NOT_FOUND if not matched)

◆ mouse_sample_rate_to_ps2_sample_rate()

uint32_t STDCALL mouse_sample_rate_to_ps2_sample_rate ( uint32_t rate,
uint8_t * ps2rate )

Translate a Mouse Sample Rate value to the PS/2 Mouse Sample Rate value.

Parameters
RateThe Mouse Sample Rate to translate (Samples per second)
PS2RateThe translated PS/2 Sample Rate value returned
Returns
ERROR_SUCCESS if completed or another error code on failure

◆ ps2_mouse_packet_to_mouse_data()

uint32_t STDCALL ps2_mouse_packet_to_mouse_data ( PS2_MOUSE_PACKET * mousepacket,
MOUSE_DATA * mousedata,
uint32_t flags,
uint32_t rotation )

Translate a PS/2 Mouse Packet into a Mouse Data structure.

Parameters
MousePacketPointer to the PS/2 Mouse Packet received from the mouse
MouseDataPointer to the Mouse Data structure to return
FlagsThe Mouse device flags (eg MOUSE_FLAG_SWAP_BUTTONS)
RotationThe Mouse device rotation setting (eg MOUSE_ROTATION_180)
Returns
ERROR_SUCCESS if completed or another error code on failure