Hi, This patch series is meant to make keybinding usage a lot more obvious - to new users especially, but hopefully also for the more experienced ones. Hopefully it also makes the keys.c file a bit more maintainable.
In detail: * Coding style fixes (so that it is at least consistent in the keys.c file). * Show all keybindings (incl default ones) in both 'unbind' and the keybindings dialog. (Should reduce confusion for new users.) * Add "Any" key modifier type; New "Any" button in keybindings dialog. This lets the user choose between having a key work regardless of modifier (Ctrl, Alt, etc) key states, or to use the same key with different modifiers for different bindings. How this worked before ("All"/"Normal") was pretty unclear, even in the code comments. (New feature/bug fix.) * Consistent use of hash helper functions (keybind_insert(), keybind_remove(), etc). This should make the code more maintainable and reduce the risk of bugs. * Removed possibility to rebind Ctrl, Shift, Alt, Meta modifiers. This feature is very unusual and breaks the normal design pattern of using the designated keys as keyboard modifiers. * Better usage texts (among other things they used '[' which was interpreted as a style tag, making parts of the usage text go missing). (Bug fix.) * Bind only lowercase keys - we handle Shift state separately. (Bug fix.) * Rehash keybind entry on key dialog update (fixes bug where keybinding with modified keyval would become unusable until restart). (Bug fix.) * Removed -afmnr flags from 'bind' - instead use only "press the key combo you want" when you bind the key. This is to simplify the keybind without removing any real functionality. * Per-character keys files. I'm thinking that perhaps I should also change the flags in the keys file so that they conform with the modifier keys? Originally they were: [A]ll, [N]ormal, [F]ire, [R]un, A[L]t, [M]eta, [E]dit. Now I'm writing: [A]ny, [N]one, [F] Shift, [R] Ctrl, A[L]t, [M]eta, [E]dit. Perhaps [A]ny, [N]one, [S]hift, [C]trl, A[L]t, [M]eta, [E]dit. would be a better idea? It doesn't clash with the old characters, so it's easy to keep the capability of reading both old and new formats. This also fits nicely with patch #3 (character-specific keys file) in that we won't overwrite the old keys file, but just write new per-character ones in the new format. Maybe also change the -d flag of 'bind' to '-i' (ignore)? Or '-a' (but -a meant Alt before). Looking forward, I would like to remove the fire_on and run_on "hacks" and instead use a generic way to handle repeating keys. Then one would bind e.g. KP_6: walk east Ctrl + KP_6: attack east Shift + KP_6: fire east This all needs testing, so if you like it, please test it! It should apply to current Subversion trunk (rev 19081). -- Arvid _______________________________________________ crossfire mailing list crossfire@metalforge.org http://mailman.metalforge.org/mailman/listinfo/crossfire