Как посмотреть раскладку клавиатуры
Как узнать раскладку клавиатуры другого приложения
21.01.2020 | Категория: Образ мышления: Assembler | Автор: ManHunter
Сегодня разберем, как можно узнать раскладку клавиатуры, которая активна в окне того или иного приложения. Также она может называться идентификатор языка ввода. С оконными приложениями все просто. Зная хэндл окна, через GetWindowThreadProcessId получаем идентификатор процесса, которому принадлежит исследуемое окно, а затем с помощью функции GetKeyboardLayout получаем код раскладки клавиатуры, которая активна в этом окне. Для консольных окон немного сложнее, так как они не реагируют на GetKeyboardLayout. Но это можно сделать при помощи недокументированной функции GetConsoleKeyboardLayoutName, которая возвращает код раскладки клавиатуры в виде строки. Просто так работать с консолью нельзя, для этого надо предварительно приаттачиться к процессу консольного окна, а после получения нужных данных отключиться от него.
Code (Assembler) : Убрать нумерациюВыделить код
- ; Получить активное окно
- invoke GetForegroundWindow
- ; Получить идентификатор процесса
- invoke GetWindowThreadProcessId , eax , pID
- movebx , eax
- ; Это консольное окно?
- invoke AttachConsole , [ pID ]
- oreax , eax
- jz . loc_gui
- . loc_console :
- ; Получить раскладку консольного окна
- invoke GetConsoleKeyboardLayoutName , buff
- oreax , eax
- jnz @ f
- ; Не получилось, отключиться от консоли
- invoke FreeConsole
- ; Попробовать получить раскладку как у оконного приложения
- jmp . loc_gui
- @ @ :
- . . .
- ; В buff строка с кодом раскладки типа «00000419»
- . . .
- ; Просто отключиться от консоли
- invoke FreeConsole
- jmp . loc_done
- . loc_gui :
- ; Получить идентификатор раскладки клавиатуры
- invoke GetKeyboardLayout , ebx
- andeax , 0xFFFF
- . . .
- ; В EAX код раскладки
- . . .
- . loc_done :
- . . .
Если все прошло нормально, то у нас будет или числовой код раскладки, или строка с кодом раскладки, из которой этот код можно легко извлечь. Конечно, пользователю правильнее будет показывать не просто набор цифр, а человекопонятные названия раскладки. Соответствие кодов раскладок названиям языков можно посмотреть в MSDN, а можно переложить эту задачу на систему и воспользоваться функцией VerLanguageName или GetKeyboardLayout с флагом LOCALE_SLANGUAGE для получения полного названия языка раскладки или LOCALE_SISO639LANGNAME, если требуется получить краткую запись.
К большому сожалению, трюк с функцией GetConsoleKeyboardLayoutName закончился на Windows 7, на современных системах эта функция не работает, всегда возвращая дефолтный код английской раскладки. И я пока не знаю способа, как это побороть. Система с этим справляется, но делает это на уровне драйвера клавиатуры, а предлагаемое решение работает из usermode.
В приложении пример программы с исходным текстом, которая получает код раскладки для активного консольного или оконного приложения.
Пример программы с исходным текстом (FASM)
Изменение раскладки клавиатуры
В этой статье описано изменение раскладки клавиатур Майкрософт, указанных в разделе «Информация в данной статье применима к».
Клавиатуру можно настроить для другого языка или раскладки, например канадской многоязычной, испанской или раскладки США по Двораку. Вместе с системой Microsoft Windows устанавливается большой набор раскладок клавиатуры.
Как правило, настраивать раскладку клавиатуры в Windows приходится для того, чтобы обеспечить соответствие используемой клавиатуре. При выборе другой раскладки имейте в виду, что символы на клавиатуре могут не совпадать с теми, которые отображаются на экране.
Дополнительная информация
Чтобы настроить клавиатуру для другого языка или раскладки, воспользуйтесь способом, соответствующим версии операционной системы Windows.
Примечание. В описании этих способов в качестве примера используется канадская раскладка клавиатуры для французского языка.
Windows 7 или Windows Vista
- Нажмите кнопку Пуск, в поле Начать поиск введите команду intl.cpl и нажмите клавишу ВВОД.
- На вкладке Клавиатура и языки нажмите кнопку Изменить клавиатуру.
- Нажмите кнопку Добавить.
- Разверните нужный язык, например «Французский (Канада)».
- Разверните список раскладок, установите флажок Канадская французская и нажмите кнопку OK.
- В разделе параметров выберите элемент Просмотр раскладки, чтобы сравнить ее с клавиатурой.
- В списке Язык ввода по умолчанию выберите пункт Французский (Канада) — Канадская французская и нажмите кнопку ОК два раза.
Windows XP
- Нажмите кнопку Пуск, введите команду intl.cpl в поле Выполнить и нажмите клавишу ВВОД.
- На вкладке Языки нажмите кнопку Подробнее.
- В разделе «Установленные службы» нажмите кнопку Добавить.
- В списке Язык ввода выберите нужный язык, например Французский (Канада).
- В списке Раскладка клавиатуры или метод ввода (IME) выберите пункт Канадская (французская) и нажмите кнопку ОК.
- В списке Выберите один из установленных языков ввода, который будет использоваться при загрузке компьютера, выберите пункт Французский (Канада) — Канадская французская и нажмите кнопку ОК.
- В диалоговом окне Язык и региональные стандарты нажмите кнопку ОК.
Проверка соответствия выбранной раскладки и клавиатуры
Windows 7 или Windows Vista
- Нажмите кнопку «Пуск», в поле Начать поиск введите команду osk и нажмите клавишу ВВОД.
- Сравните клавиатуру на экране с физической клавиатурой и убедитесь в том, что раскладки совпадают.
- Чтобы проверить символы в верхнем регистре, нажмите клавишу SHIFT на клавиатуре или экране и сравните символы.
Windows XP
- Нажмите кнопку Пуск, введите команду osk в поле Выполнить и нажмите клавишу ВВОД.
- Сравните клавиатуру на экране с физической клавиатурой и убедитесь в том, что раскладки совпадают.
- Чтобы проверить символы в верхнем регистре, нажмите клавишу SHIFT на клавиатуре или экране и сравните символы.
Ссылки
Дополнительные сведения о языковой панели см. в следующей статье базы знаний Майкрософт:
306993 Как использовать языковую панель в Microsoft Windows XP
Дополнительные сведения об использовании раскладки клавиатуры «США — международная» см. в следующей статье базы знаний Майкрософт:
306560 Как пользоваться раскладкой клавиатуры «США — международная» в Windows XP
Использование панели «Клавиатура» на Mac
Можно просмотреть, как на клавиатуре расположены символы другого языка, а также специальные знаки и символы.

Совет. Для ввода эмодзи, значков и других специальных символов, отсутствующих в панели «Клавиатура», можно использовать панель «Символы». См. раздел Использование эмодзи и символов.

- На Mac нажмите меню ввода в строке меню, затем выберите «Показать панель «Клавиатура»». Если меню ввода не отображается, выберите меню Apple

> «Системные настройки», затем нажмите «Клавиатура» в боковом меню. (Возможно, потребуется прокрутить вниз.) Справа перейдите в раздел «Ввод текста», нажмите «Изменить», затем включите параметр «Показывать меню клавиатур в строке меню». Открыть настройки раздела «Клавиатура»
Если на шаге 2 был изменен источник ввода или раскладка клавиатуры, не забудьте восстановить исходные настройки, если это требуется.
Приложение «Клавиатура» использует Ассистивную клавиатуру macOS, которая включает расширенные возможности ввода (например, предложения при вводе) и функции навигации. См. раздел Использование Ассистивной клавиатуры.
Ввод на другом языке на компьютере Mac

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

- Чтобы изменить настройки, на Mac выберите меню Apple
> «Системные настройки», затем нажмите «Клавиатура»
в боковом меню. (Возможно, потребуется прокрутить вниз.) Открыть настройки раздела «Клавиатура»
, затем выполните поиск языка (например «Упрощенный китайский»). Выберите один или несколько источников ввода для каждого используемого языка.После добавления источника ввода автоматически включится отображение меню ввода в строке меню. При добавлении источника ввода соответствующий язык автоматически добавляется в Ваш список предпочитаемых языков в настройках «Язык и регион» и в список языков диктовки (если он доступен) в настройках «Клавиатура». Можно настроить Mac таким образом, чтобы этот язык использовался в интерфейсе пользователя, а также для диктовки сообщений и документов.
Переключение между языками при вводе
Переключайтесь между языками при вводе, выбирая нужный язык в меню ввода. Вы также можете настроить компьютер Mac, чтобы быстро переключаться между языками с помощью клавиатуры.

- Использование меню ввода. Нажмите меню ввода в строке меню, затем выберите источник ввода. Если какой-либо источник ввода в меню ввода недоступен, это означает, что текущее приложение его не поддерживает. Можно также нажать сочетание клавиш Control-пробел, чтобы выбрать последний использовавшийся источник ввода, или Control-Option-пробел, чтобы выбрать следующий источник ввода в меню ввода.
- Использование клавиши Fn или клавиши . В разделе настроек «Клавиатура» можно включить переключение между источниками ввода нажатием клавиши Fn или клавиши . Выберите меню Apple
> «Системные настройки», нажмите «Клавиатура»
в боковом меню (возможно, потребуется прокрутить вниз), затем для параметра «Нажатие клавиши Fn» либо параметра «Нажатие клавиши » выберите вариант «переключает источник ввода». Открыть настройки раздела «Клавиатура» Нажмите клавишу, чтобы переключиться на следующий источник ввода и отобразить все доступные источники ввода в виде букв или символов рядом с тем местом, где Вы вводите текст. Продолжайте нажимать клавишу, пока не будет выбран нужный источник ввода.
, кнопку «Рукописный ввод»
или обе кнопки, коснитесь одной из этих кнопок, затем коснитесь нужного источника ввода. См. раздел Настройка панели Touch Bar.Просмотр раскладки клавиатуры
В панели «Клавиатура» можно просмотреть раскладку клавиатуры текущего источника ввода. Это полезно, если Вы используете источник ввода, который не совпадает с Вашей физической клавиатурой. В этом случае при вводе текста на экране могут появляться не те символы, которые изображены на клавишах.
Вы также можете отобразить раскладку клавиатуры в настройках «Источники ввода» и просмотреть изменения раскладки при нажатии клавиш модификации, например Option или Shift.

-
Чтобы изменить настройки, на Mac выберите меню Apple

> «Системные настройки», затем нажмите «Клавиатура» в боковом меню. (Возможно, потребуется прокрутить вниз.) Открыть настройки раздела «Клавиатура»
