Форум программистов, компьютерный форум, киберфорум
Наши страницы
Системный софт
Войти
Регистрация
Восстановить пароль
 
Ranzer
0 / 0 / 0
Регистрация: 07.10.2019
Сообщений: 5
1

Динамические клавиши-модификаторы

07.10.2019, 23:23. Просмотров 286. Ответов 10

Доброго времени суток.
В попытках оптимизировать управление одной игрушки наткнулся на один системный, скажем так, косяк. Суть проблемы, думаю, проще донести на примере:
Сейчас зажав любую буквенную клавишу в любом стандартном окне ввода текста (и не только, вин7/6/10) она начинает вводится с интервалами, указанными в настройках клавиатуры. Однако если не отпуская клавишу зажать клавишу-модификатор процесс прерывается.
Так, например при зажатой клавише "q" и нажатии шифта вместо продолжения набора, но уже заглавной "Q" до момента отпускания клавиши, ввод "q" просто прерывается.
Некоторые игры/программы это ограничение игнорируют, и в них неважно в какой последовательности нажаты клавиши (например любые шутеры), а некоторые отказываются категорически, даже если это не вызывает никаких противоречий (например, команды срабатывают по отжатию). Попытался перекрыть это недоразумение какой-нибудь макрос-программой, но те, которые в принципе могут на это повлиять (из тех, что нашел, mkey - например) работают по принципу самой системы, то есть нажатие модификатора стопорит ввод.
На форуме майкрософт мне сказали, что через настройки системы это никак не меняется, а со сторонним ПО они мне не помогут. Собственно, тут народ, по идее, прошаренный и не ограничен такими правилами, может быть кто-нибудь сможет подсказать какую-нибудь программу (в идеале, с настройкой в конкретное окно) или скрипт которые позволят это ограничение обойти? Хотя бы только для шифта.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.10.2019, 23:23
Ответы с готовыми решениями:

Модификаторы
Народ, помогите до конца разобраться!!! Существуют модификаторы: public protected private...

Модификаторы
signed, unsigned, long, short. Для его эти модификаторы, я проитал нифига не понял. Объясните

модификаторы
Напишите программу, заменяющую в слове X все буквы "а" и "я" на сочетание "йа" помогите найти...

Модификаторы out и ref
Эта функция : private void correctFMas0(ref List<string> FData, out double TimeADC, out...

Модификаторы доступа
На дом задали построить таблицу с модификаторами доступа (из каких классов, пакетов видны...

10
мама Стифлера
aka AspireM3400
1033 / 744 / 103
Регистрация: 29.11.2015
Сообщений: 3,617
Записей в блоге: 11
08.10.2019, 00:10 2
Интересную задачу вы подкинули. Возможно это даже не выполнимо, а если выполнимо, то точно не для меня.
Можно хоть узнать, это вам для работы с текстом, или для игр?
0
Ranzer
0 / 0 / 0
Регистрация: 07.10.2019
Сообщений: 5
08.10.2019, 01:33  [ТС] 3
Вообще закрутилось это все в MMO. Ранее продолжительно играл в WoW, использовал только цифры с шифтом, горя не знал, но и не сказать, что бы потенциал реализовывался на 100%. Позже попробовал BDO, куда более динамичную игру, перенявшую многие моменты из других жанров, типа слешеров. Особенно мне понравилось как там были реализованы блинки/перекаты: во время движения достаточно нажать шифт и персонаж использует мобильную способность в указанную сторону. Позже, вновь оказавшись в ВоВ-е, решил разнообразить игровой процесс, позаимствовав управление из более современной игры, благо возможности есть. И все бы было хорошо, почти все удалось очень удобно настроить и игра заиграла новыми красками, однако касаемо клавиш передвижения случился запор. Если в процессе движения использовать способность (любой не зажатой клавишей) - все прекрасно работает. Но если эта способность установлена, допустим, на shift+w, то пока движение вперед не отпустишь и не нажмешь исключительно после зажатия шифта, работать она откажется. Но что хуже всего, после использования способности движение не продолжится, пока по новой не отпустишь клавишу. Мне не жалко лишних кликов, но из-за задержек плюс удобства сводится на нет. Обратившись с подобным вопросом на форуме, мне не смогли ничего подсказать, кроме нескольких программ, которые гипотетически могли бы с этим как-то помочь (не помогли), сказав, что это косяк системы, а не игры. Задумавшись, я понял, что ладно ВоВ, но подобное может еще где-то всплыть, и хорошо бы иметь под рукой какой-нибудь инструмент, что бы этот затуп нивелировать. С этим вопросом сюда и обратился.
Что касается текста, привел скорее как наглядный пример результата своего расследования. Жизнеспособных вариантов использования в тексте вряд ли смогу придумать много. Но что-то мне подсказывает, что раньше я проворачивал что-то подобное (нажатие шифта при печати буквы) и оно работало как надо. Может, когда еще на XP сидел...
0
sam063rus
Нарушитель
29 / 25 / 9
Регистрация: 18.08.2012
Сообщений: 268
08.10.2019, 01:46 4
если вам нужен чит или трейнер для игры - то, вам явно не сюда.
кроме того. многие игры - позволяют переназначать клавиши и действия по своему усмотрению.
Также есть игры. которые позволяют через игровую консоль - забиндить на кнопку целый скрипт (например, игры на движке Source)
Цитата Сообщение от Ranzer Посмотреть сообщение
сказав, что это косяк системы, а не игры.
если у игры нет нормального управление - то, это именно косяк игры.
0
08.10.2019, 01:46
мама Стифлера
aka AspireM3400
1033 / 744 / 103
Регистрация: 29.11.2015
Сообщений: 3,617
Записей в блоге: 11
08.10.2019, 01:52 5
Ranzer, хм... ну если в определенной игре не работает последовательное нажатие(кнопка+ Shift), тогда как вы хотите стороннюю программу прилепить к процессу игры? Ведь пока игра активна, она полностью перехватывает управление процессом над клавиатурой, кроме служебных комбинаций windows или steam. Поэтому если в какой-то игре не предусмотрено последовательное нажатие, то значит не судьба.
Но это мое предположение, не утверждение.
0
Ranzer
0 / 0 / 0
Регистрация: 07.10.2019
Сообщений: 5
08.10.2019, 02:19  [ТС] 6
sam063rus Вы, видимо, не совсем внимательно прочли мой пост. "Читы и трейнеры" и настройка управления, это разные вещи. ВоВ (world of warсraft, если что), тоже позволяет забивать целые скрипты на команды, но тут речь именно про то, что все это упирается в ограничение самой системы к восприятию обратной последовательности нажатия клавиш. И мне не удалось найти ни одной программы, которая говорила бы системе или игре, что клавиши-то нажаты, именно те, что нужно, просто в другой последовательности. И в этом заключается вопрос
мама Стифлера Ну вообще, как игра запускается поверх системы и перехватывает управление, так и другая программа может запустится поверх игры и перехватить управление у нее или хотя бы работать параллельно. Многие макрос-программы так работают, например та же MKey, BotMek или то же ПО от Razer. Ну или даже та же geforce experience, добавляющая сочетания клавиш для открытия собственного меню и записи видео. Как я уже сказал в самом начале, тут конфликтов-то нет, сочетание просто не срабатывает
0
мама Стифлера
aka AspireM3400
1033 / 744 / 103
Регистрация: 29.11.2015
Сообщений: 3,617
Записей в блоге: 11
08.10.2019, 02:26 7
Цитата Сообщение от Ranzer Посмотреть сообщение
тут конфликтов-то нет
Конфликты как раз есть, к примеру с тем же Geforce Experience. Допустим по умолчанию в GE, клавиши Shift+f9 включат запись видео. А в игре f9 отвечает за сохранение. Если я захочу включить запись, то нажав Shift+f9 запись должна включится, но в то же время и игра сохранится.
0
sam063rus
Нарушитель
29 / 25 / 9
Регистрация: 18.08.2012
Сообщений: 268
08.10.2019, 03:13 8
если в игре задумано воспринимать именно так последовательность клавиш, а не иначе то, что вы ещё хотите тут выдумать?
Цитата Сообщение от Ranzer Посмотреть сообщение
Ну вообще, как игра запускается поверх системы и перехватывает управление, так и другая программа может запустится поверх игры и перехватить управление у нее
игра не запускается поверх системы.
Цитата Сообщение от Ranzer Посмотреть сообщение
так и другая программа может запустится поверх игры и перехватить управление у нее или хотя бы работать параллельно.
это уже получается какой-то клавиатурный драйвер key filter. Это будет банится большинством антивирусов с настройками по умолчанию.

Добавлено через 7 минут
Цитата Сообщение от Ranzer Посмотреть сообщение
Некоторые игры/программы это ограничение игнорируют, и в них неважно в какой последовательности нажаты клавиши (например любые шутеры)
вы путаете одно с другим. Систему и игру использующую DirectInput и небуферизованный ввод.
Последовательность клавиш - важна в приложениях - где есть набор текста и не важна в шутерах - где важно само действие, а не последовательность. Исключение составляют слешеры - где есть всякие комбо-удары. Но и там - всё зависит от внутреннего устройства самой игры и её внутренней настройки обращения к DirectInput.
0
Ranzer
0 / 0 / 0
Регистрация: 07.10.2019
Сообщений: 5
08.10.2019, 03:15  [ТС] 9
мама Стифлера я имел в виду, что в моем случае их нет. Шифт - модификатор, сам по себе он ничего не активирует. Можно было бы сказать, что одновременно могли бы быть зажаты, например W и D, и тогда было бы неясно на что конкретно шифт должен реагировать. Но тут ситуация такая, что мне достаточно, что бы команда проходила по отжатию клавиш, например:
Нажал "W" - персонаж движется вперед; добавил шифт - программа ищет в списке макрос соответствующий сочетанию клавиш "W+Shift" и хранит ее в памяти; добавил что-то еще, программа ищет более близкое совпадение (если его нет или оно не содержит ранее зажатых кнопок, то предыдущая команда сохраняется), а игра продолжает реагировать на нажатия как обычно и тд. Затем отпускаешь модификатор шифт (или даже все зажатые клавиши, не суть важно, хотя отжатие только шифта смотрится куда более логично, так как сам он ничего не выполняет и его отжатие можно считать триггером) и выполняется последняя найденная, максимально подходящая всем зажатым в момент отжатия шифта команда. Тут даже не так важно, что бы "W+Shift" было равно "Shift+W", выходная команда может быть любой клавишей, лишь бы оно могло срабатывать и в такой последовательности.
А с тем, что одна кнопка именно при нажатии выполняет две функции можно уже на месте разобраться назначением самих клавиш, это не проблема
sam063rus Не знаю как вы воспринимаете поставленную мной задачу (выглядит как будто бы в штыки, хоть я не на чем не настаиваю, ничего не требую и даже не выпрашиваю, так что это как-то необоснованно), я же имею в виду, по сути, макрос наоборот. Макрос - выполняет несколько команд по нажатию одной клавиши, мне же хотелось бы, что бы нажатие нескольких клавиш одновременно выполняли одну команду (не меняющую код программы, и не дающую никакого преимущества, кроме удобства). Не вижу в этом совершенно ничего "читерского" или "вирусного", за что какое-либо защитное ПО на это должно было набрасываться
0
sam063rus
Нарушитель
29 / 25 / 9
Регистрация: 18.08.2012
Сообщений: 268
08.10.2019, 03:26 10
т.е. своими "хотелками" -
"а вот хочу я так и всё, а мне так удобно и значит так и должно быть"
говорите, что это косяки системы.
Или...
мне вот нравицца играть в игру так и чтоб управление было такое в игре - перепишите игру за меня. Ну..тут надо-то всего - программулину-то всего найти, приладить и будет мне щасье. ну чё вы ну?

просто многие люди - играют в игру с тем управлением, что есть и не выдумывают и не занимаются какой-то хренью. Если игра не нравится из-за управления - то, они играют в другую. Но, у вас, видимо - свой путь...

Добавлено через 6 минут
на нажатие/отжатие клавиш во многих играх - есть встроенные в саму игру триггеры в игровой консоли.
если в игре их нет - то, значит - НЕТ. Играете с тем, что есть.
Что либо делать программное к игре - глупый и бесперспективный путь, потому что - игра при каждой смене кадра будет по новой считывать все нажатые и отжатые клавиши - т.е. всю клавиатурную матрицу, потом по своему это фильтровать в движке и реагировать. как задуманно разработчиками.
0
Ranzer
0 / 0 / 0
Регистрация: 07.10.2019
Сообщений: 5
08.10.2019, 04:58  [ТС] 11
Мда, господин sam063rus...
Во-первых, если тебе неизвестно, что из себя представляет такая игра как ВоВ, я просвещу: кроме встроенной в саму игру системы макросов и бинда команд практически на любые клавиши, в нем присутствует открытая и абсолютно правомерная система аддонов, с помощью которых ты можешь хоть на барабанах в него играть, и превратить интерфейс во что угодно. Разработчики абсолютно никак не ограничивают такое понятие как "удобство", предоставляя его полностью на волю игроков, за исключением какого-то откровенного вскрывания кода для доступа к ресурсам, чем данная тема не является. Поэтому свое закостенелое "юзай что дают" при себе оставь или отправляй на какой-нибудь полито-форум.
Во-вторых, тебя конкретно никто ничего делать не просит. Я спросил "знает ли кто такие программы", а дальше лишь рассуждал на тему возможности их существования и принципа работы. Не знаешь - проходи мимо. Даже если не существует таких - окей, я тут никого не прошу для меня ее написать, тем более бесплатно. Из какого пальца высосано, что за меня ее еще и настраивать надо, мне вообще непонятно.
В-третьих, изначально речь шла про откровенный косяк/халтуру мелкомягких с шифтом в тексте, который к играм никак не относится, да и системе по сути на хрен не нужен со всякими лишь мешающими залипаниями клавиш. Я не с проста не хотел конкретизировать, так как не впервой уже после этого начинают вылезать всякие непонятно чем недовольные кадры, которых задевает, видимо, что на поставленный вопрос они удовлетворительного ответа не знают. Но с тем, что тебя это задевает - не ко мне и не на техно-форум
В-чтвертых, что за бред в последнем абзаце? Если программа внешняя и запущена в трее, как те, примеры которых я называл, ей абсолютно плевать на кадры игры. Срабатывание допустимо по средствам отправки обычных клавишных команд по принципу виртуального нажатия. Короче, не рой себе яму.
Придя на этот форум, я надеялся проконсультироваться со знающими и интеллектуальными людьми, поэтому старался быть максимально вежливым, но не надо даже на миг полагать, что моя вежливость, это позволение для тебя общаться со мной сверху вниз. Только собственный голос обесценил своей предвзятостью.
За сим можешь откланиваться, все равно дальше уже ничего путного по теме не скажешь
0
08.10.2019, 04:58
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.10.2019, 04:58

Модификаторы доступа
Помогите реализовать механизм задания (Public/Private/Protected) атрибутов класса в Python, не...

модификаторы доступа
к данным помеченным как private есть доступ у подкласса? Добавлено через 4 минуты разобрался,...

модификаторы и спецификаторы
Добрый вечер.. такой вопрос, как следует объявлять классы и неймспейсы чтобы их было видно в других...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.