Как получить раскладку клавиатуры на окнах с ruby? - PullRequest
0 голосов
/ 01 февраля 2011

Я хочу получить название раскладки клавиатуры, например, "kbdus" для клавиатуры США-Английский или "kbdusx" для США-InternationalЯ пробовал "GetKeyboardLayoutName" из Win32API, но я только что получил номер (0x20409).Я знаю, что 0x0409 означает «английский», а «0x2», вероятно, означает один из вариантов английской клавиатуры.Как получить точное название раскладки клавиатуры пользователя?Я использую Ruby 1.8.7 в Windows.

Ответы [ 2 ]

1 голос
/ 01 февраля 2011

Я нашел ответ на свой вопрос:

require 'win32/registry'
require 'win32API'

Win32API.new('user32', 'GetKeyboardLayoutName', 'p', '').call(layoutid = "\0"*8)

reg_path = 'SYSTEM\CurrentControlSet\Control\Keyboard Layouts\\' << layoutid
reg = Win32::Registry::HKEY_LOCAL_MACHINE.open(reg_path)

layoutcode = reg.read('Layout File')[1].split('.', 2)[0]
layoutname = reg.read('Layout Text')[1]

layoutcode # => "KDBUSX"
layoutname # => "United States-International"
0 голосов
/ 01 февраля 2011

Эта дискуссия о идентификаторах языков , вероятно, поможет вам двигаться в правильном направлении. Этот список констант , вероятно, даже лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...