|
3 / 3 / 0
Регистрация: 28.03.2011
Сообщений: 37
|
|
Хитрая работа с Num Lock29.05.2014, 17:58. Показов 13373. Ответов 24
Метки нет (Все метки)
Доброго дня, уважаемые коллеги.
Может быть мой вопрос покажется банальным, но это только на первый взгляд. Итак: Есть форма, управление которой происходит с помощью горячих клавиш на NumPad. В том числе, одной из горячих клавиш является Num Lock. Тут все работает, вопросов не возникает. Одна из горячих клавиш запускает определенный процесс. Необходимо сделать так, чтобы во время работы данного процесса на клавиатуре происходило мигание Num Lock. Внимание, вопрос: Можно ли зажечь светодиод NumLocka так, чтобы форма не восприняла включение режима NumLock как нажатие горячей клавиши (NumLock) ? Все решения, которые я находил в Сети, используют keybd_event. Такой способ вызывает "виртуальное" нажатие на горячую клавишу (NumLock). Можно ли зажечь светодиод каким-нибудь другим способом ? Горячие клавиши пробовал ловить через RegisterHotKey и через хук на клавиатуру - эффекта 0. Я понимаю, что работа на низком уровне с железом - это не есть правильно, но, подскажите, есть ли какой-нибудь способ выхода из ситуации ?
1
|
|
| 29.05.2014, 17:58 | |
|
Ответы с готовыми решениями:
24
Работа с клавиатурой (клавиши num lock, caps lock, scroll lock)
Acer aspire 5552G-N974G64Mikk Проблема с Caps Lock, Num Lock, Scroll Lock |
|
Модератор
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
|
|
| 29.05.2014, 19:18 | |
|
Первое, что приходит в голову: добавить в код флаг, при взведении которого сработка НумЛока буде игнорироваться.
0
|
|
|
Ушел с форума
|
||
| 29.05.2014, 19:35 | ||
|
IOCTL_SET_KEYBOARD_INDICATORS. Обсуждалось здесь (и не только это): Драйвер манипулирования лед лампочек на клавиатуре c++
0
|
||
|
Модератор
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
|
||||||
| 30.05.2014, 00:34 | ||||||
|
Убежденный, попытался реализовать управление лампочками по твоей инструкции.
Клаву находит, но лампочки не загораются. Может не учел чего-то:
0
|
||||||
|
Ушел с форума
|
|
| 30.05.2014, 09:26 | |
|
У IOCTL_KEYBOARD_QUERY_INDICATORS другие параметры:
IOCTL_KEYBOARD_QUERY_INDICATORS control code http://msdn.microsoft.com/en-u... 85%29.aspx Может, из-за этого и не работает.
0
|
|
|
Модератор
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
|
||||||
| 30.05.2014, 09:41 | ||||||
|
Я думал через IOCTL_KEYBOARD_QUERY_INDICATORS получить значение UnitId, но получается, что эта конструкция сама требует указания данного параметра, поэтому не совсем понятно где его взять.
Пробовал MemberIndex подставлять, но так тоже не работает. Добавлено через 2 минуты
0
|
||||||
|
Ушел с форума
|
|
| 30.05.2014, 09:51 | |
|
Попробуйте для начала передавать просто 0.
0
|
|
|
Модератор
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
|
|
| 30.05.2014, 10:18 | |
|
0
|
|
|
Ушел с форума
|
||||||
| 30.05.2014, 22:19 | ||||||
|
FlashKbdIndicators.zip
В архиве программа, которая моргает по очереди индикаторами клавиатуры - Caps Lock, Num Lock и Scroll Lock. Действует по все тому же принципу, который был описан в статье по ссылке выше: находим устройства, поддерживающие интерфейс "keyboard" (SetupDiGetClassDevs/SetupDiEnumDeviceInterfaces), получаем символьную ссылку (SetupDiGetDeviceInterfaceDetails), открываем устройство и шлем ему управляющий код IOCTL_KEYBOARD_SET_INDICATORS с заполненной структурой. UnitId я ставил в 0. Контрольные суммы, на всякий случай:
0
|
||||||
|
3 / 3 / 0
Регистрация: 28.03.2011
Сообщений: 37
|
|
| 30.05.2014, 22:37 [ТС] | |
|
Убежденный, проверил на ноутбуке - работает замечательно.
А не могли бы вы исходники выложить, раз уж пошла такая пьянка... ?
0
|
|
|
Ушел с форума
|
||||||
| 31.05.2014, 00:44 | ||||||
|
FlashKbdIndicators
Написано в Visual Studio 2008 SP1 Copyright (c) Убежденный ![]()
При желании можно модифицировать код, чтобы он работал сразу с несколькими клавиатурами или с какой-то одной конкретной, для этого нужно модифицировать код GetKeyboardSymLink, например, чтобы она возвращала вектор символьных ссылок на устройства...
3
|
||||||
|
Модератор
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
|
||
| 31.05.2014, 01:41 | ||
|
Но мне хотелось бы понять, что с моим кодом не так. Клава определяется как: \\?\acpi#pnp0303#4&32be0e18&0#{884b96c3-56ef-11d1-bc8c-00a0c91405dd} Может это что-то не то?
0
|
||
|
Ушел с форума
|
||
| 31.05.2014, 09:31 | ||
|
Попробуй убрать ветку с IOCTL_KEYBOARD_QUERY_INDICATORS. А в запросе IOCTL_KEYBOARD_SET_INDICATORS выходные параметры не нужны. Ну и еще хорошо бы проверить, что возвращают функции CreateFile и DeviceIoControl.
1
|
||
|
Модератор
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
|
|
| 31.05.2014, 09:59 | |
|
Все, разобрался!
Накосячил с описание KEYBOARD_INDICATOR_PARAMETERS: DWORD был вместо WORD. Убежденный, спасибо за помощь!
0
|
|
|
Модератор
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
|
|
| 31.05.2014, 22:44 | |
|
Tестовый проект и ЕХЕ-шник:
1
|
|
|
Модератор
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
|
|
| 31.05.2014, 22:48 | |
|
На буднях хочу с несколькими клавами протестить.
1
|
|
|
Модератор
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
|
|
| 31.05.2014, 23:47 | |
|
eu6pc, помести папку JEDIAPI2.3 в папку проекта.
2
|
|
|
Модератор
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
|
|||||||||||
| 02.06.2014, 17:05 | |||||||||||
|
eu6pc, мне удалось избавиться от JEDIAPI.
Получился небольшой доп. модуль: Кликните здесь для просмотра всего текста
Проверял работу на Д7 и ХЕ3. Архив прилагаю. Убежденный, возникла еще одна проблема: запрос
Может есть какие идеи, как это исправить?
1
|
|||||||||||
|
3 / 3 / 0
Регистрация: 28.03.2011
Сообщений: 37
|
||
| 02.06.2014, 17:39 [ТС] | ||
Присоединяюсь к вопросу об USB-клавиатурах и хочу еще спросить вот что: Моя задача предполагает использование выносного девайса - беспроводного нумпада (поэтому и горячие клавиши - все на нем). Вопрос - будет ли данный код работать для выносного нумпада ? Иными словами -будет ли его драйвер воспринимать команду IOCTL_KEYBOARD_SET_INDICATORS ?
1
|
||
|
Ушел с форума
|
|||
| 02.06.2014, 23:31 | |||
|
ставится в стек клавиатуры при ее подключении через USB, просто тупо не поддерживает этот код. И всегда возвращает 0. Протрассировать сейчас не на чем - виртуалки все сплошь на PS/2 работают, а на живой системе эксперименты ставить неохота... Добавлено через 2 минуты стандартными драйверами, то все должно работать.
2
|
|||
| 02.06.2014, 23:31 | |
|
Помогаю со студенческими работами здесь
20
Клавиатура мигает всеми тремя индикаторами Caps Lock, Scroll Lock и Num Lock и соответственно не работает! Горят лампочки caps lock и num lock, ноутбук не включается
Узнать включен ли Caps Lock и Num Lock HP Pavilion dr7 после падения включается куллер шумит 4раза пикает и моргают cap lock и num lock(после удара) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|