16.10.2008, 00:03 | #51 |
Старший Пользователь
Регистрация: 12.07.2008
Возраст: 40
Город: Рязань
Регион: 62
Машина: ROVER 416
Сообщений: 172
|
....
Последний раз редактировалось alexsorockin; 16.10.2008 в 00:49. |
16.10.2008, 00:26 | #52 | |
Старший Пользователь
Регистрация: 12.07.2008
Возраст: 40
Город: Рязань
Регион: 62
Машина: ROVER 416
Сообщений: 172
|
Цитата:
Так и не разобрался в первом скрипте... укажите на строчки, в которых выполняется действие в винде? Каким образом скрипт связывается с остальными программами? Билн, как это сформалировать... Вот если бы надо было двинуть нажать enter - написали бы Send, {ENTER}... А тут как взаимодействие происходит? |
|
16.10.2008, 01:10 | #53 |
Старший Пользователь
Регистрация: 12.07.2008
Возраст: 40
Город: Рязань
Регион: 62
Машина: ROVER 416
Сообщений: 172
|
Откомпилировал первый скрипт, запустил. Откомпилировал второй - запустил. оба запущены. Во всплывающем окошке от второго скрипта при поворачивании резисторов видно как меняются показания по осям X,Y,Z, но в то же время как ни крути не срабатывает ни одна функция (Send F11, к примеру (активно окно браузера, должно развернуться на полный экран)...) В чём дело? На каких значениях будет срабатывать?
|
16.10.2008, 02:16 | #54 | |
Старший Пользователь
Регистрация: 11.06.2008
Возраст: 46
Регион: 77, 97, 99, 177
Сообщений: 438
|
Цитата:
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
__________________
Ford focus2, материнка ASUS AT3GC-I (atom 330), 1G памяти, HDD 200G, Lart радио, bluetooth, видеозапись. Монитор Lilliput 889GL. Оболочка RR+DigitalFX 3.0, подробности тут:http://forum.pccar.ru/showthread.php?t=5588 |
|
16.10.2008, 21:07 | #55 |
Старший Пользователь
Регистрация: 12.07.2008
Возраст: 40
Город: Рязань
Регион: 62
Машина: ROVER 416
Сообщений: 172
|
Понял фишку, написал на основе первого и второго скриптов утилитку. Если надо будет - могу дать исходник. Качайте!
http://slil.ru/26243353 теперь возникло два вопроса: кто как назначил кнопки джойтика? у меня так: SOURCE =Play/Pause VOLUME = как положено SEEKUP - следующая песня SEEKDOWN - предыдущая ATT - само собой... вообще не понимаю зачем ATT нужен, если можно на паузу нажать???? кто какие действия назначил на остальные кнопки? и второй вопрос: как сделать в скрипте анализ двойного нажатия и тройного нажатия??? было бы очень полезно таким образом расширить количество возможных комбинаций |
16.10.2008, 22:11 | #56 |
Старший Пользователь
Регистрация: 11.06.2008
Возраст: 46
Регион: 77, 97, 99, 177
Сообщений: 438
|
Посмотри мой журнал. Только что скрипт писал. Правда, под РР.
__________________
Ford focus2, материнка ASUS AT3GC-I (atom 330), 1G памяти, HDD 200G, Lart радио, bluetooth, видеозапись. Монитор Lilliput 889GL. Оболочка RR+DigitalFX 3.0, подробности тут:http://forum.pccar.ru/showthread.php?t=5588 |
17.10.2008, 07:43 | #57 |
Старший Пользователь
Регистрация: 12.07.2008
Возраст: 40
Город: Рязань
Регион: 62
Машина: ROVER 416
Сообщений: 172
|
Настроил кнопки, изменил в двух местах в самом конце таким образом:
; 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 , была свёрнута, вхожу - не работает... сворачиваю - опять работает... |
17.10.2008, 14:06 | #58 |
Старший Пользователь
Регистрация: 11.06.2008
Возраст: 46
Регион: 77, 97, 99, 177
Сообщений: 438
|
1. Поставь пиликалку на это действие.
2. Сначала активируй CF. И скорее всего все получится.
__________________
Ford focus2, материнка ASUS AT3GC-I (atom 330), 1G памяти, HDD 200G, Lart радио, bluetooth, видеозапись. Монитор Lilliput 889GL. Оболочка RR+DigitalFX 3.0, подробности тут:http://forum.pccar.ru/showthread.php?t=5588 |
17.10.2008, 20:01 | #59 |
Старший Пользователь
Регистрация: 12.07.2008
Возраст: 40
Город: Рязань
Регион: 62
Машина: ROVER 416
Сообщений: 172
|
Спасибо тебе за скрипт! Сегодня расширил его! Сдеал порежиное управление и кучу всего...
Проблема была в том, что при редактировании горячих клавиш в CF они почему-то активироались, но не все, а как-то беспорядочно, а у меня в это время внастройфках горячие клавиши были отключены... Включил - и всё заработало!!! |
18.10.2008, 12:05 | #60 |
Старший Пользователь
Регистрация: 12.07.2008
Возраст: 40
Город: Рязань
Регион: 62
Машина: ROVER 416
Сообщений: 172
|
#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 |
Здесь присутствуют: 2 (пользователей: 0 , гостей: 2) | |
|
|