171

[Arduino] Программируемая клавиатура своими руками.

Доброго времени суток всем.
Немного предыстории.


Идея заиметь себе программируемую клавиатуру родилась у меня довольно таки давно. По работе и не только, я уже около 7 лет пользуюсь замечательными программами PunoSwitcher и Mkey. У них есть свои минусы, но все таки - все они здорово облегчают и автоматизируют многие рутинные задачи. И, в целом, основную массу моих потребностей в скриптах и программируемых клавишах можно реализовать софтверно через вышеописанные программы. Но здесь есть 3 существенных минуса:
Оговорюсь сразу, все это чистой воды субъективщина, и ИМХО

1) Программы “съедают” некоторые клавиши. Например переназначив всю Numpad клавиатуру, вы останетесь без удобного ввода цифровых значений, и каждый раз переключать режимы в том же Mkey(который имеет свойство зависать в самый нужный момент), не очень удобно.
2) При смене рабочей машины приходится каждый раз переназначать настройки и устанавливать софт. Да, можно сделать экспорт настроек и все такое прочее, но это не Plug&Play,в плане удобства.
3)Кроссплатформенность. Так вышло, что у меня основной машиной для “взять с собой в поездку налегке” является старенький нетбук AcerAspire One с Linux Arch на борту, ибо только он там работал адекватно. И оказавшись без своих скриптов и переназначенных клавиш, было очень некомфортно работать.
справедливости ради стоит упомянуть, что через какое-то время я накатил на него облеченную версию WIN 7 и все стало прекрасно, но пост это об этом).
И так как цены на программируемые клавиатуры кусались, и я подумал, “а что если сделать ее на Ардуино?”. И вот в результате родилось это "чудо".
За основу я взял проект из ролика небезызвестного @AlexGyver,  о комп.пранке.(ссылка)
Саня если ты это читаешь - огромное тебе спасибо. Ты не только вдохновил меня на это все, но облегчил разработку своими удобными библиотеками по работе с кнопками.

Комплектующие
Для создания проекта понадобится:
Arduino Pro Micro - 1 шт

PNP транзистор - 1 шт.

NPN транзисторы - 3 шт.

Резисторы:

200 Ом - 1 шт.

220 Ом - 6 шт

10 кОм - 1 шт.USB разъем (или PS/2 разъем) - 1 шт.

LED светодиоды - 3 шт.

Я использовал старые советские КТ315 / КТ 361, просто потому что они были под рукой.

Да, можно было бы выбросить транзисторы с LED светодиодов, но я решил немного заморочится).

Поначалу проект разрабатывался под старую PS/2 клавиатуру, поэтому на ранних фото вы можете наблюдать в схеме PS/2 разъем.

В ходе экспериментов стало ясно, что некоторые клавиатуры могут работать с Аодуиной, как Ps/2 устройства, после перезагрузки.Именно для этого в схеме есть PNP транзистор для перезагрузки клавиатуры, через полсекунды после подключения Ардуины.

Затем,специально под этот проект, на Али была куплена Numpad клавиатура за 300р, которая оказалась вонючим куском пластика, к тому же еще и с бракованной клавишей, которая вывалилась при распаковке.


И хотя к ее работоспособности у меня претензий нет, и удалось вернуть полцены, эту клаву к покупке не рекомендую. Сейчас, за 400-500р можно взять Numpad-механику. Но ее определение как PS/2 устройство, и совместимость с моим проектом я не гарантирую.

Демонстрация работы.


Одна из самых важных функций этой клавиатуры - возможность эмуляции нажатий нескольких клавиш - уже делает эту клаву, очень удобным инструментом в работе.Например.
Как то давно, на Пикабу был выложен пост  “Создание МОЩНОЙ программируемой клавиатуры”, путем использования программы HIDmacros.
МОЩНОЙ!

В частности там, в комментариях, @Festival.wTF,  хвастался комбинациями в фотошопе.

#comment_61663005

Чтож, как говорил Сергей Дружко.

Так же, вот пример работы одних из самых популярных комбинаций клавиш.

Всего, как вы могли понять из схемы подключения, в этом проекте имеется 4 режима в работы клавиатуры, с индикацией на LED светодиодах.

В моем случае, на 4 режимах работы, уже получается не 17 программируемых клавиш (доп.клавиши к сожалению не работают на PS/2 клавиатурах), а 68.

Вообщем, это все. Проект сделан чисто для себя, и я всего лишь хотел поделиться с сообществом своими наработками.

Разумеется, это еще не финальная версия. В дальнейших планах - уложить все это в аккуратную коробочку, для более презентабельного вида.
Уже заказаны маленькие, удобные SMD светодиоды

Ссылка на код и схему подключения

ГуглДиск


Скетч представляет из себя только "каркас", но я думаю те, кто решится повторить этот проект, разберутся как сделать комбинации под свои нужды.

З,Ы Я гуманитарий, и лепил все это методом тыка и активного гугления.Поэтому, господа скептические программисты, можете сколь угодно критиковать мой кривой код, и высказывать недовольство на тему целесообразности данной поделки).
Советы и конструктивную критику обязательно приму к сведению.

Спасибо за внимание)

Arduino & Pi

1.5K поста20.8K подписчиков

Правила сообщества

В нашем сообществе запрещается:

• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)

• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском

• Выкладывать код прямо в посте - используйте для этого сервисы ideone.com, gist.github.com или схожие ресурсы (pastebin запрещен)

• Рассуждать на темы политики

• Нарушать установленные правила Пикабу

0
Автор поста оценил этот комментарий

Поздравляю, вы изобрели клавиатуру с макросами. Предлагаю ознакомиться с функционалом бюджетной клавиатуры A4Tech G800V или её аналогами, которые имеют 16 программируемых клавиш без всяких выносных блоков, занимающих место

Иллюстрация к комментарию
раскрыть ветку (1)
11
Автор поста оценил этот комментарий
И так как цены на программируемые клавиатуры кусались, и я подумал, “а что если сделать ее на Ардуино?”.

На эту строчку поста мы, как бы, йух забьем, да?)
Я вкурсе, что есть такие клавы, мисье капитан. И да, я ознакомился с ценами в т.ч на Али, Ебей и др и они мне показались дороговатыми.
Разумеется, тот кто имеет лишние 2к рублей не будет всем вышеописанным заморачиваться.

Да и цель у меня была, попробовать решить задачку "а может ли ардуина в программируемую клавиатуру?". Да, может, и клава получается очень даже юзабельная.


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

показать ответы
0
Автор поста оценил этот комментарий

проще уже свою клаву собрать https://www.arduino.cc/reference/en/language/functions/usb/k...

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Если бы тебе реально было интересно, и ты заглянул бы в мой код, ты бы увидел что я эти библиотеки и использую))
Просто библиотека PS2Keyboard, служит посредником, между физической клавиатурой(USB или PS2) и собственно Ардуиной.
Это, по сути, и есть "своя клава".
Вы хотябы читали бы чтоли, прежде чем умничать...)

показать ответы
0
Автор поста оценил этот комментарий

"LED светодиоды" - это жесть. LED(англ.  Light Emitting Diode) - светоизлучающий диод.
"... с индикацией на светоизлучающих диодах светодиодах".
аж глазам больно.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Пардоньте)

0
Автор поста оценил этот комментарий

не, я имел в виду, что вместо нумпада твоего подсоединить клаву. На нумпаде 18 кнопок, а на клаве-то 101 и больше..

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
А, если так - конечно можно!)
Я изначально тестировал, как и писал выше, на старой PS/2 полноразмерной клаве. Большую часть ее клавиш можно забиндить под свои макросы.

Даже больше скажу...я порылся на складе и нашел...Din 6 клаву и разъем к ней).
Ради интереса, загуглил распиновку и подключил ее к ардуине. Все заработало)
показать ответы
0
Автор поста оценил этот комментарий

Технически, ведь можно и вторую обычную клавиатуру подключить? Вообще, давно у меня была идея педалей наделать.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
Технически, ведь можно и вторую обычную клавиатуру подключить?

Впринципе, если назначить пины данных и синхросигнала второй клавы, на другие пины ардуины, то мб и получится...
Но для таких поделок уже лучше использовать USB HOST Sheeld, чтобы было два различных HID устройства. Но это уже совершенно другой уровень...) Я только вскользь коснулся этой темы.

показать ответы
1
Автор поста оценил этот комментарий

Как DIY, это прекрасно! Обсуждение вопроса  "дороговизны" клавы  с макросами - это за гранью...но имхо  DIY жк дисплеи в клавиатуру ( сист. монитор или что кому нужно - весщь весьма пользительная) да и выглядит круто.

Иллюстрация к комментарию
раскрыть ветку (1)
1
Автор поста оценил этот комментарий
DIY жк дисплеи в клавиатуру ( сист. монитор или что кому нужно - весщь весьма пользительная) да и выглядит круто.

Соглашусь, но только не в клавиатуру, а отдельным блоком, под монитор, например. Как у того же АлексаГайвера

Иллюстрация к комментарию
3
Автор поста оценил этот комментарий

За проект - однозначный плюс, хороший и интересный DIY, особенно с учётом приписки "я гуманитарий".


Себе для таких целей покупал б/у программируемую клавиатуру от Logitech, работает отлично, но нужен свой софт.

Потом ради интереса на той же Arduino + клавиатурный блок (вроде 4x4) с AliExpress делал аналог вашей клавиатурки (подключал в режиме software emulated USB HID), только остановился на том, что коды клавиш жестко прошиты в коде и для смены нужно обновлять прошивку.


Благодаря вам открыл для себя, что как минимум некоторые современные USB клавиатуры до сих пор поддерживают режим PS/2.


Единственное, чего так и не понял у вас - вы к компьютеру в каком режиме подключаетесь? Как USB HID или также как PS/2 клавиатура?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Единственное, чего так и не понял у вас - вы к компьютеру в каком режиме подключаетесь? Как USB HID или также как PS/2 клавиатура?

Число логически, к компу подлючается Ардуина,  которая работает как USB HID устройство, а уже к ней - PS/2 клава(как клавиатурный блок по сути). Значит - USB HID.

Благодаря вам открыл для себя, что как минимум некоторые современные USB клавиатуры до сих пор поддерживают режим PS/2.
Если честно, я когда только начинал все это делать, сам удивился, когда клавиатура с Али заработала как PS/2 устройство через переходник). А потом и бюджетная logitech k120.

Иллюстрация к комментарию
0
Автор поста оценил этот комментарий

я имел в виду кнопки на цифровые входы прикрутить без ps/2 клавиатуры, тогда можно было бы впихнуть все в один корпус и было бы удобно. А вот USB клавиатуру так вообще просто не прикрутишь. Тут USB host надо

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Если USB клава поддерживает ps2 режим - можно прикрутить. В посте об этом и писал.
Да и Вообще, что мешает спаять клавиатуру на своих свичах (как матричную) и подключить через ps/2 библиотеку?
0
Автор поста оценил этот комментарий

Об AHK, вы,  видимо, не слыхали.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Слышали, пользовались, понравилось. Еще вопросы риторические будут?

0
Автор поста оценил этот комментарий

Угу, большое спасибо. Это же именно скетч не для чтения данных с клавы, а для её эмуляции ардуиной?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Насколько я понял - библиотека работает в обе стороны. Но могу ошибаться.

0
Автор поста оценил этот комментарий

Вот вопрос - есть ли где библиотека для эмуляции PS/2 клавы ардуиной? Лично я не нашёл, может кто подскажет?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Добавил в папку по ссылке внизу поста. Туда же добавлю потом список всех сайтов, откуда черпал инфу.
показать ответы
0
Автор поста оценил этот комментарий
Блин, уважаемый, где были Вы и Ардуино в 2008-2010 годах когда я играл в L2
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

:D Поверь, у меня было много таких же ситуаций, когда начал изучать ардуину...)

0
Автор поста оценил этот комментарий

Плюс за прямую ссылку на исходники. На пикабу с этим проблема.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Самого это раздражало всегда).

Если будет не лениво, добавлю в ту же папку еще все используемые библиотеки и

Lite"версию скетча с 1 режимом работы.

0
Автор поста оценил этот комментарий

Не плохо бы уж и экранчиками под кнопки замутиться, был же похожий проект у лебедева...  Вопрос , однако в цене как я понимаю...

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Это было бы дорого, да).
У меня была идея добавить в проект OLED диспллей с обозначениями клавиш, но потом решил упростить и сделать индикацию лишь светодиодами.