rendered paste body
[mythtv]
; Switch to menu mode on "*"
; Pass all other digits as they are
exten => key-num,1,GotoIf($["x${CMD}" != "x*"]?return)
exten => key-num,n,Set(MODE=menu)
exten => key-num,n,Set(CMD=none)
exten => key-num,n(return),Return
exten => key-menu,1,GotoIf($["x${CMD}" != "x*"]?translatekey)
exten => key-menu,n,Set(MODE=num)
exten => key-menu,n,Set(CMD=none)
exten => key-menu,n,Return
exten => key-menu,n(translatekey),GotoIf($["x${CMD}" != "x1"]?check2)
exten => key-menu,n,Set(CMD=m)
exten => key-menu,n,Return
exten => key-menu,n(check2),GotoIf($["x${CMD}" != "x2"]?check3)
exten => key-menu,n,Set(CMD=up)
exten => key-menu,n,Return
exten => key-menu,n(check3),GotoIf($["x${CMD}" != "x3"]?check4)
exten => key-menu,n,Set(CMD=escape)
exten => key-menu,n,Return
exten => key-menu,n(check4),GotoIf($["x${CMD}" != "x4"]?check5)
exten => key-menu,n,Set(CMD=left)
exten => key-menu,n,Return
exten => key-menu,n(check5),GotoIf($["x${CMD}" != "x5"]?check6)
exten => key-menu,n,Set(CMD=down)
exten => key-menu,n,Return
exten => key-menu,n(check6),GotoIf($["x${CMD}" != "x6"]?check7)
exten => key-menu,n,Set(CMD=right)
exten => key-menu,n,Return
exten => key-menu,n(check7),GotoIf($["x${CMD}" != "x7"]?check8)
exten => key-menu,n,Set(CMD=escape)
exten => key-menu,n,Return
exten => key-menu,n(check8),GotoIf($["x${CMD}" != "x8"]?check9)
exten => key-menu,n,Set(CMD=escape)
exten => key-menu,n,Return
exten => key-menu,n(check9),GotoIf($["x${CMD}" != "x9"]?check0)
exten => key-menu,n,Set(CMD=escape)
exten => key-menu,n,Return
exten => key-menu,n(check0),GotoIf($["x${CMD}" != "x0"]?return)
exten => key-menu,n,Set(CMD=escape)
exten => key-menu,n(return),Return
exten => key,1,GoSub(key-${MODE}|1) ; Do mode-specific processing
exten => key,n,GotoIf($["x${CMD}" != "xnone"]?checkpound)
exten => key,n,Goto(return)
exten => key,n(checkpound),GotoIf($["x${CMD}" != "x"]?send) ; on "#", CMD will be empty
exten => key,n,Set(CMD=enter)
exten => key,n(send),System(printf \'key ${CMD}\\r\\nquit\\r\\n\' | nc 192.168.1.199 6546)
exten => key,n(return),Return
exten => s,1,Set(MODE=num)
exten => s,n(loop),While(1)
exten => s,n,Read(CMD||1) ; Read a digit from the phone
exten => s,n,GoSub(key|1) ; Run the key extension to process the digit
exten => s,n,EndWhile