Mahou — волшебный переключатель раскладок / Хабр
BladeMight
Open source *C# *Разработка под Windows *
Из песочницы
Как я создал первую функцию
Все началось с того что я захотел программировать на C# (до создания этой программы у меня было почти что никаких знаний о C#), и была одна программа которая не работала так как я хотел (Punto Switcher) долго-долго я искал к ней альтернативы и ненадолго остановился на dotSwitcher нравилась она мне… Но через некоторое время я решил что ей не хватает функционала и решил посмотреть исходный код, кое-где кое-как я разобрался как все работает, но больше всего не понимал одну вещь — WinAPI, и начал я искать информацию по функциям используемых в dotSwitcher и понемногу я начинал запоминать и понимать смысл всего этого волшебства (так мне тогда казалось).
Писать в уже созданный dotSwitcher мне не хотелось т.
- Сменить раскладку.
- Послать BackSpace [количество пойманных клавиш] раз.
- Ввести [пойманные клавиши].
И она работала!!! Так как я и хотел.
К каждой функции нужен свой способ осуществления, здесь я описал как я создал первую функцию смены раскладки последнего набранного текста.
Касательно названия я назвал программу (на японском, т.к. он мне очень нравится) — 魔法(Mahou) что на Японском значит «Волшебство»,»Магия» — C#, WinAPI и мой мозг (придумывающий способы осуществления функций) — это и есть та волшебство что сокрыто в названии.
Вот так выглядело первое окно Mahou:
Вот так выглядит главное окно теперь:
Работает даже на Windows XP SP3!
Описание
Программа написана на .Net 4.5, а для ее работы нужен .Net 4.0 и выше. Еще она использует WinAPI для работы всех HOOK’ов и других функций. Для сборки нужен всего лишь .Net, то есть Вы можете сами собрать сборку из исходников запустив buildMahou.cmd. Проект Open Source так что любой может изменять и создавать на его основе свои сборки согласно лицензии GPL v2. Подробное описание в репозиторие, описание функций на Wiki. Скачать можно здесь. Еще Mahou есть в Chocolatey, и для установки достаточно набрать команду cinst Mahou -y
.
Возможности:
- Переписать набранный вами текст на другой раскладке.
- Переписать выделенный текст на другой раскладке.
- Инвертирование раскладки выделенного текста.
- Смена раскладки по Caps Lock, L/R Ctrl.
- Возможность переключать текст по всем или только по выбранным раскладкам.
- Подсказка текущей раскладки возле курсора мыши + настройки внешнего вида подсказки.
- Подсказка текущей раскладки возле текстового курсора(каретки) + настройки внешнего вида подсказки для каждой раскладки.
- Авто-обновление.
- Двойные горячие клавиши(2xShift…)
- Портативная, не требует установки.
- Сниппеты, автозамена маленьких слов на предложения.
- Отображения флагов стран в трее.
Помощь:
Если вам нравится программа, и/или Вы хотите меня поддержать (и если Вам не трудно):
- Star on Github
- Like on Alternative. to
- Расскажите друзьям. 🙂
Ссылки:
→ Репозиторий на GitHub
→ Релизы на GitHub
→ Wiki на GitHub
→ Обсудить на GitHub
Теги:
- punto switcher
- переключение раскладки
- c#
- caps lock
- open-source
- GPL v2
- winapi
- .net
Хабы:
- Open source
- C#
- Разработка под Windows
Всего голосов 59: ↑49 и ↓10 +39
Просмотры43K
Комментарии 171
Максим @BladeMight
Программист, Отаку
Сайт Twitter Github Skype Telegram
Комментарии Комментарии 171
смена раскладки – WindowsTips.Ru. Новости и советы
“Как поменять раскладку клавиатуры на Windows 10?” – этим вопросом задаются довольно часто. В данной статье мы попробуем подробно описать и ответить на основные вопросы о том, как поменять язык, раскладке клавиатуры и сочетаниях клавиш.
Как переключить раскладку клавиатуры в Windows 10
В процессе установки или при первом включении устройства с Windows 10 пользователю предоставляется выбор языка клавиатуры. Чаще всего мы выбираем язык, соответствующий устанавливаемой системе — русский. Он становится основным, а английский язык – второстепенным. Чтобы добавить новую языковую раскладку, её нужно добавить в систему.
Для этого выполните следующие шаги:
- Открываем Параметры Windows.
- Переходим в меню Время и Язык.
- Щелкаем на Добавьте язык.
- Выбираем нужный пакет и устанавливаем его.
Выбрать раскладку клавиатуры
В системе для смены языка по-умолчанию используется сочетание клавиш Shift+Alt. Также можно в Windows 10 сменить комбинацию клавиш для смены раскладки клавиатуры на Сtrl + Shift. Для этого откройте Параметры и выполните следующие действия:
- Откроете параметры Устройства и выберите вкладку Ввод
- Выбираем Дополнительные параметры клавиатуры
- Затем переходим в Параметры языковой панели
- Далее открывается привычное всем нам окно Языки и службы текстового ввода, где уже можно изменить сочетания клавиш.
Раньше изменение сочетания клавиш можно было выполнить в Панели управления, но, как мы все знаем, Майкрософт взяла курс на перенос всего из Панели управления в Параметры Windows и успешно реализовала часть своего плана в сборке 1803. С одной стороны, многим такие изменения не очень нравятся, так как старый интерфейс был удобный, логичный и легко запоминался. С другой же стороны, разработчики системы не только переносят, но добавляют и перерабатывают ранее созданные опции для развития системы.
Примечание! Независимо от Вашего выбора, есть альтернативное сочетание клавиш, которое всегда доступно – Win+Пробел. Когда вы зажмете клавишу Win и нажмете Пробел, появится небольшая панель, где можно увидеть переключение языков.
Настроить автоматическое переключение раскладки клавиатуры Windows 10
Часто мы вводим текст, а после смотрим на монитор и замечаем, что забыли переключить раскладку. Приходится печатать все заново. Можно настроить автоматическое переключение для каждого окна.
Например, в Google Chrome вы пишете письмо на английском языке и параллельно заполняете таблицу в Excel на русском. В том, чтобы при переключении между окнами менялся и язык – поможет следующая настройка.
Для этого в предыдущем окне нам нужно всего лишь установить галочку на пункте Позволить выбирать метод ввода автоматически.
Также, если Вы хотите, чтобы язык изменялся интеллектуально, в зависимости от набираемого текста, Вам поможет замечательное приложение – Punto Switcher. Больше никаких «ghbdtn»! Приложение автоматически исправит сообщение и поменяет язык на необходимый. Очень удобно, если в тексте есть вкрапления иностранного языка.
Скачать Punto Switcher с официального сайта бесплатно.
И всегда есть альтернатива в виде приложений — Keyboard Ninja и Orfo Switcher.
Пропал значок раскладки клавиатуры в Windows 10
- Отройте Параметры
- Пройдите в Персонализацию и откройте вкладку Панель задач
- Нажмите на Включение и выключение системных значков
- Включите Индикатор ввода
Не меняется раскладка клавиатуры Windows 10
Есть несколько причин, из-за которых невозможно поменять раскладку:
- Стоит обратить внимание на Залипание клавиш. Отключение этой опции помогает решить проблему.
- Убедитесь, что утилиты или стороннее ПО не мешает работе. Выполните чистую загрузку системы
- Проверьте, не мешает ли системе «Служба сенсорной клавиатуры и панели рукописного ввода». Попробуйте остановить службу. Для этого откройте командную строку или окно PowerShell от имени администратора и введите следующую команду — net stop TabletInputService
Пропала раскладка клавиатуры в Windows 10
При повреждении системы некоторые опции исчезают или отказываются корректно работать. За языковую панель в системе отвечает приложение ctfmon.exe, которое находится в директории Windows/System32. Иногда, из-за повреждений системы, данное приложение может быть утрачено или перестанет запускаться вместе с системой. Для возможного решения данной проблемы выполните следующие действия:
- Исправление или восстановления целостности системы. Как восстановить систему можно узнать в данной статье.
- Иногда, когда простое восстановление (SFC /scannow или DISM) не помогает, можно попробовать создать новый профиль, в котором, возможно всё будет работать корректно.
- Как еще один вариант, автозапуск ctfmon.exe.
Для добавления службы ctfmon в список автозагрузки откройте окно командной строки или PowerShell от имени администратора и введите команду:
reg add «HKCU\Software\Microsoft\Windows\CurrentVersion\Run» /v CTFMON.EXE /t REG_SZ /d C:\WINDOWS\system32\ctfmon.exe
После чего перезагрузите компьютер и проверьте работу системы.
Раскладки с автоматическим переключением
Здесь мы рассмотрим несколько интересных раскладок с автоматическим переключением. Они обеспечивают длительные пробеги поездов без вмешательства человека. Поезд переключает точки по мере прохождения макета. Это не функции, поезд находится в замкнутом контуре и зацикливается навсегда. Подпружиненные точки не используются. Каждая трасса имеет APV — все точки посещены.
Дальнейшее обсуждение возможно на страницах форума Eurobricks.
Два Lazy Points
Есть только одна интересная схема (как показано на странице Points). Поезд проходит весь путь, и весь путь проходится в обоих направлениях.
Нажмите макет, чтобы приостановить/запустить поезд | Точки щелчка для переключения 0/1 | Нажмите начальный круг, чтобы сбросить поезд/пункты |
Две ленивые точки циклически повторяют последовательность ода Грея: 00, 01, 11, 10.
Auto Run Length
Это мера сложности (или интереса) макета. Для возвращения всех точек и поезда в исходное положение поезд проходит всего 8 участков пути (или 8 точек).
Мы говорим, что эта раскладка имеет длину автозапуска 8 шагов, с 4 точками, переключаемыми поездом. Это записывается как 8/4.
Любой макет с двумя точками всегда имеет 3 участка пути. Поэтому некоторые треки используются более одного раза. Действительно, центральная дорожка пройдена 4 раза, а каждая петля — дважды.
Пара связанных точекМы можем согнуть макет и соединить две ленивые точки, как показано. Центральная дорожка проходится дважды, поскольку каждый цикл проходится один раз. Цепь имеет длину автопрогона 4 с 2 точками, переключаемыми поездом, поэтому 4/2. |
Соединение последовательно
Мы можем последовательно соединять цепи друг за другом, соединяя центральную дорожку с петлей из следующей цепи. Это дает передаточное отношение 2: 1, поскольку центральная дорожка проходится дважды, а каждая петля проходится один раз. Три соединенные цепи выглядят так:
Нажмите макет, чтобы приостановить/запустить поезд | Точки щелчка для переключения 0/1 | Нажмите начальный круг, чтобы сбросить поезд/пункты |
Это дает автопробег длиной 28 шагов с 8 наборами точек, переключаемых поездом.
Точки D и B пассивны. Последовательность автоматического запуска 28/8: Записи, выделенные жирным шрифтом, указывают на то, что поезд переключает точку. |
|
Обозначив их как x1, x2, x4 как обычно, мы увидим, что схема не ведет себя как счетчик. Вместо этого схема генерирует циклический код Грея по всем 8 возможным позициям.
Вот альтернативный макет для пары связанных точек. Опять же, центральная дорожка проходится дважды, поскольку каждый цикл проходится один раз. Он производит ту же длину автоматического пробега, равную 4, с 2 точками, переключаемыми поездом, поэтому 4/2. |
При последовательном соединении 3 цепей получается следующая схема:
Нажмите макет, чтобы приостановить/запустить поезд | Точки щелчка для переключения 0/1 | Нажмите стартовый кружок, чтобы сбросить поезд/точки |
Это также дает длину автоматического прогона в 28 шагов, но с 14 наборами точек (вместо 8), переключаемых поездом. Точки Е и С пассивны. The auto run sequence of 28/14 is:
Таблица шагов, выделенных жирным шрифтом, более четко показывает 14 циклических шагов. Десятичные значения 1 и 5 повторяются дважды, а значения 3 и 7 — трижды. Используя вторую начальную точку, отправляет поезд «в другую сторону», производя ту же последовательность переключений в обратном направлении. |
|
Длина автопрогона определяется по формуле: 4 (2^c -1), где c — количество цепей (пар связанных ленивых точек), соединенных последовательно.
Две пары связанных точек
Любая из вышеперечисленных цепей может быть сокращена до двух пар связанных точек, что дает длину автоматического хода (из приведенной выше формулы) 12. Также существует несколько альтернативных схем автоматического переключения.
Пол Рэйс описывает максимальный тираж «Автоматизированной схемы переключения», которая была создана для рождественских представлений и витрин магазинов в 1940-х годах. Узнайте больше на Big Indoor Trains™.
Нарисованная от руки схема расположения показывает две пары связанных ленивых точек A-B и C-D. Поезд отправляется в любом направлении на станции справа. Он проходит в общей сложности 10 точек, прежде чем все возвращаются в исходное положение. |
Вот та же схема, перерисованная в виде интерактивного макета.
Нажмите макет, чтобы приостановить/запустить поезд | Точки щелчка для переключения 0/1 | Нажмите начальный круг, чтобы сбросить поезд/пункты |
Последовательность автозапуска = A0 C0 B1 A1 D1 B0 A0 C1 D0 B0.
Как это работает
Получается довольно «обезьянья головоломка» макета. Десять участков пути пройдены до того, как все точки и поезд вернутся в исходное положение. Таким образом, эта схема имеет длину автоматического переключения 10 с переключением 4 точек.
При использовании дорожки Duplo макет выглядит следующим образом:
10 шевронов показывают количество раз и направление прохождения каждой дорожки. См. страницу Duplo для макета Duplo.
Этот макет ниже имеет немного большую длину автопробега, равную 12. Пара точек AB была нарисована отраженной, что делает макет более симметричным.
Нажмите макет, чтобы приостановить/запустить поезд | Точки щелчка для переключения 0/1 | Нажмите начальный круг, чтобы сбросить поезд/пункты |
Последовательность автозапуска = A0 C0 B0 A1 D0 C1 B1 D1 A1 B0 C0 D0 .
Этот макет ниже требует 8 шагов, чтобы вернуться к точкам и тренироваться в исходных исходных положениях. Локомотив начинает двигаться вниз, поэтому все точки могут начинаться с 0 .
Нажмите макет, чтобы приостановить/запустить поезд | Точки щелчка для переключения 0/1 | Нажмите начальный круг, чтобы сбросить поезд/пункты |
Последовательность автозапуска = B0 C1 D1 B1 A1 D0 C0 A0 .
Его можно построить с помощью Duplo, как показано ниже.
Если одна пара точек переключается вручную, поезд эффективно меняет направление и движется по цепи в обратном порядке.
Три пары связанных ленивых точек
Макеты теперь становятся довольно большими для создания в Duplo. Эта схема имеет 3 пары связанных точек. Длина автопробега составляет 24 шага.
Нажмите макет, чтобы приостановить/запустить поезд | Точки щелчка для переключения 0/1 | Нажмите начальный круг, чтобы сбросить поезд/пункты |
Последовательность автозапуска = A0 C0 E0 B1 A1 D0 C1 A0 B0 F0 E1 B1 A1 D1 F1 B0 A0 C1 D0 A1 B1 E1 F0
1.А вот похожая раскладка. * Начните со связанной пары E-F, установленной на 1 . *
Нажмите макет, чтобы приостановить/запустить поезд | Точки щелчка для переключения 0/1 | Нажмите стартовый кружок, чтобы сбросить поезд/точки |
Auto run sequence = A0 C0 F1 B1 A1 D0 C1 A0 B0 E1 F0 B1 A1 D1 E0 B0 A0 C1 D0 A1 B1 F0 E1 B0 .
Замена дорожек между B и E&F позволяет создать более компактную компоновку Duplo, как показано ниже.
Как автоматически изменить раскладку клавиатуры при переходе в обычный режим vim?
спросил
Изменено 5 лет, 8 месяцев назад
Просмотрено 9к раз
Иногда я использую vim для написания текста, отличного от американского, и когда я хочу использовать любую команду в обычном режиме, мне нужно изменить раскладку на американскую. Это можно сделать автоматически?
ПС. Я могу сделать сопоставление таким образом, но в этом случае команда выглядит как :ц вместо :w — некрасиво и есть риск опечатки.
Обновление
Я не хочу использовать раскладку клавиатуры, потому что предпочитаю переключать языки с помощью CapsLock. Я пытался написать autocmd для события InsertLeave, но не удалось…
Обновление 2
Наверное, кто-нибудь знает, почему следующее не работает?
функция SetUsLayout() !setxkbmap нас,ру конечная функция autocmd InsertLeave * вызов SetUsLayout()
- vim
- раскладка клавиатуры
3
:помощь
, скорее всего, предоставит вам всю необходимую информацию.
6
Похоже, такого кроссплатформенного решения не существует… Итак, под KDE я использую следующую функцию:
! SetUsLayout() молчание !qdbus org.kde.keyboard /Layouts setLayout us > /dev/null конечная функция autocmd InsertLeave * вызов SetUsLayout()
Для меня лучше всего использовать qdbus. Я сделал простой, но хрупкий плагин, который мне очень подходит: https://github.com/ironhouzi/bikey-vim/tree/master/plugin 9. 0003
Я называю его хрупким, так как он не обладает особой надежностью, если кто-то еще захочет его использовать.
Мне в основном нужен английский язык, когда я использую Vim, за некоторыми исключениями. Когда я хочу написать на своем родном языке, я нажимаю «лидер»-k, и в строке состояния моей авиакомпании отображается, что я сменил язык. Если язык не английский, сценарий гарантирует, что каждый раз, когда я вхожу в режим вставки, мой родной язык устанавливается через qdbus. Каждый раз, когда я выхожу из режима вставки, язык снова устанавливается на английский. Он также поддерживает индивидуальные настройки между буферами. Несмотря на то, что это может быть не лучший способ сделать что-то, я решил поделиться им, на случай, если кто-то еще сможет использовать его.
В Ubuntu я использую следующую функцию:
! SetUsLayout() молчание !qdbus org.gnome.SettingsDaemon.Keyboard /org/gnome/SettingsDaemon/Keyboard org.gnome.SettingsDaemon.Keyboard.SetInputSource 0 > /dev/null конечная функция autocmd InsertLeave * вызов SetUsLayout()
или короче
молчание !gsettings set org.