X11キーコードをMicrosoft仮想キーコードに変換するにはどうすればよいですか
int processKeyboardMessage( XEvent *event )
{
assert( KeyPress == event->type );
//TODO: Before returning convert keycode into microsoft virtual key code
return ( event->xkey.keycode );
}
X11キーコードをMicrosoft仮想キーコードに変換するにはどうすればよいですか
int processKeyboardMessage( XEvent *event )
{
assert( KeyPress == event->type );
//TODO: Before returning convert keycode into microsoft virtual key code
return ( event->xkey.keycode );
}
1つのオプションは、すべてのプラットフォームで可能なすべてのキーの列挙型を作成することです。次に、システムのネイティブ形式でアプリケーションのキーコードを処理できます。特定の状況(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