Предистория
Этот cказ о том, как мне надоело приглядываться к раскладке клавиатуры, и я решил проблему попутно освоив нестолько фичей в программировании и не только
Есть одна маленькая, но изматывающая боль, знакомая почти каждому, кто много печатает. Ты смотришь на экран, пальцы уверенно бегут по клавиатуре, мысль сформулирована… и на выходе получается:
ghbdtn ytt gjyzk plfybt yf rjywt
Проблема не в пальцах. Проблема в том, что где-то там, в углу экрана, мелким шрифтом притаилась надпись EN или RU, и каждый раз приходится:
Прищуриться
Найти индикатор
Осознать ошибку
Нажать SUPER_ПРОБЕЛ или Alt+Shift
Перепечатать
Вздохнуть
И так — десятки раз в день. В какой-то момент я понял: я не обязан так жить.
Идея
Я захотел простую вещь: не угадывать, какая раскладка включена не искать глазами мелкий индикатор не ломать поток мысли А просто сразу понимать, на каком языке я печатаю.
Решение
Сделать лампу, которая:
явно и наглядно показывает текущую раскладку
видна сразу, без фокусировки взгляда
не мешает работе
не требует каждый раз думать о ней
Теперь раскладка:
сообщает о себе сама
не требует внимания
не превращает набор текста в мини-квест
Результат
Больше нет ghbdtn вместо «привет»
Больше нет случайных заклинаний в коде
Больше нет лишних пауз и раздражения
SUPER_ПРОБЕЛ снова просто сочетание клавиш, а не лотерея
Пальцы печатают. Голова думает. Глаза отдыхают.
Зачем этот проект
Потому что:
это реально мешает работе
это проблема, которую все терпят
её можно решить один раз и забыть
Если ты когда-нибудь:
печатал абракадабру из-за раскладки
злился на себя за «опять не посмотрел»
ххотел, чтобы компьютер был чуть внимательнее к тебе
значит, ты - целевая аудитория.
Эпилог
«Обойдемся без эпилога, далее - подробное описание проекта со схемами и исходниками».
KeyLamp
Описание проекта
KeyLamp — это проект, который сочетает аппаратную и программную части для создания устройства, показывающего текущую раскладку клавиатуры с помощью RGB-светодиода. Система состоит из нескольких компонентов, которые работают совместно для обеспечения удобного отображения состояния клавиатуры в реальном времени.
Цель — предоставить удобный индикатор раскладки клавиатуры в виде лампы, управляемой через USB-соединение, которая изменяет цвет в зависимости от текущей раскладки (например, us для английской раскладки и ru для русской).
Как это выглядит:

Проект включает следующие компоненты:
Python-сервис для отслеживания раскладки клавиатуры в Linux и управления подключенным устройством.
Arduino-скетч для управления RGB-светодиодами, отображающими цвет текущей раскладки.
GNOME-плагин для интеграции с GNOME Shell и обмена данными о раскладке через D-Bus.
Изготовление корпуса (или аналогичная физическая часть), которая представляет собой корпус устройства, куда устанавливаются компоненты.
Архитектура
1. Сборка электронной схемы и Arduino-скетч
Описание: Инструкция по сборке электронной схемы лампы и Скетч для Arduino, который управляет RGB-светодиодом, меняя цвет в зависимости от полученных через последовательный порт данных.
-
Основные задачи:
Получение данных о цвете от Python-сервиса через последовательный порт.
Управление RGB-светодиодами для отображения цвета.
Клонируй репозиторий и читай README.md
git clone https://github.com/lshnls/keylamp-arduino.git
2. GNOME Shell plugin
Описание: Расширение для GNOME Shell, которое отслеживает текущую раскладку клавиатуры и передаёт эти данные через D-Bus в другие приложения.
-
Задачи:
Слушает изменения раскладки клавиатуры.
Отправляет события через D-Bus, чтобы другие компоненты (например, Python-сервис) могли использовать эти данные.
Клонируй репозиторий и читай README.md
git clone https://github.com/lshnls/keylamp-gnome-plugin.git
3. Python-сервис
Описание: Python-скрипт, который отслеживает изменения раскладки клавиатуры через D-Bus и отправляет соответствующий код цвета в Arduino.
-
Задачи:
Подключение к D-Bus GNOME для отслеживания раскладки.
Отправка кодов цветов по USB через последовательный порт.
Поддержка нескольких раскладок и цветов.\
Клонируй репозиторий и читай README.md
git clone https://github.com/lshnls/keylamp-python-service.git
4. Сборка схемы и изготовление корпуса
Описание: Физический корпус, в который размещаются все компоненты (Arduino, светодиоды и другие элементы). Куб или аналогичная форма — это решение для компактного и эстетичного размещения устройства.
-
Задачи:
Создание схемы электронного устройства
Защита электронных компонентов.
Создание удобного и функционального вида устройства.
Используйте эпоксидную смолу для создания герметичного корпуса, который будет удобен для размещения компонентов.
Материалы:
Эпоксидная смола
Диффузиант
Силиконовая форма куба 7x7x7 см.
Защитные перчатки и маска при работе с химическими веществами
Советы:
Используйте эпоксидную смолу для больших объемов заливки (от 70 мм.)
Тщательно перемешивайте компоненты смолы и диффузиант, удалите пузыри с помощью технического фена.
USB кабель подключите перед заливкой, а его конец погрузите в смолу вместе с собранной ранее схемой arduino (неразъемное соединение будет надежнее).
Лицензия
MIT License — используй, дорабатывай, улучшай.
Комментарии (25)

UniInter
09.02.2026 19:05Прикольно, конечно. Но неужели человек не знаком с Punto Switcher?

Lshnls Автор
09.02.2026 19:05Вполне знаком, но для меня не подходит.
Самая боль:
переключает язык не вовремя,
ломает пароли,
путается в аббревиатурах и коде.
В итоге править текст вручную быстрее, чем “умный” алгоритм.подозрения в слежке? Доверяете ему пароли?

UniInter
09.02.2026 19:05Твои боли в программе купируются:
| переключает язык не вовремя
Предусмотрено отключение автоматического переключения (остается только по горячим клавишам).| ломает пароли
Предусмотрено отключение Punto в избранных программах.| путается в аббревиатурах
Предусмотрено ведение словаря слов, на какие не реагировать.| подозрения в слежке
Использую версию Punto до ее покупки Яндексом. Подозрений нет.Программа must have. Пользуюсь лет 15 каждый день. И в ней еще масса других полезных фич, например, настройки по автозамене или ведение дневника набора, который меня не раз выручал.

Lshnls Автор
09.02.2026 19:05Повторю, что пытался использовать этот софт. Не зашло по причине того, что предсказуемость результата ввода резко падает. Т.е. еще хуже чем вообще без клавиатурного помощника.

dedmagic
09.02.2026 19:05Так, ещё раз -- можно ОТКЛЮЧИТЬ автопереключение раскладки, что убирает все Ваши проблемы, в т.ч. непредсказуемость ввода.
В этом случае Punto Switcher используется в двух случаях:
- если вы начали набирать в неправильной раскладке и сразу (в пределах одного слова) это увидели - нажимаете Pause;
- если набрано уже много слов в неправильной раскладке - выделяете этот текст и нажимаете Shift+Pause.
В обоих случаях текст "чинится", ещё и переключение в нужную раскладку происходит.

andreymal
09.02.2026 19:05там, в углу экрана, мелким шрифтом притаилась надпись EN или RU
setxkbmap -option grp_led:scroll
0xdead926e
09.02.2026 19:05и какой-нибудь echo kbd-scrolllock > /sys/class/leds/чопопало/trigger, да.
правда возможно сначала придется написать этому чемупопало драйвер светодиода.

LinkToOS
09.02.2026 19:05Слушает изменения раскладки клавиатуры.
В реальном времени? Или по событию (нажатие клавиш, переключение окон)?

Lshnls Автор
09.02.2026 19:05Плагин для Gnome генерирует DBUS событие при переключении раскладки. Служба на основе программы на python ждет события переключения и дает сигнал на смену цвета в контроллер arduino

LinkToOS
09.02.2026 19:05По событию читается (передается в качестве аргумента) реальное состояние раскладки, или происходит изменение цвета относительно предыдущего запомненного состояния?
Если переключаются два окна, в которых разные раскладки, это событие отрабатывается?
Lshnls Автор
09.02.2026 19:05Передается реальное состояние раскладки. Если настроены разные раскладки для разных окон, то при переходе от одного окна к другому цвет меняется.

mikhailushakov
09.02.2026 19:05Ну, в целом довольно неплохо, а предусмотрено ли то, что языков в раскладке будет не 2, а допустим, мне ещё периодически нужны всякие умляуты или ещё что-то более специфическое

Lshnls Автор
09.02.2026 19:05В плагин и программу легко добавить дополнительные языки и коды цветов для RGB-светодиода.

alcotel
09.02.2026 19:05Кубик красивый получился, тоже попробую как-нибудь такой собрать.
Для RGB-светодиода не обязательно целую ардуину ставить. Достаточно одного адаптера USB-RS485. Требование к адаптеру: он должен работать в 7-битном режиме на скорости 3 Мбит/с. Например, FTDI.

maxidler
09.02.2026 19:05Идея красивая. Но я уже лет 15 пользуюсь более практичным решением. Когда смотришь на экран, а не на клавиатуру - максимум, что успеваешь набрать в неправильной раскладке - 3 символа. Более того, я все эти годы, на всех ОС настраиваю переключение раскладки по CapsLock (ну а для чего она еще нужна?), и лампочка на кнопке показывает мне раскладку. Тут правда возникнут проблемы у тех, кто использует более двух раскладок.

dedmagic
09.02.2026 19:05А не надо высматривать мелкий текст на экране – у меня вот прямо сейчас вообще индикация раскладки отсутствует (спрятана).
Нужно просто вместо ПЕРЕКЛЮЧЕНИЯ раскладки использовать два разных хоткея для ВКЛЮЧЕНИЯ нужной (En/Ru). В этом случае перед началом набора просто тыкается нужный хоткей, и, независимо от того, какая раскладка была до этого, набор начинается в правильной.В Windows это можно сделать даже стандартными средствами системы, но там очень неудобные (для меня) варианты предлагаются, поэтому я использую Punto Switcher (En на левом Ctrl, Ru на правом).

DungeonLords
09.02.2026 19:05Оффтоп. Почему не получила распространение моя идея? Выделив текст и переключив раскладку, получаем смену раскладки для уже напечатанного текста.

slair
09.02.2026 19:05есть православная xneur, может озвучивать нажатия
то есть без всякой индикации, на слух можно понять в какой раскладке производится ввод
само собой, автопереключение — зло, отключаю всегда во всяких punto/ninja/xneur
одна беда, что делать, когда придёт wayland
jarkevithwlad
а идея то хороша, можно привязать к rgb подсветке внутри пк, что бы не делать спец лампу
p.s. недавно захотел себе сделать переключение языка по КАПСУ в win 11 и пришлось свой вариант написать, а то на autohotkey античит Battlefield 6 жаловался...
source (с#)
да писала нейронка, но работает безотказно, вроде как последняя версия (если не ошибся с файлом), а затем для exe делаем автозапуск от админа и работает везде (во всех окнах и приложениях)
Lshnls Автор
Можно переключать подсветку клавиатуры, но моя клавиатура, к сожалению без RGB