User Tag List

Страница 23 из 101 ПерваяПервая ... 192021222324252627 ... ПоследняяПоследняя
Показано с 221 по 230 из 1003

Тема: Эмулятор терминала типа VT52

  1. #221

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,400
    Спасибо Благодарностей отдано 
    1,703
    Спасибо Благодарностей получено 
    2,221
    Поблагодарили
    874 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Функция возвращает матрицу виртуальных клавиш текщего потока, которая по умолчанию совпадает с матрицей виртуальных кавиш Windows
    Понятно, значит не отслеживает. Директинпут настраивается, чтобы реагировать на клавиши только при активном окне. Ну это поправимо.

  2. #222

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,806
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Точно в 15? Массив-то байтовый.
    Пардон, это я спутал с GetKeyState.

    Что в байтовой матрице происходит - надо смотреть.

  3. #223

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,400
    Спасибо Благодарностей отдано 
    1,703
    Спасибо Благодарностей получено 
    2,221
    Поблагодарили
    874 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Список виртуальных клавиш Windows выглядит так Virtual-Key Codes, есть ли там флаг, позволяющий отличить PadEnter - не знаю. Можно написать тест, который будет после каждого нажатия клавиши сравнивать матрицу с предыдущей и показывать отличия. Если у PadEnter нет своего флага - можно научить глобальный хук писать флаг состояния PadEnter в отдельную переменную или в ту же матрицу виртуальных клавиш ( там есть свободные ячейки )
    В этом списке что-то не нашел. Да и на форуме уже проскакивала тема, что нельзя отличить эти два энтера.

    ---------- Post added at 20:42 ---------- Previous post was at 20:41 ----------

    А как узнать в глобальном хуке состояние PadEnter? Или у него еще свои коды виртуальных клавиш?

  4. #224

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,806
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    А как узнать в глобальном хуке состояние PadEnter?
    Если эта клавиша при нажатии генерит автоповтор - то когда бы ни был подключен глобальный хук - он состояние этой клавиши тут же "подцепит".

    Проверить просто - тестовая программка с хуком есть. Хук вызывается при каждом нажатии, автоповторе и отжатии каждой клавиши, получая её скан-код с битом нажата/отжата.

    Формат аргументов глобального хука описан здесь: GlobalKeyboardHook.
    Последний раз редактировалось Patron; 31.12.2012 в 20:54.

  5. #225

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,400
    Спасибо Благодарностей отдано 
    1,703
    Спасибо Благодарностей получено 
    2,221
    Поблагодарили
    874 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Если эта клавиша при нажатии генерит автоповтор - то когда бы ни был подключен глобальный хук - он состояние этой клавиши тут же "подцепит".
    Я имею ввиду, как хук позволяет отличить основной Enter от нупадовского? У него есть разные коды для этих клавиш?

  6. #226

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,806
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Я имею ввиду, как хук позволяет отличить основной Enter от нупадовского? У него есть разные коды для этих клавиш?
    В приложении продвинутая версия хук-теста.

    Вот, что она пишет в лог при нажатии и отжатии сначала обычного, а потом дополнительного Enter:

    Код:
    wp[0x100] ; vkCode[0xD] ; scanCode[0x1C] ; flags[0x0]
    wp[0x101] ; vkCode[0xD] ; scanCode[0x1C] ; flags[0x80]
    wp[0x100] ; vkCode[0xD] ; scanCode[0x1C] ; flags[0x1]
    wp[0x101] ; vkCode[0xD] ; scanCode[0x1C] ; flags[0x81]
    Отличие есть - это флаг доп. клавиатуры в наборе флагов.

    ...
    Вложения Вложения

  7. #226
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #227

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,400
    Спасибо Благодарностей отдано 
    1,703
    Спасибо Благодарностей получено 
    2,221
    Поблагодарили
    874 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Отличие есть - это флаг доп. клавиатуры в наборе флагов.
    Только что сделал тест для сравнения виртуальных кодов клавиш через GetKeyboardState(). В ней, к сожалению, нажатия разных энтеров ТОЧНО не различаются.

    Опять, получается, костыли всякие.

    ---------- Post added at 21:33 ---------- Previous post was at 21:30 ----------

    Цитата Сообщение от Patron Посмотреть сообщение
    Вот, что она пишет в лог при нажатии и отжатии сначала обычного, а потом дополнительного Enter:

    Код:
    wp[0x100] ; vkCode[0xD] ; scanCode[0x1C] ; flags[0x0]
    wp[0x101] ; vkCode[0xD] ; scanCode[0x1C] ; flags[0x80]
    wp[0x100] ; vkCode[0xD] ; scanCode[0x1C] ; flags[0x1]
    wp[0x101] ; vkCode[0xD] ; scanCode[0x1C] ; flags[0x81]
    Отличие есть - это флаг доп. клавиатуры в наборе флагов.

    ...
    Все правильно, и в доке так сказано:

    0 Specifies whether the key is an extended key, such as a function key or a key on the numeric keypad. The value is 1 if the key is an extended key; otherwise, it is 0.

  9. #228

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,806
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Опять, получается, костыли всякие.
    DirectInput - те же самые костыли, только написанные в Микрософте.

  10. #229

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,400
    Спасибо Благодарностей отдано 
    1,703
    Спасибо Благодарностей получено 
    2,221
    Поблагодарили
    874 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    DirectInput - те же самые костыли, только написанные в Микрософте.
    Ну в ней хоть все единообразно, в одном массиве, где все клавиши различаются.

    Ну, допустим, сделать перехват клавиши дополнительного энтера в хуке. Куда потом его сувать? Придумывать новый сканкод? Это будет самодеятельность, т.к. эти же сканкоды получают другие приложения.

    Так же всегда есть задержка между включеним и отключением глобального хука по активизации окна.

    Можно, конечно, засинхронизироваться, но это все усложненно.

  11. #230

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,806
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Куда потом его сувать?
    Можно вести полностью свою матрицу всех клавиш - в удобном для себя формате.

    Так же всегда есть задержка между включеним и отключением глобального хука по активизации окна.
    Хук можно включать один раз - при запуске программы. При получении фокуса устанавливать флажок для хука, а при потере - убирать. А уже хук, глядя на этот флажок - будет пропускать или не пропускать нажатие NumLock в Windows.

    Чтобы не пустить нажатие в Windows - хук должен сделать return 1;,
    а чтобы пропустить - return CallNextHookEx( ghKeyboardHook, nCode, wp, lp );


    Кстати - у меня в хук-тесте ошибка, там в CallNextHookEx передаются не оригинальные параметры вызова ( wp и lp ), а переработанные ( wParam и lParam ) - а надо передавать точно те, которые получены хуком.

Страница 23 из 101 ПерваяПервая ... 192021222324252627 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. [Аукционъ] Клавиатура от терминала ЕС-7927
    от BYTEMAN в разделе Барахолка (архив)
    Ответов: 18
    Последнее: 15.05.2012, 14:50
  2. Срочно ищу монитор от терминала 15ИЭ-00-013 (от ДВК-2)
    от dk_spb в разделе Барахолка (архив)
    Ответов: 1
    Последнее: 10.02.2012, 10:19
  3. Куплю клавиатуру КМ-035 для терминала СМ 7238
    от Kronshou в разделе Барахолка (архив)
    Ответов: 5
    Последнее: 13.09.2010, 23:33
  4. C64 или C128 в качестве терминала под Linux
    от Vinnny в разделе Commodore 16/64/128
    Ответов: 6
    Последнее: 14.12.2007, 16:39
  5. Подгрузка pc-файла типа "codes" в эмулятор
    от maximk в разделе Эмуляторы
    Ответов: 15
    Последнее: 13.11.2006, 15:46

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •