Pull to refresh

Comments 141

Можно сделать немного проще:

А исправлять введённый текст можно с помощью утилиты Голомина под названием Snoop (aka Опечатка). Архив с портабельной программой, её исходниками и документацией весит чуть меньше 54кБ.

Все настройки находятся в ini-файле. У меня его содержимое выглядит вот так:

[Layout]
;CAPS<>normal
Table1=ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁQWERTYUIOPASDFGHJKLZXCVBNMйцукенгшщзхъфывапролджэячсмитьбюёqwertyuiopasdfghjklzxcvbnm
Table2=йцукенгшщзхъфывапролджэячсмитьбюёqwertyuiopasdfghjklzxcvbnmЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁQWERTYUIOPASDFGHJKLZXCVBNM
Key=  //Pause
HotKey=19 //Pause

[Layout]
;rus<>eng
Table1=QWERTYUIOP{}ASDFGHJKL:"|ZXCVBNM<>?qwertyuiop[]asdfghjkl;'\zxcvbnm,./`~!@#$%^&ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭ/ЯЧСМИТЬБЮ,йцукенгшщзхъфывапролджэ\ячсмитьбю.ёЁ!"ї;%:?
Table2=ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭ/ЯЧСМИТЬБЮ,йцукенгшщзхъфывапролджэ\ячсмитьбю.ёЁ!"ї;%:?QWERTYUIOP{}ASDFGHJKL:"|ZXCVBNM<>?qwertyuiop[]asdfghjkl;'\zxcvbnm,./`~!@#$%^&
Key=‘ //ScrollLock
HotKey=145 //ScrollLock
Switch=1 //Автопереключение клавиатуры

Индикацию раскладки в текстовом курсоре можно сделать утилитой langcursor весом менее 4кБ. Правда умеет показывать только английскую и русскую раскладки.
Вот тут её презентовали когда-то: https://habr.com/ru/articles/138940/

Недавно предлагали замену обоим упомянутым выше утилитам: https://habr.com/ru/articles/735792/

Кто-то переизобрёл пунто свитчер? Я его ещё в 2003м видел. Но лично мне эти автопереключалки не нравятся, индикация полезнее и безопаснее (в плане считывания кнопок и складывания этого в память или, не дай Б-г, на диск).

не дай Б-г

Интересно, и почему отдельные граждане Бога за идиота считают? Типа если сказать "Бог", то Он увидит и обидится — а если одну букву вычеркнуть, то мало того, что от такого уродования своего имени не обидится (я б на его месте обиделся!), так ещё и "да не, это он не не про меня!" (хотя, если верить мануалу, он Ваши мысли читает и прекрасно в курсе, про кого это Вы).

А можно освоить десятипальцевую слепую печать и смотреть на монитор, когда печатаешь, а не на клавиатуру...

Время на освоение однозначно экономит годы активной жизни.

для меня этот способ не работает, я за клавиатурой с 1987 года и могу печатать только смотря на клавиши, до 2005 года учился раз в год примерно, менял кучу программ, в том числе недавно и онлайн какие несколько пробовал, проблема ровно одна - я печатаю под диктовку самому себе, а диктуя я медленно, когда смотрю на экран, то забываю печатать, отвлекаюсь на что-то еще на экране, перестаю диктовать и всё, приплыли. Так что все люди разные.

ну и чтобы экономить коды нужно эти же годы тратить на набор текста, а я не так и много печатаю чтобы аж годы, в день и 10 минут нет. Я дольше на остановке транспорт жду и пешком хожу.

Купил клаву без гравировки, полностью чистую. За 2 дня научился печатать вслепую )))

еще я не умею плавать, сколько не учили и сам не учился, у меня странная плавучесть, жена на спину ложится когда на воде то половина тела над водой, она так любит отдыхать когда плавает, а я когда ложусь на спину, то я погружаюсь весь на 10 см примерно и могу так полежать секунд 30, я потом дышать что-то хочется, но и даже тут проблема, ноги тонут, тело стремится занять вертикальное положение и тонет еще быстрее. А еще я не умею играть на музыкальных инструментах вообще, меня тоже пытались учить на гитаре например.

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

PS: у нас в серверной как-то поставили KVM с клавой QWERTY но без русских букв ))) я тоже печатал на русском, ну чуть медленнее и немного с ошибками, но печатал. Слепой ввод тут ни при чем.

Я тоже до 49 лет тонул ровно так же, как и Вы, пока не пришел в бассейн учиться плаванию с тренером.

У женщин плавучесть лучше, но это точно не основное в плавании:)

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

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

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

ЗдОрово! Я в детстве вообще не знал что такое компьютер. Тогда и слово то это только входило в оборот. Постоянно с клавиатурой пришлось взаимодействовать только с 2000 года, когда мне было уже 26 лет. Но чаще, всё же, рисовал мышкой печатные платы.

ну кто-то между небоскрёбами на тросе может перейти.

Тут такое дело, - я при "слепой" печати и на монитор то не смотрю, а в правый нижний угол моника так тем более. И нарываюсь на те же грабли, только из-за скорости больше перенабирать приходится. Работаю на ноуте.

Если на ноуте работаете, то сбоку в USB разъём можно воткнуть данную штуку с достаточно яркими светодиодами. Думаю угловым зрением будет видно. А вообще, лучше всего видно свечение светодиодов, когда светодиоды впереди клавиатуры, а не сбоку.

А если раскладок больше двух?

Ага, при поточном наборе текста помогает. А вот при редактировании — нихрена подобного. Особенно, когда нужно поменять прописную «с» на заглавную «С» (какая сволочь вообще придумала клавиатуру, на которой «Си» и «Эс» на одной кнопке!?).

Согласен с Вами! Тоже часто нарываюсь на этот трабл с клавишей Си.

ну да, и за 20 лет то можно было научиться смотреть не на клавиатуру, а на то что пишешь, тем не менее интересная поделка

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

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

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

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

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

Да, прикольная идея! Мне нравится!

Сейчас много ребят с 3D-принтерами продают услуги печати. Можешь по приколу разработать такой набор клавиш для своей клавы и заказать у кого-нибудь печать, залить плотной краской из балончика, залить эпоксидкой отверстия в форме букв, а сверху залить тонким слоем лака, разобрать клаву и приклеть вокруг каждого ряда клавиш два набора светодиодных линеек нужного цвета.

А что касается электронной части - тут наверное проще всего будет запитаться от самой клавы, а в качестве сигнала взять состояние scroll lock (сам его диодик можно отрезать от питания, чтобы не горел), который все равно не несет никакой функции, и которым можно управлять программно, для чего уже есть готовый софт в windows, а в linix это вообще из коробки работает.

Не знаю, не имел опыта работать с клавиатурой с подсветкой. Но видел у других, что это обычно белое свечение. А у меня красное или зелёное или ещё какое можно поставить, но не обязательно белое. А во вторых, я заметил, что лучше всего видно свечение впереди клавиш. То есть чуть выше клавиш F5, F6. А вот переключение цвета подсветки всех клавиш в зависимости от текущего языка раскладки, думаю, - хорошая идея!

Я зелёную предпочитаю, хотя моя позволяет выбрать из 7 цветов (любимая китайцами синяя - это вообще вне добра и зла).

Да ради бога, любой цвет подойдёт для этой функции) Кому как нравится.

дело в том что от цвета подсветки и читабельность меняется (особенно на свету).
Зелёный и жёлтый - самые заметные глазу цвета при одинаковой яркости свечения.

У меня в реальности на клавиатуре стоят красный и оранжевый, а не красный и зелёный. Потому что по току они почти одинаковые и я установил только один ограничивающий ток резистор на общем аноде. И остался недоволен: цвета сильно похожи на свету. А вот красный и зелёный принципиально отличаются и да, их хорошо видно.

Моя MSI DS4100 позволяет включить следующие цвета подсветки: красный, зелёный, синий, жёлтый, голубой, фиолетовый и белый. 3 года уже в эксплуатации, некоторые клавиши пообтёрлись и символы на них недостаточно чётко читаются (T, Y J, C, B и N, хз почему именно эти)
Белый мне как-то не очень (бледноват, что ли).

До неё использовал Defender Oscar SM-660L. Там была богомерзкая синяя подсветка (да и у почти всех, которые юзал до неё), это мне надоело и я купил светодиоды (красные и зелёные, но остановился на зелёных; ещё в запасе всего штук 30, емнип, осталось) для замены подсветки и перепаял (правда корпуса пришлось немного доработать напильником, т.к. родные чуть меньше по габаритам были). Стало гораздо лучше пользоваться. Правда потом пробел развалился и я купил новую. Выбирал с точно такими же клавишами и наличием подсветки (были ещё почти точно такие же варианты, но MSI мне больше понравилась по обзорам).

Defender до и после замены подсветки

Хорошая подсветка! Есть светодиоды с двумя свечениями внутри такого же размера 3 мм. А клавиатура MSI DS4100 выглядит футуристично и подошла бы для моего решения! Спасибо! Деньги будут, куплю себе такую же клаву и переделаю подсветку под свою утилиту.

Не уверен, что там будет достаточно места для чего либо: толщина у корпуса довольно маленькая.

А у меня раскладка переключается через CapsLock, кстати, там и светодиодик имеется. Прада у меня linux :) Чего всем и рекомендую.

Вы не веган случайно?

Божечки упаси! Люблю отведать разных зверушек, особенно в виде стейков лакомых частей, и запить вискариком под приятную беседу о вечном.

Раскладку по CapsLock можно и в Windows менять. Например, упомянутый Punto Switcher имеет и такую возможность, другие програмки есть для этого. Только все, что я перепробовал, работает недостаточно надежно. Иногда не срабатывает: вместо переключения раскладки включит верхний регистр, и не переключить обратно никак.

А светодиодик на состояние CapsLock далеко не у всех есть, а если есть, то часто его плохо видно.

Autohotkey пробовали? У меня ни разу не глючило переключение по капсу.

А у меня бывало. После чего единственный способ вернуть как было - выключить скрипт.

В Виндоус использую SimpleSwitcher для совместимости с клавиатурой в Linux. Capslock переношу на F24 и ставлю на переключение раскладки, тогда нет глюков. Также он флаг добавляет, и можно набранное исправлять.

Что такое F24 и зачем вам вообще Caps Lock?

В инетах пишут, что комбинации Shift+F1 - Shift+F12 преобразовываются в F13 - F24, соответственно.

Так как пользуюсь и Линуксом и Виндой, хочу чтобы переключение раскладки было на одной кнопке, тут и получается засада. Если ставить на Линуксе shift+ctrl, то так как у него клавиши регистрируются только на нажатие, все комбинации с shift+ctrl не работают, например в броузере shift+ctrl+p не работает. В итоге в Линуксе ставлю capslock.

В Винде нет такой комбинации, поэтому пользуюсь той программой. А чтобы не реагировали некоторые программы (всё равно есть глюки) переношу родной Caps на F24.

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

Не юзал эту программу. Может быть по-юзаю. Спасибо за информацию! Если появится потребность, думаю, легко смогу перенести свой код на C# на другую платформу. C# кросс-платформенный язык программирования.

Уточню, что светодиодик можно включать/выключать независимо от клавиш переключения раскладки.

Верно. Моё устройство индикации раскладки не зависит от способов (клавиш) переключения, хоть мышкой переключай.

Я про встроенные в клавиатуру.

На моей клавиатуре родные светодиоды самой этой клавиатуры очень тусклые. Не знаю, зачем тогда они вообще, если их плохо видно. Их присутствие - простая формальность, да и всё тут.

Ну так проще было бы к светодиодику капса подпаять транзистор и другой сверхяркий лазерный светодиод, поярче, а не костылить второй usb-интерфейс.

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

В linux к клавиатуре относятся более чем серьезно. На других ОС не встречал такого богатого набора настроек. Можно настраивать вид индикатора в трее, набор языков, хоткеи для перебора/переключения, лампочки на клавиатуре, область сохранения языка (окно/приложение/экран/система), и еще десятки параметров, которые кому-то наверняка нужны. Вот например только одна из вкладок настроек kde, и это только треть от всего списка настроек что тут есть:

И это по сути просто обертка к текстовому конфигу: все тоже самое можно и вручную прописать в конфиги по документации из сети. Т.е. тут на уровне самой ОС такой подход

Я иногда на переключение раскладки ставлю на СкролЛок, но на ноутбуке этой клавиши у меня нет, а КапсЛоком я пользуюсь по назначению. На своем ноутбуке также частенько переназначаю прокрутку страниц вверх/вниз или Хоме и Энд на правые Алт и Контрол (т.к. ими обычно почти пользуюсь). Клавиши прописываю в системном реестре Виндовс при помощи любой из клавиатурных утилит (не использую горячих клавиш).

У Punto Switcher можно выключить автопереключение и изменять по хоткею набираемое слово. Получается даже быстрее, чем если сначала переключать раскладку.

спасибо, ушло в закладки, а кодом не поделитесь? я как раз думал насчет аппаратной индикации, но для другого, и все думал как можно её к усб присобачить. Могу 500 руб заплатить за реализацию и схему железки :)

Поделюсь! От денег не отказываюсь. Пишите, куда отправить архив исходника.

Есть же замечательная программа Punto Switcher!

Среди прочего она замечательна тем, что часто наглухо валит некоторые версии MS офиса при исправлении раскладки.

Круто! Вот честно не помню какие конкретно подобные "суровые" причины заставили убрать эту прогу с компа. Вполне возможно, что эта. Давно это было. Да, кажись, правда.

Ну есть же уже готовый ненужный совершенно индикатор Scroll Lock. В линуксах многих по дефолту индицирует раскладку, в виндовс 100% тоже можно что-то найти.

И по этой же причине его уже почти не ставят. На ноутбуках и даже на моей основной клавиатуре индикатора scroll lock нет ¯\\_(ツ)_/¯

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

Однако, я с самого начала использования линукса (годы 2007-2008) использовал именно этот индикатор на клаве для отображения раскладки. Но не только - отображение флага на экране тоже включал, и это лучше чем разглядывать RU или EN там показывает - краем глаза уже заметно. А на ноутбуках проще - экран прямо рядом с клавой, и нет никакого смысла в индикаторе на клаве, ведь на 5-7 см выше уже видно индикацию на экране. На компе клава может быть заметно далеко от экрана, да и экран может быть довольно большой.

У меня три "родных" зелёных светодиода моей клавиатуры, в том числе и CAPS LOCK настолько тусклые, что слева я их уже не вижу. По моему, они на клавиатуре чисто формально стоят.

А если просто выделить текст и сменить раскладку руками? Без автомата. Таких программ полно.

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

Можно, но прелесть пунто именно в автоисправлении. Если оно не надо, то есть куча других программ, более простых в использовании (и не стучащих товарищу майору).

А если в системе будет больше чем один ch340 ? И куча компортов. Тут станок, тут программатор, тут ESP, эта утилитка с ума не сойдет часом?

Как я уже написал в статье, "мой" COM-порт ищется по замыканию TX на RX. А именно: программа открывает очередной (по списку, взятому из зарегистрированных в системе COM-портов) COM-порт и шлёт ему байт ":" на скорости 115200 бод. И тут же, в течение 100мс ждёт от COM-порта ответ в виде того же байта. Далее, моя утилита работает с тем COM-портом, который нашла. И номер порта не меняется. Поиск происходит один раз при загрузке системы. Предполагается, что устройство индикации и программа встроены в систему до включения ПК. Если же устройство индикации "отвалилось" от разъёма USB, тогда, да, начнётся новый поиск. Не думаю, что какое-то внешнее устройство отреагирует на один байт тем же байтом. Потому что смысл коммуникации с условным станком заключается в передаче данных, и чаще всего передаётся пачка байт с проверками стартового байта и контрольной суммы передаваемых данных. Кроме того моя скорость передачи данных программой 115200 бод довольно таки высока, чтобы принимающий байт условный станок мог его определить как полезную посылку, ведь большинство устройств (и, тем более, удалённых от ПК устройств), для пущей надёжности линии RS232, имеют скорость ниже, чем 115200 бод. А в стандарте RS485 нужен стробирующий сигнал на разрешение передачи. У меня же при поиске COM-порта отправляется только байт, без стробирующего DTR или RTS. В общем, я считаю такой сценарий практически маловероятным. Но теоретически всё возможно, конечно. Схемку я целенаправленно упростил до максимума, для простоты повторения большинством пользователей. У многих нет станков дома и кучи действующих COM-портов. Но, при желании, всё возможно усложнить, конечно, поставив микроконтроллер в устройстве индикации раскладки.

Справедливости ради, 115200 - как раз таки очень распространённая скорость, а вот какие-нибудь 1.5-2мбод (CH340 такое поддерживает) были бы действительно нетипичны (как и противоположная крайность - 50бод).

Спасибо Вам за ценное и справедливое замечание! Исправил в программе на частоту 921600 бод. Не более, потому что по даташиту на CP2102 увидел, что выше не поддерживает. У FT232R всё нормально. Ссылку на программу обновил.

От Ft уходите, там такая куча косяков (иногда заложенная производителем) что от них много производителей оем ушло. Давний скандал с драйвером, года 12 ничему не научил? Cp или CH китайское. Ну или от maxim если прям понты-понты)

Да вроде косяки у китайских подделок. А я брал оригинал, когда они только появились. И FTDI вообще тогда была мейнстримом в сопряжении ПК с внешними железками.

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

Получается из клавиатуры теперь торчит 2 USB кабеля?)

Возможно можно подпаять внутри клавы к шнурку параллельно самой клаве.

Нет, нельзя так делать. Это USB протокол.

А раздербанить какой-нить копеешный хаб и встроить его (предварительно выпаяв ненужные гнёзда портов)? Шнур приходящий в клаву припаять на вход хаба, а клаву и приблуду припаять к выходам хаба.
Клаве и приблуде же скорости большие для работы не требуются, так что пойдёт плата от почти любого.

Да. Именно так и можно смастерить, если по габаритам всё укладывается.

С габаритами проблем не будет. Дешёвый USB 2.0 хаб обычно представляет собой одну микросхему, часто это FE1.1s. Размером она примерно как CH340. Обвязки там минимум: кварц на 12 МГц, несколько резисторов и конденсаторов. В простейшем случае можно купить дешёвый USB-хаб, выпаять разъёмы и обкусать плату до минимального размера. А порты припаять прямо к ногам.

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

Вряд ли. Везде контроллер клавиатуры - просто чёрная капля без возможности перепрошить. Всё делается максимально дёшево.

Проще говоря, да. Но можно засунуть внутрь клавиатуры USB-HUB. Благо, малогабаритных дешёвых хабов много в продаже. Или сделать отдельное устройство с кабелем или воткнуть его во внешний usb-hub и разместить рядом с клавиатурой. Я же прикрутил снизу клавиатуры самодельную платку. На платке usb-hub на микросхеме FE1.1, а экранчик подсказывает когда работать (30 минут), а когда отдыхать (10 минут), и так в цикле. И укоротил кабели клавиатуры и мышки. А плата соединяется с ПК кабелем с type-c.

Давно мечтал о таком.

Только лучше не одну лампочку, а 2 сверху, 2 снизу и по одной справа и слева

Да, можно и так. Только, чтобы наверняка "уложиться" по току, лучше на выходе микросхемы поставить полевые транзисторы, например, 2N7002 или KSP2222.

Резистор на 56 ом лучше поставить с мощностью рассеивания 0,25 Вт.

В чем преимущество управления током нагрузки через её закорачивание ключом?

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

Сигналы RTS и DTR инверсные. Активный уровень у них - ноль. То есть при единичке (в обычном состоянии) на выходе CH340 светодиоды гореть не должны.

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

Кому как. Я выключаю свой ПК, если на нём не работаю в данный момент. Не люблю с детства держать что-то включённым. Не из-за экономии электроэнергии, а для "состояния покоя в душе". Видите-ли: вентилятор крутится, 220 вольт подводится.. А вдруг вода через решётку нечаянно попадёт... Бывает и ураган, и пожар, если ПК на работе включённым оставить. Да, может это моё субъективное, но мне так спокойнее.

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

Вообще никогда не выключаю стационарное. Так спокойнее. Да и ему обычно и без меня всегда находится что делать.

тоже привык к punto switcher'у, но на корпоративном ноуте нельзя всякие экзешники ставить, поэтому написал плагин для Intellij IDEA, теперь хотя бы при написании кода не страдаю

Что делает плагин?

два элементарных действия по хоткеям

  1. конвертирует в альтернативную раскладку последнее введенное слово (текст, что слева от курсора)

  2. конвертирует в альтернативную раскладку выделенный фрагмент текста

попутно, если конвертация случилась, то переключает раскладку клавиатуры..

априори, предполагается, что есть только ru, en языки

При таком способе определения языка, будет работать не везде. Например, это не работает в меню пуск, терминале, приложениях из виндовс стор.

Самое надёжное — определять язык через системный индикатор в систрее, он поддерживает iAccessible.

Уже много лет пользуюсь единой раскладкой https://habr.com/ru/articles/301882/

При таком подходе, если не смотрите на экран при наборе, язык можно определять по индикатору capslock.

Меня много лет не устраивали индикаторы раскладки, поэтому написал свой, под виндовс.
https://khsoft.ru/li/

А не лучше ли сделать чтобы сами буквы клавиш светились русские когда рус, латинские когда eng. А то куча бесполезной подсветки порой наделают, а подсветить буквы ума не хватает ни у кого,

Вроде клавиатура от Артемия Лебедева так могла

Так как там были экраны в каждой клавише, она могла рисовать только буквы нужной раскладки, как экранная клавиатура смартфона - не перепутаешь. Но по сложности девайса это, конечно, хардкор. И мейнстримом такому подходу пока стать не суждено.

Довольно сложно. Надо на каждую клавишу ставить по два светодиода и кейкап ещё устраивать так, чтобы символы правильно засвечивались. Более простой вариант тут уже предлагался. Когда подсвечивается только одна раскладка. На рынке полно таких клавиатур, где русская раскладка нанесена просто поверх и не светится. У Razer например (позор вообще за такие-то деньги).

Во времена DOS была такая утилитка как KeyRus. Так вот, когда раскладка переключалась на русскую, по периметру экрана за пределами активной области была рыжая обводка. Вот это был индикатор!

(дед пошёл пить таблетки)

Светящаяся обводка по периметру клавиатуры - красивое решение!

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

По периметру экрана/окна/поля ввода!

да, прикольная штука была

Только это был аппаратный изъян CGA/EGA адаптеров, внешнее поле не входило в диапазон доступных для отображения пикселей и управлялось аппаратно. На других адаптерах такой фишки уже нет и этот финт не прокатывал.

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

я просто напомню общеизвестный, в общем-то, факт. В линуксе сигнализация о включенной русской раскладке светодиодом scroll lock является встроенной стандартной фишкой с 90-х годов.

Для меня, как выяснилось, индикация свистоперделками абсолютно бесполезна. Цвет подсветки клавы, приложение, которое меняет цвет панелей ОС и постоянно рисует флаг раскладки рядом с курсором ввода - мозг быстро перестает обращать на это внимание. "Пунтосвичеры" всех мастей все равно ошибаются, чем начинают раздражать. Все проблемы от того, что слепой печати обучился только для русской раскладки, а осваивать латинскую лень.

Тк я пользуюсь только двумя раскладками, самым удобным стал вариант при котором переключения на раскладку делаются индивидуальными сочетаниями клавиш для кириллицы и латиницы. Надёжно, быстро, безошибочно.

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

Дело привычки. Я всегда переключал ктрл+шифт, т.к. одной рукой максимально удобно. Понадобилось - вполне адаптировался к альт+шифт, хоть и не музыкант. Мешанина левый правый шифт лично мне не зашла. Сделать встроенными средствами венды переключение или привязку только к одной клавише, насколько я знаю, низзя. А как показала практика, такие вещи надо делать именно стандартными инструментами, у остального все время всплывают какие-то проблемы.

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

Могу с уверенностью сказать, что билингвальную раскладку (https://habr.com/ru/post/301882/)
можно считать стандартным инструментом для переключения раскладки одной клавишей.

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

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

"Оторвал взгляд от клавы, посмотрел на экран…" (c)

Дальше читать эту муть не стал.
Автор - при наборе на клавиатуре смотреть надо ИСКЛЮЧИТЕЛЬНО на экран!

Вообще надо смотреть только на экран, клавиатура - пережиток прошлого. Нейроинтерфейс - вот будущее.

За нейроинтерфейсом будущее, согласен! И моя приблуда приблизит это будущее. "Из количества - в качество" - диалектика.

И обязательно тыкать в него пальцами!

Конечно, не обязательно!))))

UFO just landed and posted this here

Нет, нельзя. Там не ТТЛ уровни, а сразу кабелем на внешний разъём идут. Ставьте тогда что-то вроде MAX232 или его аналоги.

Обычного транзистора не хватит? те же 2N7002 или bc547 с парой резисторов. А то сразу МАХ ставить.... скорость ведь там не нужно обеспечить.

Схем полно в интернете. Пробуйте.

А может быть и можно. Я просто забыл уже какие там уровни, у оригинального протокола RS232. Вроде бы от -9 до -15 Вольт - это уровень единицы, а +9.. +15 В - уровень нуля.

современные чипсеты воспринимают TTL-уровни, на ноутах бывает нестандартные уровни - +-3.3В поэтому ради совместимости этого нестандарта, реализуют такую совместимость.

Проще тестером проверить

Светодиоду нужен не уровень а ток. Сможет ли выдать необходимый ток драйвер на матери - вопрос открытый. А так если пошукать там и LPC есть, который на профильных форумах уже превращают в полноценный ISA для подключения соответствующих винтажных карт. Да и вообще, у некоторых особенно "понтовых" матерей есть выход управления RGB подсветкой, почему нет то?

UFO just landed and posted this here

Простите за некрокомменты)

А вот подскажите, вдруг кто знает, есть ли вариант сделать настоящую "самоидентификацию" клавиатуры, конкретно в том смысле, чтобы физически разные клавиатуры (например, встроенная ноутбучная и проводная USB) имели в системе разные раскладки?
Хорошо под виндовс, но если такое в линуксе можно обустроить, тоже очень интересно!

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

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

А на том же али заказать наклейки на клаву (если нигде нет услуг гравировки кейкапов)?
Да и клаву/кейкапы там же можно заказать, кмк.

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

Кстати, у вас есть опыт замены клавиатуры в ноутбуке произведённом для другой страны? Я однажды обращался в сервис (залил ноут кофе), это был рабочий Lenovo бизнес-серии, они заказали по part number, пришла клава - у неё все шлейфы просто геометрически в других местах находятся, а их у Thinkpad-а прилично - трекпойнт, мышекнопки. Сервисмены офигевали, как такое вообще возможно. Нашли нужную потом, где-то у конкурентов в Туле перекупили.

User Story. Предположим, я купил русскую клаву, подключил её к ноуту купленному в Португалии. Вот я печатаю на ноуте - система использует португальскую раскладку, пришёл на работу, подоткнул USB-клавиатуру, печатаю на ней - система использует на мой выбор английскую США и английскую международную (c Dead Keys). В обоих случаях позволяет переключить на русский язык. Логично было бы такое поведение? Имхо да. Позволит винда такое организовать? Я не встречал. Линукс? (на Маке вообще не представляю, как это работает, даже не знаю, как погуглить). Вот это бы я назвал "самоидентифицирующейся" клавиатурой.

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

https://kbdlayout.info/kbdpo - как-то так это выглядит, зацените короткий левый shift и покусанный Enter (а нужно было куда-то вместить пару лишних кнопок). Первый челленж здесь, как правило, "как, черт возьми, набрать "собаку" в емейле"

Насколько я помню, как там все организовано, системе абсолютно все равно, на какой клавиатуре (мыши, трекболе, тачпаде...) вы что-то нажимаете. Драйвер просто порождает стандартное событие (присылает некоторый стандартный код клавиши), на которое система реагирует, преобразуя его в зависимости от текущей раскладки. Какое устройство породило событие нажатия/отпускания кнопки, система если и знает (что само по себе не факт), то игнорирует.

Впрочем, в линуксе (и в виндовс, наверное, тоже) можно достаточно легко сделать автоматическую перенастройку раскладок клавиатуры по факту подключения/отключения клавиатуры с нужными идентификаторами производителя и устройства. Но и в этом случае сработает просто сам факт физического подключения/отключения. Раскладки будут настроены по новому для обеих клавиатур.

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

Не знаю насчёт linux, но в Windows, клавиатурые собятия, приходящие через DirectInput или Raw Input, содержат хендл устройства (т.е. знаем, с какой клавиатуры пришло нажатие) и скан-код + VK-код (virtual key, он не привязан к раскладкам).

Всё. Дальше события WM_KEYDOWN / WM_KEYUP (не знающие про раскладку) транслируются в WM_CHAR (символ с учётом раскладки) уже в юзерспейсе (каждое оконное приложение обязано крутить цикл GetMessage/TranslateMessage/DispatchMessage, чтобы получать сообщения, в том числе клавиатурные. Драйвером вопрос не решится. Каждое приложение транслирует раскладку самостоятельно. Ну, разве что глобально подменить user32.dll с логикой трансляции по умолчанию. Но файл подписан, неподписанный будет моментально восстановлен к старой версии механизмом System File Protection. Может быть, внедрить в каждый процесс DLL, чтобы перехватывать и кастомно обратывать сообщения.

Так и есть. Используется универсальный HID-keyboard драйвер. А для непосредственного отображения символа, такого, как на клавише, нужно и можно создать своё устройство со своим ПО/драйвером. Например, по тому же com-порту передавать код программе в трее, а она уже вставляет в редактор символ в нужной кодировке и на требуемом пользователю языке.

Проблема на шаге "ПО вставляет в редактор".

Можно послать скан-код клавиши A, но вставить "A" или "Ф", программа сама определяет, в соответствии с активной раскладкой.

Наверное, возможным решением будет принимать символы в буфер (не отдавая их системе, как клавиатурые события), переключать системную раскладку в зависимости от того, символ с какой клавиатуры находится в голове очереди, и после переключения отправлять системе или активной программе. Выглядит как-то сомнительно с точки зрения надёжности.

Всё. Дальше события WM_KEYDOWN / WM_KEYUP (не знающие про раскладку) транслируются в WM_CHAR (символ с учётом раскладки) уже в юзерспейсе

Трансляция из кнопок в символы таки как правило выполняется именно системой (пусть даже и в юзерспейсе), ибо раскладки и все такое - таки часть системы. Мало какое приложение заморачивается собственной трансляцией.

Драйвером вопрос не решится.

Драйвер может просто подменить одни коды клавиш другими. А уже в раскладке можно на эти другие коды повесить свои символы. Грубо говоря, на физическое нажатие кнопки 'A' модифицированный драйвер "специальной" клавиатуры (которым придется подменить стандартный именно для "специальной") должен генерировать коды для 'Ctrl+Shift+Alt+A', А там пусть уже система транслирует это дело в 'Ф' (сама или при помощи дополнительного приложения).

Хотя это само по себе знатное извращение.

Не годится, если у меня в IDE Ctrl+Shift+Alt+A забиндено на какое-то важное действие...
Да и куча софта может быть написана так

procedure TGridDlg.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if (ssCtrl in Shift) and (Key = ord('A')) then pnItems.SelectAll;

Пофиг на остальные шифты, лишь бы Ctrl был нажат с 'A'

Спасибо за очень крутой ликбез, правда!

Кажется, сегодняшние практики работы с клавиатурой сложились ещё до ps/2 - устройств, не говоря уже о USB. И некая америкоцентричность тут тоже видится.

Я нашел заметки аж целого мейнтейнера appImage тут: https://medium.com@probonopdd/make-it-simple-linux-desktop-usability-part-3-780f127f5794 , он там напоминает что в дескрипторе USB прямо предусмотрен код языка, чтоб система могла понять, что к ней подключили и самостоятельно предпринять какие-то действия по настройке. Но так как весь софт на это забивает, производители тоже забивают (0x00). Кстати, было бы больно, если бы было реализовано то, как он написал - жёстко ограничивать языки по hardware id.

Так об этом я с самого начала писал. Сломает сочетания клавиш.

UFO just landed and posted this here
Sign up to leave a comment.

Articles