diff options
author | Richard Linden <none@none> | 2010-09-30 20:07:50 -0700 |
---|---|---|
committer | Richard Linden <none@none> | 2010-09-30 20:07:50 -0700 |
commit | a5e0c51de9acdbffa385c1fc6c8d6e7a18c9908a (patch) | |
tree | 006b8cf759f5f7e8be0ad82ead0a512a213dfd31 | |
parent | 2fc07c4110c05b1deffc5a41a4f5f88bb4208827 (diff) |
custom skylight key bindings
-rw-r--r-- | indra/newview/app_settings/keys.ini | 357 | ||||
-rw-r--r-- | indra/newview/llviewerkeyboard.cpp | 35 | ||||
-rw-r--r-- | indra/newview/llviewerkeyboard.h | 5 |
3 files changed, 11 insertions, 386 deletions
diff --git a/indra/newview/app_settings/keys.ini b/indra/newview/app_settings/keys.ini deleted file mode 100644 index b79e5bf508..0000000000 --- a/indra/newview/app_settings/keys.ini +++ /dev/null @@ -1,357 +0,0 @@ -# keys.ini -# -# keyboard binding initialization -# -# comments must have # in the first column -# blank lines OK -# -# Format: -# mode key mask function -# -# mode must be one of FIRST_PERSON, THIRD_PERSON, EDIT, EDIT_AVATAR, or CONVERSATION -# key must be upper case, or SPACE, HOME, END, PGUP, PGDN, LEFT, RIGHT, UP, DOWN, -# or one of ,.;'[] -# mask must be NONE, SHIFT, ALT, ALT_SHIFT. -# Control is reserved for user commands. -# function must be a function named in llkeyboard.cpp - -FIRST_PERSON A NONE slide_left -FIRST_PERSON D NONE slide_right -FIRST_PERSON W NONE push_forward -FIRST_PERSON S NONE push_backward -FIRST_PERSON E NONE jump -FIRST_PERSON C NONE push_down -FIRST_PERSON F NONE toggle_fly - -FIRST_PERSON LEFT NONE slide_left -FIRST_PERSON RIGHT NONE slide_right -FIRST_PERSON UP NONE push_forward -FIRST_PERSON DOWN NONE push_backward -FIRST_PERSON PGUP NONE jump -FIRST_PERSON PGDN NONE push_down -FIRST_PERSON HOME NONE toggle_fly - -FIRST_PERSON PAD_LEFT NONE slide_left -FIRST_PERSON PAD_RIGHT NONE slide_right -FIRST_PERSON PAD_UP NONE push_forward -FIRST_PERSON PAD_DOWN NONE push_backward -FIRST_PERSON PAD_PGUP NONE jump -FIRST_PERSON PAD_PGDN NONE push_down -FIRST_PERSON PAD_HOME NONE toggle_fly -FIRST_PERSON PAD_CENTER NONE stop_moving -FIRST_PERSON PAD_ENTER NONE start_chat -FIRST_PERSON PAD_DIVIDE NONE start_gesture - -FIRST_PERSON A SHIFT slide_left -FIRST_PERSON D SHIFT slide_right -FIRST_PERSON W SHIFT push_forward -FIRST_PERSON S SHIFT push_backward -FIRST_PERSON E SHIFT jump -FIRST_PERSON C SHIFT push_down -FIRST_PERSON F SHIFT toggle_fly - -FIRST_PERSON SPACE NONE stop_moving -FIRST_PERSON ENTER NONE start_chat -FIRST_PERSON DIVIDE NONE start_gesture - -FIRST_PERSON LEFT SHIFT slide_left -FIRST_PERSON RIGHT SHIFT slide_right -FIRST_PERSON UP SHIFT push_forward -FIRST_PERSON DOWN SHIFT push_backward -FIRST_PERSON PGUP SHIFT jump -FIRST_PERSON PGDN SHIFT push_down - -FIRST_PERSON PAD_LEFT SHIFT slide_left -FIRST_PERSON PAD_RIGHT SHIFT slide_right -FIRST_PERSON PAD_UP SHIFT push_forward -FIRST_PERSON PAD_DOWN SHIFT push_backward -FIRST_PERSON PAD_PGUP SHIFT jump -FIRST_PERSON PAD_PGDN SHIFT push_down -FIRST_PERSON PAD_HOME SHIFT toggle_fly -FIRST_PERSON PAD_ENTER SHIFT start_chat -FIRST_PERSON PAD_DIVIDE SHIFT start_gesture - -THIRD_PERSON A NONE turn_left -THIRD_PERSON D NONE turn_right -THIRD_PERSON A SHIFT slide_left -THIRD_PERSON D SHIFT slide_right -THIRD_PERSON W NONE push_forward -THIRD_PERSON S NONE push_backward -THIRD_PERSON W SHIFT push_forward -THIRD_PERSON S SHIFT push_backward -THIRD_PERSON E NONE jump -THIRD_PERSON C NONE push_down -THIRD_PERSON E SHIFT jump -THIRD_PERSON C SHIFT push_down - -THIRD_PERSON F NONE toggle_fly -THIRD_PERSON F SHIFT toggle_fly - -THIRD_PERSON SPACE NONE stop_moving -THIRD_PERSON ENTER NONE start_chat -THIRD_PERSON DIVIDE NONE start_gesture - -THIRD_PERSON LEFT NONE turn_left -THIRD_PERSON LEFT SHIFT slide_left -THIRD_PERSON RIGHT NONE turn_right -THIRD_PERSON RIGHT SHIFT slide_right -THIRD_PERSON UP NONE push_forward -THIRD_PERSON DOWN NONE push_backward -THIRD_PERSON UP SHIFT push_forward -THIRD_PERSON DOWN SHIFT push_backward -THIRD_PERSON PGUP NONE jump -THIRD_PERSON PGDN NONE push_down -THIRD_PERSON PGUP SHIFT jump -THIRD_PERSON PGDN SHIFT push_down -THIRD_PERSON HOME SHIFT toggle_fly -THIRD_PERSON HOME NONE toggle_fly - -THIRD_PERSON PAD_LEFT NONE turn_left -THIRD_PERSON PAD_LEFT SHIFT slide_left -THIRD_PERSON PAD_RIGHT NONE turn_right -THIRD_PERSON PAD_RIGHT SHIFT slide_right -THIRD_PERSON PAD_UP NONE push_forward -THIRD_PERSON PAD_DOWN NONE push_backward -THIRD_PERSON PAD_UP SHIFT push_forward -THIRD_PERSON PAD_DOWN SHIFT push_backward -THIRD_PERSON PAD_PGUP NONE jump -THIRD_PERSON PAD_PGDN NONE push_down -THIRD_PERSON PAD_PGUP SHIFT jump -THIRD_PERSON PAD_PGDN SHIFT push_down -THIRD_PERSON PAD_HOME NONE toggle_fly -THIRD_PERSON PAD_HOME SHIFT toggle_fly -THIRD_PERSON PAD_CENTER NONE stop_moving -THIRD_PERSON PAD_CENTER SHIFT stop_moving -THIRD_PERSON PAD_ENTER NONE start_chat -THIRD_PERSON PAD_ENTER SHIFT start_chat -THIRD_PERSON PAD_DIVIDE NONE start_gesture -THIRD_PERSON PAD_DIVIDE SHIFT start_gesture - -# Camera controls in third person on Alt -THIRD_PERSON LEFT ALT spin_around_cw -THIRD_PERSON RIGHT ALT spin_around_ccw -THIRD_PERSON UP ALT move_forward -THIRD_PERSON DOWN ALT move_backward -THIRD_PERSON PGUP ALT spin_over -THIRD_PERSON PGDN ALT spin_under - -THIRD_PERSON A ALT spin_around_cw -THIRD_PERSON D ALT spin_around_ccw -THIRD_PERSON W ALT move_forward -THIRD_PERSON S ALT move_backward -THIRD_PERSON E ALT spin_over -THIRD_PERSON C ALT spin_under - -THIRD_PERSON PAD_LEFT ALT spin_around_cw -THIRD_PERSON PAD_RIGHT ALT spin_around_ccw -THIRD_PERSON PAD_UP ALT move_forward -THIRD_PERSON PAD_DOWN ALT move_backward -THIRD_PERSON PAD_PGUP ALT spin_over -THIRD_PERSON PAD_PGDN ALT spin_under -THIRD_PERSON PAD_ENTER ALT start_chat -THIRD_PERSON PAD_DIVIDE ALT start_gesture - -# mimic alt zoom behavior with keyboard only -THIRD_PERSON A CTL_ALT spin_around_cw -THIRD_PERSON D CTL_ALT spin_around_ccw -THIRD_PERSON W CTL_ALT spin_over -THIRD_PERSON S CTL_ALT spin_under -THIRD_PERSON E CTL_ALT spin_over -THIRD_PERSON C CTL_ALT spin_under - -THIRD_PERSON LEFT CTL_ALT spin_around_cw -THIRD_PERSON RIGHT CTL_ALT spin_around_ccw -THIRD_PERSON UP CTL_ALT spin_over -THIRD_PERSON DOWN CTL_ALT spin_under -THIRD_PERSON PGUP CTL_ALT spin_over -THIRD_PERSON PGDN CTL_ALT spin_under - -THIRD_PERSON PAD_LEFT CTL_ALT spin_around_cw -THIRD_PERSON PAD_RIGHT CTL_ALT spin_around_ccw -THIRD_PERSON PAD_UP CTL_ALT spin_over -THIRD_PERSON PAD_DOWN CTL_ALT spin_under -THIRD_PERSON PAD_PGUP CTL_ALT spin_over -THIRD_PERSON PAD_PGDN CTL_ALT spin_under -THIRD_PERSON PAD_ENTER CTL_ALT start_chat -THIRD_PERSON PAD_DIVIDE CTL_ALT start_gesture - -# Therefore pan on Alt-Shift -THIRD_PERSON A CTL_ALT_SHIFT pan_left -THIRD_PERSON D CTL_ALT_SHIFT pan_right -THIRD_PERSON W CTL_ALT_SHIFT pan_up -THIRD_PERSON S CTL_ALT_SHIFT pan_down - -THIRD_PERSON LEFT CTL_ALT_SHIFT pan_left -THIRD_PERSON RIGHT CTL_ALT_SHIFT pan_right -THIRD_PERSON UP CTL_ALT_SHIFT pan_up -THIRD_PERSON DOWN CTL_ALT_SHIFT pan_down - -THIRD_PERSON PAD_LEFT CTL_ALT_SHIFT pan_left -THIRD_PERSON PAD_RIGHT CTL_ALT_SHIFT pan_right -THIRD_PERSON PAD_UP CTL_ALT_SHIFT pan_up -THIRD_PERSON PAD_DOWN CTL_ALT_SHIFT pan_down -THIRD_PERSON PAD_ENTER CTL_ALT_SHIFT start_chat -THIRD_PERSON PAD_DIVIDE CTL_ALT_SHIFT start_gesture - -# Basic editing camera control -EDIT A NONE spin_around_cw -EDIT D NONE spin_around_ccw -EDIT W NONE move_forward -EDIT S NONE move_backward -EDIT E NONE spin_over -EDIT C NONE spin_under -EDIT ENTER NONE start_chat -EDIT DIVIDE NONE start_gesture -EDIT PAD_ENTER NONE start_chat -EDIT PAD_DIVIDE NONE start_gesture - -EDIT LEFT NONE spin_around_cw -EDIT RIGHT NONE spin_around_ccw -EDIT UP NONE move_forward -EDIT DOWN NONE move_backward -EDIT PGUP NONE spin_over -EDIT PGDN NONE spin_under - -EDIT A SHIFT pan_left -EDIT D SHIFT pan_right -EDIT W SHIFT pan_up -EDIT S SHIFT pan_down - -EDIT LEFT SHIFT pan_left -EDIT RIGHT SHIFT pan_right -EDIT UP SHIFT pan_up -EDIT DOWN SHIFT pan_down - -# Walking works with ALT held down. -EDIT A ALT slide_left -EDIT D ALT slide_right -EDIT W ALT push_forward -EDIT S ALT push_backward -EDIT E ALT jump -EDIT C ALT push_down - -EDIT LEFT ALT slide_left -EDIT RIGHT ALT slide_right -EDIT UP ALT push_forward -EDIT DOWN ALT push_backward -EDIT PGUP ALT jump -EDIT PGDN ALT push_down -EDIT HOME ALT toggle_fly - -EDIT PAD_LEFT ALT slide_left -EDIT PAD_RIGHT ALT slide_right -EDIT PAD_UP ALT push_forward -EDIT PAD_DOWN ALT push_backward -EDIT PAD_PGUP ALT jump -EDIT PAD_PGDN ALT push_down -EDIT PAD_ENTER ALT start_chat -EDIT PAD_DIVIDE ALT start_gesture - -SITTING A ALT spin_around_cw -SITTING D ALT spin_around_ccw -SITTING W ALT move_forward -SITTING S ALT move_backward -SITTING E ALT spin_over_sitting -SITTING C ALT spin_under_sitting - -SITTING LEFT ALT spin_around_cw -SITTING RIGHT ALT spin_around_ccw -SITTING UP ALT move_forward -SITTING DOWN ALT move_backward -SITTING PGUP ALT spin_over -SITTING PGDN ALT spin_under - -SITTING A CTL_ALT spin_around_cw -SITTING D CTL_ALT spin_around_ccw -SITTING W CTL_ALT spin_over -SITTING S CTL_ALT spin_under -SITTING E CTL_ALT spin_over -SITTING C CTL_ALT spin_under - -SITTING LEFT CTL_ALT spin_around_cw -SITTING RIGHT CTL_ALT spin_around_ccw -SITTING UP CTL_ALT spin_over -SITTING DOWN CTL_ALT spin_under -SITTING PGUP CTL_ALT spin_over -SITTING PGDN CTL_ALT spin_under - - -SITTING A NONE spin_around_cw_sitting -SITTING D NONE spin_around_ccw_sitting -SITTING W NONE move_forward_sitting -SITTING S NONE move_backward_sitting -SITTING E NONE spin_over_sitting -SITTING C NONE spin_under_sitting - -SITTING LEFT NONE spin_around_cw_sitting -SITTING RIGHT NONE spin_around_ccw_sitting -SITTING UP NONE move_forward_sitting -SITTING DOWN NONE move_backward_sitting -SITTING PGUP NONE spin_over_sitting -SITTING PGDN NONE spin_under_sitting - -SITTING PAD_LEFT NONE spin_around_cw_sitting -SITTING PAD_RIGHT NONE spin_around_ccw_sitting -SITTING PAD_UP NONE move_forward_sitting -SITTING PAD_DOWN NONE move_backward_sitting -SITTING PAD_PGUP NONE spin_over_sitting -SITTING PAD_PGDN NONE spin_under_sitting -SITTING PAD_CENTER NONE stop_moving -SITTING PAD_ENTER NONE start_chat -SITTING PAD_DIVIDE NONE start_gesture - -# these are for passing controls when sitting on vehicles -SITTING A SHIFT slide_left -SITTING D SHIFT slide_right -SITTING LEFT SHIFT slide_left -SITTING RIGHT SHIFT slide_right - -SITTING PAD_LEFT SHIFT slide_left -SITTING PAD_RIGHT SHIFT slide_right -SITTING PAD_ENTER SHIFT start_chat -SITTING PAD_DIVIDE SHIFT start_gesture - -# pan on Alt-Shift -SITTING A CTL_ALT_SHIFT pan_left -SITTING D CTL_ALT_SHIFT pan_right -SITTING W CTL_ALT_SHIFT pan_up -SITTING S CTL_ALT_SHIFT pan_down - -SITTING LEFT CTL_ALT_SHIFT pan_left -SITTING RIGHT CTL_ALT_SHIFT pan_right -SITTING UP CTL_ALT_SHIFT pan_up -SITTING DOWN CTL_ALT_SHIFT pan_down - -SITTING PAD_LEFT CTL_ALT_SHIFT pan_left -SITTING PAD_RIGHT CTL_ALT_SHIFT pan_right -SITTING PAD_UP CTL_ALT_SHIFT pan_up -SITTING PAD_DOWN CTL_ALT_SHIFT pan_down -SITTING PAD_ENTER CTL_ALT_SHIFT start_chat -SITTING PAD_DIVIDE CTL_ALT_SHIFT start_gesture - -SITTING ENTER NONE start_chat -SITTING DIVIDE NONE start_gesture - -# Avatar editing camera controls -EDIT_AVATAR A NONE edit_avatar_spin_cw -EDIT_AVATAR D NONE edit_avatar_spin_ccw -EDIT_AVATAR W NONE edit_avatar_move_forward -EDIT_AVATAR S NONE edit_avatar_move_backward -EDIT_AVATAR E NONE edit_avatar_spin_over -EDIT_AVATAR C NONE edit_avatar_spin_under -EDIT_AVATAR LEFT NONE edit_avatar_spin_cw -EDIT_AVATAR RIGHT NONE edit_avatar_spin_ccw -EDIT_AVATAR UP NONE edit_avatar_move_forward -EDIT_AVATAR DOWN NONE edit_avatar_move_backward -EDIT_AVATAR PGUP NONE edit_avatar_spin_over -EDIT_AVATAR PGDN NONE edit_avatar_spin_under -EDIT_AVATAR ENTER NONE start_chat -EDIT_AVATAR DIVIDE NONE start_gesture -EDIT_AVATAR PAD_LEFT NONE edit_avatar_spin_cw -EDIT_AVATAR PAD_RIGHT NONE edit_avatar_spin_ccw -EDIT_AVATAR PAD_UP NONE edit_avatar_move_forward -EDIT_AVATAR PAD_DOWN NONE edit_avatar_move_backward -EDIT_AVATAR PAD_PGUP NONE edit_avatar_spin_over -EDIT_AVATAR PAD_PGDN NONE edit_avatar_spin_under -EDIT_AVATAR PAD_ENTER NONE start_chat -EDIT_AVATAR PAD_DIVIDE NONE start_gesture diff --git a/indra/newview/llviewerkeyboard.cpp b/indra/newview/llviewerkeyboard.cpp index 570f372950..4e60c47f07 100644 --- a/indra/newview/llviewerkeyboard.cpp +++ b/indra/newview/llviewerkeyboard.cpp @@ -598,8 +598,7 @@ REGISTER_KEYBOARD_ACTION("stop_moving", stop_moving); REGISTER_KEYBOARD_ACTION("start_chat", start_chat); REGISTER_KEYBOARD_ACTION("start_gesture", start_gesture); -LLViewerKeyboard::LLViewerKeyboard() : - mNamedFunctionCount(0) +LLViewerKeyboard::LLViewerKeyboard() { for (S32 i = 0; i < MODE_COUNT; i++) { @@ -617,16 +616,6 @@ LLViewerKeyboard::LLViewerKeyboard() : } } - -void LLViewerKeyboard::bindNamedFunction(const std::string& name, LLKeyFunc func) -{ - S32 i = mNamedFunctionCount; - mNamedFunctions[i].mName = name; - mNamedFunctions[i].mFunction = func; - mNamedFunctionCount++; -} - - BOOL LLViewerKeyboard::modeFromString(const std::string& string, S32 *mode) { if (string == "FIRST_PERSON") @@ -699,8 +688,9 @@ BOOL LLViewerKeyboard::handleKey(KEY translated_key, MASK translated_mask, BOOL BOOL LLViewerKeyboard::bindKey(const S32 mode, const KEY key, const MASK mask, const std::string& function_name) { - S32 i,index; - void (*function)(EKeystate keystate) = NULL; + S32 index; + typedef boost::function<void(EKeystate)> function_t; + function_t function = NULL; std::string name; // Allow remapping of F2-F12 @@ -723,13 +713,11 @@ BOOL LLViewerKeyboard::bindKey(const S32 mode, const KEY key, const MASK mask, c } // Not remapped, look for a function - for (i = 0; i < mNamedFunctionCount; i++) + + function_t* result = LLKeyboardActionRegistry::getValue(function_name); + if (result) { - if (function_name == mNamedFunctions[i].mName) - { - function = mNamedFunctions[i].mFunction; - name = mNamedFunctions[i].mName; - } + function = *result; } if (!function) @@ -759,7 +747,6 @@ BOOL LLViewerKeyboard::bindKey(const S32 mode, const KEY key, const MASK mask, c mBindings[mode][index].mKey = key; mBindings[mode][index].mMask = mask; -// mBindings[mode][index].mName = name; mBindings[mode][index].mFunction = function; if (index == mBindingCount[mode]) @@ -971,18 +958,18 @@ void LLViewerKeyboard::scanKey(KEY key, BOOL key_down, BOOL key_up, BOOL key_lev if (key_down && !repeat) { // ...key went down this frame, call function - (*binding[i].mFunction)( KEYSTATE_DOWN ); + binding[i].mFunction( KEYSTATE_DOWN ); } else if (key_up) { // ...key went down this frame, call function - (*binding[i].mFunction)( KEYSTATE_UP ); + binding[i].mFunction( KEYSTATE_UP ); } else if (key_level) { // ...key held down from previous frame // Not windows, just call the function. - (*binding[i].mFunction)( KEYSTATE_LEVEL ); + binding[i].mFunction( KEYSTATE_LEVEL ); }//if }//if }//for diff --git a/indra/newview/llviewerkeyboard.h b/indra/newview/llviewerkeyboard.h index 6e758cc7b3..925244e89b 100644 --- a/indra/newview/llviewerkeyboard.h +++ b/indra/newview/llviewerkeyboard.h @@ -89,8 +89,6 @@ public: BOOL handleKey(KEY key, MASK mask, BOOL repeated); - void bindNamedFunction(const std::string& name, LLKeyFunc func); - S32 loadBindings(const std::string& filename); // returns number bound, 0 on error S32 loadBindingsXML(const std::string& filename); // returns number bound, 0 on error EKeyboardMode getMode(); @@ -103,9 +101,6 @@ private: S32 loadBindingMode(const LLViewerKeyboard::KeyMode& keymode); BOOL bindKey(const S32 mode, const KEY key, const MASK mask, const std::string& function_name); - S32 mNamedFunctionCount; - LLNamedFunction mNamedFunctions[MAX_NAMED_FUNCTIONS]; - // Hold all the ugly stuff torn out to make LLKeyboard non-viewer-specific here S32 mBindingCount[MODE_COUNT]; LLKeyBinding mBindings[MODE_COUNT][MAX_KEY_BINDINGS]; |