Обновить

Комментарии 58

А не проще просто присоединить две клавы и на одной русский настроить, а на второй английский?

И набирать текст так
Больше клавиатур - богу клавиатур!

Для Win есть же Caramba Switcher и Punto Switcher (который после покупки Яндексом собирает кучу аналитики). У Linux тоже своих решений хватает. Цвета, конечно, это красиво, но все-таки практичнее автоматика.

Кстати, в таких программах как-то обрабатывается сценарий ввода пароля? Может ли раскладка при вводе английских символов переключиться на русский, тем самым сломав ввод? Что при плохом раскладе может привести к блокировке за неудачные попытки входа, например в интернет-банкинг

Когда я пользовался - ни как не обрабатывался, из-за чего я долго не мог понять почему я не могу ввести пароль на роутере с телефона, который сам же только что и создал, написав его дважды.
У меня кстати довольно длительное время, была проблема подобная вашей. Но она решилась тем что я начал просто смотреть на экран (видимо я освоил слепую печать пока играл в MOBA). Так я стал быстро понимать, что я не в той раскладке. Но переключаться было все ещё не удобно. А потом кто-то посоветовал поставить смену раскладки на Caps. После этого надобность в автосвитчерах отпала.

В Punto можно временно (до пробела) запретить переключение раскладки, если перед этим были нажаты (выбирается чекбоксами в настройках) стрелки, Backspace, Delete или пользователь руками переключил раскладку. Так же можно первые символы пароля (или вообще весь, если от его утечки ничего не ухудшится) добавить в список автозамены и тогда программа будет принудительно переключать раскладку на правильную и снимать Caps Lock если он включён.

Я пользую Punto. Но не на автомате. Довольно часто у него на коротких словах и сокращениях случались ложные срабатывания. Пользуюсь только ручным исправлением, когда часть текста уже набрал в неправильной раскладке.
Предложенный в статье вариант интересен. Жаль, что у меня клавиатура без подсветки и жаль, что у меня Windows.

У меня наоборот. Не всегда срабатывает. Правда, только для одного механизма, переключение раскладки рус/лат. Повесил их на левый и правый ctrl. Остальное отключил. Отрабатывают механизм, как у советских клавиатур с отдельными клавишами смены раскладки. Штука удобная. В Linux что-то похожее есть, но полностью отключается механизм удержания Ctrl для комбинации.

Меня как-то программисты хотели избить — в веб-форме нашего сайта при переходе на следующее поле через Tab у меня ВНЕЗАПНО и постоянно перезагружалась страница и все данные из полей терялись. А у программистов баг не воспроизводился.

Я пошел проверять этот баг на каждом компьютере на этаже, даже у бухгалтеров, и где-то он непредсказуемо воспроизводился, где-то нет. Маразм!

Причиной бага был тогдашний Punto Switcher, который у кого-то был установлен, у кого-то нет… как молоды мы были, мда.

Гениально! Почему я сам не подумал о таком применении подсветки? Сделаю себе под КДЕ.

В кедах не надо ничего делать, там это штатно в настройках включается уже много лет. А гномоюзеры продолжают жрать кактус)

Я всегда так настраивал, вместе с переключением раскладки по правому контролу, но тут дело вкуса. Правда, использовал индикатор scroll lock, потому что он нафиг не нужен мне для чего-то ещë. Правда, в ноутбуках придëтся всë же на капс настраивать, там обычно нет лишних индикаторов. Правда, на ноутбуке и клава рядом с экраном (если конечно не используется внешний экран вместо ноутбучного).

там это штатно в настройках включается уже много лет

Вы уверены, что речь идёт именно об управлении цветом подсветки клавиатуры?

Ох, каюсь, пинайте меня семеро.

Не понял сразу, что тут про подсветку, а не индикатор. Если так, то ещë лучше решение, вообще смотреть не надо, фон подсветки краем глаза увидишь. Было бы круто это внести как штатную функцию (хоть в кеды, хоть в гном, правда, гном от этого я не стану любить).

Круто. :) Но я побоюсь использовать сгенерённое, слишком ответственная область, клавиатура это всё, пароли, и всё такое. А самому проверить пока времени нет.

Ну также ИИ агентом проверь ))

Для меня идеалом был бы не слишком яркий светодиод, размещаемый где-то под монитором. Я чаще печатаю на русском: значит при Ru раскладке он должен быть в положении off, А на английской раскладке должен гореть.

Звучит как вполне посильная задача: подключить коротким шнуром к USB-порту (который может уже быть там же, на мониторе) простой контроллер со светодиодом. Должно быть несложно для знакомых с пайкой ребят.

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

Должно быть несложно для знакомых с пайкой ребят.

"Ардуино" индустрия позаботилась что давно ничего паять не надо - новая на Ренесасе имеет встроенную матрицу(адресных??) диодов. Есть Вавешаровская ЕСП с встроенным экраном, можно им светить причем без проводов... И скорее всего дофигища других вариантов.

Идеальный вариант — это педаль.

Педаль нажата — одна раскладка, педаль отпущена — другая. Об этом ещё Джеф Раскин писал, в своей книге про интерфейс.

Это что, ещё и на клавиатуру смотреть что-ли надо?

Нет, не надо — цвет подсветки хорошо заметен периферийным зрением даже на минимальном значении яркости (для этой клавиатуры).

По сути, при использовании двух раскладок (en и ru), вам нужно контролировать лишь один цвет. Например, для меня раскладка по умолчанию это en, а при активации ru загорается заметный красный цвет — именно он и ловится вниманием.

Ну, это, конечно, справедливо, если вы клавиатуру перед монитором на столе держите, а не, например, на коленках. В последнем случае, правда, будут вопросы по эргономике.

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

Обеими руками одобряю и поддерживаю слепой ввод текста десятипальцевым методом. Тем не менее, когда вы смотрите на монитор, клавиатура вполне себе остаётся в зоне периферийного зрения.

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

В идеале, чтобы подсвечивались только буквы текущей раскладки.

Можно соответствующими цветами закрасить буквы ещё попробовать. Например, синим одну раскаладку а красным другую.

Отличная идея. Правда, реализовать такое можно разве что на уровне производителя клавиатур

Есть клавиатуры со сменными кейкапами, можно на заказ напечатать только их и вставить светофильтры. Но это прям вариант для эстетов.

Мне кажется у вас подход неэффективый.
Как по мне, если вам нужно подумать и принять решение о переключении, то это уже медленно + лень думать каждый раз.
Я использую разные клавиши для переключение между раскладками - на английский LAlt, русский RAlt. Заметил как вошло в привычку нажимать соответствующую перед началом ввода. Думать не нужно + эти клавиши очень близко к толстым пальцам обеих рук

Отличное превентивное решение, спасибо что поделились

Удобно. Жалко, что вендоры не договорились, как управлять подсветкой.

В /dev/hidraw можно, кстати, писать напрямую, не обвешиваясь библиотеками. Хоть через python write, хоть через bash echo. И вроде даже через bluetooth тот же интерфейс должен работать, но конкретно это я не пробовал.

Благодарю за комментарий

Я, кстати, пробовал отправлять те же пакеты в устройство 2.4 GHz ресивера при подключении клавиатуры через USB-донгл — сигналы остались без внимания. По Bluetooth не пытался.

А USB-донгл двунаправленный? В смысле, через него родной софт может управлять подсветкой? Ну и он для этой клавиатуры не bluetooth, вроде.

В смысле, через него родной софт может управлять подсветкой?

Родной софт видит клавиатуру только при проводном подключении. При подключении через USB-донгл устройство софтом не определяется. Так что, видимо, тут система однонаправленная. По Bluetooth после этого я даже не пытался.

Ещё как идея менять цвет таскбара на винде или dock в линухе.

Бодрая мысль, спасибо

Так ещё под DOS раскладка переключалась с подсветкой периметра экрана.

Я начинал своё знакомство с компьютерами с Win 3.11. Моё почтение настоящим олдскулам IT :)

Ну и, как мы видим, всё уже давно придумано до нас

Любопытная статья. Надо будет попробовать. У меня как раз гном. И клавиатура на qmk.

А с раскладкой я когда-то пытался решать обратную задачу: менять раскладку автоматически из скрипта. Тоже пытался слать какие-то сообщения через dbus. Но ничего у меня не получилось.

Вместо pyenv и pip, используйте uv: `uv run keyboard_controller.py` - больше ни чего не нужно. Список зависимостей и версию интерпретора лучше указать непосредственно в скрипте. uv сам создаст виртуальное окружение и установит все необходимое https://docs.astral.sh/uv/guides/scripts/#creating-a-python-script

Отличная работа! Моё уважение автору!

а может кто то подскажет, можно ли системный курсор текста менать на свой? например цвет ему разный давать, синий например это английская раскладка... а красная например русская? или например если цвет нельзя, то хотя бы заменить курсор на E для английского и R для русского? Такое было в ZX Spectrum и это было довольно удобно

Идея здравая

Однако реализация под GNOME выглядит затруднительной:
1. Курсор ввода текста (caret) — это не отдельный системный объект (который можно менять на ходу), а часть отрисовки GTK-виджетов
2. Мне не удалось найти у GTK API для динамического изменения внешнего вида caret
3. Стилизация caret через CSS возможна только статически и применяется целиком на приложение

Выглядит так, что в GNOME такое архитектурно не предусмотрено и парочкой простых скриптов здесь не обойтись

Кажется, в KDE ситуация по этому вопросу не проще, но лучше уточнить у более опытных пользователей этой DE

получается надо патч в GTK/QT делать? а есть вариант сделать какой то оверлей поверх всех окон, и рисовать поверх?

Как будто думать стоит именно в эту сторону, но есть вероятность, что Wayland намеренно не позволит сделать такое: он запрещает инжектиться в процессы, вмешиваться в чужой рендер и рисовать поверх окон

Получается ещё хуже. Можно сказать, что курсор все программы рисуют сами. Кто-то пользуется GTK, кто-то QT, кто-то палочку прямо в X11/Wayland нарисует. Или квадратик в эмуляторе терминала.

Курсор мышки реже кто меняет, но и то бывает.

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

флаг
флаг
моно
моно

Код если что тут, думаю тоже статью напишу ))

https://github.com/jidckii/kolor-keyboard

Легче клаву напрягать чтобы отлавливала нажатие клавиш

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

Такое чувство что гораздо проще повесить переключалки разных языков на разные клавиши.

Я всегда хотел, чтобы любом поле ввода текста сбоку была индикация раскладки, банально 🇬🇧/🇷🇺. Как будто бы естественное решение. То, что такая важная информация находится где-то в дальнем углу большого монитора -- это же идиотизм. Ну как если бы спидометр в машине был перед пассажиром.
Но, видимо, этого ожидать не стоит, англоязычным эти проблемы чужды, поэтому проблемы индейцев, как известно..

Совершенно согласен

Даже само переключение между раскладками может быть сделано из рук вон плохо, не говоря про интерфейс. Год назад под macOS клавиша переключения раскладки лагала нещадно — приходилось после нажатия специально немного ждать пока проиграется красивая анимация переключения, только потом фактически менялся ввод.

Я помню был какой то релиз Ubuntu 14 или 16, на unity ещё вроде, так там переключение языка в принципе сломали не работало никак, естественно это они не тестировал так как никогда этим не пользовались)

У слову в не англоязычных по умолчанию дистрибутивах этот вопрос всегда хорошо по умолчанию продуман и сделано. А OpenSUSE например или ALT Linux.

Тоже сделал свой вариант, но для Keychron K8 Pro на QMK (и всех других на QMK), только понадобилось перепрошить стандартной QMK прошивкой, чтобы клавиатура начала воспринимать команды - https://github.com/popstas/rgb-keyboard-language

Спасибо за идею, никогда не использовал подсветку до этого, теперь у неё появился смысл.

На маке тоже заработало, через Hammerspoon, на клавиатуре NuPhy Air 75 v2

Отличная работа, спасибо за энтузиазм!
Добавил в статью упоминание о решении

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации