Subversion Repositories Kolibri OS

Rev

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

Rev Author Line No. Line
1601 mario79 1
; <--- description --->
2
; compiler:     FASM 1.67.23
3
; name:         Mouse Emulation For KolibriOS
4
;-----------------------------------------------------------------------------
2687 leency 5
; version:	1.1
6
; last update:  26/05/2012
7
; written by:   Lipatov Kirill aka Leency
8
; changes:      shows notify with instructions, while opening program
9
;-----------------------------------------------------------------------------
1601 mario79 10
; version:	1.0
11
; last update:  04/09/2010
12
; written by:   Marat Zakiyanov aka Mario79, aka Mario
13
; changes:      total optimization of code,
14
;               different events for Up and Down of key Num 5
15
;               advansed acceleration mode
16
;-----------------------------------------------------------------------------
17
; version:      0.8
18
; last update:  03/10/2007
19
; written by:   Zlobny_Gluk
20
; e-mail:       umbrosia@land.ru
21
;-----------------------------------------------------------------------------
22
; <--- include all KolibriOS stuff --->
2687 leency 23
include "lang.inc"
1601 mario79 24
include '../../../macros.inc'
25
 
26
; <--- start of KolibriOS application --->
27
MEOS_APP_START
28
 
29
; <--- start of code --->
30
CODE
31
;-----------------------------------------------------------------------------
32
start:
2687 leency 33
    mov eax,70
34
    mov ebx,notifyapp
35
    mcall
36
 
2705 leency 37
start1:
1601 mario79 38
	xor	ebx,ebx
39
	mcall	40
40
@@:
41
	mcall	23,10
42
 
43
	mcall	66,3
44
	test	eax,0x80
45
	jz	@r
46
 
47
	mov	ebx,4
48
	call	hotkeys_common
49
 
50
	mcall	40,10b
51
still:
52
	mcall	10
53
 
54
	cmp	eax,2		; if event == 2
55
	jne	still
56
;-----------------------------------------------------------------------------
57
key:				   ; key event handler
58
	call	mouse_acceleration
59
 
60
	mcall	2		   ; get key code
61
 
62
	push	eax
63
	mcall	66,3
64
	test	eax,0x80
65
	pop	eax
66
	jnz	@f
67
	mov	ebx,5
68
	call	hotkeys_common
2705 leency 69
	jmp	start1
1601 mario79 70
@@:
71
	cmp	al,2
72
	jne	still
73
 
74
	xor	edx,edx
75
 
76
	cmp	ah,80	; Down Num 2
77
	je	keytwo
78
	cmp	ah,81	; Down Num 3
79
	je	keythree
80
	cmp	ah,75	; Down Num 4
81
	je	keyfour
82
	cmp	ah,77	; Down Num 6
83
	je	keysix
84
	cmp	ah,71	; Down Num 7
85
	je	keyseven
86
	cmp	ah,72	; Down Num 8
87
	je	keyeight
88
	cmp	ah,73	; Down Num 9
89
	je	keynine
90
	cmp	ah,76	; Down Num 5
91
	je	keyfive
92
	cmp	ah,204	; Up Num 5
93
	je	keyfive_1
94
	cmp	ah,79	; Down Num 1
95
	jne	still
96
;-----------------------------------------------------------------------------
97
keyone:
98
	call	down
99
keyfour:
100
	call	left
101
	jmp	mouseread
102
;-----------------------------------------------------------------------------
103
keythree:
104
	call	right
105
keytwo:
106
	call	down
107
	jmp	mouseread
108
;-----------------------------------------------------------------------------
109
keyseven:
110
	call	left
111
keyeight:
112
	call	up
113
	jmp	mouseread
114
;-----------------------------------------------------------------------------
115
keynine:
116
	call	up
117
keysix:
118
	call	right
119
	jmp	mouseread
120
;-----------------------------------------------------------------------------
121
keyfive:
122
	inc	edx
123
keyfive_1:
124
	mcall	18,19,5
125
	jmp	still
126
;-----------------------------------------------------------------------------
127
left:
128
	mov	eax,esi
129
	shl	eax,16
130
	sub	edx,eax
131
	ret
132
;-----------------------------------------------------------------------------
133
right:
134
	mov	eax,esi
135
	shl	eax,16
136
	add	edx,eax
137
	ret
138
;-----------------------------------------------------------------------------
139
down:
140
	add	edx,esi
141
	ret
142
;-----------------------------------------------------------------------------
143
up:
144
	sub	edx,esi
145
	ret
146
;-----------------------------------------------------------------------------
147
mouseread:
148
	xor	ebx,ebx
149
	mcall	37
150
	add	edx,eax
151
 
152
sravn:
153
	xor	ebx,ebx
154
	xor	edi,edi
155
 
156
real:
157
	mov	ebx,edx
158
	mov	edi,ebx
159
	shr	ebx,16 ; get x1
160
;	shl	edi,16 ; get y1
161
;	shr	edi,16
162
	and	edi,0xffff
163
 
164
nullli:
165
	add	ebx,16
166
	cmp	ebx,65535
167
	jg	xmin
168
	sub	ebx,15
169
 
170
	add	edi,16
171
	cmp	edi,65535
172
	jg	ymin
173
	sub	edi,15
174
 
175
razr:
176
	mcall	14
177
 
178
	mov	ecx,eax
179
	shr	eax,16 ; get x2
180
;	shl	ecx,16 ; get y2
181
;	shr	ecx,16
182
	and	ecx,0xffff
183
 
184
rightdownli:
185
	cmp	eax,ebx
186
	jl	xmax
187
	cmp	ecx,edi
188
	jl	ymax
189
 
190
mousewrite:
191
	mcall	18,19,4
192
	mcall	26,9
193
	mov	[mouse_timer_ticks],eax
194
	jmp	still
195
;-----------------------------------------------------------------------------
196
mouse_acceleration:
197
	xor	esi,esi
198
	inc	esi
199
	mcall	18,19,2
200
	mov	ecx,eax
201
	mcall	26,9
202
	sub	eax,[mouse_timer_ticks]
203
	cmp	eax,ecx  ; mouse_delay
204
	ja	@f
205
	xor	ecx,ecx
206
	mcall	18,19	; checkspeed
207
	mov	esi,eax
208
	shl	esi,2
209
@@:
210
	ret
211
;-----------------------------------------------------------------------------
212
xmax:
213
	dec	eax
214
	dec	ebx
215
	dec	edi
216
	shl	eax,16
217
	add	edi,eax
218
	mov	edx,edi
219
	jmp	sravn
220
;-----------------------------------------------------------------------------
221
xmin:
222
	mov	edx,edi
223
	jmp	sravn
224
;-----------------------------------------------------------------------------
225
ymax:
226
	dec	ecx
227
	dec	ebx
228
 
229
	shl	ebx,16
230
	mov	edi,ebx
231
	add	edi,ecx
232
	mov	edx,edi
233
	jmp	sravn
234
;-----------------------------------------------------------------------------
235
ymin:
236
	shl	ebx,16
237
	mov	edx,ebx
238
	shr	ebx,16
239
	jmp	sravn
240
;-----------------------------------------------------------------------------
241
hotkeys_common:
242
	xor	ecx,ecx
243
	xor	edx,edx
244
	mov	cl,79	; Down Num 1
245
	mcall	66
246
 
247
	mov	cl,80	; Down Num 2
248
	mcall	66
249
 
250
	mov	cl,81	; Down Num 3
251
	mcall	66
252
 
253
	mov	cl,75	; Down Num 4
254
	mcall	66
255
 
256
	mov	cl,76	; Down Num 5
257
	mcall	66
258
 
259
	mov	cl,204 ; Up Num 5
260
	mcall	66
261
 
262
	mov	cl,77	; Down Num 6
263
	mcall	66
264
 
265
	mov	cl,71	; Down Num 7
266
	mcall	66
267
 
268
	mov	cl,72	; Down Num 8
269
	mcall	66
270
 
271
	mov	cl,73	; Down Num 9
272
	mcall	66
273
	ret
274
;-----------------------------------------------------------------------------
275
; <--- initialised data --->
276
DATA
277
;-----------------------------------------------------------------------------
278
; <--- uninitialised data --->
279
UDATA
280
mouse_timer_ticks	dd 0
281
;-----------------------------------------------------------------------------
2687 leency 282
if lang eq ru
283
ud_user_message db 'NumLock вкл/выкл эмулятор мыши. Управление Numpad',0 ;удалить строчку из хот_кейз
284
else
285
ud_user_message db 'NumLock - on/off mouse emul. Numpad - move cursor',0
286
end if
287
 
288
notifyapp:
289
        dd      7
290
        dd      0
291
        dd      ud_user_message
292
        dd      0
293
        dd      0
294
        db      '@notify',0
295
;-----------------------------------------------------------------------------
296
 
297
 
298
 
1601 mario79 299
MEOS_APP_END
300
; <--- end of KolibriOS application --->
301
; ZG