Arduino и светодиод Caps Lock
- Войдите на сайт для отправки комментариев
Ср, 19/08/2020 - 23:07
Всем привет!
Уважаемые друзья, может кто либо из вас сталкивался с такой задачей.
Необходимо "превратить" ардуинку в эмулятор клавиатуры для подключения к ПК. Девайс должен отсылать в компьютер некую информацию. С этим особо проблем нет, библиотеки есть рабочие.
Но кроме этого при эмулировании клавиши Caps Lock Ардуино должна "поймать" ответ от ПК - активацию светодиода Caps Lock. Мы все знаем, что при включении функций Caps Lock, Num Lock и Scroll Lock на клавиатуре загораются светодиоды.
Меня очень интересует как поймать Ардуиной этот сигнал от ПК.
Заранее всем благодарен.
А кто вам сказал, что ПК посылает в клаву какие-то сигналы для зажигания светодиодов?
Во времена доса баловались "цветомузыкой" на светодиодах клавиатуры. Через BIOS можно было поджечь/потушить индикатор. Сейчас не знаю как, но винда тоже вроде предлагает активировать Num Lock при загрузке.
Ну это мои предположения которые основаны на следующем:
- во многих БИОСах можно отключить зажигание светодиодов
- в Виндовс используя утилиты так же можно либо отключить либо переназначить светодиоды.
- в Линукс это вообще делается обычной правкой конфигов
- пробовали ли вы когда нибудь нажимать любую из этих трёх клавиш в тот момент когда компьютер только-только включается? Реакции на нажатие до определённого момента не будет (светодиоды не загоряться).
- я своими глазами видел некие эмуляторы к которым подключалась стандартная ЮСБ клавиатура и лампочки на которой этот эмулятор зажигал разными способами.
Из всего этого можно сделать предположение что ПК отправляет подтверждение активации этих функций (кнопок).
Ну это мои предположения которые основаны на следующем:
Посмотри здесь - https://www.avrfreaks.net/forum/how-usb-keyboard-led-toggle
Хост не только светодиоды зажигает. Там ещё куча команд имеется: задание скорости автоповтора, выбор раскладки и пр.
насколько я с децтва помню, на старых АТ клавиатурах, еще с DIN-5 разъёмами, унутре стоял 8051. С тех пор, я думаю, мало что изменилось.
В LUFA в проекте Keyboard есть нужный callback:
насколько я с децтва помню, на старых АТ клавиатурах, еще с DIN-5 разъёмами, унутре стоял 8051. С тех пор, я думаю, мало что изменилось.
На АТ, PS/2 8042.
Господа.
Благодарю всех отписавшихся.
__Alexander спасибо за информацию. Но для Ардуино это немного сложновато.
В общем, я нашёл вариант. Есть вот такая библиотека: https://github.com/NicoHood/HID
Здесь можно получать состояние светодиодов.
__Alexander спасибо за информацию. Но для Ардуино это немного сложновато.
Это очень сложно. У меня вот заняло 4 минуты чтобы прошить pro micro и получить состояние caps lock.
насколько я с децтва помню, на старых АТ клавиатурах, еще с DIN-5 разъёмами, унутре стоял 8051. С тех пор, я думаю, мало что изменилось.
ИзмИнИлАсЬ аБсалЮтНа ФСио, УсбЭ КлАвиаТурЫ ДажЕ нИкАкиХ сКан кАдоФ нИ пИРиДаЮт, таК чтА ТваЙО ДетСтва сиЛьНа ЗаТянУласЬ.
Я такой затеей заморачивался, есть реализации на V-USB, кроме LUFA. Выявилась проблема. Почему-то иногда комп отправляет состояние светодиодов только на ту клавиатуру которая инициировала загорание светодиода, для начала воткните две клавиатуры USB (так же варианты PS2 клава +USB клава, PS2 клава через USB адаптер + USB клава) и посмотрите будет ли загораться светодиод в нужной вам программе на второй (или первой) клавиатуре, при нажатии на другой. То есть ваша хренька может быть бесполезна, конкретно для вашей задумки, например если нажать CL на другой клаве ваше устройство ничего не узнает и все пойдет не по плану:) А 100%ый вариант - воткнуть ps2 клаву, врезаться в ps2 кабель и ловить и передавать, такие эмуляторы тоже есть. Но если в системе будет только одна ваша USB "клавиатура", проблем никаких не возникнет.