2015-07-29 18:37:34 +03:00
# ifndef AUTOBUILD
# include "lang.h--"
# endif
# define MEMSIZE 0x23E80
# include "..\lib\kolibri.h"
# include "..\lib\strings.h"
# include "..\lib\mem.h"
# include "..\lib\file_system.h"
# include "..\lib\dll.h"
# include "..\lib\gui.h"
# include "..\lib\obj\libio_lib.h"
# include "..\lib\obj\box_lib.h"
# include "..\lib\patterns\restart_process.h"
2015-07-30 17:54:30 +03:00
# include "kos_mouse_functions.h"
# ifdef LANG_RUS
? define WINDOW_TITLE " <EFBFBD> <EFBFBD> ઠ <20> <20> <> <EFBFBD> <EFBFBD> ன<EFBFBD> <E0AEA9> <20> <> ࠬ<EFBFBD> <E0A0AC> <20> <> <EFBFBD> <EFBFBD> "
? define CHECK_MOUSE_1 " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <20> ⮩ <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> "
? define CHECK_MOUSE_2 " <EFBFBD> <EFBFBD> <EFBFBD> <20> <EFBFBD> ન <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> "
? define POINTER_SPEED " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 㪠<> <E3AAA0> ⥫<EFBFBD> <20> <> <EFBFBD> <EFBFBD> "
? define POINTER_DELAY " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> প<EFBFBD> 㪠<> <E3AAA0> ⥫<EFBFBD> <20> <> <EFBFBD> <EFBFBD> "
? define MOUSE_EMULATION " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> ࠢ<EFBFBD> <E0A0A2> <EFBFBD> <EFBFBD> <EFBFBD> 㪠<> <E3AAA0> ⥫<EFBFBD> <E2A5AB> <20> <> १ <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> "
? define MADMOUSE " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <20> <> <EFBFBD> <EFBFBD> <20> <> ࠭<EFBFBD> "
//?define MADMOUSE_DESCRIPTION "'When cursor reaches screen side switch it to inverce side' -I"
# else
? define WINDOW_TITLE " Mouse testing and configuration "
? define CHECK_MOUSE_1 " Click on this area to "
? define CHECK_MOUSE_2 " check your mouse buttons "
? define POINTER_SPEED " Mouse pointer speed "
? define POINTER_DELAY " Mouse pointer delay "
? define MOUSE_EMULATION " Enable mouse emulation using keyboard NumPad "
? define MADMOUSE " Through screen sides for pointer "
//?define MADMOUSE_DESCRIPTION "'When cursor reaches screen side switch it to inverce side' -I"
# endif
2015-07-29 18:37:34 +03:00
2015-07-30 17:54:30 +03:00
frame mouse_frame = { 0 , 000 , 14 , 130 , 14 , 0x000111 , 0xFFFfff , 0 , 0 , 0 , 0 , 6 , 0x000111 , 0xCCCccc } ;
2015-07-29 18:37:34 +03:00
2015-07-30 17:54:30 +03:00
unsigned char panels_img_data [ ] = FROM " mouse_image.raw " ;
raw_image panels_img = { 59 , 101 , # panels_img_data } ;
2015-07-29 18:37:34 +03:00
system_colors sc ;
proc_info Form ;
struct mouse_cfg1 {
2015-07-30 17:54:30 +03:00
char pointer_speed ,
pointer_delay ,
emulation ,
madmouse ,
button_clicked ;
2015-07-29 18:37:34 +03:00
} mouse_cfg ;
void main ( ) {
2015-07-30 17:54:30 +03:00
char id , old_button_clicked ;
mouse m ;
2015-07-29 18:37:34 +03:00
mem_Init ( ) ;
2015-07-29 23:43:05 +03:00
load_dll ( boxlib , # box_lib_init , 0 ) ;
2015-07-29 18:37:34 +03:00
LoadCfg ( ) ;
2015-07-30 17:54:30 +03:00
SetEventMask ( 0x27 ) ;
2015-07-29 18:37:34 +03:00
loop ( ) switch ( WaitEvent ( ) )
{
2015-07-30 17:54:30 +03:00
case evMouse :
m . get ( ) ;
if ( m . y < = mouse_frame . start_y ) | | ( m . y > = mouse_frame . start_y + mouse_frame . size_y )
| | ( m . x > = mouse_frame . start_x + mouse_frame . size_x ) | | ( m . x < = mouse_frame . start_x ) break ;
old_button_clicked = mouse_cfg . button_clicked ;
if ( m . lkm ) mouse_cfg . button_clicked = 1 ;
else if ( m . pkm ) mouse_cfg . button_clicked = 2 ;
else if ( m . mkm ) mouse_cfg . button_clicked = 3 ;
else mouse_cfg . button_clicked = 0 ;
if ( mouse_cfg . button_clicked ! = old_button_clicked ) DrawMouseImage ( ) ;
break ;
2015-07-29 18:37:34 +03:00
case evButton :
id = GetButtonID ( ) ;
2015-07-30 17:54:30 +03:00
if ( id = = 1 )
{
ExitProcess ( ) ;
}
if ( id = = 99 )
{
mouse_cfg . button_clicked = 0 ;
DrawMouseImage ( ) ;
break ;
}
if ( id = = 100 )
{
if ( mouse_cfg . emulation = = true ) KillProcessByName ( " mousemul " , SINGLE ) ;
else RunProgram ( " /sys/mousemul " , 0 ) ;
mouse_cfg . emulation ^ = 1 ;
}
if ( id = = 101 )
{
if ( mouse_cfg . madmouse = = true ) KillProcessByName ( " madmouse " , SINGLE ) ;
else RunProgram ( " /sys/madmouse " , 0 ) ;
mouse_cfg . madmouse ^ = 1 ;
}
if ( id = = 120 )
2015-07-29 18:37:34 +03:00
{
2015-07-30 17:54:30 +03:00
mouse_cfg . pointer_speed + + ;
SetMouseSpeed ( mouse_cfg . pointer_speed ) ;
2015-07-29 18:37:34 +03:00
}
2015-07-30 18:49:09 +03:00
if ( id = = 121 ) & & ( mouse_cfg . pointer_speed > 1 )
2015-07-30 17:54:30 +03:00
{
mouse_cfg . pointer_speed - - ;
SetMouseSpeed ( mouse_cfg . pointer_speed ) ;
}
if ( id = = 122 )
{
mouse_cfg . pointer_delay + + ;
SetMouseDelay ( mouse_cfg . pointer_delay ) ;
}
if ( id = = 123 ) & & ( mouse_cfg . pointer_delay > 0 )
{
mouse_cfg . pointer_delay - - ;
SetMouseDelay ( mouse_cfg . pointer_delay ) ;
}
DrawWindowContent ( ) ;
2015-07-29 18:37:34 +03:00
break ;
case evKey :
if ( GetKey ( ) = = 27 ) ExitProcess ( ) ;
break ;
case evReDraw :
sc . get ( ) ;
2015-07-30 17:54:30 +03:00
DefineAndDrawWindow ( 430 , 150 , 360 , 280 + GetSkinHeight ( ) , 0x34 , sc . work , WINDOW_TITLE ) ;
2015-07-29 18:37:34 +03:00
GetProcessInfo ( # Form , SelfInfo ) ;
if ( Form . status_window > 2 ) break ;
2015-07-30 17:54:30 +03:00
mouse_frame . size_x = - mouse_frame . start_x * 2 + Form . cwidth ;
mouse_frame . font_color = sc . work_text ;
mouse_frame . font_backgr_color = sc . work ;
mouse_frame . ext_col = sc . work_graph ;
2015-07-29 18:37:34 +03:00
DrawWindowContent ( ) ;
}
}
void DrawWindowContent ( ) {
char pos_x = 22 ;
2015-07-30 17:54:30 +03:00
DefineButton ( mouse_frame . start_x , mouse_frame . start_y , mouse_frame . size_x , mouse_frame . size_y , 99 + BT_NOFRAME , 0xF0F2F3 ) ; //needed to handle mouse_up and refresh mouse image
2015-07-29 18:37:34 +03:00
frame_draw stdcall ( # mouse_frame ) ;
2015-07-30 17:54:30 +03:00
DrawMouseImage ( ) ;
WriteTextB ( pos_x + 110 , mouse_frame . start_y + 25 , 0x90 , 0x2C343C , CHECK_MOUSE_1 ) ;
WriteTextB ( pos_x + 110 , mouse_frame . start_y + 45 , 0x90 , 0x2C343C , CHECK_MOUSE_2 ) ;
2015-07-29 18:37:34 +03:00
2015-07-30 17:54:30 +03:00
PanelCfg_MoreLessBox ( pos_x , mouse_frame . start_y + 142 , 120 , 121 , mouse_cfg . pointer_speed , POINTER_SPEED ) ;
PanelCfg_MoreLessBox ( pos_x , mouse_frame . start_y + 170 , 122 , 123 , mouse_cfg . pointer_delay , POINTER_DELAY ) ;
2015-07-29 18:37:34 +03:00
2015-07-30 17:54:30 +03:00
PanelCfg_CheckBox ( pos_x , mouse_frame . start_y + 202 , 100 , MOUSE_EMULATION , mouse_cfg . emulation ) ;
PanelCfg_CheckBox ( pos_x , mouse_frame . start_y + 226 , 101 , MADMOUSE , mouse_cfg . madmouse ) ;
2015-07-29 18:37:34 +03:00
}
void PanelCfg_CheckBox ( dword x , y , id , text , byte value ) {
CheckBox ( x , y , 14 , 14 , id , text , sc . work_graph , sc . work_text , value ) ;
}
void PanelCfg_MoreLessBox ( dword x , y , id_more , id_less ; byte value ; dword text ) {
MoreLessBox ( x , y , 18 , id_more , id_less , # sc , value , text ) ;
}
2015-07-30 17:54:30 +03:00
void DrawMouseImage ( ) {
_PutImage ( mouse_frame . start_x + 30 , mouse_frame . start_y + 15 , panels_img . w , panels_img . h , mouse_cfg . button_clicked * panels_img . w * panels_img . h * 3 + panels_img . data ) ;
}
2015-07-29 18:37:34 +03:00
void LoadCfg ( ) {
2015-07-30 17:54:30 +03:00
mouse_cfg . pointer_delay = GetMouseDelay ( ) ;
mouse_cfg . pointer_speed = GetMouseSpeed ( ) ;
mouse_cfg . madmouse = CheckProcessExists ( " MADMOUSE " ) ;
mouse_cfg . emulation = CheckProcessExists ( " MOUSEMUL " ) ;
2015-07-29 18:37:34 +03:00
}
2015-07-30 17:54:30 +03:00
2015-07-29 18:37:34 +03:00
stop :