forked from KolibriOS/kolibrios
HotAngles 0.3.5: ability to select programs through OpenDialog and mode 2 "hotkey activation" in test mode, updated file ReadMe
git-svn-id: svn://kolibrios.org@7436 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
2e3d90aedd
commit
66a0391246
@ -2,7 +2,7 @@
|
|||||||
; Hot Angles Config ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
; Hot Angles Config ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
; Compile with FASM
|
; Compile with FASM
|
||||||
; Version 0.3.2: Sep 24, 2018
|
; Version 0.3.5: Oct 5, 2018
|
||||||
|
|
||||||
; Copyright (c) 2018, Efremenkov Sergey aka TheOnlyMirage
|
; Copyright (c) 2018, Efremenkov Sergey aka TheOnlyMirage
|
||||||
; All rights reserved.
|
; All rights reserved.
|
||||||
@ -45,20 +45,24 @@ include '../../macros.inc'
|
|||||||
include '../../proc32.inc'
|
include '../../proc32.inc'
|
||||||
include '../../dll.inc'
|
include '../../dll.inc'
|
||||||
include '../../develop/libraries/box_lib/trunk/box_lib.mac' ;компоненты checkBox и editBox
|
include '../../develop/libraries/box_lib/trunk/box_lib.mac' ;компоненты checkBox и editBox
|
||||||
|
;![
|
||||||
|
include '../../develop/libraries/box_lib/load_lib.mac' ;ìàêðîñ äëÿ çàãðóçêè áèáëèîòåê
|
||||||
|
@use_library
|
||||||
|
;@use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load
|
||||||
|
;!]
|
||||||
Otstup = 30
|
Otstup = 30
|
||||||
|
|
||||||
START:
|
START:
|
||||||
call copyKill ;простейшая защита от запуска второй копии приложения
|
call copyKill ;простейшая защита от запуска второй копии приложения
|
||||||
mcall 68, 11 ;инициализация кучи
|
mcall 68, 11 ;инициализация кучи
|
||||||
|
|
||||||
|
;mcall 48,3,sc,sizeof.system_colors ;ïîëó÷èòü ñèñòåìíûå öâåòà
|
||||||
mov eax,48 ;получить системные цвета
|
mov eax,48 ;получить системные цвета
|
||||||
mov ebx,3
|
mov ebx,3
|
||||||
mov ecx, sc
|
mov ecx, sc
|
||||||
mov edx, sizeof.system_colors
|
mov edx, sizeof.system_colors
|
||||||
mcall
|
mcall
|
||||||
|
|
||||||
|
|
||||||
stdcall dll.Load, @IMPORT
|
stdcall dll.Load, @IMPORT
|
||||||
or eax, eax
|
or eax, eax
|
||||||
jnz exit
|
jnz exit
|
||||||
@ -69,6 +73,10 @@ START:
|
|||||||
mov ebx,0x27 ;система будет реагировать только на сообщение о перерисовке, нажата кнопка, определённая ранее, событие от мыши (что-то случилось - нажатие на кнопку мыши или перемещение; сбрасывается при прочтении)
|
mov ebx,0x27 ;система будет реагировать только на сообщение о перерисовке, нажата кнопка, определённая ранее, событие от мыши (что-то случилось - нажатие на кнопку мыши или перемещение; сбрасывается при прочтении)
|
||||||
mcall
|
mcall
|
||||||
|
|
||||||
|
load_libraries l_libs_start,load_lib_end ;çàãðóçêà áèáëèîòåê(è)
|
||||||
|
;mcall 48,3,sc,sizeof.system_colors ;ïîëó÷èòü ñèñòåìíûå öâåòà
|
||||||
|
stdcall [OpenDialog_Init],OpenDialog_data ;ïîäãîòîâêà äèàëîãà
|
||||||
|
|
||||||
call loadConfig ;загружаем конфигурацию из файла, если нет - то выставляем параметры по умолчанию
|
call loadConfig ;загружаем конфигурацию из файла, если нет - то выставляем параметры по умолчанию
|
||||||
call draw_window ;отрисовать окно приложения
|
call draw_window ;отрисовать окно приложения
|
||||||
|
|
||||||
@ -123,8 +131,34 @@ exit:
|
|||||||
mcall
|
mcall
|
||||||
noclose:
|
noclose:
|
||||||
cmp ah, 2 ;кнопка "Применить"
|
cmp ah, 2 ;кнопка "Применить"
|
||||||
jne butend
|
jne @f ;butend
|
||||||
call applyButton ;вызов нашего обработчика нажатия кнопки
|
call applyButton ;вызов нашего обработчика нажатия кнопки
|
||||||
|
jmp event_wait
|
||||||
|
@@:
|
||||||
|
cmp ah, 4
|
||||||
|
jne @f
|
||||||
|
mov byte[editID], 4
|
||||||
|
call but_open_dlg
|
||||||
|
jmp event_wait
|
||||||
|
@@:
|
||||||
|
cmp ah, 5
|
||||||
|
jne @f
|
||||||
|
mov byte[editID], 5
|
||||||
|
call but_open_dlg
|
||||||
|
jmp event_wait
|
||||||
|
@@:
|
||||||
|
cmp ah, 6
|
||||||
|
jne @f
|
||||||
|
mov byte[editID], 6
|
||||||
|
call but_open_dlg
|
||||||
|
jmp event_wait
|
||||||
|
@@:
|
||||||
|
cmp ah, 7
|
||||||
|
jne @f
|
||||||
|
mov byte[editID], 7
|
||||||
|
call but_open_dlg
|
||||||
|
jmp event_wait
|
||||||
|
@@:
|
||||||
butend:
|
butend:
|
||||||
jmp event_wait ;this is for ignored events, useful at development
|
jmp event_wait ;this is for ignored events, useful at development
|
||||||
|
|
||||||
@ -217,10 +251,14 @@ applyButton:
|
|||||||
mov dword[createFile.data_adr], eax ;сохраняем адрес буфера в структуру
|
mov dword[createFile.data_adr], eax ;сохраняем адрес буфера в структуру
|
||||||
|
|
||||||
;заполним буфер содержимого:
|
;заполним буфер содержимого:
|
||||||
mov byte[eax], 110; 'n' ;ïî óìîë÷àíèþ ôëàã ñíÿò
|
;cmp byte[mode], 0
|
||||||
|
;jne @f
|
||||||
|
;@@:
|
||||||
|
;
|
||||||
|
mov byte[eax], 48;'0' ;110; 'n' ;ïî óìîë÷àíèþ ôëàã ñíÿò
|
||||||
cmp word[ch1.flags], 110b ;ch_flag_en and ch_flag_middle ;выставлен checkBox или нет?
|
cmp word[ch1.flags], 110b ;ch_flag_en and ch_flag_middle ;выставлен checkBox или нет?
|
||||||
jne applyButton.no
|
jne applyButton.no
|
||||||
mov byte[eax], 121 ;èíà÷å êëàä¸ì 'y'
|
mov byte[eax], 49;'1' ;121 ;èíà÷å êëàä¸ì 'y'
|
||||||
.no:
|
.no:
|
||||||
inc eax
|
inc eax
|
||||||
call addPerenos
|
call addPerenos
|
||||||
@ -376,11 +414,14 @@ loadConfig:
|
|||||||
add edx, eax ;кладём в edx - адрес конца конфиг.данных
|
add edx, eax ;кладём в edx - адрес конца конфиг.данных
|
||||||
|
|
||||||
.chStart:
|
.chStart:
|
||||||
cmp byte[eax], 121 ;'y' ;âûñòàâëÿåì checkBox - ïàðàìåòð àêòèâíîñòè ïðèëîæåíèÿ
|
cmp byte[eax], 49;'1' ;121 ;'y' ;âûñòàâëÿåì checkBox - ïàðàìåòð àêòèâíîñòè ïðèëîæåíèÿ
|
||||||
jne loadConfig.no
|
jne @f ;loadConfig.no
|
||||||
.yes:
|
.yes:
|
||||||
mov word[ch1.flags], 110b ;ch_flag_en and ch_flag_middle
|
mov word[ch1.flags], 110b ;ch_flag_en and ch_flag_middle
|
||||||
jmp loadConfig.chEnd
|
jmp loadConfig.chEnd
|
||||||
|
@@:
|
||||||
|
cmp byte[eax], 50;'2' ;âòîðîé ðåæèì àêòèâèðîâàí
|
||||||
|
je loadConfig.yes
|
||||||
.no:
|
.no:
|
||||||
mov word[ch1.flags], 100b ;ch_flag_middle
|
mov word[ch1.flags], 100b ;ch_flag_middle
|
||||||
.chEnd:
|
.chEnd:
|
||||||
@ -556,6 +597,16 @@ draw_window:
|
|||||||
mov edx, 0x80000002
|
mov edx, 0x80000002
|
||||||
mcall 8
|
mcall 8
|
||||||
|
|
||||||
|
;óäàëÿåì åù¸ 4 êíîïêè åñëè îíè åñòü
|
||||||
|
mov edx, 0x80000004
|
||||||
|
mcall 8
|
||||||
|
mov edx, 0x80000005
|
||||||
|
mcall 8
|
||||||
|
mov edx, 0x80000006
|
||||||
|
mcall 8
|
||||||
|
mov edx, 0x80000007
|
||||||
|
mcall 8
|
||||||
|
|
||||||
mov eax, 12 ; function 12: tell os about windowdraw
|
mov eax, 12 ; function 12: tell os about windowdraw
|
||||||
mov ebx, 1 ; 1, start of draw
|
mov ebx, 1 ; 1, start of draw
|
||||||
mcall
|
mcall
|
||||||
@ -608,6 +659,52 @@ draw_window:
|
|||||||
mov esi, buttonTextSize ;5 ;размер текста в символах
|
mov esi, buttonTextSize ;5 ;размер текста в символах
|
||||||
mcall 4
|
mcall 4
|
||||||
|
|
||||||
|
;ðèñóåì åù¸ 4 êíîïêè äëÿ äèàëîãîâîãî îêíà âûáîðà ôàéëà
|
||||||
|
;íîìåðà 4,5,6 è 7
|
||||||
|
buttonH = 14 ;20
|
||||||
|
buttonW = 30
|
||||||
|
;ëåâûé âåðõíèé óãîë
|
||||||
|
mov ebx, Otstup*65536 + buttonW ;êîîðäèíàòà X, øèðèíà êíîïêè
|
||||||
|
mov ecx, 85*65536 + buttonH ;êîîðäèíàòà Y, âûñîòà êíîïêè
|
||||||
|
mov edx, 0x00000004 ;íîìåð êíîïêè
|
||||||
|
mov esi, 0x00AABBCC ;öâåò êíîïêè
|
||||||
|
mcall 8
|
||||||
|
;ëåâûé íèæíèé óãîë
|
||||||
|
mov ebx, Otstup*65536 + buttonW ;êîîðäèíàòà X, øèðèíà êíîïêè
|
||||||
|
mov ecx, 120*65536 + buttonH ;êîîðäèíàòà Y, âûñîòà êíîïêè
|
||||||
|
mov edx, 0x00000005 ;íîìåð êíîïêè
|
||||||
|
mov esi, 0x00AABBCC ;öâåò êíîïêè
|
||||||
|
mcall 8
|
||||||
|
;ïðàâûé âåðõíèé óãîë
|
||||||
|
mov ebx, (WindowsWidth-Otstup-buttonW)*65536 + buttonW ;êîîðäèíàòà X, øèðèíà êíîïêè
|
||||||
|
mov ecx, 85*65536 + buttonH ;êîîðäèíàòà Y, âûñîòà êíîïêè
|
||||||
|
mov edx, 0x00000006 ;íîìåð êíîïêè
|
||||||
|
mov esi, 0x00AABBCC ;öâåò êíîïêè
|
||||||
|
mcall 8
|
||||||
|
;ïðàâûé íèæíèé óãîë
|
||||||
|
mov ebx, (WindowsWidth-Otstup-buttonW)*65536 + buttonW ;êîîðäèíàòà X, øèðèíà êíîïêè
|
||||||
|
mov ecx, 120*65536 + buttonH ;êîîðäèíàòà Y, âûñîòà êíîïêè
|
||||||
|
mov edx, 0x00000007 ;íîìåð êíîïêè
|
||||||
|
mov esi, 0x00AABBCC ;öâåò êíîïêè
|
||||||
|
mcall 8
|
||||||
|
|
||||||
|
;ðèñóåì òåêñòû äëÿ ýòèõ 4 êíîïîê
|
||||||
|
mov ecx, 0xFFFFFF ;áåëûé öâåò òåêñòà
|
||||||
|
mov edx, commonButtonText ;ñòðîêà òåêñòà
|
||||||
|
mov esi, commonButtonTextSize ;ðàçìåð òåêñòà â ñèìâîëàõ
|
||||||
|
;êîîðäèíàòû òåêñòà (x, y)
|
||||||
|
deltaCommonTextX = 7
|
||||||
|
deltaCommonTextY = 2
|
||||||
|
mov ebx, (Otstup+deltaCommonTextX) * 65536 + (85 + deltaCommonTextY)
|
||||||
|
mcall 4
|
||||||
|
mov ebx, (Otstup+deltaCommonTextX) * 65536 + (120 + deltaCommonTextY)
|
||||||
|
mcall 4
|
||||||
|
mov ebx, (WindowsWidth-Otstup-buttonW+deltaCommonTextX) * 65536 + (85 + deltaCommonTextY)
|
||||||
|
mcall 4
|
||||||
|
mov ebx, (WindowsWidth-Otstup-buttonW+deltaCommonTextX) * 65536 + (120 + deltaCommonTextY)
|
||||||
|
mcall 4
|
||||||
|
|
||||||
|
|
||||||
call draw_super_text
|
call draw_super_text
|
||||||
|
|
||||||
LineLength = 62
|
LineLength = 62
|
||||||
@ -654,6 +751,8 @@ import box_lib,\
|
|||||||
;координаты (x,y) = (30, 160) размер чекбокса 12, цвет текста 0x224466
|
;координаты (x,y) = (30, 160) размер чекбокса 12, цвет текста 0x224466
|
||||||
ch1 check_box2 30 shl 16 + 12, 160 shl 16 + 12, 6, 0xFFFFFFFF, 0xAABBCC, 0x224466, ch_text, 110b ; ch_flag_en and ch_flag_middle
|
ch1 check_box2 30 shl 16 + 12, 160 shl 16 + 12, 6, 0xFFFFFFFF, 0xAABBCC, 0x224466, ch_text, 110b ; ch_flag_en and ch_flag_middle
|
||||||
|
|
||||||
|
commonButtonText db '...', 0 ;òåêñò äëÿ êíîïîê âûçîâà OpenDial
|
||||||
|
commonButtonTextSize = 3
|
||||||
|
|
||||||
if lang eq ru ;если язык сборки русский
|
if lang eq ru ;если язык сборки русский
|
||||||
|
|
||||||
@ -725,15 +824,182 @@ draw_super_text:
|
|||||||
pop esi edi edx ecx ebx eax
|
pop esi edi edx ecx ebx eax
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
;![
|
||||||
|
editID db 0
|
||||||
|
initEBX:
|
||||||
|
cmp byte[editID], 4
|
||||||
|
jne @f
|
||||||
|
mov ebx, dataBuffer.1
|
||||||
|
ret
|
||||||
|
@@:
|
||||||
|
cmp byte[editID], 5
|
||||||
|
jne @f
|
||||||
|
mov ebx, dataBuffer.2
|
||||||
|
ret
|
||||||
|
@@:
|
||||||
|
cmp byte[editID], 6
|
||||||
|
jne @f
|
||||||
|
mov ebx, dataBuffer.3
|
||||||
|
ret
|
||||||
|
@@:
|
||||||
|
cmp byte[editID], 7
|
||||||
|
jne @f
|
||||||
|
mov ebx, dataBuffer.4
|
||||||
|
ret
|
||||||
|
@@:
|
||||||
|
ret
|
||||||
|
setRESULT:
|
||||||
|
cmp byte[editID], 4
|
||||||
|
jne @f
|
||||||
|
mov dword[dataBuffer.size1], ecx
|
||||||
|
mov dword[editLU.size], ecx
|
||||||
|
mov dword[editLU.pos], ecx
|
||||||
|
ret
|
||||||
|
@@:
|
||||||
|
cmp byte[editID], 5
|
||||||
|
jne @f
|
||||||
|
mov dword[dataBuffer.size2], ecx
|
||||||
|
mov dword[editLD.size], ecx
|
||||||
|
mov dword[editLD.pos], ecx
|
||||||
|
ret
|
||||||
|
@@:
|
||||||
|
cmp byte[editID], 6
|
||||||
|
jne @f
|
||||||
|
mov dword[dataBuffer.size3], ecx
|
||||||
|
mov dword[editRU.size], ecx
|
||||||
|
mov dword[editRU.pos], ecx
|
||||||
|
ret
|
||||||
|
@@:
|
||||||
|
cmp byte[editID], 7
|
||||||
|
jne @f
|
||||||
|
mov dword[dataBuffer.size4], ecx
|
||||||
|
mov dword[editRD.size], ecx
|
||||||
|
mov dword[editRD.pos], ecx
|
||||||
|
ret
|
||||||
|
@@:
|
||||||
|
ret
|
||||||
|
copyPath:
|
||||||
|
push eax ebx ecx edx ;copy file name path
|
||||||
|
mov eax, openfile_path ;dword[OpenDialog_data.openfile_path]
|
||||||
|
call initEBX ;mov ebx, dataBuffer.1 ;.data
|
||||||
|
mov ecx, 0
|
||||||
|
@@:
|
||||||
|
mov dl, byte[eax]
|
||||||
|
cmp dl, 0 ;byte[eax], 0
|
||||||
|
je @f
|
||||||
|
mov byte[ebx], dl
|
||||||
|
inc eax
|
||||||
|
inc ebx
|
||||||
|
inc ecx
|
||||||
|
jmp @b
|
||||||
|
@@:
|
||||||
|
mov byte[ebx], 0
|
||||||
|
call setRESULT
|
||||||
|
pop edx ecx ebx eax
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
align 4
|
||||||
|
but_open_dlg:
|
||||||
|
pushad
|
||||||
|
copy_path open_dialog_name,communication_area_default_path,file_name,0
|
||||||
|
mov [OpenDialog_data.type],0
|
||||||
|
stdcall[OpenDialog_Start], OpenDialog_data
|
||||||
|
cmp [OpenDialog_data.status],2
|
||||||
|
je @f
|
||||||
|
cmp [OpenDialog_data.status],0 ;ïîëüçîâàòåëü íàæàë Cancel?
|
||||||
|
je .end_open
|
||||||
|
;êîä ïðè óäà÷íîì îòêðûòèè äèàëîãà
|
||||||
|
call copyPath
|
||||||
|
jmp .end_open
|
||||||
|
@@:
|
||||||
|
;êîä ïðè íå óäà÷íîì îòêðûòèè äèàëîãà
|
||||||
|
;...
|
||||||
|
.end_open:
|
||||||
|
popad
|
||||||
|
ret
|
||||||
|
|
||||||
|
;äûííûå äëÿ äèàëîãà îòêðûòèÿ ôàéëîâ
|
||||||
|
align 4
|
||||||
|
OpenDialog_data:
|
||||||
|
.type dd 0 ;0 - îòêðûòü, 1 - ñîõðàíèòü, 2 - âûáðàòü äèðåêòîðèþ
|
||||||
|
.procinfo dd procinfo
|
||||||
|
.com_area_name dd communication_area_name ;+8
|
||||||
|
.com_area dd 0 ;+12
|
||||||
|
.opendir_path dd plugin_path ;+16
|
||||||
|
.dir_default_path dd default_dir ;+20
|
||||||
|
.start_path dd file_name ;+24 ïóòü ê äèàëîãó îòêðûòèÿ ôàéëîâ
|
||||||
|
.draw_window dd draw_window ;+28
|
||||||
|
.status dd 0 ;+32
|
||||||
|
.openfile_path dd openfile_path ;+36 ïóòü ê îòêðûâàåìîìó ôàéëó
|
||||||
|
.filename_area dd filename_area ;+40
|
||||||
|
.filter_area dd Filter
|
||||||
|
.x:
|
||||||
|
.x_size dw 420 ;+48 ; Window X size
|
||||||
|
.x_start dw 10 ;+50 ; Window X position
|
||||||
|
.y:
|
||||||
|
.y_size dw 320 ;+52 ; Window y size
|
||||||
|
.y_start dw 10 ;+54 ; Window Y position
|
||||||
|
|
||||||
|
default_dir db '/rd/1',0 ;äèðåêòîðèÿ ïî óìîë÷àíèþ
|
||||||
|
communication_area_name: db 'FFFFFFFF_open_dialog',0
|
||||||
|
open_dialog_name: db 'opendial',0
|
||||||
|
communication_area_default_path: db '/rd/1/File managers/',0
|
||||||
|
|
||||||
|
Filter:
|
||||||
|
dd Filter.end - Filter.1
|
||||||
|
.1:
|
||||||
|
;db 'ASM',0
|
||||||
|
;db 'KEX',0
|
||||||
|
;db 'TXT',0
|
||||||
|
.end:
|
||||||
|
db 0
|
||||||
|
|
||||||
|
align 4
|
||||||
|
proclib_import: ;îïèñàíèå ýêñïîðòèðóåìûõ ôóíêöèé
|
||||||
|
OpenDialog_Init dd aOpenDialog_Init
|
||||||
|
OpenDialog_Start dd aOpenDialog_Start
|
||||||
|
dd 0,0
|
||||||
|
aOpenDialog_Init db 'OpenDialog_init',0
|
||||||
|
aOpenDialog_Start db 'OpenDialog_start',0
|
||||||
|
|
||||||
|
head_f_i:
|
||||||
|
head_f_l db 'Ñèñòåìíàÿ îøèáêà',0
|
||||||
|
err_message_found_lib0 db 'Íå íàéäåíà áèáëèîòåêà ',39,'proc_lib.obj',39,0
|
||||||
|
err_message_import0 db 'Îøèáêà ïðè èìïîðòå áèáëèîòåêè ',39,'proc_lib.obj',39,0
|
||||||
|
|
||||||
|
system_dir0 db '/sys/lib/'
|
||||||
|
lib0_name db 'proc_lib.obj',0
|
||||||
|
|
||||||
|
;library structures
|
||||||
|
l_libs_start:
|
||||||
|
lib0 l_libs lib0_name, sys_path, file_name, system_dir0, err_message_found_lib0, head_f_l, proclib_import,err_message_import0, head_f_i
|
||||||
|
load_lib_end:
|
||||||
|
|
||||||
|
;txt_open db 'Îòêðûòü',0
|
||||||
|
|
||||||
|
sys_path: rb 4096
|
||||||
|
file_name: rb 4096
|
||||||
|
plugin_path: rb 4096
|
||||||
|
openfile_path: rb 4096
|
||||||
|
filename_area: rb 256
|
||||||
|
rb 1024
|
||||||
|
procinfo process_information
|
||||||
|
;!]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
edMaxSize = 510 ;теперь с новым компонентом можно и 511 указать
|
edMaxSize = 510 ;теперь с новым компонентом можно и 511 указать
|
||||||
edMax = 0 ;max, size, pos
|
edMax = 0 ;max, size, pos
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
editLU edit_box 180,Otstup,85, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, edMaxSize, dataBuffer.1, mouse_dd, 0, edMax, edMax ;ed_focus
|
editLU edit_box 180-buttonW,Otstup+buttonW,85, 0xffffff, 0x6a9480, 0, 0xAABBCC, 0, edMaxSize, dataBuffer.1, mouse_dd, 0, edMax, edMax ;ed_focus
|
||||||
editLD edit_box 180,Otstup,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,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,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
|
||||||
|
|
||||||
|
mouse_dd dd ?
|
||||||
|
sc system_colors
|
||||||
|
|
||||||
dataBuffer:
|
dataBuffer:
|
||||||
.1: rb 512
|
.1: rb 512
|
||||||
@ -748,8 +1014,6 @@ dataBuffer:
|
|||||||
;два запасных байта необходимы для того что бы не пепереписать следующией байты, в конце буфера 0
|
;два запасных байта необходимы для того что бы не пепереписать следующией байты, в конце буфера 0
|
||||||
dataBufferEnd:
|
dataBufferEnd:
|
||||||
|
|
||||||
mouse_dd dd ?
|
|
||||||
sc system_colors
|
|
||||||
|
|
||||||
I_END:
|
I_END:
|
||||||
rb 4096
|
rb 4096
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
; Hot Angles ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
; Hot Angles ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
; Compile with FASM
|
; Compile with FASM
|
||||||
; Version 0.3.3: Sep 25, 2018
|
; Version 0.3.5: Oct 5, 2018
|
||||||
|
|
||||||
; Copyright (c) 2018, Efremenkov Sergey aka TheOnlyMirage
|
; Copyright (c) 2018, Efremenkov Sergey aka TheOnlyMirage
|
||||||
; All rights reserved.
|
; All rights reserved.
|
||||||
@ -30,12 +30,12 @@ use32
|
|||||||
org 0x0 ; базовый адрес размещения кода, всегда 0x0
|
org 0x0 ; базовый адрес размещения кода, всегда 0x0
|
||||||
|
|
||||||
UNLOCKd = 0
|
UNLOCKd = 0
|
||||||
LOCKd = 1
|
LOCKd = 1
|
||||||
|
|
||||||
; заголовок
|
; заголовок
|
||||||
db 'MENUET01' ;магический идентификатор
|
db 'MENUET01' ;магический идентификатор
|
||||||
dd 0x01 ;версия
|
dd 0x01 ;версия
|
||||||
dd START_DEBUG ;адрес точки старта программы
|
dd START_DEBUG ;адрес точки старта программы
|
||||||
dd I_END ;адрес конца, по факту размер файла программы
|
dd I_END ;адрес конца, по факту размер файла программы
|
||||||
dd 0x100000 ;требуемое кол-во памяти для загрузки программы
|
dd 0x100000 ;требуемое кол-во памяти для загрузки программы
|
||||||
dd 0x7fff0 ;начальное значение регистра esp - адрес конца области стэка так как стэк растет в сторону меньших адресов
|
dd 0x7fff0 ;начальное значение регистра esp - адрес конца области стэка так как стэк растет в сторону меньших адресов
|
||||||
@ -48,21 +48,104 @@ START_DEBUG:
|
|||||||
call copyKill ;простейшая защита от повторного запуска
|
call copyKill ;простейшая защита от повторного запуска
|
||||||
mcall 68, 11 ;инициализация кучи
|
mcall 68, 11 ;инициализация кучи
|
||||||
call loadConfig ;загружаем конфигурацию приложения
|
call loadConfig ;загружаем конфигурацию приложения
|
||||||
mov ebx, 00000100000000000000000000100000b ;подписываемся на интересные нам события
|
|
||||||
mcall 40
|
|
||||||
|
|
||||||
START:
|
cmp byte[mode], 0 ;функция отключена - выход
|
||||||
|
jne @f
|
||||||
|
mcall -1
|
||||||
|
@@:
|
||||||
|
;режим активации горячей клавишей?
|
||||||
|
cmp byte[mode], 2 ;подписываемся на интересные нам события в зависимости от режима работы
|
||||||
|
jne @f
|
||||||
|
mov ebx, 00000100000000000000000000100010b ;если да, то подписываемся на клавиши
|
||||||
|
mcall 40
|
||||||
|
jmp init02
|
||||||
|
@@:
|
||||||
|
; во всех остальных случаях - классический режим работы
|
||||||
|
;mode=1 классический режим работы - реакция при наведении в угол
|
||||||
|
mov byte[mode], 1
|
||||||
|
mov ebx, 00000100000000000000000000100000b
|
||||||
|
mcall 40
|
||||||
|
jmp init01
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
init02:
|
||||||
|
mov dword[backAdr], mode02
|
||||||
|
call setHotKey
|
||||||
|
mode02:
|
||||||
|
mcall 10
|
||||||
|
cmp eax, 2 ;обработка нажатия клавиши
|
||||||
|
je hotkey
|
||||||
|
|
||||||
|
cmp byte[keyState], 0
|
||||||
|
je mode02
|
||||||
|
cmp eax, 6 ;обработка перемещений и нажатия мыши
|
||||||
|
je mouse
|
||||||
|
|
||||||
|
jmp mode02
|
||||||
|
|
||||||
|
|
||||||
|
setHotKey: ;установить горячую клавишу
|
||||||
|
push eax ebx ecx edx
|
||||||
|
xor ecx, ecx
|
||||||
|
mov cl, byte[keyActivate] ;нажатие горячей клавиши
|
||||||
|
mov edx, 0x000
|
||||||
|
mcall 66, 4, ecx, edx
|
||||||
|
|
||||||
|
;mov cl, byte[keyActivate]
|
||||||
|
add cl, 128 ;отпускание горячей клавиши
|
||||||
|
;mov edx, 0x000
|
||||||
|
mcall 66, 4, ecx, edx
|
||||||
|
pop edx ecx ebx eax
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
hotkey:
|
||||||
|
mcall 2
|
||||||
|
cmp eax, 1 ;буфер клавиш пуст?
|
||||||
|
je hotkey.end
|
||||||
|
|
||||||
|
cmp al, 2 ;нас интересует только скан код горячей клавиши, иначе выходим
|
||||||
|
jne hotkey.end
|
||||||
|
|
||||||
|
cmp ah, byte[keyActivate] ;если нажата наша горячая клавиша
|
||||||
|
jne @f
|
||||||
|
mov byte[keyState], 1
|
||||||
|
mov byte[state], UNLOCKd
|
||||||
|
jmp hotkey.end
|
||||||
|
@@:
|
||||||
|
push edx
|
||||||
|
xor edx, edx
|
||||||
|
mov dl, byte[keyActivate]
|
||||||
|
add dl, 128
|
||||||
|
cmp ah, dl ;если отпущена наша горячая клавиша
|
||||||
|
jne @f ;hotkey.end
|
||||||
|
;mov ecx, 0 ;строки для отладки и теста
|
||||||
|
;call run_command
|
||||||
|
mov byte[keyState], 0
|
||||||
|
mov byte[state], LOCKd
|
||||||
|
@@:
|
||||||
|
pop edx
|
||||||
|
.end:
|
||||||
|
jmp mode02
|
||||||
|
|
||||||
|
|
||||||
|
init01:
|
||||||
|
mov dword[backAdr], mode01
|
||||||
|
mode01:
|
||||||
mov eax, 10 ; function 10 : wait until event
|
mov eax, 10 ; function 10 : wait until event
|
||||||
mcall ; event type is returned in eax
|
mcall ; event type is returned in eax
|
||||||
|
|
||||||
cmp eax, 6 ;обработка перемещений и нажатия мыши
|
cmp eax, 6 ;обработка перемещений и нажатия мыши
|
||||||
je mouse
|
je mouse
|
||||||
|
|
||||||
jmp START
|
jmp mode01
|
||||||
|
|
||||||
|
|
||||||
mouse:
|
mouse:
|
||||||
;основной цикл программы
|
push ebx
|
||||||
call get_mouse_pos ;получаем текущие координаты мыши
|
mcall 37, 0 ;получаем текущие координаты мыши
|
||||||
|
pop ebx
|
||||||
|
|
||||||
cmp eax, 0 ;левый верхний угол
|
cmp eax, 0 ;левый верхний угол
|
||||||
jne @f
|
jne @f
|
||||||
@ -72,7 +155,7 @@ mouse:
|
|||||||
call run_command
|
call run_command
|
||||||
pop ecx
|
pop ecx
|
||||||
|
|
||||||
jmp START ;finish
|
jmp dword[backAdr] ;finish
|
||||||
@@:
|
@@:
|
||||||
call get_screen_size ;иначе обновляем размеры экрана
|
call get_screen_size ;иначе обновляем размеры экрана
|
||||||
|
|
||||||
@ -91,7 +174,7 @@ mouse:
|
|||||||
call run_command
|
call run_command
|
||||||
pop ecx
|
pop ecx
|
||||||
|
|
||||||
jmp START
|
jmp dword[backAdr]
|
||||||
Ytrue:
|
Ytrue:
|
||||||
;если Y равны, то нас интересует X=0 (левый нижний угол) или X=ScreenWidth (правый нижний)
|
;если Y равны, то нас интересует X=0 (левый нижний угол) или X=ScreenWidth (правый нижний)
|
||||||
shr eax, 16
|
shr eax, 16
|
||||||
@ -102,7 +185,7 @@ Ytrue:
|
|||||||
mov ecx, 1
|
mov ecx, 1
|
||||||
call run_command
|
call run_command
|
||||||
pop ecx
|
pop ecx
|
||||||
jmp START
|
jmp dword[backAdr]
|
||||||
@@:
|
@@:
|
||||||
cmp ax, word[screen.width]
|
cmp ax, word[screen.width]
|
||||||
jne unlockend
|
jne unlockend
|
||||||
@ -112,17 +195,14 @@ Ytrue:
|
|||||||
call run_command
|
call run_command
|
||||||
pop ecx
|
pop ecx
|
||||||
|
|
||||||
jmp START
|
jmp dword[backAdr]
|
||||||
|
|
||||||
unlockend:
|
unlockend:
|
||||||
mov byte[state], UNLOCKd
|
mov byte[state], UNLOCKd
|
||||||
jmp START
|
jmp dword[backAdr]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;структурка данных для хранения параметров экрана
|
|
||||||
screen:
|
|
||||||
.width dw 0
|
|
||||||
.height dw 0
|
|
||||||
;получить размер экрана
|
;получить размер экрана
|
||||||
get_screen_size:
|
get_screen_size:
|
||||||
push eax
|
push eax
|
||||||
@ -136,14 +216,7 @@ get_screen_size:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
;получить позицию мыши
|
|
||||||
get_mouse_pos:
|
|
||||||
;push eax
|
|
||||||
push ebx
|
|
||||||
mcall 37, 0
|
|
||||||
pop ebx
|
|
||||||
;pop eax
|
|
||||||
ret
|
|
||||||
|
|
||||||
|
|
||||||
;запуск приложения: ecx - активный угол: lu=0, ld=1, ru=2, rd=3
|
;запуск приложения: ecx - активный угол: lu=0, ld=1, ru=2, rd=3
|
||||||
@ -151,14 +224,14 @@ run_command:
|
|||||||
cmp byte[state], UNLOCKd
|
cmp byte[state], UNLOCKd
|
||||||
jne run_command.end
|
jne run_command.end
|
||||||
|
|
||||||
push eax
|
; cmp byte[mode], 2 ;если режим второй
|
||||||
push ebx
|
; jne @f
|
||||||
push ecx
|
|
||||||
|
|
||||||
|
push eax ebx ecx
|
||||||
|
|
||||||
cmp ecx, 0
|
cmp ecx, 0
|
||||||
jne @f
|
jne @f
|
||||||
mov eax, dword[newData.lu] ;testData.lu
|
mov eax, dword[newData.lu]
|
||||||
mov dword[struct70.path_adr], eax
|
mov dword[struct70.path_adr], eax
|
||||||
jmp .end_set_path
|
jmp .end_set_path
|
||||||
@@:
|
@@:
|
||||||
@ -196,10 +269,9 @@ run_command:
|
|||||||
mcall 70, struct70
|
mcall 70, struct70
|
||||||
@@:
|
@@:
|
||||||
mov byte[state], LOCKd
|
mov byte[state], LOCKd
|
||||||
|
;mov byte[keyState], 0
|
||||||
|
|
||||||
pop ecx
|
pop ecx ebx eax
|
||||||
pop ebx
|
|
||||||
pop eax
|
|
||||||
.end:
|
.end:
|
||||||
ret
|
ret
|
||||||
|
|
||||||
@ -211,23 +283,6 @@ struct70: ;
|
|||||||
.path db 0 ; "/rd/1/TINYPAD",0 ; путь
|
.path db 0 ; "/rd/1/TINYPAD",0 ; путь
|
||||||
.path_adr dd 0 ;testData.lu
|
.path_adr dd 0 ;testData.lu
|
||||||
|
|
||||||
|
|
||||||
state: db 0 ; 0=unlock, 1=lock
|
|
||||||
mode: db 0 ;режим работы (для будущего расширения функционала)
|
|
||||||
|
|
||||||
;testData:
|
|
||||||
; .lu db '/rd/1/SHELL', 0
|
|
||||||
; .ld db '/rd/1/RUN', 0
|
|
||||||
; .ru db "/rd/1/TINYPAD", 0
|
|
||||||
; .rd db '/rd/1/File Managers/EOLITE', 0
|
|
||||||
|
|
||||||
newData: ;табличка адресов командных строк
|
|
||||||
.lu dd 0
|
|
||||||
.ld dd 0
|
|
||||||
.ru dd 0
|
|
||||||
.rd dd 0
|
|
||||||
newDataEnd:
|
|
||||||
|
|
||||||
;имя конфигурационного файла
|
;имя конфигурационного файла
|
||||||
fileName: db 'SETTINGS/HOTANGLES.CFG', 0
|
fileName: db 'SETTINGS/HOTANGLES.CFG', 0
|
||||||
|
|
||||||
@ -242,8 +297,25 @@ loadConfig:
|
|||||||
|
|
||||||
add edx, eax ;иначе кладём в edx - адрес конца файла
|
add edx, eax ;иначе кладём в edx - адрес конца файла
|
||||||
|
|
||||||
cmp byte[eax], 121 ;'y' ;если параметр активности приложения имеет статус: не активно
|
mov byte[mode], 0
|
||||||
jne loadConfig.exit ;то завершаем работу приложения
|
cmp byte[eax], '0' ;121 ;'y' ;если параметр активности приложения имеет статус: не активно
|
||||||
|
je loadConfig.exit ;то завершаем работу приложения
|
||||||
|
cmp byte[eax], 110 ;'n'
|
||||||
|
je loadConfig.exit
|
||||||
|
|
||||||
|
;иначе выставляем режим
|
||||||
|
cmp byte[eax], '2' ;режим активации по горячей клавише
|
||||||
|
jne @f
|
||||||
|
mov byte[mode], 2
|
||||||
|
jmp loadConfig.modeEnd
|
||||||
|
@@:
|
||||||
|
cmp byte[eax], '3' ;режим жеста при зажатой клавише
|
||||||
|
jne @f
|
||||||
|
mov byte[mode], 3
|
||||||
|
jmp loadConfig.modeEnd
|
||||||
|
@@:
|
||||||
|
mov byte[mode], 1 ;во всех остальных случаях - классический режим
|
||||||
|
.modeEnd:
|
||||||
|
|
||||||
push edi
|
push edi
|
||||||
push esi
|
push esi
|
||||||
@ -316,7 +388,7 @@ selfNameSize = 10 ;
|
|||||||
;
|
;
|
||||||
compareBytes:
|
compareBytes:
|
||||||
push edi esi ecx ebx
|
push edi esi ecx ebx
|
||||||
mov eax, 0 ;xor eax, eax
|
xor eax, eax
|
||||||
mov ecx, selfNameSize ;max размер строк 11
|
mov ecx, selfNameSize ;max размер строк 11
|
||||||
@@:
|
@@:
|
||||||
mov bl, byte[edi]
|
mov bl, byte[edi]
|
||||||
@ -334,9 +406,6 @@ compareBytes:
|
|||||||
pop ebx ecx esi edi
|
pop ebx ecx esi edi
|
||||||
ret
|
ret
|
||||||
;
|
;
|
||||||
slotMax dd 0
|
|
||||||
selfPID dd 0
|
|
||||||
buf db 1024 dup(0)
|
|
||||||
copyKill:
|
copyKill:
|
||||||
push eax ebx ecx esi edi
|
push eax ebx ecx esi edi
|
||||||
|
|
||||||
@ -380,5 +449,31 @@ copyKill:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
keyActivate db 41 ;16 ;'Q' ;клавиша активации
|
||||||
|
keyState db 0 ;0-клавиша не активна, 1 - клавиша активна
|
||||||
|
|
||||||
|
backAdr rd 1 ;dd 0 ; адрес для возврата из проверки мыши
|
||||||
|
|
||||||
|
;slotMax dd 0
|
||||||
|
;selfPID dd 0
|
||||||
|
;buf db 1024 dup(0)
|
||||||
|
slotMax rd 1
|
||||||
|
selfPID rd 1
|
||||||
|
buf rb 1024
|
||||||
|
|
||||||
|
;структурка данных для хранения параметров экрана
|
||||||
|
screen:
|
||||||
|
.width rw 1 ;dw 0
|
||||||
|
.height rw 1 ;dw 0
|
||||||
|
|
||||||
|
state: rb 1 ;состояние: 0=unlock, 1=lock
|
||||||
|
mode: rb 1 ;режим работы приложения: 0=не работает, 1=классический, 2=по горячей клавише
|
||||||
|
|
||||||
|
newData: ;табличка адресов командных строк
|
||||||
|
.lu rd 1
|
||||||
|
.ld rd 1
|
||||||
|
.ru rd 1
|
||||||
|
.rd rd 1
|
||||||
|
newDataEnd:
|
||||||
|
|
||||||
I_END:
|
I_END:
|
||||||
|
@ -1,13 +1,16 @@
|
|||||||
Hot Angles
|
Hot Angles
|
||||||
|
|
||||||
Version 0.3.3: Sep 25, 2018
|
Version 0.3.5: Oct 5, 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) состояние активности опции: y - опция активна, n или любой другой символ - опция отключена;
|
1) состояние активности опции (один символ):
|
||||||
|
1 или y - опция активна, активирован классический режим работы уголков,
|
||||||
|
2 - опция активна, активирован режим работы по горячей клавише,
|
||||||
|
n или любой другой символ - опция отключена;
|
||||||
2) команда (полное имя приложения) для верхнего левого угла экрана;
|
2) команда (полное имя приложения) для верхнего левого угла экрана;
|
||||||
3) команда (полное имя приложения) для левого нижнего угла экрана;
|
3) команда (полное имя приложения) для левого нижнего угла экрана;
|
||||||
4) команда (полное имя приложения) для правого верхнего угла экрана;
|
4) команда (полное имя приложения) для правого верхнего угла экрана;
|
||||||
@ -19,16 +22,38 @@ HACONFIG -
|
|||||||
@HOTANGLES не запустится, если конфигурационный файл отсутствует или был переименован.
|
@HOTANGLES не запустится, если конфигурационный файл отсутствует или был переименован.
|
||||||
HACONFIG при отсутствии конфигурационного файла выставляет все поля по умолчанию, но не создаёт файл конфигурации самостоятельно (для этого необходимо нажать кнопку "Применить", тогда отсутствующий файл конфигурации будет создан, а существующий перезаписан).
|
HACONFIG при отсутствии конфигурационного файла выставляет все поля по умолчанию, но не создаёт файл конфигурации самостоятельно (для этого необходимо нажать кнопку "Применить", тогда отсутствующий файл конфигурации будет создан, а существующий перезаписан).
|
||||||
При первом старте утилиты все углы рабочей области настроены на запуск конфигуратора, где вы можете настроить утилиту под себя или отключить её.
|
При первом старте утилиты все углы рабочей области настроены на запуск конфигуратора, где вы можете настроить утилиту под себя или отключить её.
|
||||||
Hot Angles начиная с revision #7392 включен в состав дистрибутива и добавлен в автозапуск при старте системы. Поддержка русского языка добавлена в revision #7395.
|
Hot Angles начиная с revision #7392 включен в состав дистрибутива и добавлен в автозапуск при старте системы. Поддержка русского языка добавлена в revision #7395. Начиная с версии 0.3.5 добавлен второй режим работы утилиты и возможность выбора программ через Open Dialog.
|
||||||
|
|
||||||
В директории extra, рядом с исходным кодом утилит, расположены дополнительные функциональные блоки. На текущий момент директория содержит: 1 утилиту.
|
В директории extra, рядом с исходным кодом утилит, расположены дополнительные функциональные блоки. На текущий момент директория содержит: 1 утилиту.
|
||||||
MIN - минимизировать/свернуть все окна (кроме системных). Вы можете назначить запуск MIN на любой активный угол вашего рабочего стола, чтобы одним движением курсора в этот угол свернуть все окна на экране.
|
MIN - минимизировать/свернуть все окна (кроме системных). Вы можете назначить запуск MIN на любой активный угол вашего рабочего стола, чтобы одним движением курсора в этот угол свернуть все окна на экране.
|
||||||
|
См. подробнее раздел "Extra-расширения функциональности".
|
||||||
|
|
||||||
|
|
||||||
|
Режимы работы:
|
||||||
|
--------------------------------------------------
|
||||||
|
Текущая версия конфигуратора и утилиты работают стабильно только в классическом режиме.
|
||||||
|
В классическом режиме угол активируется путём наведения курсора. Всё происходит автоматически. Вы наводите мышь в заданный угол рабочего стола, и запускается приложение, связанное с этим углом.
|
||||||
|
Этот режим активируется символом '1' или символом 'y' в начале конфигурационного файла.
|
||||||
|
|
||||||
|
Начиная с версии 0.3.5 утилита @HOTANGLES поддерживает второй режим работы - активацию углов по горячей клавише. Эта функциональность тестируется, поэтому настроить её через конфигуратор нельзя.
|
||||||
|
Активируется режим символом '2' в начале конфигурационного файла. Изменить клавишу активации нельзя, по умолчанию это символ тильда '~' или '`'. В этом режиме для активации угла требуется зажать клавишу тильда и, одновременно с этим, навести курсор в нужный угол рабочего стола.
|
||||||
|
|
||||||
|
|
||||||
Прочие рекомендации:
|
Прочие рекомендации:
|
||||||
Некоторым пользователям может быть удобно настроить открытие меню при попадании в угол его расположения. Например, если у вас кнопка "Меню" рассположена в левом нижнем углу, то задайте для этого угла команду:
|
--------------------------------------------------
|
||||||
|
Некоторым пользователям может быть удобно настроить открытие меню при попадании в угол его расположения. Например, если у вас кнопка "Меню" расположена в левом нижнем углу, то задайте для этого угла команду:
|
||||||
/rd/1/@MENU
|
/rd/1/@MENU
|
||||||
|
|
||||||
|
|
||||||
|
Extra-расширения функциональности:
|
||||||
|
--------------------------------------------------
|
||||||
|
Утилита MIN - сворачивает окна на рабочем столе (кроме окон системных процессов с именем, начинающимся с символа @). MIN можно назначить как действие для запуска в Hot Angles, тогда при наведении курсора в заданный угол все окна будут свёрнуты. MIN, как и остальные (extra-расширения) функциональные блоки, не входит в дистрибутив. К тому же утилита очень проста и дублирует функционал панели задач (taskbar). Каждый сам решает о необходимости её использования.
|
||||||
|
СКАЧАТЬ MIN (rev.7417):
|
||||||
|
http://websvn.kolibrios.org/dl.php?repname=Kolibri+OS&path=%2Fprograms%2Fother%2Fha%2Fextra%2FMIN&rev=7417&peg=7417
|
||||||
|
|
||||||
|
|
||||||
Влияние на производительность:
|
Влияние на производительность:
|
||||||
|
--------------------------------------------------
|
||||||
Если вы используете систему в задачах реального времени или в задачах с высокой нагрузкой на CPU отключите эту опцию. Так же, если вы желаете добиться максимальной скорости работы ОС, то использование этой опции не рекомендуется.
|
Если вы используете систему в задачах реального времени или в задачах с высокой нагрузкой на CPU отключите эту опцию. Так же, если вы желаете добиться максимальной скорости работы ОС, то использование этой опции не рекомендуется.
|
||||||
Приложение может увеличивать нагрузку на систему в два раза при обычном использовании мыши (перемещение курсора, клики в определённых областях экрана).
|
Приложение может увеличивать нагрузку на систему в два раза при обычном использовании мыши (перемещение курсора, клики в определённых областях экрана).
|
||||||
При выполнении основной функции (запуск любого приложения при наведении курсора в угол экрана) нагрузка на систему возрастает естественным образом.
|
При выполнении основной функции (запуск любого приложения при наведении курсора в угол экрана) нагрузка на систему возрастает естественным образом.
|
||||||
@ -42,7 +67,7 @@ MIN -
|
|||||||
[-] повреждение файла конфигурации после многократного вкл./выкл. опции Hot Angles;
|
[-] повреждение файла конфигурации после многократного вкл./выкл. опции Hot Angles;
|
||||||
[-] режим явной команды клавишей активации: зажимаем горячую клавишу (например, shift), наводим курсор в угол - происходит реакция;
|
[-] режим явной команды клавишей активации: зажимаем горячую клавишу (например, shift), наводим курсор в угол - происходит реакция;
|
||||||
[-] режим жеста/направления: зажимаем активирующую клавишу, после этого приложение анализирует мышь, в зависимости от направления движения мыши (от начальных координат в момент активации опции) выбирается активируемый угол - происходит реакция;
|
[-] режим жеста/направления: зажимаем активирующую клавишу, после этого приложение анализирует мышь, в зависимости от направления движения мыши (от начальных координат в момент активации опции) выбирается активируемый угол - происходит реакция;
|
||||||
[-] добавить диалог выбора пути OpenDialog в конфигураторе;
|
[+] добавить диалог выбора пути OpenDialog в конфигураторе;
|
||||||
[+] переход на EditBox из библиотеки box_lib;
|
[+] переход на EditBox из библиотеки box_lib;
|
||||||
[+] размазывание текста или его наслоение при вводе в поле EditBox'а;
|
[+] размазывание текста или его наслоение при вводе в поле EditBox'а;
|
||||||
[+] после запуска приложения, все поля находятся в фокусе (это фича из-за бага в компоненте EditBox);
|
[+] после запуска приложения, все поля находятся в фокусе (это фича из-за бага в компоненте EditBox);
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
y
|
1
|
||||||
/rd/1/HACONFIG
|
/rd/1/HACONFIG
|
||||||
/rd/1/HACONFIG
|
/rd/1/HACONFIG
|
||||||
/rd/1/HACONFIG
|
/rd/1/HACONFIG
|
||||||
|
Loading…
Reference in New Issue
Block a user