1
0
mirror of https://github.com/wine-mirror/wine synced 2024-06-29 06:14:34 +00:00

winemac.drv: Give dead keys a friendly name in GetKeyNameText.

This commit is contained in:
Marc-Aurel Zent 2024-03-09 07:49:30 +01:00 committed by Alexandre Julliard
parent 2d319acccd
commit d09e423e61

View File

@ -398,6 +398,27 @@ static const struct {
{ VK_VOLUME_UP | 0x100, "Volume Up" },
};
static const struct {
WCHAR wchar;
const char *name;
} dead_key_names[] = {
{ '^', "CIRCUMFLEX ACCENT" },
{ '`', "GRAVE ACCENT" },
{ 0x00B4, "ACUTE ACCENT" },
{ '~', "TILDE" },
{ 0x00A8, "DIAERESIS" },
{ 0x00B8, "CEDILLA" },
{ 0x02D8, "BREVE" },
{ 0x02D9, "DOT ABOVE" },
{ 0x00AF, "MACRON" },
{ 0x02DA, "RING ABOVE" },
{ 0x02DB, "OGONEK" },
{ 0x02DC, "SMALL TILDE" },
{ 0x02DD, "DOUBLE ACUTE ACCENT" },
};
static Boolean char_matches_string(WCHAR wchar, UniChar *string, CollatorRef collatorRef)
{
Boolean equivalent;
@ -1386,6 +1407,20 @@ INT macdrv_GetKeyNameText(LONG lparam, LPWSTR buffer, INT size)
if (!len)
break;
if (status == noErr && deadKeyState)
{
for (i = 0; i < ARRAY_SIZE(dead_key_names); i++)
{
if (dead_key_names[i].wchar == buffer[0])
{
len = min(strlen(dead_key_names[i].name) + 1, size);
ascii_to_unicode(buffer, dead_key_names[i].name, len);
if (len) buffer[--len] = 0;
break;
}
}
}
if (status == noErr && len == 1 && buffer[0] >= 'a' && buffer[0] <= 'z')
buffer[0] += 'A' - 'a';