You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-09-12 18:50:20 -07:00
Rebase against 2a505efb1ca14f33503657eb070de6edd484b4f3.
This commit is contained in:
@@ -1,14 +1,14 @@
|
||||
From 298b86133dd143722c0395474c0a98e89c0af937 Mon Sep 17 00:00:00 2001
|
||||
From b3e883936f94d291de16a551df25ebaa544fd22d Mon Sep 17 00:00:00 2001
|
||||
From: Ken Thomases <ken@codeweavers.com>
|
||||
Date: Tue, 11 Dec 2018 08:30:41 +1100
|
||||
Subject: [PATCH] winex11: Match keyboard in Unicode
|
||||
|
||||
---
|
||||
dlls/winex11.drv/keyboard.c | 163 ++++++++++++++++++++++--------------
|
||||
1 file changed, 98 insertions(+), 65 deletions(-)
|
||||
dlls/winex11.drv/keyboard.c | 161 ++++++++++++++++++++++--------------
|
||||
1 file changed, 97 insertions(+), 64 deletions(-)
|
||||
|
||||
diff --git a/dlls/winex11.drv/keyboard.c b/dlls/winex11.drv/keyboard.c
|
||||
index 37c96c926f4..95cb4100bc9 100644
|
||||
index 4db0dafb4ee..cba0dd44736 100644
|
||||
--- a/dlls/winex11.drv/keyboard.c
|
||||
+++ b/dlls/winex11.drv/keyboard.c
|
||||
@@ -37,6 +37,7 @@
|
||||
@@ -65,13 +65,11 @@ index 37c96c926f4..95cb4100bc9 100644
|
||||
/**********************************************************************
|
||||
* X11DRV_KEYBOARD_DetectLayout
|
||||
*
|
||||
@@ -1433,8 +1464,8 @@ X11DRV_KEYBOARD_DetectLayout( Display *display )
|
||||
KeySym keysym = 0;
|
||||
@@ -1434,7 +1465,7 @@ X11DRV_KEYBOARD_DetectLayout( Display *display )
|
||||
const char (*lkey)[MAIN_LEN][4];
|
||||
unsigned max_seq = 0;
|
||||
- int max_score = 0, ismatch = 0;
|
||||
int max_score = INT_MIN, ismatch = 0;
|
||||
- char ckey[256][4];
|
||||
+ int max_score = INT_MIN, ismatch = 0;
|
||||
+ WCHAR ckey[256][4];
|
||||
|
||||
syms = keysyms_per_keycode;
|
||||
@@ -145,12 +143,12 @@ index 37c96c926f4..95cb4100bc9 100644
|
||||
- char str[5];
|
||||
- for (i = 0; i < 4; i++) str[i] = ckey[keyc][i] ? ckey[keyc][i] : ' ';
|
||||
- str[4] = 0;
|
||||
- TRACE_(key)("mismatch for keycode %u, got %s\n", keyc, str);
|
||||
- TRACE_(key)("mismatch for keycode %u, got %s\n", keyc, debugstr_a(str));
|
||||
+ TRACE_(key)("mismatch for keycode %u, got %s\n", keyc, debugstr_wn(ckey[keyc], 4));
|
||||
mismatch++;
|
||||
score -= syms;
|
||||
}
|
||||
@@ -1613,9 +1633,11 @@ void X11DRV_InitKeyboard( Display *display )
|
||||
@@ -1576,9 +1596,11 @@ void X11DRV_InitKeyboard( Display *display )
|
||||
XKeyEvent e2;
|
||||
WORD scan, vkey;
|
||||
int keyc, i, keyn, syms;
|
||||
@@ -163,7 +161,7 @@ index 37c96c926f4..95cb4100bc9 100644
|
||||
|
||||
/* Ranges of OEM, function key, and character virtual key codes.
|
||||
* Don't include those handled specially in X11DRV_ToUnicodeEx and
|
||||
@@ -1672,7 +1694,11 @@ void X11DRV_InitKeyboard( Display *display )
|
||||
@@ -1633,7 +1655,11 @@ void X11DRV_InitKeyboard( Display *display )
|
||||
/* Detect the keyboard layout */
|
||||
X11DRV_KEYBOARD_DetectLayout( display );
|
||||
lkey = main_key_tab[kbd_layout].key;
|
||||
@@ -175,7 +173,7 @@ index 37c96c926f4..95cb4100bc9 100644
|
||||
|
||||
/* Now build two conversion arrays :
|
||||
* keycode -> vkey + scancode + extended
|
||||
@@ -1713,26 +1739,14 @@ void X11DRV_InitKeyboard( Display *display )
|
||||
@@ -1674,26 +1700,14 @@ void X11DRV_InitKeyboard( Display *display )
|
||||
int maxlen=0,maxval=-1,ok;
|
||||
for (i=0; i<syms; i++) {
|
||||
keysym = keycode_to_keysym(display, keyc, i);
|
||||
@@ -207,7 +205,7 @@ index 37c96c926f4..95cb4100bc9 100644
|
||||
if (!ok) i--; /* we overshot */
|
||||
if (ok||(i>maxlen)) {
|
||||
maxlen=i; maxval=keyn;
|
||||
@@ -2350,7 +2364,7 @@ INT CDECL X11DRV_GetKeyNameText(LONG lParam, LPWSTR lpBuffer, INT nSize)
|
||||
@@ -2256,7 +2270,7 @@ INT CDECL X11DRV_GetKeyNameText(LONG lParam, LPWSTR lpBuffer, INT nSize)
|
||||
/***********************************************************************
|
||||
* X11DRV_KEYBOARD_MapDeadKeysym
|
||||
*/
|
||||
@@ -216,7 +214,7 @@ index 37c96c926f4..95cb4100bc9 100644
|
||||
{
|
||||
switch (keysym)
|
||||
{
|
||||
@@ -2360,65 +2374,84 @@ static char KEYBOARD_MapDeadKeysym(KeySym keysym)
|
||||
@@ -2266,65 +2280,84 @@ static char KEYBOARD_MapDeadKeysym(KeySym keysym)
|
||||
#endif
|
||||
case 0x1000FE7E : /* Xfree's XK_Dtilde */
|
||||
return '~'; /* '? */
|
||||
@@ -316,7 +314,7 @@ index 37c96c926f4..95cb4100bc9 100644
|
||||
*/
|
||||
}
|
||||
TRACE("no character for dead keysym 0x%08lx\n",keysym);
|
||||
@@ -2603,7 +2636,7 @@ INT CDECL X11DRV_ToUnicodeEx(UINT virtKey, UINT scanCode, const BYTE *lpKeyState
|
||||
@@ -2509,7 +2542,7 @@ INT CDECL X11DRV_ToUnicodeEx(UINT virtKey, UINT scanCode, const BYTE *lpKeyState
|
||||
|
||||
if (ret == 0)
|
||||
{
|
||||
@@ -325,7 +323,7 @@ index 37c96c926f4..95cb4100bc9 100644
|
||||
|
||||
#ifdef XK_EuroSign
|
||||
/* An ugly hack for EuroSign: X can't translate it to a character
|
||||
@@ -2627,7 +2660,7 @@ INT CDECL X11DRV_ToUnicodeEx(UINT virtKey, UINT scanCode, const BYTE *lpKeyState
|
||||
@@ -2533,7 +2566,7 @@ INT CDECL X11DRV_ToUnicodeEx(UINT virtKey, UINT scanCode, const BYTE *lpKeyState
|
||||
dead_char = KEYBOARD_MapDeadKeysym(keysym);
|
||||
if (dead_char)
|
||||
{
|
||||
@@ -335,5 +333,5 @@ index 37c96c926f4..95cb4100bc9 100644
|
||||
goto found;
|
||||
}
|
||||
--
|
||||
2.24.1
|
||||
2.30.2
|
||||
|
||||
|
Reference in New Issue
Block a user