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 56db5b0bf1aa6df5edbedbec03e0a1db39d6639b.
This commit is contained in:
@@ -1,22 +1,16 @@
|
||||
From 2caaacb0bd8f2feeba60d8a45959b83f6106a7a1 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?R=C3=A9mi=20Bernon?= <rbernon@codeweavers.com>
|
||||
From 89800b44c37c6b76e1cdc817c3423638f4dd9ac8 Mon Sep 17 00:00:00 2001
|
||||
From: Rémi Bernon <rbernon@codeweavers.com>
|
||||
Date: Fri, 6 Jan 2023 08:09:11 +0100
|
||||
Subject: [PATCH 3/9] winex11: Write supported keyboard layout list in
|
||||
registry.
|
||||
Subject: winex11: Write supported keyboard layout list in registry.
|
||||
|
||||
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=30984
|
||||
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45605
|
||||
---
|
||||
dlls/winex11.drv/keyboard.c | 21 +++++++++++++++++++++
|
||||
dlls/winex11.drv/x11drv.h | 4 ++++
|
||||
dlls/winex11.drv/x11drv_main.c | 17 +++++++++++++++++
|
||||
3 files changed, 42 insertions(+)
|
||||
|
||||
diff --git a/dlls/winex11.drv/keyboard.c b/dlls/winex11.drv/keyboard.c
|
||||
index f1ad4b01669..187979c4494 100644
|
||||
index 616728be621..ccdea98d1c2 100644
|
||||
--- a/dlls/winex11.drv/keyboard.c
|
||||
+++ b/dlls/winex11.drv/keyboard.c
|
||||
@@ -1089,6 +1089,27 @@ static const WORD xfree86_vendor_key_vkey[256] =
|
||||
@@ -1086,6 +1086,27 @@ static const WORD xfree86_vendor_key_vkey[256] =
|
||||
0, 0, 0, 0, 0, 0, 0, 0 /* 1008FFF8 */
|
||||
};
|
||||
|
||||
@@ -41,14 +35,14 @@ index f1ad4b01669..187979c4494 100644
|
||||
+ return layouts;
|
||||
+}
|
||||
+
|
||||
static inline KeySym keycode_to_keysym( Display *display, KeyCode keycode, int index )
|
||||
{
|
||||
#ifdef HAVE_XKB
|
||||
/* Returns the Windows virtual key code associated with the X event <e> */
|
||||
/* kbd_section must be held */
|
||||
static WORD EVENT_event_to_vkey( XIC xic, XKeyEvent *e)
|
||||
diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h
|
||||
index f4f6ba07e07..7d96ec648d1 100644
|
||||
index c6328cf3fde..da8d9511a4c 100644
|
||||
--- a/dlls/winex11.drv/x11drv.h
|
||||
+++ b/dlls/winex11.drv/x11drv.h
|
||||
@@ -709,6 +709,10 @@ extern BOOL xinerama_get_fullscreen_monitors( const RECT *rect, long *indices )
|
||||
@@ -706,6 +706,10 @@ extern BOOL xinerama_get_fullscreen_monitors( const RECT *rect, long *indices )
|
||||
extern void xinerama_init( unsigned int width, unsigned int height ) DECLSPEC_HIDDEN;
|
||||
extern void init_recursive_mutex( pthread_mutex_t *mutex ) DECLSPEC_HIDDEN;
|
||||
|
||||
@@ -60,10 +54,10 @@ index f4f6ba07e07..7d96ec648d1 100644
|
||||
extern const unsigned int *depths DECLSPEC_HIDDEN;
|
||||
|
||||
diff --git a/dlls/winex11.drv/x11drv_main.c b/dlls/winex11.drv/x11drv_main.c
|
||||
index e04bdedd43a..66dbc3c8270 100644
|
||||
index db957a80eb3..f3460141c33 100644
|
||||
--- a/dlls/winex11.drv/x11drv_main.c
|
||||
+++ b/dlls/winex11.drv/x11drv_main.c
|
||||
@@ -449,6 +449,19 @@ static HKEY create_hkcu_key( const char *name )
|
||||
@@ -446,6 +446,19 @@ static HKEY create_hkcu_key( const char *name )
|
||||
return reg_open_hkcu_key( name, TRUE );
|
||||
}
|
||||
|
||||
@@ -83,7 +77,7 @@ index e04bdedd43a..66dbc3c8270 100644
|
||||
|
||||
ULONG query_reg_value( HKEY hkey, const WCHAR *name, KEY_VALUE_PARTIAL_INFORMATION *info, ULONG size )
|
||||
{
|
||||
@@ -567,6 +580,10 @@ static void setup_options(void)
|
||||
@@ -564,6 +577,10 @@ static void setup_options(void)
|
||||
if (!get_config_key( hkey, appkey, "GrabFullscreen", buffer, sizeof(buffer) ))
|
||||
grab_fullscreen = IS_OPTION_TRUE( buffer[0] );
|
||||
|
||||
@@ -94,6 +88,3 @@ index e04bdedd43a..66dbc3c8270 100644
|
||||
if (!get_config_key( hkey, appkey, "ScreenDepth", buffer, sizeof(buffer) ))
|
||||
default_visual.depth = wcstol( buffer, NULL, 0 );
|
||||
|
||||
--
|
||||
2.39.1
|
||||
|
||||
|
@@ -1,8 +1,7 @@
|
||||
From 1e2f3aced42e5ad050a8bb6f173c3e4dcdae3b9b Mon Sep 17 00:00:00 2001
|
||||
From 0f7681a0db7d45bbd3f76964bfc1d0cfe87cbbfc Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?R=C3=A9mi=20Bernon?= <rbernon@codeweavers.com>
|
||||
Date: Wed, 30 Nov 2022 18:46:00 +0100
|
||||
Subject: [PATCH 8/9] winex11: Support fixed X11 keycode to scancode
|
||||
conversion.
|
||||
Subject: [PATCH] winex11: Support fixed X11 keycode to scancode conversion.
|
||||
|
||||
X11 keycodes are just Linux keycodes + 8 nowadays according to evdev or
|
||||
libinput drivers, and we can avoid innacurate reconstruction in the most
|
||||
@@ -11,22 +10,19 @@ common case.
|
||||
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=30984
|
||||
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45605
|
||||
---
|
||||
dlls/winex11.drv/keyboard.c | 45 +++++++++++++++++++++++++++++++---
|
||||
dlls/winex11.drv/keyboard.c | 44 ++++++++++++++++++++++++++++++++--
|
||||
dlls/winex11.drv/x11drv.h | 1 +
|
||||
dlls/winex11.drv/x11drv_main.c | 4 +++
|
||||
3 files changed, 47 insertions(+), 3 deletions(-)
|
||||
dlls/winex11.drv/x11drv_main.c | 4 ++++
|
||||
3 files changed, 47 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/winex11.drv/keyboard.c b/dlls/winex11.drv/keyboard.c
|
||||
index 5065d8048d1..c79c578af42 100644
|
||||
index 2fa585d38b6..9a3890424a0 100644
|
||||
--- a/dlls/winex11.drv/keyboard.c
|
||||
+++ b/dlls/winex11.drv/keyboard.c
|
||||
@@ -67,7 +67,46 @@ static const unsigned int ControlMask = 1 << 2;
|
||||
|
||||
@@ -66,6 +66,46 @@ static const unsigned int ControlMask = 1 << 2;
|
||||
static int min_keycode, max_keycode, keysyms_per_keycode;
|
||||
static KeySym *key_mapping;
|
||||
-static WORD keyc2vkey[256], keyc2scan[256];
|
||||
+static WORD keyc2vkey[256];
|
||||
+
|
||||
static WORD keyc2vkey[256], keyc2scan[256];
|
||||
|
||||
+/* default scancode mapping if keyboard_scancode_detect is FALSE,
|
||||
+ * as most common X11 implementation use hardware scancode + 8.
|
||||
+ */
|
||||
@@ -65,10 +61,12 @@ index 5065d8048d1..c79c578af42 100644
|
||||
+ 0x00e8, 0x00e9, 0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef,
|
||||
+ 0x00f0, 0x00f1, 0x00f2, 0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7,
|
||||
+};
|
||||
|
||||
+
|
||||
+
|
||||
static int NumLockMask, ScrollLockMask, AltGrMask; /* mask in the XKeyEvent state */
|
||||
|
||||
@@ -1750,7 +1789,7 @@ void X11DRV_InitKeyboard( Display *display )
|
||||
static pthread_mutex_t kbd_mutex = PTHREAD_MUTEX_INITIALIZER;
|
||||
@@ -1742,7 +1782,7 @@ void X11DRV_InitKeyboard( Display *display )
|
||||
}
|
||||
TRACE("keycode %u => vkey %04X\n", e2.keycode, vkey);
|
||||
keyc2vkey[e2.keycode] = vkey;
|
||||
@@ -77,7 +75,7 @@ index 5065d8048d1..c79c578af42 100644
|
||||
if ((vkey & 0xff) && vkey_used[(vkey & 0xff)])
|
||||
WARN("vkey %04X is being used by more than one keycode\n", vkey);
|
||||
vkey_used[(vkey & 0xff)] = 1;
|
||||
@@ -1861,7 +1900,7 @@ void X11DRV_InitKeyboard( Display *display )
|
||||
@@ -1853,7 +1893,7 @@ void X11DRV_InitKeyboard( Display *display )
|
||||
#undef VKEY_IF_NOT_USED
|
||||
|
||||
/* If some keys still lack scancodes, assign some arbitrary ones to them now */
|
||||
@@ -85,12 +83,12 @@ index 5065d8048d1..c79c578af42 100644
|
||||
+ for (scan = 0x60, keyc = min_keycode; keyboard_scancode_detect && keyc <= max_keycode; keyc++)
|
||||
if (keyc2vkey[keyc]&&!keyc2scan[keyc]) {
|
||||
const char *ksname;
|
||||
keysym = keycode_to_keysym(display, keyc, 0);
|
||||
keysym = XkbKeycodeToKeysym( display, keyc, 0, 0 );
|
||||
diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h
|
||||
index c02a6c67111..3cf4c39d1d3 100644
|
||||
index 653d2fe80e3..30a9403f185 100644
|
||||
--- a/dlls/winex11.drv/x11drv.h
|
||||
+++ b/dlls/winex11.drv/x11drv.h
|
||||
@@ -444,6 +444,7 @@ extern BOOL show_systray DECLSPEC_HIDDEN;
|
||||
@@ -456,6 +456,7 @@ extern BOOL show_systray DECLSPEC_HIDDEN;
|
||||
extern BOOL grab_pointer DECLSPEC_HIDDEN;
|
||||
extern BOOL grab_fullscreen DECLSPEC_HIDDEN;
|
||||
extern int keyboard_layout DECLSPEC_HIDDEN;
|
||||
@@ -99,10 +97,10 @@ index c02a6c67111..3cf4c39d1d3 100644
|
||||
extern BOOL managed_mode DECLSPEC_HIDDEN;
|
||||
extern BOOL decorated_mode DECLSPEC_HIDDEN;
|
||||
diff --git a/dlls/winex11.drv/x11drv_main.c b/dlls/winex11.drv/x11drv_main.c
|
||||
index dc2eb716d0b..bbdd5ad7010 100644
|
||||
index 7056cf6643d..a9c0a150917 100644
|
||||
--- a/dlls/winex11.drv/x11drv_main.c
|
||||
+++ b/dlls/winex11.drv/x11drv_main.c
|
||||
@@ -80,6 +80,7 @@ BOOL show_systray = TRUE;
|
||||
@@ -77,6 +77,7 @@ BOOL show_systray = TRUE;
|
||||
BOOL grab_pointer = TRUE;
|
||||
BOOL grab_fullscreen = FALSE;
|
||||
int keyboard_layout = -1;
|
||||
@@ -110,7 +108,7 @@ index dc2eb716d0b..bbdd5ad7010 100644
|
||||
BOOL managed_mode = TRUE;
|
||||
BOOL decorated_mode = TRUE;
|
||||
BOOL private_color_map = FALSE;
|
||||
@@ -588,6 +589,9 @@ static void setup_options(void)
|
||||
@@ -586,6 +587,9 @@ static void setup_options(void)
|
||||
if (p) set_reg_string_value( hkey, "KeyboardLayoutList", p, len * sizeof(WCHAR) );
|
||||
free( p );
|
||||
|
||||
@@ -121,5 +119,5 @@ index dc2eb716d0b..bbdd5ad7010 100644
|
||||
default_visual.depth = wcstol( buffer, NULL, 0 );
|
||||
|
||||
--
|
||||
2.39.1
|
||||
2.39.2
|
||||
|
||||
|
Reference in New Issue
Block a user