Что-то не могу найти, как клавиатура передаёт комбинации клавиш?
Интересует Win+A, Win+M, Win+Tab.
Последовательно 2 скан-кода, или есть иной алгоритм?
Интересует Win+A, Win+M, Win+Tab.
Последовательно 2 скан-кода, или есть иной алгоритм?
Главная iXBT.com Конференция Блоги Games Видео Market Prosound ПроБизнес РегистрацияВойти | |
Dikoy Беспилотный эксперт Автор теРСС‹ 8887/11216 ответов, #19 Р Р† рейтинге 21 год на iXBT, с сентября 2003 2 фото Р Р…Р В° iXBT.photo Чаще пишет Р Р† "Эл. устройства" (84%) Россия, Тула (ex. Богота) Web-страница | Что-то не могу найти, как клавиатура передаёт комбинации клавиш? Интересует Win+A, Win+M, Win+Tab. Последовательно 2 скан-кода, или есть иной алгоритм? |
Tor Bel Member 90/2081 ответов 18 лет на iXBT, с декабря 2006 Чаще пишет Р Р† "Спорт" (63%) Россия, Москва | Насколько помню, при нажатии Shift/Alt/Ctrl генерируется индивидуальный скан-код(разный для правых/левых), при отпускании этих клавиш выдаётся скан-код, отличающийся 7-м(старшим) битом. Для Win думаю аналогично. Скан-коды двухбайтовые. При нажатии комбинации какая-то клавиша нажимается раньше, её код и передаётся первым, затем идёт код второй нажатой клавиши. А в Вики об этом нет? Или ей не доверяете? |
Vesel'chak U Expert U 2010/2754 ответов 25 лет на iXBT, с января 2000 1 фото Р Р…Р В° iXBT.photo Чаще пишет Р Р† "Эл. устройства" (85%) Россия, гадючник на болотах Web-страница | Dikoy Всё же достаточно подробно описано. |
Dikoy Беспилотный эксперт Автор теРСС‹ 8891/11220 ответов, #19 Р Р† рейтинге 21 год на iXBT, с сентября 2003 2 фото Р Р…Р В° iXBT.photo Чаще пишет Р Р† "Эл. устройства" (84%) Россия, Тула (ex. Богота) Web-страница | Tor Bel При нажатии комбинации какая-то клавиша нажимается раньше, её код и передаётся первым, затем идёт код То есть, чтоб сделать Win+D, нужно послать: E0,1F / 23 / F0,23 / E0,F0,1F. Тогда не понятно, как унифицировать длину посылки? Можно ли добавлять нули перед скан кодами для выравнивания длины? 00,E0,1F / 00,00,23 / 00,F0,23 / E0,F0,1F. Вроде, скан кода 0 в таблице нет, что намекает. Vesel'chak U Всё же достаточно подробно описано. Описаны скан коды клавиш, но не комбинаций. Как происходит передача комбинаций клавиш нигде толком не описано. |
alexey_public Member 10273/10520 ответов, #4 Р Р† рейтинге 20 лет на iXBT, с марта 2004 121 фото Р Р…Р В° iXBT.photo Чаще пишет Р Р† "Эл. устройства" (98%) Беларусь, Минский район | Dikoy Как происходит передача комбинаций клавиш нигде толком не описано. Накидай тестовую программу и считай клавиши в том же Delphi. Это быстрее всего наверное |
Dikoy Беспилотный эксперт Автор теРСС‹ 8892/11221 ответов, #19 Р Р† рейтинге 21 год на iXBT, с сентября 2003 2 фото Р Р…Р В° iXBT.photo Чаще пишет Р Р† "Эл. устройства" (84%) Россия, Тула (ex. Богота) Web-страница | делфи выдаст клавиши, а не скан коды. Это надо брать COMовскую клаву и слушать портмоном... Добавление от 20.08.2014 20:11: Однако учитывая, что скан-код передаётся единоразово, при событии нажатия или отпускания клавиши, чисто логически можно заключить, что продолжение удержания клавиши никак на посылки не влияет и следующий код уходит как обычно. А уже на стророне ПК идёт определение.Добавление от 20.08.2014 20:43: Под "продолжение удержания клавиши никак на посылки не влияет" я имел ввиду вот что.Одновременно нажать клавиши невозможно, всегда одна вперёд. Да даже если одновременно, решает (наверняка) приоритет. То есть код первой нажатой клавиши уйдёт в ПК, ибо клава не знает, что кто-то будет жать вторую. А значит формирование спецкодов комбинаций бессмысленно. Да и в играх, где Ctrl & Alt активно участвуют, была бы чехарда в этом случае. Плюс, в описаниях скан-кодов я НИГДЕ не видел кодов комбинаций. Значит, коды просто уходят подряд. Но найти бы документальное подтверждение... |
alexey_public Member 10274/10521 ответов, #4 Р Р† рейтинге 20 лет на iXBT, с марта 2004 121 фото Р Р…Р В° iXBT.photo Чаще пишет Р Р† "Эл. устройства" (98%) Беларусь, Минский район | Dikoy делфи выдаст клавиши, а не скан коды. Это надо брать COMовскую клаву и слушать портмоном... Сканкоды тоже можно, просто обычно этим не пользуются. |
flashwolf Advanced Member 3604/14644 ответов 21 год на iXBT, с октября 2003 Чаще пишет Р Р† "Авто" (30%) | Dikoy Найди описание стандарта HID, там есть совсем все по данной теме. И еще 100500 конкретных обсуждений и разработок можно найти по ключу "arduino leonardo keyboard". |
alexey_public Member 10275/10522 ответов, #4 Р Р† рейтинге 20 лет на iXBT, с марта 2004 121 фото Р Р…Р В° iXBT.photo Чаще пишет Р Р† "Эл. устройства" (98%) Беларусь, Минский район | Кстати а не проще взятть документацию на любой контроллер клавиатуры? Там и будет описано как он себя ведет в таких случаях |
flashwolf Advanced Member 3606/14646 ответов 21 год на iXBT, с октября 2003 Чаще пишет Р Р† "Авто" (30%) | alexey_public Ардуинщики (леонардо это mega32u4 с нативным USB) давно все это отработали и описали. |
Tor Bel Member 91/2082 ответов 18 лет на iXBT, с декабря 2006 Чаще пишет Р Р† "Спорт" (63%) Россия, Москва | Dikoy Вроде, скан кода 0 в таблице нет, что намекает. Когда-то читал, что скан код 0 означает переполнение буфера клавиатуры. Посмотрите первую ссылку в гугле на keyboard scancode specification. У меня на работе слово microsoft в бане, сейчас посмотреть не могу. |
Vesel'chak U Expert U 2014/2758 ответов 25 лет на iXBT, с января 2000 1 фото Р Р…Р В° iXBT.photo Чаще пишет Р Р† "Эл. устройства" (85%) Россия, гадючник на болотах Web-страница | Dikoy Описаны скан коды клавиш, но не комбинаций. Как происходит передача комбинаций клавиш нигде толком не описано. Нет комбинаций. Только нажатие каждой и отпускание. Комбинирование происходит внутри компа. Но найти бы документальное подтверждение... Уже давно бы подключил осциллоскоп и посмотрел. Если есть LPT порт, то 3 проводка и программа логического анализатора тоже сразу всё прояснили бы. На странице из педивикии внизу есть ссылки, четвёртая из которых ведёт к более подробному описанию клавиатуры. И там, в частности, есть таблица скан кодов. В этой таблице в каждой ячейке приведено значение основного значения клавиши и с шифтом, что и означает, что независимо от нажатых клавиш-модификаторов, скан код один и тот же. Индикаторы ScrollLock, NumLock и CapsLock вообще могут управляться отдельно. Клавиатура XT - 83 клавиши, в оригинале без индикаторов. Впоследствии к ним добавили индикаторы состояния NumLock и CapsLock, управляемые внутренним контроллером по нажатию соответствующих клавиш. Однако состояние этих индикаторов могло не быть синхронизированным с флагами в ОЗУ, которыми пользуются драйверы. Клавиатура AT- 84 клавиши, которая отличалась от XT появлением дополнительной клавиши SYSREQ загадочного назначения и индикаторов Num Lock, Caps Lock, Scroll Lock. Двунаправленный интерфейс с системной платой позволяет программе корректно управлять индикаторами, а также программировать некоторые параметры клавиатуры и производить диагностику. |
Tor Bel Member 93/2084 ответов 18 лет на iXBT, с декабря 2006 Чаще пишет Р Р† "Спорт" (63%) Россия, Москва | Vesel'chak U Уже давно бы подключил осциллоскоп и посмотрел. С USBишной клавиатурой не так элементарно. Описание устарело. Старые(PC/XT) клавиатуры передавали однобайтовые сканкоды, а современные ещё и двубайтовые. |
alexey_public Member 10279/10526 ответов, #4 Р Р† рейтинге 20 лет на iXBT, с марта 2004 121 фото Р Р…Р В° iXBT.photo Чаще пишет Р Р† "Эл. устройства" (98%) Беларусь, Минский район | Tor Bel У меня на работе слово microsoft в бане а современные ещё и двубайтовые Вообще читал описание клавиатур на ixbt, что удивило - игровые обещают слать одновременно чуть ли не два десятка нажатых клавиш, правда не уточняют как. |
Tor Bel Member 94/2085 ответов 18 лет на iXBT, с декабря 2006 Чаще пишет Р Р† "Спорт" (63%) Россия, Москва | alexey_public До чего доводит людей linux Не, из под линя как раз можно было бы, но фильтр один на всех. alexey_public игровые обещают слать одновременно чуть ли не два десятка нажатых клавиш, правда не уточняют как. Можно предположить, что серией соответствующих сканкодов. Я бы сделал так. Ещё можно и с помощью драйвера, но тогда надо его самому производителю писать под каждую ось. |
Vesel'chak U Expert U 2017/2761 ответов 25 лет на iXBT, с января 2000 1 фото Р Р…Р В° iXBT.photo Чаще пишет Р Р† "Эл. устройства" (85%) Россия, гадючник на болотах Web-страница | Tor Bel Описание устарело. Старые(PC/XT) клавиатуры передавали однобайтовые сканкоды, а современные ещё и двубайтовые. А внимательно прочитать описание? Ещё можно и с помощью драйвера Нельзя. Драйвер берёт готовые скан коды из буфера и обрабатывает их. alexey_public Вообще читал описание клавиатур на ixbt, что удивило - игровые обещают слать одновременно чуть ли не два десятка нажатых клавиш, правда не уточняют как. Я не понимаю людей, которые не читают описание, но начинают обсуждать функционирование прибора. (По принципу - "зная и дурак сможет, а вот попробуй не зная..."?) Скан кода передаются по нажатию и отпусканию. В игровых клавиатурах имеется в виду не совершенно одновременное нажатие клавиш (это почти невозможно), а передачу информации о одновременно нажатых клавишах, то есть нажать одну, не отпуская, нажать другую, и т.д. А вот это уже зависит от схемотехники контроллера и матрицы сканирования (в принципе, достаточно поставить по диоду на каждую клавишу). Поскольку контроллер опрашивает клавиши последовательно, то даже физическое одновременное нажатие клавиш всё равно не даст одновременных скан кодов. |
Tor Bel Member 97/2088 ответов 18 лет на iXBT, с декабря 2006 Чаще пишет Р Р† "Спорт" (63%) Россия, Москва | Вот неплохо про клавиатуру написано и ссылки на таблицы скан кодов есть. Во втором множестве(наиболее часто применямом) клавиша PrtScr и вовсе сразу 6 байт посылает. |
undefined_opcode Member 443/891 ответов 13 лет на iXBT, с сентября 2011 Чаще пишет Р Р† "Эл. устройства" (49%) | Dikoy делфи выдаст клавиши, а не скан коды. Это надо брать COMовскую клаву и слушать портмоном... тем временем в линухе есть просто модуль ядра который валит в лог ядра сканкоды нажатых клавиш... он одно время даже оказался багом а не фичой, потому что кто-то из майнтайнеров пары дистров вгрузил его по дефолту и у некоторых людей ядро в результате жутко гадило в логи при печати на клавиатуре |
Зёбра unregistered | Dikoy Значит, коды просто уходят подряд. Вряд ли. Какое-то время все клавиши комбинации нажаты. Если бы подряд, то можно было бы и нажимать подряд(ну чтобы не пересекались нажатия во времени), а не вместе. Но ведь так не получится. Попробуй раскладку клавиатуры так переключить. |
Dikoy Беспилотный эксперт Автор теРСС‹ 8905/11234 ответов, #19 Р Р† рейтинге 21 год на iXBT, с сентября 2003 2 фото Р Р…Р В° iXBT.photo Чаще пишет Р Р† "Эл. устройства" (84%) Россия, Тула (ex. Богота) Web-страница | Зёбра Но ведь так не получится. Попробуй раскладку клавиатуры так переключить. Ты шо, родной? |
Зёбра unregistered | Dikoy Я только так и переключаю. В смысле? Я предлагаю одним пальцем это сделать, ничего не зажимая. Ну вроде понятно. Если код отпускания пропущен, значит нажата комбинация. Надо просто порт 60h читать, там будет видно сразу. Исправлено: Зёбра, 26.08.2014 09:35 |
Vesel'chak U Expert U 2031/2775 ответов 25 лет на iXBT, с января 2000 1 фото Р Р…Р В° iXBT.photo Чаще пишет Р Р† "Эл. устройства" (85%) Россия, гадючник на болотах Web-страница | Зёбра Я предлагаю одним пальцем это сделать, ничего не зажимая. Зачем? А несколькими пальцами это сделать нельзя? Если бы подряд, то можно было бы и нажимать подряд(ну чтобы не пересекались нажатия во времени), а не вместе. Но ведь так не получится. Попробуй раскладку клавиатуры так переключить. Переключается. Что я делаю не так? |
Зёбра unregistered | Vesel'chak U Что я делаю не так? Видимо не отпускаешь одну из клавиш. У меня не переключается. |
Vesel'chak U Expert U 2033/2777 ответов 25 лет на iXBT, с января 2000 1 фото Р Р…Р В° iXBT.photo Чаще пишет Р Р† "Эл. устройства" (85%) Россия, гадючник на болотах Web-страница | Зёбра Видимо не отпускаешь одну из клавиш. Конечно не отпускаю, иначе не получится комбинация. Хотя и это можно "исправить" - достаточно зайти в настройки специальных возможностей и настроить залипание клавишь. Правда это к клавиатуре уже не имеет отношения. P.S. Кстати, попробовал одним пальцем - переключается. Надо сразу две клавиши одним пальцем нажимать. |
Зёбра unregistered | Vesel'chak U Надо сразу две клавиши одним пальцем нажимать. Alt +Shift ? Добавление от 26.08.2014 16:03: Vesel'chak UА я программкой проверил. Правда несколько клавиш ею не охвачены. Среди них и WIN. Но зато всё наглядно. Alt, Ctrl,Shift - работают. |
Dikoy Беспилотный эксперт Автор теРСС‹ 8912/11241 ответов, #19 Р Р† рейтинге 21 год на iXBT, с сентября 2003 2 фото Р Р…Р В° iXBT.photo Чаще пишет Р Р† "Эл. устройства" (84%) Россия, Тула (ex. Богота) Web-страница | Как выяснилось, у HID клав всё по другому. Табличку нашёл USB HID to PS/2 Scan Code Translation Table (долбаный гугл не даёт ссылку на долбаный майкрософт). Но всё стало только запутаннее. Отпускания у HID нет, только нажатия. Но как тогда передать Shift, Win?.. |
Зёбра unregistered | у меня PS/2 Добавление от 26.08.2014 19:02: DikoyА ты хочешь сделать самодельную HID-клаву? Скажи нам, зачем? Нам интересно. |
Dikoy Беспилотный эксперт Автор теРСС‹ 8913/11242 ответов, #19 Р Р† рейтинге 21 год на iXBT, с сентября 2003 2 фото Р Р…Р В° iXBT.photo Чаще пишет Р Р† "Эл. устройства" (84%) Россия, Тула (ex. Богота) Web-страница | Зёбра А ты хочешь сделать самодельную HID-клаву? Нет, блин, LPT Скажи нам, зачем? Надо. Но это не клава. Оно просто работает как клава. 2ALL Нашёл стандартную посылку хида: То есть модификатор (шифт, альт и т.п.), резервный байт и 6 байт под коды клавиш. Как слать 2-3 модификатора по прежнему тайна... |
Зёбра unregistered |
Dikoy Беспилотный эксперт Автор теРСС‹ 8914/11243 ответов, #19 Р Р† рейтинге 21 год на iXBT, с сентября 2003 2 фото Р Р…Р В° iXBT.photo Чаще пишет Р Р† "Эл. устройства" (84%) Россия, Тула (ex. Богота) Web-страница | Опоздал ты, батько. Разобрался уже. Добавление от 26.08.2014 20:36: Осталось понять, почему вместо рассово-английских символов я виду в блокноте |
alexey_public Member 10331/10578 ответов, #4 Р Р† рейтинге 20 лет на iXBT, с марта 2004 121 фото Р Р…Р В° iXBT.photo Чаще пишет Р Р† "Эл. устройства" (98%) Беларусь, Минский район | Dikoy я виду в блокноте А Punto Switcher не включен? |
Dikoy Беспилотный эксперт Автор теРСС‹ 8915/11244 ответов, #19 Р Р† рейтинге 21 год на iXBT, с сентября 2003 2 фото Р Р…Р В° iXBT.photo Чаще пишет Р Р† "Эл. устройства" (84%) Россия, Тула (ex. Богота) Web-страница | alexey_public А Punto Switcher не включен? Да проще всё Переключил на английский и всё поехало. Осталось понять, как принудительно ставить английский... |
Cormel Member 582/637 ответов 16 лет на iXBT, с сентября 2008 17 фото Р Р…Р В° iXBT.photo Чаще пишет Р Р† "Эл. устройства" (77%) Россия, msk | Punto switcher установить. Комбинаций клавиш для включения нужного языка штатно в драйвере клавиатуры вроде нет, только переключатель. Хотя нет, вроде в дополнительных параметрах клавиатуры можно было принудительно поставить включение нужной раскладки ctrl shift 0...9 Но 3 клавиши - жутко неудобно. Исправлено: Cormel, 26.08.2014 21:53 |