Project

General

Profile

Statistics
| Revision:

root / proj / libs / kbc / include / keyboard.h @ 342

History | View | Annotate | Download (2.87 KB)

1
#ifndef KEYBOARD_H_INCLUDED
2
#define KEYBOARD_H_INCLUDED
3

    
4
/**
5
 * @defgroup    keyboard    keyboard
6
 * @ingroup kbc
7
 * @brief Keyboard module.
8
 *
9
 * @{
10
 */
11

    
12
#include "kbc.h"
13

    
14
/** @brief W Make Code */
15
#define W_MAKE_CODE             0x11
16
/** @brief W Break Code */
17
#define W_BREAK_CODE            0x91
18
/** @brief A Make Code */
19
#define A_MAKE_CODE             0x1E
20
/** @brief A Break Code */
21
#define A_BREAK_CODE            0x9E
22
/** @brief S Make Code */
23
#define S_MAKE_CODE             0x1F
24
/** @brief S Break Code */
25
#define S_BREAK_CODE            0x9F
26
/** @brief D Make Code */
27
#define D_MAKE_CODE             0x20
28
/** @brief D Break Code */
29
#define D_BREAK_CODE            0xA0
30
/** @brief CTRL Make Code */
31
#define CTRL_MAKE_CODE          0x1D
32
/** @brief CTRL Break Code */
33
#define CTRL_BREAK_CODE         0x9D
34
/** @brief Plus (+) Make Code */
35
#define PLUS_MAKE_CODE          0x1A
36
/** @brief Plus (+) Break Code */
37
#define PLUS_BREAK_CODE         0x9A
38
/** @brief Minus (-) Make Code */
39
#define MINUS_MAKE_CODE         0x35
40
/** @brief Minus (-) Break Code */
41
#define MINUS_BREAK_CODE        0xB5
42
/** @brief Enter Make Code */
43
#define ENTER_MAKE_CODE         0x1C
44
/** @brief Enter Break Code */
45
#define ENTER_BREAK_CODE        0x9C
46
/** @brief Backspace Make Code */
47
#define BACKSPACE_MAKE_CODE     0x0E
48
/** @brief Backspace Break Code */
49
#define BACKSPACE_BREAK_CODE    0x8E
50
/** @brief ESC Make Code */
51
#define ESC_MAKE_CODE           0x01
52
/** @brief ESC Break Code */
53
#define ESC_BREAK_CODE          0x81
54

    
55
/**
56
 * @brief Subscribes Keyboard Interrupts and disables Minix Default IH.
57
 * @param interrupt_bit Bit of Interrupt Vector that will be set when Keyboard Interrupt is pending
58
 * @param interrupt_id Keyboard Interrupt ID to specify the Keyboard Interrupt in other calls
59
 * @return ERROR_CODE code representing the result of the operation, SUCCESS code is returned if everything is OK
60
 * @see {_ERRORS_H_::errors}
61
 */
62
int (subscribe_kbc_interrupt)(uint8_t interrupt_bit, int *interrupt_id);
63

    
64
/**
65
 * @brief Get scancode read from keyboard.
66
 * @return  Pointer to begin of scancode array (array with size 2)
67
 */
68
const uint8_t* keyboard_get_scancode(void);
69
/**
70
 * @brief Get state of reading (done).
71
 * @return  1 if done, 0 otherwise
72
 */
73
int keyboard_get_done(void);
74
/**
75
 * @brief Get size of read scancode (1 or 2).
76
 * @return Size of scancode
77
 */
78
int keyboard_get_size(void);
79
/**
80
 * @brief Get error code of previous run of kbc_ih, if an error occured.
81
 * @return  Error code, or 0 if successful
82
 */
83
int keyboard_get_error(void);
84
/**
85
 * @brief KBC interrupt handler. Reads scancodes.
86
 */
87
void (kbc_ih)(void);
88
/**
89
 * @brief Poll keyboard for scancodes.
90
 * @param   bytes   Array to put read bytes (up to 2)
91
 * @param   size    Number of ready bytes (1 or 2)
92
 * @return  SUCCESS if operation was successful, other value otherwise
93
 */
94
int (keyboard_poll)(uint8_t bytes[], uint8_t *size);
95

    
96
/**
97
 * @}
98
 */
99

    
100
#endif //KEYBOARD_H_INCLUDED