diff --git a/Makefile.in b/Makefile.in
index 782eb2b..b83267d 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -20,17 +20,13 @@ CFLAGS = @CFLAGS@ @X_CFLAGS@ @DEFS@ -DKEYMAP_PATH=\"$(KEYMAP_PATH)\"
LDFLAGS = @LDFLAGS@ @LIBS@ @X_LIBS@ @X_EXTRA_LIBS@
STRIP = @STRIP@
-TARGETS = rdesktop @RDP2VNCTARGET@
-VNCINC = @VNCINC@
-LDVNC = @LDVNC@
-VNCLINK = @VNCLINK@
+TARGETS = rdesktop
SOUNDOBJ = @SOUNDOBJ@
SCARDOBJ = @SCARDOBJ@
CREDSSPOBJ = @CREDSSPOBJ@
RDPOBJ = tcp.o asn.o iso.o mcs.o secure.o licence.o rdp.o orders.o bitmap.o cache.o rdp5.o channels.o rdpdr.o serial.o printer.o disk.o parallel.o printercache.o mppc.o pstcache.o lspci.o seamless.o ssl.o utils.o
X11OBJ = rdesktop.o xwin.o xkeymap.o ewmhints.o xclip.o cliprdr.o ctrl.o
-VNCOBJ = vnc/rdp2vnc.o vnc/vnc.o vnc/xkeymap.o vnc/x11stubs.o
.PHONY: all
all: $(TARGETS)
@@ -38,21 +34,6 @@ all: $(TARGETS)
rdesktop: $(X11OBJ) $(SOUNDOBJ) $(RDPOBJ) $(SCARDOBJ) $(CREDSSPOBJ)
$(CC) $(CFLAGS) -o rdesktop $(X11OBJ) $(SOUNDOBJ) $(RDPOBJ) $(SCARDOBJ) $(CREDSSPOBJ) $(LDFLAGS) -lX11
-rdp2vnc: $(VNCOBJ) $(SOUNDOBJ) $(RDPOBJ) $(SCARDOBJ) $(CREDSSPOBJ)
- $(VNCLINK) $(CFLAGS) -o rdp2vnc $(VNCOBJ) $(SOUNDOBJ) $(RDPOBJ) $(SCARDOBJ) $(CREDSSPOBJ) $(LDFLAGS) $(LDVNC)
-
-vnc/rdp2vnc.o: rdesktop.c
- $(CC) $(CFLAGS) $(VNCINC) -DRDP2VNC -o vnc/rdp2vnc.o -c rdesktop.c
-
-vnc/vnc.o: vnc/vnc.c
- $(CC) $(CFLAGS) $(VNCINC) -DRDP2VNC -o vnc/vnc.o -c vnc/vnc.c
-
-vnc/xkeymap.o: xkeymap.c
- $(CC) $(CFLAGS) $(VNCINC) -DRDP2VNC -o vnc/xkeymap.o -c xkeymap.c
-
-vnc/x11stubs.o: vnc/x11stubs.c
- $(CC) $(CFLAGS) $(VNCINC) -o vnc/x11stubs.o -c vnc/x11stubs.c
-
.PHONY: install
install: installbin installkeymaps installman
@@ -91,7 +72,7 @@ proto:
.PHONY: clean
clean:
- rm -f *.o *~ vnc/*.o vnc/*~ rdesktop rdp2vnc
+ rm -f *.o *~ rdesktop
.PHONY: distclean
distclean: clean
diff --git a/configure.ac b/configure.ac
index a969ad5..c9bc557 100644
--- a/configure.ac
+++ b/configure.ac
@@ -234,28 +234,6 @@ AC_ARG_WITH(egd-socket,
AC_DEFINE_UNQUOTED(EGD_SOCKET, "$EGD_SOCKET")
-#
-# rdp2vnc
-#
-vncserverconfig=libvncserver-config
-AC_ARG_WITH(libvncserver-config,
- [ --with-libvncserver-config=CMD use CMD as libvncserver-config],
- [vncserverconfig="$withval"]
-)
-AC_ARG_WITH(libvncserver,
- [ --with-libvncserver make rdp2vnc],
- [
- VNCINC=`$vncserverconfig --cflags`
- AC_SUBST(VNCINC)
- LDVNC=`$vncserverconfig --libs`
- AC_SUBST(LDVNC)
- VNCLINK=`$vncserverconfig --link`
- AC_SUBST(VNCLINK)
- RDP2VNCTARGET="rdp2vnc"
- AC_SUBST(RDP2VNCTARGET)
- ]
-)
-
#
# sound
#
diff --git a/indent-all.sh b/indent-all.sh
index 0f1185d..bfa335d 100755
--- a/indent-all.sh
+++ b/indent-all.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-indent -bli0 -i8 -cli8 -npcs -l100 *.h *.c vnc/*.h vnc/*.c
+indent -bli0 -i8 -cli8 -npcs -l100 *.h *.c
# Tweak in order to support both indent 2.2.10 and 2.2.11
perl -pi -e 's|!!|! !|g' *.c
diff --git a/rdesktop.c b/rdesktop.c
index 63a449d..fa6997a 100644
--- a/rdesktop.c
+++ b/rdesktop.c
@@ -152,13 +152,6 @@ extern RDPDR_DEVICE g_rdpdr_device[];
extern uint32 g_num_devices;
extern char *g_rdpdr_clientname;
-#ifdef RDP2VNC
-extern int rfb_port;
-extern int defer_time;
-void
-rdp2vnc_connect(char *server, uint32 flags, char *domain, char *password,
- char *shell, char *directory);
-#endif
/* Display usage information */
static void
usage(char *program)
@@ -169,10 +162,6 @@ usage(char *program)
fprintf(stderr, "See http://www.rdesktop.org/ for more information.\n\n");
fprintf(stderr, "Usage: %s [options] server[:port]\n", program);
-#ifdef RDP2VNC
- fprintf(stderr, " -V: vnc port\n");
- fprintf(stderr, " -Q: defer time (ms)\n");
-#endif
fprintf(stderr, " -u: user name\n");
fprintf(stderr, " -d: domain\n");
fprintf(stderr, " -s: shell / seamless application to start remotely\n");
@@ -565,30 +554,11 @@ main(int argc, char *argv[])
g_num_devices = 0;
-#ifdef RDP2VNC
-#define VNCOPT "V:Q:"
-#else
-#define VNCOPT
-#endif
while ((c = getopt(argc, argv,
- VNCOPT "A:u:L:d:s:c:p:n:k:g:o:fbBeEitmzCDKS:T:NX:a:x:Pr:045vh?")) != -1)
+ "A:u:L:d:s:c:p:n:k:g:o:fbBeEitmzCDKS:T:NX:a:x:Pr:045vh?")) != -1)
{
switch (c)
{
-#ifdef RDP2VNC
- case 'V':
- rfb_port = strtol(optarg, NULL, 10);
- if (rfb_port < 100)
- rfb_port += 5900;
- break;
-
- case 'Q':
- defer_time = strtol(optarg, NULL, 10);
- if (defer_time < 0)
- defer_time = 0;
- break;
-#endif
-
case 'A':
g_seamless_rdp = True;
STRNCPY(g_seamless_shell, optarg, sizeof(g_seamless_shell));
@@ -1096,11 +1066,6 @@ main(int argc, char *argv[])
strncat(g_title, server, sizeof(g_title) - sizeof("rdesktop - "));
}
-#ifdef RDP2VNC
- rdp2vnc_connect(server, flags, domain, g_password, shell, directory);
- return EX_OK;
-#else
-
/* Only startup ctrl functionality is seamless are used for now. */
if (g_use_ctrl && g_seamless_rdp)
{
@@ -1241,7 +1206,6 @@ main(int argc, char *argv[])
return handle_disconnect_reason(deactivated, ext_disc_reason);
-#endif
if (g_redirect_username)
xfree(g_redirect_username);
diff --git a/vnc/vnc.c b/vnc/vnc.c
deleted file mode 100644
index 427b623..0000000
--- a/vnc/vnc.c
+++ /dev/null
@@ -1,1375 +0,0 @@
-/*
- rdesktop: A Remote Desktop Protocol client.
- User interface services - VNC target
- Copyright (C) Matthew Chapman 1999-2000
- Copyright (C) 2000 Tim Edmonds
- Copyright (C) 2001 James "Wez" Weatherall
- Copyright (C) 2001 Johannes E. Schindelin
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-*/
-
-
-#include
-#include
-
-#ifdef WIN32
-#define close closesocket
-#define strcasecmp _strcmpi
-#else
-#include
-#include /* timeval */
-#include
-#endif
-
-#include "../rdesktop.h"
-#undef VERSION
-
-#ifdef WIN32
-#define HBITMAP R_HBITMAP
-#define HCURSOR R_HCURSOR
-#define WORD R_WORD
-#endif
-#include "vnc.h"
-#ifdef WIN32
-#undef HBITMAP
-#undef HCURSOR
-#undef WORD
-#endif
-
-#include
-#include
-extern int ListenOnTCPPort(int port);
-extern int rfbClientSocket;
-
-#include
-
-#define BITSPERBYTES 8
-#define TOBYTES(bits) ((bits)/BITSPERBYTES)
-
-extern int g_width;
-extern int g_height;
-extern int keylayout;
-extern BOOL sendmotion;
-#ifdef ENABLE_SHADOW
-extern int client_counter;
-#endif
-
-
-int rfb_port = 5923;
-int defer_time = 5;
-int rfbClientSocket = 0;
-static rfbScreenInfoPtr server = NULL;
-static vncBuffer *frameBuffer = NULL;
-static uint8_t reverseByte[0x100];
-BOOL g_enable_compose = False;
-int g_display = 0;
-
-/* ignored */
-BOOL owncolmap = False;
-BOOL enable_compose = False;
-
-void
-vncHideCursor()
-{
- if (server->clientHead)
- rfbUndrawCursor(server);
-}
-
-/* -=- mouseLookup
- * Table converting mouse button number (0-2) to flag
- */
-
-int mouseLookup[3] = {
- MOUSE_FLAG_BUTTON1, MOUSE_FLAG_BUTTON3, MOUSE_FLAG_BUTTON2
-};
-
-int clipX, clipY, clipW, clipH;
-
-BOOL
-vncwinClipRect(int *x, int *y, int *cx, int *cy)
-{
- if (*x + *cx > clipX + clipW)
- *cx = clipX + clipW - *x;
- if (*y + *cy > clipY + clipH)
- *cy = clipY + clipH - *y;
- if (*x < clipX)
- {
- *cx -= clipX - *x;
- *x = clipX;
- }
- if (*y < clipY)
- {
- *cy -= clipY - *y;
- *y = clipY;
- }
- if (*cx < 0 || *cy < 0)
- *cx = *cy = 0;
- return (*cx > 0 && *cy > 0 && *x < server->width && *y < server->height);
-}
-
-void
-xwin_toggle_fullscreen(void)
-{
-}
-
-static int lastbuttons = 0;
-
-#define FIRST_MODIFIER XK_Shift_L
-#define LAST_MODIFIER XK_Hyper_R
-
-static BOOL keystate[LAST_MODIFIER - FIRST_MODIFIER];
-
-void
-init_keyboard()
-{
- int i;
- for (i = 0; i < LAST_MODIFIER - FIRST_MODIFIER; i++)
- keystate[i] = 0;
-
- xkeymap_init();
-}
-
-BOOL
-get_key_state(unsigned int state, uint32 keysym)
-{
- if (keysym >= FIRST_MODIFIER && keysym <= LAST_MODIFIER)
- return keystate[keysym - FIRST_MODIFIER];
- return 0;
-}
-
-void
-vncKey(rfbBool down, rfbKeySym keysym, struct _rfbClientRec *cl)
-{
- uint32 ev_time = time(NULL);
- key_translation tr = { 0, 0 };
-
- if (keysym >= FIRST_MODIFIER && keysym <= LAST_MODIFIER)
- {
- /* TODO: fake local state */
- keystate[keysym - FIRST_MODIFIER] = down;
- }
-
- if (down)
- {
- /* TODO: fake local state */
- if (handle_special_keys(keysym, 0, ev_time, True))
- return;
-
- /* TODO: fake local state */
- tr = xkeymap_translate_key(keysym, 0, 0);
-
- if (tr.scancode == 0)
- return;
-
- ensure_remote_modifiers(ev_time, tr);
-
- rdp_send_scancode(ev_time, RDP_KEYPRESS, tr.scancode);
- }
- else
- {
- /* todO: fake local state */
- if (handle_special_keys(keysym, 0, ev_time, False))
- return;
-
- /* todO: fake local state */
- tr = xkeymap_translate_key(keysym, 0, 0);
-
- if (tr.scancode == 0)
- return;
-
- rdp_send_scancode(ev_time, RDP_KEYRELEASE, tr.scancode);
- }
-}
-
-void
-vncMouse(int buttonMask, int x, int y, struct _rfbClientRec *cl)
-{
- int b;
- uint32 ev_time = time(NULL);
-
- rdp_send_input(ev_time, RDP_INPUT_MOUSE, MOUSE_FLAG_MOVE, x, y);
-
- for (b = 0; b < 3; b++)
- {
- int bb = 1 << (b);
- if (!(lastbuttons & bb) && (buttonMask & bb))
- {
- rdp_send_input(ev_time, RDP_INPUT_MOUSE,
- (mouseLookup[b]) | MOUSE_FLAG_DOWN, x, y);
- }
- else if ((lastbuttons & bb) && !(buttonMask & bb))
- {
- rdp_send_input(ev_time, RDP_INPUT_MOUSE, (mouseLookup[b]), x, y);
- }
- }
- lastbuttons = buttonMask;
-
- /* handle cursor */
- rfbDefaultPtrAddEvent(buttonMask, x, y, cl);
-}
-
-
-void
-rdp2vnc_connect(char *server, uint32 flags, char *domain, char *password,
- char *shell, char *directory)
-{
- struct sockaddr addr;
- fd_set fdset;
- struct timeval tv;
- int rfbListenSock, addrlen = sizeof(addr);
-
- rfbListenSock = rfbListenOnTCPPort(rfb_port);
- fprintf(stderr, "Listening on VNC port %d\n", rfb_port);
- if (rfbListenSock <= 0)
- error("Cannot listen on port %d", rfb_port);
- else
- while (1)
- {
- FD_ZERO(&fdset);
- FD_SET(rfbListenSock, &fdset);
- tv.tv_sec = 5;
- tv.tv_usec = 0;
- if (select(rfbListenSock + 1, &fdset, NULL, NULL, &tv) > 0)
- {
- rfbClientSocket = accept(rfbListenSock, &addr, &addrlen);
- if (rfbClientSocket < 0)
- {
- error("Error accepting client (%d: %s.\n",
- errno, strerror(errno));
- continue;
- }
- ui_create_window();
- if (!rdp_connect(server, flags, domain, password, shell, directory))
- {
- error("Error connecting to RDP server.\n");
- continue;
- }
- if (!fork())
- {
- BOOL deactivated;
- uint32_t ext_disc_reason;
- printf("Connection successful.\n");
- rdp_main_loop(&deactivated, &ext_disc_reason);
- printf("Disconnecting...\n");
- rdp_disconnect();
- ui_destroy_window();
- exit(0);
- }
- }
- }
-}
-
-
-
-
-
-extern char g_title[];
-BOOL
-ui_create_window()
-{
- int i;
-
- for (i = 0; i < 0x100; i++)
- reverseByte[i] =
- (((i >> 7) & 1)) | (((i >> 6) & 1) << 1) | (((i >> 5) & 1) << 2) |
- (((i >> 4) & 1) << 3) | (((i >> 3) & 1) << 4) | (((i >> 2) & 1) << 5) |
- (((i >> 1) & 1) << 6) | (((i >> 0) & 1) << 7);
-
- server = rfbGetScreen(0, NULL, g_width, g_height, 8, 1, 1);
- server->desktopName = g_title;
- server->frameBuffer = (char *) malloc(g_width * g_height);
- server->ptrAddEvent = vncMouse;
- server->kbdAddEvent = vncKey;
-#ifdef ENABLE_SHADOW
- server->httpPort = 6124 + client_counter;
- server->port = 5924 + client_counter;
- rfbInitSockets(server);
- server->alwaysShared = TRUE;
- server->neverShared = FALSE;
-#else
- server->port = -1;
- server->alwaysShared = FALSE;
- server->neverShared = FALSE;
-#endif
- server->inetdSock = rfbClientSocket;
- server->serverFormat.trueColour = FALSE; /* activate colour maps */
- server->deferUpdateTime = defer_time;
-
- frameBuffer = (vncBuffer *) malloc(sizeof(vncBuffer));
- frameBuffer->w = g_width;
- frameBuffer->h = g_height;
- frameBuffer->linew = g_width;
- frameBuffer->data = server->frameBuffer;
- frameBuffer->owner = FALSE;
- frameBuffer->format = &server->serverFormat;
-
- ui_set_clip(0, 0, g_width, g_height);
-
- rfbInitServer(server);
-#ifndef ENABLE_SHADOW
- server->port = rfb_port;
-#else
- fprintf(stderr, "server listening on port %d (socket %d)\n", server->port,
- server->listenSock);
-#endif
-
- init_keyboard();
-
- return (server != NULL);
-}
-
-void
-ui_destroy_window()
-{
- rfbCloseClient(server->clientHead);
-}
-
-
-int
-ui_select(int rdpSocket)
-{
- fd_set fds;
- struct timeval tv;
- int n, m = server->maxFd;
-
- if (rdpSocket > m)
- m = rdpSocket;
- while (1)
- {
- fds = server->allFds;
- FD_SET(rdpSocket, &fds);
- tv.tv_sec = defer_time / 1000;
- tv.tv_usec = (defer_time % 1000) * 1000;
- n = select(m + 1, &fds, NULL, NULL, &tv);
- rfbProcessEvents(server, 0);
- /* if client is gone, close connection */
- if (!server->clientHead)
- close(rdpSocket);
- if (FD_ISSET(rdpSocket, &fds))
- return 1;
- }
- return 0;
-}
-
-void
-ui_move_pointer(int x, int y)
-{
- // TODO: Is there a way to send x,y even if cursor encoding is active?
- rfbUndrawCursor(server);
- server->cursorX = x;
- server->cursorY = y;
-}
-
-HBITMAP
-ui_create_bitmap(int width, int height, uint8 * data)
-{
- vncBuffer *buf;
-
- buf = vncNewBuffer(width, height, 8);
- memcpy(buf->data, data, width * height);
-
- return (HBITMAP) buf;
-}
-
-void
-ui_paint_bitmap(int x, int y, int cx, int cy, int width, int height, uint8 * data)
-{
- vncBuffer *buf;
- buf = ui_create_bitmap(width, height, data);
- vncCopyBlitFrom(server, x, y, cx, cy, buf, 0, 0);
- vncDeleteBuffer(buf);
-}
-
-void
-ui_destroy_bitmap(HBITMAP bmp)
-{
- vncDeleteBuffer((vncBuffer *) bmp);
-}
-
-uint8_t
-vncLookupColour(rfbColourMap * colourMap, uint8_t * p)
-{
- uint8_t i, i1 = 0;
- uint8_t *cm = colourMap->data.bytes;
- uint32_t m, m1 = abs(cm[0] - p[0]) + abs(cm[1] - p[1]) + abs(cm[2] - p[2]);
- for (i = 1; i < 255; i++)
- {
- m = abs(cm[i * 3] - p[0]) + abs(cm[i * 3 + 1] - p[1]) + abs(cm[i * 3 + 2] - p[2]);
- if (m < m1)
- {
- m1 = m;
- i1 = i;
- }
- }
- return (i1);
-}
-
-HCURSOR
-ui_create_cursor(unsigned int x, unsigned int y, int width, int height, uint8 * mask, uint8 * data)
-{
- int i, j;
- uint8_t *d0, *d1;
- uint8_t *cdata;
- uint8_t white[3] = { 0xff, 0xff, 0xff };
- uint8_t black[3] = { 0, 0, 0 };
- uint8_t *cur;
- rfbCursorPtr cursor;
- rfbColourMap *colourMap = &server->colourMap;
-
- cdata = xmalloc(sizeof(uint8_t) * width * height);
- d0 = xmalloc(sizeof(uint32_t) * width * height / 4);
- d1 = (uint8_t *) mask;
- for (j = 0; j < height; j++)
- for (i = 0; i < width / 8; i++)
- {
- d0[j * width / 8 + i] = d1[(height - 1 - j) * width / 8 + i] ^ 0xffffffff;
- }
- for (j = 0; j < height; j++)
- {
- for (i = 0; i < width; i++)
- {
- //strange that the pointer is in 24bit depth when everything
- //else is in 8bit palletized.
- cur = data + ((height - 1 - j) * width + i) * 3;
- if (cur[0] > 0x80 || cur[1] > 0x80 || cur[2] > 0x80)
- {
- if (!(d0[(j * width + i) / 8] & (0x80 >> (i & 7))))
- {
- /* text cursor! */
- cdata[j * width + i] = vncLookupColour(colourMap, black);
- d0[(j * width + i) / 8] |= 0x80 >> (i & 7);
- }
- else
- cdata[j * width + i] = vncLookupColour(colourMap, white);
- }
- else
- cdata[j * width + i] = vncLookupColour(colourMap, cur);
- }
- }
- cursor = (rfbCursorPtr) xmalloc(sizeof(rfbCursor));
- cursor->width = width;
- cursor->height = height;
- cursor->xhot = x;
- cursor->yhot = y;
- cursor->mask = (char *) d0;
- cursor->source = 0;
- cursor->richSource = cdata;
- cursor->cleanup = 0; // workaround: this produces a memleak
-
- cursor->backRed = cursor->backGreen = cursor->backBlue = 0xffff;
- cursor->foreRed = cursor->foreGreen = cursor->foreBlue = 0;
-
- return (HCURSOR) cursor;
-}
-
-void
-ui_set_cursor(HCURSOR cursor)
-{
- /* FALSE means: don't delete old cursor */
- rfbSetCursor(server, (rfbCursorPtr) cursor, FALSE);
-}
-
-void
-ui_destroy_cursor(HCURSOR cursor)
-{
- if (cursor)
- rfbFreeCursor((rfbCursorPtr) cursor);
-}
-
-void
-ui_set_null_cursor(void)
-{
- rfbSetCursor(server, 0, FALSE);
-}
-
-HGLYPH
-ui_create_glyph(int width, int height, uint8 * data)
-{
- int x, y;
- vncBuffer *buf;
-
- buf = vncNewBuffer(width, height, 8);
-
- //data is padded to multiple of 16bit line lengths
- for (y = 0; y < height; y++)
- {
- for (x = 0; x < width; x++)
- {
- int byte = x / 8 + (y * ((width + 7) / 8));
- byte = rfbEndianTest ? reverseByte[data[byte]] : data[byte];
- byte = (byte >> (x & 7)) & 0x01;
- vncSetPixel(buf, x, y, byte ? 0x7f : 0x00);
- }
- }
-
- return (HGLYPH) buf;
-}
-
-void
-ui_destroy_glyph(HGLYPH glyph)
-{
- ui_destroy_bitmap((HBITMAP) glyph);
-}
-
-HCOLOURMAP
-ui_create_colourmap(COLOURMAP * colours)
-{
- int i;
- rfbColourMap *map = vncNewColourMap(server, colours->ncolours);
- for (i = 0; i < colours->ncolours; i++)
- {
- vncSetColourMapEntry(map, i, colours->colours[i].red,
- colours->colours[i].green, colours->colours[i].blue);
- }
- return map;
-}
-
-void
-ui_destroy_colourmap(HCOLOURMAP map)
-{
- vncDeleteColourMap(map);
-}
-
-void
-ui_set_colourmap(HCOLOURMAP map)
-{
- vncSetColourMap(server, map);
-}
-
-void
-ui_set_clip(int x, int y, int cx, int cy)
-{
- clipX = x;
- clipY = y;
- clipW = cx;
- clipH = cy;
-}
-
-void
-ui_reset_clip()
-{
- clipX = 0;
- clipY = 0;
- clipW = 64000;
- clipH = 64000;
-}
-
-void
-ui_bell()
-{
- rfbSendBell(server);
-}
-
-void
-ui_destblt(uint8 opcode,
- /* dest */ int x, int y, int cx, int cy)
-{
- int i;
- vncBuffer *buf;
-
- switch (opcode)
- {
- case 0:
- case 15:
- ui_rect(x, y, cx, cy, 0xff);
- break;
- case 5: // invert
- buf = vncGetRect(server, x, y, cx, cy);
- for (i = 0; i < cx * cy; i++)
- ((char *) (buf->data))[i] = !((char *) (buf->data))[i];
- break;
- default:
- unimpl("ui_destblt: opcode=%d %d,%d %dx%d\n", opcode, x, y, cx, cy);
- }
-}
-
-void
-ui_patblt(uint8 opcode,
- /* dest */ int x, int y, int cx, int cy,
- /* brush */ BRUSH * brush, int bgcolour, int fgcolour)
-{
- switch (brush->style)
- {
- case 0: /* Solid */
- switch (opcode)
- {
- case ROP2_XOR:
- {
- int xx, yy;
- vncBuffer *fill = vncNewBuffer(cx, cy, 8);
- for (yy = 0; yy < cy; yy++)
- for (xx = 0; xx < cx; xx++)
- vncSetPixel(fill, xx, yy, fgcolour);
- if (vncwinClipRect(&x, &y, &cx, &cy))
- vncXorBlitFrom(server, x, y, cx, cy, fill,
- 0, 0);
- break;
- }
-
- default:
- if (vncwinClipRect(&x, &y, &cx, &cy))
- vncSetRect(server, x, y, cx, cy, fgcolour);
- }
- break;
-
- case 3: /* Pattern */
- {
- int xx, yy;
- vncBuffer *fill;
- fill = (vncBuffer *) ui_create_glyph(8, 8, brush->pattern);
-
- for (yy = 0; yy < 8; yy++)
- {
- for (xx = 0; xx < 8; xx++)
- {
- vncSetPixel(fill, xx, yy,
- vncGetPixel(fill, xx,
- yy) ? fgcolour : bgcolour);
- }
- }
-
- if (vncwinClipRect(&x, &y, &cx, &cy))
- {
- switch (opcode)
- {
- case ROP2_COPY:
- vncCopyBlitFrom(server, x, y, cx, cy, fill,
- 0, 0);
- break;
- case ROP2_XOR:
- vncXorBlitFrom(server, x, y, cx, cy, fill,
- 0, 0);
- break;
- default:
- unimpl("pattern blit (%d,%d) opcode=%d bg=%d fg=%d\n", x, y, opcode, bgcolour, fgcolour);
- vncCopyBlitFrom(server, x, y, cx, cy, fill,
- 0, 0);
- break;
- }
- }
-
- ui_destroy_glyph((HGLYPH) fill);
- break;
-
- }
- default:
- unimpl("brush %d\n", brush->style);
- }
-}
-
-void
-ui_screenblt(uint8 opcode,
- /* dest */ int x, int y, int cx, int cy,
- /* src */ int srcx, int srcy)
-{
- int ox, oy;
-
- ox = x;
- oy = y;
- if (vncwinClipRect(&x, &y, &cx, &cy))
- {
- //if we clipped top or left, we have to adjust srcx,srcy;
- srcx += x - ox;
- srcy += y - oy;
- vncCopyBlit(server, x, y, cx, cy, srcx, srcy);
- }
-}
-
-void
-ui_memblt(uint8 opcode,
- /* dest */ int x, int y, int cx, int cy,
- /* src */ HBITMAP src, int srcx, int srcy)
-{
- int ox, oy;
- ox = x;
- oy = y;
-
- if (vncwinClipRect(&x, &y, &cx, &cy))
- {
- //if we clipped top or left, we have to adjust srcx,srcy;
- srcx += x - ox;
- srcy += y - oy;
- switch (ROP2_S(opcode))
- {
- case ROP2_OR:
- vncTransBlitFrom(server, x, y, cx, cy, (vncBuffer *) src, srcx,
- srcy, 0x0);
- break;
- case ROP2_XOR:
- vncXorBlitFrom(server, x, y, cx, cy, (vncBuffer *) src, srcx, srcy);
- break;
- case ROP2_AND:
- vncAndBlitFrom(server, x, y, cx, cy, (vncBuffer *) src, srcx, srcy);
- break;
- case ROP2_COPY:
- vncCopyBlitFrom(server, x, y, cx, cy, (vncBuffer *) src, srcx,
- srcy);
- break;
- default:
- unimpl("ui_memblt: op%d %d,%d %dx%d\n", opcode, x, y, cx, cy);
- vncCopyBlitFrom(server, x, y, cx, cy, (vncBuffer *) src, srcx,
- srcy);
- break;
- }
- }
-}
-
-void
-ui_triblt(uint8 opcode,
- /* dest */ int x, int y, int cx, int cy,
- /* src */ HBITMAP src, int srcx, int srcy,
- /* brush */ BRUSH * brush, int bgcolour, int fgcolour)
-{
- /* This is potentially difficult to do in general. Until someone
- comes up with a more efficient way of doing it I am using cases. */
-
- switch (opcode)
- {
- case 0x69: /* PDSxxn */
- ui_memblt(ROP2_XOR, x, y, cx, cy, src, srcx, srcy);
- ui_patblt(ROP2_NXOR, x, y, cx, cy, brush, bgcolour, fgcolour);
- break;
-
- case 0xb8: /* PSDPxax */
- ui_patblt(ROP2_XOR, x, y, cx, cy, brush, bgcolour, fgcolour);
- ui_memblt(ROP2_AND, x, y, cx, cy, src, srcx, srcy);
- ui_patblt(ROP2_XOR, x, y, cx, cy, brush, bgcolour, fgcolour);
- break;
-
- default:
- unimpl("ui_triblt 1x%x\n", opcode);
- ui_memblt(ROP2_COPY, x, y, cx, cy, src, srcx, srcy);
- }
-
-}
-
-void
-ui_line(uint8 opcode,
- /* dest */ int startx, int starty, int endx, int endy,
- /* pen */ PEN * pen)
-{
- //vncSetRect(server,startx,starty,1+endx-startx,endy-starty,pen->colour);
- //unimpl("drawline: pen colour=%d\n",pen->colour);
- /* TODO: implement opcodes */
- rfbDrawLine(server, startx, starty, endx, endy, pen->colour);
-}
-
-void
-ui_rect(
- /* dest */ int x, int y, int cx, int cy,
- /* brush */ int colour)
-{
- if (vncwinClipRect(&x, &y, &cx, &cy))
- {
- vncSetRect(server, x, y, cx, cy, colour);
- }
-}
-
-void
-ui_draw_glyph(int mixmode,
- /* dest */ int x, int y, int cx, int cy,
- /* src */ HGLYPH glyph, int srcx, int srcy,
- /* colours */ int bgcolour, int fgcolour)
-{
- int xx, yy;
- int ox, oy;
- vncBuffer *buf = vncDupBuffer(glyph);
-
- x &= 0xffff;
- y &= 0xffff;
-
- /* yes, sometimes same fgcolour and bgcolour are sent, but because
- * of transparency, we have to change that! */
- if (mixmode == MIX_TRANSPARENT && fgcolour == bgcolour)
- bgcolour = fgcolour ^ 0xff;
-
- ox = x;
- oy = y;
-
- for (yy = srcy; yy < srcy + cy; yy++)
- {
- for (xx = srcx; xx < srcx + cx; xx++)
- {
- vncSetPixel(buf, xx, yy, vncGetPixel(buf, xx, yy) ? fgcolour : bgcolour);
- }
- }
-
- switch (mixmode)
- {
- case MIX_TRANSPARENT:
- if (vncwinClipRect(&x, &y, &cx, &cy))
- {
- //if we clipped top or left, we have to adjust srcx,srcy;
- srcx += x - ox;
- srcy += y - oy;
- vncTransBlitFrom(server, x, y, cx, cy, buf, srcx, srcy, bgcolour);
- }
- break;
- case MIX_OPAQUE:
- if (vncwinClipRect(&x, &y, &cx, &cy))
- {
- //if we clipped top or left, we have to adjust srcx,srcy;
- srcx += x - ox;
- srcy += y - oy;
- vncCopyBlitFrom(server, x, y, cx, cy, buf, srcx, srcy);
- }
- break;
-
- default:
- unimpl("mix %d\n", mixmode);
- }
- vncDeleteBuffer(buf);
-}
-
-#define DO_GLYPH(ttext,idx) \
-{\
- glyph = cache_get_font (font, ttext[idx]);\
- if (!(flags & TEXT2_IMPLICIT_X))\
- {\
- offset = ttext[++idx];\
- if ((offset & 0x80))\
- offset = ((offset & 0x7f) << 8) | ttext[++idx];\
- if (flags & TEXT2_VERTICAL)\
- y += offset;\
- else\
- x += offset;\
- }\
- if (glyph != NULL)\
- {\
- ui_draw_glyph (mixmode, x + (short) glyph->offset,\
- y + (short) glyph->baseline,\
- glyph->width, glyph->height,\
- glyph->pixmap, 0, 0, bgcolour, fgcolour);\
- if (flags & TEXT2_IMPLICIT_X)\
- x += glyph->width;\
- }\
-}
-
-
-void
-ui_draw_text(uint8 font, uint8 flags, int mixmode, int x, int y,
- int clipx, int clipy, int clipcx, int clipcy,
- int boxx, int boxy, int boxcx, int boxcy,
- int bgcolour, int fgcolour, uint8 * text, uint8 length)
-{
- FONTGLYPH *glyph;
- int i, j, offset;
- DATABLOB *entry;
-
- if (boxcx > 1)
- {
- ui_rect(boxx, boxy, boxcx, boxcy, bgcolour);
- }
- else if (mixmode == MIX_OPAQUE)
- {
- ui_rect(clipx, clipy, clipcx, clipcy, bgcolour);
- }
-
- /* Paint text, character by character */
- for (i = 0; i < length;)
- {
- switch (text[i])
- {
- case 0xff:
- if (i + 2 < length)
- cache_put_text(text[i + 1], &(text[i - text[i + 2]]),
- text[i + 2]);
- else
- {
- error("this shouldn't be happening\n");
- break;
- }
- /* this will move pointer from start to first character after FF command */
- length -= i + 3;
- text = &(text[i + 3]);
- i = 0;
- break;
-
- case 0xfe:
- entry = cache_get_text(text[i + 1]);
- if (entry != NULL)
- {
- if ((((uint8 *) (entry->data))[1] == 0)
- && (!(flags & TEXT2_IMPLICIT_X)))
- {
- if (flags & 0x04) /* vertical text */
- y += text[i + 2];
- else
- x += text[i + 2];
- }
- if (i + 2 < length)
- i += 3;
- else
- i += 2;
- length -= i;
- /* this will move pointer from start to first character after FE command */
- text = &(text[i]);
- i = 0;
- for (j = 0; j < entry->size; j++)
- DO_GLYPH(((uint8 *) (entry->data)), j);
- }
- break;
- default:
- DO_GLYPH(text, i);
- i++;
- break;
- }
- }
-}
-
-void
-ui_desktop_save(uint32 offset, int x, int y, int cx, int cy)
-{
- vncBuffer *buf;
-
- buf = vncGetRect(server, x, y, cx, cy);
- offset *= TOBYTES(server->serverFormat.bitsPerPixel);
- cache_put_desktop(offset, cx, cy, cx, TOBYTES(server->serverFormat.bitsPerPixel),
- (buf->data));
-}
-
-void
-ui_desktop_restore(uint32 offset, int x, int y, int cx, int cy)
-{
- uint8 *data;
- vncBuffer *buf;
- int ox, oy, srcx, srcy;
-
- srcx = srcy = 0;
- ox = x;
- oy = y;
-
- offset *= TOBYTES(server->serverFormat.bitsPerPixel);
- data = cache_get_desktop(offset, cx, cy, TOBYTES(server->serverFormat.bitsPerPixel));
- if (data == NULL)
- return;
-
- buf = vncNewBuffer(cx, cy, 8);
- memcpy(buf->data, data, cx * cy * 1);
-
- if (vncwinClipRect(&x, &y, &cx, &cy))
- {
- srcx += x - ox;
- srcy += y - oy;
- vncCopyBlitFrom(server, x, y, cx, cy, buf, srcx, srcy);
- }
- vncDeleteBuffer(buf);
-}
-
-rfbPixelFormat vnc_formats[] = {
- /* bpp, depth,BE,TC, rmax, gmax, bmax, rsh, gsh, bsh */
- {8, 8, 1, 0, 7, 7, 3, 0, 3, 6}
- ,
- {16, 16, 1, 1, 31, 63, 31, 0, 5, 10}
- ,
- {32, 24, 1, 1, 255, 255, 255, 0, 8, 16}
- , //non-existant
- {32, 32, 1, 1, 2047, 2047, 1023, 0, 11, 22}
-};
-
-rfbPixelFormat *
-vncNewFormat(int depth)
-{
- return &(vnc_formats[(depth + 1) / 8 - 1]);
-}
-
-vncBuffer *
-vncNewBuffer(int w, int h, int depth)
-{
- vncBuffer *b = (vncBuffer *) xmalloc(sizeof(vncBuffer));
- b->format = vncNewFormat(depth);
- b->data = (void *) xmalloc(w * h * (b->format->bitsPerPixel / 8));
- b->owner = 1;
- b->w = w;
- b->h = h;
- b->linew = w;
- return b;
-}
-
-vncBuffer *
-vncDupBuffer(vncBuffer * b)
-{
- vncBuffer *buf = vncNewBuffer(b->w, b->h, b->format->depth);
- memcpy(buf->data, b->data, b->linew * b->h * b->format->bitsPerPixel / 8);
- return buf;
-}
-
-void
-vncPrintStats()
-{
- if (server && server->clientHead)
- rfbPrintStats(server->clientHead);
-}
-
-/* blit */
-
-#define GETPIXEL(buf,x,y) \
- (((uint8_t*)(buf->data))[(x)+((y)*buf->linew)])
-#define SETPIXEL(buf,x,y,p) \
- (((uint8_t*)(buf->data))[(x)+((y)*buf->linew)] = (uint8_t)p)
-
-void
-vncCopyBlitFromNoEncode(rfbScreenInfoPtr s, int x, int y, int w, int h,
- vncBuffer * src, int srcx, int srcy)
-{
- int xx, yy;
-
- vncHideCursor();
-
- if (s->serverFormat.bitsPerPixel == src->format->bitsPerPixel
- && srcx + w <= src->w && srcy + h <= src->h)
- {
- //simple copy
- uint8_t *srcdata, *dstdata;
- srcdata = src->data + (srcy * src->linew + srcx);
- dstdata = s->frameBuffer + (y * s->paddedWidthInBytes + x);
- for (yy = 0; yy < h; yy++)
- {
- memcpy(dstdata, srcdata, w);
- dstdata += s->paddedWidthInBytes;
- srcdata += src->linew;
- }
- }
- else
- {
- // xsrc,ysrc provide tiling copy support.
- for (yy = y; yy < y + h; yy++)
- {
- int ysrc = srcy + yy - y;
- while (ysrc >= src->h)
- ysrc -= src->h;
- for (xx = x; xx < x + w; xx++)
- {
- vncPixel p;
- int xsrc = srcx + xx - x;
- while (xsrc >= src->linew)
- xsrc -= src->linew;
- p = GETPIXEL(src, xsrc, ysrc);
- SETPIXEL(frameBuffer, xx, yy, p);
- }
- }
- }
-}
-
-void
-vncCopyBlit(rfbScreenInfoPtr s, int x, int y, int w, int h, int srcx, int srcy)
-{
- /* LibVNCServer already knows how to copy the data. */
- rfbDoCopyRect(s, x, y, x + w, y + h, x - srcx, y - srcy);
-}
-
-void
-vncCopyBlitFrom(rfbScreenInfoPtr s, int x, int y, int w, int h, vncBuffer * src, int srcx, int srcy)
-{
- vncCopyBlitFromNoEncode(s, x, y, w, h, src, srcx, srcy);
- rfbMarkRectAsModified(s, x, y, x + w, y + h);
-}
-
-void
-vncTransBlitFrom(rfbScreenInfoPtr s, int x, int y, int w, int h,
- vncBuffer * src, int srcx, int srcy, int bg)
-{
- int xx, yy;
-
- vncHideCursor();
-
- // xsrc,ysrc provide tiling copy support.
- for (yy = y; yy < y + h; yy++)
- {
- int ysrc = srcy + yy - y;
- while (ysrc >= src->h)
- ysrc -= src->h;
- for (xx = x; xx < x + w; xx++)
- {
- vncPixel p;
- int xsrc = srcx + xx - x;
- while (xsrc >= src->linew)
- xsrc -= src->linew;
- p = GETPIXEL(src, xsrc, ysrc);
- // transparent blit!
- if (p != bg)
- SETPIXEL(frameBuffer, xx, yy, p);
- }
- }
-
- rfbMarkRectAsModified(s, x, y, x + w, y + h);
-}
-
-void
-vncXorBlitFrom(rfbScreenInfoPtr s, int x, int y, int w, int h, vncBuffer * src, int srcx, int srcy)
-{
- int xx, yy;
-
- vncHideCursor();
-
- // xsrc,ysrc provide tiling copy support.
- for (yy = y; yy < y + h; yy++)
- {
- int ysrc = srcy + yy - y;
- while (ysrc >= src->h)
- ysrc -= src->h;
- for (xx = x; xx < x + w; xx++)
- {
- vncPixel p, pp;
- int xsrc = srcx + xx - x;
- while (xsrc >= src->linew)
- xsrc -= src->linew;
- p = GETPIXEL(src, xsrc, ysrc);
- pp = GETPIXEL(frameBuffer, xx, yy);
- // xor blit!
- SETPIXEL(frameBuffer, xx, yy, p ^ pp);
- }
- }
-
- rfbMarkRectAsModified(s, x, y, x + w, y + h);
-}
-
-void
-vncAndBlitFrom(rfbScreenInfoPtr s, int x, int y, int w, int h, vncBuffer * src, int srcx, int srcy)
-{
- int xx, yy;
-
- vncHideCursor();
-
- // xsrc,ysrc provide tiling copy support.
- for (yy = y; yy < y + h; yy++)
- {
- int ysrc = srcy + yy - y;
- while (ysrc >= src->h)
- ysrc -= src->h;
- for (xx = x; xx < x + w; xx++)
- {
- vncPixel p, pp;
- int xsrc = srcx + xx - x;
- while (xsrc >= src->linew)
- xsrc -= src->linew;
- p = GETPIXEL(src, xsrc, ysrc);
- pp = GETPIXEL(frameBuffer, xx, yy);
- // and blit!
- SETPIXEL(frameBuffer, xx, yy, p & pp);
- }
- }
-
- rfbMarkRectAsModified(s, x, y, x + w, y + h);
-}
-
-void
-vncDeleteBuffer(vncBuffer * b)
-{
- if (b->owner)
- xfree(b->data);
- xfree(b);
-}
-
-/* cursor */
-rfbCursorPtr
-vncNewCursor(vncBuffer * mask, vncBuffer * pointer, int hotx, int hoty)
-{
- int i, j, w = (mask->w + 7) / 8, mask_size = w * mask->h,
- pointer_size = pointer->w * pointer->h;
- rfbCursorPtr c = (rfbCursorPtr) xmalloc(sizeof(rfbCursor));
-
- if (mask->w != pointer->w || mask->h != pointer->h)
- error("ERROR! Mask is %dx%d, Pointer is %dx%d\n",
- mask->w, mask->h, pointer->w, pointer->h);
-
- c->xhot = hotx;
- c->yhot = hoty;
- c->width = mask->w;
- c->height = mask->h;
-
- c->mask = (char *) xmalloc(mask_size);
- for (j = 0; j < c->height; j++)
- for (i = 0; i < w; i++)
- c->mask[j * w + i] =
- reverseByte[((unsigned char *) mask->data)[(j) * w + i]];
- vncDeleteBuffer(mask);
-
- c->source = 0;
- c->richSource = (char *) xmalloc(pointer_size);
- memcpy(c->richSource, pointer->data, pointer_size);
- vncDeleteBuffer(pointer);
-
- return c;
-}
-
-/* No FreeCursor, because the cursors are buffered. We only get a "HANDLE" */
-void
-vncSetCursor(rfbScreenInfoPtr s, rfbCursorPtr c)
-{
- rfbSetCursor(s, c, FALSE);
-}
-
-/* these functions work even if vncBuffer's pixel format is not 1 byte/pixel */
-vncPixel
-vncGetPixel(vncBuffer * b, int x, int y)
-{
- unsigned long offset = (x + (y * (b->linew))) * (b->format->bitsPerPixel >> 3);
- return ((uint8_t *) (b->data))[offset];
-}
-
-void
-vncSetPixel(vncBuffer * b, int x, int y, vncPixel c)
-{
- unsigned long offset = (x + (y * (b->linew))) * (b->format->bitsPerPixel >> 3);
- ((uint8_t *) (b->data))[offset] = c;
-}
-
-void
-vncSetRect(rfbScreenInfoPtr s, int x, int y, int w, int h, vncPixel c)
-{
- int xx, yy;
-
- if (x + w > s->width)
- w = s->width - x;
- if (y + h > s->height)
- h = s->height - y;
- if (w <= 0 || h <= 0)
- return;
-
- vncHideCursor();
-
- // - Fill the rect in the local framebuffer
- if (s->serverFormat.bitsPerPixel == 8)
- {
- // - Simple 8-bit fill
- uint8_t *dstdata;
- dstdata = s->frameBuffer + (y * s->paddedWidthInBytes + x);
- for (yy = 0; yy < h; yy++)
- {
- memset(dstdata, c, w);
- dstdata += s->paddedWidthInBytes;
- }
- }
- else
- {
- for (yy = y; yy < y + h; yy++)
- {
- for (xx = x; xx < x + w; xx++)
- {
- SETPIXEL(frameBuffer, xx, yy, c);
- }
- }
- }
-
- rfbMarkRectAsModified(s, x, y, x + w, y + h);
-}
-
-vncBuffer *
-vncGetRect(rfbScreenInfoPtr s, int x, int y, int w, int h)
-{
- int xx, yy;
- vncBuffer *b = vncNewBuffer(w, h, s->serverFormat.depth);
-
- vncHideCursor();
-
- if (s->serverFormat.bitsPerPixel == 8)
- {
- //simple copy
- int srcstep, dststep;
- char *srcdata, *dstdata;
- srcstep = s->paddedWidthInBytes * s->serverFormat.bitsPerPixel / 8;
- dststep = w * s->serverFormat.bitsPerPixel / 8;
- dstdata = b->data;
- srcdata = s->frameBuffer + (y * srcstep + x * s->serverFormat.bitsPerPixel / 8);
- for (yy = 0; yy < h; yy++)
- {
- memcpy(dstdata, srcdata, dststep);
- dstdata += dststep;
- srcdata += srcstep;
- }
- }
- else
- {
- for (yy = y; yy < y + h; yy++)
- {
- for (xx = x; xx < x + w; xx++)
- {
- SETPIXEL(b, xx - x, yy - y, GETPIXEL(frameBuffer, xx, yy));
- }
- }
- }
-
- return b;
-}
-
-/* colourmap */
-
-rfbColourMap *
-vncNewColourMap(rfbScreenInfoPtr s, int n)
-{
- rfbColourMap *m = (rfbColourMap *) xmalloc(sizeof(rfbColourMap));
- m->is16 = FALSE;
- m->count = n;
- m->data.bytes = (uint8_t *) xmalloc(n * 3);
- return m;
-}
-
-void
-vncSetColourMapEntry(rfbColourMap * m, int i, vncPixel r, vncPixel g, vncPixel b)
-{
- if (i < m->count)
- {
- m->data.bytes[3 * i + 0] = r;
- m->data.bytes[3 * i + 1] = g;
- m->data.bytes[3 * i + 2] = b;
- }
-}
-
-void
-vncDeleteColourMap(rfbColourMap * m)
-{
- if (m->data.bytes)
- free(m->data.bytes);
- m->count = 0;
-}
-
-void
-vncSetColourMap(rfbScreenInfoPtr s, rfbColourMap * m)
-{
- vncDeleteColourMap(&s->colourMap);
- s->colourMap = *m;
- rfbSetClientColourMaps(s, 0, 0);
-}
-
-void
-ui_begin_update()
-{
-}
-
-void
-ui_end_update()
-{
-}
-
-void
-ui_resize_window()
-{
- rfbClientIteratorPtr iter;
- rfbClientPtr cl;
-
- server->width = g_width;
- server->height = g_height;
- server->frameBuffer = (char *) realloc(server->frameBuffer, g_width * g_height);
- server->paddedWidthInBytes = g_width;
-
- iter = rfbGetClientIterator(server);
- while ((cl = rfbClientIteratorNext(iter)))
- if (cl->useNewFBSize)
- cl->newFBSizePending = TRUE;
- else
- rfbLog("Warning: Client %s does not support NewFBSize!\n ", cl->host);
- rfbReleaseClientIterator(iter);
-}
diff --git a/vnc/vnc.h b/vnc/vnc.h
deleted file mode 100644
index 4bd4632..0000000
--- a/vnc/vnc.h
+++ /dev/null
@@ -1,68 +0,0 @@
-#ifndef VNC_H
-#define VNC_H
-
-#define BOOL rfb_BOOL
-#include
-#undef BOOL
-
-typedef unsigned int vncPixel;
-
-typedef struct
-{
- uint16_t w, h;
- uint16_t linew;
- rfbPixelFormat *format;
- char *data;
- BOOL owner;
-}
-vncBuffer;
-
-extern int vncPreparedClientSocket;
-extern int vncPreparedServerSocket;
-
-/* - Buffer management */
-extern vncBuffer *vncNewBuffer(int w, int h, int depth);
-extern vncBuffer *vncDupBuffer(vncBuffer * b);
-extern void vncDeleteBuffer(vncBuffer * b);
-
-/* - Colourmaps */
-typedef struct
-{
- uint8_t r, g, b;
-}
-vncColour;
-
-extern void vncSetColourMap(rfbScreenInfoPtr s, rfbColourMap * m);
-extern rfbColourMap *vncNewColourMap(rfbScreenInfoPtr s, int n);
-extern void vncSetColourMapEntry(rfbColourMap * m, int i, vncPixel r, vncPixel g, vncPixel b);
-extern void vncDeleteColourMap(rfbColourMap * m);
-
-/* - Simple pixel manipulation */
-extern vncPixel vncGetPixel(vncBuffer * b, int x, int y);
-extern void vncSetPixel(vncBuffer * b, int x, int y, vncPixel c);
-
-/* - Drawing primitives */
-extern void vncSetRect(rfbScreenInfoPtr s, int x, int y, int w, int h, vncPixel c);
-extern void vncCopyBlit(rfbScreenInfoPtr s, int x, int y, int w, int h, int srcx, int srcy);
-extern void vncCopyBlitFrom(rfbScreenInfoPtr s, int x, int y, int w, int h,
- vncBuffer * b, int srcx, int srcy);
-extern void vncTransBlitFrom(rfbScreenInfoPtr s, int x, int y, int w, int h,
- vncBuffer * b, int srcx, int srcy, int bg);
-extern void vncXorBlitFrom(rfbScreenInfoPtr s, int x, int y, int w, int h,
- vncBuffer * b, int srcx, int srcy);
-extern void vncAndBlitFrom(rfbScreenInfoPtr s, int x, int y, int w, int h,
- vncBuffer * b, int srcx, int srcy);
-extern vncBuffer *vncGetRect(rfbScreenInfoPtr s, int x, int y, int w, int h);
-
-// - Low level VNC update primitives upon which the rest are based
-extern void vncQueueCopyRect(rfbScreenInfoPtr s, int x, int y, int w, int h, int src_x, int src_y);
-extern void vncQueueUpdate(rfbScreenInfoPtr s, int x, int y, int w, int h);
-
-/* cursor */
-extern rfbCursorPtr vncNewCursor(vncBuffer * mask, vncBuffer * pointer, int hotx, int hoty);
-extern void vncSetCursor(rfbScreenInfoPtr s, rfbCursorPtr c);
-
-int vncListenAtTcpAddr(unsigned short port);
-void vncPrintStats();
-
-#endif
diff --git a/vnc/x11stubs.c b/vnc/x11stubs.c
deleted file mode 100644
index 89951bd..0000000
--- a/vnc/x11stubs.c
+++ /dev/null
@@ -1,1405 +0,0 @@
-/*
-
-This file fakes some of X11's key handling for the special purpose of running
-a standalone rdp2vnc (without linking to X11)
-
-*/
-
-#include "x11stubs.h"
-#include
-
-/* ignored */
-int *display;
-
-typedef struct
-{
- const char *string;
- KeySym keysym;
-}
-StringToKeysym_t;
-
-StringToKeysym_t StringToKeysym[] = {
-#ifndef KEYSYMFAKE_H
- {"VoidSymbol", XK_VoidSymbol},
-#ifdef XK_MISCELLANY
- {"BackSpace", XK_BackSpace},
- {"Tab", XK_Tab},
- {"Linefeed", XK_Linefeed},
- {"Clear", XK_Clear},
- {"Return", XK_Return},
- {"Pause", XK_Pause},
- {"Scroll_Lock", XK_Scroll_Lock},
- {"Sys_Req", XK_Sys_Req},
- {"Escape", XK_Escape},
- {"Delete", XK_Delete},
- {"Multi_key", XK_Multi_key},
- {"SingleCandidate", XK_SingleCandidate},
- {"MultipleCandidate", XK_MultipleCandidate},
- {"PreviousCandidate", XK_PreviousCandidate},
- {"Kanji", XK_Kanji},
- {"Muhenkan", XK_Muhenkan},
- {"Henkan_Mode", XK_Henkan_Mode},
- {"Henkan", XK_Henkan},
- {"Romaji", XK_Romaji},
- {"Hiragana", XK_Hiragana},
- {"Katakana", XK_Katakana},
- {"Hiragana_Katakana", XK_Hiragana_Katakana},
- {"Zenkaku", XK_Zenkaku},
- {"Hankaku", XK_Hankaku},
- {"Zenkaku_Hankaku", XK_Zenkaku_Hankaku},
- {"Touroku", XK_Touroku},
- {"Massyo", XK_Massyo},
- {"Kana_Lock", XK_Kana_Lock},
- {"Kana_Shift", XK_Kana_Shift},
- {"Eisu_Shift", XK_Eisu_Shift},
- {"Eisu_toggle", XK_Eisu_toggle},
- {"Zen_Koho", XK_Zen_Koho},
- {"Mae_Koho", XK_Mae_Koho},
- {"Home", XK_Home},
- {"Left", XK_Left},
- {"Up", XK_Up},
- {"Right", XK_Right},
- {"Down", XK_Down},
- {"Prior", XK_Prior},
- {"Page_Up", XK_Page_Up},
- {"Next", XK_Next},
- {"Page_Down", XK_Page_Down},
- {"End", XK_End},
- {"Begin", XK_Begin},
- {"Select", XK_Select},
- {"Print", XK_Print},
- {"Execute", XK_Execute},
- {"Insert", XK_Insert},
- {"Undo", XK_Undo},
- {"Redo", XK_Redo},
- {"Menu", XK_Menu},
- {"Find", XK_Find},
- {"Cancel", XK_Cancel},
- {"Help", XK_Help},
- {"Break", XK_Break},
- {"Mode_switch", XK_Mode_switch},
- {"script_switch", XK_script_switch},
- {"Num_Lock", XK_Num_Lock},
- {"KP_Space", XK_KP_Space},
- {"KP_Tab", XK_KP_Tab},
- {"KP_Enter", XK_KP_Enter},
- {"KP_F1", XK_KP_F1},
- {"KP_F2", XK_KP_F2},
- {"KP_F3", XK_KP_F3},
- {"KP_F4", XK_KP_F4},
- {"KP_Home", XK_KP_Home},
- {"KP_Left", XK_KP_Left},
- {"KP_Up", XK_KP_Up},
- {"KP_Right", XK_KP_Right},
- {"KP_Down", XK_KP_Down},
- {"KP_Prior", XK_KP_Prior},
- {"KP_Page_Up", XK_KP_Page_Up},
- {"KP_Next", XK_KP_Next},
- {"KP_Page_Down", XK_KP_Page_Down},
- {"KP_End", XK_KP_End},
- {"KP_Begin", XK_KP_Begin},
- {"KP_Insert", XK_KP_Insert},
- {"KP_Delete", XK_KP_Delete},
- {"KP_Equal", XK_KP_Equal},
- {"KP_Multiply", XK_KP_Multiply},
- {"KP_Add", XK_KP_Add},
- {"KP_Separator", XK_KP_Separator},
- {"KP_Subtract", XK_KP_Subtract},
- {"KP_Decimal", XK_KP_Decimal},
- {"KP_Divide", XK_KP_Divide},
- {"KP_0", XK_KP_0},
- {"KP_1", XK_KP_1},
- {"KP_2", XK_KP_2},
- {"KP_3", XK_KP_3},
- {"KP_4", XK_KP_4},
- {"KP_5", XK_KP_5},
- {"KP_6", XK_KP_6},
- {"KP_7", XK_KP_7},
- {"KP_8", XK_KP_8},
- {"KP_9", XK_KP_9},
- {"F1", XK_F1},
- {"F2", XK_F2},
- {"F3", XK_F3},
- {"F4", XK_F4},
- {"F5", XK_F5},
- {"F6", XK_F6},
- {"F7", XK_F7},
- {"F8", XK_F8},
- {"F9", XK_F9},
- {"F10", XK_F10},
- {"F11", XK_F11},
- {"L1", XK_L1},
- {"F12", XK_F12},
- {"L2", XK_L2},
- {"F13", XK_F13},
- {"L3", XK_L3},
- {"F14", XK_F14},
- {"L4", XK_L4},
- {"F15", XK_F15},
- {"L5", XK_L5},
- {"F16", XK_F16},
- {"L6", XK_L6},
- {"F17", XK_F17},
- {"L7", XK_L7},
- {"F18", XK_F18},
- {"L8", XK_L8},
- {"F19", XK_F19},
- {"L9", XK_L9},
- {"F20", XK_F20},
- {"L10", XK_L10},
- {"F21", XK_F21},
- {"R1", XK_R1},
- {"F22", XK_F22},
- {"R2", XK_R2},
- {"F23", XK_F23},
- {"R3", XK_R3},
- {"F24", XK_F24},
- {"R4", XK_R4},
- {"F25", XK_F25},
- {"R5", XK_R5},
- {"F26", XK_F26},
- {"R6", XK_R6},
- {"F27", XK_F27},
- {"R7", XK_R7},
- {"F28", XK_F28},
- {"R8", XK_R8},
- {"F29", XK_F29},
- {"R9", XK_R9},
- {"F30", XK_F30},
- {"R10", XK_R10},
- {"F31", XK_F31},
- {"R11", XK_R11},
- {"F32", XK_F32},
- {"R12", XK_R12},
- {"F33", XK_F33},
- {"R13", XK_R13},
- {"F34", XK_F34},
- {"R14", XK_R14},
- {"F35", XK_F35},
- {"R15", XK_R15},
- {"Shift_L", XK_Shift_L},
- {"Shift_R", XK_Shift_R},
- {"Control_L", XK_Control_L},
- {"Control_R", XK_Control_R},
- {"Caps_Lock", XK_Caps_Lock},
- {"Shift_Lock", XK_Shift_Lock},
- {"Meta_L", XK_Meta_L},
- {"Meta_R", XK_Meta_R},
- {"Alt_L", XK_Alt_L},
- {"Alt_R", XK_Alt_R},
- {"Super_L", XK_Super_L},
- {"Super_R", XK_Super_R},
- {"Hyper_L", XK_Hyper_L},
- {"Hyper_R", XK_Hyper_R},
-#endif /* XK_MISCELLANY */
-#ifdef XK_XKB_KEYS
- {"ISO_Lock", XK_ISO_Lock},
- {"ISO_Level2_Latch", XK_ISO_Level2_Latch},
- {"ISO_Level3_Shift", XK_ISO_Level3_Shift},
- {"ISO_Level3_Latch", XK_ISO_Level3_Latch},
- {"ISO_Level3_Lock", XK_ISO_Level3_Lock},
- {"ISO_Group_Shift", XK_ISO_Group_Shift},
- {"ISO_Group_Latch", XK_ISO_Group_Latch},
- {"ISO_Group_Lock", XK_ISO_Group_Lock},
- {"ISO_Next_Group", XK_ISO_Next_Group},
- {"ISO_Next_Group_Lock", XK_ISO_Next_Group_Lock},
- {"ISO_Prev_Group", XK_ISO_Prev_Group},
- {"ISO_Prev_Group_Lock", XK_ISO_Prev_Group_Lock},
- {"ISO_First_Group", XK_ISO_First_Group},
- {"ISO_First_Group_Lock", XK_ISO_First_Group_Lock},
- {"ISO_Last_Group", XK_ISO_Last_Group},
- {"ISO_Last_Group_Lock", XK_ISO_Last_Group_Lock},
- {"ISO_Left_Tab", XK_ISO_Left_Tab},
- {"ISO_Move_Line_Up", XK_ISO_Move_Line_Up},
- {"ISO_Move_Line_Down", XK_ISO_Move_Line_Down},
- {"ISO_Partial_Line_Up", XK_ISO_Partial_Line_Up},
- {"ISO_Partial_Line_Down", XK_ISO_Partial_Line_Down},
- {"ISO_Partial_Space_Left", XK_ISO_Partial_Space_Left},
- {"ISO_Partial_Space_Right", XK_ISO_Partial_Space_Right},
- {"ISO_Set_Margin_Left", XK_ISO_Set_Margin_Left},
- {"ISO_Set_Margin_Right", XK_ISO_Set_Margin_Right},
- {"ISO_Release_Margin_Left", XK_ISO_Release_Margin_Left},
- {"ISO_Release_Margin_Right", XK_ISO_Release_Margin_Right},
- {"ISO_Release_Both_Margins", XK_ISO_Release_Both_Margins},
- {"ISO_Fast_Cursor_Left", XK_ISO_Fast_Cursor_Left},
- {"ISO_Fast_Cursor_Right", XK_ISO_Fast_Cursor_Right},
- {"ISO_Fast_Cursor_Up", XK_ISO_Fast_Cursor_Up},
- {"ISO_Fast_Cursor_Down", XK_ISO_Fast_Cursor_Down},
- {"ISO_Continuous_Underline", XK_ISO_Continuous_Underline},
- {"ISO_Discontinuous_Underline", XK_ISO_Discontinuous_Underline},
- {"ISO_Emphasize", XK_ISO_Emphasize},
- {"ISO_Center_Object", XK_ISO_Center_Object},
- {"ISO_Enter", XK_ISO_Enter},
- {"dead_grave", XK_dead_grave},
- {"dead_acute", XK_dead_acute},
- {"dead_circumflex", XK_dead_circumflex},
- {"dead_tilde", XK_dead_tilde},
- {"dead_macron", XK_dead_macron},
- {"dead_breve", XK_dead_breve},
- {"dead_abovedot", XK_dead_abovedot},
- {"dead_diaeresis", XK_dead_diaeresis},
- {"dead_abovering", XK_dead_abovering},
- {"dead_doubleacute", XK_dead_doubleacute},
- {"dead_caron", XK_dead_caron},
- {"dead_cedilla", XK_dead_cedilla},
- {"dead_ogonek", XK_dead_ogonek},
- {"dead_iota", XK_dead_iota},
- {"dead_voiced_sound", XK_dead_voiced_sound},
- {"dead_semivoiced_sound", XK_dead_semivoiced_sound},
- {"dead_belowdot", XK_dead_belowdot},
- {"First_Virtual_Screen", XK_First_Virtual_Screen},
- {"Prev_Virtual_Screen", XK_Prev_Virtual_Screen},
- {"Next_Virtual_Screen", XK_Next_Virtual_Screen},
- {"Last_Virtual_Screen", XK_Last_Virtual_Screen},
- {"Terminate_Server", XK_Terminate_Server},
- {"AccessX_Enable", XK_AccessX_Enable},
- {"AccessX_Feedback_Enable", XK_AccessX_Feedback_Enable},
- {"RepeatKeys_Enable", XK_RepeatKeys_Enable},
- {"SlowKeys_Enable", XK_SlowKeys_Enable},
- {"BounceKeys_Enable", XK_BounceKeys_Enable},
- {"StickyKeys_Enable", XK_StickyKeys_Enable},
- {"MouseKeys_Enable", XK_MouseKeys_Enable},
- {"MouseKeys_Accel_Enable", XK_MouseKeys_Accel_Enable},
- {"Overlay1_Enable", XK_Overlay1_Enable},
- {"Overlay2_Enable", XK_Overlay2_Enable},
- {"AudibleBell_Enable", XK_AudibleBell_Enable},
- {"Pointer_Left", XK_Pointer_Left},
- {"Pointer_Right", XK_Pointer_Right},
- {"Pointer_Up", XK_Pointer_Up},
- {"Pointer_Down", XK_Pointer_Down},
- {"Pointer_UpLeft", XK_Pointer_UpLeft},
- {"Pointer_UpRight", XK_Pointer_UpRight},
- {"Pointer_DownLeft", XK_Pointer_DownLeft},
- {"Pointer_DownRight", XK_Pointer_DownRight},
- {"Pointer_Button_Dflt", XK_Pointer_Button_Dflt},
- {"Pointer_Button1", XK_Pointer_Button1},
- {"Pointer_Button2", XK_Pointer_Button2},
- {"Pointer_Button3", XK_Pointer_Button3},
- {"Pointer_Button4", XK_Pointer_Button4},
- {"Pointer_Button5", XK_Pointer_Button5},
- {"Pointer_DblClick_Dflt", XK_Pointer_DblClick_Dflt},
- {"Pointer_DblClick1", XK_Pointer_DblClick1},
- {"Pointer_DblClick2", XK_Pointer_DblClick2},
- {"Pointer_DblClick3", XK_Pointer_DblClick3},
- {"Pointer_DblClick4", XK_Pointer_DblClick4},
- {"Pointer_DblClick5", XK_Pointer_DblClick5},
- {"Pointer_Drag_Dflt", XK_Pointer_Drag_Dflt},
- {"Pointer_Drag1", XK_Pointer_Drag1},
- {"Pointer_Drag2", XK_Pointer_Drag2},
- {"Pointer_Drag3", XK_Pointer_Drag3},
- {"Pointer_Drag4", XK_Pointer_Drag4},
- {"Pointer_Drag5", XK_Pointer_Drag5},
- {"Pointer_EnableKeys", XK_Pointer_EnableKeys},
- {"Pointer_Accelerate", XK_Pointer_Accelerate},
- {"Pointer_DfltBtnNext", XK_Pointer_DfltBtnNext},
- {"Pointer_DfltBtnPrev", XK_Pointer_DfltBtnPrev},
-#endif
-#ifdef XK_3270
- {"3270_Duplicate", XK_3270_Duplicate},
- {"3270_FieldMark", XK_3270_FieldMark},
- {"3270_Right2", XK_3270_Right2},
- {"3270_Left2", XK_3270_Left2},
- {"3270_BackTab", XK_3270_BackTab},
- {"3270_EraseEOF", XK_3270_EraseEOF},
- {"3270_EraseInput", XK_3270_EraseInput},
- {"3270_Reset", XK_3270_Reset},
- {"3270_Quit", XK_3270_Quit},
- {"3270_PA1", XK_3270_PA1},
- {"3270_PA2", XK_3270_PA2},
- {"3270_PA3", XK_3270_PA3},
- {"3270_Test", XK_3270_Test},
- {"3270_Attn", XK_3270_Attn},
- {"3270_CursorBlink", XK_3270_CursorBlink},
- {"3270_AltCursor", XK_3270_AltCursor},
- {"3270_KeyClick", XK_3270_KeyClick},
- {"3270_Jump", XK_3270_Jump},
- {"3270_Ident", XK_3270_Ident},
- {"3270_Rule", XK_3270_Rule},
- {"3270_Copy", XK_3270_Copy},
- {"3270_Play", XK_3270_Play},
- {"3270_Setup", XK_3270_Setup},
- {"3270_Record", XK_3270_Record},
- {"3270_ChangeScreen", XK_3270_ChangeScreen},
- {"3270_DeleteWord", XK_3270_DeleteWord},
- {"3270_ExSelect", XK_3270_ExSelect},
- {"3270_CursorSelect", XK_3270_CursorSelect},
- {"3270_PrintScreen", XK_3270_PrintScreen},
- {"3270_Enter", XK_3270_Enter},
-#endif
-#ifdef XK_LATIN1
- {"space", XK_space},
- {"exclam", XK_exclam},
- {"quotedbl", XK_quotedbl},
- {"numbersign", XK_numbersign},
- {"dollar", XK_dollar},
- {"percent", XK_percent},
- {"ampersand", XK_ampersand},
- {"apostrophe", XK_apostrophe},
- {"quoteright", XK_quoteright},
- {"parenleft", XK_parenleft},
- {"parenright", XK_parenright},
- {"asterisk", XK_asterisk},
- {"plus", XK_plus},
- {"comma", XK_comma},
- {"minus", XK_minus},
- {"period", XK_period},
- {"slash", XK_slash},
- {"0", XK_0},
- {"1", XK_1},
- {"2", XK_2},
- {"3", XK_3},
- {"4", XK_4},
- {"5", XK_5},
- {"6", XK_6},
- {"7", XK_7},
- {"8", XK_8},
- {"9", XK_9},
- {"colon", XK_colon},
- {"semicolon", XK_semicolon},
- {"less", XK_less},
- {"equal", XK_equal},
- {"greater", XK_greater},
- {"question", XK_question},
- {"at", XK_at},
- {"A", XK_A},
- {"B", XK_B},
- {"C", XK_C},
- {"D", XK_D},
- {"E", XK_E},
- {"F", XK_F},
- {"G", XK_G},
- {"H", XK_H},
- {"I", XK_I},
- {"J", XK_J},
- {"K", XK_K},
- {"L", XK_L},
- {"M", XK_M},
- {"N", XK_N},
- {"O", XK_O},
- {"P", XK_P},
- {"Q", XK_Q},
- {"R", XK_R},
- {"S", XK_S},
- {"T", XK_T},
- {"U", XK_U},
- {"V", XK_V},
- {"W", XK_W},
- {"X", XK_X},
- {"Y", XK_Y},
- {"Z", XK_Z},
- {"bracketleft", XK_bracketleft},
- {"backslash", XK_backslash},
- {"bracketright", XK_bracketright},
- {"asciicircum", XK_asciicircum},
- {"underscore", XK_underscore},
- {"grave", XK_grave},
- {"quoteleft", XK_quoteleft},
- {"a", XK_a},
- {"b", XK_b},
- {"c", XK_c},
- {"d", XK_d},
- {"e", XK_e},
- {"f", XK_f},
- {"g", XK_g},
- {"h", XK_h},
- {"i", XK_i},
- {"j", XK_j},
- {"k", XK_k},
- {"l", XK_l},
- {"m", XK_m},
- {"n", XK_n},
- {"o", XK_o},
- {"p", XK_p},
- {"q", XK_q},
- {"r", XK_r},
- {"s", XK_s},
- {"t", XK_t},
- {"u", XK_u},
- {"v", XK_v},
- {"w", XK_w},
- {"x", XK_x},
- {"y", XK_y},
- {"z", XK_z},
- {"braceleft", XK_braceleft},
- {"bar", XK_bar},
- {"braceright", XK_braceright},
- {"asciitilde", XK_asciitilde},
- {"nobreakspace", XK_nobreakspace},
- {"exclamdown", XK_exclamdown},
- {"cent", XK_cent},
- {"sterling", XK_sterling},
- {"currency", XK_currency},
- {"yen", XK_yen},
- {"brokenbar", XK_brokenbar},
- {"section", XK_section},
- {"diaeresis", XK_diaeresis},
- {"copyright", XK_copyright},
- {"ordfeminine", XK_ordfeminine},
- {"guillemotleft", XK_guillemotleft},
- {"notsign", XK_notsign},
- {"hyphen", XK_hyphen},
- {"registered", XK_registered},
- {"macron", XK_macron},
- {"degree", XK_degree},
- {"plusminus", XK_plusminus},
- {"twosuperior", XK_twosuperior},
- {"threesuperior", XK_threesuperior},
- {"acute", XK_acute},
- {"mu", XK_mu},
- {"paragraph", XK_paragraph},
- {"periodcentered", XK_periodcentered},
- {"cedilla", XK_cedilla},
- {"onesuperior", XK_onesuperior},
- {"masculine", XK_masculine},
- {"guillemotright", XK_guillemotright},
- {"onequarter", XK_onequarter},
- {"onehalf", XK_onehalf},
- {"threequarters", XK_threequarters},
- {"questiondown", XK_questiondown},
- {"Agrave", XK_Agrave},
- {"Aacute", XK_Aacute},
- {"Acircumflex", XK_Acircumflex},
- {"Atilde", XK_Atilde},
- {"Adiaeresis", XK_Adiaeresis},
- {"Aring", XK_Aring},
- {"AE", XK_AE},
- {"Ccedilla", XK_Ccedilla},
- {"Egrave", XK_Egrave},
- {"Eacute", XK_Eacute},
- {"Ecircumflex", XK_Ecircumflex},
- {"Ediaeresis", XK_Ediaeresis},
- {"Igrave", XK_Igrave},
- {"Iacute", XK_Iacute},
- {"Icircumflex", XK_Icircumflex},
- {"Idiaeresis", XK_Idiaeresis},
- {"ETH", XK_ETH},
- {"Eth", XK_Eth},
- {"Ntilde", XK_Ntilde},
- {"Ograve", XK_Ograve},
- {"Oacute", XK_Oacute},
- {"Ocircumflex", XK_Ocircumflex},
- {"Otilde", XK_Otilde},
- {"Odiaeresis", XK_Odiaeresis},
- {"multiply", XK_multiply},
- {"Ooblique", XK_Ooblique},
- {"Ugrave", XK_Ugrave},
- {"Uacute", XK_Uacute},
- {"Ucircumflex", XK_Ucircumflex},
- {"Udiaeresis", XK_Udiaeresis},
- {"Yacute", XK_Yacute},
- {"THORN", XK_THORN},
- {"Thorn", XK_Thorn},
- {"ssharp", XK_ssharp},
- {"agrave", XK_agrave},
- {"aacute", XK_aacute},
- {"acircumflex", XK_acircumflex},
- {"atilde", XK_atilde},
- {"adiaeresis", XK_adiaeresis},
- {"aring", XK_aring},
- {"ae", XK_ae},
- {"ccedilla", XK_ccedilla},
- {"egrave", XK_egrave},
- {"eacute", XK_eacute},
- {"ecircumflex", XK_ecircumflex},
- {"ediaeresis", XK_ediaeresis},
- {"igrave", XK_igrave},
- {"iacute", XK_iacute},
- {"icircumflex", XK_icircumflex},
- {"idiaeresis", XK_idiaeresis},
- {"eth", XK_eth},
- {"ntilde", XK_ntilde},
- {"ograve", XK_ograve},
- {"oacute", XK_oacute},
- {"ocircumflex", XK_ocircumflex},
- {"otilde", XK_otilde},
- {"odiaeresis", XK_odiaeresis},
- {"division", XK_division},
- {"oslash", XK_oslash},
- {"ugrave", XK_ugrave},
- {"uacute", XK_uacute},
- {"ucircumflex", XK_ucircumflex},
- {"udiaeresis", XK_udiaeresis},
- {"yacute", XK_yacute},
- {"thorn", XK_thorn},
- {"ydiaeresis", XK_ydiaeresis},
-#endif /* XK_LATIN1 */
-#ifdef XK_LATIN2
- {"Aogonek", XK_Aogonek},
- {"breve", XK_breve},
- {"Lstroke", XK_Lstroke},
- {"Lcaron", XK_Lcaron},
- {"Sacute", XK_Sacute},
- {"Scaron", XK_Scaron},
- {"Scedilla", XK_Scedilla},
- {"Tcaron", XK_Tcaron},
- {"Zacute", XK_Zacute},
- {"Zcaron", XK_Zcaron},
- {"Zabovedot", XK_Zabovedot},
- {"aogonek", XK_aogonek},
- {"ogonek", XK_ogonek},
- {"lstroke", XK_lstroke},
- {"lcaron", XK_lcaron},
- {"sacute", XK_sacute},
- {"caron", XK_caron},
- {"scaron", XK_scaron},
- {"scedilla", XK_scedilla},
- {"tcaron", XK_tcaron},
- {"zacute", XK_zacute},
- {"doubleacute", XK_doubleacute},
- {"zcaron", XK_zcaron},
- {"zabovedot", XK_zabovedot},
- {"Racute", XK_Racute},
- {"Abreve", XK_Abreve},
- {"Lacute", XK_Lacute},
- {"Cacute", XK_Cacute},
- {"Ccaron", XK_Ccaron},
- {"Eogonek", XK_Eogonek},
- {"Ecaron", XK_Ecaron},
- {"Dcaron", XK_Dcaron},
- {"Dstroke", XK_Dstroke},
- {"Nacute", XK_Nacute},
- {"Ncaron", XK_Ncaron},
- {"Odoubleacute", XK_Odoubleacute},
- {"Rcaron", XK_Rcaron},
- {"Uring", XK_Uring},
- {"Udoubleacute", XK_Udoubleacute},
- {"Tcedilla", XK_Tcedilla},
- {"racute", XK_racute},
- {"abreve", XK_abreve},
- {"lacute", XK_lacute},
- {"cacute", XK_cacute},
- {"ccaron", XK_ccaron},
- {"eogonek", XK_eogonek},
- {"ecaron", XK_ecaron},
- {"dcaron", XK_dcaron},
- {"dstroke", XK_dstroke},
- {"nacute", XK_nacute},
- {"ncaron", XK_ncaron},
- {"odoubleacute", XK_odoubleacute},
- {"udoubleacute", XK_udoubleacute},
- {"rcaron", XK_rcaron},
- {"uring", XK_uring},
- {"tcedilla", XK_tcedilla},
- {"abovedot", XK_abovedot},
-#endif /* XK_LATIN2 */
-#ifdef XK_LATIN3
- {"Hstroke", XK_Hstroke},
- {"Hcircumflex", XK_Hcircumflex},
- {"Iabovedot", XK_Iabovedot},
- {"Gbreve", XK_Gbreve},
- {"Jcircumflex", XK_Jcircumflex},
- {"hstroke", XK_hstroke},
- {"hcircumflex", XK_hcircumflex},
- {"idotless", XK_idotless},
- {"gbreve", XK_gbreve},
- {"jcircumflex", XK_jcircumflex},
- {"Cabovedot", XK_Cabovedot},
- {"Ccircumflex", XK_Ccircumflex},
- {"Gabovedot", XK_Gabovedot},
- {"Gcircumflex", XK_Gcircumflex},
- {"Ubreve", XK_Ubreve},
- {"Scircumflex", XK_Scircumflex},
- {"cabovedot", XK_cabovedot},
- {"ccircumflex", XK_ccircumflex},
- {"gabovedot", XK_gabovedot},
- {"gcircumflex", XK_gcircumflex},
- {"ubreve", XK_ubreve},
- {"scircumflex", XK_scircumflex},
-#endif /* XK_LATIN3 */
-#ifdef XK_LATIN4
- {"kra", XK_kra},
- {"kappa", XK_kappa},
- {"Rcedilla", XK_Rcedilla},
- {"Itilde", XK_Itilde},
- {"Lcedilla", XK_Lcedilla},
- {"Emacron", XK_Emacron},
- {"Gcedilla", XK_Gcedilla},
- {"Tslash", XK_Tslash},
- {"rcedilla", XK_rcedilla},
- {"itilde", XK_itilde},
- {"lcedilla", XK_lcedilla},
- {"emacron", XK_emacron},
- {"gcedilla", XK_gcedilla},
- {"tslash", XK_tslash},
- {"ENG", XK_ENG},
- {"eng", XK_eng},
- {"Amacron", XK_Amacron},
- {"Iogonek", XK_Iogonek},
- {"Eabovedot", XK_Eabovedot},
- {"Imacron", XK_Imacron},
- {"Ncedilla", XK_Ncedilla},
- {"Omacron", XK_Omacron},
- {"Kcedilla", XK_Kcedilla},
- {"Uogonek", XK_Uogonek},
- {"Utilde", XK_Utilde},
- {"Umacron", XK_Umacron},
- {"amacron", XK_amacron},
- {"iogonek", XK_iogonek},
- {"eabovedot", XK_eabovedot},
- {"imacron", XK_imacron},
- {"ncedilla", XK_ncedilla},
- {"omacron", XK_omacron},
- {"kcedilla", XK_kcedilla},
- {"uogonek", XK_uogonek},
- {"utilde", XK_utilde},
- {"umacron", XK_umacron},
-#endif /* XK_LATIN4 */
-#ifdef XK_KATAKANA
- {"overline", XK_overline},
- {"kana_fullstop", XK_kana_fullstop},
- {"kana_openingbracket", XK_kana_openingbracket},
- {"kana_closingbracket", XK_kana_closingbracket},
- {"kana_comma", XK_kana_comma},
- {"kana_conjunctive", XK_kana_conjunctive},
- {"kana_middledot", XK_kana_middledot},
- {"kana_WO", XK_kana_WO},
- {"kana_a", XK_kana_a},
- {"kana_i", XK_kana_i},
- {"kana_u", XK_kana_u},
- {"kana_e", XK_kana_e},
- {"kana_o", XK_kana_o},
- {"kana_ya", XK_kana_ya},
- {"kana_yu", XK_kana_yu},
- {"kana_yo", XK_kana_yo},
- {"kana_tsu", XK_kana_tsu},
- {"kana_tu", XK_kana_tu},
- {"prolongedsound", XK_prolongedsound},
- {"kana_A", XK_kana_A},
- {"kana_I", XK_kana_I},
- {"kana_U", XK_kana_U},
- {"kana_E", XK_kana_E},
- {"kana_O", XK_kana_O},
- {"kana_KA", XK_kana_KA},
- {"kana_KI", XK_kana_KI},
- {"kana_KU", XK_kana_KU},
- {"kana_KE", XK_kana_KE},
- {"kana_KO", XK_kana_KO},
- {"kana_SA", XK_kana_SA},
- {"kana_SHI", XK_kana_SHI},
- {"kana_SU", XK_kana_SU},
- {"kana_SE", XK_kana_SE},
- {"kana_SO", XK_kana_SO},
- {"kana_TA", XK_kana_TA},
- {"kana_CHI", XK_kana_CHI},
- {"kana_TI", XK_kana_TI},
- {"kana_TSU", XK_kana_TSU},
- {"kana_TU", XK_kana_TU},
- {"kana_TE", XK_kana_TE},
- {"kana_TO", XK_kana_TO},
- {"kana_NA", XK_kana_NA},
- {"kana_NI", XK_kana_NI},
- {"kana_NU", XK_kana_NU},
- {"kana_NE", XK_kana_NE},
- {"kana_NO", XK_kana_NO},
- {"kana_HA", XK_kana_HA},
- {"kana_HI", XK_kana_HI},
- {"kana_FU", XK_kana_FU},
- {"kana_HU", XK_kana_HU},
- {"kana_HE", XK_kana_HE},
- {"kana_HO", XK_kana_HO},
- {"kana_MA", XK_kana_MA},
- {"kana_MI", XK_kana_MI},
- {"kana_MU", XK_kana_MU},
- {"kana_ME", XK_kana_ME},
- {"kana_MO", XK_kana_MO},
- {"kana_YA", XK_kana_YA},
- {"kana_YU", XK_kana_YU},
- {"kana_YO", XK_kana_YO},
- {"kana_RA", XK_kana_RA},
- {"kana_RI", XK_kana_RI},
- {"kana_RU", XK_kana_RU},
- {"kana_RE", XK_kana_RE},
- {"kana_RO", XK_kana_RO},
- {"kana_WA", XK_kana_WA},
- {"kana_N", XK_kana_N},
- {"voicedsound", XK_voicedsound},
- {"semivoicedsound", XK_semivoicedsound},
- {"kana_switch", XK_kana_switch},
-#endif /* XK_KATAKANA */
-#ifdef XK_ARABIC
- {"Arabic_comma", XK_Arabic_comma},
- {"Arabic_semicolon", XK_Arabic_semicolon},
- {"Arabic_question_mark", XK_Arabic_question_mark},
- {"Arabic_hamza", XK_Arabic_hamza},
- {"Arabic_maddaonalef", XK_Arabic_maddaonalef},
- {"Arabic_hamzaonalef", XK_Arabic_hamzaonalef},
- {"Arabic_hamzaonwaw", XK_Arabic_hamzaonwaw},
- {"Arabic_hamzaunderalef", XK_Arabic_hamzaunderalef},
- {"Arabic_hamzaonyeh", XK_Arabic_hamzaonyeh},
- {"Arabic_alef", XK_Arabic_alef},
- {"Arabic_beh", XK_Arabic_beh},
- {"Arabic_tehmarbuta", XK_Arabic_tehmarbuta},
- {"Arabic_teh", XK_Arabic_teh},
- {"Arabic_theh", XK_Arabic_theh},
- {"Arabic_jeem", XK_Arabic_jeem},
- {"Arabic_hah", XK_Arabic_hah},
- {"Arabic_khah", XK_Arabic_khah},
- {"Arabic_dal", XK_Arabic_dal},
- {"Arabic_thal", XK_Arabic_thal},
- {"Arabic_ra", XK_Arabic_ra},
- {"Arabic_zain", XK_Arabic_zain},
- {"Arabic_seen", XK_Arabic_seen},
- {"Arabic_sheen", XK_Arabic_sheen},
- {"Arabic_sad", XK_Arabic_sad},
- {"Arabic_dad", XK_Arabic_dad},
- {"Arabic_tah", XK_Arabic_tah},
- {"Arabic_zah", XK_Arabic_zah},
- {"Arabic_ain", XK_Arabic_ain},
- {"Arabic_ghain", XK_Arabic_ghain},
- {"Arabic_tatweel", XK_Arabic_tatweel},
- {"Arabic_feh", XK_Arabic_feh},
- {"Arabic_qaf", XK_Arabic_qaf},
- {"Arabic_kaf", XK_Arabic_kaf},
- {"Arabic_lam", XK_Arabic_lam},
- {"Arabic_meem", XK_Arabic_meem},
- {"Arabic_noon", XK_Arabic_noon},
- {"Arabic_ha", XK_Arabic_ha},
- {"Arabic_heh", XK_Arabic_heh},
- {"Arabic_waw", XK_Arabic_waw},
- {"Arabic_alefmaksura", XK_Arabic_alefmaksura},
- {"Arabic_yeh", XK_Arabic_yeh},
- {"Arabic_fathatan", XK_Arabic_fathatan},
- {"Arabic_dammatan", XK_Arabic_dammatan},
- {"Arabic_kasratan", XK_Arabic_kasratan},
- {"Arabic_fatha", XK_Arabic_fatha},
- {"Arabic_damma", XK_Arabic_damma},
- {"Arabic_kasra", XK_Arabic_kasra},
- {"Arabic_shadda", XK_Arabic_shadda},
- {"Arabic_sukun", XK_Arabic_sukun},
- {"Arabic_switch", XK_Arabic_switch},
-#endif /* XK_ARABIC */
-#ifdef XK_CYRILLIC
- {"Serbian_dje", XK_Serbian_dje},
- {"Macedonia_gje", XK_Macedonia_gje},
- {"Cyrillic_io", XK_Cyrillic_io},
- {"Ukrainian_ie", XK_Ukrainian_ie},
- {"Ukranian_je", XK_Ukranian_je},
- {"Macedonia_dse", XK_Macedonia_dse},
- {"Ukrainian_i", XK_Ukrainian_i},
- {"Ukranian_i", XK_Ukranian_i},
- {"Ukrainian_yi", XK_Ukrainian_yi},
- {"Ukranian_yi", XK_Ukranian_yi},
- {"Cyrillic_je", XK_Cyrillic_je},
- {"Serbian_je", XK_Serbian_je},
- {"Cyrillic_lje", XK_Cyrillic_lje},
- {"Serbian_lje", XK_Serbian_lje},
- {"Cyrillic_nje", XK_Cyrillic_nje},
- {"Serbian_nje", XK_Serbian_nje},
- {"Serbian_tshe", XK_Serbian_tshe},
- {"Macedonia_kje", XK_Macedonia_kje},
- {"Byelorussian_shortu", XK_Byelorussian_shortu},
- {"Cyrillic_dzhe", XK_Cyrillic_dzhe},
- {"Serbian_dze", XK_Serbian_dze},
- {"numerosign", XK_numerosign},
- {"Serbian_DJE", XK_Serbian_DJE},
- {"Macedonia_GJE", XK_Macedonia_GJE},
- {"Cyrillic_IO", XK_Cyrillic_IO},
- {"Ukrainian_IE", XK_Ukrainian_IE},
- {"Ukranian_JE", XK_Ukranian_JE},
- {"Macedonia_DSE", XK_Macedonia_DSE},
- {"Ukrainian_I", XK_Ukrainian_I},
- {"Ukranian_I", XK_Ukranian_I},
- {"Ukrainian_YI", XK_Ukrainian_YI},
- {"Ukranian_YI", XK_Ukranian_YI},
- {"Cyrillic_JE", XK_Cyrillic_JE},
- {"Serbian_JE", XK_Serbian_JE},
- {"Cyrillic_LJE", XK_Cyrillic_LJE},
- {"Serbian_LJE", XK_Serbian_LJE},
- {"Cyrillic_NJE", XK_Cyrillic_NJE},
- {"Serbian_NJE", XK_Serbian_NJE},
- {"Serbian_TSHE", XK_Serbian_TSHE},
- {"Macedonia_KJE", XK_Macedonia_KJE},
- {"Byelorussian_SHORTU", XK_Byelorussian_SHORTU},
- {"Cyrillic_DZHE", XK_Cyrillic_DZHE},
- {"Serbian_DZE", XK_Serbian_DZE},
- {"Cyrillic_yu", XK_Cyrillic_yu},
- {"Cyrillic_a", XK_Cyrillic_a},
- {"Cyrillic_be", XK_Cyrillic_be},
- {"Cyrillic_tse", XK_Cyrillic_tse},
- {"Cyrillic_de", XK_Cyrillic_de},
- {"Cyrillic_ie", XK_Cyrillic_ie},
- {"Cyrillic_ef", XK_Cyrillic_ef},
- {"Cyrillic_ghe", XK_Cyrillic_ghe},
- {"Cyrillic_ha", XK_Cyrillic_ha},
- {"Cyrillic_i", XK_Cyrillic_i},
- {"Cyrillic_shorti", XK_Cyrillic_shorti},
- {"Cyrillic_ka", XK_Cyrillic_ka},
- {"Cyrillic_el", XK_Cyrillic_el},
- {"Cyrillic_em", XK_Cyrillic_em},
- {"Cyrillic_en", XK_Cyrillic_en},
- {"Cyrillic_o", XK_Cyrillic_o},
- {"Cyrillic_pe", XK_Cyrillic_pe},
- {"Cyrillic_ya", XK_Cyrillic_ya},
- {"Cyrillic_er", XK_Cyrillic_er},
- {"Cyrillic_es", XK_Cyrillic_es},
- {"Cyrillic_te", XK_Cyrillic_te},
- {"Cyrillic_u", XK_Cyrillic_u},
- {"Cyrillic_zhe", XK_Cyrillic_zhe},
- {"Cyrillic_ve", XK_Cyrillic_ve},
- {"Cyrillic_softsign", XK_Cyrillic_softsign},
- {"Cyrillic_yeru", XK_Cyrillic_yeru},
- {"Cyrillic_ze", XK_Cyrillic_ze},
- {"Cyrillic_sha", XK_Cyrillic_sha},
- {"Cyrillic_e", XK_Cyrillic_e},
- {"Cyrillic_shcha", XK_Cyrillic_shcha},
- {"Cyrillic_che", XK_Cyrillic_che},
- {"Cyrillic_hardsign", XK_Cyrillic_hardsign},
- {"Cyrillic_YU", XK_Cyrillic_YU},
- {"Cyrillic_A", XK_Cyrillic_A},
- {"Cyrillic_BE", XK_Cyrillic_BE},
- {"Cyrillic_TSE", XK_Cyrillic_TSE},
- {"Cyrillic_DE", XK_Cyrillic_DE},
- {"Cyrillic_IE", XK_Cyrillic_IE},
- {"Cyrillic_EF", XK_Cyrillic_EF},
- {"Cyrillic_GHE", XK_Cyrillic_GHE},
- {"Cyrillic_HA", XK_Cyrillic_HA},
- {"Cyrillic_I", XK_Cyrillic_I},
- {"Cyrillic_SHORTI", XK_Cyrillic_SHORTI},
- {"Cyrillic_KA", XK_Cyrillic_KA},
- {"Cyrillic_EL", XK_Cyrillic_EL},
- {"Cyrillic_EM", XK_Cyrillic_EM},
- {"Cyrillic_EN", XK_Cyrillic_EN},
- {"Cyrillic_O", XK_Cyrillic_O},
- {"Cyrillic_PE", XK_Cyrillic_PE},
- {"Cyrillic_YA", XK_Cyrillic_YA},
- {"Cyrillic_ER", XK_Cyrillic_ER},
- {"Cyrillic_ES", XK_Cyrillic_ES},
- {"Cyrillic_TE", XK_Cyrillic_TE},
- {"Cyrillic_U", XK_Cyrillic_U},
- {"Cyrillic_ZHE", XK_Cyrillic_ZHE},
- {"Cyrillic_VE", XK_Cyrillic_VE},
- {"Cyrillic_SOFTSIGN", XK_Cyrillic_SOFTSIGN},
- {"Cyrillic_YERU", XK_Cyrillic_YERU},
- {"Cyrillic_ZE", XK_Cyrillic_ZE},
- {"Cyrillic_SHA", XK_Cyrillic_SHA},
- {"Cyrillic_E", XK_Cyrillic_E},
- {"Cyrillic_SHCHA", XK_Cyrillic_SHCHA},
- {"Cyrillic_CHE", XK_Cyrillic_CHE},
- {"Cyrillic_HARDSIGN", XK_Cyrillic_HARDSIGN},
-#endif /* XK_CYRILLIC */
-#ifdef XK_GREEK
- {"Greek_ALPHAaccent", XK_Greek_ALPHAaccent},
- {"Greek_EPSILONaccent", XK_Greek_EPSILONaccent},
- {"Greek_ETAaccent", XK_Greek_ETAaccent},
- {"Greek_IOTAaccent", XK_Greek_IOTAaccent},
- {"Greek_IOTAdieresis", XK_Greek_IOTAdieresis},
- {"Greek_OMICRONaccent", XK_Greek_OMICRONaccent},
- {"Greek_UPSILONaccent", XK_Greek_UPSILONaccent},
- {"Greek_UPSILONdieresis", XK_Greek_UPSILONdieresis},
- {"Greek_OMEGAaccent", XK_Greek_OMEGAaccent},
- {"Greek_accentdieresis", XK_Greek_accentdieresis},
- {"Greek_horizbar", XK_Greek_horizbar},
- {"Greek_alphaaccent", XK_Greek_alphaaccent},
- {"Greek_epsilonaccent", XK_Greek_epsilonaccent},
- {"Greek_etaaccent", XK_Greek_etaaccent},
- {"Greek_iotaaccent", XK_Greek_iotaaccent},
- {"Greek_iotadieresis", XK_Greek_iotadieresis},
- {"Greek_iotaaccentdieresis", XK_Greek_iotaaccentdieresis},
- {"Greek_omicronaccent", XK_Greek_omicronaccent},
- {"Greek_upsilonaccent", XK_Greek_upsilonaccent},
- {"Greek_upsilondieresis", XK_Greek_upsilondieresis},
- {"Greek_upsilonaccentdieresis", XK_Greek_upsilonaccentdieresis},
- {"Greek_omegaaccent", XK_Greek_omegaaccent},
- {"Greek_ALPHA", XK_Greek_ALPHA},
- {"Greek_BETA", XK_Greek_BETA},
- {"Greek_GAMMA", XK_Greek_GAMMA},
- {"Greek_DELTA", XK_Greek_DELTA},
- {"Greek_EPSILON", XK_Greek_EPSILON},
- {"Greek_ZETA", XK_Greek_ZETA},
- {"Greek_ETA", XK_Greek_ETA},
- {"Greek_THETA", XK_Greek_THETA},
- {"Greek_IOTA", XK_Greek_IOTA},
- {"Greek_KAPPA", XK_Greek_KAPPA},
- {"Greek_LAMDA", XK_Greek_LAMDA},
- {"Greek_LAMBDA", XK_Greek_LAMBDA},
- {"Greek_MU", XK_Greek_MU},
- {"Greek_NU", XK_Greek_NU},
- {"Greek_XI", XK_Greek_XI},
- {"Greek_OMICRON", XK_Greek_OMICRON},
- {"Greek_PI", XK_Greek_PI},
- {"Greek_RHO", XK_Greek_RHO},
- {"Greek_SIGMA", XK_Greek_SIGMA},
- {"Greek_TAU", XK_Greek_TAU},
- {"Greek_UPSILON", XK_Greek_UPSILON},
- {"Greek_PHI", XK_Greek_PHI},
- {"Greek_CHI", XK_Greek_CHI},
- {"Greek_PSI", XK_Greek_PSI},
- {"Greek_OMEGA", XK_Greek_OMEGA},
- {"Greek_alpha", XK_Greek_alpha},
- {"Greek_beta", XK_Greek_beta},
- {"Greek_gamma", XK_Greek_gamma},
- {"Greek_delta", XK_Greek_delta},
- {"Greek_epsilon", XK_Greek_epsilon},
- {"Greek_zeta", XK_Greek_zeta},
- {"Greek_eta", XK_Greek_eta},
- {"Greek_theta", XK_Greek_theta},
- {"Greek_iota", XK_Greek_iota},
- {"Greek_kappa", XK_Greek_kappa},
- {"Greek_lamda", XK_Greek_lamda},
- {"Greek_lambda", XK_Greek_lambda},
- {"Greek_mu", XK_Greek_mu},
- {"Greek_nu", XK_Greek_nu},
- {"Greek_xi", XK_Greek_xi},
- {"Greek_omicron", XK_Greek_omicron},
- {"Greek_pi", XK_Greek_pi},
- {"Greek_rho", XK_Greek_rho},
- {"Greek_sigma", XK_Greek_sigma},
- {"Greek_finalsmallsigma", XK_Greek_finalsmallsigma},
- {"Greek_tau", XK_Greek_tau},
- {"Greek_upsilon", XK_Greek_upsilon},
- {"Greek_phi", XK_Greek_phi},
- {"Greek_chi", XK_Greek_chi},
- {"Greek_psi", XK_Greek_psi},
- {"Greek_omega", XK_Greek_omega},
- {"Greek_switch", XK_Greek_switch},
-#endif /* XK_GREEK */
-#ifdef XK_TECHNICAL
- {"leftradical", XK_leftradical},
- {"topleftradical", XK_topleftradical},
- {"horizconnector", XK_horizconnector},
- {"topintegral", XK_topintegral},
- {"botintegral", XK_botintegral},
- {"vertconnector", XK_vertconnector},
- {"topleftsqbracket", XK_topleftsqbracket},
- {"botleftsqbracket", XK_botleftsqbracket},
- {"toprightsqbracket", XK_toprightsqbracket},
- {"botrightsqbracket", XK_botrightsqbracket},
- {"topleftparens", XK_topleftparens},
- {"botleftparens", XK_botleftparens},
- {"toprightparens", XK_toprightparens},
- {"botrightparens", XK_botrightparens},
- {"leftmiddlecurlybrace", XK_leftmiddlecurlybrace},
- {"rightmiddlecurlybrace", XK_rightmiddlecurlybrace},
- {"topleftsummation", XK_topleftsummation},
- {"botleftsummation", XK_botleftsummation},
- {"topvertsummationconnector", XK_topvertsummationconnector},
- {"botvertsummationconnector", XK_botvertsummationconnector},
- {"toprightsummation", XK_toprightsummation},
- {"botrightsummation", XK_botrightsummation},
- {"rightmiddlesummation", XK_rightmiddlesummation},
- {"lessthanequal", XK_lessthanequal},
- {"notequal", XK_notequal},
- {"greaterthanequal", XK_greaterthanequal},
- {"integral", XK_integral},
- {"therefore", XK_therefore},
- {"variation", XK_variation},
- {"infinity", XK_infinity},
- {"nabla", XK_nabla},
- {"approximate", XK_approximate},
- {"similarequal", XK_similarequal},
- {"ifonlyif", XK_ifonlyif},
- {"implies", XK_implies},
- {"identical", XK_identical},
- {"radical", XK_radical},
- {"includedin", XK_includedin},
- {"includes", XK_includes},
- {"intersection", XK_intersection},
- {"union", XK_union},
- {"logicaland", XK_logicaland},
- {"logicalor", XK_logicalor},
- {"partialderivative", XK_partialderivative},
- {"function", XK_function},
- {"leftarrow", XK_leftarrow},
- {"uparrow", XK_uparrow},
- {"rightarrow", XK_rightarrow},
- {"downarrow", XK_downarrow},
-#endif /* XK_TECHNICAL */
-#ifdef XK_SPECIAL
- {"blank", XK_blank},
- {"soliddiamond", XK_soliddiamond},
- {"checkerboard", XK_checkerboard},
- {"ht", XK_ht},
- {"ff", XK_ff},
- {"cr", XK_cr},
- {"lf", XK_lf},
- {"nl", XK_nl},
- {"vt", XK_vt},
- {"lowrightcorner", XK_lowrightcorner},
- {"uprightcorner", XK_uprightcorner},
- {"upleftcorner", XK_upleftcorner},
- {"lowleftcorner", XK_lowleftcorner},
- {"crossinglines", XK_crossinglines},
- {"horizlinescan1", XK_horizlinescan1},
- {"horizlinescan3", XK_horizlinescan3},
- {"horizlinescan5", XK_horizlinescan5},
- {"horizlinescan7", XK_horizlinescan7},
- {"horizlinescan9", XK_horizlinescan9},
- {"leftt", XK_leftt},
- {"rightt", XK_rightt},
- {"bott", XK_bott},
- {"topt", XK_topt},
- {"vertbar", XK_vertbar},
-#endif /* XK_SPECIAL */
-#ifdef XK_PUBLISHING
- {"emspace", XK_emspace},
- {"enspace", XK_enspace},
- {"em3space", XK_em3space},
- {"em4space", XK_em4space},
- {"digitspace", XK_digitspace},
- {"punctspace", XK_punctspace},
- {"thinspace", XK_thinspace},
- {"hairspace", XK_hairspace},
- {"emdash", XK_emdash},
- {"endash", XK_endash},
- {"signifblank", XK_signifblank},
- {"ellipsis", XK_ellipsis},
- {"doubbaselinedot", XK_doubbaselinedot},
- {"onethird", XK_onethird},
- {"twothirds", XK_twothirds},
- {"onefifth", XK_onefifth},
- {"twofifths", XK_twofifths},
- {"threefifths", XK_threefifths},
- {"fourfifths", XK_fourfifths},
- {"onesixth", XK_onesixth},
- {"fivesixths", XK_fivesixths},
- {"careof", XK_careof},
- {"figdash", XK_figdash},
- {"leftanglebracket", XK_leftanglebracket},
- {"decimalpoint", XK_decimalpoint},
- {"rightanglebracket", XK_rightanglebracket},
- {"marker", XK_marker},
- {"oneeighth", XK_oneeighth},
- {"threeeighths", XK_threeeighths},
- {"fiveeighths", XK_fiveeighths},
- {"seveneighths", XK_seveneighths},
- {"trademark", XK_trademark},
- {"signaturemark", XK_signaturemark},
- {"trademarkincircle", XK_trademarkincircle},
- {"leftopentriangle", XK_leftopentriangle},
- {"rightopentriangle", XK_rightopentriangle},
- {"emopencircle", XK_emopencircle},
- {"emopenrectangle", XK_emopenrectangle},
- {"leftsinglequotemark", XK_leftsinglequotemark},
- {"rightsinglequotemark", XK_rightsinglequotemark},
- {"leftdoublequotemark", XK_leftdoublequotemark},
- {"rightdoublequotemark", XK_rightdoublequotemark},
- {"prescription", XK_prescription},
- {"minutes", XK_minutes},
- {"seconds", XK_seconds},
- {"latincross", XK_latincross},
- {"hexagram", XK_hexagram},
- {"filledrectbullet", XK_filledrectbullet},
- {"filledlefttribullet", XK_filledlefttribullet},
- {"filledrighttribullet", XK_filledrighttribullet},
- {"emfilledcircle", XK_emfilledcircle},
- {"emfilledrect", XK_emfilledrect},
- {"enopencircbullet", XK_enopencircbullet},
- {"enopensquarebullet", XK_enopensquarebullet},
- {"openrectbullet", XK_openrectbullet},
- {"opentribulletup", XK_opentribulletup},
- {"opentribulletdown", XK_opentribulletdown},
- {"openstar", XK_openstar},
- {"enfilledcircbullet", XK_enfilledcircbullet},
- {"enfilledsqbullet", XK_enfilledsqbullet},
- {"filledtribulletup", XK_filledtribulletup},
- {"filledtribulletdown", XK_filledtribulletdown},
- {"leftpointer", XK_leftpointer},
- {"rightpointer", XK_rightpointer},
- {"club", XK_club},
- {"diamond", XK_diamond},
- {"heart", XK_heart},
- {"maltesecross", XK_maltesecross},
- {"dagger", XK_dagger},
- {"doubledagger", XK_doubledagger},
- {"checkmark", XK_checkmark},
- {"ballotcross", XK_ballotcross},
- {"musicalsharp", XK_musicalsharp},
- {"musicalflat", XK_musicalflat},
- {"malesymbol", XK_malesymbol},
- {"femalesymbol", XK_femalesymbol},
- {"telephone", XK_telephone},
- {"telephonerecorder", XK_telephonerecorder},
- {"phonographcopyright", XK_phonographcopyright},
- {"caret", XK_caret},
- {"singlelowquotemark", XK_singlelowquotemark},
- {"doublelowquotemark", XK_doublelowquotemark},
- {"cursor", XK_cursor},
-#endif /* XK_PUBLISHING */
-#ifdef XK_APL
- {"leftcaret", XK_leftcaret},
- {"rightcaret", XK_rightcaret},
- {"downcaret", XK_downcaret},
- {"upcaret", XK_upcaret},
- {"overbar", XK_overbar},
- {"downtack", XK_downtack},
- {"upshoe", XK_upshoe},
- {"downstile", XK_downstile},
- {"underbar", XK_underbar},
- {"jot", XK_jot},
- {"quad", XK_quad},
- {"uptack", XK_uptack},
- {"circle", XK_circle},
- {"upstile", XK_upstile},
- {"downshoe", XK_downshoe},
- {"rightshoe", XK_rightshoe},
- {"leftshoe", XK_leftshoe},
- {"lefttack", XK_lefttack},
- {"righttack", XK_righttack},
-#endif /* XK_APL */
-#ifdef XK_HEBREW
- {"hebrew_doublelowline", XK_hebrew_doublelowline},
- {"hebrew_aleph", XK_hebrew_aleph},
- {"hebrew_bet", XK_hebrew_bet},
- {"hebrew_beth", XK_hebrew_beth},
- {"hebrew_gimel", XK_hebrew_gimel},
- {"hebrew_gimmel", XK_hebrew_gimmel},
- {"hebrew_dalet", XK_hebrew_dalet},
- {"hebrew_daleth", XK_hebrew_daleth},
- {"hebrew_he", XK_hebrew_he},
- {"hebrew_waw", XK_hebrew_waw},
- {"hebrew_zain", XK_hebrew_zain},
- {"hebrew_zayin", XK_hebrew_zayin},
- {"hebrew_chet", XK_hebrew_chet},
- {"hebrew_het", XK_hebrew_het},
- {"hebrew_tet", XK_hebrew_tet},
- {"hebrew_teth", XK_hebrew_teth},
- {"hebrew_yod", XK_hebrew_yod},
- {"hebrew_finalkaph", XK_hebrew_finalkaph},
- {"hebrew_kaph", XK_hebrew_kaph},
- {"hebrew_lamed", XK_hebrew_lamed},
- {"hebrew_finalmem", XK_hebrew_finalmem},
- {"hebrew_mem", XK_hebrew_mem},
- {"hebrew_finalnun", XK_hebrew_finalnun},
- {"hebrew_nun", XK_hebrew_nun},
- {"hebrew_samech", XK_hebrew_samech},
- {"hebrew_samekh", XK_hebrew_samekh},
- {"hebrew_ayin", XK_hebrew_ayin},
- {"hebrew_finalpe", XK_hebrew_finalpe},
- {"hebrew_pe", XK_hebrew_pe},
- {"hebrew_finalzade", XK_hebrew_finalzade},
- {"hebrew_finalzadi", XK_hebrew_finalzadi},
- {"hebrew_zade", XK_hebrew_zade},
- {"hebrew_zadi", XK_hebrew_zadi},
- {"hebrew_qoph", XK_hebrew_qoph},
- {"hebrew_kuf", XK_hebrew_kuf},
- {"hebrew_resh", XK_hebrew_resh},
- {"hebrew_shin", XK_hebrew_shin},
- {"hebrew_taw", XK_hebrew_taw},
- {"hebrew_taf", XK_hebrew_taf},
- {"Hebrew_switch", XK_Hebrew_switch},
-#endif /* XK_HEBREW */
-#ifdef XK_THAI
- {"Thai_kokai", XK_Thai_kokai},
- {"Thai_khokhai", XK_Thai_khokhai},
- {"Thai_khokhuat", XK_Thai_khokhuat},
- {"Thai_khokhwai", XK_Thai_khokhwai},
- {"Thai_khokhon", XK_Thai_khokhon},
- {"Thai_khorakhang", XK_Thai_khorakhang},
- {"Thai_ngongu", XK_Thai_ngongu},
- {"Thai_chochan", XK_Thai_chochan},
- {"Thai_choching", XK_Thai_choching},
- {"Thai_chochang", XK_Thai_chochang},
- {"Thai_soso", XK_Thai_soso},
- {"Thai_chochoe", XK_Thai_chochoe},
- {"Thai_yoying", XK_Thai_yoying},
- {"Thai_dochada", XK_Thai_dochada},
- {"Thai_topatak", XK_Thai_topatak},
- {"Thai_thothan", XK_Thai_thothan},
- {"Thai_thonangmontho", XK_Thai_thonangmontho},
- {"Thai_thophuthao", XK_Thai_thophuthao},
- {"Thai_nonen", XK_Thai_nonen},
- {"Thai_dodek", XK_Thai_dodek},
- {"Thai_totao", XK_Thai_totao},
- {"Thai_thothung", XK_Thai_thothung},
- {"Thai_thothahan", XK_Thai_thothahan},
- {"Thai_thothong", XK_Thai_thothong},
- {"Thai_nonu", XK_Thai_nonu},
- {"Thai_bobaimai", XK_Thai_bobaimai},
- {"Thai_popla", XK_Thai_popla},
- {"Thai_phophung", XK_Thai_phophung},
- {"Thai_fofa", XK_Thai_fofa},
- {"Thai_phophan", XK_Thai_phophan},
- {"Thai_fofan", XK_Thai_fofan},
- {"Thai_phosamphao", XK_Thai_phosamphao},
- {"Thai_moma", XK_Thai_moma},
- {"Thai_yoyak", XK_Thai_yoyak},
- {"Thai_rorua", XK_Thai_rorua},
- {"Thai_ru", XK_Thai_ru},
- {"Thai_loling", XK_Thai_loling},
- {"Thai_lu", XK_Thai_lu},
- {"Thai_wowaen", XK_Thai_wowaen},
- {"Thai_sosala", XK_Thai_sosala},
- {"Thai_sorusi", XK_Thai_sorusi},
- {"Thai_sosua", XK_Thai_sosua},
- {"Thai_hohip", XK_Thai_hohip},
- {"Thai_lochula", XK_Thai_lochula},
- {"Thai_oang", XK_Thai_oang},
- {"Thai_honokhuk", XK_Thai_honokhuk},
- {"Thai_paiyannoi", XK_Thai_paiyannoi},
- {"Thai_saraa", XK_Thai_saraa},
- {"Thai_maihanakat", XK_Thai_maihanakat},
- {"Thai_saraaa", XK_Thai_saraaa},
- {"Thai_saraam", XK_Thai_saraam},
- {"Thai_sarai", XK_Thai_sarai},
- {"Thai_saraii", XK_Thai_saraii},
- {"Thai_saraue", XK_Thai_saraue},
- {"Thai_sarauee", XK_Thai_sarauee},
- {"Thai_sarau", XK_Thai_sarau},
- {"Thai_sarauu", XK_Thai_sarauu},
- {"Thai_phinthu", XK_Thai_phinthu},
- {"Thai_maihanakat_maitho", XK_Thai_maihanakat_maitho},
- {"Thai_baht", XK_Thai_baht},
- {"Thai_sarae", XK_Thai_sarae},
- {"Thai_saraae", XK_Thai_saraae},
- {"Thai_sarao", XK_Thai_sarao},
- {"Thai_saraaimaimuan", XK_Thai_saraaimaimuan},
- {"Thai_saraaimaimalai", XK_Thai_saraaimaimalai},
- {"Thai_lakkhangyao", XK_Thai_lakkhangyao},
- {"Thai_maiyamok", XK_Thai_maiyamok},
- {"Thai_maitaikhu", XK_Thai_maitaikhu},
- {"Thai_maiek", XK_Thai_maiek},
- {"Thai_maitho", XK_Thai_maitho},
- {"Thai_maitri", XK_Thai_maitri},
- {"Thai_maichattawa", XK_Thai_maichattawa},
- {"Thai_thanthakhat", XK_Thai_thanthakhat},
- {"Thai_nikhahit", XK_Thai_nikhahit},
- {"Thai_leksun", XK_Thai_leksun},
- {"Thai_leknung", XK_Thai_leknung},
- {"Thai_leksong", XK_Thai_leksong},
- {"Thai_leksam", XK_Thai_leksam},
- {"Thai_leksi", XK_Thai_leksi},
- {"Thai_lekha", XK_Thai_lekha},
- {"Thai_lekhok", XK_Thai_lekhok},
- {"Thai_lekchet", XK_Thai_lekchet},
- {"Thai_lekpaet", XK_Thai_lekpaet},
- {"Thai_lekkao", XK_Thai_lekkao},
-#endif /* XK_THAI */
-#ifdef XK_KOREAN
- {"Hangul", XK_Hangul},
- {"Hangul_Start", XK_Hangul_Start},
- {"Hangul_End", XK_Hangul_End},
- {"Hangul_Hanja", XK_Hangul_Hanja},
- {"Hangul_Jamo", XK_Hangul_Jamo},
- {"Hangul_Romaja", XK_Hangul_Romaja},
- {"Hangul_Codeinput", XK_Hangul_Codeinput},
- {"Hangul_Jeonja", XK_Hangul_Jeonja},
- {"Hangul_Banja", XK_Hangul_Banja},
- {"Hangul_PreHanja", XK_Hangul_PreHanja},
- {"Hangul_PostHanja", XK_Hangul_PostHanja},
- {"Hangul_SingleCandidate", XK_Hangul_SingleCandidate},
- {"Hangul_MultipleCandidate", XK_Hangul_MultipleCandidate},
- {"Hangul_PreviousCandidate", XK_Hangul_PreviousCandidate},
- {"Hangul_Special", XK_Hangul_Special},
- {"Hangul_switch", XK_Hangul_switch},
- {"Hangul_Kiyeog", XK_Hangul_Kiyeog},
- {"Hangul_SsangKiyeog", XK_Hangul_SsangKiyeog},
- {"Hangul_KiyeogSios", XK_Hangul_KiyeogSios},
- {"Hangul_Nieun", XK_Hangul_Nieun},
- {"Hangul_NieunJieuj", XK_Hangul_NieunJieuj},
- {"Hangul_NieunHieuh", XK_Hangul_NieunHieuh},
- {"Hangul_Dikeud", XK_Hangul_Dikeud},
- {"Hangul_SsangDikeud", XK_Hangul_SsangDikeud},
- {"Hangul_Rieul", XK_Hangul_Rieul},
- {"Hangul_RieulKiyeog", XK_Hangul_RieulKiyeog},
- {"Hangul_RieulMieum", XK_Hangul_RieulMieum},
- {"Hangul_RieulPieub", XK_Hangul_RieulPieub},
- {"Hangul_RieulSios", XK_Hangul_RieulSios},
- {"Hangul_RieulTieut", XK_Hangul_RieulTieut},
- {"Hangul_RieulPhieuf", XK_Hangul_RieulPhieuf},
- {"Hangul_RieulHieuh", XK_Hangul_RieulHieuh},
- {"Hangul_Mieum", XK_Hangul_Mieum},
- {"Hangul_Pieub", XK_Hangul_Pieub},
- {"Hangul_SsangPieub", XK_Hangul_SsangPieub},
- {"Hangul_PieubSios", XK_Hangul_PieubSios},
- {"Hangul_Sios", XK_Hangul_Sios},
- {"Hangul_SsangSios", XK_Hangul_SsangSios},
- {"Hangul_Ieung", XK_Hangul_Ieung},
- {"Hangul_Jieuj", XK_Hangul_Jieuj},
- {"Hangul_SsangJieuj", XK_Hangul_SsangJieuj},
- {"Hangul_Cieuc", XK_Hangul_Cieuc},
- {"Hangul_Khieuq", XK_Hangul_Khieuq},
- {"Hangul_Tieut", XK_Hangul_Tieut},
- {"Hangul_Phieuf", XK_Hangul_Phieuf},
- {"Hangul_Hieuh", XK_Hangul_Hieuh},
- {"Hangul_A", XK_Hangul_A},
- {"Hangul_AE", XK_Hangul_AE},
- {"Hangul_YA", XK_Hangul_YA},
- {"Hangul_YAE", XK_Hangul_YAE},
- {"Hangul_EO", XK_Hangul_EO},
- {"Hangul_E", XK_Hangul_E},
- {"Hangul_YEO", XK_Hangul_YEO},
- {"Hangul_YE", XK_Hangul_YE},
- {"Hangul_O", XK_Hangul_O},
- {"Hangul_WA", XK_Hangul_WA},
- {"Hangul_WAE", XK_Hangul_WAE},
- {"Hangul_OE", XK_Hangul_OE},
- {"Hangul_YO", XK_Hangul_YO},
- {"Hangul_U", XK_Hangul_U},
- {"Hangul_WEO", XK_Hangul_WEO},
- {"Hangul_WE", XK_Hangul_WE},
- {"Hangul_WI", XK_Hangul_WI},
- {"Hangul_YU", XK_Hangul_YU},
- {"Hangul_EU", XK_Hangul_EU},
- {"Hangul_YI", XK_Hangul_YI},
- {"Hangul_I", XK_Hangul_I},
- {"Hangul_J_Kiyeog", XK_Hangul_J_Kiyeog},
- {"Hangul_J_SsangKiyeog", XK_Hangul_J_SsangKiyeog},
- {"Hangul_J_KiyeogSios", XK_Hangul_J_KiyeogSios},
- {"Hangul_J_Nieun", XK_Hangul_J_Nieun},
- {"Hangul_J_NieunJieuj", XK_Hangul_J_NieunJieuj},
- {"Hangul_J_NieunHieuh", XK_Hangul_J_NieunHieuh},
- {"Hangul_J_Dikeud", XK_Hangul_J_Dikeud},
- {"Hangul_J_Rieul", XK_Hangul_J_Rieul},
- {"Hangul_J_RieulKiyeog", XK_Hangul_J_RieulKiyeog},
- {"Hangul_J_RieulMieum", XK_Hangul_J_RieulMieum},
- {"Hangul_J_RieulPieub", XK_Hangul_J_RieulPieub},
- {"Hangul_J_RieulSios", XK_Hangul_J_RieulSios},
- {"Hangul_J_RieulTieut", XK_Hangul_J_RieulTieut},
- {"Hangul_J_RieulPhieuf", XK_Hangul_J_RieulPhieuf},
- {"Hangul_J_RieulHieuh", XK_Hangul_J_RieulHieuh},
- {"Hangul_J_Mieum", XK_Hangul_J_Mieum},
- {"Hangul_J_Pieub", XK_Hangul_J_Pieub},
- {"Hangul_J_PieubSios", XK_Hangul_J_PieubSios},
- {"Hangul_J_Sios", XK_Hangul_J_Sios},
- {"Hangul_J_SsangSios", XK_Hangul_J_SsangSios},
- {"Hangul_J_Ieung", XK_Hangul_J_Ieung},
- {"Hangul_J_Jieuj", XK_Hangul_J_Jieuj},
- {"Hangul_J_Cieuc", XK_Hangul_J_Cieuc},
- {"Hangul_J_Khieuq", XK_Hangul_J_Khieuq},
- {"Hangul_J_Tieut", XK_Hangul_J_Tieut},
- {"Hangul_J_Phieuf", XK_Hangul_J_Phieuf},
- {"Hangul_J_Hieuh", XK_Hangul_J_Hieuh},
- {"Hangul_RieulYeorinHieuh", XK_Hangul_RieulYeorinHieuh},
- {"Hangul_SunkyeongeumMieum", XK_Hangul_SunkyeongeumMieum},
- {"Hangul_SunkyeongeumPieub", XK_Hangul_SunkyeongeumPieub},
- {"Hangul_PanSios", XK_Hangul_PanSios},
- {"Hangul_KkogjiDalrinIeung", XK_Hangul_KkogjiDalrinIeung},
- {"Hangul_SunkyeongeumPhieuf", XK_Hangul_SunkyeongeumPhieuf},
- {"Hangul_YeorinHieuh", XK_Hangul_YeorinHieuh},
- {"Hangul_AraeA", XK_Hangul_AraeA},
- {"Hangul_AraeAE", XK_Hangul_AraeAE},
- {"Hangul_J_PanSios", XK_Hangul_J_PanSios},
- {"Hangul_J_KkogjiDalrinIeung", XK_Hangul_J_KkogjiDalrinIeung},
- {"Hangul_J_YeorinHieuh", XK_Hangul_J_YeorinHieuh},
- {"Korean_Won", XK_Korean_Won},
-#endif /* XK_KOREAN */
- {"EuroSign", XK_EuroSign},
-#endif
- {"NoSymbol", NoSymbol}
-};
-
-KeySym
-XStringToKeysym(const char *str)
-{
- int i;
- for (i = 0; StringToKeysym[i].keysym != NoSymbol
- && strcmp(StringToKeysym[i].string, str); i++);
- return StringToKeysym[i].keysym;
-}
-
-const char *
-XKeysymToString(KeySym keysym)
-{
- int i;
- for (i = 0; StringToKeysym[i].keysym != NoSymbol
- && StringToKeysym[i].keysym != keysym; i++);
- return StringToKeysym[i].string;
-}
-
-void
-XDisplayKeycodes(Display * display, int *min_keycode, int *max_keycode)
-{
- /* VNC keycodes are non-existant */
- *min_keycode = 0xffff;
- *max_keycode = 0;
-}
diff --git a/vnc/x11stubs.h b/vnc/x11stubs.h
deleted file mode 100644
index 55fe36b..0000000
--- a/vnc/x11stubs.h
+++ /dev/null
@@ -1,33 +0,0 @@
-#ifndef NOXKEYMAP_H
-#define NOXKEYMAP_H
-
-/* Fake a few X11 calls */
-
-#define XK_MISCELLANY
-#include
-#include
-
-#define NoSymbol 0L
-#define ShiftMask (1<<0)
-#define LockMask (1<<1)
-#define ControlMask (1<<2)
-#define Mod1Mask (1<<3)
-#define Mod2Mask (1<<4)
-#define Mod3Mask (1<<5)
-#define Mod4Mask (1<<6)
-#define Mod5Mask (1<<7)
-#define Button1 1
-#define Button2 2
-#define Button3 3
-#define Button4 4
-#define Button5 5
-
-typedef int Display;
-typedef int Window;
-typedef rfbKeySym KeySym;
-
-KeySym XStringToKeysym(const char *str);
-const char *XKeysymToString(KeySym keysym);
-void XDisplayKeycodes(Display * display, int *min_keycode, int *max_keycode);
-
-#endif
diff --git a/xkeymap.c b/xkeymap.c
index 80b9ae8..0643b1d 100644
--- a/xkeymap.c
+++ b/xkeymap.c
@@ -20,12 +20,8 @@
along with this program. If not, see .
*/
-#ifdef RDP2VNC
-#include "vnc/x11stubs.h"
-#else
#include
#include
-#endif
#include
#include
@@ -1027,16 +1023,12 @@ ensure_remote_modifiers(uint32 ev_time, key_translation tr)
unsigned int
read_keyboard_state()
{
-#ifdef RDP2VNC
- return 0;
-#else
unsigned int state;
Window wdummy;
int dummy;
XQueryPointer(g_display, g_wnd, &wdummy, &wdummy, &dummy, &dummy, &dummy, &dummy, &state);
return state;
-#endif
}