«Я — русский!»‑ спел недавно известный певец. Да и я, после 20 лет пользования клавиатурой, наконец‑то, устал вечно поправлять текст, набранный не в той раскладке клавиатуры (в голове держать всё невозможно!) и сделал индикацию текущей раскладки. Казалось бы, мелочь, а приятно.
А раньше как бывало? Оторвал взгляд от клавы, посмотрел на экран… «Фу, чёрт! Не та раскладка!» Стираешь то, что набрал непосильным трудом и заново набираешь тот же текст.
Вы скажете: «Не интересное решение! Есть же замечательная программа Punto Switcher! Она может автоматически исправлять набранный текст в нужную раскладку.» Но всегда оставалась проблема набрать специальные символы независимо от языка ввода. И вот тут‑то Punto Switcher начинал ошибаться.
А нельзя ли поставить прямо возле клавиш небольшой экранчик OLED (благо таких стало в продаже много) и выводить на него текстом текущую раскладку аж по всем языкам мира? Можно. Но как показал мой дальнейший опыт, увидеть свечение боковым взглядом проще, чем вглядываться в надпись на экранчике. Кроме того, обычно мало кто пользуется одновременно более чем тремя языками раскладки. Да и по цене решение со свечением светодиодами будет гораздо дешевле.
Вот я так и пошёл по этому простому пути. И замутил банальную схему:
Как видим, на схеме главным элементом является китайская «копеечная» микросхема‑преобразователь из usb в rs232 ttl‑уровней CH340C. Можно использовать подобный преобразователь любого другого производителя, лишь бы у него были выведены сигналы TX, RX, RTS, DTR.
Когда такой преобразователь подключаем к компьютеру через USB, то в системе появляется новый COM‑порт с каким‑нибудь номером. И чтобы его идентифицировать среди прочих COM‑портов, на схеме я замкнул между собой выводы TX и RX. Теперь, посылая из обслуживающей индикацию раскладки программы какой‑нибудь проверочный байт, можно найти тот самый «родной» COM‑порт.
Сигнал RTS служит для индикации одного дополнительного языка раскладки (например, свечением красного светодиода), а DTR — для индикации дополнительного второго языка (например, свечением зелёного светодиода). Полное отсутствие свечения будет означать «индикацию» основного языка раскладки.
Обслуживающую индикацию раскладки программу для ОС Windows 7 и выше, я написал на языке C# (ссылки на неё внизу статьи). И её можно поместить в автозагрузку. Для этого нужно нажать комбинацию клавиш WIN+R. Откроется окно «Выполнить». Набрать там в строке «shell:startup» без кавычек, и нажать ENTER. В открывшейся папке разместить программу или ярлык на неё.
При загрузке системы программа ищет «родной» COM‑порт, устанавливает с ним связь. Далее узнаёт код текущей раскладки и помещает его первым элементом массива в оперативную память. Если во время работы пользователь переключит раскладку, то код новой раскладки станет вторым элементом массива. Также и с третьим языком раскладки. В дальнейшем в процессе текущего сеанса работы, при переключении пользователем, «знакомая» программе раскладка будет подсвечена (или не подсвечена, если раскладка является основной) красным или зелёным светодиодом.
Если в системе появится ещё одна, четвёртая (и больше) раскладка, то она никак не будет подсвечена и её легко станет спутать с основной раскладкой. Но, повторюсь, не думаю, что большинство людей использует в жизни более чем три раскладки одновременно.
Обратите внимание! Если открываем в операционной системе окно «Настройки языка», то моя обслуживающая индикацию раскладки программа временно перестаёт реагировать до тех пор, пока не закроется окно настроек языка.
Обслуживающая программа сидит в трее в виде значка. И при нажатии на значок правой кнопкой мыши появляется меню из двух команд: RESET и EXIT. Команда RESET бывает нужна для перестройки цветов, если после настроек языка хочется сбросить текущие настройки цвета. Ну а команда EXIT – выгрузка программы из трея.
Вся «соль» кода программы представлена этим непрерывным потоком, при котором происходит «сканирование» текущей раскладки:
private static void portTask()
{
IntPtr _currentKeyboardLayout = IntPtr.Zero;
KeyboardLanguageLEDPort klp = new KeyboardLanguageLEDPort();
while (true)
{
if (fReset)
{
fReset = false;
klp.ClearLanguages();
_currentKeyboardLayout = IntPtr.Zero;
}
if (klp.CheckPort() == false)
{
klp.portName = klp.PortFind();
}
else
{
try
{
var newLayout = GetKeyboardLayout(GetWindowThreadProcessId(GetForegroundWindow(), IntPtr.Zero));
if (_currentKeyboardLayout != newLayout)
{
_currentKeyboardLayout = newLayout;
klp.AddLanguage(_currentKeyboardLayout.ToInt32());
klp.OnLedLanguage(_currentKeyboardLayout.ToInt32());
}
}
catch
{
}
}
System.Threading.Thread.Sleep(100);
}
}
Как видим, сканирование производится раз в 100мс и совсем не нагружает систему:
Ниже ссылка на программу индикации раскладки для среды Windows:
Комментарии (103)
a-tk
02.12.2023 11:10+38А можно освоить десятипальцевую слепую печать и смотреть на монитор, когда печатаешь, а не на клавиатуру...
Время на освоение однозначно экономит годы активной жизни.
Zara6502
02.12.2023 11:10+10для меня этот способ не работает, я за клавиатурой с 1987 года и могу печатать только смотря на клавиши, до 2005 года учился раз в год примерно, менял кучу программ, в том числе недавно и онлайн какие несколько пробовал, проблема ровно одна - я печатаю под диктовку самому себе, а диктуя я медленно, когда смотрю на экран, то забываю печатать, отвлекаюсь на что-то еще на экране, перестаю диктовать и всё, приплыли. Так что все люди разные.
ну и чтобы экономить коды нужно эти же годы тратить на набор текста, а я не так и много печатаю чтобы аж годы, в день и 10 минут нет. Я дольше на остановке транспорт жду и пешком хожу.
qw1
02.12.2023 11:10+12Купил клаву без гравировки, полностью чистую. За 2 дня научился печатать вслепую )))
Zara6502
02.12.2023 11:10+9еще я не умею плавать, сколько не учили и сам не учился, у меня странная плавучесть, жена на спину ложится когда на воде то половина тела над водой, она так любит отдыхать когда плавает, а я когда ложусь на спину, то я погружаюсь весь на 10 см примерно и могу так полежать секунд 30, я потом дышать что-то хочется, но и даже тут проблема, ноги тонут, тело стремится занять вертикальное положение и тонет еще быстрее. А еще я не умею играть на музыкальных инструментах вообще, меня тоже пытались учить на гитаре например.
Я это к чему - если кто-то чему-то может научиться, то это не значит что сможет другой. Вот я смог научиться жонглировать тремя мячиками одной рукой за 30 минут, на работе специально приносил и тоже люди пытались - не могут.
PS: у нас в серверной как-то поставили KVM с клавой QWERTY но без русских букв ))) я тоже печатал на русском, ну чуть медленнее и немного с ошибками, но печатал. Слепой ввод тут ни при чем.
Pyku_He_oTTyda
02.12.2023 11:10+3Я тоже до 49 лет тонул ровно так же, как и Вы, пока не пришел в бассейн учиться плаванию с тренером.
У женщин плавучесть лучше, но это точно не основное в плавании:)
Zara6502
02.12.2023 11:10не думаю что какой-то тренер научит меня печатать вслепую, это же внутри головы. и с плаванием мне тоже не помочь, у меня дыхалка слабая я сам проплыть могу максимум 3 метра, а потом просто нет сил грести.
Firsto
02.12.2023 11:10+2У меня в школьные времена был стол с выдвижной подставкой для клавиатуры, которая всегда задвинута была и руки по сути под крышкой стола всегда находились. Так и научился.
Tiriet
02.12.2023 11:10+5А я в детстве просто накрыл клавиатуру почтовой коробкой. было так прикольно- глаза рефлекторно опускаются вниз, а там "Почта России" и такой когнитивный диссонанс интересный возникал. Первые два дня приходилось мучительно вспоминать, где нужная кнопка (бекспейс стал родным буквально за час- был самой главной клавишей :-)) Через три или четыре дня глаза перестали опускаться вообще, даже позывы к этому прекратились, а клавиши из картинок превратились в ощущения в пальцах. через неделю выкинул коробку, навык остался.
DemVy Автор
02.12.2023 11:10ЗдОрово! Я в детстве вообще не знал что такое компьютер. Тогда и слово то это только входило в оборот. Постоянно с клавиатурой пришлось взаимодействовать только с 2000 года, когда мне было уже 26 лет. Но чаще, всё же, рисовал мышкой печатные платы.
Yuri0128
02.12.2023 11:10+2Тут такое дело, - я при "слепой" печати и на монитор то не смотрю, а в правый нижний угол моника так тем более. И нарываюсь на те же грабли, только из-за скорости больше перенабирать приходится. Работаю на ноуте.
DemVy Автор
02.12.2023 11:10Если на ноуте работаете, то сбоку в USB разъём можно воткнуть данную штуку с достаточно яркими светодиодами. Думаю угловым зрением будет видно. А вообще, лучше всего видно свечение светодиодов, когда светодиоды впереди клавиатуры, а не сбоку.
Aleshonne
02.12.2023 11:10+3Ага, при поточном наборе текста помогает. А вот при редактировании — нихрена подобного. Особенно, когда нужно поменять прописную «с» на заглавную «С» (какая сволочь вообще придумала клавиатуру, на которой «Си» и «Эс» на одной кнопке!?).
agendasshanty
02.12.2023 11:10+3ну да, и за 20 лет то можно было научиться смотреть не на клавиатуру, а на то что пишешь, тем не менее интересная поделка
DemVy Автор
02.12.2023 11:10+1Я не так часто набираю текст, либо код: всё же я больше электронщик и часто с паяльником и железками. Да, программирую микроконтроллеры тоже. Но всё же не назову себя всецело софтовым работником.
CzarOfScripts
02.12.2023 11:10Лично для меня, было проще создать программку показывающую раскладку возле курсора в полях ввода, но я очень редко обращал на нее внимание, ведь я всегда только и вижу, что набираю.
Grey83
02.12.2023 11:10+1А по поводу комплекса из утилиты и платки со светодиодом:
частопочти никогда не обращаешь внимания вообще на световую индикацию режимов клавиатуры. Особенно когда используется клавиатура с подсветкой.iliasam
02.12.2023 11:10+2Во очень хотел бы клавиатуру с двухцветной подсветкой кнопок и светофильтрами в каждой кнопке - разделенными по раскладкам. Таким образом, переключая цвет подсветки, можно выбирать одну из подсвечиваемых раскладок.
perfect_genius
02.12.2023 11:10Для упрощения можно подсвечивать только одну раскладку. Если изменить строение клавиш, чтобы они были сквозные, то не понадобятся индивидуальные источники света под каждую - подсветка будет общей, под клавиатурой.
0x131315
02.12.2023 11:10Сейчас много ребят с 3D-принтерами продают услуги печати. Можешь по приколу разработать такой набор клавиш для своей клавы и заказать у кого-нибудь печать, залить плотной краской из балончика, залить эпоксидкой отверстия в форме букв, а сверху залить тонким слоем лака, разобрать клаву и приклеть вокруг каждого ряда клавиш два набора светодиодных линеек нужного цвета.
А что касается электронной части - тут наверное проще всего будет запитаться от самой клавы, а в качестве сигнала взять состояние scroll lock (сам его диодик можно отрезать от питания, чтобы не горел), который все равно не несет никакой функции, и которым можно управлять программно, для чего уже есть готовый софт в windows, а в linix это вообще из коробки работает.
DemVy Автор
02.12.2023 11:10Не знаю, не имел опыта работать с клавиатурой с подсветкой. Но видел у других, что это обычно белое свечение. А у меня красное или зелёное или ещё какое можно поставить, но не обязательно белое. А во вторых, я заметил, что лучше всего видно свечение впереди клавиш. То есть чуть выше клавиш F5, F6. А вот переключение цвета подсветки всех клавиш в зависимости от текущего языка раскладки, думаю, - хорошая идея!
Grey83
02.12.2023 11:10Я зелёную предпочитаю, хотя моя позволяет выбрать из 7 цветов (любимая китайцами синяя - это вообще вне добра и зла).
DemVy Автор
02.12.2023 11:10Да ради бога, любой цвет подойдёт для этой функции) Кому как нравится.
Grey83
02.12.2023 11:10дело в том что от цвета подсветки и читабельность меняется (особенно на свету).
Зелёный и жёлтый - самые заметные глазу цвета при одинаковой яркости свечения.DemVy Автор
02.12.2023 11:10У меня в реальности на клавиатуре стоят красный и оранжевый, а не красный и зелёный. Потому что по току они почти одинаковые и я установил только один ограничивающий ток резистор на общем аноде. И остался недоволен: цвета сильно похожи на свету. А вот красный и зелёный принципиально отличаются и да, их хорошо видно.
Grey83
02.12.2023 11:10+1Моя MSI DS4100 позволяет включить следующие цвета подсветки: красный, зелёный, синий, жёлтый, голубой, фиолетовый и белый. 3 года уже в эксплуатации, некоторые клавиши пообтёрлись и символы на них недостаточно чётко читаются (T, Y J, C, B и N, хз почему именно эти)
Белый мне как-то не очень (бледноват, что ли).До неё использовал Defender Oscar SM-660L. Там была богомерзкая синяя подсветка (да и у почти всех, которые юзал до неё), это мне надоело и я купил светодиоды (красные и зелёные, но остановился на зелёных; ещё в запасе всего штук 30, емнип, осталось) для замены подсветки и перепаял (правда корпуса пришлось немного доработать напильником, т.к. родные чуть меньше по габаритам были). Стало гораздо лучше пользоваться. Правда потом пробел развалился и я купил новую. Выбирал с точно такими же клавишами и наличием подсветки (были ещё почти точно такие же варианты, но MSI мне больше понравилась по обзорам).
Defender до и после замены подсветки
DemVy Автор
02.12.2023 11:10Хорошая подсветка! Есть светодиоды с двумя свечениями внутри такого же размера 3 мм. А клавиатура MSI DS4100 выглядит футуристично и подошла бы для моего решения! Спасибо! Деньги будут, куплю себе такую же клаву и переделаю подсветку под свою утилиту.
Grey83
02.12.2023 11:10Не уверен, что там будет достаточно места для чего либо: толщина у корпуса довольно маленькая.
leahch
02.12.2023 11:10+9А у меня раскладка переключается через CapsLock, кстати, там и светодиодик имеется. Прада у меня linux :) Чего всем и рекомендую.
geher
02.12.2023 11:10+1Раскладку по CapsLock можно и в Windows менять. Например, упомянутый Punto Switcher имеет и такую возможность, другие програмки есть для этого. Только все, что я перепробовал, работает недостаточно надежно. Иногда не срабатывает: вместо переключения раскладки включит верхний регистр, и не переключить обратно никак.
А светодиодик на состояние CapsLock далеко не у всех есть, а если есть, то часто его плохо видно.
haqreu
02.12.2023 11:10Autohotkey пробовали? У меня ни разу не глючило переключение по капсу.
MountainGoat
02.12.2023 11:10А у меня бывало. После чего единственный способ вернуть как было - выключить скрипт.
Breathe_the_pressure
02.12.2023 11:10В Виндоус использую SimpleSwitcher для совместимости с клавиатурой в Linux. Capslock переношу на F24 и ставлю на переключение раскладки, тогда нет глюков. Также он флаг добавляет, и можно набранное исправлять.
perfect_genius
02.12.2023 11:10Что такое F24 и зачем вам вообще Caps Lock?
Grey83
02.12.2023 11:10+4В инетах пишут, что комбинации Shift+F1 - Shift+F12 преобразовываются в F13 - F24, соответственно.
Breathe_the_pressure
02.12.2023 11:10Так как пользуюсь и Линуксом и Виндой, хочу чтобы переключение раскладки было на одной кнопке, тут и получается засада. Если ставить на Линуксе shift+ctrl, то так как у него клавиши регистрируются только на нажатие, все комбинации с shift+ctrl не работают, например в броузере shift+ctrl+p не работает. В итоге в Линуксе ставлю capslock.
В Винде нет такой комбинации, поэтому пользуюсь той программой. А чтобы не реагировали некоторые программы (всё равно есть глюки) переношу родной Caps на F24.
geher
02.12.2023 11:10Единой комбинацией для всех систем можно выбрать Win+пробел, которое сейчас продвигают в винде. Но мне показалось как-то неудобно.
DemVy Автор
02.12.2023 11:10Не юзал эту программу. Может быть по-юзаю. Спасибо за информацию! Если появится потребность, думаю, легко смогу перенести свой код на C# на другую платформу. C# кросс-платформенный язык программирования.
qark
02.12.2023 11:10Уточню, что светодиодик можно включать/выключать независимо от клавиш переключения раскладки.
DemVy Автор
02.12.2023 11:10На моей клавиатуре родные светодиоды самой этой клавиатуры очень тусклые. Не знаю, зачем тогда они вообще, если их плохо видно. Их присутствие - простая формальность, да и всё тут.
vvzvlad
02.12.2023 11:10+1Ну так проще было бы к светодиодику капса подпаять транзистор и другой
сверхяркий лазерныйсветодиод, поярче, а не костылить второй usb-интерфейс.DemVy Автор
02.12.2023 11:10Возможно, да. Но у меня может быть ещё второй дополнительный язык раскладки. А про капс лок я и не знал вовсе до публикации. И всё же круто было бы сделать подсветку всех клавиш снизу разными цветами соответственно текущей раскладке.
0x131315
02.12.2023 11:10+2В linux к клавиатуре относятся более чем серьезно. На других ОС не встречал такого богатого набора настроек. Можно настраивать вид индикатора в трее, набор языков, хоткеи для перебора/переключения, лампочки на клавиатуре, область сохранения языка (окно/приложение/экран/система), и еще десятки параметров, которые кому-то наверняка нужны. Вот например только одна из вкладок настроек kde, и это только треть от всего списка настроек что тут есть:
И это по сути просто обертка к текстовому конфигу: все тоже самое можно и вручную прописать в конфиги по документации из сети. Т.е. тут на уровне самой ОС такой подход
Iwanowsky
02.12.2023 11:10Я иногда на переключение раскладки ставлю на СкролЛок, но на ноутбуке этой клавиши у меня нет, а КапсЛоком я пользуюсь по назначению. На своем ноутбуке также частенько переназначаю прокрутку страниц вверх/вниз или Хоме и Энд на правые Алт и Контрол (т.к. ими обычно почти пользуюсь). Клавиши прописываю в системном реестре Виндовс при помощи любой из клавиатурных утилит (не использую горячих клавиш).
grizzly_8
02.12.2023 11:10У Punto Switcher можно выключить автопереключение и изменять по хоткею набираемое слово. Получается даже быстрее, чем если сначала переключать раскладку.
Zara6502
02.12.2023 11:10+1спасибо, ушло в закладки, а кодом не поделитесь? я как раз думал насчет аппаратной индикации, но для другого, и все думал как можно её к усб присобачить. Могу 500 руб заплатить за реализацию и схему железки :)
DemVy Автор
02.12.2023 11:10Поделюсь! От денег не отказываюсь. Пишите, куда отправить архив исходника.
geher
02.12.2023 11:10+1Есть же замечательная программа Punto Switcher!
Среди прочего она замечательна тем, что часто наглухо валит некоторые версии MS офиса при исправлении раскладки.
DemVy Автор
02.12.2023 11:10Круто! Вот честно не помню какие конкретно подобные "суровые" причины заставили убрать эту прогу с компа. Вполне возможно, что эта. Давно это было. Да, кажись, правда.
nebularia
02.12.2023 11:10+5Ну есть же уже готовый ненужный совершенно индикатор Scroll Lock. В линуксах многих по дефолту индицирует раскладку, в виндовс 100% тоже можно что-то найти.
mrlobaker
02.12.2023 11:10И по этой же причине его уже почти не ставят. На ноутбуках и даже на моей основной клавиатуре индикатора scroll lock нет ¯\\_(ツ)_/¯
AVX
02.12.2023 11:10Есть нюансы использования скролллока на разном софте, типа либреофиса (как-то давно натыкался на длинное обсуждение разработчиков, связанное с каким-то багом, или часть считали это багом, другие "фичей", и связано с этой клавишей и соответстующим режимом).
Однако, я с самого начала использования линукса (годы 2007-2008) использовал именно этот индикатор на клаве для отображения раскладки. Но не только - отображение флага на экране тоже включал, и это лучше чем разглядывать RU или EN там показывает - краем глаза уже заметно. А на ноутбуках проще - экран прямо рядом с клавой, и нет никакого смысла в индикаторе на клаве, ведь на 5-7 см выше уже видно индикацию на экране. На компе клава может быть заметно далеко от экрана, да и экран может быть довольно большой.
DemVy Автор
02.12.2023 11:10У меня три "родных" зелёных светодиода моей клавиатуры, в том числе и CAPS LOCK настолько тусклые, что слева я их уже не вижу. По моему, они на клавиатуре чисто формально стоят.
aik
02.12.2023 11:10А если просто выделить текст и сменить раскладку руками? Без автомата. Таких программ полно.
Zara6502
02.12.2023 11:10в той же пунто можно выключить автоисправление и делать его по кнопке, но мне не нравится пунто, да и везде где я бываю его не поставить, а я не люблю неуниверсальные решения.
aik
02.12.2023 11:10Можно, но прелесть пунто именно в автоисправлении. Если оно не надо, то есть куча других программ, более простых в использовании (и не стучащих товарищу майору).
Moog_Prodigy
02.12.2023 11:10А если в системе будет больше чем один ch340 ? И куча компортов. Тут станок, тут программатор, тут ESP, эта утилитка с ума не сойдет часом?
DemVy Автор
02.12.2023 11:10Как я уже написал в статье, "мой" COM-порт ищется по замыканию TX на RX. А именно: программа открывает очередной (по списку, взятому из зарегистрированных в системе COM-портов) COM-порт и шлёт ему байт ":" на скорости 115200 бод. И тут же, в течение 100мс ждёт от COM-порта ответ в виде того же байта. Далее, моя утилита работает с тем COM-портом, который нашла. И номер порта не меняется. Поиск происходит один раз при загрузке системы. Предполагается, что устройство индикации и программа встроены в систему до включения ПК. Если же устройство индикации "отвалилось" от разъёма USB, тогда, да, начнётся новый поиск. Не думаю, что какое-то внешнее устройство отреагирует на один байт тем же байтом. Потому что смысл коммуникации с условным станком заключается в передаче данных, и чаще всего передаётся пачка байт с проверками стартового байта и контрольной суммы передаваемых данных. Кроме того моя скорость передачи данных программой 115200 бод довольно таки высока, чтобы принимающий байт условный станок мог его определить как полезную посылку, ведь большинство устройств (и, тем более, удалённых от ПК устройств), для пущей надёжности линии RS232, имеют скорость ниже, чем 115200 бод. А в стандарте RS485 нужен стробирующий сигнал на разрешение передачи. У меня же при поиске COM-порта отправляется только байт, без стробирующего DTR или RTS. В общем, я считаю такой сценарий практически маловероятным. Но теоретически всё возможно, конечно. Схемку я целенаправленно упростил до максимума, для простоты повторения большинством пользователей. У многих нет станков дома и кучи действующих COM-портов. Но, при желании, всё возможно усложнить, конечно, поставив микроконтроллер в устройстве индикации раскладки.
VelocidadAbsurda
02.12.2023 11:10Справедливости ради, 115200 - как раз таки очень распространённая скорость, а вот какие-нибудь 1.5-2мбод (CH340 такое поддерживает) были бы действительно нетипичны (как и противоположная крайность - 50бод).
DemVy Автор
02.12.2023 11:10Спасибо Вам за ценное и справедливое замечание! Исправил в программе на частоту 921600 бод. Не более, потому что по даташиту на CP2102 увидел, что выше не поддерживает. У FT232R всё нормально. Ссылку на программу обновил.
Alexeyslav
02.12.2023 11:10Модем легко ответит, обычно там эхо включено. и скорость не важна, если это виртуальный модем или программно-аппаратный. В наше время это конечно редкость, но....
udik_chudik
02.12.2023 11:10Получается из клавиатуры теперь торчит 2 USB кабеля?)
Grey83
02.12.2023 11:10-1Возможно можно подпаять внутри клавы к шнурку параллельно самой клаве.
DemVy Автор
02.12.2023 11:10+2Нет, нельзя так делать. Это USB протокол.
Grey83
02.12.2023 11:10+2А раздербанить какой-нить копеешный хаб и встроить его (предварительно выпаяв ненужные гнёзда портов)? Шнур приходящий в клаву припаять на вход хаба, а клаву и приблуду припаять к выходам хаба.
Клаве и приблуде же скорости большие для работы не требуются, так что пойдёт плата от почти любого.DemVy Автор
02.12.2023 11:10Да. Именно так и можно смастерить, если по габаритам всё укладывается.
Iv38
02.12.2023 11:10+2С габаритами проблем не будет. Дешёвый USB 2.0 хаб обычно представляет собой одну микросхему, часто это FE1.1s. Размером она примерно как CH340. Обвязки там минимум: кварц на 12 МГц, несколько резисторов и конденсаторов. В простейшем случае можно купить дешёвый USB-хаб, выпаять разъёмы и обкусать плату до минимального размера. А порты припаять прямо к ногам.
RichardMerlock
02.12.2023 11:10Наверняка на каких нибудь клавиатурах можно перешить контроллер, чтобы внутри клавы что надо доразместить. К примеру, на самодельных.
DemVy Автор
02.12.2023 11:10+1Вряд ли. Везде контроллер клавиатуры - просто чёрная капля без возможности перепрошить. Всё делается максимально дёшево.
DemVy Автор
02.12.2023 11:10Проще говоря, да. Но можно засунуть внутрь клавиатуры USB-HUB. Благо, малогабаритных дешёвых хабов много в продаже. Или сделать отдельное устройство с кабелем или воткнуть его во внешний usb-hub и разместить рядом с клавиатурой. Я же прикрутил снизу клавиатуры самодельную платку. На платке usb-hub на микросхеме FE1.1, а экранчик подсказывает когда работать (30 минут), а когда отдыхать (10 минут), и так в цикле. И укоротил кабели клавиатуры и мышки. А плата соединяется с ПК кабелем с type-c.
EskakDolar
02.12.2023 11:10Давно мечтал о таком.
Только лучше не одну лампочку, а 2 сверху, 2 снизу и по одной справа и слева
DemVy Автор
02.12.2023 11:10Да, можно и так. Только, чтобы наверняка "уложиться" по току, лучше на выходе микросхемы поставить полевые транзисторы, например, 2N7002 или KSP2222.
Резистор на 56 ом лучше поставить с мощностью рассеивания 0,25 Вт.
RichardMerlock
02.12.2023 11:10+3В чем преимущество управления током нагрузки через её закорачивание ключом?
sim2q
02.12.2023 11:10может экономия инвертора из за определённой активности сигнала, 340 не раскуривал,но по идее всё должно гибко тюниться
DemVy Автор
02.12.2023 11:10Сигналы RTS и DTR инверсные. Активный уровень у них - ноль. То есть при единичке (в обычном состоянии) на выходе CH340 светодиоды гореть не должны.
keekkenen
02.12.2023 11:10тоже привык к punto switcher'у, но на корпоративном ноуте нельзя всякие экзешники ставить, поэтому написал плагин для Intellij IDEA, теперь хотя бы при написании кода не страдаю
Iv38
02.12.2023 11:10Что делает плагин?
keekkenen
02.12.2023 11:10два элементарных действия по хоткеям
конвертирует в альтернативную раскладку последнее введенное слово (текст, что слева от курсора)
конвертирует в альтернативную раскладку выделенный фрагмент текста
попутно, если конвертация случилась, то переключает раскладку клавиатуры..
априори, предполагается, что есть только ru, en языки
heavy
02.12.2023 11:10+2При таком способе определения языка, будет работать не везде. Например, это не работает в меню пуск, терминале, приложениях из виндовс стор.
Самое надёжное — определять язык через системный индикатор в систрее, он поддерживает iAccessible.
Уже много лет пользуюсь единой раскладкой https://habr.com/ru/articles/301882/При таком подходе, если не смотрите на экран при наборе, язык можно определять по индикатору capslock.
Меня много лет не устраивали индикаторы раскладки, поэтому написал свой, под виндовс.
https://khsoft.ru/li/
Neitr
02.12.2023 11:10+1А не лучше ли сделать чтобы сами буквы клавиш светились русские когда рус, латинские когда eng. А то куча бесполезной подсветки порой наделают, а подсветить буквы ума не хватает ни у кого,
leremin
02.12.2023 11:10Вроде клавиатура от Артемия Лебедева так могла
Iv38
02.12.2023 11:10Так как там были экраны в каждой клавише, она могла рисовать только буквы нужной раскладки, как экранная клавиатура смартфона - не перепутаешь. Но по сложности девайса это, конечно, хардкор. И мейнстримом такому подходу пока стать не суждено.
Iv38
02.12.2023 11:10+1Довольно сложно. Надо на каждую клавишу ставить по два светодиода и кейкап ещё устраивать так, чтобы символы правильно засвечивались. Более простой вариант тут уже предлагался. Когда подсвечивается только одна раскладка. На рынке полно таких клавиатур, где русская раскладка нанесена просто поверх и не светится. У Razer например (позор вообще за такие-то деньги).
a-tk
02.12.2023 11:10+7Во времена DOS была такая утилитка как KeyRus. Так вот, когда раскладка переключалась на русскую, по периметру экрана за пределами активной области была рыжая обводка. Вот это был индикатор!
(дед пошёл пить таблетки)
Alexeyslav
02.12.2023 11:10Только это был аппаратный изъян CGA/EGA адаптеров, внешнее поле не входило в диапазон доступных для отображения пикселей и управлялось аппаратно. На других адаптерах такой фишки уже нет и этот финт не прокатывал.
SkywardFire
02.12.2023 11:10я просто напомню общеизвестный, в общем-то, факт. В линуксе сигнализация о включенной русской раскладке светодиодом scroll lock является встроенной стандартной фишкой с 90-х годов.
comandante_teresa
02.12.2023 11:10+1Для меня, как выяснилось, индикация свистоперделками абсолютно бесполезна. Цвет подсветки клавы, приложение, которое меняет цвет панелей ОС и постоянно рисует флаг раскладки рядом с курсором ввода - мозг быстро перестает обращать на это внимание. "Пунтосвичеры" всех мастей все равно ошибаются, чем начинают раздражать. Все проблемы от того, что слепой печати обучился только для русской раскладки, а осваивать латинскую лень.
Тк я пользуюсь только двумя раскладками, самым удобным стал вариант при котором переключения на раскладку делаются индивидуальными сочетаниями клавиш для кириллицы и латиницы. Надёжно, быстро, безошибочно.
ilyakruchinin
02.12.2023 11:10-1"Оторвал взгляд от клавы, посмотрел на экран…" (c)
Дальше читать эту муть не стал.
Автор - при наборе на клавиатуре смотреть надо ИСКЛЮЧИТЕЛЬНО на экран!
Grey83
Можно сделать немного проще:
А исправлять введённый текст можно с помощью утилиты Голомина под названием Snoop (aka Опечатка). Архив с портабельной программой, её исходниками и документацией весит чуть меньше 54кБ.
Все настройки находятся в ini-файле. У меня его содержимое выглядит вот так:
Индикацию раскладки в текстовом курсоре можно сделать утилитой langcursor весом менее 4кБ. Правда умеет показывать только английскую и русскую раскладки.
Вот тут её презентовали когда-то: https://habr.com/ru/articles/138940/
Недавно предлагали замену обоим упомянутым выше утилитам: https://habr.com/ru/articles/735792/
HardWrMan
Кто-то переизобрёл пунто свитчер? Я его ещё в 2003м видел. Но лично мне эти автопереключалки не нравятся, индикация полезнее и безопаснее (в плане считывания кнопок и складывания этого в память или, не дай Б-г, на диск).
Wesha
Интересно, и почему отдельные граждане Бога за идиота считают? Типа если сказать "Бог", то Он увидит и обидится — а если одну букву вычеркнуть, то мало того, что от такого уродования своего имени не обидится (я б на его месте обиделся!), так ещё и "да не, это он не не про меня!" (хотя, если верить мануалу, он Ваши мысли читает и прекрасно в курсе, про кого это Вы).
Grey83
например https://neolurk.org/wiki/Б-г