gpt4 book ai didi

windows - 如何将 XLib key 代码转换为 Microsoft 虚拟 key ?

转载 作者:可可西里 更新时间:2023-11-01 10:37:52 24 4
gpt4 key购买 nike

如何将 X11 键码转换为 microsoft virtual key code

int processKeyboardMessage( XEvent *event )
{
assert( KeyPress == event->type );

//TODO: Before returning convert keycode into microsoft virtual key code
return ( event->xkey.keycode );
}

最佳答案

一种选择是对每个平台上所有可能的键进行枚举。然后您可以以系统的 native 格式处理应用程序中的键码。你需要做一些微妙的事情来解决某些情况(比如 win32 上的左/右 alt),但你可以实现这些特殊情况并为它们更新你的枚举。而不是在每个平台上创建大型表或 switch-case 语句。

/* my_key.h : creates names for key codes on Windows and X11 */
#ifndef MY_KEY_H
#define MY_KEY_H
#if defined(_WIN32)
#include <windows.h>
enum my_key {
MY_KEY_BACKSPACE = VK_BACK,
MY_KEY_RETURN = VK_RETURN,
MY_KEY_LEFT = VK_LEFT,
MY_KEY_RIGHT = VK_RIGHT,
MY_KEY_DOWN = VK_DOWN,
MY_KEY_UP = VK_UP,
/* TODO: define the rest of the keys */
};
#else defined(__APPLE__)
enum my_key {
MY_KEY_BACKSPACE = 0x33,
MY_KEY_RETURN = 0x24,
MY_KEY_LEFT = 0x7b,
MY_KEY_RIGHT = 0x7c,
MY_KEY_DOWN = 0x7d,
MY_KEY_UP = 0x7e,
/* TODO: define the rest of the keys */
};
#else /* assume X11 */
#include <X11/keysym.h>
enum my_key {
MY_KEY_BACKSPACE = XK_BackSpace,
MY_KEY_RETURN = XK_Linefeed,
MY_KEY_LEFT = XK_Left,
MY_KEY_RIGHT = XK_Right,
MY_KEY_DOWN = XK_Down,
MY_KEY_UP = XK_Up,
/* TODO: define the rest of the keys */
};
#endif
#endif

关于windows - 如何将 XLib key 代码转换为 Microsoft 虚拟 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14986402/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com