--- /dev/null
+#ifndef __WINTV_H__
+#define __WINTV_H__
+// as of 2020/01/06 using kernel version 5.3.16
+// a patch is needed for: drivers/media/usb/em28xx/em28xx-rc.ko
+// prototype in thirdparty/src/em28xx-input.patch1
+//#define HAVE_WINTV
+#ifdef HAVE_WINTV
+
+#include "remotecontrol.h"
+#include "thread.h"
+
+#define WTV_OK 0x0160
+#define WTV_LT 0x0069
+#define WTV_UP 0x0067
+#define WTV_RT 0x006a
+#define WTV_DN 0x006c
+#define WTV_HOME 0x0162
+#define WTV_BACK 0x00ae
+#define WTV_MENU 0x008b
+#define WTV_TV 0x0179
+#define WTV_POWER 0x0074
+#define WTV_VOLUP 0x0073
+#define WTV_VOLDN 0x0072
+#define WTV_CH_UP 0x0192
+#define WTV_CH_DN 0x0193
+#define WTV_1 0x0201
+#define WTV_2 0x0202
+#define WTV_3 0x0203
+#define WTV_4 0x0204
+#define WTV_5 0x0205
+#define WTV_6 0x0206
+#define WTV_7 0x0207
+#define WTV_8 0x0208
+#define WTV_9 0x0209
+#define WTV_TEXT 0x0184
+#define WTV_0 0x0200
+#define WTV_CC 0x0172
+#define WTV_BOX 0x0080
+#define WTV_START 0x0195
+#define WTV_REV 0x00a8
+#define WTV_STOP 0x0077
+#define WTV_PLAY 0x00cf
+#define WTV_FWD 0x00d0
+#define WTV_END 0x0197
+#define WTV_MUTE 0x0071
+#define WTV_PREV 0x019c
+#define WTV_RED 0x00a7
+
+struct input_event;
+
+class WinTV : public Thread
+{
+public:
+ WinTV(MWindow *mwindow, int ifd);
+ ~WinTV();
+
+ void stop();
+ void start();
+ static int open_usb_input(int vendor, int product, int &version);
+ static WinTV *probe(MWindow *mwindow);
+ void run();
+ void handle_event();
+ int check_menu_keys(int code);
+ virtual int process_code() { return 1; }
+
+ MWindow *mwindow;
+ input_event *ev;
+ int done, ifd;
+ int last_code, code;
+};
+
+class WinTVCWindowHandler : public RemoteHandler
+{
+public:
+ WinTVCWindowHandler(WinTV *wintv, RemoteControl *remote_control);
+ int wintv_process_code(int code);
+ int process_key(int key);
+
+ WinTV *wintv;
+};
+
+class WinTVRecordHandler : public RemoteHandler
+{
+public:
+ WinTVRecordHandler(WinTV *wintv, RemoteControl *remote_control);
+ int wintv_process_code(int code);
+ int process_key(int key);
+
+ WinTV *wintv;
+};
+
+#endif
+#endif