Merge branch 'master' of https://github.com/Lirusaito/SingularityViewer.git
This commit is contained in:
@@ -91,6 +91,7 @@ set(llui_SOURCE_FILES
|
||||
llviewborder.cpp
|
||||
llviewmodel.cpp
|
||||
llviewquery.cpp
|
||||
llxuiparser.cpp
|
||||
)
|
||||
|
||||
set(llui_HEADER_FILES
|
||||
@@ -172,6 +173,7 @@ set(llui_HEADER_FILES
|
||||
llviewborder.h
|
||||
llviewmodel.h
|
||||
llviewquery.h
|
||||
llxuiparser.h
|
||||
)
|
||||
|
||||
set_source_files_properties(${llui_HEADER_FILES}
|
||||
|
||||
@@ -867,10 +867,10 @@ void LLLineEditor::removeChar()
|
||||
// Remove a word (set of characters up to next space/punctuation) from the text
|
||||
void LLLineEditor::removeWord(bool prev)
|
||||
{
|
||||
const U32 pos(getCursor());
|
||||
if (prev ? pos > 0 : static_cast<S32>(pos) < getLength())
|
||||
const S32& pos(mCursorPos);
|
||||
if (prev ? pos > 0 : pos < getLength())
|
||||
{
|
||||
U32 new_pos(prev ? prevWordPos(pos) : nextWordPos(pos));
|
||||
S32 new_pos(prev ? prevWordPos(pos) : nextWordPos(pos));
|
||||
if (new_pos == pos) // Other character we don't jump over
|
||||
new_pos = prev ? prevWordPos(new_pos-1) : nextWordPos(new_pos+1);
|
||||
|
||||
|
||||
@@ -1817,10 +1817,10 @@ void LLTextEditor::removeChar()
|
||||
// Remove a word (set of characters up to next space/punctuation) from the text
|
||||
void LLTextEditor::removeWord(bool prev)
|
||||
{
|
||||
const U32 pos(mCursorPos);
|
||||
if (prev ? pos > 0 : static_cast<S32>(pos) < getLength())
|
||||
const S32& pos(mCursorPos);
|
||||
if (prev ? pos > 0 : pos < getLength())
|
||||
{
|
||||
U32 new_pos(prev ? prevWordPos(pos) : nextWordPos(pos));
|
||||
S32 new_pos(prev ? prevWordPos(pos) : nextWordPos(pos));
|
||||
if (new_pos == pos) // Other character we don't jump over
|
||||
new_pos = prev ? prevWordPos(new_pos-1) : nextWordPos(new_pos+1);
|
||||
|
||||
@@ -2368,6 +2368,13 @@ BOOL LLTextEditor::handleControlKey(const KEY key, const MASK mask)
|
||||
}
|
||||
break;
|
||||
|
||||
case KEY_DELETE:
|
||||
if (getEnabled())
|
||||
removeWord(false);
|
||||
else
|
||||
handled = false;
|
||||
break;
|
||||
|
||||
default:
|
||||
handled = FALSE;
|
||||
break;
|
||||
@@ -2485,17 +2492,6 @@ BOOL LLTextEditor::handleSpecialKey(const KEY key, const MASK mask, BOOL* return
|
||||
}
|
||||
break;
|
||||
|
||||
case KEY_DELETE:
|
||||
if (getEnabled() && mask == MASK_CONTROL)
|
||||
{
|
||||
removeWord(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
break;
|
||||
|
||||
case KEY_RETURN:
|
||||
if (mask == MASK_NONE)
|
||||
{
|
||||
|
||||
1785
indra/llui/llxuiparser.cpp
Normal file
1785
indra/llui/llxuiparser.cpp
Normal file
File diff suppressed because it is too large
Load Diff
254
indra/llui/llxuiparser.h
Normal file
254
indra/llui/llxuiparser.h
Normal file
@@ -0,0 +1,254 @@
|
||||
/**
|
||||
* @file llxuiparser.h
|
||||
* @brief Utility functions for handling XUI structures in XML
|
||||
*
|
||||
* $LicenseInfo:firstyear=2003&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2010, Linden Research, Inc.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
#ifndef LLXUIPARSER_H
|
||||
#define LLXUIPARSER_H
|
||||
|
||||
#include "llinitparam.h"
|
||||
#include "llregistry.h"
|
||||
#include "llxmlnode.h"
|
||||
|
||||
#include <boost/function.hpp>
|
||||
#include <iosfwd>
|
||||
#include <stack>
|
||||
#include <set>
|
||||
|
||||
class LLView;
|
||||
|
||||
// lookup widget type by name
|
||||
class LLWidgetTypeRegistry
|
||||
: public LLRegistrySingleton<std::string, const std::type_info*, LLWidgetTypeRegistry>
|
||||
{};
|
||||
|
||||
|
||||
// global static instance for registering all widget types
|
||||
typedef boost::function<LLView* (LLXMLNodePtr node, LLView *parent, LLXMLNodePtr output_node)> LLWidgetCreatorFunc;
|
||||
|
||||
typedef LLRegistry<std::string, LLWidgetCreatorFunc> widget_registry_t;
|
||||
|
||||
class LLChildRegistryRegistry
|
||||
: public LLRegistrySingleton<const std::type_info*, widget_registry_t, LLChildRegistryRegistry>
|
||||
{};
|
||||
|
||||
class LLXSDWriter : public LLInitParam::Parser
|
||||
{
|
||||
LOG_CLASS(LLXSDWriter);
|
||||
public:
|
||||
void writeXSD(const std::string& name, LLXMLNodePtr node, const LLInitParam::BaseBlock& block, const std::string& xml_namespace);
|
||||
|
||||
/*virtual*/ std::string getCurrentElementName() { return LLStringUtil::null; }
|
||||
|
||||
LLXSDWriter();
|
||||
~LLXSDWriter();
|
||||
|
||||
protected:
|
||||
void writeAttribute(const std::string& type, const Parser::name_stack_t&, S32 min_count, S32 max_count, const std::vector<std::string>* possible_values);
|
||||
void addAttributeToSchema(LLXMLNodePtr nodep, const std::string& attribute_name, const std::string& type, bool mandatory, const std::vector<std::string>* possible_values);
|
||||
LLXMLNodePtr mAttributeNode;
|
||||
LLXMLNodePtr mElementNode;
|
||||
LLXMLNodePtr mSchemaNode;
|
||||
|
||||
typedef std::set<std::string> string_set_t;
|
||||
typedef std::map<LLXMLNodePtr, string_set_t> attributes_map_t;
|
||||
attributes_map_t mAttributesWritten;
|
||||
};
|
||||
|
||||
|
||||
|
||||
// NOTE: DOES NOT WORK YET
|
||||
// should support child widgets for XUI
|
||||
class LLXUIXSDWriter : public LLXSDWriter
|
||||
{
|
||||
public:
|
||||
void writeXSD(const std::string& name, const std::string& path, const LLInitParam::BaseBlock& block);
|
||||
};
|
||||
|
||||
|
||||
class LLXUIParserImpl;
|
||||
|
||||
class LLXUIParser : public LLInitParam::Parser
|
||||
{
|
||||
LOG_CLASS(LLXUIParser);
|
||||
|
||||
public:
|
||||
LLXUIParser();
|
||||
typedef LLInitParam::Parser::name_stack_t name_stack_t;
|
||||
|
||||
/*virtual*/ std::string getCurrentElementName();
|
||||
/*virtual*/ void parserWarning(const std::string& message);
|
||||
/*virtual*/ void parserError(const std::string& message);
|
||||
|
||||
void readXUI(LLXMLNodePtr node, LLInitParam::BaseBlock& block, const std::string& filename = LLStringUtil::null, bool silent=false);
|
||||
template<typename BLOCK>
|
||||
void writeXUI(LLXMLNodePtr node,
|
||||
const BLOCK& block,
|
||||
const LLInitParam::predicate_rule_t rules = LLInitParam::default_parse_rules(),
|
||||
const LLInitParam::BaseBlock* diff_block = NULL)
|
||||
{
|
||||
if (!diff_block
|
||||
&& !rules.isAmbivalent(LLInitParam::HAS_DEFAULT_VALUE))
|
||||
{
|
||||
diff_block = &LLInitParam::defaultValue<BLOCK>();
|
||||
}
|
||||
writeXUIImpl(node, block, rules, diff_block);
|
||||
}
|
||||
|
||||
private:
|
||||
LLXUIParser(const LLXUIParser& other); // no-copy
|
||||
void writeXUIImpl(LLXMLNodePtr node,
|
||||
const LLInitParam::BaseBlock& block,
|
||||
const LLInitParam::predicate_rule_t rules,
|
||||
const LLInitParam::BaseBlock* diff_block);
|
||||
bool readXUIImpl(LLXMLNodePtr node, LLInitParam::BaseBlock& block);
|
||||
bool readAttributes(LLXMLNodePtr nodep, LLInitParam::BaseBlock& block);
|
||||
|
||||
//reader helper functions
|
||||
static bool readFlag(Parser& parser, void* val_ptr);
|
||||
static bool readBoolValue(Parser& parser, void* val_ptr);
|
||||
static bool readStringValue(Parser& parser, void* val_ptr);
|
||||
static bool readU8Value(Parser& parser, void* val_ptr);
|
||||
static bool readS8Value(Parser& parser, void* val_ptr);
|
||||
static bool readU16Value(Parser& parser, void* val_ptr);
|
||||
static bool readS16Value(Parser& parser, void* val_ptr);
|
||||
static bool readU32Value(Parser& parser, void* val_ptr);
|
||||
static bool readS32Value(Parser& parser, void* val_ptr);
|
||||
static bool readF32Value(Parser& parser, void* val_ptr);
|
||||
static bool readF64Value(Parser& parser, void* val_ptr);
|
||||
static bool readVector3Value(Parser& parser, void* val_ptr);
|
||||
static bool readColor4Value(Parser& parser, void* val_ptr);
|
||||
static bool readUIColorValue(Parser& parser, void* val_ptr);
|
||||
static bool readUUIDValue(Parser& parser, void* val_ptr);
|
||||
static bool readSDValue(Parser& parser, void* val_ptr);
|
||||
|
||||
//writer helper functions
|
||||
static bool writeFlag(Parser& parser, const void* val_ptr, name_stack_t&);
|
||||
static bool writeBoolValue(Parser& parser, const void* val_ptr, name_stack_t&);
|
||||
static bool writeStringValue(Parser& parser, const void* val_ptr, name_stack_t&);
|
||||
static bool writeU8Value(Parser& parser, const void* val_ptr, name_stack_t&);
|
||||
static bool writeS8Value(Parser& parser, const void* val_ptr, name_stack_t&);
|
||||
static bool writeU16Value(Parser& parser, const void* val_ptr, name_stack_t&);
|
||||
static bool writeS16Value(Parser& parser, const void* val_ptr, name_stack_t&);
|
||||
static bool writeU32Value(Parser& parser, const void* val_ptr, name_stack_t&);
|
||||
static bool writeS32Value(Parser& parser, const void* val_ptr, name_stack_t&);
|
||||
static bool writeF32Value(Parser& parser, const void* val_ptr, name_stack_t&);
|
||||
static bool writeF64Value(Parser& parser, const void* val_ptr, name_stack_t&);
|
||||
static bool writeVector3Value(Parser& parser, const void* val_ptr, name_stack_t&);
|
||||
static bool writeColor4Value(Parser& parser, const void* val_ptr, name_stack_t&);
|
||||
static bool writeUIColorValue(Parser& parser, const void* val_ptr, name_stack_t&);
|
||||
static bool writeUUIDValue(Parser& parser, const void* val_ptr, name_stack_t&);
|
||||
static bool writeSDValue(Parser& parser, const void* val_ptr, name_stack_t&);
|
||||
|
||||
LLXMLNodePtr getNode(name_stack_t& stack);
|
||||
|
||||
private:
|
||||
Parser::name_stack_t mNameStack;
|
||||
LLXMLNodePtr mCurReadNode;
|
||||
// Root of the widget XML sub-tree, for example, "line_editor"
|
||||
LLXMLNodePtr mWriteRootNode;
|
||||
|
||||
typedef std::map<std::string, LLXMLNodePtr> out_nodes_t;
|
||||
out_nodes_t mOutNodes;
|
||||
LLXMLNodePtr mLastWrittenChild;
|
||||
S32 mCurReadDepth;
|
||||
std::string mCurFileName;
|
||||
std::string mRootNodeName;
|
||||
};
|
||||
|
||||
// LLSimpleXUIParser is a streamlined SAX-based XUI parser that does not support localization
|
||||
// or parsing of a tree of independent param blocks, such as child widgets.
|
||||
// Use this for reading non-localized files that only need a single param block as a result.
|
||||
//
|
||||
// NOTE: In order to support nested block parsing, we need callbacks for start element that
|
||||
// push new blocks contexts on the mScope stack.
|
||||
// NOTE: To support localization without building a DOM, we need to enforce consistent
|
||||
// ordering of child elements from base file to localized diff file. Then we can use a pair
|
||||
// of coroutines to perform matching of xml nodes during parsing. Not sure if the overhead
|
||||
// of coroutines would offset the gain from SAX parsing
|
||||
class LLSimpleXUIParserImpl;
|
||||
|
||||
class LLSimpleXUIParser : public LLInitParam::Parser
|
||||
{
|
||||
LOG_CLASS(LLSimpleXUIParser);
|
||||
public:
|
||||
typedef LLInitParam::Parser::name_stack_t name_stack_t;
|
||||
typedef LLInitParam::BaseBlock* (*element_start_callback_t)(LLSimpleXUIParser&, const char* block_name);
|
||||
|
||||
LLSimpleXUIParser(element_start_callback_t element_cb = NULL);
|
||||
virtual ~LLSimpleXUIParser();
|
||||
|
||||
/*virtual*/ std::string getCurrentElementName();
|
||||
/*virtual*/ void parserWarning(const std::string& message);
|
||||
/*virtual*/ void parserError(const std::string& message);
|
||||
|
||||
bool readXUI(const std::string& filename, LLInitParam::BaseBlock& block, bool silent=false);
|
||||
|
||||
|
||||
private:
|
||||
//reader helper functions
|
||||
static bool readFlag(Parser&, void* val_ptr);
|
||||
static bool readBoolValue(Parser&, void* val_ptr);
|
||||
static bool readStringValue(Parser&, void* val_ptr);
|
||||
static bool readU8Value(Parser&, void* val_ptr);
|
||||
static bool readS8Value(Parser&, void* val_ptr);
|
||||
static bool readU16Value(Parser&, void* val_ptr);
|
||||
static bool readS16Value(Parser&, void* val_ptr);
|
||||
static bool readU32Value(Parser&, void* val_ptr);
|
||||
static bool readS32Value(Parser&, void* val_ptr);
|
||||
static bool readF32Value(Parser&, void* val_ptr);
|
||||
static bool readF64Value(Parser&, void* val_ptr);
|
||||
static bool readColor4Value(Parser&, void* val_ptr);
|
||||
static bool readUIColorValue(Parser&, void* val_ptr);
|
||||
static bool readUUIDValue(Parser&, void* val_ptr);
|
||||
static bool readSDValue(Parser&, void* val_ptr);
|
||||
|
||||
private:
|
||||
static void startElementHandler(void *userData, const char *name, const char **atts);
|
||||
static void endElementHandler(void *userData, const char *name);
|
||||
static void characterDataHandler(void *userData, const char *s, int len);
|
||||
|
||||
void startElement(const char *name, const char **atts);
|
||||
void endElement(const char *name);
|
||||
void characterData(const char *s, int len);
|
||||
bool readAttributes(const char **atts);
|
||||
bool processText();
|
||||
|
||||
Parser::name_stack_t mNameStack;
|
||||
struct XML_ParserStruct* mParser;
|
||||
LLXMLNodePtr mLastWrittenChild;
|
||||
S32 mCurReadDepth;
|
||||
std::string mCurFileName;
|
||||
std::string mTextContents;
|
||||
const char* mCurAttributeValueBegin;
|
||||
std::vector<S32> mTokenSizeStack;
|
||||
std::vector<std::string> mScope;
|
||||
std::vector<bool> mEmptyLeafNode;
|
||||
element_start_callback_t mElementCB;
|
||||
|
||||
std::vector<std::pair<LLInitParam::BaseBlock*, S32> > mOutputStack;
|
||||
};
|
||||
|
||||
|
||||
#endif //LLXUIPARSER_H
|
||||
@@ -259,7 +259,7 @@ BOOL LLXMLNode::removeChild(LLXMLNode *target_child)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void LLXMLNode::addChild(LLXMLNodePtr new_child, LLXMLNodePtr after_child)
|
||||
void LLXMLNode::addChild(LLXMLNodePtr& new_child, LLXMLNodePtr after_child)
|
||||
{
|
||||
if (new_child->mParent != NULL)
|
||||
{
|
||||
@@ -343,8 +343,9 @@ LLXMLNodePtr LLXMLNode::createChild(const char* name, BOOL is_attribute)
|
||||
// virtual
|
||||
LLXMLNodePtr LLXMLNode::createChild(LLStringTableEntry* name, BOOL is_attribute)
|
||||
{
|
||||
LLXMLNode* ret = new LLXMLNode(name, is_attribute);
|
||||
LLXMLNodePtr ret(new LLXMLNode(name, is_attribute));
|
||||
ret->mID.clear();
|
||||
|
||||
addChild(ret);
|
||||
return ret;
|
||||
}
|
||||
@@ -358,11 +359,12 @@ BOOL LLXMLNode::deleteChild(LLXMLNode *child)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void LLXMLNode::setParent(LLXMLNodePtr new_parent)
|
||||
void LLXMLNode::setParent(LLXMLNodePtr& new_parent)
|
||||
{
|
||||
if (new_parent.notNull())
|
||||
{
|
||||
new_parent->addChild(this);
|
||||
LLXMLNodePtr this_ptr(this);
|
||||
new_parent->addChild(this_ptr);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -968,6 +970,12 @@ bool LLXMLNode::getLayeredXMLNode(LLXMLNodePtr& root,
|
||||
return true;
|
||||
}
|
||||
|
||||
// static
|
||||
void LLXMLNode::writeHeaderToFile(LLFILE *out_file)
|
||||
{
|
||||
fprintf(out_file, "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\" ?>\n");
|
||||
}
|
||||
|
||||
void LLXMLNode::writeToFile(LLFILE *out_file, const std::string& indent, bool use_type_decorations)
|
||||
{
|
||||
if (isFullyDefault())
|
||||
@@ -1233,7 +1241,8 @@ void LLXMLNode::scrubToTree(LLXMLNode *tree)
|
||||
std::vector<LLXMLNodePtr>::iterator itor3;
|
||||
for (itor3=to_delete_list.begin(); itor3!=to_delete_list.end(); ++itor3)
|
||||
{
|
||||
(*itor3)->setParent(NULL);
|
||||
LLXMLNodePtr ptr;
|
||||
(*itor3)->setParent(ptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1384,7 +1393,7 @@ BOOL LLXMLNode::getAttributeU8(const char* name, U8& value )
|
||||
BOOL LLXMLNode::getAttributeS8(const char* name, S8& value )
|
||||
{
|
||||
LLXMLNodePtr node;
|
||||
S32 val;
|
||||
S32 val = 0;
|
||||
if (!(getAttribute(name, node) && node->getIntValue(1, &val)))
|
||||
{
|
||||
return false;
|
||||
@@ -1396,7 +1405,7 @@ BOOL LLXMLNode::getAttributeS8(const char* name, S8& value )
|
||||
BOOL LLXMLNode::getAttributeU16(const char* name, U16& value )
|
||||
{
|
||||
LLXMLNodePtr node;
|
||||
U32 val;
|
||||
U32 val = 0;
|
||||
if (!(getAttribute(name, node) && node->getUnsignedValue(1, &val)))
|
||||
{
|
||||
return false;
|
||||
@@ -1408,7 +1417,7 @@ BOOL LLXMLNode::getAttributeU16(const char* name, U16& value )
|
||||
BOOL LLXMLNode::getAttributeS16(const char* name, S16& value )
|
||||
{
|
||||
LLXMLNodePtr node;
|
||||
S32 val;
|
||||
S32 val = 0;
|
||||
if (!(getAttribute(name, node) && node->getIntValue(1, &val)))
|
||||
{
|
||||
return false;
|
||||
@@ -2781,7 +2790,8 @@ void LLXMLNode::setName(LLStringTableEntry* name)
|
||||
mName = name;
|
||||
if (old_parent)
|
||||
{
|
||||
old_parent->addChild(this);
|
||||
LLXMLNodePtr this_ptr(this);
|
||||
old_parent->addChild(this_ptr);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -50,7 +50,6 @@
|
||||
#include "llstringtable.h"
|
||||
#include "llfile.h"
|
||||
|
||||
|
||||
class LLVector3;
|
||||
class LLVector3d;
|
||||
class LLQuaternion;
|
||||
@@ -133,8 +132,8 @@ public:
|
||||
BOOL isNull();
|
||||
|
||||
BOOL deleteChild(LLXMLNode* child);
|
||||
void addChild(LLXMLNodePtr new_child, LLXMLNodePtr after_child = LLXMLNodePtr(NULL));
|
||||
void setParent(LLXMLNodePtr new_parent); // reparent if necessary
|
||||
void addChild(LLXMLNodePtr& new_child, LLXMLNodePtr after_child = LLXMLNodePtr(NULL));
|
||||
void setParent(LLXMLNodePtr& new_parent); // reparent if necessary
|
||||
|
||||
// Serialization
|
||||
static bool parseFile(
|
||||
@@ -157,6 +156,11 @@ public:
|
||||
|
||||
static bool getLayeredXMLNode(LLXMLNodePtr& root, const std::vector<std::string>& paths);
|
||||
|
||||
|
||||
// Write standard XML file header:
|
||||
// <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
static void writeHeaderToFile(LLFILE *out_file);
|
||||
|
||||
// Write XML to file with one attribute per line.
|
||||
// XML escapes values as they are written.
|
||||
void writeToFile(LLFILE *out_file, const std::string& indent = std::string(), bool use_type_decorations=true);
|
||||
@@ -325,7 +329,11 @@ public:
|
||||
|
||||
protected:
|
||||
LLStringTableEntry *mName; // The name of this node
|
||||
std::string mValue; // The value of this node (use getters/setters only)
|
||||
|
||||
// The value of this node (use getters/setters only)
|
||||
// Values are not XML-escaped in memory
|
||||
// They may contain " (quot) ' (apos) & (amp) < (lt) > (gt)
|
||||
std::string mValue;
|
||||
|
||||
LLXMLNodePtr mDefault; // Mirror node in the default tree
|
||||
|
||||
|
||||
@@ -1,387 +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 toggle_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 / 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 toggle_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 toggle_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 toggle_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 / 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 toggle_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 toggle_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 E CTL_ALT_SHIFT pan_in
|
||||
THIRD_PERSON C CTL_ALT_SHIFT pan_out
|
||||
|
||||
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 PGUP CTL_ALT_SHIFT pan_in
|
||||
THIRD_PERSON PGDN CTL_ALT_SHIFT pan_out
|
||||
|
||||
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_PGUP CTL_ALT_SHIFT pan_in
|
||||
THIRD_PERSON PAD_PGDN CTL_ALT_SHIFT pan_out
|
||||
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 / 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 W SHIFT move_forward_sitting
|
||||
SITTING S SHIFT move_backward_sitting
|
||||
SITTING E SHIFT spin_over_sitting
|
||||
SITTING C SHIFT spin_under_sitting
|
||||
|
||||
SITTING LEFT SHIFT slide_left
|
||||
SITTING RIGHT SHIFT slide_right
|
||||
SITTING UP SHIFT move_forward_sitting
|
||||
SITTING DOWN SHIFT move_backward_sitting
|
||||
SITTING PGUP SHIFT spin_over_sitting
|
||||
SITTING PGDN SHIFT spin_under_sitting
|
||||
|
||||
SITTING PAD_LEFT SHIFT slide_left
|
||||
SITTING PAD_RIGHT SHIFT slide_right
|
||||
SITTING PAD_UP SHIFT move_forward_sitting
|
||||
SITTING PAD_DOWN SHIFT move_backward_sitting
|
||||
SITTING PAD_PGUP SHIFT spin_over_sitting
|
||||
SITTING PAD_PGDN SHIFT spin_under_sitting
|
||||
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 E CTL_ALT_SHIFT pan_in
|
||||
SITTING C CTL_ALT_SHIFT pan_out
|
||||
|
||||
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 PGUP CTL_ALT_SHIFT pan_in
|
||||
SITTING PGDN CTL_ALT_SHIFT pan_out
|
||||
|
||||
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_PGUP CTL_ALT_SHIFT pan_in
|
||||
SITTING PAD_PGDN CTL_ALT_SHIFT pan_out
|
||||
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
|
||||
SITTING / 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 / 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
|
||||
380
indra/newview/app_settings/keys.xml
Normal file
380
indra/newview/app_settings/keys.xml
Normal file
@@ -0,0 +1,380 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<keys>
|
||||
<first_person>
|
||||
<binding key="A" mask="NONE" command="slide_left"/>
|
||||
<binding key="D" mask="NONE" command="slide_right"/>
|
||||
<binding key="W" mask="NONE" command="push_forward"/>
|
||||
<binding key="S" mask="NONE" command="push_backward"/>
|
||||
<binding key="E" mask="NONE" command="jump"/>
|
||||
<binding key="C" mask="NONE" command="push_down"/>
|
||||
<binding key="F" mask="NONE" command="toggle_fly"/>
|
||||
|
||||
<binding key="LEFT" mask="NONE" command="slide_left"/>
|
||||
<binding key="RIGHT" mask="NONE" command="slide_right"/>
|
||||
<binding key="UP" mask="NONE" command="push_forward"/>
|
||||
<binding key="DOWN" mask="NONE" command="push_backward"/>
|
||||
<binding key="PGUP" mask="NONE" command="jump"/>
|
||||
<binding key="PGDN" mask="NONE" command="push_down"/>
|
||||
<binding key="HOME" mask="NONE" command="toggle_fly"/>
|
||||
|
||||
<binding key="PAD_LEFT" mask="NONE" command="slide_left"/>
|
||||
<binding key="PAD_RIGHT" mask="NONE" command="slide_right"/>
|
||||
<binding key="PAD_UP" mask="NONE" command="push_forward"/>
|
||||
<binding key="PAD_DOWN" mask="NONE" command="push_backward"/>
|
||||
<binding key="PAD_PGUP" mask="NONE" command="jump"/>
|
||||
<binding key="PAD_PGDN" mask="NONE" command="push_down"/>
|
||||
<binding key="PAD_HOME" mask="NONE" command="toggle_fly"/>
|
||||
<binding key="PAD_CENTER" mask="NONE" command="stop_moving"/>
|
||||
<binding key="PAD_ENTER" mask="NONE" command="start_chat"/>
|
||||
<binding key="PAD_DIVIDE" mask="NONE" command="start_gesture"/>
|
||||
|
||||
<binding key="A" mask="SHIFT" command="slide_left"/>
|
||||
<binding key="D" mask="SHIFT" command="slide_right"/>
|
||||
<binding key="W" mask="SHIFT" command="push_forward"/>
|
||||
<binding key="S" mask="SHIFT" command="push_backward"/>
|
||||
<binding key="E" mask="SHIFT" command="jump"/>
|
||||
<binding key="C" mask="SHIFT" command="toggle_down"/>
|
||||
<binding key="F" mask="SHIFT" command="toggle_fly"/>
|
||||
|
||||
<binding key="SPACE" mask="NONE" command="stop_moving"/>
|
||||
<binding key="ENTER" mask="NONE" command="start_chat"/>
|
||||
<binding key="DIVIDE" mask="NONE" command="start_gesture"/>
|
||||
<binding key="/" mask="NONE" command="start_gesture"/>
|
||||
|
||||
<binding key="LEFT" mask="SHIFT" command="slide_left"/>
|
||||
<binding key="RIGHT" mask="SHIFT" command="slide_right"/>
|
||||
<binding key="UP" mask="SHIFT" command="push_forward"/>
|
||||
<binding key="DOWN" mask="SHIFT" command="push_backward"/>
|
||||
<binding key="PGUP" mask="SHIFT" command="jump"/>
|
||||
<binding key="PGDN" mask="SHIFT" command="toggle_down"/>
|
||||
|
||||
<binding key="PAD_LEFT" mask="SHIFT" command="slide_left"/>
|
||||
<binding key="PAD_RIGHT" mask="SHIFT" command="slide_right"/>
|
||||
<binding key="PAD_UP" mask="SHIFT" command="push_forward"/>
|
||||
<binding key="PAD_DOWN" mask="SHIFT" command="push_backward"/>
|
||||
<binding key="PAD_PGUP" mask="SHIFT" command="jump"/>
|
||||
<binding key="PAD_PGDN" mask="SHIFT" command="toggle_down"/>
|
||||
<binding key="PAD_HOME" mask="SHIFT" command="toggle_fly"/>
|
||||
<binding key="PAD_ENTER" mask="SHIFT" command="start_chat"/>
|
||||
<binding key="PAD_DIVIDE" mask="SHIFT" command="start_gesture"/>
|
||||
</first_person>
|
||||
<third_person>
|
||||
<binding key="A" mask="NONE" command="turn_left"/>
|
||||
<binding key="D" mask="NONE" command="turn_right"/>
|
||||
<binding key="A" mask="SHIFT" command="slide_left"/>
|
||||
<binding key="D" mask="SHIFT" command="slide_right"/>
|
||||
<binding key="W" mask="NONE" command="push_forward"/>
|
||||
<binding key="S" mask="NONE" command="push_backward"/>
|
||||
<binding key="W" mask="SHIFT" command="push_forward"/>
|
||||
<binding key="S" mask="SHIFT" command="push_backward"/>
|
||||
<binding key="E" mask="NONE" command="jump"/>
|
||||
<binding key="C" mask="NONE" command="push_down"/>
|
||||
<binding key="E" mask="SHIFT" command="jump"/>
|
||||
<binding key="C" mask="SHIFT" command="toggle_down"/>
|
||||
|
||||
<binding key="F" mask="NONE" command="toggle_fly"/>
|
||||
<binding key="F" mask="SHIFT" command="toggle_fly"/>
|
||||
|
||||
<binding key="SPACE" mask="NONE" command="stop_moving"/>
|
||||
<binding key="ENTER" mask="NONE" command="start_chat"/>
|
||||
<binding key="DIVIDE" mask="NONE" command="start_gesture"/>
|
||||
<binding key="/" mask="NONE" command="start_gesture"/>
|
||||
|
||||
<binding key="LEFT" mask="NONE" command="turn_left"/>
|
||||
<binding key="LEFT" mask="SHIFT" command="slide_left"/>
|
||||
<binding key="RIGHT" mask="NONE" command="turn_right"/>
|
||||
<binding key="RIGHT" mask="SHIFT" command="slide_right"/>
|
||||
<binding key="UP" mask="NONE" command="push_forward"/>
|
||||
<binding key="DOWN" mask="NONE" command="push_backward"/>
|
||||
<binding key="UP" mask="SHIFT" command="push_forward"/>
|
||||
<binding key="DOWN" mask="SHIFT" command="push_backward"/>
|
||||
<binding key="PGUP" mask="NONE" command="jump"/>
|
||||
<binding key="PGDN" mask="NONE" command="push_down"/>
|
||||
<binding key="PGUP" mask="SHIFT" command="jump"/>
|
||||
<binding key="PGDN" mask="SHIFT" command="toggle_down"/>
|
||||
<binding key="HOME" mask="SHIFT" command="toggle_fly"/>
|
||||
<binding key="HOME" mask="NONE" command="toggle_fly"/>
|
||||
|
||||
<binding key="PAD_LEFT" mask="NONE" command="turn_left"/>
|
||||
<binding key="PAD_LEFT" mask="SHIFT" command="slide_left"/>
|
||||
<binding key="PAD_RIGHT" mask="NONE" command="turn_right"/>
|
||||
<binding key="PAD_RIGHT" mask="SHIFT" command="slide_right"/>
|
||||
<binding key="PAD_UP" mask="NONE" command="push_forward"/>
|
||||
<binding key="PAD_DOWN" mask="NONE" command="push_backward"/>
|
||||
<binding key="PAD_UP" mask="SHIFT" command="push_forward"/>
|
||||
<binding key="PAD_DOWN" mask="SHIFT" command="push_backward"/>
|
||||
<binding key="PAD_PGUP" mask="NONE" command="jump"/>
|
||||
<binding key="PAD_PGDN" mask="NONE" command="push_down"/>
|
||||
<binding key="PAD_PGUP" mask="SHIFT" command="jump"/>
|
||||
<binding key="PAD_PGDN" mask="SHIFT" command="toggle_down"/>
|
||||
<binding key="PAD_HOME" mask="NONE" command="toggle_fly"/>
|
||||
<binding key="PAD_HOME" mask="SHIFT" command="toggle_fly"/>
|
||||
<binding key="PAD_CENTER" mask="NONE" command="stop_moving"/>
|
||||
<binding key="PAD_CENTER" mask="SHIFT" command="stop_moving"/>
|
||||
<binding key="PAD_ENTER" mask="NONE" command="start_chat"/>
|
||||
<binding key="PAD_ENTER" mask="SHIFT" command="start_chat"/>
|
||||
<binding key="PAD_DIVIDE" mask="NONE" command="start_gesture"/>
|
||||
<binding key="PAD_DIVIDE" mask="SHIFT" command="start_gesture"/>
|
||||
|
||||
<!--Camera controls in third person on Alt-->
|
||||
<binding key="LEFT" mask="ALT" command="spin_around_cw"/>
|
||||
<binding key="RIGHT" mask="ALT" command="spin_around_ccw"/>
|
||||
<binding key="UP" mask="ALT" command="move_forward"/>
|
||||
<binding key="DOWN" mask="ALT" command="move_backward"/>
|
||||
<binding key="PGUP" mask="ALT" command="spin_over"/>
|
||||
<binding key="PGDN" mask="ALT" command="spin_under"/>
|
||||
|
||||
<binding key="A" mask="ALT" command="spin_around_cw"/>
|
||||
<binding key="D" mask="ALT" command="spin_around_ccw"/>
|
||||
<binding key="W" mask="ALT" command="move_forward"/>
|
||||
<binding key="S" mask="ALT" command="move_backward"/>
|
||||
<binding key="E" mask="ALT" command="spin_over"/>
|
||||
<binding key="C" mask="ALT" command="spin_under"/>
|
||||
|
||||
<binding key="PAD_LEFT" mask="ALT" command="spin_around_cw"/>
|
||||
<binding key="PAD_RIGHT" mask="ALT" command="spin_around_ccw"/>
|
||||
<binding key="PAD_UP" mask="ALT" command="move_forward"/>
|
||||
<binding key="PAD_DOWN" mask="ALT" command="move_backward"/>
|
||||
<binding key="PAD_PGUP" mask="ALT" command="spin_over"/>
|
||||
<binding key="PAD_PGDN" mask="ALT" command="spin_under"/>
|
||||
<binding key="PAD_ENTER" mask="ALT" command="start_chat"/>
|
||||
<binding key="PAD_DIVIDE" mask="ALT" command="start_gesture"/>
|
||||
|
||||
<!--mimic alt zoom behavior with keyboard only-->
|
||||
<binding key="A" mask="CTL_ALT" command="spin_around_cw"/>
|
||||
<binding key="D" mask="CTL_ALT" command="spin_around_ccw"/>
|
||||
<binding key="W" mask="CTL_ALT" command="spin_over"/>
|
||||
<binding key="S" mask="CTL_ALT" command="spin_under"/>
|
||||
<binding key="E" mask="CTL_ALT" command="spin_over"/>
|
||||
<binding key="C" mask="CTL_ALT" command="spin_under"/>
|
||||
|
||||
<binding key="LEFT" mask="CTL_ALT" command="spin_around_cw"/>
|
||||
<binding key="RIGHT" mask="CTL_ALT" command="spin_around_ccw"/>
|
||||
<binding key="UP" mask="CTL_ALT" command="spin_over"/>
|
||||
<binding key="DOWN" mask="CTL_ALT" command="spin_under"/>
|
||||
<binding key="PGUP" mask="CTL_ALT" command="spin_over"/>
|
||||
<binding key="PGDN" mask="CTL_ALT" command="spin_under"/>
|
||||
|
||||
<binding key="PAD_LEFT" mask="CTL_ALT" command="spin_around_cw"/>
|
||||
<binding key="PAD_RIGHT" mask="CTL_ALT" command="spin_around_ccw"/>
|
||||
<binding key="PAD_UP" mask="CTL_ALT" command="spin_over"/>
|
||||
<binding key="PAD_DOWN" mask="CTL_ALT" command="spin_under"/>
|
||||
<binding key="PAD_PGUP" mask="CTL_ALT" command="spin_over"/>
|
||||
<binding key="PAD_PGDN" mask="CTL_ALT" command="spin_under"/>
|
||||
<binding key="PAD_ENTER" mask="CTL_ALT" command="start_chat"/>
|
||||
<binding key="PAD_DIVIDE" mask="CTL_ALT" command="start_gesture"/>
|
||||
|
||||
<!--Therefore pan on Alt-Shift-->
|
||||
<binding key="A" mask="CTL_ALT_SHIFT" command="pan_left"/>
|
||||
<binding key="D" mask="CTL_ALT_SHIFT" command="pan_right"/>
|
||||
<binding key="W" mask="CTL_ALT_SHIFT" command="pan_up"/>
|
||||
<binding key="S" mask="CTL_ALT_SHIFT" command="pan_down"/>
|
||||
<binding key="E" mask="CTL_ALT_SHIFT" command="pan_in"/>
|
||||
<binding key="C" mask="CTL_ALT_SHIFT" command="pan_out"/>
|
||||
|
||||
<binding key="LEFT" mask="CTL_ALT_SHIFT" command="pan_left"/>
|
||||
<binding key="RIGHT" mask="CTL_ALT_SHIFT" command="pan_right"/>
|
||||
<binding key="UP" mask="CTL_ALT_SHIFT" command="pan_up"/>
|
||||
<binding key="DOWN" mask="CTL_ALT_SHIFT" command="pan_down"/>
|
||||
<binding key="PGUP" mask="CTL_ALT_SHIFT" command="pan_in"/>
|
||||
<binding key="PGDN" mask="CTL_ALT_SHIFT" command="pan_out"/>
|
||||
|
||||
<binding key="PAD_LEFT" mask="CTL_ALT_SHIFT" command="pan_left"/>
|
||||
<binding key="PAD_RIGHT" mask="CTL_ALT_SHIFT" command="pan_right"/>
|
||||
<binding key="PAD_UP" mask="CTL_ALT_SHIFT" command="pan_up"/>
|
||||
<binding key="PAD_DOWN" mask="CTL_ALT_SHIFT" command="pan_down"/>
|
||||
<binding key="PAD_PGUP" mask="CTL_ALT_SHIFT" command="pan_in"/>
|
||||
<binding key="PAD_PGDN" mask="CTL_ALT_SHIFT" command="pan_out"/>
|
||||
<binding key="PAD_ENTER" mask="CTL_ALT_SHIFT" command="start_chat"/>
|
||||
<binding key="PAD_DIVIDE" mask="CTL_ALT_SHIFT" command="start_gesture"/>
|
||||
</third_person>
|
||||
|
||||
<!-- Basic editing camera control -->
|
||||
<edit>
|
||||
<binding key="A" mask="NONE" command="spin_around_cw"/>
|
||||
<binding key="D" mask="NONE" command="spin_around_ccw"/>
|
||||
<binding key="W" mask="NONE" command="move_forward"/>
|
||||
<binding key="S" mask="NONE" command="move_backward"/>
|
||||
<binding key="E" mask="NONE" command="spin_over"/>
|
||||
<binding key="C" mask="NONE" command="spin_under"/>
|
||||
<binding key="ENTER" mask="NONE" command="start_chat"/>
|
||||
<binding key="DIVIDE" mask="NONE" command="start_gesture"/>
|
||||
<binding key="/" mask="NONE" command="start_gesture"/>
|
||||
<binding key="PAD_ENTER" mask="NONE" command="start_chat"/>
|
||||
<binding key="PAD_DIVIDE" mask="NONE" command="start_gesture"/>
|
||||
|
||||
<binding key="LEFT" mask="NONE" command="spin_around_cw"/>
|
||||
<binding key="RIGHT" mask="NONE" command="spin_around_ccw"/>
|
||||
<binding key="UP" mask="NONE" command="move_forward"/>
|
||||
<binding key="DOWN" mask="NONE" command="move_backward"/>
|
||||
<binding key="PGUP" mask="NONE" command="spin_over"/>
|
||||
<binding key="PGDN" mask="NONE" command="spin_under"/>
|
||||
|
||||
<binding key="A" mask="SHIFT" command="pan_left"/>
|
||||
<binding key="D" mask="SHIFT" command="pan_right"/>
|
||||
<binding key="W" mask="SHIFT" command="pan_up"/>
|
||||
<binding key="S" mask="SHIFT" command="pan_down"/>
|
||||
|
||||
<binding key="LEFT" mask="SHIFT" command="pan_left"/>
|
||||
<binding key="RIGHT" mask="SHIFT" command="pan_right"/>
|
||||
<binding key="UP" mask="SHIFT" command="pan_up"/>
|
||||
<binding key="DOWN" mask="SHIFT" command="pan_down"/>
|
||||
|
||||
<!--Walking works with ALT held down.-->
|
||||
<binding key="A" mask="ALT" command="slide_left"/>
|
||||
<binding key="D" mask="ALT" command="slide_right"/>
|
||||
<binding key="W" mask="ALT" command="push_forward"/>
|
||||
<binding key="S" mask="ALT" command="push_backward"/>
|
||||
<binding key="E" mask="ALT" command="jump"/>
|
||||
<binding key="C" mask="ALT" command="push_down"/>
|
||||
|
||||
<binding key="LEFT" mask="ALT" command="slide_left"/>
|
||||
<binding key="RIGHT" mask="ALT" command="slide_right"/>
|
||||
<binding key="UP" mask="ALT" command="push_forward"/>
|
||||
<binding key="DOWN" mask="ALT" command="push_backward"/>
|
||||
<binding key="PGUP" mask="ALT" command="jump"/>
|
||||
<binding key="PGDN" mask="ALT" command="push_down"/>
|
||||
<binding key="HOME" mask="ALT" command="toggle_fly"/>
|
||||
|
||||
<binding key="PAD_LEFT" mask="ALT" command="slide_left"/>
|
||||
<binding key="PAD_RIGHT" mask="ALT" command="slide_right"/>
|
||||
<binding key="PAD_UP" mask="ALT" command="push_forward"/>
|
||||
<binding key="PAD_DOWN" mask="ALT" command="push_backward"/>
|
||||
<binding key="PAD_PGUP" mask="ALT" command="jump"/>
|
||||
<binding key="PAD_PGDN" mask="ALT" command="push_down"/>
|
||||
<binding key="PAD_ENTER" mask="ALT" command="start_chat"/>
|
||||
<binding key="PAD_DIVIDE" mask="ALT" command="start_gesture"/>
|
||||
</edit>
|
||||
<sitting>
|
||||
<binding key="A" mask="ALT" command="spin_around_cw"/>
|
||||
<binding key="D" mask="ALT" command="spin_around_ccw"/>
|
||||
<binding key="W" mask="ALT" command="move_forward"/>
|
||||
<binding key="S" mask="ALT" command="move_backward"/>
|
||||
<binding key="E" mask="ALT" command="spin_over_sitting"/>
|
||||
<binding key="C" mask="ALT" command="spin_under_sitting"/>
|
||||
|
||||
<binding key="LEFT" mask="ALT" command="spin_around_cw"/>
|
||||
<binding key="RIGHT" mask="ALT" command="spin_around_ccw"/>
|
||||
<binding key="UP" mask="ALT" command="move_forward"/>
|
||||
<binding key="DOWN" mask="ALT" command="move_backward"/>
|
||||
<binding key="PGUP" mask="ALT" command="spin_over"/>
|
||||
<binding key="PGDN" mask="ALT" command="spin_under"/>
|
||||
|
||||
<binding key="A" mask="CTL_ALT" command="spin_around_cw"/>
|
||||
<binding key="D" mask="CTL_ALT" command="spin_around_ccw"/>
|
||||
<binding key="W" mask="CTL_ALT" command="spin_over"/>
|
||||
<binding key="S" mask="CTL_ALT" command="spin_under"/>
|
||||
<binding key="E" mask="CTL_ALT" command="spin_over"/>
|
||||
<binding key="C" mask="CTL_ALT" command="spin_under"/>
|
||||
|
||||
<binding key="LEFT" mask="CTL_ALT" command="spin_around_cw"/>
|
||||
<binding key="RIGHT" mask="CTL_ALT" command="spin_around_ccw"/>
|
||||
<binding key="UP" mask="CTL_ALT" command="spin_over"/>
|
||||
<binding key="DOWN" mask="CTL_ALT" command="spin_under"/>
|
||||
<binding key="PGUP" mask="CTL_ALT" command="spin_over"/>
|
||||
<binding key="PGDN" mask="CTL_ALT" command="spin_under"/>
|
||||
|
||||
|
||||
<binding key="A" mask="NONE" command="spin_around_cw_sitting"/>
|
||||
<binding key="D" mask="NONE" command="spin_around_ccw_sitting"/>
|
||||
<binding key="W" mask="NONE" command="move_forward_sitting"/>
|
||||
<binding key="S" mask="NONE" command="move_backward_sitting"/>
|
||||
<binding key="E" mask="NONE" command="spin_over_sitting"/>
|
||||
<binding key="C" mask="NONE" command="spin_under_sitting"/>
|
||||
|
||||
<binding key="LEFT" mask="NONE" command="spin_around_cw_sitting"/>
|
||||
<binding key="RIGHT" mask="NONE" command="spin_around_ccw_sitting"/>
|
||||
<binding key="UP" mask="NONE" command="move_forward_sitting"/>
|
||||
<binding key="DOWN" mask="NONE" command="move_backward_sitting"/>
|
||||
<binding key="PGUP" mask="NONE" command="spin_over_sitting"/>
|
||||
<binding key="PGDN" mask="NONE" command="spin_under_sitting"/>
|
||||
|
||||
<binding key="PAD_LEFT" mask="NONE" command="spin_around_cw_sitting"/>
|
||||
<binding key="PAD_RIGHT" mask="NONE" command="spin_around_ccw_sitting"/>
|
||||
<binding key="PAD_UP" mask="NONE" command="move_forward_sitting"/>
|
||||
<binding key="PAD_DOWN" mask="NONE" command="move_backward_sitting"/>
|
||||
<binding key="PAD_PGUP" mask="NONE" command="spin_over_sitting"/>
|
||||
<binding key="PAD_PGDN" mask="NONE" command="spin_under_sitting"/>
|
||||
<binding key="PAD_CENTER" mask="NONE" command="stop_moving"/>
|
||||
<binding key="PAD_ENTER" mask="NONE" command="start_chat"/>
|
||||
<binding key="PAD_DIVIDE" mask="NONE" command="start_gesture"/>
|
||||
|
||||
<!--these are for passing controls when sitting on vehicles-->
|
||||
<binding key="A" mask="SHIFT" command="slide_left"/>
|
||||
<binding key="D" mask="SHIFT" command="slide_right"/>
|
||||
<binding key="W" mask="SHIFT" command="move_forward_sitting"/>
|
||||
<binding key="S" mask="SHIFT" command="move_backward_sitting"/>
|
||||
<binding key="E" mask="SHIFT" command="spin_over_sitting"/>
|
||||
<binding key="C" mask="SHIFT" command="spin_under_sitting"/>
|
||||
|
||||
<binding key="LEFT" mask="SHIFT" command="slide_left"/>
|
||||
<binding key="RIGHT" mask="SHIFT" command="slide_right"/>
|
||||
<binding key="UP" mask="SHIFT" command="move_forward_sitting"/>
|
||||
<binding key="DOWN" mask="SHIFT" command="move_backward_sitting"/>
|
||||
<binding key="PGUP" mask="SHIFT" command="spin_over_sitting"/>
|
||||
<binding key="PGDN" mask="SHIFT" command="spin_under_sitting"/>
|
||||
|
||||
<binding key="PAD_LEFT" mask="SHIFT" command="slide_left"/>
|
||||
<binding key="PAD_RIGHT" mask="SHIFT" command="slide_right"/>
|
||||
<binding key="PAD_UP" mask="SHIFT" command="move_forward_sitting"/>
|
||||
<binding key="PAD_DOWN" mask="SHIFT" command="move_backward_sitting"/>
|
||||
<binding key="PAD_PGUP" mask="SHIFT" command="spin_over_sitting"/>
|
||||
<binding key="PAD_PGDN" mask="SHIFT" command="spin_under_sitting"/>
|
||||
<binding key="PAD_ENTER" mask="SHIFT" command="start_chat"/>
|
||||
<binding key="PAD_DIVIDE" mask="SHIFT" command="start_gesture"/>
|
||||
|
||||
<!--pan on Alt-Shift-->
|
||||
<binding key="A" mask="CTL_ALT_SHIFT" command="pan_left"/>
|
||||
<binding key="D" mask="CTL_ALT_SHIFT" command="pan_right"/>
|
||||
<binding key="W" mask="CTL_ALT_SHIFT" command="pan_up"/>
|
||||
<binding key="S" mask="CTL_ALT_SHIFT" command="pan_down"/>
|
||||
<binding key="E" mask="CTL_ALT_SHIFT" command="pan_in"/>
|
||||
<binding key="C" mask="CTL_ALT_SHIFT" command="pan_out"/>
|
||||
|
||||
<binding key="LEFT" mask="CTL_ALT_SHIFT" command="pan_left"/>
|
||||
<binding key="RIGHT" mask="CTL_ALT_SHIFT" command="pan_right"/>
|
||||
<binding key="UP" mask="CTL_ALT_SHIFT" command="pan_up"/>
|
||||
<binding key="DOWN" mask="CTL_ALT_SHIFT" command="pan_down"/>
|
||||
<binding key="PGUP" mask="CTL_ALT_SHIFT" command="pan_in"/>
|
||||
<binding key="PGDN" mask="CTL_ALT_SHIFT" command="pan_out"/>
|
||||
|
||||
<binding key="PAD_LEFT" mask="CTL_ALT_SHIFT" command="pan_left"/>
|
||||
<binding key="PAD_RIGHT" mask="CTL_ALT_SHIFT" command="pan_right"/>
|
||||
<binding key="PAD_UP" mask="CTL_ALT_SHIFT" command="pan_up"/>
|
||||
<binding key="PAD_DOWN" mask="CTL_ALT_SHIFT" command="pan_down"/>
|
||||
<binding key="PAD_PGUP" mask="CTL_ALT_SHIFT" command="pan_in"/>
|
||||
<binding key="PAD_PGDN" mask="CTL_ALT_SHIFT" command="pan_out"/>
|
||||
<binding key="PAD_ENTER" mask="CTL_ALT_SHIFT" command="start_chat"/>
|
||||
<binding key="PAD_DIVIDE" mask="CTL_ALT_SHIFT" command="start_gesture"/>
|
||||
|
||||
<binding key="ENTER" mask="NONE" command="start_chat"/>
|
||||
<binding key="DIVIDE" mask="NONE" command="start_gesture"/>
|
||||
<binding key="/" mask="NONE" command="start_gesture"/>
|
||||
</sitting>
|
||||
<edit_avatar>
|
||||
<!--Avatar editing camera controls-->
|
||||
<binding key="A" mask="NONE" command="edit_avatar_spin_cw"/>
|
||||
<binding key="D" mask="NONE" command="edit_avatar_spin_ccw"/>
|
||||
<binding key="W" mask="NONE" command="edit_avatar_move_forward"/>
|
||||
<binding key="S" mask="NONE" command="edit_avatar_move_backward"/>
|
||||
<binding key="E" mask="NONE" command="edit_avatar_spin_over"/>
|
||||
<binding key="C" mask="NONE" command="edit_avatar_spin_under"/>
|
||||
<binding key="LEFT" mask="NONE" command="edit_avatar_spin_cw"/>
|
||||
<binding key="RIGHT" mask="NONE" command="edit_avatar_spin_ccw"/>
|
||||
<binding key="UP" mask="NONE" command="edit_avatar_move_forward"/>
|
||||
<binding key="DOWN" mask="NONE" command="edit_avatar_move_backward"/>
|
||||
<binding key="PGUP" mask="NONE" command="edit_avatar_spin_over"/>
|
||||
<binding key="PGDN" mask="NONE" command="edit_avatar_spin_under"/>
|
||||
<binding key="ENTER" mask="NONE" command="start_chat"/>
|
||||
<binding key="DIVIDE" mask="NONE" command="start_gesture"/>
|
||||
<binding key="/" mask="NONE" command="start_gesture"/>
|
||||
<binding key="PAD_LEFT" mask="NONE" command="edit_avatar_spin_cw"/>
|
||||
<binding key="PAD_RIGHT" mask="NONE" command="edit_avatar_spin_ccw"/>
|
||||
<binding key="PAD_UP" mask="NONE" command="edit_avatar_move_forward"/>
|
||||
<binding key="PAD_DOWN" mask="NONE" command="edit_avatar_move_backward"/>
|
||||
<binding key="PAD_PGUP" mask="NONE" command="edit_avatar_spin_over"/>
|
||||
<binding key="PAD_PGDN" mask="NONE" command="edit_avatar_spin_under"/>
|
||||
<binding key="PAD_ENTER" mask="NONE" command="start_chat"/>
|
||||
<binding key="PAD_DIVIDE" mask="NONE" command="start_gesture"/>
|
||||
</edit_avatar>
|
||||
</keys>
|
||||
@@ -1,387 +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 Q NONE slide_left
|
||||
FIRST_PERSON D NONE slide_right
|
||||
FIRST_PERSON Z 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 Q SHIFT slide_left
|
||||
FIRST_PERSON D SHIFT slide_right
|
||||
FIRST_PERSON Z SHIFT push_forward
|
||||
FIRST_PERSON S SHIFT push_backward
|
||||
FIRST_PERSON E SHIFT jump
|
||||
FIRST_PERSON C SHIFT toggle_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 / 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 toggle_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 toggle_down
|
||||
FIRST_PERSON PAD_HOME SHIFT toggle_fly
|
||||
FIRST_PERSON PAD_ENTER SHIFT start_chat
|
||||
FIRST_PERSON PAD_DIVIDE SHIFT start_gesture
|
||||
|
||||
THIRD_PERSON Q NONE turn_left
|
||||
THIRD_PERSON D NONE turn_right
|
||||
THIRD_PERSON Q SHIFT slide_left
|
||||
THIRD_PERSON D SHIFT slide_right
|
||||
THIRD_PERSON Z NONE push_forward
|
||||
THIRD_PERSON S NONE push_backward
|
||||
THIRD_PERSON Z 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 toggle_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 / 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 toggle_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 toggle_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 Q ALT spin_around_cw
|
||||
THIRD_PERSON D ALT spin_around_ccw
|
||||
THIRD_PERSON Z 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 Q CTL_ALT spin_around_cw
|
||||
THIRD_PERSON D CTL_ALT spin_around_ccw
|
||||
THIRD_PERSON Z 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 Q CTL_ALT_SHIFT pan_left
|
||||
THIRD_PERSON D CTL_ALT_SHIFT pan_right
|
||||
THIRD_PERSON Z CTL_ALT_SHIFT pan_up
|
||||
THIRD_PERSON S CTL_ALT_SHIFT pan_down
|
||||
THIRD_PERSON E CTL_ALT_SHIFT pan_in
|
||||
THIRD_PERSON C CTL_ALT_SHIFT pan_out
|
||||
|
||||
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 PGUP CTL_ALT_SHIFT pan_in
|
||||
THIRD_PERSON PGDN CTL_ALT_SHIFT pan_out
|
||||
|
||||
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_PGUP CTL_ALT_SHIFT pan_in
|
||||
THIRD_PERSON PAD_PGDN CTL_ALT_SHIFT pan_out
|
||||
THIRD_PERSON PAD_ENTER CTL_ALT_SHIFT start_chat
|
||||
THIRD_PERSON PAD_DIVIDE CTL_ALT_SHIFT start_gesture
|
||||
|
||||
# Basic editing camera control
|
||||
EDIT Q NONE spin_around_cw
|
||||
EDIT D NONE spin_around_ccw
|
||||
EDIT Z 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 / 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 Q SHIFT pan_left
|
||||
EDIT D SHIFT pan_right
|
||||
EDIT Z 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 Q ALT slide_left
|
||||
EDIT D ALT slide_right
|
||||
EDIT Z 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 Q ALT spin_around_cw
|
||||
SITTING D ALT spin_around_ccw
|
||||
SITTING Z 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 Q CTL_ALT spin_around_cw
|
||||
SITTING D CTL_ALT spin_around_ccw
|
||||
SITTING Z 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 Q NONE spin_around_cw_sitting
|
||||
SITTING D NONE spin_around_ccw_sitting
|
||||
SITTING Z 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 Q SHIFT slide_left
|
||||
SITTING D SHIFT slide_right
|
||||
SITTING Z SHIFT move_forward_sitting
|
||||
SITTING S SHIFT move_backward_sitting
|
||||
SITTING E SHIFT spin_over_sitting
|
||||
SITTING C SHIFT spin_under_sitting
|
||||
|
||||
SITTING LEFT SHIFT slide_left
|
||||
SITTING RIGHT SHIFT slide_right
|
||||
SITTING UP SHIFT move_forward_sitting
|
||||
SITTING DOWN SHIFT move_backward_sitting
|
||||
SITTING PGUP SHIFT spin_over_sitting
|
||||
SITTING PGDN SHIFT spin_under_sitting
|
||||
|
||||
SITTING PAD_LEFT SHIFT slide_left
|
||||
SITTING PAD_RIGHT SHIFT slide_right
|
||||
SITTING PAD_UP SHIFT move_forward_sitting
|
||||
SITTING PAD_DOWN SHIFT move_backward_sitting
|
||||
SITTING PAD_PGUP SHIFT spin_over_sitting
|
||||
SITTING PAD_PGDN SHIFT spin_under_sitting
|
||||
SITTING PAD_ENTER SHIFT start_chat
|
||||
SITTING PAD_DIVIDE SHIFT start_gesture
|
||||
|
||||
# pan on Alt-Shift
|
||||
SITTING Q CTL_ALT_SHIFT pan_left
|
||||
SITTING D CTL_ALT_SHIFT pan_right
|
||||
SITTING Z CTL_ALT_SHIFT pan_up
|
||||
SITTING S CTL_ALT_SHIFT pan_down
|
||||
SITTING E CTL_ALT_SHIFT pan_in
|
||||
SITTING C CTL_ALT_SHIFT pan_out
|
||||
|
||||
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 PGUP CTL_ALT_SHIFT pan_in
|
||||
SITTING PGDN CTL_ALT_SHIFT pan_out
|
||||
|
||||
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_PGUP CTL_ALT_SHIFT pan_in
|
||||
SITTING PAD_PGDN CTL_ALT_SHIFT pan_out
|
||||
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
|
||||
SITTING / NONE start_gesture
|
||||
|
||||
# Avatar editing camera controls
|
||||
EDIT_AVATAR Q NONE edit_avatar_spin_cw
|
||||
EDIT_AVATAR D NONE edit_avatar_spin_ccw
|
||||
EDIT_AVATAR Z 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 / 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
|
||||
380
indra/newview/app_settings/keysZQSD.xml
Normal file
380
indra/newview/app_settings/keysZQSD.xml
Normal file
@@ -0,0 +1,380 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
||||
<keys>
|
||||
<first_person>
|
||||
<binding key="Q" mask="NONE" command="slide_left"/>
|
||||
<binding key="D" mask="NONE" command="slide_right"/>
|
||||
<binding key="Z" mask="NONE" command="push_forward"/>
|
||||
<binding key="S" mask="NONE" command="push_backward"/>
|
||||
<binding key="E" mask="NONE" command="jump"/>
|
||||
<binding key="C" mask="NONE" command="push_down"/>
|
||||
<binding key="F" mask="NONE" command="toggle_fly"/>
|
||||
|
||||
<binding key="LEFT" mask="NONE" command="slide_left"/>
|
||||
<binding key="RIGHT" mask="NONE" command="slide_right"/>
|
||||
<binding key="UP" mask="NONE" command="push_forward"/>
|
||||
<binding key="DOWN" mask="NONE" command="push_backward"/>
|
||||
<binding key="PGUP" mask="NONE" command="jump"/>
|
||||
<binding key="PGDN" mask="NONE" command="push_down"/>
|
||||
<binding key="HOME" mask="NONE" command="toggle_fly"/>
|
||||
|
||||
<binding key="PAD_LEFT" mask="NONE" command="slide_left"/>
|
||||
<binding key="PAD_RIGHT" mask="NONE" command="slide_right"/>
|
||||
<binding key="PAD_UP" mask="NONE" command="push_forward"/>
|
||||
<binding key="PAD_DOWN" mask="NONE" command="push_backward"/>
|
||||
<binding key="PAD_PGUP" mask="NONE" command="jump"/>
|
||||
<binding key="PAD_PGDN" mask="NONE" command="push_down"/>
|
||||
<binding key="PAD_HOME" mask="NONE" command="toggle_fly"/>
|
||||
<binding key="PAD_CENTER" mask="NONE" command="stop_moving"/>
|
||||
<binding key="PAD_ENTER" mask="NONE" command="start_chat"/>
|
||||
<binding key="PAD_DIVIDE" mask="NONE" command="start_gesture"/>
|
||||
|
||||
<binding key="Q" mask="SHIFT" command="slide_left"/>
|
||||
<binding key="D" mask="SHIFT" command="slide_right"/>
|
||||
<binding key="Z" mask="SHIFT" command="push_forward"/>
|
||||
<binding key="S" mask="SHIFT" command="push_backward"/>
|
||||
<binding key="E" mask="SHIFT" command="jump"/>
|
||||
<binding key="C" mask="SHIFT" command="toggle_down"/>
|
||||
<binding key="F" mask="SHIFT" command="toggle_fly"/>
|
||||
|
||||
<binding key="SPACE" mask="NONE" command="stop_moving"/>
|
||||
<binding key="ENTER" mask="NONE" command="start_chat"/>
|
||||
<binding key="DIVIDE" mask="NONE" command="start_gesture"/>
|
||||
<binding key="/" mask="NONE" command="start_gesture"/>
|
||||
|
||||
<binding key="LEFT" mask="SHIFT" command="slide_left"/>
|
||||
<binding key="RIGHT" mask="SHIFT" command="slide_right"/>
|
||||
<binding key="UP" mask="SHIFT" command="push_forward"/>
|
||||
<binding key="DOWN" mask="SHIFT" command="push_backward"/>
|
||||
<binding key="PGUP" mask="SHIFT" command="jump"/>
|
||||
<binding key="PGDN" mask="SHIFT" command="toggle_down"/>
|
||||
|
||||
<binding key="PAD_LEFT" mask="SHIFT" command="slide_left"/>
|
||||
<binding key="PAD_RIGHT" mask="SHIFT" command="slide_right"/>
|
||||
<binding key="PAD_UP" mask="SHIFT" command="push_forward"/>
|
||||
<binding key="PAD_DOWN" mask="SHIFT" command="push_backward"/>
|
||||
<binding key="PAD_PGUP" mask="SHIFT" command="jump"/>
|
||||
<binding key="PAD_PGDN" mask="SHIFT" command="toggle_down"/>
|
||||
<binding key="PAD_HOME" mask="SHIFT" command="toggle_fly"/>
|
||||
<binding key="PAD_ENTER" mask="SHIFT" command="start_chat"/>
|
||||
<binding key="PAD_DIVIDE" mask="SHIFT" command="start_gesture"/>
|
||||
</first_person>
|
||||
<third_person>
|
||||
<binding key="Q" mask="NONE" command="turn_left"/>
|
||||
<binding key="D" mask="NONE" command="turn_right"/>
|
||||
<binding key="Q" mask="SHIFT" command="slide_left"/>
|
||||
<binding key="D" mask="SHIFT" command="slide_right"/>
|
||||
<binding key="Z" mask="NONE" command="push_forward"/>
|
||||
<binding key="S" mask="NONE" command="push_backward"/>
|
||||
<binding key="Z" mask="SHIFT" command="push_forward"/>
|
||||
<binding key="S" mask="SHIFT" command="push_backward"/>
|
||||
<binding key="E" mask="NONE" command="jump"/>
|
||||
<binding key="C" mask="NONE" command="push_down"/>
|
||||
<binding key="E" mask="SHIFT" command="jump"/>
|
||||
<binding key="C" mask="SHIFT" command="toggle_down"/>
|
||||
|
||||
<binding key="F" mask="NONE" command="toggle_fly"/>
|
||||
<binding key="F" mask="SHIFT" command="toggle_fly"/>
|
||||
|
||||
<binding key="SPACE" mask="NONE" command="stop_moving"/>
|
||||
<binding key="ENTER" mask="NONE" command="start_chat"/>
|
||||
<binding key="DIVIDE" mask="NONE" command="start_gesture"/>
|
||||
<binding key="/" mask="NONE" command="start_gesture"/>
|
||||
|
||||
<binding key="LEFT" mask="NONE" command="turn_left"/>
|
||||
<binding key="LEFT" mask="SHIFT" command="slide_left"/>
|
||||
<binding key="RIGHT" mask="NONE" command="turn_right"/>
|
||||
<binding key="RIGHT" mask="SHIFT" command="slide_right"/>
|
||||
<binding key="UP" mask="NONE" command="push_forward"/>
|
||||
<binding key="DOWN" mask="NONE" command="push_backward"/>
|
||||
<binding key="UP" mask="SHIFT" command="push_forward"/>
|
||||
<binding key="DOWN" mask="SHIFT" command="push_backward"/>
|
||||
<binding key="PGUP" mask="NONE" command="jump"/>
|
||||
<binding key="PGDN" mask="NONE" command="push_down"/>
|
||||
<binding key="PGUP" mask="SHIFT" command="jump"/>
|
||||
<binding key="PGDN" mask="SHIFT" command="toggle_down"/>
|
||||
<binding key="HOME" mask="SHIFT" command="toggle_fly"/>
|
||||
<binding key="HOME" mask="NONE" command="toggle_fly"/>
|
||||
|
||||
<binding key="PAD_LEFT" mask="NONE" command="turn_left"/>
|
||||
<binding key="PAD_LEFT" mask="SHIFT" command="slide_left"/>
|
||||
<binding key="PAD_RIGHT" mask="NONE" command="turn_right"/>
|
||||
<binding key="PAD_RIGHT" mask="SHIFT" command="slide_right"/>
|
||||
<binding key="PAD_UP" mask="NONE" command="push_forward"/>
|
||||
<binding key="PAD_DOWN" mask="NONE" command="push_backward"/>
|
||||
<binding key="PAD_UP" mask="SHIFT" command="push_forward"/>
|
||||
<binding key="PAD_DOWN" mask="SHIFT" command="push_backward"/>
|
||||
<binding key="PAD_PGUP" mask="NONE" command="jump"/>
|
||||
<binding key="PAD_PGDN" mask="NONE" command="push_down"/>
|
||||
<binding key="PAD_PGUP" mask="SHIFT" command="jump"/>
|
||||
<binding key="PAD_PGDN" mask="SHIFT" command="toggle_down"/>
|
||||
<binding key="PAD_HOME" mask="NONE" command="toggle_fly"/>
|
||||
<binding key="PAD_HOME" mask="SHIFT" command="toggle_fly"/>
|
||||
<binding key="PAD_CENTER" mask="NONE" command="stop_moving"/>
|
||||
<binding key="PAD_CENTER" mask="SHIFT" command="stop_moving"/>
|
||||
<binding key="PAD_ENTER" mask="NONE" command="start_chat"/>
|
||||
<binding key="PAD_ENTER" mask="SHIFT" command="start_chat"/>
|
||||
<binding key="PAD_DIVIDE" mask="NONE" command="start_gesture"/>
|
||||
<binding key="PAD_DIVIDE" mask="SHIFT" command="start_gesture"/>
|
||||
|
||||
<!--Camera controls in third person on Alt-->
|
||||
<binding key="LEFT" mask="ALT" command="spin_around_cw"/>
|
||||
<binding key="RIGHT" mask="ALT" command="spin_around_ccw"/>
|
||||
<binding key="UP" mask="ALT" command="move_forward"/>
|
||||
<binding key="DOWN" mask="ALT" command="move_backward"/>
|
||||
<binding key="PGUP" mask="ALT" command="spin_over"/>
|
||||
<binding key="PGDN" mask="ALT" command="spin_under"/>
|
||||
|
||||
<binding key="Q" mask="ALT" command="spin_around_cw"/>
|
||||
<binding key="D" mask="ALT" command="spin_around_ccw"/>
|
||||
<binding key="Z" mask="ALT" command="move_forward"/>
|
||||
<binding key="S" mask="ALT" command="move_backward"/>
|
||||
<binding key="E" mask="ALT" command="spin_over"/>
|
||||
<binding key="C" mask="ALT" command="spin_under"/>
|
||||
|
||||
<binding key="PAD_LEFT" mask="ALT" command="spin_around_cw"/>
|
||||
<binding key="PAD_RIGHT" mask="ALT" command="spin_around_ccw"/>
|
||||
<binding key="PAD_UP" mask="ALT" command="move_forward"/>
|
||||
<binding key="PAD_DOWN" mask="ALT" command="move_backward"/>
|
||||
<binding key="PAD_PGUP" mask="ALT" command="spin_over"/>
|
||||
<binding key="PAD_PGDN" mask="ALT" command="spin_under"/>
|
||||
<binding key="PAD_ENTER" mask="ALT" command="start_chat"/>
|
||||
<binding key="PAD_DIVIDE" mask="ALT" command="start_gesture"/>
|
||||
|
||||
<!--mimic alt zoom behavior with keyboard only-->
|
||||
<binding key="Q" mask="CTL_ALT" command="spin_around_cw"/>
|
||||
<binding key="D" mask="CTL_ALT" command="spin_around_ccw"/>
|
||||
<binding key="Z" mask="CTL_ALT" command="spin_over"/>
|
||||
<binding key="S" mask="CTL_ALT" command="spin_under"/>
|
||||
<binding key="E" mask="CTL_ALT" command="spin_over"/>
|
||||
<binding key="C" mask="CTL_ALT" command="spin_under"/>
|
||||
|
||||
<binding key="LEFT" mask="CTL_ALT" command="spin_around_cw"/>
|
||||
<binding key="RIGHT" mask="CTL_ALT" command="spin_around_ccw"/>
|
||||
<binding key="UP" mask="CTL_ALT" command="spin_over"/>
|
||||
<binding key="DOWN" mask="CTL_ALT" command="spin_under"/>
|
||||
<binding key="PGUP" mask="CTL_ALT" command="spin_over"/>
|
||||
<binding key="PGDN" mask="CTL_ALT" command="spin_under"/>
|
||||
|
||||
<binding key="PAD_LEFT" mask="CTL_ALT" command="spin_around_cw"/>
|
||||
<binding key="PAD_RIGHT" mask="CTL_ALT" command="spin_around_ccw"/>
|
||||
<binding key="PAD_UP" mask="CTL_ALT" command="spin_over"/>
|
||||
<binding key="PAD_DOWN" mask="CTL_ALT" command="spin_under"/>
|
||||
<binding key="PAD_PGUP" mask="CTL_ALT" command="spin_over"/>
|
||||
<binding key="PAD_PGDN" mask="CTL_ALT" command="spin_under"/>
|
||||
<binding key="PAD_ENTER" mask="CTL_ALT" command="start_chat"/>
|
||||
<binding key="PAD_DIVIDE" mask="CTL_ALT" command="start_gesture"/>
|
||||
|
||||
<!--Therefore pan on Alt-Shift-->
|
||||
<binding key="Q" mask="CTL_ALT_SHIFT" command="pan_left"/>
|
||||
<binding key="D" mask="CTL_ALT_SHIFT" command="pan_right"/>
|
||||
<binding key="Z" mask="CTL_ALT_SHIFT" command="pan_up"/>
|
||||
<binding key="S" mask="CTL_ALT_SHIFT" command="pan_down"/>
|
||||
<binding key="E" mask="CTL_ALT_SHIFT" command="pan_in"/>
|
||||
<binding key="C" mask="CTL_ALT_SHIFT" command="pan_out"/>
|
||||
|
||||
<binding key="LEFT" mask="CTL_ALT_SHIFT" command="pan_left"/>
|
||||
<binding key="RIGHT" mask="CTL_ALT_SHIFT" command="pan_right"/>
|
||||
<binding key="UP" mask="CTL_ALT_SHIFT" command="pan_up"/>
|
||||
<binding key="DOWN" mask="CTL_ALT_SHIFT" command="pan_down"/>
|
||||
<binding key="PGUP" mask="CTL_ALT_SHIFT" command="pan_in"/>
|
||||
<binding key="PGDN" mask="CTL_ALT_SHIFT" command="pan_out"/>
|
||||
|
||||
<binding key="PAD_LEFT" mask="CTL_ALT_SHIFT" command="pan_left"/>
|
||||
<binding key="PAD_RIGHT" mask="CTL_ALT_SHIFT" command="pan_right"/>
|
||||
<binding key="PAD_UP" mask="CTL_ALT_SHIFT" command="pan_up"/>
|
||||
<binding key="PAD_DOWN" mask="CTL_ALT_SHIFT" command="pan_down"/>
|
||||
<binding key="PAD_PGUP" mask="CTL_ALT_SHIFT" command="pan_in"/>
|
||||
<binding key="PAD_PGDN" mask="CTL_ALT_SHIFT" command="pan_out"/>
|
||||
<binding key="PAD_ENTER" mask="CTL_ALT_SHIFT" command="start_chat"/>
|
||||
<binding key="PAD_DIVIDE" mask="CTL_ALT_SHIFT" command="start_gesture"/>
|
||||
</third_person>
|
||||
|
||||
<!-- Basic editing camera control -->
|
||||
<edit>
|
||||
<binding key="Q" mask="NONE" command="spin_around_cw"/>
|
||||
<binding key="D" mask="NONE" command="spin_around_ccw"/>
|
||||
<binding key="Z" mask="NONE" command="move_forward"/>
|
||||
<binding key="S" mask="NONE" command="move_backward"/>
|
||||
<binding key="E" mask="NONE" command="spin_over"/>
|
||||
<binding key="C" mask="NONE" command="spin_under"/>
|
||||
<binding key="ENTER" mask="NONE" command="start_chat"/>
|
||||
<binding key="DIVIDE" mask="NONE" command="start_gesture"/>
|
||||
<binding key="/" mask="NONE" command="start_gesture"/>
|
||||
<binding key="PAD_ENTER" mask="NONE" command="start_chat"/>
|
||||
<binding key="PAD_DIVIDE" mask="NONE" command="start_gesture"/>
|
||||
|
||||
<binding key="LEFT" mask="NONE" command="spin_around_cw"/>
|
||||
<binding key="RIGHT" mask="NONE" command="spin_around_ccw"/>
|
||||
<binding key="UP" mask="NONE" command="move_forward"/>
|
||||
<binding key="DOWN" mask="NONE" command="move_backward"/>
|
||||
<binding key="PGUP" mask="NONE" command="spin_over"/>
|
||||
<binding key="PGDN" mask="NONE" command="spin_under"/>
|
||||
|
||||
<binding key="Q" mask="SHIFT" command="pan_left"/>
|
||||
<binding key="D" mask="SHIFT" command="pan_right"/>
|
||||
<binding key="Z" mask="SHIFT" command="pan_up"/>
|
||||
<binding key="S" mask="SHIFT" command="pan_down"/>
|
||||
|
||||
<binding key="LEFT" mask="SHIFT" command="pan_left"/>
|
||||
<binding key="RIGHT" mask="SHIFT" command="pan_right"/>
|
||||
<binding key="UP" mask="SHIFT" command="pan_up"/>
|
||||
<binding key="DOWN" mask="SHIFT" command="pan_down"/>
|
||||
|
||||
<!--Walking works with ALT held down.-->
|
||||
<binding key="Q" mask="ALT" command="slide_left"/>
|
||||
<binding key="D" mask="ALT" command="slide_right"/>
|
||||
<binding key="Z" mask="ALT" command="push_forward"/>
|
||||
<binding key="S" mask="ALT" command="push_backward"/>
|
||||
<binding key="E" mask="ALT" command="jump"/>
|
||||
<binding key="C" mask="ALT" command="push_down"/>
|
||||
|
||||
<binding key="LEFT" mask="ALT" command="slide_left"/>
|
||||
<binding key="RIGHT" mask="ALT" command="slide_right"/>
|
||||
<binding key="UP" mask="ALT" command="push_forward"/>
|
||||
<binding key="DOWN" mask="ALT" command="push_backward"/>
|
||||
<binding key="PGUP" mask="ALT" command="jump"/>
|
||||
<binding key="PGDN" mask="ALT" command="push_down"/>
|
||||
<binding key="HOME" mask="ALT" command="toggle_fly"/>
|
||||
|
||||
<binding key="PAD_LEFT" mask="ALT" command="slide_left"/>
|
||||
<binding key="PAD_RIGHT" mask="ALT" command="slide_right"/>
|
||||
<binding key="PAD_UP" mask="ALT" command="push_forward"/>
|
||||
<binding key="PAD_DOWN" mask="ALT" command="push_backward"/>
|
||||
<binding key="PAD_PGUP" mask="ALT" command="jump"/>
|
||||
<binding key="PAD_PGDN" mask="ALT" command="push_down"/>
|
||||
<binding key="PAD_ENTER" mask="ALT" command="start_chat"/>
|
||||
<binding key="PAD_DIVIDE" mask="ALT" command="start_gesture"/>
|
||||
</edit>
|
||||
<sitting>
|
||||
<binding key="Q" mask="ALT" command="spin_around_cw"/>
|
||||
<binding key="D" mask="ALT" command="spin_around_ccw"/>
|
||||
<binding key="Z" mask="ALT" command="move_forward"/>
|
||||
<binding key="S" mask="ALT" command="move_backward"/>
|
||||
<binding key="E" mask="ALT" command="spin_over_sitting"/>
|
||||
<binding key="C" mask="ALT" command="spin_under_sitting"/>
|
||||
|
||||
<binding key="LEFT" mask="ALT" command="spin_around_cw"/>
|
||||
<binding key="RIGHT" mask="ALT" command="spin_around_ccw"/>
|
||||
<binding key="UP" mask="ALT" command="move_forward"/>
|
||||
<binding key="DOWN" mask="ALT" command="move_backward"/>
|
||||
<binding key="PGUP" mask="ALT" command="spin_over"/>
|
||||
<binding key="PGDN" mask="ALT" command="spin_under"/>
|
||||
|
||||
<binding key="Q" mask="CTL_ALT" command="spin_around_cw"/>
|
||||
<binding key="D" mask="CTL_ALT" command="spin_around_ccw"/>
|
||||
<binding key="Z" mask="CTL_ALT" command="spin_over"/>
|
||||
<binding key="S" mask="CTL_ALT" command="spin_under"/>
|
||||
<binding key="E" mask="CTL_ALT" command="spin_over"/>
|
||||
<binding key="C" mask="CTL_ALT" command="spin_under"/>
|
||||
|
||||
<binding key="LEFT" mask="CTL_ALT" command="spin_around_cw"/>
|
||||
<binding key="RIGHT" mask="CTL_ALT" command="spin_around_ccw"/>
|
||||
<binding key="UP" mask="CTL_ALT" command="spin_over"/>
|
||||
<binding key="DOWN" mask="CTL_ALT" command="spin_under"/>
|
||||
<binding key="PGUP" mask="CTL_ALT" command="spin_over"/>
|
||||
<binding key="PGDN" mask="CTL_ALT" command="spin_under"/>
|
||||
|
||||
|
||||
<binding key="Q" mask="NONE" command="spin_around_cw_sitting"/>
|
||||
<binding key="D" mask="NONE" command="spin_around_ccw_sitting"/>
|
||||
<binding key="Z" mask="NONE" command="move_forward_sitting"/>
|
||||
<binding key="S" mask="NONE" command="move_backward_sitting"/>
|
||||
<binding key="E" mask="NONE" command="spin_over_sitting"/>
|
||||
<binding key="C" mask="NONE" command="spin_under_sitting"/>
|
||||
|
||||
<binding key="LEFT" mask="NONE" command="spin_around_cw_sitting"/>
|
||||
<binding key="RIGHT" mask="NONE" command="spin_around_ccw_sitting"/>
|
||||
<binding key="UP" mask="NONE" command="move_forward_sitting"/>
|
||||
<binding key="DOWN" mask="NONE" command="move_backward_sitting"/>
|
||||
<binding key="PGUP" mask="NONE" command="spin_over_sitting"/>
|
||||
<binding key="PGDN" mask="NONE" command="spin_under_sitting"/>
|
||||
|
||||
<binding key="PAD_LEFT" mask="NONE" command="spin_around_cw_sitting"/>
|
||||
<binding key="PAD_RIGHT" mask="NONE" command="spin_around_ccw_sitting"/>
|
||||
<binding key="PAD_UP" mask="NONE" command="move_forward_sitting"/>
|
||||
<binding key="PAD_DOWN" mask="NONE" command="move_backward_sitting"/>
|
||||
<binding key="PAD_PGUP" mask="NONE" command="spin_over_sitting"/>
|
||||
<binding key="PAD_PGDN" mask="NONE" command="spin_under_sitting"/>
|
||||
<binding key="PAD_CENTER" mask="NONE" command="stop_moving"/>
|
||||
<binding key="PAD_ENTER" mask="NONE" command="start_chat"/>
|
||||
<binding key="PAD_DIVIDE" mask="NONE" command="start_gesture"/>
|
||||
|
||||
<!--these are for passing controls when sitting on vehicles-->
|
||||
<binding key="Q" mask="SHIFT" command="slide_left"/>
|
||||
<binding key="D" mask="SHIFT" command="slide_right"/>
|
||||
<binding key="Z" mask="SHIFT" command="move_forward_sitting"/>
|
||||
<binding key="S" mask="SHIFT" command="move_backward_sitting"/>
|
||||
<binding key="E" mask="SHIFT" command="spin_over_sitting"/>
|
||||
<binding key="C" mask="SHIFT" command="spin_under_sitting"/>
|
||||
|
||||
<binding key="LEFT" mask="SHIFT" command="slide_left"/>
|
||||
<binding key="RIGHT" mask="SHIFT" command="slide_right"/>
|
||||
<binding key="UP" mask="SHIFT" command="move_forward_sitting"/>
|
||||
<binding key="DOWN" mask="SHIFT" command="move_backward_sitting"/>
|
||||
<binding key="PGUP" mask="SHIFT" command="spin_over_sitting"/>
|
||||
<binding key="PGDN" mask="SHIFT" command="spin_under_sitting"/>
|
||||
|
||||
<binding key="PAD_LEFT" mask="SHIFT" command="slide_left"/>
|
||||
<binding key="PAD_RIGHT" mask="SHIFT" command="slide_right"/>
|
||||
<binding key="PAD_UP" mask="SHIFT" command="move_forward_sitting"/>
|
||||
<binding key="PAD_DOWN" mask="SHIFT" command="move_backward_sitting"/>
|
||||
<binding key="PAD_PGUP" mask="SHIFT" command="spin_over_sitting"/>
|
||||
<binding key="PAD_PGDN" mask="SHIFT" command="spin_under_sitting"/>
|
||||
<binding key="PAD_ENTER" mask="SHIFT" command="start_chat"/>
|
||||
<binding key="PAD_DIVIDE" mask="SHIFT" command="start_gesture"/>
|
||||
|
||||
<!--pan on Alt-Shift-->
|
||||
<binding key="Q" mask="CTL_ALT_SHIFT" command="pan_left"/>
|
||||
<binding key="D" mask="CTL_ALT_SHIFT" command="pan_right"/>
|
||||
<binding key="Z" mask="CTL_ALT_SHIFT" command="pan_up"/>
|
||||
<binding key="S" mask="CTL_ALT_SHIFT" command="pan_down"/>
|
||||
<binding key="E" mask="CTL_ALT_SHIFT" command="pan_in"/>
|
||||
<binding key="C" mask="CTL_ALT_SHIFT" command="pan_out"/>
|
||||
|
||||
<binding key="LEFT" mask="CTL_ALT_SHIFT" command="pan_left"/>
|
||||
<binding key="RIGHT" mask="CTL_ALT_SHIFT" command="pan_right"/>
|
||||
<binding key="UP" mask="CTL_ALT_SHIFT" command="pan_up"/>
|
||||
<binding key="DOWN" mask="CTL_ALT_SHIFT" command="pan_down"/>
|
||||
<binding key="PGUP" mask="CTL_ALT_SHIFT" command="pan_in"/>
|
||||
<binding key="PGDN" mask="CTL_ALT_SHIFT" command="pan_out"/>
|
||||
|
||||
<binding key="PAD_LEFT" mask="CTL_ALT_SHIFT" command="pan_left"/>
|
||||
<binding key="PAD_RIGHT" mask="CTL_ALT_SHIFT" command="pan_right"/>
|
||||
<binding key="PAD_UP" mask="CTL_ALT_SHIFT" command="pan_up"/>
|
||||
<binding key="PAD_DOWN" mask="CTL_ALT_SHIFT" command="pan_down"/>
|
||||
<binding key="PAD_PGUP" mask="CTL_ALT_SHIFT" command="pan_in"/>
|
||||
<binding key="PAD_PGDN" mask="CTL_ALT_SHIFT" command="pan_out"/>
|
||||
<binding key="PAD_ENTER" mask="CTL_ALT_SHIFT" command="start_chat"/>
|
||||
<binding key="PAD_DIVIDE" mask="CTL_ALT_SHIFT" command="start_gesture"/>
|
||||
|
||||
<binding key="ENTER" mask="NONE" command="start_chat"/>
|
||||
<binding key="DIVIDE" mask="NONE" command="start_gesture"/>
|
||||
<binding key="/" mask="NONE" command="start_gesture"/>
|
||||
</sitting>
|
||||
<edit_avatar>
|
||||
<!--Avatar editing camera controls-->
|
||||
<binding key="Q" mask="NONE" command="edit_avatar_spin_cw"/>
|
||||
<binding key="D" mask="NONE" command="edit_avatar_spin_ccw"/>
|
||||
<binding key="Z" mask="NONE" command="edit_avatar_move_forward"/>
|
||||
<binding key="S" mask="NONE" command="edit_avatar_move_backward"/>
|
||||
<binding key="E" mask="NONE" command="edit_avatar_spin_over"/>
|
||||
<binding key="C" mask="NONE" command="edit_avatar_spin_under"/>
|
||||
<binding key="LEFT" mask="NONE" command="edit_avatar_spin_cw"/>
|
||||
<binding key="RIGHT" mask="NONE" command="edit_avatar_spin_ccw"/>
|
||||
<binding key="UP" mask="NONE" command="edit_avatar_move_forward"/>
|
||||
<binding key="DOWN" mask="NONE" command="edit_avatar_move_backward"/>
|
||||
<binding key="PGUP" mask="NONE" command="edit_avatar_spin_over"/>
|
||||
<binding key="PGDN" mask="NONE" command="edit_avatar_spin_under"/>
|
||||
<binding key="ENTER" mask="NONE" command="start_chat"/>
|
||||
<binding key="DIVIDE" mask="NONE" command="start_gesture"/>
|
||||
<binding key="/" mask="NONE" command="start_gesture"/>
|
||||
<binding key="PAD_LEFT" mask="NONE" command="edit_avatar_spin_cw"/>
|
||||
<binding key="PAD_RIGHT" mask="NONE" command="edit_avatar_spin_ccw"/>
|
||||
<binding key="PAD_UP" mask="NONE" command="edit_avatar_move_forward"/>
|
||||
<binding key="PAD_DOWN" mask="NONE" command="edit_avatar_move_backward"/>
|
||||
<binding key="PAD_PGUP" mask="NONE" command="edit_avatar_spin_over"/>
|
||||
<binding key="PAD_PGDN" mask="NONE" command="edit_avatar_spin_under"/>
|
||||
<binding key="PAD_ENTER" mask="NONE" command="start_chat"/>
|
||||
<binding key="PAD_DIVIDE" mask="NONE" command="start_gesture"/>
|
||||
</edit_avatar>
|
||||
</keys>
|
||||
@@ -592,13 +592,32 @@ public:
|
||||
void load_default_bindings(bool zqsd)
|
||||
{
|
||||
gViewerKeyboard.unloadBindings();
|
||||
const std::string keys(zqsd ? "keysZQSD.ini" : "keys.ini");
|
||||
if (!gViewerKeyboard.loadBindings(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, keys)))
|
||||
const std::string key_bindings_file(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, zqsd ? "keysZQSD.xml" : "keys.xml"));
|
||||
if (!gDirUtilp->fileExists(key_bindings_file) || !gViewerKeyboard.loadBindingsXML(key_bindings_file))
|
||||
{
|
||||
LL_ERRS("InitInfo") << "Unable to open " << keys << LL_ENDL;
|
||||
const std::string key_bindings_file(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, zqsd ? "keysZQSD.ini" : "keys.ini"));
|
||||
if (!gViewerKeyboard.loadBindings(key_bindings_file))
|
||||
{
|
||||
LL_ERRS("InitInfo") << "Unable to open " << key_bindings_file << LL_ENDL;
|
||||
}
|
||||
}
|
||||
// Load Custom bindings (override defaults)
|
||||
gViewerKeyboard.loadBindings(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS,"custom_keys.ini"));
|
||||
std::string custom_keys(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "custom_keys.xml"));
|
||||
if (!gDirUtilp->fileExists(custom_keys) || !gViewerKeyboard.loadBindingsXML(custom_keys))
|
||||
{
|
||||
custom_keys = gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "custom_keys.ini");
|
||||
if (gDirUtilp->fileExists(custom_keys))
|
||||
gViewerKeyboard.loadBindings(custom_keys);
|
||||
}
|
||||
}
|
||||
|
||||
namespace {
|
||||
// With Xcode 6, _exit() is too magical to use with boost::bind(), so provide
|
||||
// this little helper function.
|
||||
void fast_exit(int rc)
|
||||
{
|
||||
_exit(rc);
|
||||
}
|
||||
}
|
||||
|
||||
bool LLAppViewer::init()
|
||||
@@ -645,7 +664,6 @@ bool LLAppViewer::init()
|
||||
//
|
||||
// OK to write stuff to logs now, we've now crash reported if necessary
|
||||
//
|
||||
|
||||
init_default_trans_args();
|
||||
|
||||
if (!initConfiguration())
|
||||
|
||||
@@ -88,22 +88,22 @@ namespace
|
||||
static LLCachedControl<bool> radar_alert_chat_range(gSavedSettings, "RadarAlertChatRange");
|
||||
static LLCachedControl<bool> radar_alert_age(gSavedSettings, "RadarAlertAge");
|
||||
|
||||
LLFloaterAvatarList* self = LLFloaterAvatarList::getInstance();
|
||||
LLFloaterAvatarList& inst(LLFloaterAvatarList::instance());
|
||||
LLStringUtil::format_map_t args;
|
||||
LLChat chat;
|
||||
switch(type)
|
||||
{
|
||||
case STAT_TYPE_SIM: if (radar_alert_sim) args["[RANGE]"] = self->getString("the_sim"); break;
|
||||
case STAT_TYPE_DRAW: if (radar_alert_draw) args["[RANGE]"] = self->getString("draw_distance"); break;
|
||||
case STAT_TYPE_SHOUTRANGE: if (radar_alert_shout_range) args["[RANGE]"] = self->getString("shout_range"); break;
|
||||
case STAT_TYPE_CHATRANGE: if (radar_alert_chat_range) args["[RANGE]"] = self->getString("chat_range"); break;
|
||||
case STAT_TYPE_AGE: if (radar_alert_age) chat.mText = name + " " + self->getString("has_triggered_your_avatar_age_alert") + "."; break;
|
||||
case STAT_TYPE_SIM: if (radar_alert_sim) args["[RANGE]"] = inst.getString("the_sim"); break;
|
||||
case STAT_TYPE_DRAW: if (radar_alert_draw) args["[RANGE]"] = inst.getString("draw_distance"); break;
|
||||
case STAT_TYPE_SHOUTRANGE: if (radar_alert_shout_range) args["[RANGE]"] = inst.getString("shout_range"); break;
|
||||
case STAT_TYPE_CHATRANGE: if (radar_alert_chat_range) args["[RANGE]"] = inst.getString("chat_range"); break;
|
||||
case STAT_TYPE_AGE: if (radar_alert_age) chat.mText = name + " " + inst.getString("has_triggered_your_avatar_age_alert") + "."; break;
|
||||
default: llassert(type); break;
|
||||
}
|
||||
args["[NAME]"] = name;
|
||||
args["[ACTION]"] = self->getString(entering ? "has_entered" : "has_left");
|
||||
args["[ACTION]"] = inst.getString(entering ? "has_entered" : "has_left");
|
||||
if (args.find("[RANGE]") != args.end())
|
||||
chat.mText = self->getString("template", args);
|
||||
chat.mText = inst.getString("template", args);
|
||||
else if (chat.mText.empty()) return;
|
||||
if (entering) // Note: If we decide to make this for leaving as well, change this check to dist != F32_MIN
|
||||
{
|
||||
@@ -138,13 +138,14 @@ LLAvatarListEntry::LLAvatarListEntry(const LLUUID& id, const std::string& name,
|
||||
mActivityType(ACTIVITY_NEW), mActivityTimer(),
|
||||
mIsInList(false), mAge(-1), mTime(time(NULL))
|
||||
{
|
||||
LLAvatarPropertiesProcessor::getInstance()->addObserver(mID, this);
|
||||
LLAvatarPropertiesProcessor::getInstance()->sendAvatarPropertiesRequest(mID);
|
||||
LLAvatarPropertiesProcessor& inst(LLAvatarPropertiesProcessor::instance());
|
||||
inst.addObserver(mID, this);
|
||||
inst.sendAvatarPropertiesRequest(mID);
|
||||
}
|
||||
|
||||
LLAvatarListEntry::~LLAvatarListEntry()
|
||||
{
|
||||
LLAvatarPropertiesProcessor::getInstance()->removeObserver(mID, this);
|
||||
LLAvatarPropertiesProcessor::instance().removeObserver(mID, this);
|
||||
}
|
||||
|
||||
// virtual
|
||||
@@ -152,7 +153,8 @@ void LLAvatarListEntry::processProperties(void* data, EAvatarProcessorType type)
|
||||
{
|
||||
if (type == APT_PROPERTIES)
|
||||
{
|
||||
LLAvatarPropertiesProcessor::getInstance()->removeObserver(mID, this);
|
||||
LLAvatarPropertiesProcessor& inst(LLAvatarPropertiesProcessor::instance());
|
||||
inst.removeObserver(mID, this);
|
||||
const LLAvatarData* pAvatarData = static_cast<const LLAvatarData*>(data);
|
||||
if (pAvatarData && (pAvatarData->avatar_id != LLUUID::null))
|
||||
{
|
||||
@@ -166,8 +168,8 @@ void LLAvatarListEntry::processProperties(void* data, EAvatarProcessorType type)
|
||||
catch(const std::exception&)
|
||||
{
|
||||
LL_WARNS() << "Failed to extract age from APT_PROPERTIES for " << mID << ", received \"" << pAvatarData->born_on << "\". Requesting properties again." << LL_ENDL;
|
||||
LLAvatarPropertiesProcessor::getInstance()->addObserver(mID, this);
|
||||
LLAvatarPropertiesProcessor::getInstance()->sendAvatarPropertiesRequest(mID);
|
||||
inst.addObserver(mID, this);
|
||||
inst.sendAvatarPropertiesRequest(mID);
|
||||
return;
|
||||
}
|
||||
if (!mStats[STAT_TYPE_AGE] && mAge >= 0) //Only announce age once per entry.
|
||||
@@ -210,7 +212,7 @@ void LLAvatarListEntry::resetName(const bool& hide_tags, const bool& anon_names,
|
||||
const F32 ACTIVITY_TIMEOUT = 1.0f;
|
||||
void LLAvatarListEntry::setActivity(ACTIVITY_TYPE activity)
|
||||
{
|
||||
if ( activity >= mActivityType || mActivityTimer.getElapsedTimeF32() > ACTIVITY_TIMEOUT )
|
||||
if (activity >= mActivityType || mActivityTimer.getElapsedTimeF32() > ACTIVITY_TIMEOUT)
|
||||
{
|
||||
mActivityType = activity;
|
||||
mActivityTimer.start();
|
||||
@@ -266,20 +268,15 @@ void LLFloaterAvatarList::draw()
|
||||
|
||||
void LLFloaterAvatarList::onOpen()
|
||||
{
|
||||
gSavedSettings.setBOOL("ShowRadar", true);
|
||||
if (mAvatars.size()) refreshAvatarList();
|
||||
}
|
||||
|
||||
void LLFloaterAvatarList::onClose(bool app_quitting)
|
||||
{
|
||||
setVisible(false);
|
||||
if (!app_quitting)
|
||||
{
|
||||
gSavedSettings.setBOOL("ShowRadar", false);
|
||||
}
|
||||
if (!gSavedSettings.getBOOL("RadarKeepOpen") || app_quitting)
|
||||
{
|
||||
if (app_quitting || !gSavedSettings.getBOOL("RadarKeepOpen"))
|
||||
destroy();
|
||||
}
|
||||
else
|
||||
setVisible(false);
|
||||
}
|
||||
|
||||
BOOL LLFloaterAvatarList::handleRightMouseDown(S32 x, S32 y, MASK mask)
|
||||
@@ -414,7 +411,10 @@ BOOL LLFloaterAvatarList::postBuild()
|
||||
mAvatarList->setCommitCallback(boost::bind(&LLFloaterAvatarList::onSelectName,this));
|
||||
mAvatarList->setDoubleClickCallback(boost::bind(&LLFloaterAvatarList::onClickFocus,this));
|
||||
mAvatarList->setSortChangedCallback(boost::bind(&LLFloaterAvatarList::onAvatarSortingChanged,this));
|
||||
refreshAvatarList();
|
||||
BOOST_FOREACH(LLViewerRegion* region, LLWorld::instance().getRegionList())
|
||||
{
|
||||
updateAvatarList(region);
|
||||
}
|
||||
|
||||
assessColumns();
|
||||
|
||||
@@ -906,8 +906,8 @@ void LLFloaterAvatarList::refreshAvatarList()
|
||||
agep.column = "age";
|
||||
agep.type = "text";
|
||||
color = sDefaultListText;
|
||||
std::string age = boost::lexical_cast<std::string>(entry->mAge);
|
||||
if (entry->mAge > -1)
|
||||
bool age_set(entry->mAge > -1);
|
||||
if (age_set)
|
||||
{
|
||||
static const LLCachedControl<U32> sAvatarAgeAlertDays(gSavedSettings, "AvatarAgeAlertDays");
|
||||
if ((U32)entry->mAge < sAvatarAgeAlertDays)
|
||||
@@ -916,11 +916,7 @@ void LLFloaterAvatarList::refreshAvatarList()
|
||||
color = sRadarTextYoung;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
age = "?";
|
||||
}
|
||||
agep.value = age;
|
||||
agep.value = age_set ? boost::lexical_cast<std::string>(entry->mAge) : "?";
|
||||
agep.color = color;
|
||||
element.columns.add(agep);
|
||||
}
|
||||
@@ -981,7 +977,6 @@ void LLFloaterAvatarList::refreshAvatarList()
|
||||
mDirtyAvatarSorting = true;
|
||||
|
||||
// LL_INFOS() << "radar refresh: done" << LL_ENDL;
|
||||
|
||||
}
|
||||
|
||||
void LLFloaterAvatarList::resetAvatarNames()
|
||||
@@ -1042,7 +1037,7 @@ void LLFloaterAvatarList::onClickTrack()
|
||||
mTracking = true;
|
||||
mTrackedAvatar = agent_id;
|
||||
// trackAvatar only works for friends allowing you to see them on map...
|
||||
// LLTracker::trackAvatar(agent_id, self->mAvatars[agent_id].getName());
|
||||
// LLTracker::trackAvatar(agent_id, mAvatars[agent_id].getName());
|
||||
trackAvatar(getAvatarEntry(mTrackedAvatar));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -112,7 +112,6 @@ const std::string PANEL_NAMES[LLFloaterTools::PANEL_COUNT] =
|
||||
|
||||
// Local prototypes
|
||||
void commit_grid_mode(LLUICtrl *ctrl);
|
||||
void commit_select_component(void *data);
|
||||
void click_show_more(void*);
|
||||
void click_popup_info(void*);
|
||||
void click_popup_done(void*);
|
||||
@@ -444,7 +443,7 @@ LLFloaterTools::LLFloaterTools()
|
||||
mCommitCallbackRegistrar.add("BuildTool.commitRadioEdit", boost::bind(&commit_radio_group_edit,_1));
|
||||
|
||||
mCommitCallbackRegistrar.add("BuildTool.gridMode", boost::bind(&commit_grid_mode,_1));
|
||||
mCommitCallbackRegistrar.add("BuildTool.selectComponent", boost::bind(&commit_select_component, this));
|
||||
mCommitCallbackRegistrar.add("BuildTool.selectComponent", boost::bind(&LLFloaterTools::commitSelectComponent, this, _2));
|
||||
mCommitCallbackRegistrar.add("BuildTool.gridOptions", boost::bind(&LLFloaterTools::onClickGridOptions,this));
|
||||
mCommitCallbackRegistrar.add("BuildTool.applyToSelection", boost::bind(&click_apply_to_selection, this));
|
||||
mCommitCallbackRegistrar.add("BuildTool.commitRadioLand", boost::bind(&commit_radio_group_land,_1));
|
||||
@@ -1155,19 +1154,14 @@ void commit_radio_group_land(LLUICtrl* ctrl)
|
||||
}
|
||||
}
|
||||
|
||||
void commit_select_component(void *data)
|
||||
void LLFloaterTools::commitSelectComponent(bool select_individuals)
|
||||
{
|
||||
LLFloaterTools* floaterp = (LLFloaterTools*)data;
|
||||
|
||||
//forfeit focus
|
||||
if (gFocusMgr.childHasKeyboardFocus(floaterp))
|
||||
if (gFocusMgr.childHasKeyboardFocus(this))
|
||||
{
|
||||
gFocusMgr.setKeyboardFocus(NULL);
|
||||
}
|
||||
|
||||
BOOL select_individuals = floaterp->mCheckSelectIndividual->get();
|
||||
gSavedSettings.setBOOL("EditLinkedParts", select_individuals);
|
||||
floaterp->dirty();
|
||||
dirty();
|
||||
|
||||
if (select_individuals)
|
||||
{
|
||||
|
||||
@@ -122,6 +122,7 @@ private:
|
||||
void updateMediaSettings();
|
||||
static bool deleteMediaConfirm(const LLSD& notification, const LLSD& response);
|
||||
static bool multipleFacesSelectedConfirm(const LLSD& notification, const LLSD& response);
|
||||
void commitSelectComponent(bool select_individuals);
|
||||
static void setObjectType( LLPCode pcode );
|
||||
void onClickGridOptions();
|
||||
|
||||
|
||||
@@ -952,6 +952,8 @@ static void formatDateString(std::string &date_string)
|
||||
using namespace boost;
|
||||
cmatch result;
|
||||
const regex expression("([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})");
|
||||
try
|
||||
{
|
||||
if (regex_match(date_string.c_str(), result, expression))
|
||||
{
|
||||
// convert matches to integers so that we can pad them with zeroes on Linux
|
||||
@@ -962,6 +964,11 @@ static void formatDateString(std::string &date_string)
|
||||
// ISO 8601 date format
|
||||
date_string = llformat("%04d-%02d-%02dT00:00:00Z", year, month, day);
|
||||
}
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
LL_ERRS() << "Decode of non-compliant DateTime format from [GroupMembersReply.GroupData.MemberData.OnlineStatus]. Please notify grid operators of this defect." << LL_ENDL;
|
||||
}
|
||||
}
|
||||
|
||||
const std::string& localized_online()
|
||||
|
||||
@@ -2257,47 +2257,6 @@ void LLPanelObject::draw()
|
||||
LLPanel::draw();
|
||||
}
|
||||
|
||||
// virtual
|
||||
void LLPanelObject::clearCtrls()
|
||||
{
|
||||
LLPanel::clearCtrls();
|
||||
|
||||
mCheckLock ->set(FALSE);
|
||||
mCheckLock ->setEnabled( FALSE );
|
||||
mCheckPhysics ->set(FALSE);
|
||||
mCheckPhysics ->setEnabled( FALSE );
|
||||
mCheckTemporary ->set(FALSE);
|
||||
mCheckTemporary ->setEnabled( FALSE );
|
||||
mCheckPhantom ->set(FALSE);
|
||||
mCheckPhantom ->setEnabled( FALSE );
|
||||
mComboMaterial ->setEnabled( FALSE );
|
||||
mLabelMaterial ->setEnabled( FALSE );
|
||||
// Disable text labels
|
||||
mLabelPosition ->setEnabled( FALSE );
|
||||
mLabelSize ->setEnabled( FALSE );
|
||||
mLabelRotation ->setEnabled( FALSE );
|
||||
mLabelBaseType ->setEnabled( FALSE );
|
||||
mLabelCut ->setEnabled( FALSE );
|
||||
mLabelHollow ->setEnabled( FALSE );
|
||||
mLabelHoleType ->setEnabled( FALSE );
|
||||
mLabelTwist ->setEnabled( FALSE );
|
||||
mLabelSkew ->setEnabled( FALSE );
|
||||
mLabelShear ->setEnabled( FALSE );
|
||||
mLabelTaper ->setEnabled( FALSE );
|
||||
mLabelRadiusOffset->setEnabled( FALSE );
|
||||
mLabelRevolutions->setEnabled( FALSE );
|
||||
|
||||
childSetVisible("select_single", FALSE);
|
||||
childSetVisible("edit_object", TRUE);
|
||||
childSetEnabled("edit_object", FALSE);
|
||||
|
||||
childSetEnabled("scale_hole", FALSE);
|
||||
childSetEnabled("scale_taper", FALSE);
|
||||
childSetEnabled("advanced_cut", FALSE);
|
||||
childSetEnabled("advanced_dimple", FALSE);
|
||||
childSetVisible("advanced_slice", FALSE);
|
||||
}
|
||||
|
||||
//
|
||||
// Static functions
|
||||
//
|
||||
|
||||
@@ -63,7 +63,6 @@ public:
|
||||
|
||||
virtual BOOL postBuild();
|
||||
virtual void draw();
|
||||
virtual void clearCtrls();
|
||||
|
||||
void refresh();
|
||||
|
||||
|
||||
@@ -512,51 +512,6 @@ void LLPanelVolume::draw()
|
||||
LLPanel::draw();
|
||||
}
|
||||
|
||||
// virtual
|
||||
void LLPanelVolume::clearCtrls()
|
||||
{
|
||||
LLPanel::clearCtrls();
|
||||
|
||||
getChildView("select_single")->setEnabled(false);
|
||||
getChildView("select_single")->setVisible(true);
|
||||
getChildView("edit_object")->setEnabled(false);
|
||||
getChildView("edit_object")->setVisible(false);
|
||||
getChildView("Light Checkbox Ctrl")->setEnabled(false);
|
||||
getChildView("label color")->setEnabled(false);
|
||||
LLColorSwatchCtrl* LightColorSwatch = getChild<LLColorSwatchCtrl>("colorswatch");
|
||||
if(LightColorSwatch)
|
||||
{
|
||||
LightColorSwatch->setEnabled( FALSE );
|
||||
LightColorSwatch->setValid( FALSE );
|
||||
}
|
||||
childSetEnabled("label texture",false);
|
||||
LLTextureCtrl* LightTextureCtrl = getChild<LLTextureCtrl>("light texture control");
|
||||
if(LightTextureCtrl)
|
||||
{
|
||||
LightTextureCtrl->setEnabled( FALSE );
|
||||
LightTextureCtrl->setValid( FALSE );
|
||||
}
|
||||
|
||||
getChildView("Light Intensity")->setEnabled(false);
|
||||
getChildView("Light Radius")->setEnabled(false);
|
||||
getChildView("Light Falloff")->setEnabled(false);
|
||||
|
||||
getChildView("Flexible1D Checkbox Ctrl")->setEnabled(false);
|
||||
getChildView("FlexNumSections")->setEnabled(false);
|
||||
getChildView("FlexGravity")->setEnabled(false);
|
||||
getChildView("FlexTension")->setEnabled(false);
|
||||
getChildView("FlexFriction")->setEnabled(false);
|
||||
getChildView("FlexWind")->setEnabled(false);
|
||||
getChildView("FlexForceX")->setEnabled(false);
|
||||
getChildView("FlexForceY")->setEnabled(false);
|
||||
getChildView("FlexForceZ")->setEnabled(false);
|
||||
|
||||
mSpinPhysicsGravity->setEnabled(FALSE);
|
||||
mSpinPhysicsFriction->setEnabled(FALSE);
|
||||
mSpinPhysicsDensity->setEnabled(FALSE);
|
||||
mSpinPhysicsRestitution->setEnabled(FALSE);
|
||||
}
|
||||
|
||||
//
|
||||
// Static functions
|
||||
//
|
||||
|
||||
@@ -53,7 +53,6 @@ public:
|
||||
virtual ~LLPanelVolume();
|
||||
|
||||
virtual void draw();
|
||||
virtual void clearCtrls();
|
||||
|
||||
virtual BOOL postBuild();
|
||||
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
#include "lltoolfocus.h"
|
||||
#include "llviewerwindow.h"
|
||||
#include "llvoavatarself.h"
|
||||
#include "llxuiparser.h"
|
||||
|
||||
void handle_reset_view();
|
||||
|
||||
@@ -58,7 +59,6 @@ const F32 FLY_FRAMES = 4;
|
||||
const F32 NUDGE_TIME = 0.25f; // in seconds
|
||||
const S32 NUDGE_FRAMES = 2;
|
||||
const F32 ORBIT_NUDGE_RATE = 0.05f; // fraction of normal speed
|
||||
const F32 YAW_NUDGE_RATE = 0.05f; // fraction of normal speed
|
||||
|
||||
struct LLKeyboardActionRegistry
|
||||
: public LLRegistrySingleton<std::string, boost::function<void (EKeystate keystate)>, LLKeyboardActionRegistry>
|
||||
@@ -86,6 +86,7 @@ void agent_jump( EKeystate s )
|
||||
gAgent.moveUp(1);
|
||||
}
|
||||
}
|
||||
// <singu>
|
||||
void agent_toggle_down( EKeystate s )
|
||||
{
|
||||
if (KEYSTATE_UP == s) return;
|
||||
@@ -96,6 +97,7 @@ void agent_toggle_down( EKeystate s )
|
||||
}
|
||||
gAgent.moveUp(-1);
|
||||
}
|
||||
// </singu>
|
||||
|
||||
void agent_push_down( EKeystate s )
|
||||
{
|
||||
@@ -103,22 +105,29 @@ void agent_push_down( EKeystate s )
|
||||
gAgent.moveUp(-1);
|
||||
}
|
||||
|
||||
static void agent_check_temporary_run(LLAgent::EDoubleTapRunMode mode)
|
||||
{
|
||||
// if (gAgent.mDoubleTapRunMode == mode &&
|
||||
// gAgent.getRunning() &&
|
||||
// !gAgent.getAlwaysRun())
|
||||
// {
|
||||
// // Turn off temporary running.
|
||||
// gAgent.clearRunning();
|
||||
// gAgent.sendWalkRun(gAgent.getRunning());
|
||||
// }
|
||||
// [RLVa:KB] - Checked: 2011-05-11 (RLVa-1.3.0i) | Added: RLVa-1.3.0i
|
||||
if ( (gAgent.mDoubleTapRunMode == mode) && (gAgent.getTempRun()) )
|
||||
gAgent.clearTempRun();
|
||||
// [/RLVa:KB]
|
||||
}
|
||||
|
||||
static void agent_handle_doubletap_run(EKeystate s, LLAgent::EDoubleTapRunMode mode)
|
||||
{
|
||||
if (KEYSTATE_UP == s)
|
||||
{
|
||||
// if (gAgent.mDoubleTapRunMode == mode &&
|
||||
// gAgent.getRunning() &&
|
||||
// !gAgent.getAlwaysRun())
|
||||
// {
|
||||
// // Turn off temporary running.
|
||||
// gAgent.clearRunning();
|
||||
// gAgent.sendWalkRun(gAgent.getRunning());
|
||||
// }
|
||||
// [RLVa:KB] - Checked: 2011-05-11 (RLVa-1.3.0i) | Added: RLVa-1.3.0i
|
||||
if ( (gAgent.mDoubleTapRunMode == mode) && (gAgent.getTempRun()) )
|
||||
gAgent.clearTempRun();
|
||||
// [/RLVa:KB]
|
||||
// Note: in case shift is already released, slide left/right run
|
||||
// will be released in agent_turn_left()/agent_turn_right()
|
||||
agent_check_temporary_run(mode);
|
||||
}
|
||||
else if (gSavedSettings.getBOOL("AllowTapTapHoldRun") &&
|
||||
KEYSTATE_DOWN == s &&
|
||||
@@ -208,7 +217,10 @@ void agent_turn_left( EKeystate s )
|
||||
}
|
||||
else
|
||||
{
|
||||
if (KEYSTATE_UP == s) return;
|
||||
if (KEYSTATE_UP == s)
|
||||
{
|
||||
return;
|
||||
}
|
||||
F32 time = gKeyboard->getCurKeyElapsedTime();
|
||||
gAgent.moveYaw( LLFloaterMove::getYawRate( time ) );
|
||||
}
|
||||
@@ -223,7 +235,10 @@ void agent_turn_right( EKeystate s )
|
||||
}
|
||||
else
|
||||
{
|
||||
if (KEYSTATE_UP == s) return;
|
||||
if (KEYSTATE_UP == s)
|
||||
{
|
||||
return;
|
||||
}
|
||||
F32 time = gKeyboard->getCurKeyElapsedTime();
|
||||
gAgent.moveYaw( -LLFloaterMove::getYawRate( time ) );
|
||||
}
|
||||
@@ -758,6 +773,61 @@ BOOL LLViewerKeyboard::bindKey(const S32 mode, const KEY key, const MASK mask, c
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
LLViewerKeyboard::KeyBinding::KeyBinding()
|
||||
: key("key"),
|
||||
mask("mask"),
|
||||
command("command")
|
||||
{}
|
||||
|
||||
LLViewerKeyboard::KeyMode::KeyMode(EKeyboardMode _mode)
|
||||
: bindings("binding"),
|
||||
mode(_mode)
|
||||
{}
|
||||
|
||||
LLViewerKeyboard::Keys::Keys()
|
||||
: first_person("first_person", KeyMode(MODE_FIRST_PERSON)),
|
||||
third_person("third_person", KeyMode(MODE_THIRD_PERSON)),
|
||||
edit("edit", KeyMode(MODE_EDIT)),
|
||||
sitting("sitting", KeyMode(MODE_SITTING)),
|
||||
edit_avatar("edit_avatar", KeyMode(MODE_EDIT_AVATAR))
|
||||
{}
|
||||
|
||||
S32 LLViewerKeyboard::loadBindingsXML(const std::string& filename)
|
||||
{
|
||||
S32 binding_count = 0;
|
||||
Keys keys;
|
||||
LLSimpleXUIParser parser;
|
||||
|
||||
if (parser.readXUI(filename, keys)
|
||||
&& keys.validateBlock())
|
||||
{
|
||||
binding_count += loadBindingMode(keys.first_person);
|
||||
binding_count += loadBindingMode(keys.third_person);
|
||||
binding_count += loadBindingMode(keys.edit);
|
||||
binding_count += loadBindingMode(keys.sitting);
|
||||
binding_count += loadBindingMode(keys.edit_avatar);
|
||||
}
|
||||
return binding_count;
|
||||
}
|
||||
|
||||
S32 LLViewerKeyboard::loadBindingMode(const LLViewerKeyboard::KeyMode& keymode)
|
||||
{
|
||||
S32 binding_count = 0;
|
||||
for (LLInitParam::ParamIterator<KeyBinding>::const_iterator it = keymode.bindings.begin(),
|
||||
end_it = keymode.bindings.end();
|
||||
it != end_it;
|
||||
++it)
|
||||
{
|
||||
KEY key;
|
||||
MASK mask;
|
||||
LLKeyboard::keyFromString(it->key, &key);
|
||||
LLKeyboard::maskFromString(it->mask, &mask);
|
||||
bindKey(keymode.mode, key, mask, it->command);
|
||||
binding_count++;
|
||||
}
|
||||
|
||||
return binding_count;
|
||||
}
|
||||
|
||||
S32 LLViewerKeyboard::loadBindings(const std::string& filename)
|
||||
{
|
||||
|
||||
@@ -2,31 +2,25 @@
|
||||
* @file llviewerkeyboard.h
|
||||
* @brief LLViewerKeyboard class header file
|
||||
*
|
||||
* $LicenseInfo:firstyear=2005&license=viewergpl$
|
||||
*
|
||||
* Copyright (c) 2005-2009, Linden Research, Inc.
|
||||
*
|
||||
* $LicenseInfo:firstyear=2005&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* The source code in this file ("Source Code") is provided by Linden Lab
|
||||
* to you under the terms of the GNU General Public License, version 2.0
|
||||
* ("GPL"), unless you have obtained a separate licensing agreement
|
||||
* ("Other License"), formally executed by you and Linden Lab. Terms of
|
||||
* the GPL can be found in doc/GPL-license.txt in this distribution, or
|
||||
* online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
|
||||
* Copyright (C) 2010, Linden Research, Inc.
|
||||
*
|
||||
* There are special exceptions to the terms and conditions of the GPL as
|
||||
* it is applied to this Source Code. View the full text of the exception
|
||||
* in the file doc/FLOSS-exception.txt in this software distribution, or
|
||||
* online at
|
||||
* http://secondlifegrid.net/programs/open_source/licensing/flossexception
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Lesser General Public
|
||||
* License as published by the Free Software Foundation;
|
||||
* version 2.1 of the License only.
|
||||
*
|
||||
* By copying, modifying or distributing this software, you acknowledge
|
||||
* that you have read and understood your obligations described above,
|
||||
* and agree to abide by those obligations.
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
|
||||
* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
|
||||
* COMPLETENESS OR PERFORMANCE.
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*
|
||||
* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
|
||||
* $/LicenseInfo$
|
||||
*/
|
||||
|
||||
@@ -34,6 +28,7 @@
|
||||
#define LL_LLVIEWERKEYBOARD_H
|
||||
|
||||
#include "llkeyboard.h" // For EKeystate
|
||||
#include "llinitparam.h"
|
||||
|
||||
const S32 MAX_NAMED_FUNCTIONS = 100;
|
||||
const S32 MAX_KEY_BINDINGS = 128; // was 60
|
||||
@@ -64,18 +59,48 @@ void bind_keyboard_functions();
|
||||
class LLViewerKeyboard
|
||||
{
|
||||
public:
|
||||
struct KeyBinding : public LLInitParam::Block<KeyBinding>
|
||||
{
|
||||
Mandatory<std::string> key,
|
||||
mask,
|
||||
command;
|
||||
|
||||
KeyBinding();
|
||||
};
|
||||
|
||||
struct KeyMode : public LLInitParam::Block<KeyMode>
|
||||
{
|
||||
Multiple<KeyBinding> bindings;
|
||||
EKeyboardMode mode;
|
||||
KeyMode(EKeyboardMode mode);
|
||||
};
|
||||
|
||||
struct Keys : public LLInitParam::Block<Keys>
|
||||
{
|
||||
Optional<KeyMode> first_person,
|
||||
third_person,
|
||||
edit,
|
||||
sitting,
|
||||
edit_avatar;
|
||||
|
||||
Keys();
|
||||
};
|
||||
|
||||
LLViewerKeyboard();
|
||||
|
||||
BOOL handleKey(KEY key, MASK mask, BOOL repeated);
|
||||
|
||||
S32 loadBindings(const std::string& filename); // returns number bound, 0 on error
|
||||
S32 loadBindingsXML(const std::string& filename); // returns number bound, 0 on error
|
||||
void unloadBindings();
|
||||
EKeyboardMode getMode();
|
||||
|
||||
BOOL modeFromString(const std::string& string, S32 *mode); // False on failure
|
||||
|
||||
void scanKey(KEY key, BOOL key_down, BOOL key_up, BOOL key_level);
|
||||
protected:
|
||||
|
||||
private:
|
||||
S32 loadBindingMode(const LLViewerKeyboard::KeyMode& keymode);
|
||||
BOOL bindKey(const S32 mode, const KEY key, const MASK mask, const std::string& function_name);
|
||||
|
||||
// Hold all the ugly stuff torn out to make LLKeyboard non-viewer-specific here
|
||||
|
||||
@@ -5082,14 +5082,14 @@ void LLViewerWindow::drawMouselookInstructions()
|
||||
LLFontGL::HCENTER, LLFontGL::TOP,
|
||||
LLFontGL::BOLD, LLFontGL::DROP_SHADOW_SOFT);
|
||||
font->renderUTF8(
|
||||
llformat("Y: %.2f", vec.mV[VX]), 0,
|
||||
llformat("Y: %.2f", vec.mV[VY]), 0,
|
||||
text_pos_start + 100,
|
||||
INSTRUCTIONS_PAD,
|
||||
LLColor4(0.5f, 1.0f, 0.5f, 0.5),
|
||||
LLFontGL::HCENTER, LLFontGL::TOP,
|
||||
LLFontGL::BOLD, LLFontGL::DROP_SHADOW_SOFT);
|
||||
font->renderUTF8(
|
||||
llformat("Z: %.2f", vec.mV[VX]), 0,
|
||||
llformat("Z: %.2f", vec.mV[VZ]), 0,
|
||||
text_pos_start + 200,
|
||||
INSTRUCTIONS_PAD,
|
||||
LLColor4(0.5f, 0.5f, 1.0f, 0.5),
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
#include "llviewerparcelmgr.h"
|
||||
#include "llviewermenu.h"
|
||||
#include "llviewerregion.h"
|
||||
#include "llviewerstats.h"
|
||||
#include "llworld.h"
|
||||
|
||||
#include "rlvactions.h"
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
#include "llagent.h"
|
||||
#include "llagentcamera.h"
|
||||
#include "lldaycyclemanager.h"
|
||||
#include "llviewercontrol.h"
|
||||
#include "llvoavatarself.h"
|
||||
#include "llwlparammanager.h"
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
#include "llviewerregion.h"
|
||||
|
||||
#include "rlvhandler.h"
|
||||
#include "rlvhelper.h"
|
||||
#include "rlvinventory.h"
|
||||
#include "rlvlocks.h"
|
||||
#include "rlvui.h"
|
||||
|
||||
@@ -15,15 +15,11 @@
|
||||
*/
|
||||
|
||||
#include "llviewerprecompiledheaders.h"
|
||||
#include "llagent.h"
|
||||
#include "llagentwearables.h"
|
||||
#include "llappearancemgr.h"
|
||||
#include "llattachmentsmgr.h"
|
||||
#include "llgesturemgr.h"
|
||||
#include "llnotificationsutil.h"
|
||||
#include "llviewerobject.h"
|
||||
#include "llviewerobjectlist.h"
|
||||
#include "llwlparammanager.h"
|
||||
|
||||
#include "rlvhelper.h"
|
||||
#include "rlvhandler.h"
|
||||
|
||||
@@ -21,7 +21,6 @@
|
||||
#include "llinventorymodel.h"
|
||||
#include "llviewerinventory.h"
|
||||
#include "llwearabletype.h"
|
||||
#include "llwlparamset.h"
|
||||
|
||||
#include "rlvdefines.h"
|
||||
#include "rlvcommon.h"
|
||||
|
||||
@@ -17,17 +17,10 @@
|
||||
#include "llviewerprecompiledheaders.h"
|
||||
#include "llagent.h"
|
||||
#include "llappearancemgr.h"
|
||||
#include "llinventoryobserver.h"
|
||||
#include "llstartup.h"
|
||||
#include "llviewerfoldertype.h"
|
||||
#include "llviewerobject.h"
|
||||
#include "llvoavatarself.h"
|
||||
|
||||
#include "rlvdefines.h"
|
||||
#include "rlvcommon.h"
|
||||
#include "rlvlocks.h"
|
||||
#include "rlvinventory.h"
|
||||
#include "rlvhandler.h"
|
||||
|
||||
#include "boost/algorithm/string.hpp"
|
||||
|
||||
|
||||
@@ -18,10 +18,8 @@
|
||||
#define RLV_INVENTORY_H
|
||||
|
||||
#include "llinventoryfunctions.h"
|
||||
#include "llinventorymodel.h"
|
||||
#include "llinventoryobserver.h"
|
||||
#include "llsingleton.h"
|
||||
#include "llviewerinventory.h"
|
||||
|
||||
#include "rlvhelper.h"
|
||||
#include "rlvlocks.h"
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
#include "llagent.h"
|
||||
#include "llappearancemgr.h"
|
||||
#include "llattachmentsmgr.h"
|
||||
#include "llinventoryobserver.h"
|
||||
#include "lloutfitobserver.h"
|
||||
#include "llviewerobjectlist.h"
|
||||
#include "pipeline.h"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<floater name="radar" title="Radar"
|
||||
<floater name="radar" title="Radar" control_name="ShowRadar"
|
||||
can_resize="true" can_minimize="true" can_close="true" can_drag_on_left="false"
|
||||
rect_control="FloaterRadarRect" min_width="300" min_height="300">
|
||||
<string name="Title">Radar</string>
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<button.commit_callback function="Wlf.ChangeCameraPreset" parameter="2"/>
|
||||
</button>
|
||||
<slider bottom_delta="-20" left="5" control_name="RenderFarClip" decimal_digits="0" height="20" increment="8" label="Draw Dist.:" can_edit_text="true" label_width="60" max_val="1024" min_val="24" val_width="36" name="DrawDistance" width="190" tool_tip="Change your Draw Distance"/>
|
||||
<slider bottom_delta="-20" control_name="AvatarHoverOffsetZ" height="20" increment=".001" label="Hover Ht.:" can_edit_text="true" label_width="60" max_val="5" min_val="-5" val_width="36" name="HoverHeightSlider" width="189"/>
|
||||
<slider bottom_delta="-20" height="20" increment=".001" label="Hover Ht.:" can_edit_text="true" label_width="60" max_val="5" min_val="-5" val_width="36" name="HoverHeightSlider" width="189"/>
|
||||
<slider bottom_delta="-20" control_name="RenderMaxPartCount" decimal_digits="0" height="20" increment="256" label="Particles:" can_edit_text="true" label_width="60" max_val="8192" min_val="0" val_width="36" name="MaxParticleCount" width="190" tool_tip="Amount of particles to render"/>
|
||||
<slider bottom_delta="-20" control_name="RenderAvatarMaxVisible" decimal_digits="0" height="20" increment="1" label="Max Avs:" can_edit_text="true" label_width="60" max_val="50" min_val="1" val_width="36" name="RenderAvatarMaxVisible" width="190" tool_tip="How many avatars to fully render on screen. Lowering this greatly improves FPS in crowded situations. Requires Avatar Impostors to be on. [Default 35]"/>
|
||||
<slider bottom_delta="-20" control_name="RenderVolumeLODFactor" height="20" increment="0.125" label="Obj. Detail:" can_edit_text="true" label_width="60" max_val="4" min_val="0.5" name="Object Detail" val_width="36" width="190" tool_tip="Controls level of detail of primitives (multiplier for current screen area when calculated level of detail[0.5 to 2.0 is stable])"/>
|
||||
|
||||
@@ -222,6 +222,10 @@ BOOL wlfPanel_AdvSettings::postBuild()
|
||||
// Set up based on initial region.
|
||||
onRegionChanged();
|
||||
}
|
||||
else
|
||||
{
|
||||
mHoverHeight = NULL;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -513,7 +517,7 @@ void wlfPanel_AdvSettings::updateEditHoverEnabled()
|
||||
{
|
||||
const LLViewerRegion* region = gAgent.getRegion();
|
||||
bool enabled = region && region->avatarHoverHeightEnabled();
|
||||
mHoverHeight->setEnabled(enabled);
|
||||
if (mHoverHeight) mHoverHeight->setEnabled(enabled);
|
||||
if (enabled)
|
||||
{
|
||||
syncFromPreferenceSetting(mHoverHeight);
|
||||
|
||||
Reference in New Issue
Block a user