Просмотр полной версии : Sony RM-X4S + girder как настроить?
скачал плагин для GIRDERA отсюда http://homepages.uc.edu/~wagnerrp/
добавил в игровые устройства джойстик с двумя осями.
а гирдер понимает только два кода.
J0:A0:A и J0:A1:A .
___
может кто расскажет особенности настройки, или может я не тот плагин пользую?
под вин амп плагин не предлагать (он работает нормально)
:dntknw:
_________
законектил по этой схеме
http://freeweb.supereva.com/dmc.freeweb/input.htm?p
Don_ik_kot
28.03.2007, 11:09
скачал плагин для GIRDERA отсюда http://homepages.uc.edu/~wagnerrp/
добавил в игровые устройства джойстик с двумя осями.
а гирдер понимает только два кода.
J0:A0:A и J0:A1:A .
___
может кто расскажет особенности настройки, или может я не тот плагин пользую?
под вин амп плагин не предлагать (он работает нормально)
:dntknw:
в инихах прописываешь 2 оси, а все команды зашиваешь по одной. по-моему плагин не тот. насколько я знаю, этот джой на ура женится через AHK
в инихах прописываешь 2 оси, а все команды зашиваешь по одной. по-моему плагин не тот. насколько я знаю, этот джой на ура женится через AHK
а хотябы название плагина подскажи, это от Wagnera.
Я пользую girder 4 , уточни в каких ini файлах и что поконктренее надо прописать. Зарание спасибо.
Я пытался заставить гирдер работать с этим жостиком. Пробовал 2 или 3 плагина - все пофиг. Почти так же как и у тебя - читает тока один код.
Короче, забил на гирдер и написал скрипт на AutoHotKey.
Я пытался заставить гирдер работать с этим жостиком. Пробовал 2 или 3 плагина - все пофиг. Почти так же как и у тебя - читает тока один код.
Короче, забил на гирдер и написал скрипт на AutoHotKey.
тааак. вот это уже ближе к истине )))
а примерчики скирптов для аутохоткея не накидаеш?
lvovitch
28.03.2007, 13:12
Я пытался заставить гирдер работать с этим жостиком. Пробовал 2 или 3 плагина - все пофиг. Почти так же как и у тебя - читает тока один код.
Короче, забил на гирдер и написал скрипт на AutoHotKey.
+1000 Автохоткей рулит! :bye:
тааак. вот это уже ближе к истине )))
а примерчики скирптов для аутохоткея не накидаеш?
В машине примерчики.
2Lvovich - если у тебя под рукой есть тот скрипт, пихни плииз!
Если нет - вечером тады.
З.Ы. На форуме где-то кидал уже пример скрипта. Так вот, он неверный! :)
В машине примерчики.
2Lvovich - если у тебя под рукой есть тот скрипт, пихни плииз!
Если нет - вечером тады.
З.Ы. На форуме где-то кидал уже пример скрипта. Так вот, он неверный! :)
ага понял.. (форум листать не буду)
жду вечера.
lvovitch
28.03.2007, 13:38
Вот он - код вечного счастья, который я обрел :) :) :) еще раз выражаю бесконечную благодарность всемогущему Хамстеру!!! :) :) :)
; Скрипт для подключения автомобильного двойстика Sony X4S к CarPc
; *********************** Секция настроек начало ***********************
JoystickNumber = 1
VolumeStep = 5
; Погрешность определения значений
KeyGetDelta = 2
; Значения кнопок
JKey_OFF = 100
JKey_ATT = 92
JKey_X1 = 66
JKey_X2 = 62
JKey_X3 = 88
JKey_PREV = 84
JKey_NEXT = 80
JKey_VOLD = 75
JKey_VOLU = 70
JKey_SOURCE = 97
; Переменная в которой запоминаем громкость (для Mute)
MUTE_SOUND = 0
; *********************** Секция настроек конец ***********************
#SingleInstance
SetFormat, float, 03 ; Omit decimal point from axis position percentages.
; Читаем инфу по жостику. Пока с ней ничего не делаем
GetKeyState, joy_buttons, %JoystickNumber%JoyButtons
GetKeyState, joy_name, %JoystickNumber%JoyName
GetKeyState, joy_info, %JoystickNumber%JoyInfo
SoundGet, MUTE_SOUND
Loop
{
; Читаем состояние кнопок. Если кнопарь нажат, то переменная button(№кнопки)= D
Loop, %joy_buttons%
{
GetKeyState, button%a_index%, %JoystickNumber%joy%a_index%
}
; Читаем показания оси Х - по сути основных кнопок жостика
GetKeyState, joyx, %JoystickNumber%JoyX
; Читаем мышиный скролл (пока не пользуем)
; GetKeyState, mouse_Down, WheelDown
; GetKeyState, mouse_Up, WheelUp
; Генерим нужные действия:
; изменение громкости - меньше
If joyx-KeyGetDelta <= JKey_VOLD and joyx+KeyGetDelta >= JKey_VOLD
{
SoundSet -VolumeStep
}
; изменение громкости - больше
If joyx-KeyGetDelta <= JKey_VOLU and joyx+KeyGetDelta >= JKey_VOLU
{
SoundSet +VolumeStep
}
; JKey_X1
If joyx-KeyGetDelta <= JKey_X1 and joyx+KeyGetDelta >= JKey_X1
{
}
; JKey_OFF
If joyx-KeyGetDelta <= JKey_OFF and joyx+KeyGetDelta >= JKey_OFF
{
; Действие на JKey_OFF
}
; JKey_ATT
If joyx-KeyGetDelta <= JKey_ATT and joyx+KeyGetDelta >= JKey_ATT
{
; Действие на JKey_ATT
SoundGet, Tmp
If Tmp = 0 ;мы в режиме MUTE
{
SoundSet, MUTE_SOUND
}
Else
{
SoundGet, MUTE_SOUND
SoundSet, 0
}
}
; JKey_X2
If joyx-KeyGetDelta <= JKey_X2 and joyx+KeyGetDelta >= JKey_X2
{
; Действие на JKey_X2
WinActivate ahk_class Winamp v1.x
Send c
}
; JKey_X3
If joyx-KeyGetDelta <= JKey_X3 and joyx+KeyGetDelta >= JKey_X3
{
; Действие на JKey_X3
}
; JKey_PREV
If joyx-KeyGetDelta <= JKey_PREV and joyx+KeyGetDelta >= JKey_PREV
{
; Действие на JKey_PREV
WinActivate ahk_class Winamp v1.x
Send z
}
; JKey_NEXT
If joyx-KeyGetDelta <= JKey_NEXT and joyx+KeyGetDelta >= JKey_NEXT
{
; Действие на JKey_NEXT
WinActivate ahk_class Winamp v1.x
Send b
}
; JKey_SOURCE
If joyx-KeyGetDelta <= JKey_SOURCE and joyx+KeyGetDelta >= JKey_SOURCE
{
; Действие на JKey_SOURCE
}
; Ждем 250 мс (0.25 сек)
Sleep, 250
}
return
Этот чудестный скриптия к доработал под РР (если - завтра могу скинуть, сейчас комп лежит под капельницей:) ). Теперь вместе с кнопкой Шифт у меня 17 кнопок!!!! :bye:
Вот он - код вечного счастья, который я обрел :) :) :) еще раз выражаю бесконечную благодарность всемогущему Хамстеру!!! :) :) :)
Этот чудестный скриптия к доработал под РР (если - завтра могу скинуть, сейчас комп лежит под капельницей:) ). Теперь вместе с кнопкой Шифт у меня 17 кнопок!!!! :bye:
___
так. а подкючали вы джойстик по какой схеме к гейм порту?
и нужно ли в аутохоткее делать какието настройки.
я скрипт запускаю.... но никаких действий не происходит.
lvovitch
28.03.2007, 14:10
___
так. а подкючали вы джойстик по какой схеме к гейм порту?
и нужно ли в аутохоткее делать какието настройки.
я скрипт запускаю.... но никаких действий не происходит.
схема.... сейчас поищу...
а джостик работает просто в винде как 2 кнопки и 2 оси?
lvovitch
28.03.2007, 14:16
Вообщем примерно так:
Схема - правильную кинуть не могу. Но здесь написал что и как: http://www.pccar.ru/showpost.php?p=13050&postcount=75 заодно и написал почему правильную кинуть не могу.
Что нужно сделать с автохоткеем: нужно запустить прогу из этого поста многоуважаемого Димона: http://pccar.ru/showpost.php?p=1374&postcount=15
потом запомнить циферки которые показывает ДжойТест при нажатии кнопочек и вписать их соотвественно в это место скрипта: ....Значения кнопок
JKey_OFF = 100
JKey_ATT = 92
JKey_X1 = 66
JKey_X2 = 62
JKey_X3 = 88
JKey_PREV = 84
JKey_NEXT = 80
JKey_VOLD = 75
JKey_VOLU = 70
JKey_SOURCE = 97
....
Вообщем примерно так:
Схема - правильную кинуть не могу. Но здесь написал что и как: http://www.pccar.ru/showpost.php?p=13050&postcount=75 заодно и написал почему правильную кинуть не могу.
Что нужно сделать с автохоткеем: нужно запустить прогу из этого поста многоуважаемого Димона: http://pccar.ru/showpost.php?p=1374&postcount=15
потом запомнить циферки которые показывает ДжойТест при нажатии кнопочек и вписать их соотвественно в это место скрипта:
____
так програмку запустил.. она показывает кординаты оси Х и оси У
Например: Х027 У005, что вбивать? (или это и вбивать?)
Вообщем примерно так:
Схема - правильную кинуть не могу. Но здесь написал что и как: http://www.pccar.ru/showpost.php?p=13050&postcount=75 заодно и написал почему правильную кинуть не могу.
Что нужно сделать с автохоткеем: нужно запустить прогу из этого поста многоуважаемого Димона: http://pccar.ru/showpost.php?p=1374&postcount=15
потом запомнить циферки которые показывает ДжойТест при нажатии кнопочек и вписать их соотвественно в это место скрипта:
да у вас подключение по той же схеме что и у меня (в в самом начале ссылка дана ние) человек там забыл один провдок указать.
lvovitch
28.03.2007, 16:04
____
так програмку запустил.. она показывает кординаты оси Х и оси У
Например: Х027 У005, что вбивать? (или это и вбивать?)
Значение координаты Х.
Т.е. если нажать кнопку, например громкость уменьшить, и джойтест показывает цифру 027 то ее надо вписать так: JKey_VOLD = 027
Значение координаты Х.
Т.е. если нажать кнопку, например громкость уменьшить, и джойтест показывает цифру 027 то ее надо вписать так: JKey_VOLD = 027
при нажатии кнопок, у меня меняются значения только оси Y ось Х остается неизменной.
Значение координаты Х.
Т.е. если нажать кнопку, например громкость уменьшить, и джойтест показывает цифру 027 то ее надо вписать так: JKey_VOLD = 027
щас секунд... (туплю) проводки перепаяю.
lvovitch
28.03.2007, 16:10
щас секунд... (туплю) проводки перепаяю.
Хочешь - пиши в асю, что бы оперативней было 296410893
AHK - это универсальная программа для автоматизации AutoHotKey.
Про нее тут довольно хорошо расписано, поищи по названию.
Sorry за offtop!
А нет ли у кого рабочего crack-а или serial-а к Girder 4.0.14.0?
Скачал, настроил, все отлично работало, теперь требует key. В нете скачал несколько crack-ов для старых версий - не подходят!
Всем Удачи!
Извините, немного тормознул - страницу не обновил перед ответом!
AHK - это универсальная программа для автоматизации AutoHotKey.
Про нее тут довольно хорошо расписано, поищи по названию.
Sorry за offtop!
А нет ли у кого рабочего crack-а или serial-а к Girder 4.0.14.0?
Скачал, настроил, все отлично работало, теперь требует key. В нете скачал несколько crack-ов для старых версий - не подходят!
Всем Удачи!
дак ты гирдер настроил под этот пульт?
кряк есть. мыло дай вышлю
to ubazza
Привет!
Я гирдер под ИК Pioneer нарульный настроил! Тоже классная весчь!
И AutoHotKey тоже использовал для смены папок в winAmp одним нажатием.
Вышли крэк пожалуйста на kutc собака mail.ru
Заранее благодарен!
Я пытался заставить гирдер работать с этим жостиком. Пробовал 2 или 3 плагина - все пофиг. Почти так же как и у тебя - читает тока один код.
Короче, забил на гирдер и написал скрипт на AutoHotKey.
а не подскажите, по какой схемке вы ждойстик законнектили?
тоесть саму схемку бы увидеть.
а не подскажите, по какой схемке вы ждойстик законнектили?
тоесть саму схемку бы увидеть.
Рисовать схемку тяжко, скажу на словах.
Во-первых, Game-порт есть? У меня просто не было, пришлось покупять жутко дорогой (300р) USB жостик, из него выдергивать контроллер и подрубать к нему жостик.
Если Game-порт есть, то без проблем, тыкаем (http://llg.cubic.org/tools/sonyrm/).
Рисовать схемку тяжко, скажу на словах.
Во-первых, Game-порт есть? У меня просто не было, пришлось покупять жутко дорогой (300р) USB жостик, из него выдергивать контроллер и подрубать к нему жостик.
Если Game-порт есть, то без проблем, тыкаем (http://llg.cubic.org/tools/sonyrm/).
да гейм порт есть.
собирал на по этйо схемке. винда пишет что нету джойстика.
там никаких примудростей случаем нет?
да гейм порт есть.
собирал на по этйо схемке. винда пишет что нету джойстика.
там никаких примудростей случаем нет?
1. Т.к. в винде минимальным вариантом могет быть жостик 2 оси, то на контакты гейм-порта, что отвечает за ось Y надо повесить какой-нить резюк номиналом 1-100 КОм.
2. Даже после этого винда может не увидеть жостик по одной простой причине - если ты не давишь кнопки на жостике, то в тот момент значение оси X (т.е. та, на которую ты по сути подключил жостик) равно 0. Точнее не 0, а NULL. И винда естессно нифига на найдет.
Попробуй находясь в окошке свойств джойстика понажимать кнопки жостика - наверняка увидишь, что винда скажет "Ок"
1. Т.к. в винде минимальным вариантом могет быть жостик 2 оси, то на контакты гейм-порта, что отвечает за ось Y надо повесить какой-нить резюк номиналом 1-100 КОм.
можешь в схемке опказать куда сопроивление нужно повесить.
от даю схемку :-) (крестиком отметь :))) )
Pin Pin J
--- --- O
S GND 1 o---+------------------------------o 1 +5V Y
O | S
N | ,----o 2 BTN T
Y | +------+ | / I
S SHIFT 2 o---|-----------|4.73KO|---|/ BC547 C
T | +------+ |\ K
I | +-----+ | > P
C +--|120KO|--+ `----o 4 GND O
K +-----+ | R
AD 3 o---------------+------------------o 3 X-AXIS T
коряво она катко вышла.
вопщем отсюда схемка http://llg.cubic.org/tools/sonyrm/
скажи между какими пинами сопрот повесить.
Если я не ошибаюсь то на оси Х и так уже висит сопрот еще один нужен???
Да, сорри - на ось Х ничо вешать не надо, там в схеме уже есть сопротивление.
На ось Y - это значить надо повесить резюк между +5V DC (pin1) и Joystick 1 - Y (Pin 6)
Вот тутова (http://pinouts.ru/Inputs/GameportPCMidi.shtml)можно посмотерть распиновку порта.
Да, сорри - на ось Х ничо вешать не надо, там в схеме уже есть сопротивление.
На ось Y - это значить надо повесить резюк между +5V DC (pin1) и Joystick 1 - Y (Pin 6)
Вот тутова (http://pinouts.ru/Inputs/GameportPCMidi.shtml)можно посмотерть распиновку порта.
))) ок, завтра если что, то стукнусь в аську.
Схемы подключения джойстика Sony RM-X2S , Sony RM-X4S
http://llg.cubic.org/tools/sonyrm/ - повесить сопрот 120ко на 6,8 pin порта (в схеме не нарисовано) - ось х
вторая схема
http://freeweb.supereva.com/dmc.freeweb/?p - в схеме нет проводка от оси Х, на разъём подключения джойстика.
Там же лежит готовый софт под winamp (plugin)
__________________________________________________ ____________
Для настройки под другой софт потребуется программа autohotkey
Скрипт для управления сфтом.
; Скрипт для подключения автомобильного двойстика Sony X4S к CarPc
; *********************** Секция настроек начало ***********************
JoystickNumber = 1
VolumeStep = 5
; Погрешность определения значений
KeyGetDelta = 0.3
; Значения кнопок
JKey_OFF =
JKey_ATT = 1.82
JKey_X1 =
JKey_X2 = 2.6
JKey_X3 = 11.1
JKey_PREV = 3.4
JKey_NEXT = 4.6
JKey_VOLD = 6.2
JKey_VOLU = 8.2
JKey_SOURCE = 0.8
; Переменная в которой запоминаем громкость (для Mute)
MUTE_SOUND = 0
; *********************** Секция настроек конец ***********************
#SingleInstance
SetFormat, float, 0.1 ; Omit decimal point from axis position percentages.
; Читаем инфу по жостику. Пока с ней ничего не делаем
GetKeyState, joy_buttons, %JoystickNumber%JoyButtons
GetKeyState, joy_name, %JoystickNumber%JoyName
GetKeyState, joy_info, %JoystickNumber%JoyInfo
SoundGet, MUTE_SOUND
Loop
{
; Читаем состояние кнопок. Если кнопарь нажат, то переменная button(№кнопки)= D
Loop, %joy_buttons%
{
GetKeyState, button%a_index%, %JoystickNumber%joy%a_index%
}
; Читаем показания оси Х - по сути основных кнопок жостика
GetKeyState, joyx, %JoystickNumber%JoyX
; Читаем мышиный скролл (пока не пользуем)
; GetKeyState, mouse_Down, WheelDown
; GetKeyState, mouse_Up, WheelUp
; Генерим нужные действия:
; изменение громкости - меньше
If joyx-KeyGetDelta <= JKey_VOLD and joyx+KeyGetDelta >= JKey_VOLD
{
SoundSet -VolumeStep
}
; изменение громкости - больше
If joyx-KeyGetDelta <= JKey_VOLU and joyx+KeyGetDelta >= JKey_VOLU
{
SoundSet +VolumeStep
}
; JKey_X1
If joyx-KeyGetDelta <= JKey_X1 and joyx+KeyGetDelta >= JKey_X1
{
}
; JKey_OFF
If joyx-KeyGetDelta <= JKey_OFF and joyx+KeyGetDelta >= JKey_OFF
{
; Действие на JKey_OFF
}
; JKey_ATT
If joyx-KeyGetDelta <= JKey_ATT and joyx+KeyGetDelta >= JKey_ATT
{
; Действие на JKey_ATT
SoundGet, Tmp
If Tmp = 0 ;мы в режиме MUTE
{
SoundSet, MUTE_SOUND
}
Else
{
SoundGet, MUTE_SOUND
SoundSet, 0
}
}
; JKey_X2
If joyx-KeyGetDelta <= JKey_X2 and joyx+KeyGetDelta >= JKey_X2
{
; Действие на JKey_X2
WinActivate ahk_class E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8
Send !2
}
; JKey_X3
If joyx-KeyGetDelta <= JKey_X3 and joyx+KeyGetDelta >= JKey_X3
{
; Действие на JKey_X3
WinActivate ahk_class E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8
Send !5
}
; JKey_PREV
If joyx-KeyGetDelta <= JKey_PREV and joyx+KeyGetDelta >= JKey_PREV
{
; Действие на JKey_PREV
WinActivate ahk_class E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8
Send !1
}
; JKey_NEXT
If joyx-KeyGetDelta <= JKey_NEXT and joyx+KeyGetDelta >= JKey_NEXT
{
; Действие на JKey_NEXT
WinActivate ahk_class E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8
Send !3
}
; JKey_SOURCE
If joyx-KeyGetDelta <= JKey_SOURCE and joyx+KeyGetDelta >= JKey_SOURCE
{
; Действие на JKey_SOURCE
WinActivate ahk_class TForm1
Send {F11}
}
; Ждем 250 мс (0.25 сек)
Sleep, 250
}
return
__________________________________________________ _____________
а этот скрипт для опознания координат оси Х – те координаты которые нужно вбивать в превый скрипт.
; July 6, 2005: Added auto-detection of joystick number.
; May 8, 2005 : Fixed: JoyAxes is no longer queried as a means of
; detecting whether the joystick is connected. Some joysticks are
; gamepads and don't have even a single axis.
; If you want to unconditionally use a specific joystick number, change
; the following value from 0 to the number of the joystick (1-32).
; A value of 0 causes the joystick number to be auto-detected:
JoystickNumber = 1
; END OF CONFIG SECTION. Do not make changes below this point unless
; you wish to alter the basic functionality of the script.
; Auto-detect the joystick number if called for:
if JoystickNumber <= 0
{
Loop 32 ; Query each joystick number to find out which ones exist.
{
GetKeyState, JoyName, %A_Index%JoyName
if JoyName <>
{
JoystickNumber = %A_Index%
break
}
}
if JoystickNumber <= 0
{
MsgBox The system does not appear to have any joysticks.
ExitApp
}
}
#SingleInstance
SetFormat, float, 0.2 ; Omit decimal point from axis position percentages.
GetKeyState, joy_buttons, %JoystickNumber%JoyButtons
GetKeyState, joy_name, %JoystickNumber%JoyName
GetKeyState, joy_info, %JoystickNumber%JoyInfo
Loop
{
buttons_down = 0
Loop, %joy_buttons%
{
GetKeyState, joy%a_index%, %JoystickNumber%joy%a_index%
if joy%a_index% = D
buttons_down = %buttons_down%%a_space%%a_index%
}
GetKeyState, joyx, %JoystickNumber%JoyX
axis_info = X%joyx%
GetKeyState, joyy, %JoystickNumber%JoyY
axis_info = %axis_info%%a_space%%a_space%Y%joyy%
IfInString, joy_info, Z
{
GetKeyState, joyz, %JoystickNumber%JoyZ
axis_info = %axis_info%%a_space%%a_space%Z%joyz%
}
IfInString, joy_info, R
{
GetKeyState, joyr, %JoystickNumber%JoyR
axis_info = %axis_info%%a_space%%a_space%R%joyr%
}
IfInString, joy_info, U
{
GetKeyState, joyu, %JoystickNumber%JoyU
axis_info = %axis_info%%a_space%%a_space%U%joyu%
}
IfInString, joy_info, V
{
GetKeyState, joyv, %JoystickNumber%JoyV
axis_info = %axis_info%%a_space%%a_space%V%joyv%
}
IfInString, joy_info, P
{
GetKeyState, joyp, %JoystickNumber%JoyPOV
axis_info = %axis_info%%a_space%%a_space%POV%joyp%
}
ToolTip, %joy_name% (#%JoystickNumber%):`nJoy_info is:%joy_jnfo%`n%axis_info%`nButtons Down: %buttons_down%`n`n(right-click the tray icon to exit)
; Ждем 200 мс (0.2 сек)
Sleep, 200
}
return
__________________________________________________ ___________
Важные параметры.
float, 0.1 – в обоих скриптах ед. измерения (отображения знаков после точки) – для тех у кого координаты находятся близко.
PS: Большое Спасибо Hamster, Mike, за скрипты , помощь в сборе и советах. :blush:
Рисовать схемку тяжко, скажу на словах.
Во-первых, Game-порт есть? У меня просто не было, пришлось покупять жутко дорогой (300р) USB жостик, из него выдергивать контроллер и подрубать к нему жостик.
Если Game-порт есть, то без проблем, тыкаем (http://llg.cubic.org/tools/sonyrm/).
приветствую, а можете рассказать как с джойстиком подружили пультик???
приветствую, а можете рассказать как с джойстиком подружили пультик???
Не совсем понял вопрос. Что за пульт :) ?
Sony это и есть джойстик. Поскольку у меня нет на матери гейм порта, то для этого было сделано следующее:
- купил самый дешовый джойстик на USB
- расковырял его и вытащил контроллер. у контроллера вход это 3 оси с сопротивлениями и 2 кнопки (просто замыкание).
на одну ось повесил Sony, и на одну из кнопок повесил Shift у соньки.
С гирдером заставиь работать его не смог, ибо все плагины (пробовал штуки три-четыре) не правильно почему-то обрабатывают значения координат (читай сопротивление) джойстика.
А вот автохоткей читает прально, на нем и сделал.
Не совсем понял вопрос. Что за пульт :) ?
Sony это и есть джойстик. Поскольку у меня нет на матери гейм порта, то для этого было сделано следующее:
- купил самый дешовый джойстик на USB
- расковырял его и вытащил контроллер. у контроллера вход это 3 оси с сопротивлениями и 2 кнопки (просто замыкание).
на одну ось повесил Sony, и на одну из кнопок повесил Shift у соньки.
С гирдером заставиь работать его не смог, ибо все плагины (пробовал штуки три-четыре) не правильно почему-то обрабатывают значения координат (читай сопротивление) джойстика.
А вот автохоткей читает прально, на нем и сделал.
а какой именно джойстик раздербанил?
брал штурвал... но там регулируемое сопротивления в самом джойстике + джойстик сони тоже кнопки все с сопротами... фигня получается..
взял геймпад ... там просто тупо только на замыкание работает.
а какой именно джойстик раздербанил?
брал штурвал... но там регулируемое сопротивления в самом джойстике + джойстик сони тоже кнопки все с сопротами... фигня получается..
взял геймпад ... там просто тупо только на замыкание работает.
геймпадl конечно отпадает. а вот чем не понравился штурвал то? вот, вместо его регулируемого сопротивления и надо втыкать соньку.
геймпадl конечно отпадает. а вот чем не понравился штурвал то? вот, вместо его регулируемого сопротивления и надо втыкать соньку.
штурвал не уводит на исходное место значение.
тоесть нажимаешь на кнопарь и он как бы остатся нажатым ,хотя физически ты его отпустил.
штурвал не уводит на исходное место значение.
тоесть нажимаешь на кнопарь и он как бы остатся нажатым ,хотя физически ты его отпустил.
нифига не понял.... серьезно :)
нифига не понял.... серьезно :)
какой джойстик брал? вспомни модель
я разобрал Genius F-23
подпаялся к оси Х и У координаты воспринимает но только в одну сторону (без нажатия он висит в координатах 0.0 ппосле нажатия он висит в координатах 120.0, нажимаешь еще одну клавишу перемещается на 67.0, тоесть после того как отпукаешь клавишу у меня не сатновится 0.0)
какието еще доделки делал?
___
Все разобрался... повесил два сопрота на ось Х и У по 100 и 50 ком.
Все разобрался... повесил два сопрота на ось Х и У по 100 и 50 ком.
Да, обязательно! Если на оси будет висеть бесконечность, то винда жостик не опознает :)
Кого интересует дистанционное включение компа пультом? Помогу.
Если можно,помогите с лекарством для girder 4.0.14.0 или позже.
Dop3
Mike,огромное спасибо тебе за помощь!!! Dop3
Может лекарство переложить в ог-д....
alexsorockin
11.10.2008, 02:07
Речь про поворотный джойстик сони??? Все кнопки работают? Поворотные работают? Хотел бы какие-нибудь фотографии как делали, плиз!!!
alexsorockin
11.10.2008, 02:31
Ребята, второй раз прочитал но так и не нашёл ответа как всё-таки подключить его к USB? И что такое оси вообще, о которыхз тут постоянно говорите? Какой джойстик USB раздербанивал для переделки сони? И самое главное! Как работает джойтик сони, по какому принципу вообще?
Какой софт надо использовать для работы под USB? К Centrafuse можно подцепить?
SBorovkov
12.10.2008, 23:09
Ребята, второй раз прочитал но так и не нашёл ответа как всё-таки подключить его к USB? И что такое оси вообще, о которыхз тут постоянно говорите? Какой джойстик USB раздербанивал для переделки сони? И самое главное! Как работает джойтик сони, по какому принципу вообще?
Какой софт надо использовать для работы под USB? К Centrafuse можно подцепить?
Покупаешь genius maxfighter f16, разбираешь, дальше дружишь с паяльником, либо находишь человека, который тебе перепаяет 3 провода. Человек с мозгами, заточенными на паяльник, разберется быстро что надо перепаять.
А что будет делать джойстик зависит от того, что ты в autohotkey запрограмишь.
alexsorockin
12.10.2008, 23:34
Паяю я отлично, а вот хотелось бы узнать принцип работы джойстика, я его не разбирал, так как был не мой (отдал уже) а пока новый не купил...
alexsorockin
12.10.2008, 23:48
Имеет значение количество кнопок на джойстике Genius и на джойстике Sony для автомагнитолы??? Все кнопки будут функционировать?
не знаю о каком genius идет речь и как он устроен, но в сони все предельно просто, два провода замыкаются разными кнопками, к которым последовательно включены резисторы разного номинала, по номиналам резисторов и определяется какую кнопку ты нажал.
SBorovkov
13.10.2008, 01:37
genuis maxfighter f16 нужен как usb устройство, которое сможет преобразовать различные сопротивления в стандартное устройство "джойстик" и виртуальные положения ручек в нем. То есть вместо переменника впаиваешь два провода джойстика (ну еще может добавочное сопротивление придется накинуть последовательно с сонькой, а то у меня две кнопки с самыми маленькими сопротивлениями путал) и получаешь, что при нажатии на рычаг/кнопку джойстика sony меняется положение по одной из осей джойстика.
Дальше autohotkey в руки.
Для большей понятности схемы разных джойстиков - почти все в реальности резистивные...
http://elektron.pol.lublin.pl/users/djlj24/studio24/kable/pilotyca.htm
А по поводу модели джойстика - это реально самая дешевая и хорошо работающая плата джойстика. Поэтому лучше купи именно такой. Я купил другой в 1.5 раза дороже и выкинул, у него значения плавали...
alexsorockin
13.10.2008, 07:51
непонятно что такое ось???
это одна из плоскостей аналогового манипулятора (вверх/вниз)
alexsorockin
16.10.2008, 00:03
....
alexsorockin
16.10.2008, 00:26
Схемы подключения джойстика Sony RM-X2S , Sony RM-X4S
http://llg.cubic.org/tools/sonyrm/ - повесить сопрот 120ко на 6,8 pin порта (в схеме не нарисовано) - ось х
вторая схема
http://freeweb.supereva.com/dmc.freeweb/?p - в схеме нет проводка от оси Х, на разъём подключения джойстика.
Там же лежит готовый софт под winamp (plugin)
__________________________________________________ ____________
Для настройки под другой софт потребуется программа autohotkey
Скрипт для управления сфтом.
; Скрипт для подключения автомобильного двойстика Sony X4S к CarPc
; *********************** Секция настроек начало ***********************
JoystickNumber = 1
VolumeStep = 5
; Погрешность определения значений
KeyGetDelta = 0.3
; Значения кнопок
JKey_OFF =
JKey_ATT = 1.82
JKey_X1 =
JKey_X2 = 2.6
JKey_X3 = 11.1
JKey_PREV = 3.4
JKey_NEXT = 4.6
JKey_VOLD = 6.2
JKey_VOLU = 8.2
JKey_SOURCE = 0.8
; Переменная в которой запоминаем громкость (для Mute)
MUTE_SOUND = 0
; *********************** Секция настроек конец ***********************
#SingleInstance
SetFormat, float, 0.1 ; Omit decimal point from axis position percentages.
; Читаем инфу по жостику. Пока с ней ничего не делаем
GetKeyState, joy_buttons, %JoystickNumber%JoyButtons
GetKeyState, joy_name, %JoystickNumber%JoyName
GetKeyState, joy_info, %JoystickNumber%JoyInfo
SoundGet, MUTE_SOUND
Loop
{
; Читаем состояние кнопок. Если кнопарь нажат, то переменная button(№кнопки)= D
Loop, %joy_buttons%
{
GetKeyState, button%a_index%, %JoystickNumber%joy%a_index%
}
; Читаем показания оси Х - по сути основных кнопок жостика
GetKeyState, joyx, %JoystickNumber%JoyX
; Читаем мышиный скролл (пока не пользуем)
; GetKeyState, mouse_Down, WheelDown
; GetKeyState, mouse_Up, WheelUp
; Генерим нужные действия:
; изменение громкости - меньше
If joyx-KeyGetDelta <= JKey_VOLD and joyx+KeyGetDelta >= JKey_VOLD
{
SoundSet -VolumeStep
}
; изменение громкости - больше
If joyx-KeyGetDelta <= JKey_VOLU and joyx+KeyGetDelta >= JKey_VOLU
{
SoundSet +VolumeStep
}
; JKey_X1
If joyx-KeyGetDelta <= JKey_X1 and joyx+KeyGetDelta >= JKey_X1
{
}
; JKey_OFF
If joyx-KeyGetDelta <= JKey_OFF and joyx+KeyGetDelta >= JKey_OFF
{
; Действие на JKey_OFF
}
; JKey_ATT
If joyx-KeyGetDelta <= JKey_ATT and joyx+KeyGetDelta >= JKey_ATT
{
; Действие на JKey_ATT
SoundGet, Tmp
If Tmp = 0 ;мы в режиме MUTE
{
SoundSet, MUTE_SOUND
}
Else
{
SoundGet, MUTE_SOUND
SoundSet, 0
}
}
; JKey_X2
If joyx-KeyGetDelta <= JKey_X2 and joyx+KeyGetDelta >= JKey_X2
{
; Действие на JKey_X2
WinActivate ahk_class E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8
Send !2
}
; JKey_X3
If joyx-KeyGetDelta <= JKey_X3 and joyx+KeyGetDelta >= JKey_X3
{
; Действие на JKey_X3
WinActivate ahk_class E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8
Send !5
}
; JKey_PREV
If joyx-KeyGetDelta <= JKey_PREV and joyx+KeyGetDelta >= JKey_PREV
{
; Действие на JKey_PREV
WinActivate ahk_class E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8
Send !1
}
; JKey_NEXT
If joyx-KeyGetDelta <= JKey_NEXT and joyx+KeyGetDelta >= JKey_NEXT
{
; Действие на JKey_NEXT
WinActivate ahk_class E7076D1C-A7BF-4f39-B771-BCBE88F2A2A8
Send !3
}
; JKey_SOURCE
If joyx-KeyGetDelta <= JKey_SOURCE and joyx+KeyGetDelta >= JKey_SOURCE
{
; Действие на JKey_SOURCE
WinActivate ahk_class TForm1
Send {F11}
}
; Ждем 250 мс (0.25 сек)
Sleep, 250
}
return
__________________________________________________ _____________
а этот скрипт для опознания координат оси Х – те координаты которые нужно вбивать в превый скрипт.
; July 6, 2005: Added auto-detection of joystick number.
; May 8, 2005 : Fixed: JoyAxes is no longer queried as a means of
; detecting whether the joystick is connected. Some joysticks are
; gamepads and don't have even a single axis.
; If you want to unconditionally use a specific joystick number, change
; the following value from 0 to the number of the joystick (1-32).
; A value of 0 causes the joystick number to be auto-detected:
JoystickNumber = 1
; END OF CONFIG SECTION. Do not make changes below this point unless
; you wish to alter the basic functionality of the script.
; Auto-detect the joystick number if called for:
if JoystickNumber <= 0
{
Loop 32 ; Query each joystick number to find out which ones exist.
{
GetKeyState, JoyName, %A_Index%JoyName
if JoyName <>
{
JoystickNumber = %A_Index%
break
}
}
if JoystickNumber <= 0
{
MsgBox The system does not appear to have any joysticks.
ExitApp
}
}
#SingleInstance
SetFormat, float, 0.2 ; Omit decimal point from axis position percentages.
GetKeyState, joy_buttons, %JoystickNumber%JoyButtons
GetKeyState, joy_name, %JoystickNumber%JoyName
GetKeyState, joy_info, %JoystickNumber%JoyInfo
Loop
{
buttons_down = 0
Loop, %joy_buttons%
{
GetKeyState, joy%a_index%, %JoystickNumber%joy%a_index%
if joy%a_index% = D
buttons_down = %buttons_down%%a_space%%a_index%
}
GetKeyState, joyx, %JoystickNumber%JoyX
axis_info = X%joyx%
GetKeyState, joyy, %JoystickNumber%JoyY
axis_info = %axis_info%%a_space%%a_space%Y%joyy%
IfInString, joy_info, Z
{
GetKeyState, joyz, %JoystickNumber%JoyZ
axis_info = %axis_info%%a_space%%a_space%Z%joyz%
}
IfInString, joy_info, R
{
GetKeyState, joyr, %JoystickNumber%JoyR
axis_info = %axis_info%%a_space%%a_space%R%joyr%
}
IfInString, joy_info, U
{
GetKeyState, joyu, %JoystickNumber%JoyU
axis_info = %axis_info%%a_space%%a_space%U%joyu%
}
IfInString, joy_info, V
{
GetKeyState, joyv, %JoystickNumber%JoyV
axis_info = %axis_info%%a_space%%a_space%V%joyv%
}
IfInString, joy_info, P
{
GetKeyState, joyp, %JoystickNumber%JoyPOV
axis_info = %axis_info%%a_space%%a_space%POV%joyp%
}
ToolTip, %joy_name% (#%JoystickNumber%):`nJoy_info is:%joy_jnfo%`n%axis_info%`nButtons Down: %buttons_down%`n`n(right-click the tray icon to exit)
; Ждем 200 мс (0.2 сек)
Sleep, 200
}
return
__________________________________________________ ___________
Важные параметры.
float, 0.1 – в обоих скриптах ед. измерения (отображения знаков после точки) – для тех у кого координаты находятся близко.
PS: Большое Спасибо Hamster, Mike, за скрипты , помощь в сборе и советах. :blush:
Так и не разобрался в первом скрипте... укажите на строчки, в которых выполняется действие в винде? Каким образом скрипт связывается с остальными программами? Билн, как это сформалировать... Вот если бы надо было двинуть нажать enter - написали бы Send, {ENTER}... А тут как взаимодействие происходит?
alexsorockin
16.10.2008, 01:10
Откомпилировал первый скрипт, запустил. Откомпилировал второй - запустил. оба запущены. Во всплывающем окошке от второго скрипта при поворачивании резисторов видно как меняются показания по осям X,Y,Z, но в то же время как ни крути не срабатывает ни одна функция (Send F11, к примеру (активно окно браузера, должно развернуться на полный экран)...) В чём дело? На каких значениях будет срабатывать?
SBorovkov
16.10.2008, 02:16
Откомпилировал первый скрипт, запустил. Откомпилировал второй - запустил. оба запущены. Во всплывающем окошке от второго скрипта при поворачивании резисторов видно как меняются показания по осям X,Y,Z, но в то же время как ни крути не срабатывает ни одна функция (Send F11, к примеру (активно окно браузера, должно развернуться на полный экран)...) В чём дело? На каких значениях будет срабатывать?
Для начала:
1. убери весь лишний код из скрипта. так будет проще...
2. расширь диапазон, при котором срабатывает нужное тебе событие.
3. назначь какое-либо более простое событие. К примеру, запуск приложения
4. Лучше сначала научись обрабатывать события клавиатуры как тебе надо, ибо они одномоментные, нажал - действие. Приведенный ниже скрипт будет запускать notpad 4 раза в секунду если ось X находится между 20 и 30...
5. Кури эту страницу http://www.script-coding.info/AutoHotkey/Tutorial.html а также хелп к AHK. Там есть почти все, что нужно, чтобы управлять чем угодно.
пример:
#SingleInstance
SetFormat, float, 0.1 ; Omit decimal point from axis position percentages.
; Читаем инфу по жостику. Пока с ней ничего не делаем
GetKeyState, joy_buttons, %JoystickNumber%JoyButtons
GetKeyState, joy_name, %JoystickNumber%JoyName
GetKeyState, joy_info, %JoystickNumber%JoyInfo
SoundGet, MUTE_SOUND
Loop
{
; Читаем состояние кнопок. Если кнопарь нажат, то переменная button(№кнопки)= D
Loop, %joy_buttons%
{
GetKeyState, button%a_index%, %JoystickNumber%joy%a_index%
}
; Читаем показания оси Х - по сути основных кнопок жостика
GetKeyState, joyx, %JoystickNumber%JoyX
If (joyx <= 30) and (joyx >= 20) ; если джойстик по оси х там где надо - запускаем блокнот
{
Run, Notepad ; запуск Блокнота
}
Sleep, 250
}
return
alexsorockin
16.10.2008, 21:07
Понял фишку, написал на основе первого и второго скриптов утилитку. Если надо будет - могу дать исходник. Качайте!
http://slil.ru/26243353
теперь возникло два вопроса:
кто как назначил кнопки джойтика?
у меня так:
SOURCE =Play/Pause
VOLUME = как положено
SEEKUP - следующая песня
SEEKDOWN - предыдущая
ATT - само собой...
вообще не понимаю зачем ATT нужен, если можно на паузу нажать????
кто какие действия назначил на остальные кнопки?
и второй вопрос: как сделать в скрипте анализ двойного нажатия и тройного нажатия??? было бы очень полезно таким образом расширить количество возможных комбинаций
SBorovkov
16.10.2008, 22:11
Посмотри мой журнал. Только что скрипт писал. Правда, под РР.
alexsorockin
17.10.2008, 07:43
Настроил кнопки, изменил в двух местах в самом конце таким образом:
; JKey_PREV
if (jz = joyz_default)
{
; если отпустили кнопу prev или next до того, как началась перемотка, то меняем трек.
If (jx <= JKey_PREV_max) and (jx >= JKey_PREV_min) and (time_from_pressing < 10)
{
SEND ^!+{B}
}
; JKey_NEXT
If (jx <= JKey_NEXT_max) and (jx>= JKey_NEXT_min) and (time_from_pressing < 10)
{
SEND ^!+{N}
}
}
}
return
не работает... странно.... один раз заработало, когда CF , была свёрнута, вхожу - не работает... сворачиваю - опять работает...
SBorovkov
17.10.2008, 14:06
1. Поставь пиликалку на это действие.
2. Сначала активируй CF. И скорее всего все получится.
alexsorockin
17.10.2008, 20:01
Спасибо тебе за скрипт! Сегодня расширил его! Сдеал порежиное управление и кучу всего...
Проблема была в том, что при редактировании горячих клавиш в CF они почему-то активироались, но не все, а как-то беспорядочно, а у меня в это время внастройфках горячие клавиши были отключены... Включил - и всё заработало!!! :big:
alexsorockin
18.10.2008, 12:05
#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
18.10.2008, 12:06
Функции джойстика:
X2 (MODE) - Переключение режимов (2 режима) - сопровождается аудио-сообщением из файлов joymode1.wav, joymode1.wav. При необходимости количество режимов можно увеличить до бесконечности.
Режим 1 - режим проигрывателя
SOURCE - CTRL+F3
NEXT - CTRL+F2 (следующая песня)
PREV - CTRL+F1 (предыдущая песня)
VOLU - увеличение Master-громкости Windows
VOLD - уменьшение Master-громкости Windows
OFF - CTRL+F6 (компьютер в ждущий режим), режим сна - отдельной кнопкой на панели автомобиля, ей же и включается
ATT - выключение микрофона второй звуковой карты (у меня подключен USB SOUND ADAPTER)
X1(SEL) - CTRL+F4 (поднять трубку), Загрузить "ТЕЛЕФОН"
X3 (DSPL) - CTRL+F5 (повесить трубку)
Режим 2 - режим Windows
VOLU - движение мыши вправо
VOLD - движение мыши влево
NEXT - движение мыши верх
PREV - движение мыши вниз
SOURCE - клик левой кнопкой мыши
SHIFT+NEXT - выделение файлов в проводнике вверх (SHIFT+вверх)
SHIFT+NEXT - выделение файлов в проводнике вниз (SHIFT+вниз)
X3 (DSPL) - правая кнопка мыши
SHIFT + X3 (DSPL) - CTRL+левая кнопка мыши (SHIFT+SOURCE) почему-то не работает...
Чтобы отключить оповещение о действии (пищание) можно просто удалить файл beep.wav
Отличная работа!
Я когда писал этот скрипт конечно совсем не заморачивался :)
SBorovkov
19.10.2008, 02:14
2 alexsorockin
Ты еще не использовал возможности различия длинного и короткого нажатия. Я, к примеру, ща сделал так, чтобы длинное нажатие power сворачивало РР, а короткое - восстанавливало. Также можно поступить и с какими-нить еще действиями. Жмешь коротко - открывается один экран, долго - другой (но желательно похожие, чтобы голова не пухла :big:).
То есть ты можешь комп выключать только при длинном нажатии, а при коротком - делать что-нить другое.
Меня прикалывает, что почему-то нигде не видел кода, который позволяет полноценно обратабывать нажатия разной длительности, обрабатывать повторения и пр. Хотя самого когда там 10 строк. Все обрабатывали статические состояния кнопок, не учитывая время, так сказать.
alexsorockin
19.10.2008, 15:03
таймер вставить и обрабатывать различия по времени между нажатиями в двух сканах цикла...
можешь дать код, а то думать самому в лом, ПОЖАЛУЙСТА! ВОСКРЕСЕНЬЕ ВЕДЬ!
У меня пока голова забита как делать двойное и тройное нажатие...
SBorovkov
20.10.2008, 00:06
таймер вставить и обрабатывать различия по времени между нажатиями в двух сканах цикла...
можешь дать код, а то думать самому в лом, ПОЖАЛУЙСТА! ВОСКРЕСЕНЬЕ ВЕДЬ!
У меня пока голова забита как делать двойное и тройное нажатие...
Двойное и тройное нажатие как раз сложно обработать в рамках этой модели. А вот длинные-короткие - нефиг делать:
На onpressing пикаешь на нажатие (timer=0), но ничего более не делаешь!
Далее, если дожидаешься onpressing с timer=xxx, то делаешь действие, которое опеределено по длинному нажатию (можно заодно еще раз пикнуть). Если же случилось onrelease с таймером менее xxx, то это означает, что произошло короткое нажатие (тут не пикаешь, но выполняешь действие, связанное с коротким нажатием).
То есть короткое нажатие ты определяешь не по нажатию, а по отпусканию. У меня именно так была сделана перемотка треков/переключение. Там путанно с константами в плане определения времени, но суть именно такая. Определи, что короткое нажатие, к примеру, меньше 0.5 секунды. Задержка, связанная с тем, что событие короткого нажатия привязано к отпусканю, не ощущается.
alexsorockin
22.10.2008, 16:19
назначаемые действия:
кратковременное нажатие:
OFF
X1 (SEL)
X2 (MODE)
X3 (DSPL)
ATT
NEXT
PREV
VOLU
VOLD
SOURCE
суперкратковременное нажатие SHIFT (100мс)
SHIFT+OFF
SHIFT+X1 (SEL)
SHIFT+X2 (MODE)
SHIFT+X3 (DSPL)
SHIFT+ATT
SHIFT+NEXT
SHIFT+PREV
SHIFT+SOURCE
нажатие с задержкой 1с:
OFF
X1 (SEL)
X2 (MODE)
X3 (DSPL)
ATT
NEXT
PREV
VOLU
VOLD
SOURCE
суперзадержка нажатия SHIFT (2,5 с)
SHIFT+OFF
SHIFT+X1 (SEL)
SHIFT+X2 (MODE)
SHIFT+X3 (DSPL)
SHIFT+ATT
SHIFT+NEXT
SHIFT+PREV
SHIFT+SOURCE
итого: 38 действий
---
замечания:
подбирал резистор. получилось, что при одновременном нажатии SHIFT+X2 (MODE) изменялась не координата первой оси X, а координата Y.. При одномременном нажатии изменяются значения координат X и Z по отношению к нажатию без шифта... Может быть, надо было дальше подбирать резистор, но я остановился на этом...
alexsorockin
23.10.2008, 00:31
а вот и сам скрипт, который осталось только откомпилировать, предварительно подставив ваши значения кнопок...
#Singleinstance force
; Скрипт для подключения автомобильного джойстика Sony X4S к CarPc
; *********************** Секция настроек начало ***********************
SetFormat, float, 0.1 ; Omit decimal point from axis position percentages.
JoystickNumber = 1
First_VolumeStep = 1
Repeat_VolumeStep = 2
Repeat_VolumeStep_Default = 2
Repeat_VolumeStep_Amplifier = 1.1
First_MouseStep = 1
Repeat_MouseStep_default = 2
Repeat_MouseStep_Amplifier = 1.2
sleepdelay_default = 50
sleepdelay := sleepdelay_default
time_from_pressing_delay = 30
joymodes = 2
joyx_default=100
joyy_default=100
joyz_default=100
; Значения кнопок БЕЗ ШИФТА
JKey_OFF_min = 3.6
JKey_OFF_max = 4.1
JKey_X1_min = 7.71
JKey_X1_max = 8.9
JKey_X2_min = 39.00
JKey_X2_max = 41.00
JKey_X3_min = 27.00
JKey_X3_max = 30.00
JKey_ATT_min = 6.15
JKey_ATT_max = 6.74
JKey_NEXT_min = 11.50
JKey_NEXT_max = 12.60
JKey_PREV_min = 9.0
JKey_PREV_max = 10.0
JKey_VOLU_min = 20.0
JKey_VOLU_max = 21.50
JKey_VOLD_min = 15.00
JKey_VOLD_max = 16.10
JKey_SOURCE_min = 4.25
JKey_SOURCE_max = 4.8
jKey_SHIFT_min=2
jKey_SHIFT_max=10
; Значения кнопок С ШИФТОМ
JKey_OFF_SHIFT_min = 7.0
JKey_OFF_SHIFT_max = 8.0
JKey_SHIFT_OFF_min = 6.34
JKey_SHIFT_OFF_max = 7.33
JKey_X1_SHIFT_min = 21.0
JKey_X1_SHIFT_max = 25.0
JKey_SHIFT_X1_min = 3.6
JKey_SHIFT_X1_max = 4.1
JKey_X2_SHIFT_min = 3.6 ;Y
JKey_X2_SHIFT_max = 4.1 ;Y
JKey_SHIFT_X2_min = 3.6
JKey_SHIFT_X2_max = 4.1
JKey_X3_SHIFT_min = 69.94
JKey_X3_SHIFT_max = 70.54
JKey_SHIFT_X3_min = 3.6
JKey_SHIFT_X3_max = 4.1
JKey_ATT_SHIFT_min = 17.0
JKey_ATT_SHIFT_max = 19.0
JKey_SHIFT_ATT_min = 3.6
JKey_SHIFT_ATT_max = 4.1
JKey_NEXT_SHIFT_min = 34.0
JKey_NEXT_SHIFT_max = 38.0
JKey_SHIFT_NEXT_min = 3.6
JKey_SHIFT_NEXT_max = 4.1
JKey_PREV_SHIFT_min = 27.0
JKey_PREV_SHIFT_max = 29.50
JKey_SHIFT_PREV_min = 3.6
JKey_SHIFT_PREV_max = 4.1
JKey_SOURCE_SHIFT_min = 11.50
JKey_SOURCE_SHIFT_max = 13.00
JKey_SHIFT_SOURCE_min = 4.2
JKey_SHIFT_SOURCE_max = 4.5
; Переменная в которой запоминаем громкость (для Mute)
MUTE_SOUND = 0
; *********************** Секция настроек конец ***********************
; Читаем инфу по жостику. Пока с ней ничего не делаем
GetKeyState, joy_buttons, %JoystickNumber%JoyButtons
GetKeyState, joy_name, %JoystickNumber%JoyName
GetKeyState, joy_info, %JoystickNumber%JoyInfo
prev_joyx := joyx_default
prev_joyy := joyy_default
prev_joyz := joyz_default
timer = 0
joymode = 1
CoordMode, ToolTip
SoundGet, MUTE_SOUND
Loop
{
; Читаем состояние кнопок. Если кнопарь нажат, то переменная button(№кнопки)= D
Loop, %joy_buttons%
{
GetKeyState, button%a_index%, %JoystickNumber%joy%a_index%
}
; Читаем показания оси Х - по сути основных кнопок жостика
GetKeyState, joyx, %JoystickNumber%JoyX
GetKeyState, joyy, %JoystickNumber%JoyY
GetKeyState, joyz, %JoystickNumber%joyZ
; Генерим нужные действия:
;
if (joyx=50) and (joyy=50) and (joyz=50)
{
goto, 1
}
if ((joyx=joyx_default) and (AxisX=1)) or ((joyy=joyy_default) and (AxisY=1)) or ((joyz=joyz_default) and (AxisZ=1))
{
res_button_released(joyx_prev, joyy_prev, joyz_prev, timer)
timer=0
if (joyx<>joyx_default)
{
AxisX=1
}
else
{
AxisX=0
}
if (joyy<>joyy_default)
{
AxisY=1
}
else
{
AxisY=0
}
if (joyz<>joyz_default)
{
AxisZ=1
}
else
{
AxisZ=0
}
}
if (joyx<>joyx_default) or (joyy<>joyy_default) or (joyz<>joyz_default)
{
if (joyx<>joyx_default)
{
AxisX=1
}
else
{
AxisX=0
}
if (joyy<>joyy_default)
{
AxisY=1
}
else
{
AxisY=0
}
if (joyz<>joyz_default)
{
AxisZ=1
}
else
{
AxisZ=0
}
timer := timer + 1
joyx_prev:=joyx
joyy_prev:=joyy
joyz_prev:=joyz
res_button_pressed(joyx, joyy, joyz, timer)
}
1:
;tooltip, %message%,0,0
Sleep, sleepdelay
}
;---------------------------------------------------------------------------------
res_button_pressed(jx, jy, jz , time_from_pressing)
{
global ; чтобы иметь доступ к глобальным переменным
if (joymode=1) ; режим 1
{
;обрабатываем задержку нажатия только одной кнопки SHIFT
if (time_from_pressing >= time_from_pressing_delay+30) and (jx = joyx_default) and (jy = joyy_default) and (jz <> joyz_default)
{
;подаём звук
if (time_from_pressing = time_from_pressing_delay+30)
{
SoundPlay, beep.wav
}
message=удержание SHIFT
}
;обрабатываем задержку нажатия любой другой кнопки, кроме SHIFT
if (time_from_pressing >= time_from_pressing_delay) and (jz = joyz_default)
{
;подаём звук
if (time_from_pressing = time_from_pressing_delay)
{
SoundPlay, beep.wav
}
;обрабатываем кнопки, кроме SHIFT
; JKey_OFF
If (jx >= JKey_OFF_min) and (jx <= JKey_OFF_max)
{
message=удержание OFF
}
; JKey_X1
If (jx >= JKey_X1_min) and (jx <= JKey_X1_max)
{
message=удержание X1
}
; JKey_X2
If (jx >= JKey_X2_min) and (jx <= JKey_X2_max)
{
message=удержание X2
}
; JKey_X3
If (jx >= JKey_X3_min) and (jx <= JKey_X3_max)
{
message=удержание X3
}
; JKey_ATT
If (jx >= JKey_ATT_min) and (jx <= JKey_ATT_max)
{
message=удержание ATT - выключаем/включаем микрофон
If (time_from_pressing = time_from_pressing_delay)
{
SoundSet, +1, microphone, mute, 2
}
}
; JKey_NEXT
If (jx >= JKey_NEXT_min) and (jx <= JKey_NEXT_max)
{
message=удержание NEXT
}
; JKey_PREV
If (jx >= JKey_PREV_min) and (jx <= JKey_PREV_max)
{
message=удержание PREV
}
; JKey_VOLU
If (jx >= JKey_VOLU_min) and (jx <= JKey_VOLU_max)
{
message=удержание VOLU
Repeat_VolumeStep:=Repeat_VolumeStep_Amplifier*Rep eat_VolumeStep
SoundGet, master_volume
master_volume:=master_volume+Repeat_VolumeStep
SoundSet, master_volume
}
; JKey_VOLD
If (jx >= JKey_VOLD_min) and (jx <= JKey_VOLD_max)
{
message=удержание VOLD
Repeat_VolumeStep:=Repeat_VolumeStep_Amplifier*Rep eat_VolumeStep
SoundGet, master_volume
master_volume:=master_volume-Repeat_VolumeStep
SoundSet, master_volume
}
; JKey_SOURCE
If (jx >= JKey_SOURCE_min) and (jx <= JKey_SOURCE_max)
{
message=удержание SOURCE
}
}
;обрабатываем задержку нажатия любой кнопки в паре с SHIFT
if (time_from_pressing >= time_from_pressing_delay) and (jz <> joyz_default) and ((jx <> joyx_default) or (jy <> joyy_default))
{
;подаём звук
if (time_from_pressing = time_from_pressing_delay)
{
SoundPlay, beep.wav
}
; JKey_OFF+SHIFT
If (jx >= JKey_OFF_SHIFT_min) and (jx <= JKey_OFF_SHIFT_max) and (jz >= JKey_SHIFT_OFF_min) and (jz <= JKey_SHIFT_OFF_max)
{
message=удержание SHIFT+OFF
}
; JKey_X1+SHIFT
If (jx >= JKey_X1_SHIFT_min) and (jx <= JKey_X1_SHIFT_max) and (jz >= JKey_SHIFT_X1_min) and (jz <= JKey_SHIFT_X1_max)
{
message=удержание SHIFT+X1
}
; JKey_X2+SHIFT
If (jy >= JKey_X2_SHIFT_min) and (jy <= JKey_X2_SHIFT_max) and (jz >= JKey_SHIFT_X2_min) and (jz <= JKey_SHIFT_X2_max)
{
message=удержание SHIFT+X2
}
; JKey_X3+SHIFT
If (jx >= JKey_X3_SHIFT_min) and (jx <= JKey_X3_SHIFT_max) and (jz >= JKey_SHIFT_X3_min) and (jz <= JKey_SHIFT_X3_max)
{
message=удержание SHIFT+X3
}
; JKey_ATT+SHIFT
If (jx >= JKey_ATT_SHIFT_min) and (jx <= JKey_ATT_SHIFT_max) and (jz >= JKey_SHIFT_ATT_min) and (jz <= JKey_SHIFT_ATT_max)
{
message=удержание SHIFT+ATT
}
; JKey_NEXT+SHIFT
If (jx >= JKey_NEXT_SHIFT_min) and (jx <= JKey_NEXT_SHIFT_max) and (jz >= JKey_SHIFT_NEXT_min) and (jz <= JKey_SHIFT_NEXT_max)
{
message=удержание SHIFT+NEXT
}
; JKey_PREV+SHIFT
If (jx >= JKey_PREV_SHIFT_min) and (jx <= JKey_PREV_SHIFT_max) and (jz >= JKey_SHIFT_PREV_min) and (jz <= JKey_SHIFT_PREV_max)
{
message=удержание SHIFT+PREV
}
; JKey_SOURCE+SHIFT
If (jx >= JKey_SOURCE_SHIFT_min) and (jx <= JKey_SOURCE_SHIFT_max) and (jz >= JKey_SHIFT_SOURCE_min) and (jz <= JKey_SHIFT_SOURCE_max)
{
message=удержание SHIFT+SOURCE
}
}
}
}
;---------------------------------------------------------------------------------
res_button_released(jx, jy, jz , time_from_pressing)
{
global ; чтобы иметь доступ к глобальным переменным
if (joymode=1) ; режим 1
{
;обрабатываем одиночное нажатие SHIFT
if (time_from_pressing < time_from_pressing_delay-18) and (jx = joyx_default) and (jy = joyy_default) and (jz<>joyz_default)
{
;подаём звук
if (time_from_pressing = time_from_pressing_delay-18)
{
SoundPlay, beep.wav
}
message=кратковременно SHIFT
}
;обрабатываем одиночное нажатие без SHIFT
if (time_from_pressing < time_from_pressing_delay) and (jz = joyz_default)
{
SoundPlay, beep.wav
; JKey_OFF
If (jx >= JKey_OFF_min) and (jx <= JKey_OFF_max)
{
message=кратковременно OFF
}
; JKey_X1
If (jx >= JKey_X1_min) and (jx <= JKey_X1_max)
{
message=кратковременно X1
}
; JKey_X2
If (jx >= JKey_X2_min) and (jx <= JKey_X2_max)
{
message=кратковременно X2
}
; JKey_X3
If (jx >= JKey_X3_min) and (jx <= JKey_X3_max)
{
message=кратковременно X3
}
; JKey_ATT
If (jx >= JKey_ATT_min) and (jx <= JKey_ATT_max)
{
message=кратковременно ATT
}
; JKey_NEXT
If (jx >= JKey_NEXT_min) and (jx <= JKey_NEXT_max)
{
message=кратковременно NEXT
}
; JKey_PREV
If (jx >= JKey_PREV_min) and (jx <= JKey_PREV_max)
{
message=кратковременно PREV
}
; JKey_VOLU
If (jx >= JKey_VOLU_min) and (jx <= JKey_VOLU_max)
{
message=кратковременно VOLU
Repeat_VolumeStep:=Repeat_VolumeStep_Default
SoundGet, master_volume
master_volume:=master_volume+Repeat_VolumeStep
SoundSet, master_volume
}
; JKey_VOLD
If (jx >= JKey_VOLD_min) and (jx <= JKey_VOLD_max)
{
message=кратковременно VOLD
Repeat_VolumeStep:=Repeat_VolumeStep_Default
SoundGet, master_volume
master_volume:=master_volume-Repeat_VolumeStep
SoundSet, master_volume
}
; JKey_SOURCE
If (jx >= JKey_SOURCE_min) and (jx <= JKey_SOURCE_max)
{
message=кратковременно SOURCE
}
}
;обрабатываем одиночное нажатие любой кнопки в паре с SHIFT
if (time_from_pressing < time_from_pressing_delay) and (jz <> joyz_default) and ((jx <> joyx_default) or (jy <> joyy_default))
{
SoundPlay, beep.wav
; JKey_OFF+SHIFT
If (jx >= JKey_OFF_SHIFT_min) and (jx <= JKey_OFF_SHIFT_max) and (jz >= JKey_SHIFT_OFF_min) and (jz <= JKey_SHIFT_OFF_max)
{
message=кратковременно SHIFT+OFF
}
; JKey_X1+SHIFT
If (jx >= JKey_X1_SHIFT_min) and (jx <= JKey_X1_SHIFT_max) and (jz >= JKey_SHIFT_X1_min) and (jz <= JKey_SHIFT_X1_max)
{
message=кратковременно SHIFT+X1
}
; JKey_X2+SHIFT
If (jy >= JKey_X2_SHIFT_min) and (jy <= JKey_X2_SHIFT_max) and (jz >= JKey_SHIFT_X2_min) and (jz <= JKey_SHIFT_X2_max)
{
message=кратковременно SHIFT+X2
}
; JKey_X3+SHIFT
If (jx >= JKey_X3_SHIFT_min) and (jx <= JKey_X3_SHIFT_max) and (jz >= JKey_SHIFT_X3_min) and (jz <= JKey_SHIFT_X3_max)
{
message=кратковременно SHIFT+X3
}
; JKey_ATT+SHIFT
If (jx >= JKey_ATT_SHIFT_min) and (jx <= JKey_ATT_SHIFT_max) and (jz >= JKey_SHIFT_ATT_min) and (jz <= JKey_SHIFT_ATT_max)
{
message=кратковременно SHIFT+ATT
}
; JKey_NEXT+SHIFT
If (jx >= JKey_NEXT_SHIFT_min) and (jx <= JKey_NEXT_SHIFT_max) and (jz >= JKey_SHIFT_NEXT_min) and (jz <= JKey_SHIFT_NEXT_max)
{
message=кратковременно SHIFT+NEXT
}
; JKey_PREV+SHIFT
If (jx >= JKey_PREV_SHIFT_min) and (jx <= JKey_PREV_SHIFT_max) and (jz >= JKey_SHIFT_PREV_min) and (jz <= JKey_SHIFT_PREV_max)
{
message=кратковременно SHIFT+PREV
}
; JKey_SOURCE+SHIFT
If (jx >= JKey_SOURCE_SHIFT_min) and (jx <= JKey_SOURCE_SHIFT_max) and (jz >= JKey_SHIFT_SOURCE_min) and (jz <= JKey_SHIFT_SOURCE_max)
{
message=кратковременно SHIFT+SOURCE
}
}
;обрабатываем отпускание удержанной кнопки без SHIFT (для сброса некоторых переменных, нужных для режима удержания (например, увеличение громкости))
if (time_from_pressing > time_from_pressing_delay) and (jz = joyz_default)
{
; JKey_OFF
If (jx >= JKey_OFF_min) and (jx <= JKey_OFF_max)
{
}
; JKey_X1
If (jx >= JKey_X1_min) and (jx <= JKey_X1_max)
{
}
; JKey_X2
If (jx >= JKey_X2_min) and (jx <= JKey_X2_max)
{
}
; JKey_X3
If (jx >= JKey_X3_min) and (jx <= JKey_X3_max)
{
}
; JKey_ATT
If (jx >= JKey_ATT_min) and (jx <= JKey_ATT_max)
{
}
; JKey_NEXT
If (jx >= JKey_NEXT_min) and (jx <= JKey_NEXT_max)
{
}
; JKey_PREV
If (jx >= JKey_PREV_min) and (jx <= JKey_PREV_max)
{
}
; JKey_VOLU
If (jx >= JKey_VOLU_min) and (jx <= JKey_VOLU_max)
{
Repeat_VolumeStep:=Repeat_VolumeStep_Default
}
; JKey_VOLD
If (jx >= JKey_VOLD_min) and (jx <= JKey_VOLD_max)
{
Repeat_VolumeStep:=Repeat_VolumeStep_Default
}
; JKey_SOURCE
If (jx >= JKey_SOURCE_min) and (jx <= JKey_SOURCE_max)
{
}
}
}
}
return
у меня видимо аппаратная проблема на связке Sony RM-X4S + F16U
при выходе из спящего режима через раз не работает джойстик. в системе висит, но значения не изменяются... внешнее питание на USBхаб подаётся до включения компа...
как то раз удалось заставить работать удалением/определением в устройствах... может как то возможно заставить переинициировать?
SBorovkov
20.11.2008, 22:43
у меня видимо аппаратная проблема на связке Sony RM-X4S + F16U
при выходе из спящего режима через раз не работает джойстик.
Проверь, нет ли в системе еще одного джойстика (к примеру, со звуковой карты)? Есть вероятность, что после спящего режима они меняются местами. Если есть, отключи лишний (в свойствах)
dr_cannabis
22.11.2008, 01:22
Господа, объясните идиоту, уже 2 часа мучаюсь, но понять никак не могу! Как организована функция удержания кнопки, где и как считаеться время нажатия, если можно на примере с одной переменной!
SBorovkov
22.11.2008, 02:16
Господа, объясните идиоту, уже 2 часа мучаюсь, но понять никак не могу! Как организована функция удержания кнопки, где и как считаеться время нажатия, если можно на примере с одной переменной!
да все просто очень на самом деле :-)
Там цикл, который реагирует на любое изменение координат осей.
Вот мой главный цикл
Loop
{
; Читаем состояние кнопок. Если кнопарь нажат, то переменная button(№кнопки)= D
Loop, %joy_buttons%
{
GetKeyState, button%a_index%, %JoystickNumber%joy%a_index%
}
; Читаем показания оси Х - по сути основных кнопок жостика
GetKeyState, joyx, %JoystickNumber%JoyX
GetKeyState, joyz, %JoystickNumber%joyZ
;ToolTip, %joyx%
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)
}
}
else
{
if (joyx <> joyx_default) or (joyz<>joyz_default)
{
; если ничего не изменилось и положение НЕ дефолтное, то увеличиваем таймер на 1 и вызываем обработчик нажатия.
timer := timer + 1
res_button_pressed(prev_joyx, prev_joyz, timer)
}
}
Sleep, 50
}
0. То есть систему включили, у нее все по дефолту, ничего не происходит. далее:
1. Нажали кнопку. Начал вызываться обработчик нажатия. У него есть параметр Timer, который последовательно увеличивается. Если Timer=0, то кнопку только что нажали
2. Кнопку отпустили (или нажали что-то другое) Вызвался обработчик отпускания с параметром Timer, соответствующим времени нажатия на кнопку. Затем см пункт 0 или 1.
Теперь пишем обработчик для единственной кнопки
res_button_pressed(jx, jz , time_from_pressing)
{
global ; чтобы иметь доступ к глобальным переменным
if (jz = joyz_default) and (time_from_pressing = 0) ; то есть обрабатываем непосредственно нажатия, а не удерживания кнопок.
If (jx <= JKey_VOLU_max) and (jx>= JKey_VOLU_min) and ((time_from_pressing/5) = round(time_from_pressing/5))
{
SoundGet, master_volume
if time_from_pressing = 0
{
master_volume := master_volume*(1+(First_VolumeStep/100))
}
else
if time_from_pressing >= 15
{
master_volume := master_volume*(1+(Repeat_VolumeStep/100))
}
SoundSet, master_volume
}
}
Тут смысл такой - если только что нажали - меняем громкость на First_VolumeStep, а если ужерживаем - меняем на Repeat_VolumeStep каждые 5 циклов вызова, но если время от нажатия не менее 15.
Если же надо выполнять разные действия в зависимости от длительности - надо обрабатывать отпускание кнопки и по нему определять длинное или короткое нажатие, я чуть выше писал...
зы. Скопируй отсюда текст и расставь сдвиги вправо, чтобы понимать какой if на что действует, иначе непонятно... Я вставлял tab, но форум их съел :-(.
dr_cannabis
22.11.2008, 02:31
Спасибо, просто очень в неудобной для читания форме скрипт напечатан (по крайней мере для меня)сложно уловить начало и конец цикла я уже почти весь скрипт по if ам разложил, пока пост заметил! Респект вам ребята очень нужное дело сделали)
KilleRMill
25.01.2009, 21:46
А почему никто не использует другие кнопки F-16U? Там ведь еще 4 кнопки. Да, я понимаю что на SONY их не повесишь, но можно же вывести еще 4 кнопки, для спец нужд. Кто что думает по этому поводу?
люди.... а подскажите pls
как сделать так чтобы распознать нажатие Button 1(Pin 2) на game порте?
alexsorockin
10.04.2009, 01:24
Вот последняя версия для джойстика.
Функции:
-Кратковременное нажатие каждой кнопки
-Кратковременное нажатие пары кнопок
-Долгое нажатие каждой кнопки
-Долгое нажатие пары кнопок
-Ini файл с настройками
-32 горячие клавиши, задаются в Ini файле
-прочие настройки
dr_cannabis
29.10.2009, 22:08
Еще 5 копеек к скрипту перешел на виндовс 7 и обнаружил что звук перестал регулироваться командами Soudset вот решения с форума
On Windows Vista, SoundSet and SoundGet affect only the script itself (this may be resolved in a future version). There are at least two ways to work around this:
1) In the properties dialog for the file "AutoHotkey.exe" (or a compiled script), change the compatibility setting to "Windows XP".
2) Have the script send volume-control keystrokes to change the master volume for the entire system. For example:Code (Copy):
Send {Volume_Up} ; Raise the master volume by 1 interval (typically 5%).
Send {Volume_Down 3} ; Lower the master volume by 3 intervals.
Send {Volume_Mute} ; Mute/unmute the master volume
alexsorockin
16.05.2010, 05:59
Скоро снова напишу программку на делфи - можно будет настроить:
- любую кнопку
- любую комбинацию кнопок
- любую последовательность отдельно нажатых кнопок
- любую последовательность отдельно нажатых кнопок или комбинаций
- долгое нажатие отдельной кнопки
- долгое нажатие комбинации кнопок
- завершение долгим нажатием отдельной кнопки после любой последовательности отдельно нажатых кнопок
- завершение долгим нажатием комбинации кнопок после любой последовательности отдельно нажатых кнопок
- завершение долгим нажатием комбинации кнопок после любой последовательности отдельно нажатых кнопок или комбинаций
а также:
- оконный интерфейс
- назначение любых горячих клавиш
- режим мыши
и многое другое...
пишите ваши предложения, всё равно заново писать придётся...
Программа была практически готова, но флешка, с которой работал неожиданно сбойнула и всё пропало, не зарезервировал )))
быстро не обещаю - времени свободного практически нет, уже 2 месяца как компьютер домой принёс, поставил Win7, а езжу без музыки...
Скоро снова напишу программку на делфи - можно будет настроить:
- любую кнопку
- любую комбинацию кнопок
- любую последовательность отдельно нажатых кнопок
- любую последовательность отдельно нажатых кнопок или комбинаций
- долгое нажатие отдельной кнопки
- долгое нажатие комбинации кнопок
- завершение долгим нажатием отдельной кнопки после любой последовательности отдельно нажатых кнопок
- завершение долгим нажатием комбинации кнопок после любой последовательности отдельно нажатых кнопок
- завершение долгим нажатием комбинации кнопок после любой последовательности отдельно нажатых кнопок или комбинаций
а также:
- оконный интерфейс
- назначение любых горячих клавиш
- режим мыши
и многое другое...
пишите ваши предложения, всё равно заново писать придётся...
Программа была практически готова, но флешка, с которой работал неожиданно сбойнула и всё пропало, не зарезервировал )))
быстро не обещаю - времени свободного практически нет, уже 2 месяца как компьютер домой принёс, поставил Win7, а езжу без музыки...
Что-нибудь сдвинулось? интересно опробовать)
Народ привет. Извиняюсь за никрофильство :)
Есть возможность прикупить сей девайс. Вы его юзали смотрю и удачно. Хотел поинтересоваться джойстик удобный или лучше кнопки на руле?
Народ привет. Извиняюсь за никрофильство :)
Есть возможность прикупить сей девайс. Вы его юзали смотрю и удачно. Хотел поинтересоваться джойстик удобный или лучше кнопки на руле?
у меня нет кнопок на руле. потому крайне доволен девайсом.
Возможность прикупить новый или бу? а то мне пришлось как запчасть его покупать
rainstation
25.07.2013, 20:18
Пульт чумовой. Такой бы по bluetooth и с назначением пользовательских функций на все клавиши.... Мечта.
Реально б/у незадорого ни у кого нет? Попробую над ним поколдовать.
у меня нет кнопок на руле. потому крайне доволен девайсом.
Возможность прикупить новый или бу? а то мне пришлось как запчасть его покупать
Б/у за копейки отдают, без крепежа правда, но за мной последний аргумент - молоток :blush:
Спасибо за ответы. Будем брать.
Работает на vBulletin® версия 3.8.4. Copyright ©2000-2024, Jelsoft Enterprises Ltd. Перевод: zCarot