netch80: (Default)
[personal profile] netch80
Тема известная (просто нагуглив можно получить и монстров типа Punto, и лёгкий keyla, и простой как угол дома lswitch), но захотелось получить вариант как у меня на Unix - Caps переключает между английским и русским, а Ctrl+Caps - между русским и украинским.

Пока идеально не получилось: [UPD] на FAR какие-то странные эффекты. Впрочем, и там можно через родной переключатель (как Ctrl+Shift) выбрать любую.

Текущие результаты (исходник и экзешник). Исходник - слегка замученный lswitch.c от Haali. Caps крутит раскладки по кругу вперёд, Ctrl+Caps - назад. Командная строка с 'q' убирает резидент, с '3s' запускает в моём любимом режиме, в любом другом случае пытается ставить с переключением по кругу.

Уже удобнее, чем в Putty, и Caps тоже можно включать (имитируя блондинку;))

Date: 2009-05-09 08:44 pm (UTC)
From: [identity profile] trivee.livejournal.com
GetWindowThreadProcessId

Date: 2009-05-09 09:24 pm (UTC)
netch: (Default)
From: [personal profile] netch
Ага, спасибо. Теперь ситуация интереснее. Такое работает на всех проверенных приложениях, кроме FAR. На FAR, картина, словно у него всегда текущий английский несмотря на ввод и показания индикатора - в результате Caps всегда уводит на русский, Ctrl+Caps на украинский, а на английский можно вернуться только неотменённым Ctrl+Shift. Что-то в нём странное.

Date: 2009-05-10 08:38 pm (UTC)
From: [identity profile] trivee.livejournal.com
Так и есть. Обработка клавиатуры для консольных приложений делается не в их потоке, а в потоке внутри CSRSS. Перебрав их вручную, его легко найти и убедиться, что GetKeyboardLayout изменяется вместе с переключением клавиатуры. Но вот как это делать автоматически, или получить текущую клавиатурную раскладку для консольного приложения, не знаю.

Date: 2009-05-11 07:04 am (UTC)
netch: (Default)
From: [personal profile] netch
Нагуглилось вот такое:

"Вешается системный хук WH_SHELL (HSHELL_LANGUAGE)", подробнее не было

но по этим двум идентификаторам много разъяснений.

Впрочем, пока не буду этого делать - много кодить надо;)

Profile

netch80: (Default)
netch80

January 2026

S M T W T F S
    1 23
45678910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 3rd, 2026 04:48 am
Powered by Dreamwidth Studios