custom skylight key bindings

meow-7.2.2
Richard Linden 2010-09-30 20:07:50 -07:00
parent 2fc07c4110
commit a5e0c51de9
3 changed files with 11 additions and 386 deletions

View File

@ -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

View File

@ -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

View File

@ -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];