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

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

?? ir-common.c

?? 電視卡驅動源碼!適用于FI1256/FI1216ME等PHILIPS高頻頭
?? C
字號:
/*
 * some common structs and functions to handle infrared remotes via
 * input layer ...
 *
 * (c) 2003 Gerd Knorr <kraxel@bytesex.org> [SuSE Labs]
 *
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

#include <linux/module.h>
#include <linux/version.h>

#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
#include "ir-common.h"
#else
#include <media/ir-common.h>
#endif

/* -------------------------------------------------------------------------- */

MODULE_AUTHOR("Gerd Knorr <kraxel@bytesex.org> [SuSE Labs]");
MODULE_LICENSE("GPL");

static int repeat = 1;
MODULE_PARM(repeat,"i");
MODULE_PARM_DESC(repeat,"auto-repeat for IR keys (default: on)");

static int debug = 0;    /* debug level (0,1,2) */
MODULE_PARM(debug,"i");

#define dprintk(level, fmt, arg...)	if (debug >= level) \
	printk(KERN_DEBUG fmt , ## arg)

/* -------------------------------------------------------------------------- */

/* generic RC5 keytable                                          */
/* see http://users.pandora.be/nenya/electronics/rc5/codes00.htm */
IR_KEYTAB_TYPE ir_codes_rc5_tv[IR_KEYTAB_SIZE] = {
	[ 0x00 ] = KEY_KP0,             // 0
	[ 0x01 ] = KEY_KP1,             // 1
	[ 0x02 ] = KEY_KP2,             // 2
	[ 0x03 ] = KEY_KP3,             // 3
	[ 0x04 ] = KEY_KP4,             // 4
	[ 0x05 ] = KEY_KP5,             // 5
	[ 0x06 ] = KEY_KP6,             // 6
	[ 0x07 ] = KEY_KP7,             // 7
	[ 0x08 ] = KEY_KP8,             // 8
	[ 0x09 ] = KEY_KP9,             // 9

	[ 0x0b ] = KEY_CHANNEL,         // channel / program (japan: 11)
	[ 0x0c ] = KEY_POWER,           // standby
	[ 0x0d ] = KEY_MUTE,            // mute / demute
	[ 0x0f ] = KEY_TV,              // display
	[ 0x10 ] = KEY_VOLUMEUP,        // volume +
	[ 0x11 ] = KEY_VOLUMEDOWN,      // volume -
	[ 0x12 ] = KEY_BRIGHTNESSUP,    // brightness +
	[ 0x13 ] = KEY_BRIGHTNESSDOWN,  // brightness -
	[ 0x1e ] = KEY_SEARCH,          // search +
	[ 0x20 ] = KEY_CHANNELUP,       // channel / program +
	[ 0x21 ] = KEY_CHANNELDOWN,     // channel / program -
	[ 0x22 ] = KEY_CHANNEL,         // alt / channel
	[ 0x23 ] = KEY_LANGUAGE,        // 1st / 2nd language
	[ 0x26 ] = KEY_SLEEP,           // sleeptimer
	[ 0x2e ] = KEY_MENU,            // 2nd controls (USA: menu)
	[ 0x30 ] = KEY_PAUSE,           // pause
	[ 0x32 ] = KEY_REWIND,          // rewind
	[ 0x33 ] = KEY_GOTO,            // go to
	[ 0x35 ] = KEY_PLAY,            // play
	[ 0x36 ] = KEY_STOP,            // stop
	[ 0x37 ] = KEY_RECORD,          // recording

#if 0 /* FIXME */
	[ 0x0a ] = KEY_RESERVED,        // 1/2/3 digits (japan: 10)
	[ 0x0e ] = KEY_RESERVED,        // P.P. (personal preference)
	[ 0x14 ] = KEY_RESERVED,        // colour saturation +
	[ 0x15 ] = KEY_RESERVED,        // colour saturation -
	[ 0x16 ] = KEY_RESERVED,        // bass +
	[ 0x17 ] = KEY_RESERVED,        // bass -
	[ 0x18 ] = KEY_RESERVED,        // treble +
	[ 0x19 ] = KEY_RESERVED,        // treble -
	[ 0x1a ] = KEY_RESERVED,        // balance right
	[ 0x1b ] = KEY_RESERVED,        // balance left
	[ 0x1c ] = KEY_RESERVED,        // contrast +
	[ 0x1d ] = KEY_RESERVED,        // contrast -
	[ 0x1f ] = KEY_RESERVED,        // tint/hue +
	[ 0x24 ] = KEY_RESERVED,        // spacial stereo on/off
	[ 0x25 ] = KEY_RESERVED,        // mono / stereo (USA)
	[ 0x27 ] = KEY_RESERVED,        // tint / hue -
	[ 0x28 ] = KEY_RESERVED,        // RF switch/PIP select
	[ 0x29 ] = KEY_RESERVED,        // vote
	[ 0x2a ] = KEY_RESERVED,        // timed page/channel clck
	[ 0x2b ] = KEY_RESERVED,        // increment (USA)
	[ 0x2c ] = KEY_RESERVED,        // decrement (USA)
	[ 0x2d ] = KEY_RESERVED,        // 
	[ 0x2f ] = KEY_RESERVED,        // PIP shift
	[ 0x31 ] = KEY_RESERVED,        // erase
	[ 0x34 ] = KEY_RESERVED,        // wind
	[ 0x38 ] = KEY_RESERVED,        // external 1
	[ 0x39 ] = KEY_RESERVED,        // external 2
	[ 0x3a ] = KEY_RESERVED,        // PIP display mode
	[ 0x3b ] = KEY_RESERVED,        // view data mode / advance
	[ 0x3c ] = KEY_RESERVED,        // teletext submode (Japan: 12)
	[ 0x3d ] = KEY_RESERVED,        // system standby
	[ 0x3e ] = KEY_RESERVED,        // crispener on/off
	[ 0x3f ] = KEY_RESERVED,        // system select
#endif
};
EXPORT_SYMBOL_GPL(ir_codes_rc5_tv);

/* empty keytable, can be used as placeholder for not-yet created keytables */
IR_KEYTAB_TYPE ir_codes_empty[IR_KEYTAB_SIZE] = {
	[ 42 ] = KEY_COFFEE,
};
EXPORT_SYMBOL_GPL(ir_codes_empty);

/* -------------------------------------------------------------------------- */

static void ir_input_key_event(struct input_dev *dev, struct ir_input_state *ir)
{
	if (KEY_RESERVED == ir->keycode) {
		printk(KERN_INFO "%s: unknown key: key=0x%02x raw=0x%02x down=%d\n",
		       dev->name,ir->ir_key,ir->ir_raw,ir->keypressed);
		return;
	}
	dprintk(1,"%s: key event code=%d down=%d\n",
		dev->name,ir->keycode,ir->keypressed);
	input_report_key(dev,ir->keycode,ir->keypressed);
#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)
        input_sync(dev);
#endif
}

/* -------------------------------------------------------------------------- */

void ir_input_init(struct input_dev *dev, struct ir_input_state *ir,
		   int ir_type, IR_KEYTAB_TYPE *ir_codes)
{
	int i;
	
	ir->ir_type = ir_type;
	if (ir_codes)
		memcpy(ir->ir_codes, ir_codes, sizeof(ir->ir_codes));

#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)
        init_input_dev(dev);
#endif
	dev->keycode     = ir->ir_codes;
	dev->keycodesize = sizeof(IR_KEYTAB_TYPE);
	dev->keycodemax  = IR_KEYTAB_SIZE;
	for (i = 0; i < IR_KEYTAB_SIZE; i++)
		set_bit(ir->ir_codes[i], dev->keybit);
	clear_bit(0, dev->keybit);

	set_bit(EV_KEY, dev->evbit);
	if (repeat)
		set_bit(EV_REP, dev->evbit);
}

void ir_input_nokey(struct input_dev *dev, struct ir_input_state *ir)
{
	if (ir->keypressed) {
		ir->keypressed = 0;
		ir_input_key_event(dev,ir);
	}
}

void ir_input_keydown(struct input_dev *dev, struct ir_input_state *ir,
		      u32 ir_key, u32 ir_raw)
{
	u32 keycode = IR_KEYCODE(ir->ir_codes, ir_key);
	
	if (ir->keypressed && ir->keycode != keycode) {
		ir->keypressed = 0;
		ir_input_key_event(dev,ir);
	}
	if (!ir->keypressed) {
		ir->ir_key  = ir_key;
		ir->ir_raw  = ir_raw;
		ir->keycode = keycode;
		ir->keypressed = 1;
		ir_input_key_event(dev,ir);
	}
#if 0
	/* maybe do something like this ??? */
	input_event(a, EV_IR, ir->ir_type, ir->ir_raw);
#endif
}

u32 ir_extract_bits(u32 data, u32 mask)
{
	int mbit, vbit;
	u32 value;

	value = 0;
	vbit  = 0;
	for (mbit = 0; mbit < 32; mbit++) {
		if (!(mask & ((u32)1 << mbit)))
			continue;
		if (data & ((u32)1 << mbit))
			value |= (1 << vbit);
		vbit++;
	}
	return value;
}

EXPORT_SYMBOL_GPL(ir_input_init);
EXPORT_SYMBOL_GPL(ir_input_nokey);
EXPORT_SYMBOL_GPL(ir_input_keydown);
EXPORT_SYMBOL_GPL(ir_extract_bits);

/*
 * Local variables:
 * c-basic-offset: 8
 * End:
 */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
93久久精品日日躁夜夜躁欧美| 韩国女主播一区| 欧美高清在线一区| 久久―日本道色综合久久| 91精品国产欧美一区二区18| 欧美人动与zoxxxx乱| 欧美老肥妇做.爰bbww| 欧美人成免费网站| 日韩美女视频一区二区在线观看| 欧美一区二区三区播放老司机| 欧美群妇大交群的观看方式| 欧美另类变人与禽xxxxx| 日韩视频不卡中文| 26uuu另类欧美亚洲曰本| 久久天天做天天爱综合色| 久久精品视频网| 国产精品传媒视频| 亚洲资源中文字幕| 亚洲成av人综合在线观看| 亚洲成年人影院| 久久国产精品色婷婷| 国产精品亚洲一区二区三区在线| 成人av网址在线| 欧美中文一区二区三区| 欧美日韩精品免费观看视频| 制服丝袜亚洲色图| 国产亚洲一区字幕| 一区二区三区在线免费| 亚瑟在线精品视频| 韩国欧美国产一区| 欧美性videosxxxxx| 日韩欧美高清一区| 国产精品拍天天在线| 亚洲成人动漫精品| 风流少妇一区二区| 欧美日韩在线观看一区二区 | 蜜臀久久99精品久久久久久9| 美女久久久精品| 99精品偷自拍| 在线播放日韩导航| 国产精品麻豆网站| 日韩精品电影一区亚洲| 懂色av一区二区夜夜嗨| 91精品在线观看入口| 国产精品美女久久久久久| 一区二区激情小说| 国产91露脸合集magnet| 欧美午夜寂寞影院| 国产精品国产三级国产有无不卡 | 欧美高清在线精品一区| 婷婷综合五月天| www.亚洲色图.com| 久久综合国产精品| 日韩精品三区四区| 91久久精品一区二区三| 国产三级一区二区| 秋霞午夜鲁丝一区二区老狼| 91激情五月电影| 国产日韩欧美综合在线| 麻豆国产精品官网| 欧美乱妇15p| 亚洲成人在线网站| 欧洲一区二区三区在线| 国产精品久久久久精k8| 国产不卡高清在线观看视频| 日韩一级二级三级| 午夜精品成人在线视频| 欧美在线视频不卡| 亚洲一级电影视频| 91久久精品一区二区二区| 最新国产精品久久精品| 国产成人精品一区二区三区四区 | 综合久久一区二区三区| 国产成人aaa| 欧美精品一区视频| 国产剧情一区二区三区| 久久日韩精品一区二区五区| 韩国精品在线观看| 久久蜜臀中文字幕| 国产在线精品免费av| 久久新电视剧免费观看| 国产一区日韩二区欧美三区| 日韩精品在线一区| 久久99蜜桃精品| 久久蜜桃av一区二区天堂| 国产不卡免费视频| 亚洲男人的天堂一区二区| 91网站在线播放| 亚洲高清免费在线| 欧美另类变人与禽xxxxx| 青草国产精品久久久久久| 91精品国产欧美日韩| 蜜桃av一区二区在线观看| 精品福利一区二区三区免费视频| 狠狠v欧美v日韩v亚洲ⅴ| 久久精品日产第一区二区三区高清版| 国产传媒久久文化传媒| 国产精品久久久久aaaa| 色妹子一区二区| 视频一区视频二区中文字幕| 欧美videos中文字幕| 成人小视频免费观看| 亚洲欧洲精品一区二区精品久久久| 91麻豆国产自产在线观看| 三级在线观看一区二区| 久久婷婷成人综合色| 99国产精品99久久久久久| 亚洲美女视频在线| 欧美一级理论片| 成人精品高清在线| 亚洲成人综合视频| 国产婷婷色一区二区三区四区| 91免费版pro下载短视频| 午夜精品久久久久久久99樱桃| xvideos.蜜桃一区二区| 91免费在线视频观看| 久久精品国产久精国产爱| 亚洲色图丝袜美腿| 精品国产亚洲在线| 日本精品一区二区三区四区的功能| 天天操天天干天天综合网| 国产精品入口麻豆原神| 91精品国产综合久久精品麻豆| 成人黄色小视频| 免费欧美在线视频| 亚洲精品成人精品456| 久久亚洲私人国产精品va媚药| 欧美在线观看18| 国产成人av一区二区三区在线观看| 亚洲午夜影视影院在线观看| 国产情人综合久久777777| 欧美一区二区三区视频在线观看| 不卡av在线网| 精品一区二区三区免费毛片爱| 亚洲一区二区三区激情| 国产欧美视频一区二区三区| 91精品国模一区二区三区| 91视视频在线直接观看在线看网页在线看| 免费在线观看日韩欧美| 亚洲一区二区三区四区在线免费观看 | 粉嫩av亚洲一区二区图片| 天堂精品中文字幕在线| 亚洲精品乱码久久久久久黑人 | 成人免费的视频| 国产在线不卡视频| 水野朝阳av一区二区三区| 亚洲日本欧美天堂| 国产精品久久久久久久久免费樱桃 | 91丨九色丨黑人外教| 国产精品亚洲人在线观看| 国产原创一区二区三区| 蜜桃视频第一区免费观看| 日韩精品一区第一页| 亚洲va在线va天堂| 亚洲aⅴ怡春院| 亚洲va欧美va天堂v国产综合| 一区二区三区欧美久久| 一区二区三区资源| 亚洲高清不卡在线| 亚洲成人av免费| 日产国产高清一区二区三区 | 国产精品女主播av| 中文字幕av一区二区三区免费看 | 欧美最猛黑人xxxxx猛交| 91理论电影在线观看| 欧美影院一区二区| 67194成人在线观看| 日韩精品影音先锋| 国产日产欧美一区二区三区| 日本一区二区三区高清不卡| 国产精品国模大尺度视频| 一区二区三区日韩精品| 午夜婷婷国产麻豆精品| 日本欧美一区二区在线观看| 韩国av一区二区三区| 成人美女视频在线看| 欧美性感一类影片在线播放| 欧美一级欧美一级在线播放| 精品88久久久久88久久久| 中文字幕欧美国产| 亚洲自拍偷拍网站| 久久国产成人午夜av影院| 风间由美性色一区二区三区| 91麻豆国产在线观看| 欧美一区二区三区免费视频| 国产午夜亚洲精品理论片色戒| 中文字幕亚洲一区二区av在线| 亚洲午夜视频在线| 国产美女久久久久| 欧美性猛片xxxx免费看久爱| 日韩欧美成人午夜| 亚洲人成亚洲人成在线观看图片| 亚洲成av人影院在线观看网| 国产主播一区二区| 91丝袜美腿高跟国产极品老师| 欧美日韩视频第一区| 国产欧美日韩三级| 日韩精品电影在线| 成人精品亚洲人成在线| 欧美日韩国产123区|