char
@char

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

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

Punto Switcher не предлагать. Сейчас пользуюсь SwitchIt, но он старый и не везде работает.
  • Вопрос задан
  • 3024 просмотра
Решения вопроса 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'у, так что нужно будет допилить.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы