Сведения о вопросе

HEIGTH

09:33, 29th August, 2020

Теги

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

Просмотров: 422   Ответов: 4

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

Punto Switcher не предлагать. Сейчас пользуюсь SwitchIt, но он старый и не везде работает.



  Сведения об ответе

davran

05:59, 13th August, 2020

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 минут.


  Сведения об ответе

PHPH

10:15, 25th August, 2020

А я всетаки предложу Punto Switcher.


  Сведения об ответе

park

14:46, 5th August, 2020

Первое что пришло на ум — написать, не должно занять больше чем 40 минут.


  Сведения об ответе

SSESION

08:52, 9th August, 2020

Существует скрипт для AutoHotKey, но там переключение по правому Ctrl'у, так что нужно будет допилить.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться