Предположим, я могу переключаться между 3 раскладками клавиатуры, английской, немецкой и испанской, из языковой панели Windows 7 32bit. Какую команду можно запустить из cmd, чтобы вернуть значение текущего используемого макета? Моя конечная цель - передать возвращенное значение во внешний редактор (Emacs), чтобы он мог изменять шрифт текста на основе текущей раскладки клавиатуры.
То есть, если я напишу предложение на английском, шрифт будет font1, если на немецком font2 и так далее. Но это будет работать только в том случае, если я смогу получить какое-то возвращаемое значение (будь то номер локали страны или строковая строка english
, german
и т.д.) Из командной строки Windows.
1 ответ
Редактировать: ниже фактически не будет делать то, что требует OP, так как значения не меняются, когда клавиатура переключается с помощью сочетания клавиш языковой панели, даже если они делают, если вы делаете это через панель управления. Оставляя для полноты.
Я не могу найти какие-либо задокументированные команды systeminfo или Powershell, которые могут получить эту информацию. Я думал, что что-то вроде этого может работать, но, увы, ни один из параметров для этого или других командлетов, кажется, не в состоянии получить эту настройку.
powershell -Command "& {(Get-culture).keyboardlayoutid;}"
Кажется, что в Windows 8 могут быть добавлены команды Powershell, которые делают это, но в Windows 7, похоже, вы не можете обнаружить изменения, сделанные таким образом.
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Следующее вернет текущие клавиатуры:
reg query "HKEY_CURRENT_USER\Keyboard Layout\Preload"
Это вернет список всех установленных клавиатур, с той, которая в данный момент используется как 1
.
HKEY_CURRENT_USER\Keyboard Layout\Preload
1 REG_SZ 00000809
2 REG_SZ 00000407
3 REG_SZ 00000c0a
Для справки возвращенные значения перечислены здесь: msdn.microsoft.com/en-gb/goglobal/bb895996.aspx