[PATCH 6/7] dinput8: Use raw input interface for dinput8 keyboard device

Akihiro Sagawa sagawa.aki at gmail.com
Tue Aug 27 08:15:38 CDT 2019


On Mon, 26 Aug 2019 16:07:00 +0200, RĂ©mi Bernon wrote:
> -    switch (hook->vkCode)
> +        switch (raw_input.data.keyboard.VKey)
> +        {
> +            /* R-Shift is special - it is an extended key with separate scan code */
> +            case VK_RSHIFT: dik_code = DIK_RSHIFT; break;
> +            case VK_PAUSE: dik_code = DIK_PAUSE; break;
> +            case VK_NUMLOCK: dik_code = DIK_NUMLOCK; break;
> +            case VK_SUBTRACT: dik_code = DIK_SUBTRACT; break;
> +            default:
> +                dik_code = map_dik_code(0, raw_input.data.keyboard.VKey, This->subtype);
You may want to use raw_input.data.keyboard.MakeCode here insetad of 0.
MapVirtualKey(MAPVK_VK_TO_VSC) is slightly broken (e.g. numeric keypad).

> +                if (raw_input.data.keyboard.Flags & RI_KEY_E0) dik_code |= 0x80;
> +        }
> +        new_diks = (raw_input.data.keyboard.Flags & RI_KEY_BREAK) ? 0 : 0x80;
> +    }

Akihiro Sagawa




More information about the wine-devel mailing list