From 9f0713c0433ab7b95b301b1cc3118ef4dbc3d8a7 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Mon, 27 Mar 2017 22:07:51 +0200 Subject: doc: document debugging keystrokes --- doc/nxagent/README.keystrokes | 6 ------ doc/nxagent/README.keystrokes.debug | 27 +++++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 doc/nxagent/README.keystrokes.debug (limited to 'doc') diff --git a/doc/nxagent/README.keystrokes b/doc/nxagent/README.keystrokes index 96bc158d2..f9b4bf3a1 100644 --- a/doc/nxagent/README.keystrokes +++ b/doc/nxagent/README.keystrokes @@ -103,11 +103,5 @@ reread_keystrokes forces nxagent to re-read the keystroke configuration. Useful to add/changes keystrokes for a running session. - -Only in builds with certain debugging options enabled, ignored otherwise: force_synchronization Forces the drawing of elements to be synchronized which can fix some visual bugs. -debug_tree -regions_on_screen -test_input -deactivate_input_devices_grab diff --git a/doc/nxagent/README.keystrokes.debug b/doc/nxagent/README.keystrokes.debug new file mode 100644 index 000000000..85ec2613a --- /dev/null +++ b/doc/nxagent/README.keystrokes.debug @@ -0,0 +1,27 @@ +Configurable keybindings for debugging nxagent + +Some keystrokes are only available in special debug builds of nxagent +and will be ignored otherwise. These are + +debug_tree + Show the window trees of both internal and external + windows. Included if DEBUG_TREE is defined. + +regions_on_screen + Make corrupted regions visible. Included if DUMP is defined. + +test_input + Activate/deactive input device debugging. Included if NX_DEBUG_INPUT + is defined. + +deactivate_input_devices_grab + Release grab of input devices. Included if NX_DEBUG_INPUT is + defined. + +They can be configured by adding these lines to keystrokes.cfg, below +keystrokes represent the default: + + + + + -- cgit v1.2.3 From d28cf55743a5acadd0fa650a5559083c210449b8 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Mon, 27 Mar 2017 22:46:47 +0200 Subject: doc: rework keystroke documentation --- doc/nxagent/README.keystrokes | 93 +++++++++++++++++++++++-------------------- 1 file changed, 50 insertions(+), 43 deletions(-) (limited to 'doc') diff --git a/doc/nxagent/README.keystrokes b/doc/nxagent/README.keystrokes index f9b4bf3a1..612e710cc 100644 --- a/doc/nxagent/README.keystrokes +++ b/doc/nxagent/README.keystrokes @@ -1,6 +1,6 @@ Configurable keybindings in nxagent -Keybindings in the redistributed x2go version of nxagent can now be configured +Keybindings in the redistributed x2go version of nxagent can be configured by the user. This is done via a configuration file. File location @@ -40,29 +40,31 @@ The configuration file is XML with the following format: -Each 'action' defines an action to be executed when receiving that keystroke. A -list of possible actions is given below. Some of those actions are only -available with debug builds of nxagent. +Each 'action' defines an action to be executed when receiving that +keystroke. A list of possible actions is given below. Some of those +actions are only available with debug builds of nxagent. Keys are given as a combination of 'key' and (optionally) a number of modifiers. The key attribute is evaluated into a X11 key via the usual XStringToKeysym function. A list of possible keys can be found in -/usr/include/X11/keysymdef.h, the names are specified without the leading -'XK_'. Evaluation is case-sensitive, so, 'space' and 'Escape' will work while -'Space' and 'escape' won't. +/usr/include/X11/keysymdef.h, the names are specified without the +leading 'XK_'. Evaluation is case-sensitive, so, 'space' and 'Escape' +will work while 'Space' and 'escape' won't. -Modifiers are given as boolean attributes, possible modifiers are Mod1, Mod2, -Mod3, Mod4, Mod5, Control, Shift, Lock. Sensible combinations strongly depend on your -keyboard configuration, but usually you will need Mod1 and Control. Boolean in -this context means '0', 'false' and an unspecified attribute are false, anything -else is considered true. +Modifiers are given as boolean attributes, possible modifiers are +Mod1, Mod2, Mod3, Mod4, Mod5, Control, Shift, Lock. Sensible +combinations strongly depend on your keyboard configuration, but +usually you will need Mod1 and Control. Boolean in this context means +'0', 'false' and an unspecified attribute are false, anything else is +considered true. Everything in this file is case-sensitive. Unknown lines are ignored. -Keybindings are evaluated from top to bottom, so if a keybinding matches, other -keybindings further down will be ignored. The contents of the file replaces the -default keybindings, and only one file is read, no merging between different -configuration files is done. This also means that an empty or invalid configuration -file deactivates all keybindings. +Keybindings are evaluated from top to bottom, so if a keybinding +matches, other keybindings further down will be ignored. The contents +of the file replaces the default keybindings, and only one file is +read, no merging between different configuration files is done. This +also means that an empty or invalid configuration file deactivates all +keybindings. If an attribute occurs more than once in a line the last one wins. @@ -71,37 +73,42 @@ List of possible 'action' attributes: close_session This terminates the session. + fullscreen - Switches the client window into or out of fullscreen mode, using only the current head. + Switches the client window into or out of fullscreen mode, using + only the current head. + switch_all_screens - Switches the client window into or out of fullscreen mode, using all available heads. + Switches the client window into or out of fullscreen mode, using all + available heads. + minimize - This will minimize the client window (even for fullscreen sessions.) -left -up -right -down + This will minimize the client window (even for fullscreen sessions). + resize - This action switches between the auto-resize and viewport mode - (static size). The default is auto-resize. In viewport mode one can - use the 'viewport_move_up', 'viewport_move_down', - 'viewport_move_left' and 'viewport_move_right' actions to move - within the image. + This action switches between the auto-resize (default) and viewport + mode. In viewport mode the xserver screen size stays static even + if the nxagent window is resized. You will possibly only see a part of + the screen and can scroll around using the following actions: +viewport_move_up/down + Moves the viewport up/down by the height of the visiable area. +viewport_move_left/right + Moves the viewport left/right by the width of the visible area. +up/down/left/right + Smoothly moves the viewport up/down/left/right with increasing step + size (maximum step size is 200px). + defer - activate/deactivate deferred screen updates. + Activates/deactivates deferred screen updates. + ignore - Makes it possible to add 'ignore', as in nothing happens when certain keys are pressed. -viewport_move_left - Moves the image viewport to the left. -viewport_move_up - Moves the image viewport up. -viewport_move_right - Moves the image viewport to the right. -viewport_move_down - Moves the image viewport down. + Ignores the following keystroke, nothing will happen when this + keystroke is pressed. + reread_keystrokes - forces nxagent to re-read the keystroke - configuration. Useful to add/changes keystrokes for a running - session. + Forces nxagent to re-read the keystroke configuration. Useful to + add/change keystrokes to a running session. + force_synchronization - Forces the drawing of elements to be synchronized which can fix some visual bugs. + Forces immediate drawing of elements to be synchronized which can + fix some visual bugs. -- cgit v1.2.3 From ee18cd43d873bc814ca40faabd29cc486061969f Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Mon, 27 Mar 2017 22:58:38 +0200 Subject: Keystrokes: rename left/up/right/down keystrokes to descriptive names The are now called reflecting their purpose: viewport_scroll_left/up/right/down. This also regroups all the keystrokes referring to viewport stuff. --- doc/nxagent/README.keystrokes | 13 ++--- etc/keystrokes.cfg | 18 +++--- nx-X11/programs/Xserver/hw/nxagent/Events.c | 8 +-- nx-X11/programs/Xserver/hw/nxagent/Keystroke.c | 78 +++++++++++++------------- nx-X11/programs/Xserver/hw/nxagent/Keystroke.h | 11 ++-- 5 files changed, 64 insertions(+), 64 deletions(-) (limited to 'doc') diff --git a/doc/nxagent/README.keystrokes b/doc/nxagent/README.keystrokes index 612e710cc..3d55f5096 100644 --- a/doc/nxagent/README.keystrokes +++ b/doc/nxagent/README.keystrokes @@ -90,13 +90,12 @@ resize mode. In viewport mode the xserver screen size stays static even if the nxagent window is resized. You will possibly only see a part of the screen and can scroll around using the following actions: -viewport_move_up/down - Moves the viewport up/down by the height of the visiable area. -viewport_move_left/right - Moves the viewport left/right by the width of the visible area. -up/down/left/right - Smoothly moves the viewport up/down/left/right with increasing step - size (maximum step size is 200px). +viewport_move_left/up/right/down + Moves the viewport left/up/right/down by the width resp. height of + the visible area. +viewport_scroll_left/up/right/down + Scrolls the viewport left/up/right/down with increasing speed + (maximum step size is 200px). defer Activates/deactivates deferred screen updates. diff --git a/etc/keystrokes.cfg b/etc/keystrokes.cfg index 1620e04d0..b482119ad 100644 --- a/etc/keystrokes.cfg +++ b/etc/keystrokes.cfg @@ -4,10 +4,10 @@ - + @@ -16,13 +16,13 @@ - - - - - - - - + + + + + + + + diff --git a/nx-X11/programs/Xserver/hw/nxagent/Events.c b/nx-X11/programs/Xserver/hw/nxagent/Events.c index d8512b548..e4d031e06 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Events.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Events.c @@ -180,6 +180,10 @@ static int viewportLastX; static int viewportLastY; static Cursor viewportCursor; +#define MAX_INC 200 +#define INC_STEP 5 +#define nextinc(x) ((x) < MAX_INC ? (x) += INC_STEP : (x)) + /* * Keyboard and pointer are handled as they were real devices by * Xnest and we inherit this behaviour. The following mask will @@ -193,10 +197,6 @@ static Mask defaultEventMask; static int lastEventSerial = 0; -#define MAX_INC 200 -#define INC_STEP 5 -#define nextinc(x) ((x) < MAX_INC ? (x) += INC_STEP : (x)) - /* * Used to mask the appropriate bits in * the state reported by XkbStateNotify diff --git a/nx-X11/programs/Xserver/hw/nxagent/Keystroke.c b/nx-X11/programs/Xserver/hw/nxagent/Keystroke.c index ff6a2939e..ef7b0b27f 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Keystroke.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Keystroke.c @@ -75,11 +75,6 @@ char * nxagentSpecialKeystrokeNames[] = { "switch_all_screens", "fullscreen", "minimize", - "left", - "up", - "right", - "down", - "resize", "defer", "ignore", "force_synchronization", @@ -94,10 +89,15 @@ char * nxagentSpecialKeystrokeNames[] = { "test_input", "deactivate_input_devices_grab", #endif + "resize", "viewport_move_left", "viewport_move_up", "viewport_move_right", "viewport_move_down", + "viewport_scroll_left", + "viewport_scroll_up", + "viewport_scroll_right", + "viewport_scroll_down", "reread_keystrokes", NULL, @@ -112,15 +112,6 @@ struct nxagentSpecialKeystrokeMap default_map[] = { {KEYSTROKE_SWITCH_ALL_SCREENS, ControlMask, True, XK_f}, {KEYSTROKE_FULLSCREEN, ControlMask | ShiftMask, True, XK_f}, {KEYSTROKE_MINIMIZE, ControlMask, True, XK_m}, - {KEYSTROKE_LEFT, ControlMask, True, XK_Left}, - {KEYSTROKE_LEFT, ControlMask, True, XK_KP_Left}, - {KEYSTROKE_UP, ControlMask, True, XK_Up}, - {KEYSTROKE_UP, ControlMask, True, XK_KP_Up}, - {KEYSTROKE_RIGHT, ControlMask, True, XK_Right}, - {KEYSTROKE_RIGHT, ControlMask, True, XK_KP_Right}, - {KEYSTROKE_DOWN, ControlMask, True, XK_Down}, - {KEYSTROKE_DOWN, ControlMask, True, XK_KP_Down}, - {KEYSTROKE_RESIZE, ControlMask, True, XK_r}, {KEYSTROKE_DEFER, ControlMask, True, XK_e}, {KEYSTROKE_IGNORE, ControlMask, True, XK_BackSpace}, {KEYSTROKE_IGNORE, 0, False, XK_Terminate_Server}, @@ -132,6 +123,7 @@ struct nxagentSpecialKeystrokeMap default_map[] = { {KEYSTROKE_TEST_INPUT, ControlMask, True, XK_x}, {KEYSTROKE_DEACTIVATE_INPUT_DEVICES_GRAB, ControlMask, True, XK_y}, #endif + {KEYSTROKE_RESIZE, ControlMask, True, XK_r}, {KEYSTROKE_VIEWPORT_MOVE_LEFT, ControlMask | ShiftMask, True, XK_Left}, {KEYSTROKE_VIEWPORT_MOVE_LEFT, ControlMask | ShiftMask, True, XK_KP_Left}, {KEYSTROKE_VIEWPORT_MOVE_UP, ControlMask | ShiftMask, True, XK_Up}, @@ -140,6 +132,14 @@ struct nxagentSpecialKeystrokeMap default_map[] = { {KEYSTROKE_VIEWPORT_MOVE_RIGHT, ControlMask | ShiftMask, True, XK_KP_Right}, {KEYSTROKE_VIEWPORT_MOVE_DOWN, ControlMask | ShiftMask, True, XK_Down}, {KEYSTROKE_VIEWPORT_MOVE_DOWN, ControlMask | ShiftMask, True, XK_KP_Down}, + {KEYSTROKE_VIEWPORT_SCROLL_LEFT, ControlMask, True, XK_Left}, + {KEYSTROKE_VIEWPORT_SCROLL_LEFT, ControlMask, True, XK_KP_Left}, + {KEYSTROKE_VIEWPORT_SCROLL_UP, ControlMask, True, XK_Up}, + {KEYSTROKE_VIEWPORT_SCROLL_UP, ControlMask, True, XK_KP_Up}, + {KEYSTROKE_VIEWPORT_SCROLL_RIGHT, ControlMask, True, XK_Right}, + {KEYSTROKE_VIEWPORT_SCROLL_RIGHT, ControlMask, True, XK_KP_Right}, + {KEYSTROKE_VIEWPORT_SCROLL_DOWN, ControlMask, True, XK_Down}, + {KEYSTROKE_VIEWPORT_SCROLL_DOWN, ControlMask, True, XK_KP_Down}, {KEYSTROKE_REREAD_KEYSTROKES, ControlMask, True, XK_k}, {KEYSTROKE_END_MARKER, 0, False, NoSymbol}, }; @@ -559,31 +559,6 @@ Bool nxagentCheckSpecialKeystroke(XKeyEvent *X, enum HandleEventResult *result) *result = doMinimize; } break; - case KEYSTROKE_LEFT: - if (!nxagentOption(Rootless) && !nxagentOption(DesktopResize)) { - *result = doViewportLeft; - } - break; - case KEYSTROKE_UP: - if (!nxagentOption(Rootless) && !nxagentOption(DesktopResize)) { - *result = doViewportUp; - } - break; - case KEYSTROKE_RIGHT: - if (!nxagentOption(Rootless) && !nxagentOption(DesktopResize)) { - *result = doViewportRight; - } - break; - case KEYSTROKE_DOWN: - if (!nxagentOption(Rootless) && !nxagentOption(DesktopResize)) { - *result = doViewportDown; - } - break; - case KEYSTROKE_RESIZE: - if (!nxagentOption(Rootless)) { - *result = doSwitchResizeMode; - } - break; case KEYSTROKE_DEFER: *result = doSwitchDeferMode; break; @@ -628,6 +603,11 @@ Bool nxagentCheckSpecialKeystroke(XKeyEvent *X, enum HandleEventResult *result) *result = doSwitchFullscreen; } break; + case KEYSTROKE_RESIZE: + if (!nxagentOption(Rootless)) { + *result = doSwitchResizeMode; + } + break; case KEYSTROKE_VIEWPORT_MOVE_LEFT: if (!nxagentOption(Rootless) && !nxagentOption(DesktopResize)) { *result = doViewportMoveLeft; @@ -648,6 +628,26 @@ Bool nxagentCheckSpecialKeystroke(XKeyEvent *X, enum HandleEventResult *result) *result = doViewportMoveDown; } break; + case KEYSTROKE_VIEWPORT_SCROLL_LEFT: + if (!nxagentOption(Rootless) && !nxagentOption(DesktopResize)) { + *result = doViewportLeft; + } + break; + case KEYSTROKE_VIEWPORT_SCROLL_UP: + if (!nxagentOption(Rootless) && !nxagentOption(DesktopResize)) { + *result = doViewportUp; + } + break; + case KEYSTROKE_VIEWPORT_SCROLL_RIGHT: + if (!nxagentOption(Rootless) && !nxagentOption(DesktopResize)) { + *result = doViewportRight; + } + break; + case KEYSTROKE_VIEWPORT_SCROLL_DOWN: + if (!nxagentOption(Rootless) && !nxagentOption(DesktopResize)) { + *result = doViewportDown; + } + break; case KEYSTROKE_REREAD_KEYSTROKES: /* two reasons to check on KeyRelease: - this code is called for KeyPress and KeyRelease, so we diff --git a/nx-X11/programs/Xserver/hw/nxagent/Keystroke.h b/nx-X11/programs/Xserver/hw/nxagent/Keystroke.h index 7eb71bb6f..13a83d0fe 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Keystroke.h +++ b/nx-X11/programs/Xserver/hw/nxagent/Keystroke.h @@ -44,11 +44,6 @@ enum nxagentSpecialKeystroke { KEYSTROKE_SWITCH_ALL_SCREENS, KEYSTROKE_FULLSCREEN, KEYSTROKE_MINIMIZE, - KEYSTROKE_LEFT, - KEYSTROKE_UP, - KEYSTROKE_RIGHT, - KEYSTROKE_DOWN, - KEYSTROKE_RESIZE, KEYSTROKE_DEFER, KEYSTROKE_IGNORE, KEYSTROKE_FORCE_SYNCHRONIZATION, @@ -65,10 +60,16 @@ enum nxagentSpecialKeystroke { KEYSTROKE_DEACTIVATE_INPUT_DEVICES_GRAB, #endif + /* all the viewport stuff */ + KEYSTROKE_RESIZE, KEYSTROKE_VIEWPORT_MOVE_LEFT, KEYSTROKE_VIEWPORT_MOVE_UP, KEYSTROKE_VIEWPORT_MOVE_RIGHT, KEYSTROKE_VIEWPORT_MOVE_DOWN, + KEYSTROKE_VIEWPORT_SCROLL_LEFT, + KEYSTROKE_VIEWPORT_SCROLL_UP, + KEYSTROKE_VIEWPORT_SCROLL_RIGHT, + KEYSTROKE_VIEWPORT_SCROLL_DOWN, KEYSTROKE_REREAD_KEYSTROKES, -- cgit v1.2.3