亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dvb-dibusb-remote.c

?? h內核
?? C
字號:
/* * dvb-dibusb-remote.c is part of the driver for mobile USB Budget DVB-T devices * based on reference design made by DiBcom (http://www.dibcom.fr/) * * Copyright (C) 2004-5 Patrick Boettcher (patrick.boettcher@desy.de) * * see dvb-dibusb-core.c for more copyright details. * * This file contains functions for handling the event device on the software * side and the remote control on the hardware side. */#include "dvb-dibusb.h"/* Table to map raw key codes to key events.  This should not be hard-wired   into the kernel.  */static const struct { u8 c0, c1, c2; uint32_t key; } rc_keys [] ={	/* Key codes for the little Artec T1/Twinhan/HAMA/ remote. */	{ 0x00, 0xff, 0x16, KEY_POWER },	{ 0x00, 0xff, 0x10, KEY_MUTE },	{ 0x00, 0xff, 0x03, KEY_1 },	{ 0x00, 0xff, 0x01, KEY_2 },	{ 0x00, 0xff, 0x06, KEY_3 },	{ 0x00, 0xff, 0x09, KEY_4 },	{ 0x00, 0xff, 0x1d, KEY_5 },	{ 0x00, 0xff, 0x1f, KEY_6 },	{ 0x00, 0xff, 0x0d, KEY_7 },	{ 0x00, 0xff, 0x19, KEY_8 },	{ 0x00, 0xff, 0x1b, KEY_9 },	{ 0x00, 0xff, 0x15, KEY_0 },	{ 0x00, 0xff, 0x05, KEY_CHANNELUP },	{ 0x00, 0xff, 0x02, KEY_CHANNELDOWN },	{ 0x00, 0xff, 0x1e, KEY_VOLUMEUP },	{ 0x00, 0xff, 0x0a, KEY_VOLUMEDOWN },	{ 0x00, 0xff, 0x11, KEY_RECORD },	{ 0x00, 0xff, 0x17, KEY_FAVORITES }, /* Heart symbol - Channel list. */	{ 0x00, 0xff, 0x14, KEY_PLAY },	{ 0x00, 0xff, 0x1a, KEY_STOP },	{ 0x00, 0xff, 0x40, KEY_REWIND },	{ 0x00, 0xff, 0x12, KEY_FASTFORWARD },	{ 0x00, 0xff, 0x0e, KEY_PREVIOUS }, /* Recall - Previous channel. */	{ 0x00, 0xff, 0x4c, KEY_PAUSE },	{ 0x00, 0xff, 0x4d, KEY_SCREEN }, /* Full screen mode. */	{ 0x00, 0xff, 0x54, KEY_AUDIO }, /* MTS - Switch to secondary audio. */	/* additional keys TwinHan VisionPlus, the Artec seemingly not have */	{ 0x00, 0xff, 0x0c, KEY_CANCEL }, /* Cancel */	{ 0x00, 0xff, 0x1c, KEY_EPG }, /* EPG */	{ 0x00, 0xff, 0x00, KEY_TAB }, /* Tab */	{ 0x00, 0xff, 0x48, KEY_INFO }, /* Preview */	{ 0x00, 0xff, 0x04, KEY_LIST }, /* RecordList */	{ 0x00, 0xff, 0x0f, KEY_TEXT }, /* Teletext */	/* Key codes for the KWorld/ADSTech/JetWay remote. */	{ 0x86, 0x6b, 0x12, KEY_POWER },	{ 0x86, 0x6b, 0x0f, KEY_SELECT }, /* source */	{ 0x86, 0x6b, 0x0c, KEY_UNKNOWN }, /* scan */	{ 0x86, 0x6b, 0x0b, KEY_EPG },	{ 0x86, 0x6b, 0x10, KEY_MUTE },	{ 0x86, 0x6b, 0x01, KEY_1 },	{ 0x86, 0x6b, 0x02, KEY_2 },	{ 0x86, 0x6b, 0x03, KEY_3 },	{ 0x86, 0x6b, 0x04, KEY_4 },	{ 0x86, 0x6b, 0x05, KEY_5 },	{ 0x86, 0x6b, 0x06, KEY_6 },	{ 0x86, 0x6b, 0x07, KEY_7 },	{ 0x86, 0x6b, 0x08, KEY_8 },	{ 0x86, 0x6b, 0x09, KEY_9 },	{ 0x86, 0x6b, 0x0a, KEY_0 },	{ 0x86, 0x6b, 0x18, KEY_ZOOM },	{ 0x86, 0x6b, 0x1c, KEY_UNKNOWN }, /* preview */	{ 0x86, 0x6b, 0x13, KEY_UNKNOWN }, /* snap */	{ 0x86, 0x6b, 0x00, KEY_UNDO },	{ 0x86, 0x6b, 0x1d, KEY_RECORD },	{ 0x86, 0x6b, 0x0d, KEY_STOP },	{ 0x86, 0x6b, 0x0e, KEY_PAUSE },	{ 0x86, 0x6b, 0x16, KEY_PLAY },	{ 0x86, 0x6b, 0x11, KEY_BACK },	{ 0x86, 0x6b, 0x19, KEY_FORWARD },	{ 0x86, 0x6b, 0x14, KEY_UNKNOWN }, /* pip */	{ 0x86, 0x6b, 0x15, KEY_ESC },	{ 0x86, 0x6b, 0x1a, KEY_UP },	{ 0x86, 0x6b, 0x1e, KEY_DOWN },	{ 0x86, 0x6b, 0x1f, KEY_LEFT },	{ 0x86, 0x6b, 0x1b, KEY_RIGHT },};/* * Read the remote control and feed the appropriate event. * NEC protocol is used for remote controls */static int dibusb_read_remote_control(struct usb_dibusb *dib){	u8 b[1] = { DIBUSB_REQ_POLL_REMOTE }, rb[5];	int ret;	int i;	if ((ret = dibusb_readwrite_usb(dib,b,1,rb,5)))		return ret;	switch (rb[0]) {		case DIBUSB_RC_NEC_KEY_PRESSED:			/* rb[1-3] is the actual key, rb[4] is a checksum */			deb_rc("raw key code 0x%02x, 0x%02x, 0x%02x, 0x%02x\n",				rb[1], rb[2], rb[3], rb[4]);			if ((0xff - rb[3]) != rb[4]) {				deb_rc("remote control checksum failed.\n");				break;			}			/* See if we can match the raw key code. */			for (i = 0; i < sizeof(rc_keys)/sizeof(rc_keys[0]); i++) {				if (rc_keys[i].c0 == rb[1] &&					rc_keys[i].c1 == rb[2] &&				    rc_keys[i].c2 == rb[3]) {					dib->rc_input_event = rc_keys[i].key;					deb_rc("Translated key 0x%04x\n", dib->rc_input_event);					/* Signal down and up events for this key. */					input_report_key(&dib->rc_input_dev, dib->rc_input_event, 1);					input_report_key(&dib->rc_input_dev, dib->rc_input_event, 0);					input_sync(&dib->rc_input_dev);					break;				}			}			break;		case DIBUSB_RC_NEC_EMPTY: /* No (more) remote control keys. */			break;		case DIBUSB_RC_NEC_KEY_REPEATED:			/* rb[1]..rb[4] are always zero.*/			/* Repeats often seem to occur so for the moment just ignore this. */			deb_rc("Key repeat\n");			break;		default:			break;	}	return 0;}/* Remote-control poll function - called every dib->rc_query_interval ms to see   whether the remote control has received anything. */static void dibusb_remote_query(void *data){	struct usb_dibusb *dib = (struct usb_dibusb *) data;	/* TODO: need a lock here.  We can simply skip checking for the remote control	   if we're busy. */	dibusb_read_remote_control(dib);	schedule_delayed_work(&dib->rc_query_work,			      msecs_to_jiffies(dib->rc_query_interval));}int dibusb_remote_init(struct usb_dibusb *dib){	int i;	if (dib->dibdev->dev_cl->remote_type == DIBUSB_RC_NO)		return 0;		/* Initialise the remote-control structures.*/	init_input_dev(&dib->rc_input_dev);	dib->rc_input_dev.evbit[0] = BIT(EV_KEY);	dib->rc_input_dev.keycodesize = sizeof(unsigned char);	dib->rc_input_dev.keycodemax = KEY_MAX;	dib->rc_input_dev.name = DRIVER_DESC " remote control";	for (i=0; i<sizeof(rc_keys)/sizeof(rc_keys[0]); i++)		set_bit(rc_keys[i].key, dib->rc_input_dev.keybit);	input_register_device(&dib->rc_input_dev);	dib->rc_input_event = KEY_MAX;	INIT_WORK(&dib->rc_query_work, dibusb_remote_query, dib);	/* Start the remote-control polling. */	if (dib->rc_query_interval < 40)		dib->rc_query_interval = 100; /* default */	info("schedule remote query interval to %d msecs.",dib->rc_query_interval);	schedule_delayed_work(&dib->rc_query_work,msecs_to_jiffies(dib->rc_query_interval));	dib->init_state |= DIBUSB_STATE_REMOTE;		return 0;}int dibusb_remote_exit(struct usb_dibusb *dib){	if (dib->dibdev->dev_cl->remote_type == DIBUSB_RC_NO)		return 0;	if (dib->init_state & DIBUSB_STATE_REMOTE) {		cancel_delayed_work(&dib->rc_query_work);		flush_scheduled_work();		input_unregister_device(&dib->rc_input_dev);	}	dib->init_state &= ~DIBUSB_STATE_REMOTE;	return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色伊人久久综合中文字幕| 久久精品视频一区| 色综合久久综合中文综合网| 国产传媒一区在线| 久久99久久99| 韩国v欧美v日本v亚洲v| 精品一区二区三区在线播放| 久久精品国产亚洲高清剧情介绍| 免费在线观看不卡| 国产福利精品导航| 成人免费三级在线| 91片在线免费观看| 欧美日韩一区二区在线观看视频 | 东方aⅴ免费观看久久av| 国产精品一区二区男女羞羞无遮挡| 精品一区在线看| 岛国av在线一区| 日本韩国欧美一区| 在线成人免费观看| 久久亚洲一区二区三区明星换脸| 久久久久久亚洲综合影院红桃| 国产日韩欧美不卡| 一区精品在线播放| 爽爽淫人综合网网站| 麻豆精品一区二区综合av| 国产精品99久久久久久久女警| 成人听书哪个软件好| 欧美无砖专区一中文字| 精品国产1区2区3区| 中文字幕一区二区视频| 亚洲国产精品久久艾草纯爱| 免费不卡在线视频| av在线免费不卡| 欧美老年两性高潮| 国产日韩欧美电影| 亚洲成人免费在线| 高清shemale亚洲人妖| 欧美体内she精高潮| 精品国产乱码久久久久久浪潮| 亚洲欧美综合在线精品| 奇米综合一区二区三区精品视频| 成人免费视频国产在线观看| 欧美高清视频一二三区| 亚洲日韩欧美一区二区在线| 丝瓜av网站精品一区二区| 99久久99久久久精品齐齐| 日韩一级片网址| 亚洲综合清纯丝袜自拍| 国产sm精品调教视频网站| 欧美一区二区三区四区五区 | 成人高清av在线| 宅男在线国产精品| 亚洲欧洲国产日本综合| 九九久久精品视频| 欧美日韩一区三区四区| 日韩一区在线播放| 国产美女在线精品| 日韩视频不卡中文| 亚洲va韩国va欧美va| 91搞黄在线观看| 亚洲欧美一区二区三区极速播放| 国产精品一区二区免费不卡| 精品美女被调教视频大全网站| 亚洲高清三级视频| 色屁屁一区二区| 中文字幕一区在线| 成人av网在线| 国产精品久久久久久妇女6080| 国内精品视频666| 精品福利一区二区三区免费视频| 天天色图综合网| 欧美区在线观看| 香蕉影视欧美成人| 欧美妇女性影城| 首页亚洲欧美制服丝腿| 欧美日韩精品二区第二页| 亚洲成av人片www| 欧美日韩一区二区三区四区| 亚洲一区二区三区四区五区黄| 色综合网色综合| 亚洲色图一区二区三区| 色婷婷精品久久二区二区蜜臀av| 亚洲色图一区二区| 欧美日韩免费一区二区三区视频| 亚洲自拍与偷拍| 宅男噜噜噜66一区二区66| 蜜臀久久99精品久久久久宅男| 这里只有精品视频在线观看| 美女一区二区在线观看| 久久久夜色精品亚洲| 国产成人欧美日韩在线电影| 国产精品久久久久久久久果冻传媒| 成人免费不卡视频| 一区二区三区影院| 欧美放荡的少妇| 精品无人码麻豆乱码1区2区| 国产三级三级三级精品8ⅰ区| 不卡一区二区三区四区| 亚洲综合在线免费观看| 91精品国产综合久久精品麻豆| 捆绑调教一区二区三区| 国产日韩亚洲欧美综合| 一本一道综合狠狠老| 天天操天天干天天综合网| 精品国产区一区| 91伊人久久大香线蕉| 日韩国产成人精品| 国产精品国产自产拍高清av| 在线精品视频一区二区三四| 麻豆一区二区99久久久久| 中文字幕乱码亚洲精品一区| 在线观看成人小视频| 捆绑紧缚一区二区三区视频| 国产精品成人在线观看| 91麻豆精品国产91久久久 | 国产精品福利在线播放| 欧美日韩黄视频| 国产成人综合在线| 亚洲国产成人av好男人在线观看| 精品日韩一区二区三区免费视频| 99re成人精品视频| 激情文学综合丁香| 亚洲小说欧美激情另类| 国产精品五月天| 日韩精品在线网站| 在线国产亚洲欧美| 成人午夜视频网站| 毛片av一区二区| 亚洲福利一二三区| 国产精品不卡一区| 久久奇米777| 5月丁香婷婷综合| 91官网在线观看| av毛片久久久久**hd| 狠狠色丁香婷婷综合| 视频一区二区三区中文字幕| 《视频一区视频二区| 国产亚洲精品资源在线26u| 欧美一区二区三区色| 欧美亚洲日本国产| 91丝袜美腿高跟国产极品老师| 国产精品亚洲一区二区三区在线 | 久久国内精品自在自线400部| 夜夜操天天操亚洲| 亚洲欧洲成人av每日更新| 国产午夜亚洲精品羞羞网站| 精品国产乱码久久久久久老虎 | 国产日韩欧美一区二区三区综合| 欧美一区二区三区啪啪| 欧美性生活大片视频| 欧美优质美女网站| 91久久免费观看| 色天天综合久久久久综合片| 97久久精品人人做人人爽| 成人免费观看av| 福利视频网站一区二区三区| 国产东北露脸精品视频| 国产成人免费在线观看不卡| 国产suv精品一区二区883| 国产精品99久久久久久久女警 | 久久午夜老司机| 亚洲精品在线免费播放| 久久久久久久综合日本| 国产午夜精品福利| 中文欧美字幕免费| 亚洲色图在线视频| 亚洲国产wwwccc36天堂| 日韩二区在线观看| 久久国产尿小便嘘嘘尿| 国产黑丝在线一区二区三区| 成人在线视频首页| 在线视频一区二区三| 欧美日本国产一区| 久久丝袜美腿综合| 最好看的中文字幕久久| 亚洲第一激情av| 蜜乳av一区二区| 成人av免费在线播放| 在线观看一区二区精品视频| 欧美精品电影在线播放| 国产亚洲综合在线| 亚洲精品日韩一| 免费不卡在线视频| 成人av综合一区| 在线不卡中文字幕播放| 国产亚洲va综合人人澡精品 | 国产很黄免费观看久久| 一道本成人在线| 欧美不卡在线视频| 亚洲欧洲无码一区二区三区| 午夜精品久久久久久久久久久 | 国产精品12区| 欧洲生活片亚洲生活在线观看| 在线成人av影院| 1区2区3区国产精品| 日韩电影免费在线| 99久久夜色精品国产网站| 51久久夜色精品国产麻豆| 国产精品久线在线观看| 精品一区精品二区高清|