Кто-нибудь знает вызов API, который я могу использовать для изменения раскладки клавиатуры на компьютере с Windows на Dvorak? Сделать это через пользовательский интерфейс легко, но я хотел бы иметь сценарий, который я мог бы запустить на новой виртуальной машине для автоматизации процесса.
@ Дэвид, к сожалению, реальный вопрос. Я скрипирую все, что умею, и я пользователь дворака :)





Сделать это можно через реестр. Просто сохраните его как файл .reg и откройте на новой виртуальной машине. Я считаю, что это должно сделать это для переназначения на Дворжака:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"ScanCode Map"=hex:00,00,00,00,00,00,00,00,22,00,00,00,2d,00,30,00,24,00,2e,00,\
11,00,33,00,33,00,11,00,12,00,20,00,34,00,12,00,1b,00,0d,00,0d,00,1b,00,16,\
00,21,00,17,00,22,00,20,00,23,00,1a,00,0c,00,2e,00,17,00,23,00,24,00,14,00,\
25,00,31,00,26,00,35,00,1a,00,30,00,31,00,13,00,18,00,26,00,19,00,2f,00,34,\
00,28,00,10,00,0c,00,28,00,19,00,13,00,18,00,1f,00,1f,00,27,00,2c,00,35,00,\
15,00,14,00,22,00,16,00,25,00,2f,00,10,00,2d,00,21,00,15,00,27,00,2c,00,00,\
00,00,00
И если вы хотите вернуться:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"ScanCode Map"=hex:00,00,00,00,00,00,00,00,01,00,00,00,00,00,00,00
Я просмотрел реестр на своей машине (Vista), где у меня установлен Dvorak, и не увидел ни одной из этих записей.
Да, вероятно, выбор макета в пользовательском интерфейсе устанавливает другой флаг. Этот метод изменит отображение клавиатуры без изменения раскладки. Это странное различие, но я думаю, оно объясняет разницу.
В XP: «Невозможно импортировать dvorak.reg: не все данные были успешно записаны в реестр. Некоторые ключи открыты системой или другими процессами». Я студент университета, поэтому было бы неплохо, если бы я смог найти надежный способ быстро переключить любой компьютер, на котором я вхожу в систему, на Dvorak, возможно, запустив сценарий в моем пользовательском каталоге.
Возможно, я опоздал на вечеринку на четыре года, но вы когда-нибудь находили это:
Параметры командной строки Intlcfg
У меня нет Windows Vista (очень плохая привычка, Windows), но, глядя на эту страницу, а также на Доступные языковые пакеты и Языки ввода по умолчанию, я думаю, что команда, которую вы хотите, вполне может быть такой:
intlcfg.exe -inputlocale:0409:00010409
для английского (США) языка с локалью ввода Дворак США.
Это действительно может быть с опозданием на 4 года, но это, наконец, правильный ответ :)
Для меня это больше похоже на первоапрельскую шутку.