forked from KolibriOS/kolibrios
Hot Angles 0.3.7: support parameters for running programs; improved mode 3; more settings supported by the configurator; updated readme
git-svn-id: svn://kolibrios.org@7459 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
e8789d5ad4
commit
f0f9d26273
@ -2,7 +2,7 @@
|
|||||||
; Hot Angles Config ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
; Hot Angles Config ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
; Compile with FASM
|
; Compile with FASM
|
||||||
; Version 0.3.6: Oct 9, 2018
|
; Version 0.3.7: Oct 14, 2018
|
||||||
|
|
||||||
; Copyright (c) 2018, Efremenkov Sergey aka TheOnlyMirage
|
; Copyright (c) 2018, Efremenkov Sergey aka TheOnlyMirage
|
||||||
; All rights reserved.
|
; All rights reserved.
|
||||||
@ -115,6 +115,7 @@ event_wait:
|
|||||||
invoke edit_box_mouse, editRU
|
invoke edit_box_mouse, editRU
|
||||||
invoke edit_box_mouse, editRD
|
invoke edit_box_mouse, editRD
|
||||||
;stdcall [kmainmenu_dispatch_cursorevent], [modeMenu] ;ïðîâåðêà ìûøè äëÿ êîìáîáîêñà
|
;stdcall [kmainmenu_dispatch_cursorevent], [modeMenu] ;ïðîâåðêà ìûøè äëÿ êîìáîáîêñà
|
||||||
|
invoke edit_box_mouse, editRadius
|
||||||
|
|
||||||
jmp event_wait
|
jmp event_wait
|
||||||
|
|
||||||
@ -127,10 +128,66 @@ key: ; Keypress event handler
|
|||||||
mov eax, 2 ; The key is returned in ah. The key must be
|
mov eax, 2 ; The key is returned in ah. The key must be
|
||||||
mcall ; read and cleared from the system queue.
|
mcall ; read and cleared from the system queue.
|
||||||
|
|
||||||
|
;push eax
|
||||||
invoke edit_box_key, editLU
|
invoke edit_box_key, editLU
|
||||||
invoke edit_box_key, editLD
|
invoke edit_box_key, editLD
|
||||||
invoke edit_box_key, editRU
|
invoke edit_box_key, editRU
|
||||||
invoke edit_box_key, editRD
|
invoke edit_box_key, editRD
|
||||||
|
invoke edit_box_key, editRadius
|
||||||
|
;pop eax
|
||||||
|
|
||||||
|
cmp eax, 1
|
||||||
|
je event_wait ;.end ;@f
|
||||||
|
cmp word[hkSymbol], 0
|
||||||
|
jne event_wait ;.end ;@f
|
||||||
|
cmp al, 0
|
||||||
|
jne .next
|
||||||
|
mov byte[hkSymbol], ah
|
||||||
|
|
||||||
|
push eax ecx esi ;ñîõðàíÿåì ñêàíêîä êëàâèøè
|
||||||
|
shr eax, 16
|
||||||
|
mov byte[keyscan], al
|
||||||
|
mov ecx, 0
|
||||||
|
mov cl, al ;byte[keyscan]
|
||||||
|
mov esi, keystr.data
|
||||||
|
call IntToStr
|
||||||
|
|
||||||
|
;ñ÷èòàåì ïîëó÷åííûé ðàçìåð ñòðîêè
|
||||||
|
xor ecx, ecx
|
||||||
|
mov esi, keystr.data
|
||||||
|
@@:
|
||||||
|
cmp byte[esi], 0
|
||||||
|
je @f
|
||||||
|
inc esi
|
||||||
|
inc ecx
|
||||||
|
;cmp ecx, 4
|
||||||
|
;je @f
|
||||||
|
jmp @b
|
||||||
|
@@:
|
||||||
|
;è ñîõðàíÿåì åãî
|
||||||
|
mov dword[keystr.size], ecx
|
||||||
|
|
||||||
|
; cmp ecx, 3
|
||||||
|
; jbe @f
|
||||||
|
; mcall -1
|
||||||
|
; @@:
|
||||||
|
|
||||||
|
pop esi ecx eax
|
||||||
|
|
||||||
|
jmp red
|
||||||
|
.next:
|
||||||
|
;cmp al, 2
|
||||||
|
;jne @f
|
||||||
|
;cmp ah, 0
|
||||||
|
;jne @f
|
||||||
|
;ñ÷èòûâàåì óïðàâëÿþùèå êëàâèøè
|
||||||
|
;shr eax, 16
|
||||||
|
;bt eax, 0 ;left shift
|
||||||
|
;jne @f
|
||||||
|
;mov byte[hkSymbol], 2
|
||||||
|
;jmp red
|
||||||
|
@@:
|
||||||
|
;.end:
|
||||||
jmp event_wait ; Just read the key, ignore it and jump to event_wait.
|
jmp event_wait ; Just read the key, ignore it and jump to event_wait.
|
||||||
|
|
||||||
button: ; Buttonpress event handler
|
button: ; Buttonpress event handler
|
||||||
@ -182,12 +239,17 @@ noclose:
|
|||||||
mov word[coordModeMenu.x], ax
|
mov word[coordModeMenu.x], ax
|
||||||
|
|
||||||
mov eax, dword[pi+38]
|
mov eax, dword[pi+38]
|
||||||
add eax, buttonModeY + 17 ;20 ;42
|
add eax, buttonModeY + 13 ;17
|
||||||
mov word[coordModeMenu.y], ax
|
mov word[coordModeMenu.y], ax
|
||||||
|
|
||||||
stdcall [ksubmenu_draw], [modeMenu], coordModeMenu
|
stdcall [ksubmenu_draw], [modeMenu], coordModeMenu
|
||||||
pop ecx ebx eax
|
pop ecx ebx eax
|
||||||
jmp event_wait
|
jmp event_wait
|
||||||
|
@@:
|
||||||
|
cmp ah, 9
|
||||||
|
jne @f
|
||||||
|
mov word[hkSymbol], 0
|
||||||
|
jmp red ;event_wait
|
||||||
@@:
|
@@:
|
||||||
cmp ah, 110
|
cmp ah, 110
|
||||||
jne @f
|
jne @f
|
||||||
@ -227,8 +289,8 @@ createFile:
|
|||||||
.path_adr dd fileName ;ïóòü
|
.path_adr dd fileName ;ïóòü
|
||||||
|
|
||||||
;ñòðîêà ïàðàìåòðîâ ïî óìîë÷àíèþ è å¸ ðàçìåð
|
;ñòðîêà ïàðàìåòðîâ ïî óìîë÷àíèþ è å¸ ðàçìåð
|
||||||
defaultDataForConfig db 121,13,10,'/rd/1/HACONFIG',13,10,'/rd/1/HACONFIG',13,10,'/rd/1/HACONFIG',13,10,'/rd/1/HACONFIG',13,10
|
defaultDataForConfig db 121,13,10,'/rd/1/HACONFIG',13,10,'/rd/1/HACONFIG',13,10,'/rd/1/HACONFIG',13,10,'/rd/1/HACONFIG',13,10,'Space',13,10,'57',13,10,'10',13,10,'s',13,10
|
||||||
defaultDataSize = 48+19
|
defaultDataSize = 85 ;48+19+4
|
||||||
|
|
||||||
|
|
||||||
copyParam: ;êîïèðóåò ïàðàìåòð(êîìàíäó çàïóñêà) â áóôåð (ñì. äàëüøå)
|
copyParam: ;êîïèðóåò ïàðàìåòð(êîìàíäó çàïóñêà) â áóôåð (ñì. äàëüøå)
|
||||||
@ -271,11 +333,21 @@ applyButton:
|
|||||||
;mov dword[createFile.size], defaultDataSize
|
;mov dword[createFile.size], defaultDataSize
|
||||||
|
|
||||||
;âû÷èñëèì ðàçìåð ôàéëà êîíôèãóðàöèè â áàéòàõ
|
;âû÷èñëèì ðàçìåð ôàéëà êîíôèãóðàöèè â áàéòàõ
|
||||||
mov ecx, 5*2+1 ;1 байт на состояние активности и 5 пар переносов строк (символы 13, 10)
|
mov ecx, 9*2+1 ;1 áàéò íà ñîñòîÿíèå àêòèâíîñòè è 9 ïàð ïåðåíîñîâ ñòðîê (ñèìâîëû 13, 10)
|
||||||
add ecx, dword[editLU.size] ;ïëþñ ðàçìåð êàæäîé ñòðîêè â áàéòàõ
|
add ecx, dword[editLU.size] ;ïëþñ ðàçìåð êàæäîé ñòðîêè â áàéòàõ
|
||||||
add ecx, dword[editLD.size]
|
add ecx, dword[editLD.size]
|
||||||
add ecx, dword[editRU.size]
|
add ecx, dword[editRU.size]
|
||||||
add ecx, dword[editRD.size] ;dataBuffer.size4]
|
add ecx, dword[editRD.size] ;dataBuffer.size4]
|
||||||
|
add ecx, dword[editRadius.size]
|
||||||
|
add ecx, dword[hkSize] ;ðàçìåð èìåíè àêòèâàöèîííîé êíîïêè
|
||||||
|
add ecx, dword[keystr.size] ;ðàçìåð ñêàíêîäà àêòèâàöèîííîé êíîïêè
|
||||||
|
inc ecx ; åù¸ 1 áàéò äëÿ õðàíåíèÿ ðàçìåðà ýëåìåíòîâ
|
||||||
|
;mov ecx, 85
|
||||||
|
|
||||||
|
cmp dword[keystr.size], 3
|
||||||
|
jbe @f
|
||||||
|
;mcall -1
|
||||||
|
@@:
|
||||||
|
|
||||||
;åñëè çàäàíû ïóñòûå ñòðîêè, òî ìû àâòîìàòè÷åñêè äîáàâëÿåì çíàê ìèíóñ, çíà÷èò ðàçìåð +1 áàéò
|
;åñëè çàäàíû ïóñòûå ñòðîêè, òî ìû àâòîìàòè÷åñêè äîáàâëÿåì çíàê ìèíóñ, çíà÷èò ðàçìåð +1 áàéò
|
||||||
cmp dword[editLU.size], 0
|
cmp dword[editLU.size], 0
|
||||||
@ -304,7 +376,6 @@ applyButton:
|
|||||||
;cmp byte[mode], 0
|
;cmp byte[mode], 0
|
||||||
;jne @f
|
;jne @f
|
||||||
;@@:
|
;@@:
|
||||||
;
|
|
||||||
|
|
||||||
push ebx ;ñîõðàíÿåì âûáðàííûé ðåæèì
|
push ebx ;ñîõðàíÿåì âûáðàííûé ðåæèì
|
||||||
mov bl, byte[mode]
|
mov bl, byte[mode]
|
||||||
@ -337,6 +408,41 @@ applyButton:
|
|||||||
call copyParam
|
call copyParam
|
||||||
call addPerenos ;äîáàâëÿåì ïåðåíîñ ñòðîêè
|
call addPerenos ;äîáàâëÿåì ïåðåíîñ ñòðîêè
|
||||||
|
|
||||||
|
;ñîõðàíÿåì êíîïêó àêòèâàöèè
|
||||||
|
call saveKey
|
||||||
|
call addPerenos
|
||||||
|
|
||||||
|
;ñîõðàíÿåì ñêàíêîä êíîïêè
|
||||||
|
mov esi, keystr.data ;çàïèñûâàåì ñòðîêó keystr â ôàéë
|
||||||
|
xor ebx, ebx
|
||||||
|
@@:
|
||||||
|
cmp byte[esi], 0
|
||||||
|
je @f
|
||||||
|
mov bl, byte[esi]
|
||||||
|
mov byte[eax], bl
|
||||||
|
inc eax
|
||||||
|
inc esi
|
||||||
|
cmp esi, keystr.size-1
|
||||||
|
jae @f
|
||||||
|
jmp @b
|
||||||
|
@@:
|
||||||
|
call addPerenos
|
||||||
|
|
||||||
|
;ñîõðàíÿåì ðàäèóñ
|
||||||
|
;!!! åñëè ðàäèóñ îñòàâëåí ïóñòûì, òî íóæíî ñîõðàíÿòü çíà÷åíèå ïî óìîë÷àíèþ (ñåé÷àñ ïèøåòñÿ '-')
|
||||||
|
mov esi, radiusBuffer.data
|
||||||
|
mov ebx, editRadius.size ;radiusBuffer.size
|
||||||
|
call copyParam
|
||||||
|
call addPerenos
|
||||||
|
|
||||||
|
;äîáàâëÿåì ðàçìåð ýëåìåíòîâ
|
||||||
|
push ebx ;ñîõðàíÿåì âûáðàííûé ðåæèì
|
||||||
|
mov bl, byte[sizeStyle]
|
||||||
|
mov byte[eax], bl
|
||||||
|
pop ebx
|
||||||
|
inc eax
|
||||||
|
call addPerenos
|
||||||
|
|
||||||
pop ebx esi
|
pop ebx esi
|
||||||
|
|
||||||
|
|
||||||
@ -440,6 +546,9 @@ UpdateEditsSizes:
|
|||||||
mov eax, dword[editRD.size]
|
mov eax, dword[editRD.size]
|
||||||
mov dword[dataBuffer.size4], eax
|
mov dword[dataBuffer.size4], eax
|
||||||
|
|
||||||
|
mov eax, dword[editRadius.size]
|
||||||
|
mov dword[radiusBuffer.size], eax
|
||||||
|
|
||||||
pop eax
|
pop eax
|
||||||
ret
|
ret
|
||||||
|
|
||||||
@ -474,7 +583,13 @@ loadConfig:
|
|||||||
mov byte[mode], 48 ;'0'
|
mov byte[mode], 48 ;'0'
|
||||||
jmp loadConfig.modeEnd
|
jmp loadConfig.modeEnd
|
||||||
@@:
|
@@:
|
||||||
mov byte[mode], 49 ;'1' иначе по умолчанию включён классический режим работы
|
cmp bl, 'y' ;åñëè y - òî êëàññè÷åñêèé ðåæèì
|
||||||
|
jne @f
|
||||||
|
mov byte[mode], 49 ;'1'
|
||||||
|
jmp loadConfig.modeEnd
|
||||||
|
@@:
|
||||||
|
mov byte[mode], 48 ;'0' èíà÷å ïî óìîë÷àíèþ îòêëþ÷åíî
|
||||||
|
;mov byte[mode], 49 ;'1' èíà÷å ïî óìîë÷àíèþ âêëþ÷¸í êëàññè÷åñêèé ðåæèì ðàáîòû
|
||||||
.modeEnd:
|
.modeEnd:
|
||||||
pop ebx
|
pop ebx
|
||||||
;jmp loadConfig.end ;êîìàíäà äëÿ óäîáñòâà îòëàäêè è ïîèñêà îøèáîê
|
;jmp loadConfig.end ;êîìàíäà äëÿ óäîáñòâà îòëàäêè è ïîèñêà îøèáîê
|
||||||
@ -530,6 +645,18 @@ loadConfig:
|
|||||||
cmp edi, dataBuffer.size1 ;åñëè ýòî áûë ïîñëåäíèé áóôåð (è ìû âûøëè çà àäðåñà ðàçìåðîâ áóôåðîâ), òî âûõîäèì
|
cmp edi, dataBuffer.size1 ;åñëè ýòî áûë ïîñëåäíèé áóôåð (è ìû âûøëè çà àäðåñà ðàçìåðîâ áóôåðîâ), òî âûõîäèì
|
||||||
jb loadConfig.block
|
jb loadConfig.block
|
||||||
|
|
||||||
|
call readOptKey ;ñ÷èòûâàåì êëàâèøó
|
||||||
|
call gotoEndString
|
||||||
|
|
||||||
|
;ñ÷èòûâàåì ñêàíêîä êëàâèøè
|
||||||
|
call readScanKey
|
||||||
|
call gotoEndString
|
||||||
|
|
||||||
|
call readOptRadius ;ñ÷èòûâàåì çíà÷åíèå ðàäèóñà äëÿ mode 3
|
||||||
|
call gotoEndString
|
||||||
|
call readOptSize ;ñ÷èòûâàåì ðàçìåð ýëåìåíòîâ
|
||||||
|
call gotoEndString
|
||||||
|
|
||||||
pop eax ebx ecx esi edi
|
pop eax ebx ecx esi edi
|
||||||
|
|
||||||
jmp loadConfig.end
|
jmp loadConfig.end
|
||||||
@ -544,10 +671,333 @@ loadConfig:
|
|||||||
mcall 68, 13, ecx ;âûãðóæàåì ôàéë èç ïàìÿòè
|
mcall 68, 13, ecx ;âûãðóæàåì ôàéë èç ïàìÿòè
|
||||||
@@:
|
@@:
|
||||||
call updateParams ;ïðèìåíÿåì íàñòðîéêè êàæäîãî áóôåðà
|
call updateParams ;ïðèìåíÿåì íàñòðîéêè êàæäîãî áóôåðà
|
||||||
|
call setMySize ;ïðèìåíÿåì íàñòðîéêè ðàçìåðà ýëåìåíòîâ
|
||||||
pop edx ecx ebx eax
|
pop edx ecx ebx eax
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
setMySize:
|
||||||
|
push eax
|
||||||
|
;âûñòàâëÿåì mysize â çàâèñèìîñòè îò çíà÷åíèÿ sizeStyle
|
||||||
|
cmp byte[sizeStyle], '0'
|
||||||
|
jb @f
|
||||||
|
cmp byte[sizeStyle], '7'
|
||||||
|
ja @f
|
||||||
|
mov eax, 0 ;åñëè çíà÷åíèå ðàçìåðà çàäàíî, òî åãî è âûñòàâëÿåì
|
||||||
|
mov al, byte[sizeStyle]
|
||||||
|
sub al, '0'
|
||||||
|
jmp .end
|
||||||
|
@@:
|
||||||
|
cmp byte[sizeStyle], 'a'
|
||||||
|
je .auto
|
||||||
|
;cmp byte[sizeStyle], 's'
|
||||||
|
;je .system
|
||||||
|
.system: ;èíà÷å çíà÷åíèå ïî óìîë÷àíèþ: s - ñèñòåìíàÿ
|
||||||
|
; push ebx ecx
|
||||||
|
;!!!
|
||||||
|
; mov eax, 9
|
||||||
|
; mcall 48, 11 ;ïîëó÷àåì ñèñòåìíûé ðàçìåð øðèôòà
|
||||||
|
;eax - âûñîòà øðèôòà â ïèêñåëÿõ
|
||||||
|
; mov ecx, eax
|
||||||
|
; push eax
|
||||||
|
; mcall 48, 12, ecx ;ïðèìåíÿåì ðàçìåð øðèôòà
|
||||||
|
; pop eax
|
||||||
|
; pop ecx ebx
|
||||||
|
;temp fix - äåëèì íà òåêóùèé ðàçìåð øðèôòà and -1
|
||||||
|
; push ebx edx
|
||||||
|
; mov ebx, 9
|
||||||
|
;div ebx
|
||||||
|
; pop edx ebx
|
||||||
|
;cmp eax, 0
|
||||||
|
;je .end
|
||||||
|
;dec eax
|
||||||
|
mov eax, 0 ;xor eax, eax ;test temp
|
||||||
|
jmp .end
|
||||||
|
.auto: ;a - âûñòàâëÿåì â çàâèñèìîñòè îò ðàçðåøåíèÿ ýêðàíà
|
||||||
|
;!!!
|
||||||
|
mcall 14
|
||||||
|
push ebx
|
||||||
|
xor ebx, ebx
|
||||||
|
mov bx, ax
|
||||||
|
shr eax, 16
|
||||||
|
cmp ax, bx ;ïîëó÷àåì áîëüøèé ðàçìåð ñòîðîíû
|
||||||
|
jae .a
|
||||||
|
mov ax, bx
|
||||||
|
.a:
|
||||||
|
pop ebx
|
||||||
|
cmp ax, 1919 ;ðàçìåðû ïîëó÷åííûå âûøå îò 0 è íà 1 ìåíüøå
|
||||||
|
jb .size0
|
||||||
|
cmp ax, 2047
|
||||||
|
jb .size1
|
||||||
|
cmp ax, 4095
|
||||||
|
jb .size2
|
||||||
|
cmp ax, 8191
|
||||||
|
jb .size3
|
||||||
|
|
||||||
|
jmp .size4
|
||||||
|
|
||||||
|
.size0:
|
||||||
|
mov eax, 0
|
||||||
|
jmp .end
|
||||||
|
.size1:
|
||||||
|
mov eax, 1
|
||||||
|
jmp .end
|
||||||
|
.size2:
|
||||||
|
mov eax, 2
|
||||||
|
jmp .end
|
||||||
|
.size3:
|
||||||
|
mov eax, 3
|
||||||
|
jmp .end
|
||||||
|
.size4:
|
||||||
|
mov eax, 4
|
||||||
|
jmp .end
|
||||||
|
.size5:
|
||||||
|
mov eax, 5
|
||||||
|
jmp .end
|
||||||
|
.size6:
|
||||||
|
mov eax, 6
|
||||||
|
jmp .end
|
||||||
|
.size7:
|
||||||
|
mov eax, 7
|
||||||
|
jmp .end
|
||||||
|
|
||||||
|
;.default:
|
||||||
|
; mov eax, 1
|
||||||
|
.end:
|
||||||
|
mov byte[mysize], al ;mov dword[mysize], eax
|
||||||
|
pop eax
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
readScanKey:
|
||||||
|
;ïðîïóñêàåì ïåðåíîñû ñòðîê â íà÷àëå
|
||||||
|
cmp eax, edx ;åñëè ôàéë çàêîí÷èëñÿ, òî
|
||||||
|
ja .default ;íàñòðîéêè ïî óìîë÷àíèþ
|
||||||
|
cmp byte[eax], 10
|
||||||
|
je @f
|
||||||
|
cmp byte[eax], 0
|
||||||
|
je @f
|
||||||
|
cmp byte[eax], 13
|
||||||
|
je @f
|
||||||
|
|
||||||
|
push ecx ebx esi
|
||||||
|
mov ecx, 0 ;xor ecx, ecx
|
||||||
|
mov esi, keystr.data
|
||||||
|
.copy:
|
||||||
|
mov bl, byte[eax]
|
||||||
|
cmp bl, 0
|
||||||
|
je .copyEnd
|
||||||
|
cmp bl, 10
|
||||||
|
je .copyEnd
|
||||||
|
cmp bl, 13
|
||||||
|
je .copyEnd
|
||||||
|
cmp esi, keystr.size-1
|
||||||
|
jae .copyEnd
|
||||||
|
mov byte[esi], bl
|
||||||
|
inc esi
|
||||||
|
inc eax
|
||||||
|
inc ecx
|
||||||
|
jmp .copy
|
||||||
|
.copyEnd:
|
||||||
|
mov byte[esi], 0
|
||||||
|
mov dword[keystr.size], ecx
|
||||||
|
pop esi ebx ecx
|
||||||
|
|
||||||
|
jmp .end
|
||||||
|
@@:
|
||||||
|
inc eax
|
||||||
|
jmp readScanKey
|
||||||
|
.default:
|
||||||
|
mov byte[keyscan], 57
|
||||||
|
mov word[keystr.data], '57'
|
||||||
|
mov byte[keystr.data+2], 0
|
||||||
|
mov dword[keystr.size], 2
|
||||||
|
.end:
|
||||||
|
ret
|
||||||
|
|
||||||
|
readOptKey: ;1;3;4;5 - space or shift
|
||||||
|
;ïðîïóñêàåì ïåðåíîñû ñòðîê â íà÷àëå
|
||||||
|
cmp eax, edx ;åñëè ôàéë çàêîí÷èëñÿ, òî
|
||||||
|
ja .default ;íàñòðîéêè ïî óìîë÷àíèþ
|
||||||
|
cmp byte[eax], 10
|
||||||
|
je @f
|
||||||
|
cmp byte[eax], 0
|
||||||
|
je @f
|
||||||
|
cmp byte[eax], 13
|
||||||
|
je @f
|
||||||
|
;èíà÷å ÷èòàåì êëàâèøó è âûõîäèì
|
||||||
|
cmp dword[eax], 'Ctrl'
|
||||||
|
jne .notCtrl
|
||||||
|
mov byte[hkSymbol], 3
|
||||||
|
mov dword[hkSize], 4
|
||||||
|
jmp .end
|
||||||
|
.notCtrl:
|
||||||
|
cmp dword[eax], 'Shif'
|
||||||
|
jne .notShift
|
||||||
|
mov byte[hkSymbol], 2
|
||||||
|
mov dword[hkSize], 5
|
||||||
|
jmp .end
|
||||||
|
.notShift:
|
||||||
|
cmp dword[eax], 'Spac'
|
||||||
|
jne .notSpace
|
||||||
|
mov byte[hkSymbol], 32
|
||||||
|
mov dword[hkSize], 5
|
||||||
|
jmp .end
|
||||||
|
.notSpace:
|
||||||
|
cmp word[eax], 'Al'
|
||||||
|
jne .notAlt
|
||||||
|
mov byte[hkSymbol], 1
|
||||||
|
mov dword[hkSize], 3
|
||||||
|
jmp .end
|
||||||
|
.notAlt:
|
||||||
|
;óáåäèìñÿ, ÷òî òàì 1 ñèìâîë, à íå ñòðîêà
|
||||||
|
cmp byte[eax+1], 10
|
||||||
|
je .oneSymb
|
||||||
|
cmp byte[eax+1], 0
|
||||||
|
je .oneSymb
|
||||||
|
cmp byte[eax+1], 13
|
||||||
|
je .oneSymb
|
||||||
|
jmp .default
|
||||||
|
.oneSymb:
|
||||||
|
;ïðîâåðÿåì, ÷òî ñèìâîë ðàçðåø¸ííûé !!!
|
||||||
|
|
||||||
|
;äîáàâëÿåì ñèìâîë êàê åñòü
|
||||||
|
push ebx
|
||||||
|
;xor ebx, ebx
|
||||||
|
mov bl, byte[eax]
|
||||||
|
mov byte[hkSymbol], bl
|
||||||
|
mov dword[hkSize], 1
|
||||||
|
pop ebx
|
||||||
|
|
||||||
|
jmp .end
|
||||||
|
@@:
|
||||||
|
inc eax
|
||||||
|
jmp readOptKey
|
||||||
|
|
||||||
|
.default:
|
||||||
|
mov byte[hkSymbol], 32
|
||||||
|
mov dword[hkSize], 5
|
||||||
|
.end:
|
||||||
|
mov byte[hkSymbol+1], 0
|
||||||
|
ret
|
||||||
|
|
||||||
|
;ïðîõîäèì äî êîíöà òåêóùåé ñòðîêè
|
||||||
|
gotoEndString:
|
||||||
|
cmp eax, edx ;åñëè ôàéë çàêîí÷èëñÿ, òî
|
||||||
|
ja @f ;âûõîäèì
|
||||||
|
cmp byte[eax], 10
|
||||||
|
je @f
|
||||||
|
cmp byte[eax], 0
|
||||||
|
je @f
|
||||||
|
cmp byte[eax], 13
|
||||||
|
je @f
|
||||||
|
;èíà÷å ïåðåõîäèì íà ñëåäóþùèé ñèìâîë
|
||||||
|
inc eax
|
||||||
|
jmp gotoEndString
|
||||||
|
@@:
|
||||||
|
ret
|
||||||
|
|
||||||
|
readOptRadius:
|
||||||
|
;ïðîïóñêàåì ïåðåíîñû ñòðîê â íà÷àëå
|
||||||
|
cmp eax, edx ;åñëè ôàéë çàêîí÷èëñÿ, òî
|
||||||
|
ja .default ;íàñòðîéêè ïî óìîë÷àíèþ
|
||||||
|
cmp byte[eax], 10
|
||||||
|
je @f
|
||||||
|
cmp byte[eax], 0
|
||||||
|
je @f
|
||||||
|
cmp byte[eax], 13
|
||||||
|
je @f
|
||||||
|
|
||||||
|
;èíà÷å ñ÷èòûâàåì çíà÷åíèå
|
||||||
|
push ebx ecx
|
||||||
|
xor ecx, ecx
|
||||||
|
.readValue:
|
||||||
|
mov bl, byte[eax]
|
||||||
|
mov byte[radiusBuffer.data+ecx], bl
|
||||||
|
inc ecx
|
||||||
|
inc eax
|
||||||
|
cmp eax, edx ;åñëè ôàéë çàêîí÷èëñÿ, òî âûõîä
|
||||||
|
ja .readEnd
|
||||||
|
cmp byte[eax], 10
|
||||||
|
je .readEnd
|
||||||
|
cmp byte[eax], 0
|
||||||
|
je .readEnd
|
||||||
|
cmp byte[eax], 13
|
||||||
|
je .readEnd
|
||||||
|
cmp ecx, 6
|
||||||
|
jae .readEnd
|
||||||
|
jmp .readValue
|
||||||
|
.readEnd:
|
||||||
|
mov byte[radiusBuffer.data+ecx], 0
|
||||||
|
mov dword[radiusBuffer.size], ecx
|
||||||
|
pop ecx ebx
|
||||||
|
|
||||||
|
jmp .end
|
||||||
|
@@:
|
||||||
|
inc eax
|
||||||
|
jmp readOptRadius
|
||||||
|
.default:
|
||||||
|
mov byte[radiusBuffer.data], '0'
|
||||||
|
mov byte[radiusBuffer.data+1], 0
|
||||||
|
mov dword[radiusBuffer.size], 1
|
||||||
|
.end:
|
||||||
|
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
readOptSize:
|
||||||
|
;ïðîïóñêàåì ïåðåíîñû ñòðîê â íà÷àëå
|
||||||
|
cmp eax, edx ;åñëè ôàéë çàêîí÷èëñÿ, òî
|
||||||
|
ja .default ;íàñòðîéêè ïî óìîë÷àíèþ
|
||||||
|
cmp byte[eax], 10
|
||||||
|
je @f
|
||||||
|
cmp byte[eax], 0
|
||||||
|
je @f
|
||||||
|
cmp byte[eax], 13
|
||||||
|
je @f
|
||||||
|
|
||||||
|
;ïðîâåðÿåì, ÷òî ýòî äîïóñòèìîå çíà÷åíèå: 1-7, a, s
|
||||||
|
cmp byte[eax], 'a'
|
||||||
|
je .setValue
|
||||||
|
cmp byte[eax], 's'
|
||||||
|
je .setValue
|
||||||
|
cmp byte[eax], '0'
|
||||||
|
je .setValue
|
||||||
|
cmp byte[eax], '1'
|
||||||
|
je .setValue
|
||||||
|
cmp byte[eax], '2'
|
||||||
|
je .setValue
|
||||||
|
cmp byte[eax], '3'
|
||||||
|
je .setValue
|
||||||
|
cmp byte[eax], '4'
|
||||||
|
je .setValue
|
||||||
|
cmp byte[eax], '5'
|
||||||
|
je .setValue
|
||||||
|
cmp byte[eax], '6'
|
||||||
|
je .setValue
|
||||||
|
cmp byte[eax], '7'
|
||||||
|
je .setValue
|
||||||
|
|
||||||
|
jmp .default ;èíà÷å ñòàâèì çíà÷åíèå ïî óìîë÷àíèþ
|
||||||
|
|
||||||
|
.setValue:
|
||||||
|
push ebx
|
||||||
|
mov bl, byte[eax]
|
||||||
|
mov byte[sizeStyle], bl
|
||||||
|
pop ebx
|
||||||
|
|
||||||
|
jmp .end
|
||||||
|
@@:
|
||||||
|
inc eax
|
||||||
|
jmp readOptSize
|
||||||
|
.default:
|
||||||
|
mov byte[sizeStyle], 's' ;ñèñòåìíûé
|
||||||
|
.end:
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
updateParams: ;max, size, pos
|
updateParams: ;max, size, pos
|
||||||
push eax
|
push eax
|
||||||
mov eax, dword[dataBuffer.size1]
|
mov eax, dword[dataBuffer.size1]
|
||||||
@ -565,6 +1015,10 @@ updateParams: ;max, size, pos
|
|||||||
mov eax, dword[dataBuffer.size4]
|
mov eax, dword[dataBuffer.size4]
|
||||||
mov dword[editRD.size], eax
|
mov dword[editRD.size], eax
|
||||||
mov dword[editRD.pos], eax
|
mov dword[editRD.pos], eax
|
||||||
|
|
||||||
|
mov eax, dword[radiusBuffer.size]
|
||||||
|
mov dword[editRadius.size], eax
|
||||||
|
mov dword[editRadius.pos], eax
|
||||||
pop eax
|
pop eax
|
||||||
ret
|
ret
|
||||||
|
|
||||||
@ -639,7 +1093,7 @@ copyKill:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
WindowsWidth = 450
|
WindowsWidth = 450
|
||||||
WindowsHeight = 195
|
WindowsHeight = 195 + 35 - 5
|
||||||
coord: ;êîîðäèíàòû îêíà ïðèëîæåíèÿ
|
coord: ;êîîðäèíàòû îêíà ïðèëîæåíèÿ
|
||||||
.y dw 0
|
.y dw 0
|
||||||
.x dw 0
|
.x dw 0
|
||||||
@ -697,13 +1151,14 @@ draw_window:
|
|||||||
invoke edit_box_draw, editRD
|
invoke edit_box_draw, editRD
|
||||||
|
|
||||||
;ðèñóåì êíîïêó
|
;ðèñóåì êíîïêó
|
||||||
|
buttonAppleY = WindowsHeight-35 ;160
|
||||||
mov ebx, (WindowsWidth-80-Otstup)*65536 + 80 ;êîîðäèíàòà X, øèðèíà êíîïêè
|
mov ebx, (WindowsWidth-80-Otstup)*65536 + 80 ;êîîðäèíàòà X, øèðèíà êíîïêè
|
||||||
mov ecx, 160*65536 + 20 ;координата Y, высота кнопки
|
mov ecx, buttonAppleY*65536 + 20 ;êîîðäèíàòà Y, âûñîòà êíîïêè
|
||||||
mov edx, 0x00000002 ;2 ;íîìåð êíîïêè
|
mov edx, 0x00000002 ;2 ;íîìåð êíîïêè
|
||||||
mov esi, 0x00AABBCC ;öâåò êíîïêè
|
mov esi, 0x00AABBCC ;öâåò êíîïêè
|
||||||
mcall 8
|
mcall 8
|
||||||
;ðèñóåì òåêñò êíîïêè
|
;ðèñóåì òåêñò êíîïêè
|
||||||
mov ebx, (WindowsWidth-80-Otstup+25-buttonTextXoffset) * 65536 + 166 ;координаты текста (x, y)
|
mov ebx, (WindowsWidth-80-Otstup+25-buttonTextXoffset) * 65536 + (buttonAppleY+6) ;êîîðäèíàòû òåêñòà (x, y)
|
||||||
mov ecx, 0xFFFFFF ;áåëûé öâåò òåêñòà
|
mov ecx, 0xFFFFFF ;áåëûé öâåò òåêñòà
|
||||||
mov edx, buttonText
|
mov edx, buttonText
|
||||||
mov esi, buttonTextSize ;ðàçìåð òåêñòà â ñèìâîëàõ
|
mov esi, buttonTextSize ;ðàçìåð òåêñòà â ñèìâîëàõ
|
||||||
@ -761,7 +1216,8 @@ draw_window:
|
|||||||
buttonModeX = 30 ;433
|
buttonModeX = 30 ;433
|
||||||
buttonModeY = 160 ;50
|
buttonModeY = 160 ;50
|
||||||
buttonModeWidth = 221
|
buttonModeWidth = 221
|
||||||
buttonModeHeight = 20
|
buttonModeHeight = 14 ;20
|
||||||
|
buttonModeTextYoffset = 3;6
|
||||||
buttonModeTextXoffset = 5
|
buttonModeTextXoffset = 5
|
||||||
mov ebx, buttonModeX*65536 + buttonModeWidth ;X + Width
|
mov ebx, buttonModeX*65536 + buttonModeWidth ;X + Width
|
||||||
mov ecx, buttonModeY*65536 + buttonModeHeight ;Y + Height
|
mov ecx, buttonModeY*65536 + buttonModeHeight ;Y + Height
|
||||||
@ -773,21 +1229,73 @@ draw_window:
|
|||||||
mov edx, 0xAABBCC
|
mov edx, 0xAABBCC
|
||||||
mcall 13
|
mcall 13
|
||||||
;draw text for button Mode
|
;draw text for button Mode
|
||||||
mov ebx, (buttonModeX+buttonModeTextXoffset) * 65536 + (buttonModeY+6) ;(x, y)
|
mov ebx, (buttonModeX+buttonModeTextXoffset) * 65536 + (buttonModeY+buttonModeTextYoffset) ;(x, y)
|
||||||
mov ecx, 0x000000
|
mov ecx, 0x000000
|
||||||
call setTextModeMenu
|
call setTextModeMenu
|
||||||
mov esi, valueModeMenuSize
|
mov esi, valueModeMenuSize
|
||||||
mcall 4
|
mcall 4
|
||||||
mov ebx, (buttonModeX+buttonModeWidth-12) * 65536 + (buttonModeY+6)
|
mov ebx, (buttonModeX+buttonModeWidth-12) * 65536 + (buttonModeY+buttonModeTextYoffset)
|
||||||
mov ecx, 0x80FFFFFF
|
mov ecx, 0x80FFFFFF
|
||||||
mov edx, symbolDownArrow
|
mov edx, symbolDownArrow
|
||||||
mcall 4
|
mcall 4
|
||||||
|
|
||||||
|
;êíîïêà âûáîðà ãîðÿ÷åé êëàâèøè
|
||||||
|
buttonHotKeyX = 280-10
|
||||||
|
buttonHotKeyWidth = 90
|
||||||
|
mov edx, 0x80000009 ;óäàëÿåì
|
||||||
|
mcall 8
|
||||||
|
cmp byte[mode], 49 ;ðèñóåì âûáîð êëàâèøè, òîëüêî åñëè mode > 1
|
||||||
|
jbe @f
|
||||||
|
;ðèñóåì íîâóþ
|
||||||
|
push eax ebx ecx edx esi
|
||||||
|
mov ebx, buttonHotKeyX*65536 + buttonHotKeyWidth ;X + Width
|
||||||
|
mov ecx, buttonModeY*65536 + buttonModeHeight ;Y + Height
|
||||||
|
mov edx, 0x00000009 ;button id
|
||||||
|
mov esi, 0x00FFFFFF ;color button
|
||||||
|
mcall 8
|
||||||
|
pop esi edx ecx ebx eax
|
||||||
|
;òåêñò ïîäñêàçêè äëÿ ãîðÿ÷åé êëàâèøè
|
||||||
|
mov ebx, (buttonHotKeyX+buttonModeTextXoffset) * 65536 + (buttonModeY+buttonModeTextYoffset) ;(x, y)
|
||||||
|
mov ecx, 0x80224466
|
||||||
|
call setTextForHotKey
|
||||||
|
mov esi, valueModeMenuSize
|
||||||
|
mcall 4
|
||||||
|
;çàãîëîâîê
|
||||||
|
push eax ebx ecx edx edi esi
|
||||||
|
mov ebx, buttonHotKeyX * 65536 + (buttonModeY-11)
|
||||||
|
mov ecx, 0x80224466
|
||||||
|
mov edx, hkCaption
|
||||||
|
mov esi, 3
|
||||||
|
mcall 4
|
||||||
|
pop esi edi edx ecx ebx eax
|
||||||
|
@@:
|
||||||
|
|
||||||
|
;îòîáðàæàåì íàñòðîéêó ðàäèóñà äåéñòâèÿ æåñòà, òîëüêî åñëè âûáðàí ðåæèì 3
|
||||||
|
cmp byte[mode], 51
|
||||||
|
jne @f
|
||||||
|
;çàãîëîâîê
|
||||||
|
push eax ebx ecx edx edi esi
|
||||||
|
mov ebx, (buttonHotKeyX + buttonHotKeyWidth + 20) * 65536 + (buttonModeY-11)
|
||||||
|
mov ecx, 0x80224466
|
||||||
|
mov edx, radiusCaption
|
||||||
|
mov esi, 3
|
||||||
|
mcall 4
|
||||||
|
pop esi edi edx ecx ebx eax
|
||||||
|
invoke edit_box_draw, editRadius
|
||||||
|
@@:
|
||||||
|
|
||||||
call draw_super_text
|
call draw_super_text
|
||||||
|
|
||||||
LineLength = 62
|
LineLength = 62
|
||||||
mov ebx, 40 * 65536 + 36 ; draw info text with function 4 (x, y)
|
mov ebx, 40 * 65536 + 36 ; draw info text with function 4 (x, y)
|
||||||
|
|
||||||
|
;xor ecx, ecx
|
||||||
|
;mov cl, 1 ;byte[mysize]
|
||||||
|
;shl ecx, 24
|
||||||
|
;add ecx, 0x224466
|
||||||
|
;or ecx, 0x00224466 ;80224466
|
||||||
mov ecx, 0x224466
|
mov ecx, 0x224466
|
||||||
|
|
||||||
mov edx, text
|
mov edx, text
|
||||||
mov esi, LineLength
|
mov esi, LineLength
|
||||||
mov eax, 4
|
mov eax, 4
|
||||||
@ -805,6 +1313,79 @@ draw_window:
|
|||||||
|
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
hkSymbol: db 0, 0
|
||||||
|
|
||||||
|
setTextForHotKey:
|
||||||
|
push eax
|
||||||
|
mov al, byte[hkSymbol]
|
||||||
|
cmp al, 0
|
||||||
|
jne @f
|
||||||
|
mov edx, hkHint
|
||||||
|
mov dword[hkSize], 5 ;çíà÷åíèå ïî óìîë÷àíèþ SPACE ;shift
|
||||||
|
jmp setTextForHotKey.end
|
||||||
|
@@:
|
||||||
|
cmp al, 1
|
||||||
|
jne @f
|
||||||
|
mov edx, hkAlt
|
||||||
|
mov dword[hkSize], 3
|
||||||
|
jmp setTextForHotKey.end
|
||||||
|
@@:
|
||||||
|
cmp al, 2
|
||||||
|
jne @f
|
||||||
|
mov edx, hkShift
|
||||||
|
mov dword[hkSize], 5
|
||||||
|
jmp setTextForHotKey.end
|
||||||
|
@@:
|
||||||
|
cmp al, 3
|
||||||
|
jne @f
|
||||||
|
mov edx, hkCtrl
|
||||||
|
mov dword[hkSize], 4
|
||||||
|
jmp setTextForHotKey.end
|
||||||
|
@@:
|
||||||
|
cmp al, 32
|
||||||
|
jne @f
|
||||||
|
mov edx, hkSpace
|
||||||
|
mov dword[hkSize], 5
|
||||||
|
jmp setTextForHotKey.end
|
||||||
|
@@:
|
||||||
|
cmp al, 96 ;'`'
|
||||||
|
je setTextForHotKey.symb
|
||||||
|
cmp al, 126 ;'~'
|
||||||
|
je setTextForHotKey.symb
|
||||||
|
cmp al, 48 ;'0'
|
||||||
|
jb @f
|
||||||
|
cmp al, 57 ;'9'
|
||||||
|
ja @f
|
||||||
|
.symb:
|
||||||
|
mov edx, hkSymbol
|
||||||
|
mov dword[hkSize], 1
|
||||||
|
jmp setTextForHotKey.end
|
||||||
|
@@:
|
||||||
|
cmp al, 97 ;'a'
|
||||||
|
jb @f
|
||||||
|
cmp al, 122 ;'z'
|
||||||
|
ja @f
|
||||||
|
;jmp setTextForHotKey.symb
|
||||||
|
mov edx, hkSymbol
|
||||||
|
mov dword[hkSize], 1
|
||||||
|
jmp setTextForHotKey.end
|
||||||
|
@@:
|
||||||
|
cmp al, 65 ;'A'
|
||||||
|
jb @f
|
||||||
|
cmp al, 90 ;'Z'
|
||||||
|
ja @f
|
||||||
|
;jmp setTextForHotKey.symb
|
||||||
|
mov edx, hkSymbol
|
||||||
|
mov dword[hkSize], 1
|
||||||
|
jmp setTextForHotKey.end
|
||||||
|
@@:
|
||||||
|
mov word[hkSymbol], 0 ;åñëè æå ïîïàëî ÷òî-òî íåèçâåñòíîå, òî ñîòð¸ì åãî
|
||||||
|
mov edx, hkHint
|
||||||
|
mov dword[hkSize], 5 ;shift or space - çíà÷åíèå ïî óìîë÷àíèþ
|
||||||
|
.end:
|
||||||
|
pop eax
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
setTextModeMenu:
|
setTextModeMenu:
|
||||||
cmp byte[mode], 48
|
cmp byte[mode], 48
|
||||||
@ -831,6 +1412,49 @@ setTextModeMenu:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
saveKey:
|
||||||
|
cmp word[hkSymbol], 0
|
||||||
|
je .default
|
||||||
|
cmp byte[hkSymbol], 1
|
||||||
|
je .alt
|
||||||
|
cmp byte[hkSymbol], 2
|
||||||
|
je .shift
|
||||||
|
cmp byte[hkSymbol], 3
|
||||||
|
je .ctrl
|
||||||
|
cmp byte[hkSymbol], 32
|
||||||
|
je .space
|
||||||
|
.other:
|
||||||
|
mov esi, hkSymbol
|
||||||
|
mov byte[esi+1], 0
|
||||||
|
mov dword[hkSize], 1
|
||||||
|
jmp .end
|
||||||
|
.space:
|
||||||
|
mov esi, hkSpace
|
||||||
|
mov dword[hkSize], 5
|
||||||
|
jmp .end
|
||||||
|
.ctrl:
|
||||||
|
mov esi, hkCtrl
|
||||||
|
mov dword[hkSize], 4
|
||||||
|
jmp .end
|
||||||
|
.alt:
|
||||||
|
mov esi, hkAlt
|
||||||
|
mov dword[hkSize], 3
|
||||||
|
jmp .end
|
||||||
|
.default:
|
||||||
|
.shift:
|
||||||
|
mov esi, hkShift
|
||||||
|
mov dword[hkSize], 5
|
||||||
|
.end:
|
||||||
|
mov ebx, hkSize ;óêàçàòåëü íà dword[hkSize]
|
||||||
|
call copyParam
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
align 16
|
align 16
|
||||||
@IMPORT:
|
@IMPORT:
|
||||||
|
|
||||||
@ -883,6 +1507,10 @@ head_f_i:
|
|||||||
err_message_found_lib1 db '<27>¥ ©¤¥ ¡¨¡«¨®â¥ª ',39,'kmenu.obj',39,0
|
err_message_found_lib1 db '<27>¥ ©¤¥ ¡¨¡«¨®â¥ª ',39,'kmenu.obj',39,0
|
||||||
err_message_import1 db 'Žè¨¡ª ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'kmenu',39,0
|
err_message_import1 db 'Žè¨¡ª ¯à¨ ¨¬¯®à⥠¡¨¡«¨®â¥ª¨ ',39,'kmenu',39,0
|
||||||
|
|
||||||
|
hkCaption: db 'Š« ¢¨è :',0
|
||||||
|
;hkHint: db '<27> ¦¬¨â¥ «î¡ãî ª« ¢¨èã',0
|
||||||
|
radiusCaption: db '<27> ¤¨ãá:',0
|
||||||
|
|
||||||
else ;èíà÷å àíãëèéñêèé òåêñò
|
else ;èíà÷å àíãëèéñêèé òåêñò
|
||||||
|
|
||||||
text db "This is a Hot Angles Configurator. "
|
text db "This is a Hot Angles Configurator. "
|
||||||
@ -917,13 +1545,29 @@ head_f_i:
|
|||||||
err_message_found_lib1 db 'Could not find library ',39,'kmenu.obj',39,0
|
err_message_found_lib1 db 'Could not find library ',39,'kmenu.obj',39,0
|
||||||
err_message_import1 db 'Error importing library ',39,'kmenu',39,0
|
err_message_import1 db 'Error importing library ',39,'kmenu',39,0
|
||||||
|
|
||||||
|
hkCaption: db 'Key:',0
|
||||||
|
;hkHint: db 'press any key',0
|
||||||
|
radiusCaption: db 'Radius:',0
|
||||||
|
|
||||||
end if
|
end if
|
||||||
|
|
||||||
|
hkAlt: db 'Alt',0
|
||||||
|
hkShift: db 'Shift',0
|
||||||
|
hkCtrl: db 'Ctrl',0
|
||||||
|
hkSpace: db 'Space',0
|
||||||
|
hkHint: db '?',0
|
||||||
|
hkSize: rd 1 ;ðàçìåð ñòðîêè ñ èìåíåì êëàâèøè
|
||||||
|
|
||||||
draw_super_text:
|
draw_super_text:
|
||||||
push eax ebx ecx edx edi esi
|
push eax ebx ecx edx edi esi
|
||||||
|
|
||||||
|
mov ecx, 0
|
||||||
|
mov ch, byte[mysize]
|
||||||
|
shl ecx, 16
|
||||||
|
add ecx, 0x224466
|
||||||
|
|
||||||
mov ebx, Otstup * 65536 + 74 ; draw info text with function 4 (x, y)
|
mov ebx, Otstup * 65536 + 74 ; draw info text with function 4 (x, y)
|
||||||
mov ecx, 0x224466
|
;mov ecx, 0x224466
|
||||||
mov eax, superText.lu
|
mov eax, superText.lu
|
||||||
mov edx, eax
|
mov edx, eax
|
||||||
mov esi, superTextSize
|
mov esi, superTextSize
|
||||||
@ -950,6 +1594,12 @@ draw_super_text:
|
|||||||
mov esi, 3
|
mov esi, 3
|
||||||
mcall 4
|
mcall 4
|
||||||
|
|
||||||
|
; mov ebx, buttonHotKeyX * 65536 + (buttonModeY-11)
|
||||||
|
; or ecx, 0x80000000
|
||||||
|
; mov edx, hkCaption
|
||||||
|
; mov esi, 3
|
||||||
|
; mcall 4
|
||||||
|
|
||||||
pop esi edi edx ecx ebx eax
|
pop esi edi edx ecx ebx eax
|
||||||
ret
|
ret
|
||||||
|
|
||||||
@ -1027,6 +1677,72 @@ copyPath:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
IntToStr: ;in esi - ñòðîêà; eñx - ÷èñëî
|
||||||
|
push eax ecx edx esi
|
||||||
|
cmp ecx, 0
|
||||||
|
jne @f
|
||||||
|
mov byte[esi], 48 ; '0'
|
||||||
|
inc esi
|
||||||
|
jmp .end
|
||||||
|
@@:
|
||||||
|
mov eax, ecx
|
||||||
|
mov ecx, 10
|
||||||
|
.next:
|
||||||
|
mov edx, 0
|
||||||
|
div ecx
|
||||||
|
add edx, 48
|
||||||
|
|
||||||
|
mov byte[esi], dl
|
||||||
|
|
||||||
|
inc esi
|
||||||
|
cmp eax, 0
|
||||||
|
je .end
|
||||||
|
jmp .next
|
||||||
|
.end:
|
||||||
|
mov byte[esi], 0 ;êëàä¸ì çàâåðøàþùèé íîëü
|
||||||
|
pop esi edx ecx eax
|
||||||
|
call reverseString ;äåëàåì ðåâåðñ ñòðîêè
|
||||||
|
ret
|
||||||
|
|
||||||
|
;âõîä: esi - óêàçàòåëü íà ñòðîêó
|
||||||
|
reverseString:
|
||||||
|
push eax esi edi
|
||||||
|
|
||||||
|
mov al, byte[esi] ;åñëè ñòðîêà ïóñòàÿ òî âûõîäèì ðåâåðñ äåëàòü íå íàäî
|
||||||
|
cmp al, 0
|
||||||
|
je reverseString.end
|
||||||
|
|
||||||
|
mov edi, esi ;èíà÷å íàéä¸ì ïîçèöèþ ïîñëåäíåãî ñèìâîëà ñòðîêè è ïîëîæèì å¸ â edi
|
||||||
|
.go_last_symbol:
|
||||||
|
mov al, byte[edi+1]
|
||||||
|
cmp al, 0
|
||||||
|
je @f
|
||||||
|
|
||||||
|
inc edi
|
||||||
|
jmp reverseString.go_last_symbol
|
||||||
|
@@:
|
||||||
|
push ebx
|
||||||
|
.rev:
|
||||||
|
cmp esi, edi
|
||||||
|
jae @f
|
||||||
|
|
||||||
|
;ìåíÿåì ìåñòàìè ñèìâîëû â öèêëå
|
||||||
|
mov al, byte[edi]
|
||||||
|
mov bl, byte[esi]
|
||||||
|
mov byte[edi], bl
|
||||||
|
mov byte[esi], al
|
||||||
|
|
||||||
|
inc esi
|
||||||
|
dec edi
|
||||||
|
jmp reverseString.rev
|
||||||
|
@@:
|
||||||
|
pop ebx
|
||||||
|
.end:
|
||||||
|
pop edi esi eax
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
but_open_dlg:
|
but_open_dlg:
|
||||||
pushad
|
pushad
|
||||||
@ -1117,6 +1833,7 @@ editLU edit_box 180-buttonW,Otstup+buttonW,85, 0xffffff, 0x6a9480, 0, 0xAABBCC
|
|||||||
editLD edit_box 180-buttonW,Otstup+buttonW,120, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, edMaxSize, dataBuffer.2, mouse_dd, 0, edMax, edMax
|
editLD edit_box 180-buttonW,Otstup+buttonW,120, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, edMaxSize, dataBuffer.2, mouse_dd, 0, edMax, edMax
|
||||||
editRU edit_box 180-buttonW,240,85, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, edMaxSize, dataBuffer.3, mouse_dd, 0, edMax, edMax
|
editRU edit_box 180-buttonW,240,85, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, edMaxSize, dataBuffer.3, mouse_dd, 0, edMax, edMax
|
||||||
editRD edit_box 180-buttonW,240,120, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, edMaxSize, dataBuffer.4, mouse_dd, 0, edMax, edMax
|
editRD edit_box 180-buttonW,240,120, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, edMaxSize, dataBuffer.4, mouse_dd, 0, edMax, edMax
|
||||||
|
editRadius edit_box 40,(buttonHotKeyX + buttonHotKeyWidth + 20),buttonModeY, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, 4, radiusBuffer.data, mouse_dd, ed_figure_only, edMax, edMax
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
import_libkmenu:
|
import_libkmenu:
|
||||||
@ -1142,8 +1859,16 @@ dd 0,0
|
|||||||
akmenuitem_delete db 'kmenuitem_delete',0
|
akmenuitem_delete db 'kmenuitem_delete',0
|
||||||
akmenuitem_draw db 'kmenuitem_draw',0
|
akmenuitem_draw db 'kmenuitem_draw',0
|
||||||
|
|
||||||
mouse_dd dd ?
|
;mouse_dd dd ?
|
||||||
sc system_colors
|
sc system_colors
|
||||||
|
mouse_dd rd 1
|
||||||
|
|
||||||
|
sizeStyle: rb 1 ;ðàçìåð òåêñòà è îñòàëüíûõ ýëåìåíòîâ îêíà
|
||||||
|
mysize: rb 1 ;rd 1
|
||||||
|
radiusBuffer: ;áóôåð äëÿ ïîëÿ ðàäèóñà æåñòà
|
||||||
|
.data: rb 6
|
||||||
|
.size: rd 1
|
||||||
|
radiusBufferEnd:
|
||||||
|
|
||||||
button_press rd 0 ;for kmenu
|
button_press rd 0 ;for kmenu
|
||||||
|
|
||||||
@ -1156,6 +1881,10 @@ rb 1024
|
|||||||
procinfo process_information
|
procinfo process_information
|
||||||
pi rb 1024
|
pi rb 1024
|
||||||
|
|
||||||
|
keyscan: rb 1
|
||||||
|
keystr:
|
||||||
|
.data: rb 4 ;ñòðîêà ñî çíà÷åíèåì ñêàíêîäà àêòèâàöèîííîé êëàâèøè
|
||||||
|
.size: rd 1 ;ðàçìåð ñîäåðæèìîãî ñòðîêè áåç ïîñëåäíåãî íóëÿ
|
||||||
|
|
||||||
dataBuffer:
|
dataBuffer:
|
||||||
.1: rb 512
|
.1: rb 512
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
; Hot Angles ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
; Hot Angles ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
; Compile with FASM
|
; Compile with FASM
|
||||||
; Version 0.3.6: Oct 9, 2018
|
; Version 0.3.7: Oct 14, 2018
|
||||||
|
|
||||||
; Copyright (c) 2018, Efremenkov Sergey aka TheOnlyMirage
|
; Copyright (c) 2018, Efremenkov Sergey aka TheOnlyMirage
|
||||||
; All rights reserved.
|
; All rights reserved.
|
||||||
@ -31,6 +31,7 @@ org 0x0 ;
|
|||||||
|
|
||||||
UNLOCKd = 0
|
UNLOCKd = 0
|
||||||
LOCKd = 1
|
LOCKd = 1
|
||||||
|
SUPERLOCKd = 2
|
||||||
|
|
||||||
; çàãîëîâîê
|
; çàãîëîâîê
|
||||||
db 'MENUET01' ;ìàãè÷åñêèé èäåíòèôèêàòîð
|
db 'MENUET01' ;ìàãè÷åñêèé èäåíòèôèêàòîð
|
||||||
@ -118,9 +119,11 @@ hotkey:
|
|||||||
cmp ah, byte[keyActivate] ;åñëè íàæàòà íàøà ãîðÿ÷àÿ êëàâèøà
|
cmp ah, byte[keyActivate] ;åñëè íàæàòà íàøà ãîðÿ÷àÿ êëàâèøà
|
||||||
jne @f
|
jne @f
|
||||||
|
|
||||||
;for mode 3 [
|
;проверки для mode 3
|
||||||
|
cmp byte[state], SUPERLOCKd
|
||||||
|
je hotkey.end
|
||||||
cmp byte[keyState], 1
|
cmp byte[keyState], 1
|
||||||
je hotkey.e
|
je hotkey.end
|
||||||
|
|
||||||
push eax ebx
|
push eax ebx
|
||||||
mcall 37, 0 ;çàïîìèíàåì òåêóùèå(íà÷àëüíûå) êîîðäèíàòû ìûøè
|
mcall 37, 0 ;çàïîìèíàåì òåêóùèå(íà÷àëüíûå) êîîðäèíàòû ìûøè
|
||||||
@ -132,9 +135,6 @@ hotkey:
|
|||||||
|
|
||||||
mov byte[keyState], 1
|
mov byte[keyState], 1
|
||||||
mov byte[state], UNLOCKd
|
mov byte[state], UNLOCKd
|
||||||
.e:
|
|
||||||
;]
|
|
||||||
;mov byte[state], UNLOCKd
|
|
||||||
jmp hotkey.end
|
jmp hotkey.end
|
||||||
@@:
|
@@:
|
||||||
push edx
|
push edx
|
||||||
@ -143,8 +143,7 @@ hotkey:
|
|||||||
add dl, 128
|
add dl, 128
|
||||||
cmp ah, dl ;åñëè îòïóùåíà íàøà ãîðÿ÷àÿ êëàâèøà
|
cmp ah, dl ;åñëè îòïóùåíà íàøà ãîðÿ÷àÿ êëàâèøà
|
||||||
jne @f ;hotkey.end
|
jne @f ;hotkey.end
|
||||||
;mov ecx, 0 ;ñòðîêè äëÿ îòëàäêè è òåñòà
|
|
||||||
;call run_command
|
|
||||||
mov byte[keyState], 0
|
mov byte[keyState], 0
|
||||||
mov byte[state], LOCKd
|
mov byte[state], LOCKd
|
||||||
@@:
|
@@:
|
||||||
@ -247,53 +246,56 @@ run_command:
|
|||||||
cmp byte[state], UNLOCKd
|
cmp byte[state], UNLOCKd
|
||||||
jne run_command.end
|
jne run_command.end
|
||||||
|
|
||||||
; cmp byte[mode], 2 ;åñëè ðåæèì âòîðîé
|
|
||||||
; jne @f
|
|
||||||
|
|
||||||
push eax ebx ecx
|
push eax ebx ecx
|
||||||
|
|
||||||
cmp ecx, 0
|
cmp ecx, 0
|
||||||
jne @f
|
jne @f
|
||||||
mov eax, dword[newData.lu]
|
mov eax, apps.path1 ;dword[newData.lu]
|
||||||
|
cmp byte[eax], 0 ;если по адресу пусто (или лежал символ '-'), то адрес 0
|
||||||
|
je .set0
|
||||||
mov dword[struct70.path_adr], eax
|
mov dword[struct70.path_adr], eax
|
||||||
|
mov eax, apps.param1
|
||||||
|
mov dword[struct70.param_adr], eax
|
||||||
jmp .end_set_path
|
jmp .end_set_path
|
||||||
@@:
|
@@:
|
||||||
cmp ecx, 1
|
cmp ecx, 1
|
||||||
jne @f
|
jne @f
|
||||||
mov eax, dword[newData.ld]
|
mov eax, apps.path2 ;dword[newData.ld]
|
||||||
|
cmp byte[eax], 0 ;если по адресу пусто (или лежал символ '-'), то адрес 0
|
||||||
|
je .set0
|
||||||
mov dword[struct70.path_adr], eax
|
mov dword[struct70.path_adr], eax
|
||||||
|
mov eax, apps.param2
|
||||||
|
mov dword[struct70.param_adr], eax
|
||||||
jmp .end_set_path
|
jmp .end_set_path
|
||||||
@@:
|
@@:
|
||||||
cmp ecx, 2
|
cmp ecx, 2
|
||||||
jne @f
|
jne @f
|
||||||
mov eax, dword[newData.ru]
|
mov eax, apps.path3 ;dword[newData.ru]
|
||||||
|
cmp byte[eax], 0 ;если по адресу пусто (или лежал символ '-'), то адрес 0
|
||||||
|
je .set0
|
||||||
mov dword[struct70.path_adr], eax
|
mov dword[struct70.path_adr], eax
|
||||||
|
mov eax, apps.param3
|
||||||
|
mov dword[struct70.param_adr], eax
|
||||||
jmp .end_set_path
|
jmp .end_set_path
|
||||||
@@:
|
@@:
|
||||||
cmp ecx, 3
|
cmp ecx, 3
|
||||||
jne .end_set_path
|
jne .set0 ;.end_set_path
|
||||||
mov eax, dword[newData.rd]
|
mov eax, apps.path4 ;dword[newData.rd]
|
||||||
|
cmp byte[eax], 0 ;если по адресу пусто (или лежал символ '-'), то адрес 0
|
||||||
|
je .set0
|
||||||
mov dword[struct70.path_adr], eax
|
mov dword[struct70.path_adr], eax
|
||||||
|
mov eax, apps.param4
|
||||||
|
mov dword[struct70.param_adr], eax
|
||||||
jmp .end_set_path
|
jmp .end_set_path
|
||||||
.end_set_path:
|
.set0:
|
||||||
|
;mov dword[struct70.path_adr], 0
|
||||||
;ïàðàìåòðû
|
;mov dword[struct70.param_adr], 0
|
||||||
;mov dword[struct.adr],
|
|
||||||
|
|
||||||
;åñëè àäðåñ 0, òî íè÷åãî íå äåëàòü
|
|
||||||
cmp dword[struct70.path_adr], 0
|
|
||||||
jne .next
|
|
||||||
;mov eax, testData.ld
|
|
||||||
;mov dword[struct70.path_adr], eax
|
|
||||||
jmp @f
|
jmp @f
|
||||||
.next:
|
.end_set_path:
|
||||||
;êîíåö êîäà äëÿ çàìåíû
|
|
||||||
|
|
||||||
mcall 70, struct70
|
mcall 70, struct70
|
||||||
@@:
|
@@:
|
||||||
mov byte[state], LOCKd
|
mov byte[state], LOCKd
|
||||||
;mov byte[keyState], 0
|
;mov byte[keyState], 0
|
||||||
|
|
||||||
pop ecx ebx eax
|
pop ecx ebx eax
|
||||||
.end:
|
.end:
|
||||||
ret
|
ret
|
||||||
@ -303,15 +305,106 @@ struct70: ;
|
|||||||
.mask dd 0
|
.mask dd 0
|
||||||
.param_adr dd 0 ; óêàçàòåëü íà ASCIIZ-ñòðîêó ñ ïàðàìåòðàìè
|
.param_adr dd 0 ; óêàçàòåëü íà ASCIIZ-ñòðîêó ñ ïàðàìåòðàìè
|
||||||
.other dd 0, 0
|
.other dd 0, 0
|
||||||
.path db 0 ; "/rd/1/TINYPAD",0 ; ïóòü
|
.path db 0
|
||||||
.path_adr dd 0 ;testData.lu
|
.path_adr dd 0 ; указатель на строку с путём
|
||||||
|
|
||||||
;èìÿ êîíôèãóðàöèîííîãî ôàéëà
|
;èìÿ êîíôèãóðàöèîííîãî ôàéëà
|
||||||
fileName: db 'SETTINGS/HOTANGLES.CFG', 0
|
fileName: db 'SETTINGS/HOTANGLES.CFG', 0
|
||||||
|
|
||||||
|
|
||||||
|
;проходим до конца текущей строки
|
||||||
|
gotoEndString:
|
||||||
|
cmp eax, edx ;если файл закончился, то
|
||||||
|
ja @f ;выходим
|
||||||
|
cmp byte[eax], 10
|
||||||
|
je @f
|
||||||
|
cmp byte[eax], 0
|
||||||
|
je @f
|
||||||
|
cmp byte[eax], 13
|
||||||
|
je @f
|
||||||
|
;иначе переходим на следующий символ
|
||||||
|
inc eax
|
||||||
|
jmp gotoEndString
|
||||||
|
@@:
|
||||||
|
ret
|
||||||
|
|
||||||
|
;пропускаем переносы в начале строки до первого адекватного символа
|
||||||
|
gotoStartString:
|
||||||
|
cmp eax, edx ;если файл закончился, то
|
||||||
|
ja @f ;выходим
|
||||||
|
cmp byte[eax], 10
|
||||||
|
je .next
|
||||||
|
cmp byte[eax], 0
|
||||||
|
je .next
|
||||||
|
cmp byte[eax], 13
|
||||||
|
je .next
|
||||||
|
jmp @f ;если это другой символ, то выходим
|
||||||
|
.next: ;переходим на следующий символ
|
||||||
|
inc eax
|
||||||
|
jmp gotoStartString
|
||||||
|
@@:
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
sep: db '|' ;символ разделитель строки пути + параметры запуска
|
||||||
|
readPath:
|
||||||
|
push ebx esi edi
|
||||||
|
mov bh, 0 ; 0 - знак того, что параметры ещё не встречались
|
||||||
|
mov byte[esi], 0 ;проинициализируем буферы-строки пустотой (на всякий случай)
|
||||||
|
mov byte[edi], 0
|
||||||
|
@@:
|
||||||
|
cmp eax, edx ;если файл закончился, то
|
||||||
|
ja @f ;выходим
|
||||||
|
mov bl, byte[eax]
|
||||||
|
;если очередной символ не конец строки
|
||||||
|
cmp bl, 10
|
||||||
|
je @f ;иначе выход
|
||||||
|
cmp bl, 0
|
||||||
|
je @f
|
||||||
|
cmp bl, 13
|
||||||
|
je @f
|
||||||
|
;и не начало параметров
|
||||||
|
cmp bl, byte[sep]
|
||||||
|
jne .read
|
||||||
|
;если sep уже встречали ранее, то
|
||||||
|
cmp bh, 0
|
||||||
|
jne .read ;просто продолжаем считывать параметры дальше (в них может быть что угодно)
|
||||||
|
;иначе кладём завершающий 0 и переходим к буферу с параметрами
|
||||||
|
mov byte[esi], 0
|
||||||
|
call trim ;ещё не забудем убрать лишние табуляции и пробелы на конце нашей строки
|
||||||
|
mov esi, edi
|
||||||
|
mov bh, 1
|
||||||
|
inc eax
|
||||||
|
jmp @b
|
||||||
|
.read: ;то записываем символ в наш буфер и переходим на следующий символ
|
||||||
|
mov byte[esi], bl
|
||||||
|
inc esi
|
||||||
|
inc eax
|
||||||
|
jmp @b
|
||||||
|
@@:
|
||||||
|
mov byte[esi], 0 ;кладём завершающий ноль
|
||||||
|
pop edi esi ebx
|
||||||
|
ret
|
||||||
|
|
||||||
|
trim: ;esi - последний нулевой символ строки
|
||||||
|
;push esi
|
||||||
|
mov byte[esi], 0
|
||||||
|
dec esi
|
||||||
|
cmp byte[esi], 8
|
||||||
|
je trim
|
||||||
|
cmp byte[esi], 32
|
||||||
|
je trim
|
||||||
|
inc esi
|
||||||
|
;pop esi
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
cfgFileAdr: dd 0 ;адрес конфигурационного файла в памяти
|
||||||
|
|
||||||
loadConfig:
|
loadConfig:
|
||||||
push eax ebx ecx edx
|
push eax ebx ecx edx
|
||||||
mcall 68, 27, fileName ;çàãðóæàåì êîíôèãóðàöèîííûé ôàéë â ÎÇÓ
|
mcall 68, 27, fileName ;çàãðóæàåì êîíôèãóðàöèîííûé ôàéë â ÎÇÓ
|
||||||
|
mov dword[cfgFileAdr], eax
|
||||||
cmp eax, 0
|
cmp eax, 0
|
||||||
je loadConfig.exit ;åñëè ôàéëà êîíôèãóðàöèè íåò, òî çàâåðøàåì ðàáîòó ïðèëîæåíèÿ
|
je loadConfig.exit ;åñëè ôàéëà êîíôèãóðàöèè íåò, òî çàâåðøàåì ðàáîòó ïðèëîæåíèÿ
|
||||||
;èíà÷å äàííûå çàãðóæåíû â ÎÇÓ, ðàçìåð â edx
|
;èíà÷å äàííûå çàãðóæåíû â ÎÇÓ, ðàçìåð â edx
|
||||||
@ -321,12 +414,22 @@ loadConfig:
|
|||||||
add edx, eax ;èíà÷å êëàä¸ì â edx - àäðåñ êîíöà ôàéëà
|
add edx, eax ;èíà÷å êëàä¸ì â edx - àäðåñ êîíöà ôàéëà
|
||||||
|
|
||||||
mov byte[mode], 0
|
mov byte[mode], 0
|
||||||
cmp byte[eax], '0' ;121 ;'y' ;åñëè ïàðàìåòð àêòèâíîñòè ïðèëîæåíèÿ èìååò ñòàòóñ: íå àêòèâíî
|
cmp byte[eax], '0' ;если параметр активности приложения имеет статус: не активно
|
||||||
je loadConfig.exit ;òî çàâåðøàåì ðàáîòó ïðèëîæåíèÿ
|
je loadConfig.exit ;òî çàâåðøàåì ðàáîòó ïðèëîæåíèÿ
|
||||||
cmp byte[eax], 110 ;'n'
|
cmp byte[eax], 110 ;'n'
|
||||||
je loadConfig.exit
|
je loadConfig.exit
|
||||||
|
|
||||||
;èíà÷å âûñòàâëÿåì ðåæèì
|
;èíà÷å âûñòàâëÿåì ðåæèì
|
||||||
|
cmp byte[eax], 121 ;'y' ;классический режим
|
||||||
|
jne @f
|
||||||
|
mov byte[mode], 1
|
||||||
|
jmp loadConfig.modeEnd
|
||||||
|
@@:
|
||||||
|
cmp byte[eax], '1' ;классический режим
|
||||||
|
jne @f
|
||||||
|
mov byte[mode], 1
|
||||||
|
jmp loadConfig.modeEnd
|
||||||
|
@@:
|
||||||
cmp byte[eax], '2' ;ðåæèì àêòèâàöèè ïî ãîðÿ÷åé êëàâèøå
|
cmp byte[eax], '2' ;ðåæèì àêòèâàöèè ïî ãîðÿ÷åé êëàâèøå
|
||||||
jne @f
|
jne @f
|
||||||
mov byte[mode], 2
|
mov byte[mode], 2
|
||||||
@ -337,72 +440,290 @@ loadConfig:
|
|||||||
mov byte[mode], 3
|
mov byte[mode], 3
|
||||||
jmp loadConfig.modeEnd
|
jmp loadConfig.modeEnd
|
||||||
@@:
|
@@:
|
||||||
mov byte[mode], 1 ;âî âñåõ îñòàëüíûõ ñëó÷àÿõ - êëàññè÷åñêèé ðåæèì
|
mov byte[mode], 0 ;во всех остальных случаях - отключено
|
||||||
|
jmp loadConfig.exit
|
||||||
.modeEnd:
|
.modeEnd:
|
||||||
|
|
||||||
push edi
|
;идём до конца этой строки
|
||||||
push esi
|
call gotoEndString
|
||||||
; ñîõðàíÿåì â edi óêàçàòåëü íà íà÷àëî òàáëèöû àäðåñîâ íàøèõ êîìàíä
|
;находим начало следующей строки
|
||||||
mov edi, newData
|
call gotoStartString
|
||||||
; ñîõðàíÿåì àäðåñà ñòðîê è äîáàâëÿåì 0 â êîíöå
|
|
||||||
mov esi, eax
|
|
||||||
.block:
|
|
||||||
inc esi
|
|
||||||
cmp byte[esi], 10 ;åñëè î÷åðåäíîé êîä ñèìâîëà 10 èëè 13, òî ïðîïóñêàåì ñèìâîëû
|
|
||||||
je loadConfig.propusk ;äî ïåðâîãî îòëè÷íîãî îò íèõ
|
|
||||||
cmp byte[esi], 13
|
|
||||||
je loadConfig.propusk
|
|
||||||
|
|
||||||
; ñèìâîë îòëè÷åí îò ïåðåíîñà ñòðîêè è âîçâðàòà êàðåòêè - åñëè ýòî íà çíàê ìèíóñ, òî çàïîìèíàåì åãî
|
push esi edi
|
||||||
mov dword[edi], esi
|
|
||||||
add edi, 4
|
|
||||||
|
|
||||||
;èä¸ì äî êîíöà ýòîé ñòðîêè: ïîêà íå âñòðåòèì î÷åðåäíîé 10, 13, 0 èëè file end
|
;считываем путь для левого верхнего угла
|
||||||
.while:
|
mov esi, apps.path1
|
||||||
inc esi
|
mov edi, apps.param1
|
||||||
cmp esi, edx ;òóò áóäåò ïðîáëåìà - òê ôàéë çàêîí÷èëñÿ, à íóëÿ íå áûëî !!! èñïðàâèòü
|
call readPath
|
||||||
jae loadConfig.fileend
|
call gotoStartString ;находим начало следующей строки
|
||||||
cmp byte[esi], 10
|
|
||||||
je loadConfig.ura
|
|
||||||
cmp byte[esi], 0
|
|
||||||
je loadConfig.ura
|
|
||||||
cmp byte[esi], 13
|
|
||||||
jne loadConfig.while
|
|
||||||
.ura:
|
|
||||||
mov byte[esi], 0
|
|
||||||
|
|
||||||
;cmp byte[esi-1], '-'
|
;считываем путь для левого нижнего угла
|
||||||
;jne @f
|
mov esi, apps.path2
|
||||||
push esi ;åñëè ýòî áûë çíàê ìèíóñ, òî ìåíÿåì àäðåñ íà íîëü
|
mov edi, apps.param2
|
||||||
mov esi, dword[edi-4]
|
call readPath
|
||||||
cmp byte[esi], '-'
|
call gotoStartString
|
||||||
jne @f
|
|
||||||
cmp byte[esi+1], 0
|
|
||||||
jne @f
|
|
||||||
mov dword[edi-4], 0
|
|
||||||
@@:
|
|
||||||
pop esi
|
|
||||||
|
|
||||||
cmp edi, newDataEnd ;newData.end ;åñëè âñÿ òàáëèöà àäðåñîâ çàïîëíåíà, òî âûõîäèì èç öèêëà
|
;считываем путь для правого верхнего угла
|
||||||
jb loadConfig.block
|
mov esi, apps.path3
|
||||||
.fileend:
|
mov edi, apps.param3
|
||||||
|
call readPath
|
||||||
|
call gotoStartString
|
||||||
|
|
||||||
pop esi
|
;считываем путь для правого нижнего угла
|
||||||
pop edi
|
mov esi, apps.path4
|
||||||
|
mov edi, apps.param4
|
||||||
|
call readPath
|
||||||
|
call gotoStartString
|
||||||
|
|
||||||
jmp loadConfig.end
|
;call checkAdr ;проверим строки на '-' и пустоту и выставим битовую маску
|
||||||
|
call checkPathAdr
|
||||||
|
|
||||||
.propusk:
|
pop edi esi
|
||||||
mov byte[esi], 0
|
|
||||||
jmp loadConfig.block
|
;пропускаем строку с именем клавиши
|
||||||
|
call gotoEndString
|
||||||
|
call gotoStartString
|
||||||
|
|
||||||
|
;считываем сканкод активационной клавиши
|
||||||
|
;call readKey
|
||||||
|
;call gotoEndString
|
||||||
|
push esi edi ecx
|
||||||
|
mov esi, keystr
|
||||||
|
mov edi, keystr
|
||||||
|
call readPath
|
||||||
|
;преобразуем строку в число
|
||||||
|
mov esi, keystr
|
||||||
|
call strToInteger
|
||||||
|
mov byte[keyActivate], cl
|
||||||
|
pop ecx edi esi
|
||||||
|
call gotoStartString
|
||||||
|
|
||||||
|
;считываем радиус
|
||||||
|
push esi edi ecx
|
||||||
|
mov esi, radstr
|
||||||
|
mov edi, radstr
|
||||||
|
call readPath
|
||||||
|
;преобразуем строку в число
|
||||||
|
mov esi, radstr
|
||||||
|
call strToInteger
|
||||||
|
;теперь ecx - значение радиуса
|
||||||
|
;!!! добавить проверку, чтобы число не было больше области экрана
|
||||||
|
;нас интересует квадрат числа
|
||||||
|
push eax edx
|
||||||
|
mov eax, ecx ;dword[radius2]
|
||||||
|
mul ecx
|
||||||
|
mov dword[radius2], eax
|
||||||
|
pop edx eax
|
||||||
|
|
||||||
|
pop ecx edi esi
|
||||||
|
|
||||||
|
;считывать размер элементов интерфейса нам не нужно (пока что этот параметр только для конфига)
|
||||||
|
jmp .end
|
||||||
.exit:
|
.exit:
|
||||||
pop edx ecx ebx eax
|
pop edx ecx ebx eax
|
||||||
mcall -1 ;çàêðûòü ýòó ïðîãðàììó
|
mcall -1 ;çàêðûòü ýòó ïðîãðàììó
|
||||||
.end:
|
.end:
|
||||||
|
mov ecx, dword[cfgFileAdr] ;если файл был загружен, то
|
||||||
|
cmp ecx, 0
|
||||||
|
je @f
|
||||||
|
mcall 68, 13, ecx ;выгружаем файл из памяти
|
||||||
|
@@:
|
||||||
pop edx ecx ebx eax
|
pop edx ecx ebx eax
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
;readKey:
|
||||||
|
;читаем клавишу и выходим
|
||||||
|
; cmp dword[eax], 'Ctrl'
|
||||||
|
; jne .notCtrl
|
||||||
|
; mov byte[keyActivate], 3
|
||||||
|
; jmp .end
|
||||||
|
;.notCtrl:
|
||||||
|
; cmp dword[eax], 'Shif'
|
||||||
|
; jne .notShift
|
||||||
|
; mov byte[keyActivate], 2
|
||||||
|
; jmp .end
|
||||||
|
;.notShift:
|
||||||
|
; cmp dword[eax], 'Spac'
|
||||||
|
; jne .notSpace
|
||||||
|
; mov byte[keyActivate], 32
|
||||||
|
; jmp .end
|
||||||
|
;.notSpace:
|
||||||
|
; cmp word[eax], 'Al'
|
||||||
|
; jne .notAlt
|
||||||
|
; mov byte[keyActivate], 1
|
||||||
|
; jmp .end
|
||||||
|
;.notAlt:
|
||||||
|
;убедимся, что там 1 символ, а не строка
|
||||||
|
; cmp byte[eax+1], 10
|
||||||
|
; je .oneSymb
|
||||||
|
; cmp byte[eax+1], 0
|
||||||
|
; je .oneSymb
|
||||||
|
; cmp byte[eax+1], 13
|
||||||
|
; je .oneSymb
|
||||||
|
; jmp .default ;в любом другом случае ошибка конфига - выход
|
||||||
|
;.oneSymb:
|
||||||
|
;проверяем, что символ разрешённый !!! доделать
|
||||||
|
|
||||||
|
;добавляем символ как есть
|
||||||
|
; push ebx
|
||||||
|
; ;xor ebx, ebx
|
||||||
|
; mov bl, byte[eax]
|
||||||
|
; mov byte[keyActivate], bl
|
||||||
|
; pop ebx
|
||||||
|
|
||||||
|
; jmp .end
|
||||||
|
;.default:
|
||||||
|
; mcall -1
|
||||||
|
; ;mov byte[keyActivate], 2
|
||||||
|
;.end:
|
||||||
|
; ret
|
||||||
|
|
||||||
|
|
||||||
|
checkPathAdr:
|
||||||
|
push eax ebx
|
||||||
|
xor eax, eax
|
||||||
|
|
||||||
|
mov ebx, apps.path1
|
||||||
|
cmp byte[ebx], '-'
|
||||||
|
jne @f
|
||||||
|
;cmp byte[ebx+1], 0
|
||||||
|
;jne @f
|
||||||
|
mov byte[ebx], 0
|
||||||
|
@@:
|
||||||
|
mov ebx, apps.path2
|
||||||
|
cmp byte[ebx], '-'
|
||||||
|
jne @f
|
||||||
|
;cmp byte[ebx+1], 0
|
||||||
|
;jne @f
|
||||||
|
mov byte[ebx], 0
|
||||||
|
@@:
|
||||||
|
mov ebx, apps.path3
|
||||||
|
cmp byte[ebx], '-'
|
||||||
|
jne @f
|
||||||
|
;cmp byte[ebx+1], 0
|
||||||
|
;jne @f
|
||||||
|
mov byte[ebx], 0
|
||||||
|
@@:
|
||||||
|
mov ebx, apps.path4
|
||||||
|
cmp byte[ebx], '-'
|
||||||
|
jne @f
|
||||||
|
;cmp byte[ebx+1], 0
|
||||||
|
;jne @f
|
||||||
|
mov byte[ebx], 0
|
||||||
|
@@:
|
||||||
|
pop ebx eax
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
checkAdr:
|
||||||
|
push eax ebx
|
||||||
|
xor eax, eax
|
||||||
|
|
||||||
|
mov ebx, apps.path1
|
||||||
|
cmp byte[ebx], '-'
|
||||||
|
jne @f
|
||||||
|
inc eax
|
||||||
|
@@:
|
||||||
|
mov ebx, apps.path2
|
||||||
|
cmp byte[ebx], '-'
|
||||||
|
jne @f
|
||||||
|
add eax, 2
|
||||||
|
@@:
|
||||||
|
mov ebx, apps.path3
|
||||||
|
cmp byte[ebx], '-'
|
||||||
|
jne @f
|
||||||
|
add eax, 4
|
||||||
|
@@:
|
||||||
|
mov ebx, apps.path4
|
||||||
|
cmp byte[ebx], '-'
|
||||||
|
jne @f
|
||||||
|
add eax, 8
|
||||||
|
@@:
|
||||||
|
|
||||||
|
mov ebx, apps.param1
|
||||||
|
cmp byte[ebx], '-'
|
||||||
|
jne @f
|
||||||
|
add eax, 16
|
||||||
|
@@:
|
||||||
|
mov ebx, apps.param2
|
||||||
|
cmp byte[ebx], '-'
|
||||||
|
jne @f
|
||||||
|
add eax, 32
|
||||||
|
@@:
|
||||||
|
mov ebx, apps.param3
|
||||||
|
cmp byte[ebx], '-'
|
||||||
|
jne @f
|
||||||
|
add eax, 64
|
||||||
|
@@:
|
||||||
|
mov ebx, apps.param4
|
||||||
|
cmp byte[ebx], '-'
|
||||||
|
jne @f
|
||||||
|
add eax, 128
|
||||||
|
@@:
|
||||||
|
|
||||||
|
mov byte[apps.bits], al
|
||||||
|
pop ebx eax
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;преобразование строки в целое число
|
||||||
|
strToInteger: ;вход: esi - указатель на строку с десятичной записью числа, выход: eсx - число
|
||||||
|
push eax ebx edx edi
|
||||||
|
xor eax, eax ;обнуляем eax
|
||||||
|
xor ecx, ecx
|
||||||
|
mov edi, esi
|
||||||
|
.get_last_symbol:
|
||||||
|
;читаем очередной символ
|
||||||
|
mov al, byte[edi]
|
||||||
|
|
||||||
|
;если это ноль, то строка закончилась
|
||||||
|
cmp al, 0
|
||||||
|
je @f
|
||||||
|
|
||||||
|
;иначе переходим на следующий символ
|
||||||
|
inc edi
|
||||||
|
jmp .get_last_symbol
|
||||||
|
@@: ;дошли до последнего символа и кладём адрес на него в edi
|
||||||
|
dec edi
|
||||||
|
|
||||||
|
cmp edi, esi ;адрес последнего символа должен быть дальше адреса первого символа
|
||||||
|
jae @f
|
||||||
|
jmp .error ;иначе ошибка
|
||||||
|
@@:
|
||||||
|
;теперь в edi последний символ, а esi указывает на начало строки (на первй символ строки)
|
||||||
|
mov cl, byte[edi]
|
||||||
|
sub cl, 48 ;0x30 ;'0'
|
||||||
|
dec edi ;переходим на след символ от конца
|
||||||
|
mov ebx, 10 ;множитель степени
|
||||||
|
.tranform_cicle:
|
||||||
|
cmp edi, esi ;если больше нет символов строке, то число преобразовали - выходим
|
||||||
|
jb .end
|
||||||
|
|
||||||
|
mov eax, 0
|
||||||
|
mov al, byte[edi]
|
||||||
|
sub al, 48 ;'0'
|
||||||
|
cmp al, 9 ;0x39 ;если число больше 9, то видимо в строке было что-то не так
|
||||||
|
ja .error
|
||||||
|
cmp al, 0 ;0x30 ;если число меньше 0, то видимо в строке было что-то не так
|
||||||
|
jb .error
|
||||||
|
mov edx, 0
|
||||||
|
mul ebx
|
||||||
|
|
||||||
|
add ecx, eax
|
||||||
|
|
||||||
|
dec edi
|
||||||
|
mov edx, 0
|
||||||
|
mov eax, 10
|
||||||
|
mul ebx
|
||||||
|
mov ebx, eax
|
||||||
|
jmp .tranform_cicle
|
||||||
|
.error:
|
||||||
|
mov ecx, 0
|
||||||
|
.end:
|
||||||
|
pop edi edx ebx eax
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
;Âûíåñòè êîä íèæå â îòäåëüíûé îáùèé ìîäóëü
|
;Âûíåñòè êîä íèæå â îòäåëüíûé îáùèé ìîäóëü
|
||||||
@ -474,7 +795,7 @@ copyKill:
|
|||||||
|
|
||||||
;MODE 3
|
;MODE 3
|
||||||
init03:
|
init03:
|
||||||
mov dword[radius2], 100; 10*10
|
;mov dword[radius2], 100; 10*10
|
||||||
mov dword[backAdr], mode03
|
mov dword[backAdr], mode03
|
||||||
call setHotKey
|
call setHotKey
|
||||||
mode03:
|
mode03:
|
||||||
@ -496,6 +817,9 @@ mouse03:
|
|||||||
cmp byte[state], LOCKd ;åñëè óãîë çàáëîêèðîâàí, òî îáíîâèì íà÷àëüíûå êîîðäèíàòû
|
cmp byte[state], LOCKd ;åñëè óãîë çàáëîêèðîâàí, òî îáíîâèì íà÷àëüíûå êîîðäèíàòû
|
||||||
je mouse03.updateCoord
|
je mouse03.updateCoord
|
||||||
|
|
||||||
|
cmp byte[state], SUPERLOCKd ;если действие было выполнено и получили блокировку, то ждём отпускания клавиши активации
|
||||||
|
je @f
|
||||||
|
|
||||||
call checkPointInCircle ;èíà÷å åñëè ïðåîäîëåëè ðàäèóñ àêòèâàöèè, òî âûçûâàåì äåéñòâèå íóæíîãî óãëà
|
call checkPointInCircle ;èíà÷å åñëè ïðåîäîëåëè ðàäèóñ àêòèâàöèè, òî âûçûâàåì äåéñòâèå íóæíîãî óãëà
|
||||||
jmp @f
|
jmp @f
|
||||||
.updateCoord:
|
.updateCoord:
|
||||||
@ -589,7 +913,7 @@ activateCorner:
|
|||||||
mov ecx, 1
|
mov ecx, 1
|
||||||
call run_command
|
call run_command
|
||||||
mov byte[keyState], 0
|
mov byte[keyState], 0
|
||||||
mov byte[state], LOCKd
|
mov byte[state], SUPERLOCKd
|
||||||
jmp activateCorner.end
|
jmp activateCorner.end
|
||||||
|
|
||||||
.leftup:
|
.leftup:
|
||||||
@ -597,7 +921,7 @@ activateCorner:
|
|||||||
mov ecx, 0
|
mov ecx, 0
|
||||||
call run_command
|
call run_command
|
||||||
mov byte[keyState], 0
|
mov byte[keyState], 0
|
||||||
mov byte[state], LOCKd
|
mov byte[state], SUPERLOCKd
|
||||||
jmp activateCorner.end
|
jmp activateCorner.end
|
||||||
|
|
||||||
.right: ;ïðàâàÿ ñòîðîíà ýêðàíà
|
.right: ;ïðàâàÿ ñòîðîíà ýêðàíà
|
||||||
@ -610,7 +934,7 @@ activateCorner:
|
|||||||
mov ecx, 3
|
mov ecx, 3
|
||||||
call run_command
|
call run_command
|
||||||
mov byte[keyState], 0
|
mov byte[keyState], 0
|
||||||
mov byte[state], LOCKd
|
mov byte[state], SUPERLOCKd
|
||||||
jmp activateCorner.end
|
jmp activateCorner.end
|
||||||
|
|
||||||
.rightup:
|
.rightup:
|
||||||
@ -618,7 +942,7 @@ activateCorner:
|
|||||||
mov ecx, 2
|
mov ecx, 2
|
||||||
call run_command
|
call run_command
|
||||||
mov byte[keyState], 0
|
mov byte[keyState], 0
|
||||||
mov byte[state], LOCKd
|
mov byte[state], SUPERLOCKd
|
||||||
jmp activateCorner.end
|
jmp activateCorner.end
|
||||||
|
|
||||||
.end:
|
.end:
|
||||||
@ -631,10 +955,6 @@ keyActivate db 41 ;16 ;'Q' ;
|
|||||||
keyState db 0 ;0-êëàâèøà íå àêòèâíà, 1 - êëàâèøà àêòèâíà
|
keyState db 0 ;0-êëàâèøà íå àêòèâíà, 1 - êëàâèøà àêòèâíà
|
||||||
|
|
||||||
backAdr rd 1 ;àäðåñ äëÿ âîçâðàòà èç ïðîâåðêè ìûøè
|
backAdr rd 1 ;àäðåñ äëÿ âîçâðàòà èç ïðîâåðêè ìûøè
|
||||||
|
|
||||||
;slotMax dd 0
|
|
||||||
;selfPID dd 0
|
|
||||||
;buf db 1024 dup(0)
|
|
||||||
slotMax rd 1
|
slotMax rd 1
|
||||||
selfPID rd 1
|
selfPID rd 1
|
||||||
buf rb 1024
|
buf rb 1024
|
||||||
@ -644,14 +964,23 @@ screen:
|
|||||||
.width rw 1
|
.width rw 1
|
||||||
.height rw 1
|
.height rw 1
|
||||||
|
|
||||||
state: rb 1 ;ñîñòîÿíèå: 0=unlock, 1=lock
|
state: rb 1 ;состояние: 0=unlock, 1=lock, 2=superlock for mode 3
|
||||||
mode: rb 1 ;ðåæèì ðàáîòû ïðèëîæåíèÿ: 0=íå ðàáîòàåò, 1=êëàññè÷åñêèé, 2=ïî ãîðÿ÷åé êëàâèøå
|
mode: rb 1 ;ðåæèì ðàáîòû ïðèëîæåíèÿ: 0=íå ðàáîòàåò, 1=êëàññè÷åñêèé, 2=ïî ãîðÿ÷åé êëàâèøå
|
||||||
|
|
||||||
newData: ;òàáëè÷êà àäðåñîâ êîìàíäíûõ ñòðîê
|
|
||||||
.lu rd 1
|
keystr: rb 4 ;строка со значением сканкода активационной клавиши
|
||||||
.ld rd 1
|
radstr: rb 5 ;строка со значением радиуса
|
||||||
.ru rd 1
|
apps:
|
||||||
.rd rd 1
|
.bits: rb 1
|
||||||
newDataEnd:
|
.path1: rb 512
|
||||||
|
.path2: rb 512
|
||||||
|
.path3: rb 512
|
||||||
|
.path4: rb 512
|
||||||
|
.param1: rb 512
|
||||||
|
.param2: rb 512
|
||||||
|
.param3: rb 512
|
||||||
|
.param4: rb 512
|
||||||
|
appsEnd:
|
||||||
|
|
||||||
|
|
||||||
I_END:
|
I_END:
|
||||||
|
@ -1,23 +1,31 @@
|
|||||||
Hot Angles
|
Hot Angles
|
||||||
|
|
||||||
Version 0.3.6: Oct 9, 2018
|
Version 0.3.7: Oct 14, 2018
|
||||||
RU
|
RU
|
||||||
|
|
||||||
Комплект утилит (аналог Hot Corners в других ОС) для расширения возможностей рабочего стола пользователя. Название выбрано путём голосования. В комплект входят две утилиты:
|
Комплект утилит (аналог Hot Corners в других ОС) для расширения возможностей рабочего стола пользователя. Название выбрано путём голосования. В комплект входят две утилиты:
|
||||||
@HOTANGLES - основная утилита, позволяющая запускать приложения путём наведения курсора в угол экрана (угол рабочей области);
|
@HOTANGLES - основная утилита, позволяющая запускать приложения путём наведения курсора в угол экрана (угол рабочей области);
|
||||||
HACONFIG - утилита конфигуратор, позволяющая настроить действия на каждый угол и активировать/деактивировать эту опцию.
|
HACONFIG - утилита конфигуратор, позволяющая настроить действия на каждый угол и активировать/деактивировать эту опцию.
|
||||||
Файл конфигурации: RD/1/SETTINGS/HOTANGLES.CFG (где RD/1/ это тот же SYS - путь к системной директории). Файл состоит из пяти строк:
|
Файл конфигурации: RD/1/SETTINGS/HOTANGLES.CFG (где RD/1/ это тот же SYS - путь к системной директории). Файл состоит из девяти строк:
|
||||||
1) состояние активности опции (один символ):
|
1) состояние активности опции (один символ):
|
||||||
1 или y - опция активна, активирован классический режим работы уголков,
|
1 или y - опция активна, активирован классический режим работы уголков,
|
||||||
2 - опция активна, активирован режим работы по горячей клавише,
|
2 - опция активна, активирован режим работы по горячей клавише,
|
||||||
3 - опция активна, активирован режим жеста при зажатой активационной клавише,
|
3 - опция активна, активирован режим жеста при зажатой активационной клавише,
|
||||||
n или 0 - опция отключена,
|
n или 0 - опция отключена,
|
||||||
любой другой символ - поведение по умолчанию (зависит от версии);
|
любой другой символ - поведение по умолчанию (зависит от версии), в большинстве версий означает "опция отключена";
|
||||||
2) команда (полное имя приложения) для верхнего левого угла экрана;
|
2) команда (полное имя приложения) для верхнего левого угла экрана;
|
||||||
3) команда (полное имя приложения) для левого нижнего угла экрана;
|
3) команда (полное имя приложения) для левого нижнего угла экрана;
|
||||||
4) команда (полное имя приложения) для правого верхнего угла экрана;
|
4) команда (полное имя приложения) для правого верхнего угла экрана;
|
||||||
5) команда (полное имя приложения) для правого нижнего угла экрана.
|
5) команда (полное имя приложения) для правого нижнего угла экрана;
|
||||||
|
6) клавиша активации (для режимов 2 и 3): '0'..'9','a'..'z','A'..'Z',Space,Shift,Alt,Ctrl,'~' (примечание: клавиши Shift,Alt,Ctrl не работают в версии 0.3.7);
|
||||||
|
7) сканкод клавиши активации (десятичное число, используется @HOTANGLES);
|
||||||
|
8) радиус срабатывания жеста от начальной точки в момент нажатия клавиши (для mode 3);
|
||||||
|
9) размер элементов окна конфигуратора:
|
||||||
|
a - auto, автоматически в зависимости от разрешения экрана;
|
||||||
|
значение от 1 до 7 - нужный размер на основе размера текста;
|
||||||
|
s - в зависимости от системных настроек (опция по умолчанию).
|
||||||
Если необходимо настроить только часть углов, а остальные оставить без действия, то в конфигураторе или на нужной строке конфигурационного файла укажите знак минус (символ '-').
|
Если необходимо настроить только часть углов, а остальные оставить без действия, то в конфигураторе или на нужной строке конфигурационного файла укажите знак минус (символ '-').
|
||||||
|
Примечание: До версии 0.3.6 включительно файл конфигурации состоял только из 5 первых строк.
|
||||||
|
|
||||||
Обе утилиты содержат защиту от повторного запуска.
|
Обе утилиты содержат защиту от повторного запуска.
|
||||||
Утилита @HOTANGLES добавлена в автозагрузку ОС.
|
Утилита @HOTANGLES добавлена в автозагрузку ОС.
|
||||||
|
@ -1,5 +1,9 @@
|
|||||||
1
|
0
|
||||||
/rd/1/HACONFIG
|
/rd/1/HACONFIG
|
||||||
/rd/1/HACONFIG
|
/rd/1/HACONFIG
|
||||||
/rd/1/HACONFIG
|
/rd/1/HACONFIG
|
||||||
/rd/1/HACONFIG
|
/rd/1/HACONFIG
|
||||||
|
Space
|
||||||
|
57
|
||||||
|
10
|
||||||
|
s
|
||||||
|
Loading…
Reference in New Issue
Block a user