Mahou — чарівний перемикач розкладок

Як я створив першу функцію
Все почалося з того що я захотів програмувати на C#(до створення цієї програми у мене було майже ніяких знань про C#), і була одна програма, яка не працювала так, як я хотів (Punto Switcher) довго-довго я шукав до неї альтернативи і ненадовго зупинився на dotSwitcher подобалася вона мені… Але через деякий час я вирішив що їй не вистачає функціоналу і вирішив подивитися вихідний код, подекуди дещо як я розібрався як все працює, але більше всього не розумів одну річ — WinAPI, і почав z шукати інформацію по функціях використовуються в dotSwitcher і потроху я починав запам'ятовувати й розуміти сенс всього цього чарівництва (так мені тоді здавалося).
Писати у вже створений dotSwitcher мені не хотілося т. к. там зовсім інший стиль кодинга, та й до того ж я не розуміла навіщо та чи інша функція або змінна, так що я вирішив створити всі з нуля! Для початку я розібрався з HOOK'ами, потім з функцією PostMessage з допомогою якої я зміг змінювати розкладку, завдяки чому вже у мене з'явилися ідеї з приводу того у можна буде конвертувати набраний текст. я створив список клавіш в який потрапляли все глобально натиснуті клавіші (завдяки клавіатурного HOOK'у) приробив очищення списку клавіш кліки миші (завдяки мишачому HOOK'у) і створив гарячу клавішу з якої змінювалася розкладка, але залишалося питання "Як зробити щоб програма вводила ці клавіші?", тоді я й дізнався про SendInput функції і keybd_event які робили саме це. Після я переробив функцію гарячої клавіші на:
  1. Змінити розкладку.
  2. Надіслати BackSpace [кількість спійманих клавіш] разів.
  3. Ввести [спіймані клавіші].
І вона працювала!!! Так як я і хотів.
До кожної функції потрібен свій спосіб здійснення, тут я описав як я створив першу функцію зміни розкладки останнього набраного тексту.
Щодо назви я назвав програму (на японському, т. к. він мені дуже подобається) — 魔法(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...)
  • Портативна, не вимагає установки.
  • Сніппети, автозаміна маленьких слів в пропозиції.
Допомога:
Якщо вам подобається програма, і/або Ви хочете мене підтримати (і якщо Вам не важко):
Посилання:
Репозиторій на GitHub
Релізи на GitHub
Wiki на GitHub
Обговорити на GitHub
Скриншоты
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.