Commit e91277d0 authored by Alexander Wuerstlein's avatar Alexander Wuerstlein Committed by Mike Gabriel

Make nxagent-specific keyboard bindings configurable…

Make nxagent-specific keyboard bindings configurable (320_nxagent_configurable-keystrokes.full.patch). Replaces the hardcoded nxagent keybindings by a configurable table of keybindings. The default configuration is the same as the original one, to maintain compatibility. A user/administrator can either specify a command line parameter, environment variable or place a file in ~/.nx/config/keystrokes.cfg or /etc/nxagent/keystrokes.cfg to reconfigure these keybindings. The configuration file format is XML, a dependency on libxml2 is added to allow parsing the configuration.
parent 4dc1bd00
320_nxagent_configurable-keystrokes.full.patch
321_nxagent_x2go-specific-keystroke-config.full.patch
400_nxcomp-version.full+lite.patch
#401_nxcomp_bigrequests-and-genericevent-extensions.full+lite.patch
......
......@@ -1013,15 +1013,18 @@ $(NXAGENTOBJS) $(NXAGENTLIBS) $(NXAGENTSYSLIBS):: $(NXAGENTDIRS)
#if defined(SunArchitecture)
NXAGENTNXLIBS = -L ../../../nxcomp -L ../../../nxcompext -L ../../../nxcompshad \
-lXcomp -lXcompext -lXcompshad -lrt -L/usr/sfw/lib -lXrender -lXfixes \
-L../../../nx-X11/exports/lib -lXtst -lXdamage -lXrandr -lXcomposite -lXdmcp
-L../../../nx-X11/exports/lib -lXtst -lXdamage -lXrandr -lXcomposite -lXdmcp \
`pkg-config --libs libxml-2.0`
#elif defined(cygwinArchitecture)
NXAGENTNXLIBS = -L ../../../nxcomp -L ../../../nxcompext \
-lXcomp -lXcompext -lXrender -lX11 -lXext -lXcomposite -lXfixes \
-L ../../../nxcompshad -lXcompshad -L../../../nx-X11/exports/lib -lXtst -lXdmcp
-L ../../../nxcompshad -lXcompshad -L../../../nx-X11/exports/lib -lXtst -lXdmcp \
`pkg-config --libs libxml-2.0`
#else
NXAGENTNXLIBS = -L ../../../nxcomp -L ../../../nxcompext -L ../../../nxcompshad \
-lXcomp -lXcompext -lXcompshad -lXrender -lX11 -lXext -lXfixes \
-L../../../nx-X11/exports/lib -lXtst -lXdamage -lXrandr -lXcomposite -lXinerama -lXdmcp
-L../../../nx-X11/exports/lib -lXtst -lXdamage -lXrandr -lXcomposite -lXinerama -lXdmcp \
`pkg-config --libs libxml-2.0`
#endif
#endif
......
......@@ -149,6 +149,8 @@ static int nxagentGetDialogName(void);
char nxagentVerbose = 0;
char *nxagentKeystrokeFile = NULL;
int ddxProcessArgument(int argc, char *argv[], int i)
{
/*
......@@ -1022,6 +1024,20 @@ int ddxProcessArgument(int argc, char *argv[], int i)
return 1;
}
if (!strcmp(argv[i], "-keystrokefile"))
{
if (i + 1 < argc)
{
if (NULL != (nxagentKeystrokeFile = strdup(argv[i + 1])))
{
return 2;
} else {
FatalError("malloc failed");
}
}
return 0;
}
return 0;
}
......
......@@ -83,4 +83,6 @@ extern int nxagentUserDefinedFontPath;
extern int nxagentRemoteMajor;
extern char *nxagentKeystrokeFile;
#endif /* __Args_H__ */
......@@ -142,7 +142,8 @@ INCLUDES = -I. -I../../../../../nxcomp -I../../../../../nxcompext -I../../../../
-I../../miext/damage -I../../miext/cw \
-I../../GL/glx -I../../GL/include -I../../../../lib/GL/include -I../../Xext \
-I$(EXTINCSRC) -I$(XINCLUDESRC) \
$(VFBINCLUDES) $(NXFONTINCLUDES) $(LIBXRANDRINCLUDES)
$(VFBINCLUDES) $(NXFONTINCLUDES) $(LIBXRANDRINCLUDES) \
`pkg-config --cflags-only-I libxml-2.0`
#ifdef SunArchitecture
INCLUDES = -I. -I../../../../../nxcomp -I../../../../../nxcompext -I../../../../../nxcompshad \
-I../../../../extras/Mesa/include \
......@@ -152,7 +153,8 @@ INCLUDES = -I. -I../../../../../nxcomp -I../../../../../nxcompext -I../../../../
-I../../GL/glx -I../../GL/include -I../../../../lib/GL/include -I../../Xext \
-I../../miext/damage -I../../miext/cw \
-I$(EXTINCSRC) -I$(XINCLUDESRC) \
$(VFBINCLUDES) $(NXFONTINCLUDES) $(LIBXRANDRINCLUDES)
$(VFBINCLUDES) $(NXFONTINCLUDES) $(LIBXRANDRINCLUDES) \
`pkg-config --cflags-only-I libxml-2.0`
#else
#ifdef cygwinArchitecture
INCLUDES = -I. -I$(XBUILDINCDIR) -I$(FONTINCSRC) \
......@@ -162,7 +164,8 @@ INCLUDES = -I. -I$(XBUILDINCDIR) -I$(FONTINCSRC) \
-I../../../../../nxcomp -I../../../../../nxcompext -I../../../../../nxcompshad \
-I../../../../extras/Mesa/include \
-I$(EXTINCSRC) -I$(XINCLUDESRC) \
$(VFBINCLUDES) $(NXFONTINCLUDES) $(LIBXRANDRINCLUDES)
$(VFBINCLUDES) $(NXFONTINCLUDES) $(LIBXRANDRINCLUDES) \
`pkg-config --cflags-only-I libxml-2.0`
#endif
#endif
......
......@@ -24,4 +24,51 @@ extern int nxagentCheckSpecialKeystroke(XKeyEvent*, enum HandleEventResult*);
unsigned int nxagentAltMetaMask;
/* keep this sorted, do not rely on any numerical value in this enum, and be aware
* that KEYSTROKE_MAX may be used in a malloc */
/* also be aware that if changing any numerical values, you also need to change values
* Keystroke.c nxagentSpecialKeystrokeNames */
enum nxagentSpecialKeystroke {
/* 0 is used as end marker */
KEYSTROKE_END_MARKER = 0,
KEYSTROKE_CLOSE_SESSION = 1,
KEYSTROKE_SWITCH_ALL_SCREENS = 2,
KEYSTROKE_MINIMIZE = 3,
KEYSTROKE_LEFT = 4,
KEYSTROKE_UP = 5,
KEYSTROKE_RIGHT = 6,
KEYSTROKE_DOWN = 7,
KEYSTROKE_RESIZE = 8,
KEYSTROKE_DEFER = 9,
KEYSTROKE_IGNORE = 10,
KEYSTROKE_FORCE_SYNCHRONIZATION = 11,
/* stuff used for debugging, probably not useful for most people */
KEYSTROKE_DEBUG_TREE = 12,
KEYSTROKE_REGIONS_ON_SCREEN = 13,
KEYSTROKE_TEST_INPUT = 14,
KEYSTROKE_DEACTIVATE_INPUT_DEVICES_GRAB = 15,
KEYSTROKE_FULLSCREEN = 16,
KEYSTROKE_VIEWPORT_MOVE_LEFT = 17,
KEYSTROKE_VIEWPORT_MOVE_UP = 18,
KEYSTROKE_VIEWPORT_MOVE_RIGHT = 19,
KEYSTROKE_VIEWPORT_MOVE_DOWN = 20,
KEYSTROKE_NOTHING = 21,
/* insert more here, increment KEYSTROKE_MAX accordingly.
* then update string translation below */
KEYSTROKE_MAX=22,
};
struct nxagentSpecialKeystrokeMap {
enum nxagentSpecialKeystroke stroke;
unsigned int modifierMask; /* everything except alt/meta */
int modifierAltMeta; /* modifier combination should include alt/meta */
KeySym keysym;
};
#endif /* __Keystroke_H__ */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment