Чукча не писатель, чукча - читатель.
Тема подзаглохла, да. Попробуем внести свежую струю.
По случаю появления некоторого свободного времени - такая уж неделя выдалась - был занят несколько иным проектом, совсем к авиационным делам не относящимся, родился свежий билд 1.0.0.58.
- добавлена поддержка хатки,
- слегка изменен формат сохраняемого файла (прошлый формат поддерживается),
- добавлен ключ '-u'. Если запустить программу с этим ключом, в том случае если программа уже запущена, происходит её выгрузка из памяти, в противном случае запуск произойдет в обычном режиме.
С поддержкой хатки все должно быть понятно.
Хатки прописываются после кнопок джойстика. Назвал направления отклонений хатки по сторонам света. Так, мне думается, оно нормально.
В сохранении теперь формат такой:
[ProdGUID,InstanceGUID,ProductName]
NumberOfButtons=...
NumberOfPOVs=...
Name=Joystick0
[Joystick0\Button0]
...
Далее по плану поддержка подгрузки профилей.
Саша, в процессе эксплуатации выявился небольшой, но все таки баг.
Когда часто (2-3 раза в сек на протяжении нескольких секунд) клацаешь кнопочкой (одной или хатку "по кругу" гоняешь) иногда вываливается окошко с ошибкой, типа память не может быть read, память не может быть write, с нулевыми адресами памяти. Не критично, сам маппер не вываливается, так что баг скорее косметический. Зависимости от частоты/ длительности нажатий выявить не удалось, посему как либо конкретизировать проблему пока не могу.
Хотя допускаю, что м.б. что то не в порядке в консерватории, т.е. у меня, ибо винда уже не первой свежести, мусора в системе порядком.
И еще одна просьба/пожелание.
Рик, как то предлагал уже, чтобы при обнулении кол-ва повторов, с целью "размапить" кнопку, все содержимое полей затиралось бы. Возможно предварительно надо выдать запрос, типа "А ты уверен?"
А то вчера сел профиль лепить, и начал не с нуля, на чистом, а на готовом профиле на котором эксперименты проводил, и десяток кнопок был замаплен. Задолбался ручками с каждого поля значения удалять
Чукча не писатель, чукча - читатель.
Здрасте вам!
От программирования далёк, помочь не могу, а вот своё скромное, но огромное СПАСИБО!!! очень хочу сказать. Молодцы!
Вот с этого места хотелось бы поподробнее.
Что именно замапил на кнопку, которой клацаешь 2-3 раза в секунду?
На нажатие и на отпускание - само сочетание кнопок, количество повторов, пауза между оными.
Иначе локализовать не получается.
Навскидку - вероятно, баг проявляется из-за конкурирования потоков при одновременном доступе к одному и тому же участку памяти.
Попробую покопать в этом направлении, но прошу уточнить - потому как грабли могут оказаться в совершенно другом месте.
Насколько я помню, USSR_Rik предлагал сделать так, чтобы поля, у которых прописано число повторов 0, просто не сохранялись в результирующий файл.
Насколько я помню, сейчас это так и происходит для кнопок. Для хаток не должно пока фурычить, но для кнопок делается.
Т.е. прописываем 0 в Repeat, потом сохраняем профиль. После загрузки профиля поле должно очиститься.
P.S. Все никак не осилю маппинг загрузки/выгрузки профиля по нажатию.
Сейчас попробовал повторить. Самый простой вариант - берешь хатку и начинаешь ее быстренько крутить по кругу, т.е. получается поочередное нажатие 8 кнопок хатки. Через пару секунд вываливается ошибка.
На хатку не замаплено ничего. Ну т.е. вообще ничего. Скрин прилагаю
ИМХО сохранение/загрузка профиля - это дополнительный и излишний шаг. Так как предлагаю я, более дружественно к юзеру. Опять таки ИМХО.Насколько я помню, USSR_Rik предлагал сделать так, чтобы поля, у которых прописано число повторов 0, просто не сохранялись в результирующий файл.
Насколько я помню, сейчас это так и происходит для кнопок. Для хаток не должно пока фурычить, но для кнопок делается.
Что-то конкретное не выходит? Можешь стоит рассказать что не получается, тут программистов много, авось чего толкового хором и подскажем?P.S. Все никак не осилю маппинг загрузки/выгрузки профиля по нажатию.
Чукча не писатель, чукча - читатель.
Если кто-то в Грузии думал что русские простят 20.09.07 - он был категорически неправ !!!
LazyCamel, благодарю за помощь, но непосредственно функционал подобного рода в данном случае - это, можно сказать, самое простое
Я когда сказал "никак не осилю" - прежде всего о встраивании в интерфейс говорил - вот где самая неприятная рутина - чтобы и в окошке рисовалось, и на тыканья мышкой отзывалось правильно и в файл конфигурации сохранялось и подгружалось из него
Нынче просто пора такая - особенно с этими удивительными праздниками, что сил не остается по вечерам никаких
Но сим вечером наконец-то доделал.
1.0.0.59 - апдейт с профилями. Перевесил аттач в головном посте темы.
Oleg_BS - крутил я хатку, крутил... но что-то никак до ошибки обращения к памяти не добрался.
Подозрительное местечко одно переиначил, но даст ли это эффект - не знаю.
Чукча не писатель, чукча - читатель.
Чудесная программа!
Я использую это для того чтобы просигналить FOV в IL2.
Повторение 12 задерживает 25ms.
благодарит ваше.
Sokol1_Br
С каждым разом становится все лучше!
И сразу хочется большего...
1. Запуск из пакетного файла. Я использую батник, в которым сначала запускаю профайлер, затем игру, а после ее завершения выгружаю профайлер. Текущая версия SVMapper при запуске в таком режиме не передает управление дальше, т.е. игре, и пакетный файл стоит, "ждет"... :confused:
Согласен на компромисс - параметр командной строки, активизирующий профайлер. Т.е. при ручном запуске профайлер просто стартует, но не отрабатывает кнопки, а параметром из командной строки активизируется и загружает заданный в конфиге профиль.
2. Сброс назначений кнопки. Не совсем очевидно его делать обнулением счетчика повторений. Контекстное меню в этом случае было бы кстати.
3. Текущую строку профиля хорошо бы выделить цветом, но не сильно ярким, светло-серым, к примеру...
4. Ну и самое несбыточное - макросы. Это было бы полное счастье!
Арбайтен! Нихт перекурен!
Чукча не писатель, чукча - читатель.
НАсколько я помню, в ключах командной строки есть какой-то, который позволяет запустить следующую программу из пакета не дожидаясь, когда отработает текущая. Да вот беда - вспомнить и найти ее не могу, забыли мы все старый добрый DOS, избаловались окнами да мышом
А вот это должно решить много вопросов:
Создаем несколько профилей, вытаскиваем ярлыки - вуаля! Пиши хоть батник, а кто хочет - может и по нужному ярлыку профиля кликнуть.
Ну и по макросам - очень хотелось бы. Чтобы можно было текстом написать (условно):
Joy1_XXXXXX_Button17_OnPress = {W} {Pause 58} {R} {Pause 20} {W}
...чего уж тигру лишняя полосочка... (© - не помню)
Присоединяюсь к просьбе о макросах.
ИМХО если реализовывать этот функционал, то необходимо не забыть возможность указания не только эмуляции нажатия клавиатурной клавиши, но и ее отпускания. Т.е. типа:
SHIFT {20} R {20} r {20} shift, что в переводе на русский значит
Нажали Shift, пауза 20 мс, нажали R,пауза 20 мс, отпустили R, пауза 20 мс, отпустили Shift. Короче говоря БОЛЬШИМИ буквами - нажатие, маленькими - отпускание.
Это даст возможность реализовывать сложные клавиатурные комбинации типа Ctrl+Alt+Shift+E, регулировать продолжительность нажатия (ну например для "порционирования" пулеметно-пушечных очередей) и т.д.
Что касается реализации, то, опять таки ИМХО, ручное редактирование строки не самый оптимальный вариант. Лучше сделать по принципу Сайтековского маппера - ручками жмешь нужные кнопы, они пишутся (с подсчетом и вводом длительности пауз между нажатиями) и есть возможность ручной корректировки длительности пауз (только пауз, поскольку легче контролировать ввод - только числовые значения).
Теперь пару слов по интерфейсу.
Строку макроса записывать прямо в поля "Mapped Key On Press" и "Mapped Key On Release". Кстати, туда же, лучше писать и название загружаемого профиля, возможно предваряя его каким то префиксом, например PR:"D:\SVMapper\Su27.svm"
Тем самым, при наращивании функционала, окно маппера не разрастается вширь, и все рабочее пространство используется максимально эффективно.
Для того, чтобы маппер понял, чего же нужно запихивать в это поле (комбинацию, профиль, макрос) лучше всего реализовать контекстное меню по правому клику на поле:
"Очистить строку"
"Клавиша"
"Макрос"
"Профиль"
"Редактировать"
При выборе соответствующего пункта, получаем дополнительное окно в котором и производим требуемое действо.
Ну и действительно, подсветка выбранной строки, не помешала бы.
Саша, мы в тебя верим!
Чукча не писатель, чукча - читатель.
Я вот хотел просто повтор удерживаемой клавиши с заданным интервалом времени, да почитав ваши посты уже стесняюсь по таким пустякам беспокоить
Так я же написал Joy1_XXXXXX_Button17_OnPress = ..... - аналогичный макрос может быть (если надо) и на OnRelease.
Или ты предлагаешь сделать реализацию отпускания клавиши прямо в теле макроса? Я как-то не соображу, как это применить и будет ли востребовано.
...чего уж тигру лишняя полосочка... (© - не помню)
Например, для выброса нескольких серий ЛТЦ по несколько ловушек в каждой.
Вот я раньше писал
http://forum.sukhoi.ru/showpost.php?...0&postcount=33
aim and fire
Юбилейный 500-й пост на Сухом!
Так это же реализовано.
В Repeat - кол-во повторов, в Delay - величину задержки...
Или речь о том, чтобы повторять не заданное кол-во раз, а пока нажата кнопка, но генерить нажатия через определенный интервал?
Если так, и это не работает, то пожалуй действительно нужная фича.
Вдобавок по идее не слишком сложная в реализации (хотя как знать).
Т.е. нужно, по идее, проставить величину задержки на нажатие, установить кол-во повторов в 1, а Continuos - в "Yes"
Кстати, может оно так и работает?
Кто проверит - отпишитесь, а то джоя на работе под рукой нет.
Чукча не писатель, чукча - читатель.
Я понимаю. Просто я говорил о том, чтобы не ручками файл профиля править в текстовом редакторе, а сделать возможность создавать макросы прямо через интерфейс маппера.
Именно. Ну например для того, чтобы была возможность устанавливать не только длительность пауз между нажатиями, а еще и длительность самого нажатия. Допустим стрелять короткими очередями заданной длительностиИли ты предлагаешь сделать реализацию отпускания клавиши прямо в теле макроса? Я как-то не соображу, как это применить и будет ли востребовано.
Чукча не писатель, чукча - читатель.
Aim, Oleg_BS - да, теперь применение понял. Дело за автором!
И все-таки правка профиля ручками нужна. Например - с клавы выставить задержку 20..30 мс будет проблематично
...чего уж тигру лишняя полосочка... (© - не помню)
Ручную правку макроса нужно иметь в арсенале средств - не каждый макрос задашь с клавы.
Арбайтен! Нихт перекурен!
Ручками поковыряться в текстовом файле профиля никто и никогда не запретит
Но я выше писал следующее:
Т.е. корректировку длительности я предлагал сделать именно по этой причине, что точно заданную длительность с клавы не выдержать.Что касается реализации, то, опять таки ИМХО, ручное редактирование строки не самый оптимальный вариант. Лучше сделать по принципу Сайтековского маппера - ручками жмешь нужные кнопы, они пишутся (с подсчетом и вводом длительности пауз между нажатиями) и есть возможность ручной корректировки длительности пауз (только пауз, поскольку легче контролировать ввод - только числовые значения).
Э-э-э... Например?
Почему собственно я сторонник варианта ввода макросов через интерфейс?
Да по одной простой причине - защита от дурака.
Ну и юзабилити ессно.
Чукча не писатель, чукча - читатель.
Во-первых:Сообщение от Oleg_BS
Во-вторых, если в макросы ввести логику-циклы, то ее проще руками прописывать, чем городить интерфейс (который в итоге будет сложнее самого маппера).Сообщение от Oleg_BS
Надо просто начать с простого макроса в виде последовательности нажатий, а там виднее будет.
Арбайтен! Нихт перекурен!
Сереж, я задам только один вопрос - Почему ты вместо NewView начал использовать SVMapper?
...и отжатий, с паузами между ними, и... на этом остановиться.Надо просто начать с простого макроса в виде последовательности нажатий
С макросами
Слишком сложно - это недостаток. Циклы и логика внутри макросов - это слишком сложно для среднестатистического пользователя. Соответственно не слишком востребовано. А по трудозатратам на реализацию далеко не самое легкое дело. Считай мини-интерпретатор языка программирования нужно написать
ИМХО.
Чукча не писатель, чукча - читатель.