Subversion Repositories Kolibri OS

Rev

Rev 7282 | Rev 7422 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

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