Subversion Repositories Kolibri OS

Rev

Rev 7192 | Rev 7248 | 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
 
13
#define ASCII_KEY_LEFT  176
14
#define ASCII_KEY_RIGHT 179
15
#define ASCII_KEY_DOWN  177
16
#define ASCII_KEY_UP    178
17
#define ASCII_KEY_HOME  180
18
#define ASCII_KEY_END   181
19
#define ASCII_KEY_PGDN  183
20
#define ASCII_KEY_PGUP  184
21
 
22
//SCAN CODE KEYS
23
#define SCAN_CODE_BS    014
24
#define SCAN_CODE_TAB   015
25
#define SCAN_CODE_ENTER 028
26
#define SCAN_CODE_ESC   001
27
#define SCAN_CODE_DEL   083
28
#define SCAN_CODE_INS   082
29
#define SCAN_CODE_SPACE 057
30
 
31
#define SCAN_CODE_LEFT  075
32
#define SCAN_CODE_RIGHT 077
33
#define SCAN_CODE_DOWN  080
34
#define SCAN_CODE_UP    072
35
#define SCAN_CODE_HOME  071
36
#define SCAN_CODE_END   079
37
#define SCAN_CODE_PGDN  081
38
#define SCAN_CODE_PGUP  073
39
 
7153 leency 40
#define SCAN_CODE_MINUS 012
41
#define SCAN_CODE_PLUS  013
42
 
7218 leency 43
#define SCAN_CODE_F1    059
44
 
6791 leency 45
#define SCAN_CODE_KEY_C 046
7218 leency 46
#define SCAN_CODE_KEY_E 018
7187 leency 47
#define SCAN_CODE_KEY_F 033
48
#define SCAN_CODE_KEY_I 023
49
#define SCAN_CODE_KEY_L 038
6791 leency 50
#define SCAN_CODE_KEY_M 050
51
#define SCAN_CODE_KEY_O 024
52
#define SCAN_CODE_KEY_P 025
7187 leency 53
#define SCAN_CODE_KEY_R 019
7192 leency 54
#define SCAN_CODE_KEY_S 031
6791 leency 55
 
6285 leency 56
#define KEY_LSHIFT     00000000001b
57
#define KEY_RSHIFT     00000000010b
58
#define KEY_LCTRL      00000000100b
59
#define KEY_RCTRL      00000001000b
60
#define KEY_LALT       00000010000b
61
#define KEY_RALT       00000100000b
62
#define KEY_CAPSLOCK   00001000000b
63
#define KEY_NUMLOCK    00010000000b
64
#define KEY_SCROLLLOCK 00100000000b
65
#define KEY_LWIN       01000000000b
66
#define KEY_RWIN       10000000000b
67
 
68
inline fastcall word GetKey()  //+Gluk fix
69
{
70
		$push edx
71
GETKEY:
72
		$mov  eax,2
73
		$int  0x40
74
		$cmp eax,1
75
		$jne GETKEYI
76
		$mov ah,dh
77
		$jmp GETKEYII //jz?
78
GETKEYI:
79
		$mov dh,ah
80
		$jmp GETKEY
81
GETKEYII:
82
		$pop edx
83
		$shr eax,8
84
}
85
 
6735 leency 86
:unsigned char key_ascii;
87
:dword key_scancode, key_modifier, key_editbox;
88
:int GetKeys()
6285 leency 89
{
90
		$push edx
91
GETKEY:
92
		$mov  eax,2
93
		$int  0x40
94
		$cmp eax,1
95
		$jne GETKEYI
96
		$mov eax,edx
97
		$jmp GETKEYII
98
GETKEYI:
99
		$mov edx,eax
100
		$jmp GETKEY
101
GETKEYII:
102
		$pop edx
6640 leency 103
	key_editbox = EAX;
6285 leency 104
	key_ascii = AH;
105
	$shr  eax,16
106
	key_scancode = AL;
107
	//get alt/shift/ctrl key status
108
	$mov eax,66
109
	$mov ebx,3
110
	$int 0x40
111
	key_modifier = EAX;
6640 leency 112
	EAX = key_editbox;
6285 leency 113
}
114
 
115
#endif