summaryrefslogtreecommitdiff
path: root/indra/newview/llvoiceclient.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llvoiceclient.cpp')
-rw-r--r--indra/newview/llvoiceclient.cpp65
1 files changed, 65 insertions, 0 deletions
diff --git a/indra/newview/llvoiceclient.cpp b/indra/newview/llvoiceclient.cpp
index fca8de7410..cc590fc947 100644
--- a/indra/newview/llvoiceclient.cpp
+++ b/indra/newview/llvoiceclient.cpp
@@ -200,6 +200,8 @@ const LLVoiceVersionInfo LLVoiceClient::getVersion()
void LLVoiceClient::updateSettings()
{
setUsePTT(gSavedSettings.getBOOL("PTTCurrentlyEnabled"));
+ std::string keyString = gSavedSettings.getString("PushToTalkButton");
+ setPTTKey(keyString);
setPTTIsToggle(gSavedSettings.getBOOL("PushToTalkToggle"));
mDisableMic = gSavedSettings.getBOOL("VoiceDisableMic");
@@ -635,6 +637,32 @@ bool LLVoiceClient::getPTTIsToggle()
return mPTTIsToggle;
}
+void LLVoiceClient::setPTTKey(std::string &key)
+{
+ // Value is stored as text for readability
+ if(key == "MiddleMouse")
+ {
+ mPTTMouseButton = LLMouseHandler::CLICK_MIDDLE;
+ }
+ else if(key == "MouseButton4")
+ {
+ mPTTMouseButton = LLMouseHandler::CLICK_BUTTON4;
+ }
+ else if (key == "MouseButton5")
+ {
+ mPTTMouseButton = LLMouseHandler::CLICK_BUTTON5;
+ }
+ else
+ {
+ mPTTMouseButton = 0;
+ if(!LLKeyboard::keyFromString(key, &mPTTKey))
+ {
+ // If the call failed, don't match any key.
+ key = KEY_NONE;
+ }
+ }
+}
+
void LLVoiceClient::inputUserControlState(bool down)
{
if(mPTTIsToggle)
@@ -655,6 +683,43 @@ void LLVoiceClient::toggleUserPTTState(void)
setUserPTTState(!getUserPTTState());
}
+void LLVoiceClient::keyDown(KEY key, MASK mask)
+{
+ if (gKeyboard->getKeyRepeated(key))
+ {
+ // ignore auto-repeat keys
+ return;
+ }
+
+ if (mPTTMouseButton == 0 && LLAgent::isActionAllowed("speak") && (key == mPTTKey))
+ {
+ bool down = gKeyboard->getKeyDown(mPTTKey);
+ if (down)
+ {
+ inputUserControlState(down);
+ }
+ }
+
+}
+void LLVoiceClient::keyUp(KEY key, MASK mask)
+{
+ if (mPTTMouseButton == 0 && (key == mPTTKey))
+ {
+ bool down = gKeyboard->getKeyDown(mPTTKey);
+ if (!down)
+ {
+ inputUserControlState(down);
+ }
+ }
+}
+void LLVoiceClient::updateMouseState(S32 click, bool down)
+{
+ if(mPTTMouseButton == click && LLAgent::isActionAllowed("speak"))
+ {
+ inputUserControlState(down);
+ }
+}
+
//-------------------------------------------
// nearby speaker accessors