How does the user get the default bindings from that link? Is he supposed to compile the code?
Edit: A good way to get the current keybinds is to issue the command /keysave at command line.
/keysave : save current bindings to 'uikeys.tmp' (NOTE: 'tmp' vs. 'txt')
Could it maybe save directly to uikeys.txt, at least if that file doesn't exist?
It would also be very nice if the saved file could have the same note prefixed as the uikeys.txt has, namely this:
//
// DEFAULT UIKEYS.TXT FOR SPRING
// -----------------------------
//
//
// Quick Notes:
//
// 1. The built-in default bindings are always loaded. If you wish
// to override them, use the unbindall and unbind commands
// to delete them at the beginning of your 'uikeys.txt'.
//
// 2. More then one action can be bound to a specific keyset. The
// actions for any given keyset are tried in the order that they
// were bound. The first currently available command that matches
// an action is used.
//
// 3. As a slight modification to the above note, keysets that use
// the 'Any' modifier are tried after those that do not use it.
//
// 4. A keyset using the Shift modifier should be bound with its
// unshifted key (ex: bind "Shift+." instead of "Shift+>" )
//
//
// Commands that can be used in this file:
//
// unbindall
// ---------
// - removes all bindings, and adds "bind enter chat"
// (one of the other unbind commands can get rid of that one)
// - good for deleting the default bindings
//
// keysym <name> <keycode>
// -----------------------
// - add a custom key symbol (the default key symbols can not be overriden)
// - name must start with a letter, and only contain letters, numbers, and '_'
// - the <keycode> can be a currently recognized keysym
// (ex: "keysym menu 0x13F" or "keysym radar r")
//
// keyset <name> <keyset>
// ----------------------
// - specifies a named keyset
// - name must start with a letter, and only contain letters, numbers, and '_'
// - named keysets may be accessed by prepending the '&' character to the name
// (ex: "keyset myKeySet Ctrl+x" then "bind &myKeySet myAction" )
//
// fakemeta <keysym>
// -----------------
// - assign an auxiliary key for the Meta modifier ("space" is a good choice)
// - use "fakemeta none" to disable this feature
//
// bind <keyset> <action>
// ----------------------
// - appends the action to the keyset's list of actions
// - the action can be just a command, or a command with arguments
//
// unbind <keyset> <action>
// ------------------------
// - removes the action from the keyset's list of actions
// - both the action and the keyset must match
//
// unbindkeyset <keyset>
// ---------------------
// - removes all bindings that use the keyset
//
// unbindaction <action>
// ---------------------
// - removes all bindings that use the action (command that is, a misnomer)
//
//
// * NOTE: These commands can also be run from the chat line in-game using
// the slash command syntax (/bind, /unbind, etc...)
//
//
// Keyset Format:
//
// A keyset is a combination of keys, the main key and its modifiers.
//
// Here are some examples:
//
// bind a fake_action
// bind Ctrl+a fake_action
// bind C+a fake_action
// bind Ctrl+Shift+a fake_action
// bind *+a fake_action
// bind &my_keyset fake_action
//
// The format then goes like this:
//
// [<Modifier>+]...[<Modifier>+]<keysym>
//
// or
//
// &<keyset_name> (for named keysets)
//
// The modifiers (and their abbreviations), are:
//
// Any (*)
// Alt (A)
// Ctrl (C)
// Meta (M)
// Shift (S)
//
// The special 'Any' modifier makes it so that the keyset matches
// regardless of the current state of the real modifiers.
//
// The known keysyms (key symbols), are listed at the end of this file.
// If you want to use a key that is unknown to Spring, then you may use
// the hexadecimal notation. Here are two equivalent bindings:
//
// bind Ctrl+0x20 firestate 0 // hold fire
// bind Ctrl+space firestate 0 // hold fire
//
//
// Extra Run-Time Commands
//
// /keyload : loads the uikeys.txt bindings (does not clear current bindings)
// /keyreload : loads the uikeys.txt bindings (clears current bindings first)
// /keysave : save current bindings to 'uikeys.tmp' (NOTE: 'tmp' vs. 'txt')
// /keysyms : prints the known keysyms to standard out
// /keycodes : prints the known keycodes to standard out
// /keyprint : prints the current bindings to standard out
// /keydebug : prints debugging information to standard out (for each keystroke)
//
//
// Hotbinding:
//
// The default bindings include the 'hotbind' (Ctrl+insert) and
// 'hotunbind' (Ctrl+delete) capabilities. Place the mouse cursor over one
// of the control panel icons (normal command or build command), and press
// Ctrl+insert. Spring will then ask for a keyset, which will then have the
// icon's command immediately appended to its list of actions. Placing the
// mouse cursor over an icon and hitting Ctrl+delete will delete all bindings
// associated with that icon's command.
//
//
// Default Bindings: