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
Автор поста оценил этот комментарий

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

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

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

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

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

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

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

Шикарно!

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

Лол, классная идея с педалями, может заморочусь и притащу пндалину на работу.

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку