Предистория
Этот 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 — используй, дорабатывай, улучшай.
