![]() |
|
Модераторы: volvo877, Snowy, MetalFan |
![]()
|
|
| ausar |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 3.8.2007 Репутация: нет Всего: нет |
Подскажите пожалуйста. Этот код считывает с порта 60 клавиатуры сканкод нажатой клавиши
если нажать клавишу Esc сканкод которой - 1 то значение переменной а меняется циклически true/false Можно естественно и на любую другую клавишу назначить. А вот как назначить комбинацию клавиш например ctrl+s или shift+s? Читал что при нажатии shift+клавиша формируется 2х байтный код а при нажатии просто на клавишу однобайтный. Как сделать то?
Это сообщение отредактировал(а) ausar - 16.8.2008, 16:01 |
|||
|
||||
| volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 2 Всего: 116 |
Скан-код всегда однобайтный. Причем его не волнует, была кнопка нажата с Shift-ом или без. Считай, что это просто местоположение кнопки на клавиатуре. Чтобы поймать регистровые клавиши - см. байты состояния $0:$417 и $0:$418. Подробнее - здесь: http://forum.vingrad.ru/index.php?showtopi...st&p=629767 |
|||
|
||||
| Dobermann |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 992 Регистрация: 7.1.2008 Репутация: нет Всего: 0 |
А как вариант нельзя ли создать динамическую переменную для шифта и контрола?! И добавить код, проверяющий пуста ли эта переменная, а потом уже считывать клавишу?!?!
|
|||
|
||||
| ausar |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 3.8.2007 Репутация: нет Всего: нет |
key:=port[$60]; - отслеживает прерывание клавиатуры. Никак не могу додумать куда привинтить $0:$417. Пробовал соединить с фрагментами кода отсюда http://forum.vingrad.ru/index.php?showtopi...st&p=629767, хотелось получить комбинацию с Rshift
|
|||
|
||||
| volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 2 Всего: 116 |
И чего ты своим кодом хочешь добиться? Перевожу на человеческий:
если нажата кнопка Esc (scan = 1), то a = true иначе если нажата Esc (да не нажата она, ты выше проверял уже) и вообще неправильное условие, то A := False И что это было? Если ты хочешь поймать 'A' + RShift, то лови:
|
|||
|
||||
| ausar |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 3.8.2007 Репутация: нет Всего: нет |
Да! вот именно так оно и должно было работать. volvo877 Спасибо!
|
|||
|
||||
| ausar |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 127 Регистрация: 3.8.2007 Репутация: нет Всего: нет |
Но вдруг возник еще вопрос!
ct_byte and $01 - $01 -это shift $02 - это левый шифт. А можно ли отловить это скопом т.е просто отловить нажатие любой специальной клавиши типа шифта альта или контрола? Уж не чтото в таком ключе?
|
|||
|
||||
| volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 2 Всего: 116 |
Если проверять все перечисленные кнопки (и шифты и контролы и альты, и нум-локи всякие), то можно и так... А если только одна из Shift, Alt или Ctrl, тогда
, т.е. проверяешь любой из младших 4-х бит... |
|||
|
||||
![]()
|
| Правила форума "Delphi" | |
|
|
Запрещается! 1. Обсуждать и делится взломанными компонентами или программным обеспечением 2. Публиковать ссылки на варез 3. Оффтопить
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |