Доброго времени суток!
С переходом на новую Windows Vista перестали работать многие драйвера. Это и случилось с моей мультимедийной клавиатурой (Defender KM2080 'Luna'). От разработчиков ждать драйвер уже, как я понял, не имеет смысла. Решил написать сам. undefined
Собственно вопрос:
На клавиатуре есть клавиши для веб браузеров (назад, вперед, запустить браузер, остановить загрузку страницы, е-мыло, избранное, поиск, обновить). Как мне реализовать их функциональность (с системными HotKey я уже разобрался). Будут ли эти клавиши работать для разных браузеров?
И второй вопрос: в каком виде лучше писать это подобие драйвера. Как сервис или как обычное приложение со спрятанной формой или как еще ?
Заранее спасибо.
Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице. Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.
11-01-2007 09:39 | Сообщение от автора вопроса
Думаю вам нужно разобраться чем отличается VirtualKey от ScanCode
Понял свою глупую ошибку. Исправлюсь.
придётся стаить клавиатурный хук.
Начет этого хука. Из информации в нете я понял, что все это будет состоять из Dll`ки и Exe`шника. Но вот толко сложно там все написано, а толковых примеров почему-то не нашел. Не могли бы подсказать что к чему (желательно с примерчиком, конечно).
Думаю вам нужно разобраться чем отличается VirtualKey от ScanCode, тогда станет понятно, что с помощью RegisterHotKey отследить ваши клавиши не получится, придётся стаить клавиатурный хук.
Ну сканкод у нее 255,
Что-то я сильно сомневаюсь что у неё такой ScanCode, должен быть (проверить не на чем) $63.
но как отловить именно отжатие?
А как вы ловите нажатие?
Теперь, наверное, последний вопрос: как отловить нажатие и отжатие этого Wake.
Видимо поставить клавиатурный хук.
И как он определяется в системе ( ну Shift = VK_SHIFT, Ctrl = VK_Control, а он как ?
Если не ошибаюсь у этой кнопки нет соответствующего VK, так что только по сканкоду.
нужно эмулировать движение колёсика через SendInput
А можно поподробнее или примерчик какой ?
Уже все почти сделал, вот только этот гадский скроллер остался.
вращение вперед = нажатию клавиши WAKE (на старых клавиатурах такая была), вращение назад = отжатию клавиши WAKE. Как быть ?
Ну раз вы уже умеете определять сам факт вращения, осталось задать чему он должен соответствовать, если вращению MouseWheel, то нужно эмулировать движение колёсика через SendInput.
Надо заметить что в Vista работа как с хуками так и с SendInput сильно ограничена и как минимум нужно составить для вашего "драйвера" правильный манифест и не исключаю, что лучше оформить его именно как сервис.
Да, я действительно немного неправильно задал вопрос.
Мультимедиа клавиши работают, но кнопки (play, stop, next, previous) работают только в Windows Media Player, в Winamp`e не работают. Но для них я уже написал что-то вроде драйвера.
Навернулся на новую проблему:
На клаве есть дополнительный скроллер. Как заставить его работать ?
С помощью Passmark Keyboard Test я понял что он (скроллер) обрабатывается так: вращение вперед = нажатию клавиши WAKE (на старых клавиатурах такая была), вращение назад = отжатию клавиши WAKE. Как быть ?
От разработчиков ждать драйвер уже, как я понял, не имеет смысла.
Ну сайт (http://www.defender.ru/support/drivers/keyboard/) вроде живой и обновления всего лишь месячной давности имеются, вы им напишите письмо в тех поддержку.
Не совсем понятно в чём собственно состоит вопрос, если клавиатура имеет "мультимедийные" клавиши, то винда всё отлично видит и без левых "драйверов", так как у каждой спец клавиши есть свой стандартный код:
VK_BROWSER_BACK A6 Windows 2000/XP: Браузер - страница назад
VK_BROWSER_FORWARD A7 Windows 2000/XP: Браузер - страница вперёд
VK_BROWSER_REFRESH A8 Windows 2000/XP: Браузер - обновить
VK_BROWSER_STOP A9 Windows 2000/XP: Браузер - стоп
VK_BROWSER_SEARCH AA Windows 2000/XP: Браузер - поиск
VK_BROWSER_FAVORITES AB Windows 2000/XP: Браузер - избранное
VK_BROWSER_HOME AC Windows 2000/XP: Браузер - старт и домой
VK_VOLUME_MUTE AD Windows 2000/XP: Громкость отключить
VK_VOLUME_DOWN AE Windows 2000/XP: Громкость понизить
VK_VOLUME_UP AF Windows 2000/XP: Громкость повысить
VK_MEDIA_NEXT_TRACK B0 Windows 2000/XP: WMP следующий трэк
VK_MEDIA_PREV_TRACK B1 Windows 2000/XP: WMP предыдущий трэк
VK_MEDIA_STOP B2 Windows 2000/XP: WMP стоп
VK_MEDIA_PLAY_PAUSE B3 Windows 2000/XP: WMP воспроизведение\пауза
VK_LAUNCH_MAIL B4 Windows 2000/XP: Запуск почты
VK_LAUNCH_MEDIA_SELECT B5 Windows 2000/XP: Кнопка медиа выбора (воспроизвести выбранный файл)
VK_LAUNCH_APP1 B6 Windows 2000/XP: Старт приложения 1
VK_LAUNCH_APP2 B7 Windows 2000/XP: Старт приложения 2
Если ваша клава как-то по другому передаёт эти кнопки, то надо выяснять как именно и возможно без написания драйвера (а не простого хука) тут не обойтись.
Будут ли эти клавиши работать для разных браузеров?
Нормальные программы (в том числе и популярные браузеры) работают на основе WM_APPCOMMAND, которое в данном случае придётся посылать самому.
Но мне всё таки не очень ясно почему клавиатура не работает без "драйверов", Vist-ы у меня нет, так что не проверить... Может поможет установка IntelliType от MS?
Например для сперцклавиш ноутбуков работает отдельное приложение в трее
Эти клавиши обычно сидят на отдельной шине и собственно к клавиатуре не относятся, просто битик на каком нибудь порту меняется и всё.
Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter. Функция может не работать в некоторых версиях броузеров.