Jump to content
NobbyNobbs

Программирование джойстиков CH Products

Recommended Posts

2bpm. Приветствую...

Последовательность создать несложно. Даже есть варианты. Но есть одна проблема (если я не ошибаюсь:blush:- в менеджере нет возможности запрограммировать длительное нажатие кнопки мыши :(. Можно только короткие "click" или "double-click". Соответственно выход в том, чтобы переназначать команды управления. Лучше на кнопки джоя. То же и по второму вопросу...

  • Thanks 1

Share this post


Link to post
Share on other sites

Спасибо, а как выглядела бы такая последoвательность, пусть там будут любые другие клавиши, как например управлять длительностью задержки и удержания нажатия?

Edited by bpm

Share this post


Link to post
Share on other sites
2 часа назад, bpm сказал:

Спасибо, а как выглядела бы такая последoвательность, пусть там будут любые другие клавиши, как например управлять длительностью задержки и удержания нажатия?

 

Есть три варианта:

- с использованием последовательностей sequence...wait

- с использованием логических устройств/таймеров (ура zulu ;))

- с использованием функции TimeStamp

Первые два дают невысокую точность отсчетов, зависят от настроек и "активности" джоя. Но они простые!

Итак раз...

// CMS Script File
// Последовательность bmp:
// кн1(J)
// пауза(Зсек)
// кн2(6сек)
// Вариант 1
//
script
sequence
  wait (js1.b1); // Тут д.б. твоя кнопка запуска последовательности
  cms.b1 = true; // на cms.b1 назначить "J". Нажали...
  delay(10); // ! время "DELAY" зависит от "Character Rate" на закладке Program Settings
  cms.b1 = false; // Отпустили...
  delay(60); // пауза ~3 сек
  cms.b2 = true; // Нажали cms.b2 (на неё назначаешь кнопку джоя вместо ЛКМ)
  delay(120); // Нажата ~6 сек.
  cms.b2 = false; // Отпустили
endsequence
endScript

Два...

// CMS Script File
// Последовательность bmp
// Вариант 2
//
script
pulse(dl) = jsl.bl; // Тут д.б. твоя кнопка: старт импульса последовательности
timer(period,d2,10)=d1; // импульс ~0,5сек
cms.b1=d2; // Кнопка с "J" нажата на пол сек.
timer(period,d3,60) = not d2; //Пауза ~З сек
timer(period,d4,120) = not d3; //По окончанию паузы импульс ~6cек
cms.b2 = d4; // 6 сек нажата кнопка “отвечающая за ЛКМ”
endScript

числа "60" и "120", которые определяют время отсчетов даны приблизительно. Требуется подгонка...

Последний (3-й) вариант обращается к системным часам компа. Дает весьма точное значение отсчетов. Расплата - более 30 строк кода... А оно того стоит?

Тем не менее если очень надо, то позже выложу.

Edited by =J13=Moroka

Share this post


Link to post
Share on other sites

Еще раз спасибо большое, со стрельбой я разобрался, действительно, стоило назначить не мышь, а любую другую кнопку и все стало ОК.
А где можно подробнее прочитать про то как пишутся последовательности и макросы, потому как в мануале я либо не нахожу нужный раздел либо не понимаю чего-то. Где то есть по подробнее про созданием последовательностей в СМС файлах более сложных чем сочетания CTL f например, или как то можно усложнять введенные keystrokes, добавляя в них задержку и т.д. В мануале это как то мимоходом все типа введите нужное сочетание клавиш и готово... Если идеологию скриптового программирования я в целом уяснил то вот макросы как-то не рассмотрены нигре особо получается, или они такие обрезанные раз есть мощные скрипты??? В том же LGS логитековском макросы еще и программированием на Луа дополнены, прям обидно даже, мышка и клава умнее джойстика получаются :)

Share this post


Link to post
Share on other sites

Вдогонку еще вопрос, в первом скрипте нужно в карте переключить  js1.b1 в DX mode или скрипт полюбому ее захватит даже если она замаплена на какую-то клавишу клавиатуры?

Share this post


Link to post
Share on other sites
9 часов назад, bpm сказал:

Вдогонку еще вопрос, в первом скрипте нужно в карте переключить  js1.b1 в DX mode или скрипт полюбому ее захватит даже если она замаплена на какую-то клавишу клавиатуры?

Скрипт "полюбому её захватит даже если замаплена"! Если одновременно замаплена на кнопку (в dx моде), нажмется соответствующая кнопка, если на клавиши - клавиша. Если ты не хочешь, чтобы чего-либа нажималось, то для dx мода в боксе DirectX Device/DirectX Control выбирай "None" (достаточно в одном из..), а для "key" мода - пустые поля или null. И, наконец, можно использовать одновременно команды в макросе и в скрипте. Так для твоей последовательности можно назначить на копку символ "j" (или "null j", чтобы однократно). А уже макросы начать со старта паузы по отпусканию этой кнопки одновременно убрав из них строки для cms.b1. Т.е.


// Вариант 1
//
script
sequence
  wait ( not js1.b1); // Отпустили кнопку - запустили последовательность
  delay(60); // пауза ~3 сек
  cms.b2 = true; // Нажали cms.b2 (на неё назначаешь кнопку джоя вместо ЛКМ)
  delay(120); // Нажата ~6 сек.
  cms.b2 = false; // Отпустили
endsequence
endScript
...
// Вариант 2
//
script
timer(period,d3,60) = not js1.b1; //Пауза ~З сек после отпускания кнопки
timer(period,d4,120) = not d3; //По окончанию паузы импульс ~6cек
cms.b2 = d4; // 6 сек нажата кнопка “отвечающая за ЛКМ”
endScript

Что касается программирования клавиш, то тут в самом деле, не такое раздолье, как в скриптах.... Собственно имеем сами клавиши, модальные клавиши, всякие NULL, HOLD, KEYS, спец символы типа CHARDLY и т.п. И про всё это есть в руководстве, когда то выложенным здесь Nubby... Его и дабавил в прикрепленные файлы...

CH_Manual_RUS_incomplete.rar

А вот самому любопытно стало, а проверить сейчас не могу... Что будет если повторно нажать кнопку не дождавшись окончания последовательности? И в одном и другом случае? А то есть смысл подумать как блокировать повторный запуск на время работы последовательности.

Share this post


Link to post
Share on other sites

То есть если кнопка джоя в скрипте обозначена как допустим j1.b1 (т.е. явно указана) то скрипт отследит ее нажатие в любом случае? Будь на ней замаплена буква или кнопка ДиректХ режим виртуального джоя или вообще ничего, или все что угодно, лишь бы устройство было подключено? Т.е. в этом случае скрипт он как медоед? :) Я то наивно полагал что для использования в скрипте на кнопке не должно быть вообще ничего....

Edited by bpm

Share this post


Link to post
Share on other sites
4 часа назад, bpm сказал:

Я то наивно полагал что для использования в скрипте на кнопке не должно быть вообще ничего....

Это лучше, когда ничего нет, удобнее. Потому, как отслеживать логику работы от двух "потоков" неудобно... сложно.

Share this post


Link to post
Share on other sites

Тогда у меня еще один вопрос по теоретической части - можно например сделать на обычное нажатие замапленную кнопку (например J), а на нажатие с шифтом - последовательность? Не будет ли в случае нажатия кнопки с шифтом вместе с последовательностью отрабатываться и кнопка J ?

Share this post


Link to post
Share on other sites

Можно. А исполнение будет зависеть от того какой у тебя шифт: назначенный в Сontrol Мanager(далее СМ), такой может быть только один на все твои устройства ввода или "програмный". Таких может назначить несколько, но "знать" о них будет только скрипт.

Чтобы замапленная без шифта кнопка не нажималась с шифтом из СМ надо:

а) в случае DX Mode прописать в секции "Shifted Action" отличную от основной кнопку, которая будет нажиматься, но не будет использоваться (назначена) в настройках;

б) в случае не DX Mode, нужно прописать в первом боксе секции "Shifted Action": "null"

Если этого не сделать, то даже когда поля пустые или для устройства и кнопки прописано "none" будет та же реакция, как без шифта!

Если же использовать "программные" шифты, то надо, чтобы в СМ на них не было команд (пусто, null или "none"), а маппить всё через cms устройство. Т.е.:

// обзовем кнопку джоя выделенного для шифта, например shift1

%define shift1 js1.b4 // пусть это будет кнопка b4
script
...
cms.b1 = js1.b1 and not shift1 // на cms.b1 назначить то, что без шифта
...
sequence
   wait( js1.b1 and shift1);
...и т.д. 

Если планируешь несколько программируемых кнопок  с шифтом, то лучше:

%define shift1 js1.b4 // пусть это будет кнопка b4
script
...
if (!shift1) then // Вместо "NOT" можно ставить "!"
    cms.b1 = js1.b1// тут всё, что без шифта
else
   sequence
      wait( js1.b1);
      ...
endif
и т.д. 

При использовании шифта из СМ конечно проще! Не нужно программировать то, что "без шифта". Но на "shift1" придется таки назначить кнопку! (ту же, что и в СМ)

И наконец остается мощный инструмент использования "Mode Control". Но это уже из запредельного ;)

Edited by =J13=Moroka

Share this post


Link to post
Share on other sites

Хоть и не в тему,но опишу баг который случился с продукцией СН. У меня подключены педали и Руд СН-ные, решил в настройках игры поставить,общий тормоз шасси на одну из педалей(правую),на которых уже забиндены соответственно правый и левый раздельные тормоза. Спросите зачем,приобрел Макаку,а на ней тормоз один на оба колеса,так как играю только за синих,то пользовался естественно раздельными.Так вот,вылез глюк,при работе Рудом,двигались педали,перестали отвечать все кнопки и стики на РУде,даже клюканула хатка на джое ВКБ,на ней стоит приближение,так и она работала не как я выставил. Когда допер в чем проблема и убрал тормоза,все стало как было,а уже были мысли что кто то поменял копки в настройках игры)) или игра глюканула. Вот такой вот "конфликт"  случился)

Share this post


Link to post
Share on other sites

Товарищи пилоты! Скажите мне вот какую штуку - как же вы побороли невозможность запрограммировать нормально, скажем, какой-нибудь "правый ALT - b"? Поясню. Ил устроен как-то хитро, так что не ловит слишком быстро "нажатые" клавиши модификатора. Т.е. RALT b он воспримет, при стандартной настройке, как просто b. В результате все хитрые настройки нашего ХОТАСа бесполезны.

Есть два варианта решения проблемы:

  1. Снижать Character Rate (скорость повторения символов) до значений 40-50 (в Control Manager'е на вкладке Program Settings), чтобы задержка между нажатием первой и второй клавиш увеличилась  -- проблема ила в том, что с определённой скорости он начинает воспринимать клавиши как одновременно нажатые и, почему-то, теряет модификатор т.е. "Alt-b" он видит как просто b, а модификатор просто теряется-игнорируется. Видимо в один "квант" времени он способен регистрировать только одну клавишу. Если её нажимает пользователь ручками, то нажатие висит достаточно долго, чтобы прошло более чем один квант времени. А наш чудо-джойстик программно слишком быстро нажимает и отпускает клавиши, так что они попадают в один квант. Снижая скорость, мы уходим от этой проблемы, игра успевает отработать оба нажатия, но, во-первых, при слишком маленькой скорости начинаются проблемы с длинными комбинациями (например ctrl + alt + shf + F12 для какой-нибудь центровки трекира) реально начинают слишком долго работать, что заметно, а во-вторых, это не решает проблему окончательно, так как сегодня настройка скорости 40 работает нормально, а завтра перестают работать вообще любые настройки.
  2. Писать макросы, вставляя задержки между нажатиями. Т.е. вместо RALT HOLD b пишем: KEYS +RALT CHARDLY +b -b -RALT   Т.е. мы вставили задержку между нажатием Alt и нажатием b. Решаем, таким образом, проблему. Но тут начинаются танцы с бубном из-за того, что если нам надо удерживать какую-то клавишу при удержании кнопки, то приходится на кнопку вешать два действия: нажатие клавиш на нажатие кнопки, отпускание клавиш при отпускании кнопки. Например триммер, это уже два действия: KEYS +RCTL CHARDLY +KBDOWN на нажатие и KEYS -KBDOWN -RCTL на отпускание. Это всё можно сделать при должном терпении, но тут выскакивает проблема уже самого CM Control Manager'а и джойстика - если кнопка джойстика нажималась с шифтом джойстика, то если при отпускании сначала отпустить шифт, то отпускание клавиши до конца не отыгрывается, в результате очень любит зависнуть в нажатом состоянии какой-нибудь RSHF и блокирует нормальную работу игры например по Esc в меню не выйти, пока его не отжать.

Это всё - плач Ярославны, но хотелось бы, тем не менее, спросить, как вы, други, решили эту проблему с нерегистрацией нажатия модификатора?

 

Share this post


Link to post
Share on other sites
14 часов назад, 72AG_terror сказал:

Товарищи пилоты! Скажите мне вот какую штуку - как же вы побороли невозможность запрограммировать нормально, скажем, какой-нибудь "правый ALT - b"?

 

Добрый день.  Вот как бы особых проблем, почему-то, не испытываю..

Хм... Что бросилось в глаза в написанном вами...  вы упомянули комбинаторию "RALT HOLD b" - вообще то правильно писать "HOLD RALT b", именно в этом случае произойдет "зажатие" правого альта и только затем малой "b".  Можно, также, для уверенности употребить "HOLD RALT CHARDLY b".  Честно, как то нет проблем. Хотя очень сложные комбинации программирую. Хотя мне больше нравятся именно скрипты. 

 

О, а вы лучше покажите применяемость ваших хотелок! Ну более приземлённый и конкретный пример для Ила..  Например, дефолтная команда Ила - такая то, хочу назначить её на кн. джойстика, пишу то-то, делаю то-то,  не работает (работает). Тогда я смогу попробовать сделать то же самое на своей системе, и узнаем,  хотя бы где искать проблему: лично у вас, или в CH софте.

 

Character rate = 50 и никогда не менял.

 

14 часов назад, 72AG_terror сказал:

например ctrl + alt + shf + F12 для какой-нибудь центровки трекира

 

Вообще, центровку трекира для симуляторов лучше всего в самом трекире раз и на всегда перенести на KP5.   Ибо по-умолчанию F12 практически всегда "занята" игрой для своих нужд.  А вот KP5 это - центровка вида, что как нельзя лучше подходит для того, что бы на неё одновременно повесить и центровку трекир.  

Share this post


Link to post
Share on other sites
В 10.11.2018 в 23:50, 72AG_terror сказал:

Товарищи пилоты! Скажите мне вот какую штуку - как же вы побороли невозможность запрограммировать нормально, скажем, какой-нибудь "правый ALT - b"?

Товарищ Terror, так был же вариант... Отдельно прописывать строку KEYS на нажатие и отдельно на отпускание... Муторно конечно, но зато работает ;) 

Share this post


Link to post
Share on other sites

Други ,извиняюсь что не в тему , приобрел ( по случаю сей джой  -жду пока едет ) - вопрос - чем смазывать "механику" , или не надо туда "лазить" 

Спасибо .

Share this post


Link to post
Share on other sites

Когда я разбирал сей джой, для замены резистора, то смазки там было достаточно, если туда никто не лазил, я не думаю, что его необходимо смазывать. Но если возникла такая необходимость, я смазывал белой(как сметана) силиконовой смазкой, марку смазки не скажу, не помню.  Думаю в инете можно найти смазку для пластика.

Share this post


Link to post
Share on other sites

Ни разу не смазывал ничем свой Комбатстик за 10 лет. Всё до сих пор хорошо и не люфтит

 

  • Upvote 1

Share this post


Link to post
Share on other sites

Для экспериментов, ищу либо плату от Fighter Stick или Combat Stick, либо разбитый джой.  Если у кого есть, либо знаете у кого есть подскажите пожалуйста, что бы договориться.

 

Share this post


Link to post
Share on other sites
28.03.2019 в 13:07, [IB]Zulu сказал:

Для экспериментов, ищу либо плату от Fighter Stick или Combat Stick, либо разбитый джой.  Если у кого есть, либо знаете у кого есть подскажите пожалуйста, что бы договориться.

 

А что Вы можете предложить на обмен?

Осталось от Combat Stick.

20190527_131236.thumb.jpg.a0b8cbb09d1ef2f3d385cea7ce07b21f.jpg

 

 

Share this post


Link to post
Share on other sites

У меня CH Produkt PRO Truttle USB. Только вот не понял, куда все эти коды пихать. Я когда играл с этим девайсом в ИЛ-2 ЗС, ничего такого не видел. Просто устанавливал в систему, центровал, в игре назначал кнопки и вперёд. Здесь что-то изменилось?

 

Share this post


Link to post
Share on other sites

)))

Ничего)))

Играй как и прежде ;)

  • Upvote 1

Share this post


Link to post
Share on other sites
Только что, 2BAG_Miron сказал:

)))

Ничего)))

Играй как и прежде ;)

Ну уж нет. Теперь буду закидывать вопросами. Как повесить на одну кнопку радиаторы(охлаждения двигателя и масла)?

Share this post


Link to post
Share on other sites
1 час назад, RC_VASILICH сказал:

Ну уж нет. Теперь буду закидывать вопросами. Как повесить на одну кнопку радиаторы(охлаждения двигателя и масла)?

Виртуальную ос сделай.Ос -большой полосатый мух:) На первой странице темы есть скрипт.

Share this post


Link to post
Share on other sites

Если бы я ещё умел эти скрипты сувать куда нужно. 

Share this post


Link to post
Share on other sites

Как повесить на микростик(вверх и вниз) триммер руля высоты? Если можно, всё по пунктам.

Share this post


Link to post
Share on other sites
Posted (edited)
02.06.2019 в 11:57, RC_VASILICH сказал:

Как повесить на микростик(вверх и вниз) триммер руля высоты? Если можно, всё по пунктам.

Во-первых, приветствую Вас, Василич в клубе программистов CH ;)...

Во-вторых... хочется знать степень Ваших амбиций в управлении триммером.... поясню: можно использовать управление триммером из игры, т.е. управлять кнопками из настроек "вверх" и "вниз", а можно триммировать ось вашего джоя, как если бы триммер был не на кнопках, а на оси!

Так вот в первом случае воспользуйтесь скриптом от Nobby. В нем министик "превращается" в 4-х поз. хатку, которая "нажимает" на кнопки cms устройства в2/в4 и в7/в10 (можно назначить любые другие, от в1 до в128). CMS устройство надо будет добавить" в CH Control Manager, наряду с самим джоем.

В-третьих... насколко подробные нужны пункты?... Как у Вас с ликбезом по программированию СН? 

Edited by =J13=Moroka

Share this post


Link to post
Share on other sites
22.06.2019 в 18:56, =J13=Moroka сказал:

Во-первых, приветствую Вас, Василич в клубе программистов CH ;)...

Во-вторых... хочется знать степень Ваших амбиций в управлении триммером.... поясню: можно использовать управление триммером из игры, т.е. управлять кнопками из настроек "вверх" и "вниз", а можно триммировать ось вашего джоя, как если бы триммер был не на кнопках, а на оси!

Так вот в первом случае воспользуйтесь скриптом от Nobby. В нем министик "превращается" в 4-х поз. хатку, которая "нажимает" на кнопки cms устройства в2/в4 и в7/в10 (можно назначить любые другие, от в1 до в128). CMS устройство надо будет добавить" в CH Control Manager, наряду с самим джоем.

В-третьих... насколко подробные нужны пункты?... Как у Вас с ликбезом по программированию СН? 

Хатка не помешала бы, хоть какая-то польза будет от микростика. А с ликбезом у меня никак.

Share this post


Link to post
Share on other sites
Posted (edited)

 

03.07.2019 в 13:48, RC_VASILICH сказал:

А с ликбезом у меня никак.

Может это поможет?:

1.Открываем CH Manager и добавляем наш РУД... ProThrottle

  1425862901_1.jpg.d1230a45cdb6c49d18a61d8e40a78540.jpg1030382135_2.jpg.2de9fde2b81101747fa0a049b42612cd.jpg

Затем надо добавить ещё одно устройство: CMS Control. Потому что только оно "понимает" команды скрипта, т.е. только скрипт может "нажимать" на его кнопки и двигать его оси.

    755295357_3.jpg.8a29922675ba3a6c14f01fa44ee16e82.jpg     535735455_4.jpg.6dcca0c5f72e56c51345e747f309a169.jpg

Затем открываем редактор и пишем/вставляем текст скрипта между script...endscript. (Внёс поправки в оригинальный текст: js2 заменил на js1. Потому что у нас только один джойстик и он первый в списке. И убрал вылезшие не пойми откуда знаки вопроса)

  1798559771_6.jpg.25f29d66601c2de735033e1c464744aa.jpg    887336038_7.jpg.35080bbb6cccfb80d5b5d689cdac857a.jpg     

1803916017_9.jpg.16607c46e5467fc074d694ce3d4334fd.jpg

Обязательно кликаем Check Script. Внизу должна появиться надпись, что мол ошибок нет и всё ОК!....как-то так... И кликаем EXIT

  217131887_10.jpg.7dfab88bb8b1ffc6faf552a93ae97a7f.jpg    459482647_12.jpg.cabdcce39ead1684168f700601202dd6.jpg

И что этот скрипт значит?... А то, что кнопка b2 (cms.b2) нашего CMS устройства "нажмется" если ось министика a1 (ось X) нашего РУДа (js1.a1) будет отклонена влево (значение оси меньше 10). То же для кнопки b2 (cms.b2) при отклонении министика вправо (значение больше 245). А для b7 и b10 определяющим будет ось Y (js1.a2)

1217661352_13.jpg.efdf716dd6968937c8b9a974774c2d50.jpg

 

А дальше или выбираем в DX Mode для cms.b2 устройство и кнопку которую увидит игра . Или убираем галку DX Mode и назначаем клавиши...

     1514536601_14-15.jpg.c49509c105cedd4abb6fb096369605db.jpg          189706072_16.jpg.30cdba03f1ff98d0f6d84781a96deb66.jpg   

Можно написать самому, или вставить из командного файла (если он загружен), или через функцию записи... 

   472227186_17-18.jpg.f5932be4565bee476eccd89381313a63.jpg    1274619138_19.jpg.6ee77c51639ee3b2c07182dac50bfcdb.jpg 

 

И чтобы всё это заработало Обязательно ЗАГРУЗИТЬ созданный профиль...

968839523_20.jpg.05df61e699550a931c312eb6ac3f155d.jpg

 

 

 

Процедуру назначения кнопок cms устройства надо повторить для всех указанных в скрипте (b4, b7 b10).

Edited by =J13=Moroka

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...