2009-04-29 4 views
2

У меня есть слушатель событий на клавиатуре, и я слушаю number pad key codes (от 1 до 9), когда активирована блокировка номера; это прекрасно работает. Однако в моем приложении я также хочу разрешить использование ключа-модификатора (CTRL) вместе с клавишами цифровой клавиатуры. Странно то, что при удерживании CTRL нажатие 1 или 3 не генерирует никаких событий клавиатуры, тогда как 2 и 4 - 9 генерируют ожидаемые события. Я видел другие ссылки на этот вопрос после некоторого Googling, поэтому я не верю, что это обязательно зависит от Flash, но мне еще нужно найти ответы.Использование Numpad с ключами модификатора проявляет любопытное поведение

Я попытался использовать SHIFT в качестве модификатора, но это просто приводит к генерации кодов клавиш с цифровой клавиатуры, как если бы блокировка номера была отключена (например, SHIFT + Numpad1 возвращает код окончания, независимо от состояния блокировки) по-видимому, это преднамеренное поведение Windows. ALT не является опцией с numpad из-за altcodes.

Любые идеи о том, как получить CTRL + Numpad1 и CTRL + Numpad3 для генерации событий клавиатуры? Или какое-либо объяснение, почему они этого не делают?

Edit: Я попытался с помощью этих комбинаций клавиш в Firefox, как enriquein предлагает ниже, и все комбинации клавиш работают A-OK, что приводит меня к мысли, что это, вероятно, флэш-специфическая проблема, или, по крайней мере, не проблема с оборудованием.

+0

Воскрешение из мертвых здесь, на случай, если кто-то еще споткнется здесь. У меня были подобные проблемы для плагинов, работающих в браузере (в частности, Flash и Silverlight) и работающих в Internet Explorer. По сути, любые ярлыки, которые IE превзошли веб-страницу и плагин; IE проглатывает событие клавиатуры и не отправляет его плагину, запущенному на странице. Вполне возможно, что ваша конкретная проблема здесь может быть вызвана тем, что IE имел ярлыки для CTRL + от 1 до 3 (но не CTRL + 4-9). У меня не было той же проблемы в браузерах, отличных от IE. –

ответ

0

Я столкнулся с проблемами в прошлом с клавишами numpad на определенных клавиатурах. Различные комбинации клавиш не могут регистрироваться на определенных клавиатурах, и возможно, что клавиатура, которую вы используете, может просто не генерировать какое-либо событие в этом случае. Это не гарантируется, но я бы рекомендовал попробовать другую клавиатуру (другой поставщик и т. Д.) И посмотреть, работает ли это. Это также может быть проблемой с локализованными клавиатурами, если вы используете неанглийскую клавиатуру.

0

Я почти уверен, что это не связано с Flash, потому что у меня были подобные проблемы с локализованной клавиатурой, и я не мог заставить ее генерировать события вообще для определенных клавиш или комбинаций клавиш.

Попробуйте перечислить все ключевые события и выполнить поиск через то, к чему они привязаны, или google evtest.c, скомпилировать его и запустить и посмотреть, что он должен сказать.

+0

Это в Windows, evtest.c выглядит как Unix-only. –

+0

Yup, код, специфичный для Unix, вы правы, извините, об этом. Возможно, если вы загрузите live linux distro, чтобы запустить эти несколько тестов. – Vuk

0

Действительно, это похоже на его клавиатуру. Я пробовал комбинации клавиш, когда я читал этот вопрос в Firefox, и они запускали одно и то же событие, как нажатие Ctrl + Number (которое переключается на вкладку #Number).

Это была стандартная английская клавиатура US/101-key (без дополнительных медиа-кнопок или чего-то еще).

+0

Я не знал, что у Firefox было такое поведение - я просто попробовал, и CTRL + Numpad1 и Numpad3 работают нормально. Возможно, это проблема со вспышкой ... –

0

Некоторые клавиатуры не регистрируют определенные комбинации клавиш. Я думаю, что все дело в том, как они объединяются. Например, некоторые могут зарегистрировать комбинацию клавиш Ctrl + Ctrl левой руки, но не Ctrl + та же клавиша!

Работа должна заключаться в обнаружении клавиш и клавишных событий для клавиши Ctrl.

Затем вы можете поднять пользовательское событие для клавиши Ctrl + numpad или работать с флагом volatile, чтобы отобразить состояние клавиши Ctrl.

Смежные вопросы