mirror of
https://github.com/morgan9e/FreeRDP
synced 2026-04-15 00:44:19 +09:00
[client,x11] typedef x11_keysym_scancode_t
This commit is contained in:
@@ -322,13 +322,13 @@ static const struct x11_key_scancode_t XKB_KEY_NAME_SCANCODE_TABLE[] = {
|
|||||||
{ "VOL-", RDP_SCANCODE_VOLUME_DOWN } /* 122: VOL- [XF86AudioLowerVolume] */
|
{ "VOL-", RDP_SCANCODE_VOLUME_DOWN } /* 122: VOL- [XF86AudioLowerVolume] */
|
||||||
};
|
};
|
||||||
|
|
||||||
struct x11_keysym_scancode_t
|
typedef struct
|
||||||
{
|
{
|
||||||
KeySym keysym;
|
KeySym keysym;
|
||||||
DWORD sc;
|
DWORD sc;
|
||||||
};
|
} x11_keysym_scancode_t;
|
||||||
|
|
||||||
static const struct x11_keysym_scancode_t KEYSYM_SCANCODE_TABLE[] = {
|
static const x11_keysym_scancode_t KEYSYM_SCANCODE_TABLE[] = {
|
||||||
{ XK_space, RDP_SCANCODE_SPACE },
|
{ XK_space, RDP_SCANCODE_SPACE },
|
||||||
{ XK_apostrophe, RDP_SCANCODE_OEM_7 },
|
{ XK_apostrophe, RDP_SCANCODE_OEM_7 },
|
||||||
{ XK_comma, RDP_SCANCODE_OEM_COMMA },
|
{ XK_comma, RDP_SCANCODE_OEM_COMMA },
|
||||||
@@ -593,8 +593,8 @@ static int xkb_cmp(const void* pva, const void* pvb)
|
|||||||
|
|
||||||
static int keysym_cmp(const void* pva, const void* pvb)
|
static int keysym_cmp(const void* pva, const void* pvb)
|
||||||
{
|
{
|
||||||
const struct x11_keysym_scancode_t* a = pva;
|
const x11_keysym_scancode_t* a = pva;
|
||||||
const struct x11_keysym_scancode_t* b = pvb;
|
const x11_keysym_scancode_t* b = pvb;
|
||||||
|
|
||||||
if (!a && !b)
|
if (!a && !b)
|
||||||
return 0;
|
return 0;
|
||||||
@@ -634,10 +634,10 @@ static BOOL try_add(xfContext* xfc, size_t offset, const char* xkb_keyname)
|
|||||||
/* Keysym fallback for X11 forwarding where XKB key names don't match evdev */
|
/* Keysym fallback for X11 forwarding where XKB key names don't match evdev */
|
||||||
static DWORD xf_keysym_to_rdp_scancode(KeySym keysym)
|
static DWORD xf_keysym_to_rdp_scancode(KeySym keysym)
|
||||||
{
|
{
|
||||||
struct x11_keysym_scancode_t key = { .keysym = keysym, .sc = 0 };
|
x11_keysym_scancode_t key = { .keysym = keysym, .sc = 0 };
|
||||||
struct x11_keysym_scancode_t* found =
|
x11_keysym_scancode_t* found =
|
||||||
bsearch(&key, KEYSYM_SCANCODE_TABLE, ARRAYSIZE(KEYSYM_SCANCODE_TABLE),
|
bsearch(&key, KEYSYM_SCANCODE_TABLE, ARRAYSIZE(KEYSYM_SCANCODE_TABLE),
|
||||||
sizeof(struct x11_keysym_scancode_t), keysym_cmp);
|
sizeof(x11_keysym_scancode_t), keysym_cmp);
|
||||||
if (found)
|
if (found)
|
||||||
return found->sc;
|
return found->sc;
|
||||||
|
|
||||||
@@ -757,16 +757,16 @@ BOOL xf_keyboard_init(xfContext* xfc)
|
|||||||
/* When assertions are enabled assert the lists are sorted. */
|
/* When assertions are enabled assert the lists are sorted. */
|
||||||
#if defined(WITH_VERBOSE_WINPR_ASSERT)
|
#if defined(WITH_VERBOSE_WINPR_ASSERT)
|
||||||
{
|
{
|
||||||
struct x11_keysym_scancode_t copy[ARRAYSIZE(KEYSYM_SCANCODE_TABLE)] = { 0 };
|
x11_keysym_scancode_t copy[ARRAYSIZE(KEYSYM_SCANCODE_TABLE)] = { 0 };
|
||||||
memcpy(copy, KEYSYM_SCANCODE_TABLE, sizeof(copy));
|
memcpy(copy, KEYSYM_SCANCODE_TABLE, sizeof(copy));
|
||||||
qsort(copy, ARRAYSIZE(copy), sizeof(struct x11_keysym_scancode_t), keysym_cmp);
|
qsort(copy, ARRAYSIZE(copy), sizeof(x11_keysym_scancode_t), keysym_cmp);
|
||||||
|
|
||||||
if (memcmp(KEYSYM_SCANCODE_TABLE, copy, sizeof(KEYSYM_SCANCODE_TABLE)) != 0)
|
if (memcmp(KEYSYM_SCANCODE_TABLE, copy, sizeof(KEYSYM_SCANCODE_TABLE)) != 0)
|
||||||
{
|
{
|
||||||
for (size_t x = 0; x < ARRAYSIZE(KEYSYM_SCANCODE_TABLE); x++)
|
for (size_t x = 0; x < ARRAYSIZE(KEYSYM_SCANCODE_TABLE); x++)
|
||||||
{
|
{
|
||||||
const struct x11_keysym_scancode_t* a = &KEYSYM_SCANCODE_TABLE[x];
|
const x11_keysym_scancode_t* a = &KEYSYM_SCANCODE_TABLE[x];
|
||||||
const struct x11_keysym_scancode_t* b = ©[x];
|
const x11_keysym_scancode_t* b = ©[x];
|
||||||
if (a->keysym != b->keysym)
|
if (a->keysym != b->keysym)
|
||||||
WLog_ERR(TAG, "%" PRIuz "\ta=%lx, should be %lx", x, a->keysym, b->keysym);
|
WLog_ERR(TAG, "%" PRIuz "\ta=%lx, should be %lx", x, a->keysym, b->keysym);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user