Subversion Repositories Kolibri OS

Rev

Rev 7490 | Rev 7628 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
6285 leency 1
#ifndef INCLUDE_KEYBOARD_H
2
#define INCLUDE_KEYBOARD_H
3
 
4
//ASCII KEYS
5
#define ASCII_KEY_BS    008
6
#define ASCII_KEY_TAB   009
7
#define ASCII_KEY_ENTER 013
8
#define ASCII_KEY_ESC   027
9
#define ASCII_KEY_DEL   182
10
#define ASCII_KEY_INS   185
11
#define ASCII_KEY_SPACE 032
12
 
7422 leency 13
#define ASCII_KEY_PLUS  043
14
#define ASCII_KEY_MINUS 045
15
#define ASCII_KEY_EQU   061
16
 
6285 leency 17
#define ASCII_KEY_LEFT  176
18
#define ASCII_KEY_RIGHT 179
19
#define ASCII_KEY_DOWN  177
20
#define ASCII_KEY_UP    178
21
#define ASCII_KEY_HOME  180
22
#define ASCII_KEY_END   181
23
#define ASCII_KEY_PGDN  183
24
#define ASCII_KEY_PGUP  184
25
 
26
//SCAN CODE KEYS
27
#define SCAN_CODE_BS    014
28
#define SCAN_CODE_TAB   015
29
#define SCAN_CODE_ENTER 028
30
#define SCAN_CODE_ESC   001
31
#define SCAN_CODE_DEL   083
32
#define SCAN_CODE_INS   082
33
#define SCAN_CODE_SPACE 057
7490 leency 34
#define SCAN_CODE_MENU  093
6285 leency 35
 
36
#define SCAN_CODE_LEFT  075
37
#define SCAN_CODE_RIGHT 077
38
#define SCAN_CODE_DOWN  080
39
#define SCAN_CODE_UP    072
40
#define SCAN_CODE_HOME  071
41
#define SCAN_CODE_END   079
42
#define SCAN_CODE_PGDN  081
43
#define SCAN_CODE_PGUP  073
44
 
7153 leency 45
#define SCAN_CODE_MINUS 012
46
#define SCAN_CODE_PLUS  013
47
 
7218 leency 48
#define SCAN_CODE_F1    059
7293 leency 49
#define SCAN_CODE_F2    060
50
#define SCAN_CODE_F3    061
51
#define SCAN_CODE_F4    062
52
#define SCAN_CODE_F5    063
53
#define SCAN_CODE_F6    064
54
#define SCAN_CODE_F7    065
55
#define SCAN_CODE_F8    066
56
#define SCAN_CODE_F9    067
57
#define SCAN_CODE_F10   068
7282 leency 58
#define SCAN_CODE_F11   087
59
#define SCAN_CODE_F12   088
7218 leency 60
 
7490 leency 61
#define SCAN_CODE_KEY_A 030
7260 leency 62
#define SCAN_CODE_KEY_B 048
6791 leency 63
#define SCAN_CODE_KEY_C 046
7490 leency 64
#define SCAN_CODE_KEY_D 032
7218 leency 65
#define SCAN_CODE_KEY_E 018
7187 leency 66
#define SCAN_CODE_KEY_F 033
7293 leency 67
#define SCAN_CODE_KEY_H 035
7187 leency 68
#define SCAN_CODE_KEY_I 023
69
#define SCAN_CODE_KEY_L 038
6791 leency 70
#define SCAN_CODE_KEY_M 050
7490 leency 71
#define SCAN_CODE_KEY_N 049
6791 leency 72
#define SCAN_CODE_KEY_O 024
73
#define SCAN_CODE_KEY_P 025
7521 leency 74
#define SCAN_CODE_KEY_Q 016
7187 leency 75
#define SCAN_CODE_KEY_R 019
7192 leency 76
#define SCAN_CODE_KEY_S 031
7265 leency 77
#define SCAN_CODE_KEY_T 020
7490 leency 78
#define SCAN_CODE_KEY_U 022
7248 leency 79
#define SCAN_CODE_KEY_V 047
80
#define SCAN_CODE_KEY_X 045
81
#define SCAN_CODE_KEY_Y 021
82
#define SCAN_CODE_KEY_Z 044
6791 leency 83
 
7248 leency 84
 
6285 leency 85
#define KEY_LSHIFT     00000000001b
86
#define KEY_RSHIFT     00000000010b
87
#define KEY_LCTRL      00000000100b
88
#define KEY_RCTRL      00000001000b
89
#define KEY_LALT       00000010000b
90
#define KEY_RALT       00000100000b
91
#define KEY_CAPSLOCK   00001000000b
92
#define KEY_NUMLOCK    00010000000b
93
#define KEY_SCROLLLOCK 00100000000b
94
#define KEY_LWIN       01000000000b
95
#define KEY_RWIN       10000000000b
96
 
97
inline fastcall word GetKey()  //+Gluk fix
98
{
99
		$push edx
100
GETKEY:
101
		$mov  eax,2
102
		$int  0x40
103
		$cmp eax,1
104
		$jne GETKEYI
105
		$mov ah,dh
106
		$jmp GETKEYII //jz?
107
GETKEYI:
108
		$mov dh,ah
109
		$jmp GETKEY
110
GETKEYII:
111
		$pop edx
112
		$shr eax,8
113
}
114
 
6735 leency 115
:unsigned char key_ascii;
116
:dword key_scancode, key_modifier, key_editbox;
117
:int GetKeys()
6285 leency 118
{
119
		$push edx
120
GETKEY:
121
		$mov  eax,2
122
		$int  0x40
123
		$cmp eax,1
124
		$jne GETKEYI
125
		$mov eax,edx
126
		$jmp GETKEYII
127
GETKEYI:
128
		$mov edx,eax
129
		$jmp GETKEY
130
GETKEYII:
131
		$pop edx
6640 leency 132
	key_editbox = EAX;
6285 leency 133
	key_ascii = AH;
134
	$shr  eax,16
135
	key_scancode = AL;
136
	//get alt/shift/ctrl key status
137
	$mov eax,66
138
	$mov ebx,3
139
	$int 0x40
140
	key_modifier = EAX;
6640 leency 141
	EAX = key_editbox;
6285 leency 142
}
143
 
144
#endif