📄 vncviewer.h
字号:
/*
* Copyright (C) 1997, 1998 Olivetti & Oracle Research Laboratory
*
* This 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 2 of the License, or
* (at your option) any later version.
*
* This software 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 software; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/
/*
* vncviewer.h
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/time.h>
#ifdef NANOX
#define MWINCLUDECOLORS
#include "nano-X.h"
/* required for rfbproto.h */
typedef unsigned long CARD32;
typedef unsigned short CARD16;
typedef unsigned char CARD8;
#else
#include <X11/Xlib.h>
#include <X11/Xmd.h>
#endif
#include <rfbproto.h>
#ifdef NANOX
/* try and map some X stuff to nano-X */
#define Bool GR_BOOL
#define True GR_TRUE
#define False GR_FALSE
#define XGCValues GR_GC_INFO
typedef GR_ID Window; /* from X.h */
typedef GR_ID Colormap; /* from X.h */
typedef CARD32 Atom; /* from X.h */
typedef CARD32 Time; /* from X.h */
#define None 0L /* from X.h */
#define CurrentTime 0L /* from X.h */
#define PropertyChangeMask (1L<<22) /* from X.h */
#define XA_PRIMARY ((Atom) 1) /* from Xatom.h */
/* Flags used in StoreNamedColor, StoreColors */
#define DoRed (1<<0)
#define DoGreen (1<<1)
#define DoBlue (1<<2)
#define ConnectionNumber(dpy) ((dpy)->fd)
#define ScreenOfDisplay(dpy, scr) (&(dpy)->screens[scr])
#define DefaultScreen(dpy) ((dpy)->default_screen)
#define DefaultRootWindow(dpy) (ScreenOfDisplay(dpy,DefaultScreen(dpy))->root)
#define DefaultGC(dpy, scr) (ScreenOfDisplay(dpy,scr)->default_gc)
/* data structure used by color operations */
typedef struct {
unsigned long pixel;
unsigned short red, green, blue;
char flags; /* do_red, do_green, do_blue */
char pad;
} XColor;
#define GCForeground (1L<<2)
#define GCBackground (1L<<3)
/*
* the Screen structure is defined in Xlib.h
*/
typedef struct {
Window root; /* Root window id. */
} Screen;
/*
* the Display structure is defined as _XDisplay in Xlib.h
*/
typedef struct {
int fd; /* Network socket */
int default_screen; /* default screen for operations */
Screen *screens; /* pointer to list of screens */
} Display;
/*
* the XEvent union is defined in Xlib.h
*/
typedef struct {
int dummy;
} XEvent;
#endif /* NANOX */
extern int endianTest;
#define Swap16IfLE(s) \
(*(char *)&endianTest ? ((((s) & 0xff) << 8) | (((s) >> 8) & 0xff)) : (s))
#define Swap32IfLE(l) \
(*(char *)&endianTest ? ((((l) & 0xff000000) >> 24) | \
(((l) & 0x00ff0000) >> 8) | \
(((l) & 0x0000ff00) << 8) | \
(((l) & 0x000000ff) << 24)) : (l))
#define MAX_ENCODINGS 10
/* args.c */
extern char *programName;
extern char hostname[];
extern int port;
extern Bool listenSpecified;
extern int listenPort, flashPort;
extern char *displayname;
extern Bool shareDesktop;
extern Bool viewOnly;
extern CARD32 explicitEncodings[];
extern int nExplicitEncodings;
extern Bool addCopyRect;
extern Bool addRRE;
extern Bool addCoRRE;
extern Bool addHextile;
extern Bool useBGR233;
extern Bool forceOwnCmap;
extern Bool forceTruecolour;
extern int requestedDepth;
extern char *geometry;
extern int wmDecorationWidth;
extern int wmDecorationHeight;
extern char *passwdFile;
extern int updateRequestPeriodms;
extern int updateRequestX;
extern int updateRequestY;
extern int updateRequestW;
extern int updateRequestH;
extern int rawDelay;
extern int copyRectDelay;
extern Bool debug;
extern void processArgs(int argc, char **argv);
extern void usage();
/* rfbproto.c */
extern int rfbsock;
extern Bool canUseCoRRE;
extern Bool canUseHextile;
extern char *desktopName;
extern rfbPixelFormat myFormat;
extern rfbServerInitMsg si;
extern struct timeval updateRequestTime;
extern Bool sendUpdateRequest;
extern Bool ConnectToRFBServer(const char *hostname, int port);
extern Bool InitialiseRFBConnection();
extern Bool SetFormatAndEncodings();
extern Bool SendIncrementalFramebufferUpdateRequest();
extern Bool SendFramebufferUpdateRequest(int x, int y, int w, int h,
Bool incremental);
extern Bool SendPointerEvent(int x, int y, int buttonMask);
extern Bool SendKeyEvent(CARD32 key, Bool down);
extern Bool SendClientCutText(char *str, int len);
extern Bool HandleRFBServerMessage();
#ifdef NANOX
/* nanox.c */
extern Display *dpy;
extern Window canvas;
extern Colormap cmap;
extern GR_GC_ID gc;
extern GR_GC_ID srcGC, dstGC;
extern unsigned long BGR233ToPixel[];
extern Bool CreateXWindow();
extern void ShutdownX();
extern Bool HandleXEvents(GR_EVENT *ev);
extern Bool AllXEventsPredicate(Display *dpy, XEvent *ev, char *arg);
extern void CopyDataToScreen(CARD8 *buf, int x, int y, int width, int height);
/* Xlib functions */
extern char *XDisplayName(char *display);
extern int XChangeGC(Display *dpy, GR_GC_ID gc, unsigned long vmask,
GR_GC_INFO *gcv);
extern int XStoreColor(Display *dpy, Colormap cmap, XColor *xc);
extern int XFillRectangle(Display *dpy, Window canvas, GR_GC_ID gc,
int x, int y, int w, int h);
extern int XSync(Display *dpy, Bool discard);
extern int XCopyArea(Display *dpy, Window src, Window dst, GR_GC_ID gc, \
int x1, int y1, int w, int h, int x2, int y2);
extern int XBell(Display *dpy, int percent);
extern int XSelectInput(Display *dpy, Window win, long evmask);
extern int XStoreBytes(Display *dpy, char *bytes, int nbytes);
extern int XSetSelectionOwner(Display *dpy, Atom sel, Window own, Time t);
#else /* NANOX */
/* x.c */
extern Display *dpy;
extern Window canvas;
extern Colormap cmap;
extern GC gc;
extern GC srcGC, dstGC;
extern unsigned long BGR233ToPixel[];
extern Bool CreateXWindow();
extern void ShutdownX();
extern Bool HandleXEvents();
extern Bool AllXEventsPredicate(Display *dpy, XEvent *ev, char *arg);
extern void CopyDataToScreen(CARD8 *buf, int x, int y, int width, int height);
#endif /* NANOX */
/* sockets.c */
extern Bool errorMessageFromReadExact;
extern Bool ReadExact(int sock, char *buf, int n);
extern Bool WriteExact(int sock, char *buf, int n);
extern int ListenAtTcpPort(int port);
extern int ConnectToTcpAddr(unsigned int host, int port);
extern int AcceptTcpConnection(int listenSock);
extern int StringToIPAddr(const char *str, unsigned int *addr);
extern Bool SameMachine(int sock);
/* listen.c */
extern void listenForIncomingConnections();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -