Показать сообщение отдельно
Старый 18.10.2008, 12:05   #60
alexsorockin
Старший Пользователь
 
Регистрация: 12.07.2008
Возраст: 40
Город: Рязань
Регион: 62
Машина: ROVER 416
Сообщений: 172
alexsorockin is on a distinguished road
По умолчанию

#Singleinstance force

; Скрипт для подключения автомобильного джойстика Sony X4S к CarPc
; *********************** Секция настроек начало ***********************


SetFormat, float, 0.1 ; Omit decimal point from axis position percentages.

JoystickNumber = 1
First_VolumeStep = 1
Repeat_VolumeStep_default = 2
Repeat_VolumeStep_Amplifier = 1.2
First_MouseStep = 1
Repeat_MouseStep_default = 2
Repeat_MouseStep_Amplifier = 1.2
sleeptime_default = 50
sleeptime = sleeptime_default

; Погрешность определения значений
;KeyGetDelta = 0.3
; Значения кнопок
joyx_default=100
joyz_default=100

jKey_shift_min=2
jKey_shift_max=10

JKey_OFF_min = 3.6
JKey_OFF_max = 4.2

JKey_SOURCE_min = 4.6
JKey_SOURCE_max = 5.2

JKey_ATT_min = 5.0
JKey_ATT_max = 5.5

JKey_X1_min = 7.0
JKey_X1_max = 7.5

JKey_NEXT_min = 10.9
JKey_NEXT_max = 11.4

JKey_PREV_min = 8.0
JKey_PREV_max = 9.0

JKey_VOLU_min = 19.00
JKey_VOLU_max = 21.00

JKey_VOLD_min = 14.4
JKey_VOLD_max = 14.9

JKey_X2_min = 38.6
JKey_X2_max = 39.1

JKey_X3_min = 26.9
JKey_X3_max = 27.9
; Переменная в которой запоминаем громкость (для Mute)
MUTE_SOUND = 0
; *********************** Секция настроек конец ***********************

; Читаем инфу по жостику. Пока с ней ничего не делаем
GetKeyState, joy_buttons, %JoystickNumber%JoyButtons
GetKeyState, joy_name, %JoystickNumber%JoyName
GetKeyState, joy_info, %JoystickNumber%JoyInfo

prev_joyx = joyx_default
prev_joyz = joyz_default
joyx = joyx_default
joyz = joyz_default
timer = 0
joymode = 1
joymodes = 2

SoundGet, MUTE_SOUND
Loop
{
; Читаем состояние кнопок. Если кнопарь нажат, то переменная button(№кнопки)= D
Loop, %joy_buttons%
{
GetKeyState, button%a_index%, %JoystickNumber%joy%a_index%
}

; Читаем показания оси Х - по сути основных кнопок жостика
GetKeyState, joyx, %JoystickNumber%JoyX
GetKeyState, joyz, %JoystickNumber%joyZ

;ToolTip, %joyx%

; Читаем мышиный скролл (пока не пользуем)
; GetKeyState, mouse_Down, WheelDown
; GetKeyState, mouse_Up, WheelUp

; Генерим нужные действия:

;ToolTip, joyx=%joyx% (%joyx_default%) joyz=%joyz% (%joyz_default%)
;tooltip, %joymode%

if (joyx<>"") and((joyx<>prev_joyx) or (joyz<>prev_joyz))
{

if (prev_joyx <> joyx_default) or (prev_joyz<>joyz_default)
{
res_button_released( prev_joyx , prev_joyz , timer)
}
timer = 0
prev_joyx := joyx
prev_joyz := joyz
if (joyx <> joyx_default) or (joyz<>joyz_default)
{
res_button_pressed(joyx, joyz, timer)
; SoundPlay beep.wav
}
}
else
{
if (joyx <> joyx_default) or (joyz<>joyz_default)
{
timer := timer + 1
res_button_pressed(prev_joyx, prev_joyz, timer)
}

}

Sleep, sleeptime
}


;---------------------------------------------------------------------------------

res_button_pressed(jx, jz , time_from_pressing)
{
global ; чтобы иметь доступ к глобальным переменным

; SoundPlay, beep.wav
; tooltip, %jx% %jz% %time_from_pressing%

if (jz = joyz_default) and (time_from_pressing = 0) ; то есть обрабатываем непосредственно нажатия, а не удерживания кнопок, БЕЗ ШИФТА!
{
; JKey_X1
If (jx <= JKey_X1_max) and (jx >= JKey_X1_min)
{
SoundPlay, beep.wav
if (joymode=1)
{
SEND ^{F4}
}
if (joymode=2)
{
}
}

; JKey_OFF
If (jx <= JKey_OFF_max) and (jx_min >= JKey_OFF) and (jz = joyz_default)
{
SoundPlay, beep.wav
if (joymode=1)
{
SEND ^{F6}
}
if (joymode=2)
{
;Действие кнопки OFF в режиме 2
MouseGetPos, xpos, ypos
MouseClick, left, xpos, ypos
}
}


; JKey_ATT ;Выключаем микрофон
If (jx <= JKey_ATT_max) and (jx>= JKey_ATT_min)
{
SoundSet, +1, MICROPHONE, mute, 2
SoundPlay, beep.wav
}


; JKey_X2 - переключение режимов работы джойстика
If (jx <= JKey_X2_max) and (jx>= JKey_X2_min)
{
if (joymode>=joymodes)
{
joymode=1
sleeptime := sleeptime_default
}
else
{
joymode:=joymode+1
}
SoundPlay, joymode%joymode%.wav
}

; JKey_X3
If (jx <= JKey_X3_max) and (jx>= JKey_X3_min)
{
SoundPlay, beep.wav
if (joymode=1)
{
SEND ^{F5}
}
if (joymode=2)
{
SEND {RBUTTON}
}
}

; JKey_SOURCE
If (jx<= JKey_SOURCE_max) and (jx>= JKey_SOURCE_min)
{
SoundPlay, beep.wav
if (joymode=1)
{
SEND ^{F3}
}
if (joymode=2)
{
MouseGetPos, xpos, ypos
MouseClick, left, xpos, ypos
}
}

}

;если не надавлен shift
if (jz = joyz_default)
{
; переключение песен предыдущая-следующая, движение мыши вверх-вниз
If (jx <= JKey_PREV_max) and (jx>= JKey_PREV_min) and ((time_from_pressing/5) = round(time_from_pressing/5))
{
if time_from_pressing = 0
{
SoundPlay, beep.wav
if (joymode=1)
{
SEND ^{F1}
}
if (joymode=2)
{
MouseGetPos, xpos, ypos
MouseMove, xpos,ypos+First_MouseStep
Repeat_MouseStep:=Repeat_MouseStep_default
sleeptime := sleeptime_default
}
}
else
if time_from_pressing >= 15
{
if (joymode=1)
{
;Перемотка песни назад
}
if (joymode=2)
{
MouseGetPos, xpos, ypos
Repeat_MouseStep:=Repeat_MouseStep_Amplifier*Repea t_MouseStep
MouseMove, xpos,ypos+Repeat_MouseStep
sleeptime = 0
}
}

}
If (jx <= JKey_NEXT_max) and (jx>= JKey_NEXT_min) and ((time_from_pressing/5) = round(time_from_pressing/5))
{
if time_from_pressing = 0
{
SoundPlay, beep.wav
if (joymode=1)
{
SEND ^{F2}
}
if (joymode=2)
{
MouseGetPos, xpos, ypos
MouseMove, xpos,ypos-First_MouseStep
Repeat_MouseStep:=Repeat_MouseStep_default
sleeptime := sleeptime_default
}
}
else
if time_from_pressing >= 15
{
if (joymode=1)
{
;Перемотка песни вперёд
}
if (joymode=2)
{
MouseGetPos, xpos, ypos
Repeat_MouseStep:=Repeat_MouseStep_Amplifier*Repea t_MouseStep
MouseMove, xpos,ypos-Repeat_MouseStep
sleeptime = 0
}
}
}
}

; изменение громкости, движение мыши влево-вправо
If (jx <= JKey_VOLD_max) and (jx>= JKey_VOLD_min) and ((time_from_pressing/5) = round(time_from_pressing/5))
{
if time_from_pressing = 0
{
SoundPlay, beep.wav
if (joymode=1)
{
sleeptime := sleeptime_default
Repeat_VolumeStep:=Repeat_VolumeStep_default
SoundGet, master_volume
master_volume := master_volume-First_VolumeStep
SoundSet, master_volume
}
if (joymode=2)
{
MouseGetPos, xpos, ypos
MouseMove, xpos-First_MouseStep,ypos
Repeat_MouseStep:=Repeat_MouseStep_default
sleeptime := sleeptime_default
}
}
else
if time_from_pressing >= 15
{
if (joymode=1)
{
sleeptime := sleeptime_default
Repeat_VolumeStep:=Repeat_VolumeStep_Amplifier*Rep eat_VolumeStep
SoundGet, master_volume
master_volume := master_volume-Repeat_VolumeStep
SoundSet, master_volume
}
if (joymode=2)
{
MouseGetPos, xpos, ypos
Repeat_MouseStep:=Repeat_MouseStep_Amplifier*Repea t_MouseStep
MouseMove, xpos-Repeat_MouseStep,ypos
sleeptime = 0
}
}

}
If (jx <= JKey_VOLU_max) and (jx>= JKey_VOLU_min) and ((time_from_pressing/5) = round(time_from_pressing/5))
{
if time_from_pressing = 0
{
SoundPlay, beep.wav
if (joymode=1)
{
sleeptime := sleeptime_default
Repeat_VolumeStep:=Repeat_VolumeStep_default
SoundGet, master_volume
master_volume := master_volume+First_VolumeStep
SoundSet, master_volume
}
if (joymode=2)
{
MouseGetPos, xpos, ypos
MouseMove, xpos+First_MouseStep,ypos
Repeat_MouseStep:=Repeat_MouseStep_default
sleeptime := sleeptime_default
}
}
else
if time_from_pressing >= 15
{
if (joymode=1)
{
sleeptime := sleeptime_default
Repeat_VolumeStep:=Repeat_VolumeStep_Amplifier*Rep eat_VolumeStep
SoundGet, master_volume
master_volume := master_volume+Repeat_VolumeStep
SoundSet, master_volume
}
if (joymode=2)
{
MouseGetPos, xpos, ypos
Repeat_MouseStep:=Repeat_MouseStep_Amplifier*Repea t_MouseStep
MouseMove, xpos+Repeat_MouseStep,ypos
sleeptime = 0
}
}
}

;если надавлен shift
if (jz <> joyz_default)
{
; выделение файлов
If (jx <= JKey_PREV_max) and (jx>= JKey_PREV_min) and ((time_from_pressing/5) = round(time_from_pressing/5))
{
if time_from_pressing = 0
{
SoundPlay, beep.wav
if (joymode=1)
{
}
if (joymode=2)
{
SEND +{DOWN}
}
}
else
if time_from_pressing >= 15
{
if (joymode=1)
{
}
if (joymode=2)
{
SEND +{DOWN}
}
}

}
If (jx <= JKey_NEXT_max) and (jx>= JKey_NEXT_min) and ((time_from_pressing/5) = round(time_from_pressing/5))
{
if time_from_pressing = 0
{
SoundPlay, beep.wav
if (joymode=1)
{
}
if (joymode=2)
{
SEND +{UP}
}
}
else
if time_from_pressing >= 15
{
if (joymode=1)
{
}
if (joymode=2)
{
SEND +{UP}
}
}
}

If ((time_from_pressing/5) = round(time_from_pressing/5)) and (jx <= JKey_X3_max) and (jx>= JKey_X3_min)
{
if time_from_pressing = 0
{
SoundPlay, beep.wav
if (joymode=1)
{
}
if (joymode=2)
{
SEND ^{LBUTTON}
}
}
else
if time_from_pressing >= 15
{
if (joymode=1)
{
}
if (joymode=2)
{
}
}
}
}

}




;---------------------------------------------------------------------------------
;Действие при отпускании

res_button_released(jx, jz , time_from_pressing)
{
global ; чтобы иметь доступ к глобальным переменным

; SoundPlay, beep.wav

if (jz >= jKey_shift_min) and (jz <= jKey_shift_max) ; отпустили кнопку регулировку масштаба
{
If (jx <= JKey_NEXT_max) and (jx>= JKey_NEXT_min)
{

}
If (jx <= JKey_prev_max) and (jx>= JKey_prev_min)
{

}
}

; JKey_PREV
if (jz = joyz_default)
{

; если отпустили кнопу prev или next до того, как началась перемотка, то меняем трек.
If (jx <= JKey_PREV_max) and (jx >= JKey_PREV_min) and (time_from_pressing < 10)
{

}

; JKey_NEXT
If (jx <= JKey_NEXT_max) and (jx>= JKey_NEXT_min) and (time_from_pressing < 10)
{

}
}
}


return
alexsorockin вне форума   Ответить с цитированием