char
@char

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

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

Punto Switcher не предлагать. Сейчас пользуюсь SwitchIt, но он старый и не везде работает.
  • Вопрос задан
  • 2994 просмотра
Решения вопроса 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
schursin
@schursin
Первое что пришло на ум — написать, не должно занять больше чем 40 минут.
Ответ написан
YasonBy
@YasonBy
Существует скрипт для AutoHotKey, но там переключение по правому Ctrl'у, так что нужно будет допилить.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
AIR Production Москва
от 120 000 до 160 000 ₽
AIR Production Москва
от 90 000 до 140 000 ₽
Spark Equation Санкт-Петербург
от 120 000 до 150 000 ₽
10 июл. 2020, в 19:54
4000 руб./за проект
10 июл. 2020, в 18:55
4000 руб./за проект