This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
wiki:advanced:nx-keyboard-shortcuts [2013/03/14 23:15] sunweaver created |
wiki:advanced:nx-keyboard-shortcuts [2019/05/11 16:33] (current) uli42 [File Format] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Customize NX Keyboard Shortcuts ====== | ====== Customize NX Keyboard Shortcuts ====== | ||
- | ===== General remarks ===== | + | ===== General Remarks ===== |
- | ==== necessary X2go version ==== | ||
- | The feature described below has only recently (as of 2012-12-06) been added to X2go and is currently **experimental**, further testing is necessary. You will need a new nightly build to try it out. | + | ==== About this Wiki Page ==== |
- | + | ||
- | ==== about this Wiki page ==== | + | |
This Wiki page is largely a copy of the ''README.keystrokes'' in | This Wiki page is largely a copy of the ''README.keystrokes'' in | ||
- | [[http://code.x2go.org/gitweb?p=nx-libs.git;a=summary]]. Please keep them in | + | [[http://code.x2go.org/gitweb?p=nx-libs.git;a=summary]] which in turn is a copy of the same file in NX ([[https://github.com/ArcticaProject/nx-libs/tree/3.6.x/doc/nxagent]]). Please keep them in sync. |
- | sync. | + | |
- | ==== about nxagent ==== | + | ==== About nxagent ==== |
- | nxagent is the process that an X2go _server_ executes. Therefore the configuration described below | + | ''nxagent'' is the process that an X2Go Server executes (under the name ''x2goagenbt''). Therefore the configuration described below |
- | is evaluated on an X2go Server and you have to place your configuration file on the _server_. | + | is evaluated on an **X2Go Server** and you have to place your configuration file on the **server**. |
- | ===== Configurable keybindings in nxagent ===== | + | ===== Configurable Key Bindings in nxagent ===== |
- | Keybindings in the redistributed x2go version of nxagent can now be configured | + | Key bindings in the redistributed X2Go version of nxagent (aka nx-libs, NX redistributed) can now be configured |
by the user. This is done via a configuration file. | by the user. This is done via a configuration file. | ||
- | ===== File location ===== | + | ===== File Location ===== |
- | nxagent searches for the configuration file in the following order: | + | nxagent parses the first available configuration file and ignores all others. |
+ | |||
+ | If nxagent is called **without branding**, it searches: | ||
+ | * in the location given by the ''-keystrokefile'' command line parameter | ||
+ | * in the location given by the ''NXAGENT_KEYSTROKEFILE'' environment variable | ||
+ | * in ''~/.nx/config/keystrokes.cfg'' | ||
+ | * in ''/etc/nx/keystrokes.cfg'' | ||
+ | |||
+ | If nxagent is called **with X2Go branding** (i.e., as ''x2goagent''), it searches: | ||
* in the location given by the ''-keystrokefile'' command line parameter | * in the location given by the ''-keystrokefile'' command line parameter | ||
- | * in the location given by the NXAGENT_KEYSTROKEFILE environment variable | + | * in the location given by the ''NXAGENT_KEYSTROKEFILE'' environment variable |
- | * in ~/.nx/config/keystroke.cfg | + | * in ''~/.x2go/config/keystrokes.cfg'' |
- | * in /etc/nx/keystroke.cfg | + | * in ''/etc/x2go/keystrokes.cfg'' |
- | If none of those files is accessible, the default configuration is used which | + | If none of these files are accessible, the default configuration is used which |
is the same as the old, traditional nxagent keybindings. | is the same as the old, traditional nxagent keybindings. | ||
- | ===== File format ===== | + | ===== File Format ===== |
The configuration file is XML with the following format: | The configuration file is XML with the following format: | ||
- | <code xml> | + | <file xml keystroke.cfg> |
<!DOCTYPE NXKeystroke> | <!DOCTYPE NXKeystroke> | ||
<keystrokes> | <keystrokes> | ||
Line 50: | Line 54: | ||
<keystroke action="fullscreen" key="space" Mod1="0" Mod2="0" Control="0" Shift="0" AltMeta="0" /> | <keystroke action="fullscreen" key="space" Mod1="0" Mod2="0" Control="0" Shift="0" AltMeta="0" /> | ||
</keystrokes> | </keystrokes> | ||
- | </code> | + | </file> |
- | Each ''action'' defines an action to be executed when receiving that keystroke. A | + | Each 'action' defines an action to be executed when receiving that |
- | list of possible actions is given below. Some of those actions are only | + | keystroke. A list of possible actions is given below. Some of those |
- | available with debug builds of nxagent. | + | actions are only available with debug builds of nxagent. |
- | Keys are given as a combination of ''key'' and (optionally) a number of | + | 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 | modifiers. The key attribute is evaluated into a X11 key via the usual | ||
XStringToKeysym function. A list of possible keys can be found in | XStringToKeysym function. A list of possible keys can be found in | ||
- | /usr/include/X11/keysymdef.h, the names are specified without the leading | + | /usr/include/X11/keysymdef.h, the names are specified without the |
- | ''XK_''. Evaluation is case-sensitive, so, ''space'' and ''Escape'' will work while | + | leading 'XK_'. Evaluation is case-sensitive, so, 'space' and 'Escape' |
- | ''Space'' and ''escape'' won't. | + | 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. | ||
+ | |||
+ | Everything in this file is case-sensitive. Unknown lines are ignored | ||
+ | (accompanied by a warning in the session log). 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. | ||
- | Modifiers are given as boolean attributes, possible modifiers are Mod1, Mod2, | + | If an attribute occurs more than once in a line the last one wins. |
- | Mod3, Mod4, 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. | + | Some of the actions can open a dialog window. Depending on the user's |
- | Keybindings are evaluated from top to bottom, so if a keybinding matches, other | + | answer the selected action will be taken. Some actions will only show |
- | keybindings further down will be ignored. The contents of the file replaces the | + | a dialog informing the user about the taken action. All these dialogs |
- | default keybindings, and only one file is read, no merging between different | + | will only work if the nxagent/x2goagent process has a properly |
- | configuration files is done. This also means that an empty or invalid configuration | + | configured NX_CLIENT environment variable pointing to an executable |
- | file deactivates all keybindings. | + | (like nxdialog) that is responsible for showing the dialogs and taking |
+ | the action(s). If that executable cannot be run no dialog will show up | ||
+ | and no action will be taken. | ||
===== List of possible ''action'' attributes ===== | ===== List of possible ''action'' attributes ===== | ||
* **close_session** | * **close_session** | ||
- | * This terminates the session | + | * This terminates the session. |
* **switch_all_screens** | * **switch_all_screens** | ||
* **minimize** | * **minimize** | ||
- | * This will minimize the client window (even for fullscreen sessions) | + | * This will minimize the client window (even for fullscreen sessions.) |
* **left** | * **left** | ||
* **up** | * **up** | ||
Line 88: | Line 106: | ||
* **down** | * **down** | ||
* **resize** | * **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 the desktop around. | + | * 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. |
* **defer** | * **defer** | ||
- | * Works like 'ignore' to make some keys be ignored / defunc inside the session | + | * Disables deferred screen updates. |
* **ignore** | * **ignore** | ||
- | * Makes it possible to add 'ignore', as in nothing happens when certain keys are pressed | + | * Makes it possible to add 'ignore', as in nothing happens when certain keys are pressed. |
* **fullscreen** | * **fullscreen** | ||
- | * Turns the client window into, or out of, fullscreen mode. | + | * Switches the client window into or out of fullscreen mode. |
* **viewport_move_left** | * **viewport_move_left** | ||
- | * moves the desktop to the left | + | * Moves the image viewport to the left. |
* **viewport_move_up** | * **viewport_move_up** | ||
- | * moves the desktop up | + | * Moves the image viewport up. |
* **viewport_move_right** | * **viewport_move_right** | ||
- | * moves the desktop to the right | + | * Moves the image viewport to the right. |
* **viewport_move_down** | * **viewport_move_down** | ||
- | * moves the desktop down | + | * Moves the image viewport down. |
Only in builds with certain debugging options enabled, ignored otherwise: | Only in builds with certain debugging options enabled, ignored otherwise: | ||
* **force_synchronization** | * **force_synchronization** | ||
- | * forces the drawing of elements to be synchronized which can fix some visual bugs. | + | * Forces the drawing of elements to be synchronized which can fix some visual bugs. |
* **debug_tree** | * **debug_tree** | ||
* **regions_on_screen** | * **regions_on_screen** |