mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-09 21:45:34 +08:00
@@ -10,70 +10,37 @@ using namespace BlackMisc::Audio;
|
||||
|
||||
namespace BlackCore
|
||||
{
|
||||
|
||||
CVoiceVatlib *CVoiceVatlib::CKeyboard::s_voice = nullptr;
|
||||
|
||||
#if defined(Q_OS_WIN)
|
||||
|
||||
HHOOK CVoiceVatlib::CKeyboard::s_keyboardHook = nullptr;
|
||||
|
||||
/*
|
||||
* Keyboard handling itself
|
||||
*/
|
||||
LRESULT CALLBACK CVoiceVatlib::CKeyboard::keyboardProcedure(int nCode, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
if (nCode < 0) // do not process message
|
||||
return CallNextHookEx(CVoiceVatlib::CKeyboard::s_keyboardHook, nCode, wParam, lParam);
|
||||
|
||||
// precheck
|
||||
if (!CVoiceVatlib::CKeyboard::s_keyboardHook || !CVoiceVatlib::CKeyboard::s_voice)
|
||||
return CallNextHookEx(CVoiceVatlib::CKeyboard::s_keyboardHook, nCode, wParam, lParam);
|
||||
|
||||
// Check for a key down press
|
||||
if (nCode == HC_ACTION)
|
||||
{
|
||||
KBDLLHOOKSTRUCT *pKeyboard = (KBDLLHOOKSTRUCT *)lParam;
|
||||
// http://msdn.microsoft.com/en-us/library/windows/desktop/ms644967(v=vs.85).aspx
|
||||
// http://stackoverflow.com/questions/18917716/windows-how-to-query-state-of-modifier-keys-within-low-level-keyboard-hook
|
||||
if (wParam == WM_KEYDOWN)
|
||||
{
|
||||
if (pKeyboard->vkCode == VK_LCONTROL) CVoiceVatlib::CKeyboard::s_voice->m_pushToTalk = true;
|
||||
}
|
||||
else if (wParam == WM_KEYUP)
|
||||
{
|
||||
if (pKeyboard->vkCode == VK_LCONTROL) CVoiceVatlib::CKeyboard::s_voice->m_pushToTalk = false;
|
||||
}
|
||||
}
|
||||
return CallNextHookEx(CVoiceVatlib::CKeyboard::s_keyboardHook, nCode, wParam, lParam); ; // not processed flag
|
||||
}
|
||||
|
||||
/*
|
||||
* Handle PTT
|
||||
*/
|
||||
void CVoiceVatlib::handlePushToTalk()
|
||||
void CVoiceVatlib::handlePushToTalk(bool value)
|
||||
{
|
||||
qDebug() << "PTT";
|
||||
if (!this->m_voice) return;
|
||||
CVoiceRoomList rooms = this->getComVoiceRoomsWithAudioStatus();
|
||||
CVoiceRoom room1 = rooms[0];
|
||||
CVoiceRoom room2 = rooms[1];
|
||||
|
||||
if (value) qDebug() << "Start transmitting...";
|
||||
else qDebug() << "Stop transmitting...";
|
||||
|
||||
if (room1.isConnected())
|
||||
{
|
||||
if (this->m_pushToTalk && !this->m_voice->IsAudioPlaying(IVoice::COM1))
|
||||
if (value)
|
||||
{
|
||||
this->startTransmitting(IVoice::COM1);
|
||||
else if (!this->m_pushToTalk)
|
||||
}
|
||||
else
|
||||
{
|
||||
this->stopTransmitting(IVoice::COM1);
|
||||
}
|
||||
}
|
||||
if (room2.isConnected())
|
||||
{
|
||||
if (this->m_pushToTalk && !this->m_voice->IsAudioPlaying(IVoice::COM2))
|
||||
if (value)
|
||||
this->startTransmitting(IVoice::COM2);
|
||||
else if (!this->m_pushToTalk)
|
||||
else
|
||||
this->stopTransmitting(IVoice::COM2);
|
||||
}
|
||||
}
|
||||
|
||||
#else
|
||||
void CVoiceVatlib::handlePushToTalk() {}
|
||||
#endif
|
||||
|
||||
} // namespace
|
||||
|
||||
Reference in New Issue
Block a user