Removed some more TSX11 functions and files.
diff --git a/dlls/x11drv/keyboard.c b/dlls/x11drv/keyboard.c
index 8b70895..15523e5 100644
--- a/dlls/x11drv/keyboard.c
+++ b/dlls/x11drv/keyboard.c
@@ -29,7 +29,8 @@
#include <X11/keysym.h>
#include "ts_xlib.h"
-#include "ts_xutil.h"
+#include <X11/Xresource.h>
+#include <X11/Xutil.h>
#ifdef HAVE_XKB
#include <X11/XKBlib.h>
#endif
@@ -779,11 +780,12 @@
/* Returns the Windows virtual key code associated with the X event <e> */
+/* x11 lock must be held */
static WORD EVENT_event_to_vkey( XKeyEvent *e)
{
KeySym keysym;
- TSXLookupString(e, NULL, 0, &keysym, NULL);
+ XLookupString(e, NULL, 0, &keysym, NULL);
if ((keysym >= 0xFFAE) && (keysym <= 0xFFB9) && (keysym != 0xFFAF)
&& (e->state & NumLockMask))
@@ -934,7 +936,9 @@
if ((event->keycode >> 8) == 0x10)
event->keycode=(event->keycode & 0xff);
- ascii_chars = TSXLookupString(event, Str, sizeof(Str), &keysym, NULL);
+ wine_tsx11_lock();
+ ascii_chars = XLookupString(event, Str, sizeof(Str), &keysym, NULL);
+ wine_tsx11_unlock();
/* Ignore some unwanted events */
if (keysym == XK_ISO_Prev_Group ||
@@ -970,7 +974,9 @@
keysym, ksname, ascii_chars, Str[0] & 0xff, Str);
}
+ wine_tsx11_lock();
vkey = EVENT_event_to_vkey(event);
+ wine_tsx11_unlock();
TRACE_(key)("keycode 0x%x converted to vkey 0x%x\n",
event->keycode, vkey);
@@ -1024,6 +1030,7 @@
* Called from X11DRV_InitKeyboard
* This routine walks through the defined keyboard layouts and selects
* whichever matches most closely.
+ * X11 lock must be held.
*/
static void
X11DRV_KEYBOARD_DetectLayout (void)
@@ -1054,7 +1061,7 @@
for (keyc = min_keycode; keyc <= max_keycode; keyc++) {
/* get data for keycode from X server */
for (i = 0; i < syms; i++) {
- keysym = TSXKeycodeToKeysym (display, keyc, i);
+ keysym = XKeycodeToKeysym (display, keyc, i);
/* Allow both one-byte and two-byte national keysyms */
if ((keysym < 0x8000) && (keysym != ' '))
ckey[i] = keysym & 0xFF;
@@ -1140,8 +1147,8 @@
pKeyStateTable = key_state_table;
-#ifdef HAVE_XKB
wine_tsx11_lock();
+#ifdef HAVE_XKB
is_xkb = XkbQueryExtension(display,
&xkb_opcode, &xkb_event, &xkb_error,
&xkb_major, &xkb_minor);
@@ -1149,15 +1156,15 @@
/* we have XKB, approximate Windows behaviour */
XkbSetDetectableAutoRepeat(display, True, NULL);
}
- wine_tsx11_unlock();
#endif
- TSXDisplayKeycodes(display, &min_keycode, &max_keycode);
- ksp = TSXGetKeyboardMapping(display, min_keycode,
+ XDisplayKeycodes(display, &min_keycode, &max_keycode);
+ ksp = XGetKeyboardMapping(display, min_keycode,
max_keycode + 1 - min_keycode, &keysyms_per_keycode);
/* We are only interested in keysyms_per_keycode.
There is no need to hold a local copy of the keysyms table */
- TSXFree(ksp);
- mmp = TSXGetModifierMapping(display);
+ XFree(ksp);
+
+ mmp = XGetModifierMapping(display);
kcp = mmp->modifiermap;
for (i = 0; i < 8; i += 1) /* There are 8 modifier keys */
{
@@ -1169,14 +1176,14 @@
int k;
for (k = 0; k < keysyms_per_keycode; k += 1)
- if (TSXKeycodeToKeysym(display, *kcp, k) == XK_Num_Lock)
+ if (XKeycodeToKeysym(display, *kcp, k) == XK_Num_Lock)
{
NumLockMask = 1 << i;
TRACE_(key)("NumLockMask is %x\n", NumLockMask);
}
}
}
- TSXFreeModifiermap(mmp);
+ XFreeModifiermap(mmp);
/* Detect the keyboard layout */
X11DRV_KEYBOARD_DetectLayout();
@@ -1194,7 +1201,7 @@
for (keyc = min_keycode; keyc <= max_keycode; keyc++)
{
e2.keycode = (KeyCode)keyc;
- TSXLookupString(&e2, NULL, 0, &keysym, NULL);
+ XLookupString(&e2, NULL, 0, &keysym, NULL);
vkey = 0; scan = 0;
if (keysym) /* otherwise, keycode not used */
{
@@ -1211,7 +1218,7 @@
/* we seem to need to search the layout-dependent scancodes */
int maxlen=0,maxval=-1,ok;
for (i=0; i<syms; i++) {
- keysym = TSXKeycodeToKeysym(display, keyc, i);
+ keysym = XKeycodeToKeysym(display, keyc, i);
if ((keysym<0x800) && (keysym!=' ')) {
ckey[i] = keysym & 0xFF;
} else {
@@ -1240,7 +1247,7 @@
/* (most Winelib apps ought to be able to work without layout tables!) */
for (i = 0; (i < keysyms_per_keycode) && (!vkey); i++)
{
- keysym = TSXLookupKeysym(&e2, i);
+ keysym = XLookupKeysym(&e2, i);
if ((keysym >= VK_0 && keysym <= VK_9)
|| (keysym >= VK_A && keysym <= VK_Z)) {
vkey = keysym;
@@ -1249,7 +1256,7 @@
for (i = 0; (i < keysyms_per_keycode) && (!vkey); i++)
{
- keysym = TSXLookupKeysym(&e2, i);
+ keysym = XLookupKeysym(&e2, i);
switch (keysym)
{
case ';': vkey = VK_OEM_1; break;
@@ -1288,8 +1295,8 @@
{
char *ksname;
- keysym = TSXLookupKeysym(&e2, i);
- ksname = TSXKeysymToString(keysym);
+ keysym = XLookupKeysym(&e2, i);
+ ksname = XKeysymToString(keysym);
if (!ksname)
ksname = "NoSymbol";
DPRINTF( "%lX (%s) ", keysym, ksname);
@@ -1306,8 +1313,8 @@
for (scan = 0x60, keyc = min_keycode; keyc <= max_keycode; keyc++)
if (keyc2vkey[keyc]&&!keyc2scan[keyc]) {
char *ksname;
- keysym = TSXKeycodeToKeysym(display, keyc, 0);
- ksname = TSXKeysymToString(keysym);
+ keysym = XKeycodeToKeysym(display, keyc, 0);
+ ksname = XKeysymToString(keysym);
if (!ksname) ksname = "NoSymbol";
/* should make sure the scancode is unassigned here, but >=0x60 currently always is */
@@ -1317,12 +1324,13 @@
}
/* Now store one keycode for each modifier. Used to simulate keypresses. */
- kcControl = TSXKeysymToKeycode(display, XK_Control_L);
- kcAlt = TSXKeysymToKeycode(display, XK_Alt_L);
- if (!kcAlt) kcAlt = TSXKeysymToKeycode(display, XK_Meta_L);
- kcShift = TSXKeysymToKeycode(display, XK_Shift_L);
- kcNumLock = TSXKeysymToKeycode(display, XK_Num_Lock);
- kcCapsLock = TSXKeysymToKeycode(display, XK_Caps_Lock);
+ kcControl = XKeysymToKeycode(display, XK_Control_L);
+ kcAlt = XKeysymToKeycode(display, XK_Alt_L);
+ if (!kcAlt) kcAlt = XKeysymToKeycode(display, XK_Meta_L);
+ kcShift = XKeysymToKeycode(display, XK_Shift_L);
+ kcNumLock = XKeysymToKeycode(display, XK_Num_Lock);
+ kcCapsLock = XKeysymToKeycode(display, XK_Caps_Lock);
+ wine_tsx11_unlock();
}
@@ -1432,6 +1440,8 @@
/* LockMask should behave exactly like caps lock - upercase
* the letter keys and thats about it. */
+ wine_tsx11_lock();
+
e.keycode = 0;
/* We exit on the first keycode found, to speed up the thing. */
for (keyc=min_keycode; (keyc<=max_keycode) && (!e.keycode) ; keyc++)
@@ -1447,22 +1457,27 @@
}
if ((wCode>=VK_NUMPAD0) && (wCode<=VK_NUMPAD9))
- e.keycode = TSXKeysymToKeycode(e.display, wCode-VK_NUMPAD0+XK_KP_0);
+ e.keycode = XKeysymToKeycode(e.display, wCode-VK_NUMPAD0+XK_KP_0);
if (wCode==VK_DECIMAL)
- e.keycode = TSXKeysymToKeycode(e.display, XK_KP_Decimal);
+ e.keycode = XKeysymToKeycode(e.display, XK_KP_Decimal);
if (!e.keycode)
{
WARN("Unknown virtual key %X !!! \n", wCode);
+ wine_tsx11_unlock();
return 0; /* whatever */
}
TRACE("Found keycode %d (0x%2X)\n",e.keycode,e.keycode);
- if (TSXLookupString(&e, s, 2, &keysym, NULL))
- returnMVK (*s);
+ if (XLookupString(&e, s, 2, &keysym, NULL))
+ {
+ wine_tsx11_unlock();
+ returnMVK (*s);
+ }
TRACE("returning no ANSI.\n");
+ wine_tsx11_unlock();
return 0;
}
@@ -1715,6 +1730,7 @@
TRACE_(key)("(%04X, %04X) : faked state = %X\n",
virtKey, scanCode, e.state);
+ wine_tsx11_lock();
/* We exit on the first keycode found, to speed up the thing. */
for (keyc=min_keycode; (keyc<=max_keycode) && (!e.keycode) ; keyc++)
{ /* Find a keycode that could have generated this virtual key */
@@ -1729,19 +1745,22 @@
}
if ((virtKey>=VK_NUMPAD0) && (virtKey<=VK_NUMPAD9))
- e.keycode = TSXKeysymToKeycode(e.display, virtKey-VK_NUMPAD0+XK_KP_0);
+ e.keycode = XKeysymToKeycode(e.display, virtKey-VK_NUMPAD0+XK_KP_0);
if (virtKey==VK_DECIMAL)
- e.keycode = TSXKeysymToKeycode(e.display, XK_KP_Decimal);
+ e.keycode = XKeysymToKeycode(e.display, XK_KP_Decimal);
if (!e.keycode)
{
WARN("Unknown virtual key %X !!! \n",virtKey);
+ wine_tsx11_unlock();
return virtKey; /* whatever */
}
else TRACE("Found keycode %d (0x%2X)\n",e.keycode,e.keycode);
- ret = TSXLookupString(&e, (LPVOID)lpChar, 2, &keysym, NULL);
+ ret = XLookupString(&e, (LPVOID)lpChar, 2, &keysym, NULL);
+ wine_tsx11_unlock();
+
if (ret == 0)
{
BYTE dead_char;