char
@char

Как сменить переключение клавиатуры в Windows на клавиши Shift по отдельности?

Подскажите программу-переключатель клавиатуры для Windows 7/XP, который можно настроить так:
  1. левый Shift — английская раскладка.
  2. правый Shift — русская раскладка.

Punto Switcher не предлагать. Сейчас пользуюсь SwitchIt, но он старый и не везде работает.
  • Вопрос задан
  • 3029 просмотров
Решения вопроса 1
schursin
@schursin
procedure TForm1.Timer1Timer(Sender: TObject);
var
  ThreadId, InputLocaleId: THandle;
const
  English = $4090409;
  Russian = $4190419;
begin
  ThreadId := GetWindowThreadProcessId(GetForegroundWindow());
  InputLocaleId := GetKeyboardLayout(ThreadId);

  if Odd(GetAsyncKeyState(VK_LSHIFT)) then begin
    if InputLocaleId <> English then
      PostMessage(GetForegroundWindow(), WM_INPUTLANGCHANGEREQUEST, English, 0);
  end else if Odd(GetAsyncKeyState(VK_RSHIFT)) then begin
    if InputLocaleId <> Russian then
      PostMessage(GetForegroundWindow(), WM_INPUTLANGCHANGEREQUEST, Russian, 0);
  end;
end;


Потестил, работает и со стандартными окнами и с консолью.
Могу добавить «в трей» и откомпилить.

P.S. Можно глобальными хуками через DLL, но это явно не 40 минут.
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
homm
@homm
А я всетаки предложу Punto Switcher.
Ответ написан
Комментировать
schursin
@schursin
Первое что пришло на ум — написать, не должно занять больше чем 40 минут.
Ответ написан
YasonBy
@YasonBy
Существует скрипт для AutoHotKey, но там переключение по правому Ctrl'у, так что нужно будет допилить.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы