From: Lars Op den Kamp Date: Tue, 25 Oct 2011 23:26:52 +0000 (+0200) Subject: cec: handle samsung remote command 'return' X-Git-Tag: upstream/2.2.0~1^2~216 X-Git-Url: https://git.piment-noir.org/?a=commitdiff_plain;h=e36035adeeab088655508cf6c2aa492e8eea7cc3;p=deb_libcec.git cec: handle samsung remote command 'return' --- diff --git a/include/cectypes.h b/include/cectypes.h index 5298258..941b542 100644 --- a/include/cectypes.h +++ b/include/cectypes.h @@ -434,6 +434,11 @@ typedef enum cec_user_control_code CEC_USER_CONTROL_CODE_UNKNOWN } cec_user_control_code; +typedef enum cec_an_user_control_code +{ + CEC_AN_USER_CONTROL_CODE_RETURN = 0x91 +} cec_an_user_control_code; + typedef enum cec_logical_address { CECDEVICE_UNKNOWN = -1, //not a valid logical address diff --git a/src/lib/CECProcessor.cpp b/src/lib/CECProcessor.cpp index f13644e..2e53d6b 100644 --- a/src/lib/CECProcessor.cpp +++ b/src/lib/CECProcessor.cpp @@ -548,7 +548,34 @@ bool CCECProcessor::HandleANCommand(cec_command &command) { switch(command.opcode) { - // TODO + case CEC_OPCODE_VENDOR_REMOTE_BUTTON_DOWN: + if (command.parameters.size > 0) + { + m_controller->AddKey(); + + uint8_t iButton = 0; + switch (command.parameters[0]) + { + case CEC_AN_USER_CONTROL_CODE_RETURN: + iButton = CEC_USER_CONTROL_CODE_PREVIOUS_CHANNEL; + break; + default: + break; + } + + if (iButton > 0 && iButton <= CEC_USER_CONTROL_CODE_MAX) + { + CStdString strLog; + strLog.Format("key pressed: %1x", iButton); + m_controller->AddLog(CEC_LOG_DEBUG, strLog.c_str()); + + m_controller->SetCurrentButton((cec_user_control_code) command.parameters[0]); + } + } + break; + case CEC_OPCODE_VENDOR_REMOTE_BUTTON_UP: + m_controller->AddKey(); + break; default: bHandled = false; break;