Предистория

Этот cказ о том, как мне надоело приглядываться к раскладке клавиатуры, и я решил проблему попутно освоив нестолько фичей в программировании и не только

Есть одна маленькая, но изматывающая боль, знакомая почти каждому, кто много печатает. Ты смотришь на экран, пальцы уверенно бегут по клавиатуре, мысль сформулирована… и на выходе получается:

ghbdtn
ytt gjyzk
plfybt yf rjywt

Проблема не в пальцах. Проблема в том, что где-то там, в углу экрана, мелким шрифтом притаилась надпись EN или RU, и каждый раз приходится:

  • Прищуриться

  • Найти индикатор

  • Осознать ошибку

  • Нажать SUPER_ПРОБЕЛ или Alt+Shift

  • Перепечатать

  • Вздохнуть

И так — десятки раз в день. В какой-то момент я понял: я не обязан так жить.

Идея

Я захотел простую вещь: не угадывать, какая раскладка включена не искать глазами мелкий индикатор не ломать поток мысли А просто сразу понимать, на каком языке я печатаю.

Решение

Сделать лампу, которая:

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

  • видна сразу, без фокусировки взгляда

  • не мешает работе

  • не требует каждый раз думать о ней

Теперь раскладка:

  • сообщает о себе сама

  • не требует внимания

  • не превращает набор текста в мини-квест

Результат

  • Больше нет ghbdtn вместо «привет»

  • Больше нет случайных заклинаний в коде

  • Больше нет лишних пауз и раздражения

SUPER_ПРОБЕЛ снова просто сочетание клавиш, а не лотерея

Пальцы печатают. Голова думает. Глаза отдыхают.

Зачем этот проект

Потому что:

  • это реально мешает работе

  • это проблема, которую все терпят

  • её можно решить один раз и забыть

Если ты когда-нибудь:

  • печатал абракадабру из-за раскладки

  • злился на себя за «опять не посмотрел»

  • ххотел, чтобы компьютер был чуть внимательнее к тебе

  • значит, ты - целевая аудитория.

Эпилог

«Обойдемся без эпилога, далее - подробное описание проекта со схемами и исходниками».

KeyLamp

Описание проекта

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

Цель — предоставить удобный индикатор раскладки клавиатуры в виде лампы, управляемой через USB-соединение, которая изменяет цвет в зависимости от текущей раскладки (например, us для английской раскладки и ru для русской).

Как это выглядит:

KeyLanmpVideo
KeyLanmpVideo

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

  1. Python-сервис для отслеживания раскладки клавиатуры в Linux и управления подключенным устройством.

  2. Arduino-скетч для управления RGB-светодиодами, отображающими цвет текущей раскладки.

  3. GNOME-плагин для интеграции с GNOME Shell и обмена данными о раскладке через D-Bus.

  4. Изготовление корпуса (или аналогичная физическая часть), которая представляет собой корпус устройства, куда устанавливаются компоненты.


Архитектура

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