Домой / Игры / Индикатор раскладки клавиатуры в виде цветного кубика на столе с помощью Arduino

Индикатор раскладки клавиатуры в виде цветного кубика на столе с помощью Arduino

Как известно, люди делятся на две категории: на тех, кто переключает раскладку с помощью Ctrl+Shift и тех, кто использует Alt+Shift. А еще есть счастливчики, кому это не нужно – те, у кого только одна раскладка (как правило, английская). Остальные завидуют им и мучаются с двумя, а то и с тремя раскладками: английский, русский, украинский (белорусский, казахский и т.д.).


Проблема в том, что, переключая язык, приходится постоянно смотреть на эту маленькую иконку языка. Есть и другие варианты:

  • Использовать отдельные комбинации на разные языки (Ctrl+1(2.3)) – программисты, которые работают в разных IDE, согласятся, что это не вариант, так как такие комбинации часто же заняты и перекрываются, а использовать другие в IDE непривычно. Нюанс еще в том, что раскладка в операционной системе – это на самом деле раскладка на текущую программу, а не на все (не удивлюсь, если не все это замечали). Т.е, если сейчас активен Word c английской раскладкой, то, переключившись в браузер, там может быть другая раскладка. И приходится или смотреть на иконку снова или же повторно вбивать, например, Ctrl+1, даже если язык не менялся.
  • Использовать программы типа Punto switcher, которые пытаются автоматически исправлять раскладку – не всегда это получается правильно и часто еще больше усложняет набор.
  • Использовать программы, которые переключают темы Windows – не каждому понравятся разноцветные панель задач или окна.

Идея

А давайте сделаем на основе Arduino кубик с LED подсветкой, который будет стоять на столе и менять свой цвет в зависимости от раскладки. Каждый язык – разный цвет. Например, английский – зеленый, русский – красный, украинский – синий. Это позволит видеть язык текущего приложения периферийным зрением.



Сразу говорю, это не сложно сделать даже не электронщикам.

Аппаратная часть

  • Arduino Micro – плюс платы в том, что есть micro-USB, что позволяет соединить его популярным кабелем с ПК. Можно использовать любую компактную плату с micro-USB.
  • RGB-светодиод. Можно использовать вместо него и 3 разноцветных светодиода.
  • 3 резистора 220 ом.
  • “кубик”.

В качестве “кубика” можно использовать что угодно. Я купил часы-будильник с Aliexpress.com в виде кубика. Вот так выглядит сам куб:



Понравились размеры, цена и дополнительное использование в виде датчика температуры (сами часы в кубике не точные, потому бесполезные). На том же Aliexpress.com можно найти и другие варианты:

  • пирамида-часы;
  • просто кубик с подсветкой.

Учитывая сегодняшние возможности, можно и на 3D принтере что-то напечатать. Да и просто использовать рамку с фото.

Пишем код

Тут все просто, читаем в цикле COM-порт. При чтении значения 1 – включаем зеленый светодиод, остальные гасим. При получении 2 - включаем красный светодиод, остальные гасим. При получении 3 - включаем синий светодиод, остальные гасим.


int inByte = 0; int LED_R = 5;//красный пин int LED_G = 6;//зеленый пин int LED_B = 9;//синий пин int RV = 255; // яркость int GV = 255;// яркость int BV = 255;// яркость void setup() { Serial.begin(9600); pinMode(LED_R, OUTPUT); pinMode(LED_G, OUTPUT); pinMode(LED_B, OUTPUT); } void loop() { if (Serial.available() > 0) { delay(100); inByte = Serial.read(); if (inByte == "2") { // RU analogWrite(LED_R, RV); analogWrite(LED_G, 0); analogWrite(LED_B, 0); } else if (inByte == "1") { // EN analogWrite(LED_R, 0); analogWrite(LED_G, GV); analogWrite(LED_B, 0); } else if (inByte == "3") { //UA analogWrite(LED_R, 0); analogWrite(LED_G, 0); analogWrite(LED_B, BV); } } }

Паяем

Еще проще. Общий пин соединяем с землей (GND). Остальные через резистор 220 Ом с соответствующими пинами, как показано на рисунке.



Устанавливаем в куб, предварительно вырезав отверстие под разъем.


Программная часть

Тут немного сложней. При изменении языка нужно посылать на COM-порт соответствующее значение (1 или 2 или 3).


Для не программистов ниже есть ссылка на программу под Windows, которая это делает. Единственное, в программе нужно указать COM-порт, к которому подключена Arduino. Это не сложно узнать в диспетчере устройств. Программа после запуска сворачивается в трей, но ее нужно добавить в автозапуск при старте Windows.



Программа написана на Delphi, на данный момент не имеет:

  • Функции автоматического поиска порта. Это легко сделать, Arduino при старте будет посылать некий код, программа будет перебирать порты и остановиться в случае его прочтения.
  • Выбора языков. Программа работает только с русским, английским и украинским. Можно сделать возможность указывать по кодам любой язык.
  • Автозапуска программы.

Результат


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



Если пост понравится, доработаю программу, добавив описанный выше недостающий функционал.

Теги: Добавить метки

Тема отображения текущей раскладки беспокоила хабрасообщество уже не раз . Я опробовал множество существующих решений, но по разным причинам они меня не устроили. Чтобы подобрать для себя наиболее удобный вариант отображения текущей раскладки, я написал небольшое приложение на C++, которое при нажатии на левый Shift отображает язык в системном курсоре редактирования текста. Менее 100 строк кода и около 4 килобайт в скомпилированном виде - на основе этого вы можете достаточно просто реализовать свой взгляд на то, как на самом деле должна выглядеть индикация текущей раскладки.

Как это сделано?

Поскольку ничего кроме WinAPI нам не нужно, программа компилируется без RTL в Visual Studio 2010. Таким образом мы получаем очень маленький объём исполняемого файла. Для отслеживания нажатия на Shift устанавливается клавиатурный хук без использования dll. Для изменения системного курсора редактирования текста используется функция SetSystemCursor - она позволяет заменить необходимый тип стандартного курсора сразу во всех приложениях. Таким образом мы избегаем необходимости тратить дополнительные ресурсы на отображение индикатора на экране - этим занимается сама система. По умолчанию курсор редактирования текста без тени и инвертирует цвет каждого пикселя под собой. Такое возможно только в двухцветных курсорах, поэтому чтобы сохранить это полезное свойство, мы должны сделать наш индикатор чёрно-белым.

Где можно скачать результат?

Исходный код можно увидеть в файле main.cpp (на bitbucket.org) или скачать в виде проекта langcursor-1.0-src.zip (5 кб). Внимание! Проект компилируется только в Release-версии (из-за отсутствия RTL).
Готовый исполняемый файл в архиве: langcursor-1.0-bin.zip (1 кб).

Что я могу изменить?

Если вы хотите добавить отображение других раскладок, достаточно добавить ресурс курсора с идентификатором раскладки в качестве имени (можно задать в файле resource.h, значение из последней колонки таблицы идентификаторов языков). Если вам не нравится маленькая чёрно-белая индикация языка, вы можете заменить курсоры на свои, например, с цветными флагами. Однако, при использовании цветных курсоров вы не сможете добиться инвертирования цветов под курсором и курсор начнёт отбрасывать тень (если её не выключить в настройках).
Более того, если вы знакомы с C/С++, вы можете полностью изменить код под себя! Пробуйте, экспериментируйте, делитесь вашими наработками! Все люди разные, что подходит одним - не факт, что подойдёт другим. Но вместе мы, надеюсь, сможем придумать наиболее удобное решение:)

Модифицированные версии

Постоянное отображение иконки языка без необходимости нажимать Shift

Алексей Федорчук

Докопавшись хоть и не до идеального, но устраивающего меня переключателя раскладок клавиатуры, следовало озаботиться индикацией текущего её состояния: при использовании циклического переключателя без этого не прожить. Ибо только нециклические переключатели избавляют от необходимости думать о текущем состоянии ввода символов. А нециклического переключения iBus не умеет. И это далеко не всё, чего не умеет этот хвалёный гиперпрогрессивный iBus.

Как известно, в качестве индикаторов раскладки можно использовать led-индикаторы на клавиатуре. И эта возможность задействована по умолчанию и при выборе русского языка в оригинальном дистрибутиве, и в моей mini-редакции - в качестве индикатора русской раскладки используется ScrollLock. Изменить ситуацию (например, если такого индикатора на клавиатуре нет) можно через редактор Dconf. Для чего надо пройти по схеме org.gnome.desktop.inputsources:

И вписать нужное значение в строку xkb-options:

Или, если led-индикатор по каким-то причинам окажется не включённым, дописать одно из двух: "grp_led:scroll" или "grp_led:caps" .

Правда, на клавиатуре без led-индикаторов вообще (а именно таковы большинство ноутбучных) радости от этого будет мало: потребуется экранный индикатор раскладки. Который не помешает и при наличии led’ов.

И таких индикаторов есть - в виде штатного апплета среды Budgie. Для помещения этого апплета на управляющую панель следует отправиться в конфигуратор среды Raven, запускаемый пиктограммой в правом верхнем углу, затем с помощью «шестерёночной» пиктограммы вызвать собственно панель конфигуратора, перейти на вкладку Панель , нажать плюсик в строке Апплеты , после чего отыскать нужный:

После чего апплет со всплывающей подсказкой появится на управляющей панели:

Правда, вид он имеет весьма бледный (в прямом смысле слова), а, кроме того, выглядит маленьким и печальным. Так что я с трудом различаю его. Способа изменить его представление (например, на традиционные государственные флаги, отечественный и «вражий») на поверхности не валяется. По крайней мере, я об него не споткнулся…

Возникает естественное желание прикрутить к Budgie какой-либо из вне-десктопных индикаторов раскладки, типа xxkb или gxkb , с их богатыми наборами флагов. Увы - как следует из их имён, они рассчитаны на работу с xkb , и с iBus функционируют, мягко говоря, некорректно. В частности, по моему опыту, gxkb способен заблокировать клавиатуру вусмерть. После чего остаётся только жать кнопку Power на корпусе машины до посинения. Точнее, до её срабатывания в соответствие с ATX-стандартом.

Пользователи, регулярно набирающие на компьютере даже небольшие объемы текста, замечают мелкие недостатки Windows, усложняющие ввод. Избавиться от них довольно просто с помощью нескольких программ, описанных ниже. Часть советов в этом материале окажутся полезны лишь тем, кто овладел слепым набором, но некоторые подсказки пригодятся абсолютно всем.

Полезные утилиты

Начнем с самых простых вещей – переключения раскладки. По умолчанию в Windows она назначена на комбинацию Alt+Shift или Ctrl+Shift. В последних версиях ОС пользователь может выбрать и «’» (апостроф), который на большинстве клавиатур находится прямо под кнопкой Esc. Однако это блокирует доступ к клавише «ё», расположенной там же. Расширить возможности Windows позволит утилита Punto Switcher .

С ее помощью переключение раскладки присваивается кнопкам Ctrl, Shift, Caps Lock. Именно на последней и рекомендуем остановиться: Caps Lock удобно нажимать мизинцем левой руки, и в тексте со смешанными языками такое переключение будет происходить гораздо быстрее, чем посредством комбинации клавиш, для которой понадобится поднимать всю руку.

Раз уж речь зашла о Punto Switcher, то остановимся и на других ее достоинствах. Программа автоматически исправляет типичные опечатки, возникающие при наборе, например две заглавные буквы в начале предложения. Автоматически корректируется и текст, набранный на неправильной раскладке (например, слово «пщщпду» будет исправлено на google). С помощью горячих клавиш утилита может отменять конвертацию раскладки или применять ее к любому выделенному фрагменту текста. У Punto Switcher есть собственный индикатор языка в системном трее, а еще она умеет отображать текущую раскладку в виде флага страны, что гораздо удобнее аббревиатур EN или RU.

Близким аналогом Punto Switcher является Arum Switcher . Программа также имеет индикатор в системном трее, исправляет различные типы опечаток, регистр текста и назначает абсолютно любую клавишу или их комбинацию на переключение раскладки.

Если пользователям нужна только функция конвертации раскладок (перевода уже набранных слов по типу «пщщпду»→google), то в этом случае выручит более простая утилита LangOver , которая после выделения текста и нажатия F10 (клавишу можно менять) конвертирует символы.

Language Indicator тоже выполняет лишь малую часть того, что умеют Punto Switcher и Arum Switcher, а именно отображает флаг страны указанного языка. При этом у программы все же есть одна дополнительная функция. Во время перемещения мышки по экрану утилита будет показывать выбранную раскладку в каждом конкретном приложении, над которым сейчас находится курсор. Программы, подобные Language Indicator, могут пригодиться тем, у кого по каким-то причинам из системного трея исчез стандартный индикатор языка и его невозможно вернуть назад (а это достаточно распространенная проблема).

Индикатор раскладки

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

Утилита Flean имеет настройки прозрачности и позиции индикатора на экране (возле текстового курсора или в поле для ввода). По умолчанию она показывает языки в виде флагов, но можно загрузить и любую другую иконку в формате BMP.

Если пользователю нужны более продвинутые возможности, следует обратить внимание на Aml Maple , у которой есть ряд преимуществ. Во-первых, программа отображает язык ввода возле текстового курсора только до начала набора (во Flean флаг виден постоянно, что может отвлекать от печати). Во-вторых, перемещение курсора происходит плавно (Flean применяет неоптимальный алгоритм прорисовки, из-за чего текстовый курсор с флагом перемещается по мере набора текста немного дерганно). Помимо флага, индикатором раскладки может служить и сам цвет текстового курсора. По умолчанию для английского языка он розовый, для русского – синий. Все параметры меняются, а чтобы не запоминать каждый цвет, справа от курсора можно дополнительно выводить флаг.

Утилита Curlyt также предназначена для отображения индикатора языка в том месте, где пользователь набирает текст. Как и в других случаях, есть настройки прозрачности, размера и положения иконки. Следует отметить, что с опциями по умолчанию Curlyt менее других программ отвлекает от набора текста.

Aml Maple — это индикатор раскладки клавиатуры для Windows. Программа показывает раскладку в текстовом и «мышином» курсоре, изменяя цвет и добавляя аббревиатуру языка или флажок соответствующей страны. Этот индикатор всегда у Вас перед глазами, и нет нужды бросать «косяки» в угол экрана, чтобы узнать раскладку.

Например, мигающий текстовый курсор красного цвета для английского языка — | , и синего цвета для русского — | . «Элементарно, Ватсон»: изменили текущий язык - тут же изменился и цвет курсора в точке ввода текста. Цвет индикатора, размер курсора можно настроить на свой вкус. Как это работает, можно взглянуть на этом видео (на примере Блокнота Windows) . А работает это в любых приложениях.

Aml Maple исправляет неправильно набранный текст , когда Вы забыли переключить раскладку. Например, "ghbdtn" вместо "привет" — т.е. поменять английский текст на русский, наоборот русский на английский, или и вовсе на любой другой язык.

Выделяете неверный текст, нажимаете горячую клавишу — получаете иправленный текст. По умолчанию используется клавиша Ctrl+Alt+Q . Но в настройках можно назначить какие угодно клавиши. Во избежание случайных срабатываний можно использовать быстрое двойное нажатие. Если текст не выделен, то Aml Maple исправляет последнее набранное слово.

В отличие от EveryLang, Aml Maple распрекрасно работает и с Windowx XP 32x, и с Windows 2000.

Aml Maple имеет многоязычный пользовательский интерфейс и справочную систему. В дистрибутив уже включены русский, украинский, английский, немецкий, греческий, казахский, сербский, польский, турецкий, иврит и корейский языки пользовательского интерфейса. В мышином и текстовом индикаторе «Мапля» поддерживает более двух десятков языков.

Скачать (переносная и установкой)



Версия с программой установки и удаления.

Релиз от 11 Февраль, 2019 10:02.
Переносная версия. Распакуйте все файлы из ZIP-архива в любую папку и запустите файл AmlMaple.exe.
Рекомендации : при установке новой версии Aml Maple настоятельно рекомендуем ставить в ту же в папку, поверх старой версии. В этом случае новая версия автоматически подхватит настройки работы и ваши регистрационные данные .

Программа установки умеет корректно завершать работающую предыдущую версию. Но иногда может потребоваться завершить работу и некоторых соседних, «капризных» приложений… К примеру, Google Chrome любит блокировать некоторые компоненты «Мапли» даже после завершения ее работы.