m_controller->AddCommand(command);
}
+void CCECProcessor::AddKey(cec_keypress &key)
+{
+ m_controller->AddKey(key);
+}
+
void CCECProcessor::AddKey(void)
{
m_controller->AddKey();
virtual void SetCurrentButton(cec_user_control_code iButtonCode);
virtual void AddCommand(const cec_command &command);
+ virtual void AddKey(cec_keypress &key);
virtual void AddKey(void);
virtual void AddLog(cec_log_level level, const CStdString &strMessage);
}
}
+void CLibCEC::AddKey(cec_keypress &key)
+{
+ m_keyBuffer.Push(key);
+ m_iCurrentButton = CEC_USER_CONTROL_CODE_UNKNOWN;
+ m_buttontime = 0;
+}
+
void CLibCEC::AddKey(void)
{
if (m_iCurrentButton != CEC_USER_CONTROL_CODE_UNKNOWN)
virtual void AddLog(cec_log_level level, const std::string &strMessage);
virtual void AddKey(void);
+ virtual void AddKey(cec_keypress &key);
virtual void AddCommand(const cec_command &command);
virtual void CheckKeypressTimeout(void);
virtual void SetCurrentButton(cec_user_control_code iButtonCode);
{
if (command.parameters.size > 0)
{
- m_busDevice->GetProcessor()->AddKey();
+ cec_keypress key;
+ key.duration = CEC_BUTTON_TIMEOUT;
+ key.keycode = CEC_USER_CONTROL_CODE_UNKNOWN;
- uint8_t iButton = 0;
switch (command.parameters[0])
{
case CEC_AN_USER_CONTROL_CODE_RETURN:
- iButton = CEC_USER_CONTROL_CODE_PREVIOUS_CHANNEL;
+ key.keycode = CEC_USER_CONTROL_CODE_EXIT;
break;
default:
break;
}
- if (iButton > 0 && iButton <= CEC_USER_CONTROL_CODE_MAX)
+ if (key.keycode != CEC_USER_CONTROL_CODE_UNKNOWN)
{
CStdString strLog;
- strLog.Format("key pressed: %1x", iButton);
+ strLog.Format("key pressed: %1x", key.keycode);
m_busDevice->AddLog(CEC_LOG_DEBUG, strLog);
- m_busDevice->GetProcessor()->SetCurrentButton((cec_user_control_code) command.parameters[0]);
-
- // these ones don't send key release events
- m_busDevice->GetProcessor()->AddKey();
+ m_busDevice->GetProcessor()->AddKey(key);
}
}