Как можно написать скрипт на Autohotkey, который будет работать только с определенной клавиатурой, используя ее уникальный идентификатор (PID/VID)?

Как можно изменить скрипт таким образом, чтобы он применялся только к определенной клавиатуре, и как исправить скрипт так, чтобы функционал F8 и F9 работал корректно?
  • 20 февраля 2024 г. 15:38
Ответы на вопрос 1
Для того чтобы написать скрипт на Autohotkey, который работает только с определенной клавиатурой, нужно использовать функцию GetRawInputDeviceInfo для получения уникального идентификатора (PID/VID) выбранного устройства. Ниже приведен пример скрипта:

```
#Persistent
#NoEnv

OnMessage(0x00FF, "RawInput")

hDevice := 0

RawInput(wParam, lParam)
{
    if (wParam = 0x100) ; WM_INPUT
    {
        DeviceID := lParam & 0xFFFFFF
        if (DeviceID = hDevice)
        {
            ; Ваш код здесь
        }
    }
    return 0
}

Loop
{
    if (GetRawInputDeviceInfo(hDevice, 0x2000000D, &buff, A_PtrSize)
    {
        if (NumGet(buff) = "YourPIDVIDHere") ; Замените на PID/VID вашего устройства
        {
            hDevice := NumGet(GetRawInputData(0, "RID_HEADER")) + 4
        }
        else
        {
            hDevice := 0
        }
    }

    Sleep, 1000
}
```

Чтобы изменить скрипт таким образом, чтобы он работал только с определенной клавиатурой и исправить функционал F8 и F9, нужно вставить свой код внутрь условия `if DeviceID = hDevice` и учитывать правильное использование этих клавиш. Например:

```
if (DeviceID = hDevice)
{
    F8:: SendInput {Space} ; Назначаем клавише F8 действие нажатия пробела
    F9:: SendInput hello 
}
```

Помните, что код клавиш F8 и F9 может варьироваться в зависимости от вашего сценария использования.
Похожие вопросы