自從遇見 HDMI (High Definition Multimedia Interface) 的 CEC (Consumer Electronics Control ) 之後, 就被這個又方便又容易出問題的功能發了很多 bug.
有時候它可以用 device (例如 DVD Player, BD Player, Digital Media Player…等等, 簡稱 box 好了) 的搖控器控制電視, 有時候又反過來是用電視的搖控器控制 box. 雖然它們的目的都是減少使用者拿兩支以上搖控器的不便, 但實作起來卻有很大的差異.
有個規格 (protocol) 叫作 RC pass through. RC (remote pass through) 就是搖控器, pass through 就是控制到另外一台裝置. 例如用電視遙控器去播 box. 規格上並沒有說不能用盒子的遙控器去控制電視, 所以兩個方向都有可能. This feature is used to pass remote control commands received by one device (typically the TV) through to another device in the network.
首先我們把 TV 切到 box 所在的 HDMI port, 然後拿電視的遙控器來控制 box 就可以了. 前提是兩台裝置都支援 RC pass through. 當然, 規格不能保證所有的搖控器鍵值都可以傳給別台裝置. 合法的功能寫在 HDMI 1.4 規格的 table 30.
其實 HDMI 1.3 講得比較簡單易懂. HDMI 1.4 裡面引進了 <feature abort> 的觀念, 遇到某些不支援的 protocol 或是 command 時, 產生的結果也會不一樣. 因此 HDMI 1.4 還要參考的表格是 table 20, 27 和 27 三張. HDMI 1.3 裡面只有一個 table 23 則對應到 HDMI 1.4 的 table 30 而已. HDMI 1.4 又定義了久按TV 遙控器按件不放時, 則每隔 450ms (建議值, 可以定在 200~500 ms) 要重送一次鍵值到 box (反向亦然).
雖然 table 30 裡面功能鍵眾多, 其中只有一部分 (0x60~0x6D) 是 deterministic (決定性的) UI function. 這些按鍵的功能不受到其它條件的影響, 按了就要有正確的反應, 例如 power on, power off 時, 毋須考慮什麼事情正做到一半.
另外一個類似的 protocol 是 device menual control. 同樣地, 看了 HDMI 1.3 的規格就會覺得自己很快懂了. 但是看了 HDMI 1.4 就會覺得好複雜. 它的主要功能就是讓 TV 把 box 的控制面板 (control menu) 叫出來, 這樣就可以真正地操作 box. 否則若是 box 上有什麼特異功能, 光靠 TV 的遙控器也無法做到!
舉個誇張一點的例子, 如果搖控器按"上上下下左左右右","next","previous" 可以叫出某個破解功能, 只用 RC pass through 就很難保證哪些 key 按了 400 ms, 哪些是 600 ms. 在 device menu control 假設可以看到畫面上每個鍵被按到後的反白, 應該就能確定自己按對了. 假如 box 支援虛擬小鍵盤, 也是只有 device menu control 可以輕易使用此功能.
另外, 按照規格上的說法, 它只能單向地由 TV 叫出 box 的 control menu.