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

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

?? mouse.c

?? Linux2.4.20針對三星公司的s3c2440內核基礎上的一些設備驅動代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * mouse_fd/mouse.c * * Copyright (c) 2000, 2001, 2002 Lineo * Copyright (c) 2001 Hewlett Packard * * By:  *      Stuart Lynne <sl@lineo.com>,  *      Tom Rushworth <tbr@lineo.com>,  *      Bruce Balden <balden@lineo.com> * * Copyright (C) 2002 Toshiba Corporation * * Changes Copyright (c) 2003 MontaVista Software, Inc. * * 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., 675 Mass Ave, Cambridge, MA 02139, USA. * *//* * Usage: *	move pointer to right(10) and bottom(20) *		echo "0 10 20" > /proc/driver/mouse_fd *	move pointer to left(10) and top(20) *		echo "0 246 236" > /proc/driver/mouse_fd *	press button 1 *		echo "1 0 00" > /proc/driver/mouse_fd *	press button 2 *		echo "2 0 00" > /proc/driver/mouse_fd *	press button 3 *		echo "4 0 00" > /proc/driver/mouse_fd *	release buttons *		echo "0 0 00" > /proc/driver/mouse_fd */#include <linux/config.h>#include <linux/module.h>#include "../usbd-export.h"#include "../usbd-build.h"#include "../usbd-module.h"MODULE_AUTHOR("sl@lineo.com, tbr@lineo.com, TOSHIBA Corporation");MODULE_LICENSE("GPL");MODULE_DESCRIPTION("USB Device Mouse Function");USBD_MODULE_INFO("mouse_fd 0.1-beta");#ifndef MODULE#undef GET_USE_COUNT#define GET_USE_COUNT(foo) 1#endif#include <linux/init.h>#include <linux/kernel.h>#include <linux/list.h>#include <asm/uaccess.h>#include <linux/netdevice.h>#include <linux/smp_lock.h>#include <linux/ctype.h>#include <linux/timer.h>#include <linux/string.h>#include <linux/proc_fs.h>#include "../usbd.h"#include "../usbd-func.h"#include "../usbd-bus.h"#include "../usbd-debug.h"#include "../usbd-inline.h"#include "../usbd-arch.h"#define MOUSE_PACKET_SIZE 3#define MOUSE_PROC_NAME	"driver/mouse_fd"#if !defined (CONFIG_USBD_VENDORID) && !defined(CONFIG_USBD_MOUSE_VENDORID)        #error No Vendor ID#endif#if !defined (CONFIG_USBD_PRODUCTID) && !defined(CONFIG_USBD_MOUSE_PRODUCTID)        #error No Product ID#endif#if CONFIG_USBD_MOUSE_VENDORID        #undef CONFIG_USBD_VENDORID        #define CONFIG_USBD_VENDORID CONFIG_USBD_MOUSE_VENDORID#endif#if CONFIG_USBD_MOUSE_PRODUCTID        #undef CONFIG_USBD_PRODUCTID        #define CONFIG_USBD_PRODUCTID CONFIG_USBD_MOUSE_PRODUCTID#endif#ifndef CONFIG_USBD_SERIAL_NUMBER_STR        #define CONFIG_USBD_SERIAL_NUMBER_STR           ""#endif#ifdef CONFIG_USBD_SELFPOWERED        #define BMATTRIBUTE BMATTRIBUTE_RESERVED | BMATTRIBUTE_SELF_POWERED        #define BMAXPOWER 0#else        #define BMATTRIBUTE BMATTRIBUTE_RESERVED        #define BMAXPOWER CONFIG_USBD_MAXPOWER#endif/* * setup some default values for pktsizes and endpoint addresses. */#ifndef CONFIG_USBD_MOUSE_INT_PKTSIZE        #define CONFIG_USBD_MOUSE_INT_PKTSIZE             16#endif#ifndef CONFIG_USBD_MOUSE_INT_ENDPOINT    #define CONFIG_USBD_MOUSE_INT_ENDPOINT                3#endif/* * check for architecture specific endpoint configurations */#if     defined(ABS_INT_ADDR)         #warning        #warning USING ABS ENDPOINT INT ADDRESS        #undef CONFIG_USBD_MOUSE_INT_ENDPOINT         #if     ABS_INT_ADDR                #define CONFIG_USBD_MOUSE_INT_ENDPOINT            ABS_INT_ADDR        #endif#elif   defined(MAX_INT_ADDR) && defined(CONFIG_USBD_MOUSE_INT_ENDPOINT) && (CONFIG_USBD_MOUSE_INT_ENDPOINT > MAX_INT_ADDR)        #warning        #warning USING DEFAULT ENDPOINT INT ADDRESS        #undef CONFIG_USBD_MOUSE_INT_ENDPOINT         #define CONFIG_USBD_MOUSE_INT_ENDPOINT            DFL_INT_ADDR#endif#if     defined(MAX_INT_PKTSIZE) && defined(CONFIG_USBD_MOUSE_INT_PKTSIZE) && CONFIG_USBD_MOUSE_INT_PKTSIZE > MAX_INT_PKTSIZE        #warning        #warning OVERIDING ENDPOINT INT PKTSIZE        #undef CONFIG_USBD_MOUSE_INT_PKTSIZE        #define CONFIG_USBD_MOUSE_INT_PKTSIZE             MAX_INT_PKTSIZE#endifstruct usb_mouse_private {    struct usb_device_instance *device;    spinlock_t lock;    __u8 data[MOUSE_PACKET_SIZE];    int data_valid;    int duration;};/* Module Parameters ************************************************************************* */static char *dbg = NULL;static u32 vendor_id;static u32 product_id;MODULE_PARM(dbg, "s");MODULE_PARM(vendor_id, "i");MODULE_PARM(product_id, "i");MODULE_PARM_DESC(dbg, "USB Device Debug options");MODULE_PARM_DESC(vendor_id, "USB Device Vendor ID");MODULE_PARM_DESC(product_id, "USB Device Product ID");/* Debug switches (module parameter "dbg=...") *********************************************** */extern int dbgflg_usbdfd_init;int      dbgflg_usbdfd_ep0;int      dbgflg_usbdfd_usbe;int      dbgflg_usbdfd_tx;static debug_option dbg_table[] = {    {&dbgflg_usbdfd_init,NULL,"init","initialization and termination"},    {&dbgflg_usbdfd_ep0,NULL,"ep0","End Point 0 (setup) packet handling"},    {&dbgflg_usbdfd_usbe,NULL,"usbe","USB events"},    {&dbgflg_usbdfd_tx,NULL,"tx","transmit (to host)"},    {NULL,NULL,NULL,NULL}};#define dbg_init(lvl,fmt,args...) dbgPRINT(dbgflg_usbdfd_init,lvl,fmt,##args)#define dbg_ep0(lvl,fmt,args...) dbgPRINT(dbgflg_usbdfd_ep0,lvl,fmt,##args)#define dbg_usbe(lvl,fmt,args...) dbgPRINT(dbgflg_usbdfd_usbe,lvl,fmt,##args)#define dbg_tx(lvl,fmt,args...) dbgPRINT(dbgflg_usbdfd_tx,lvl,fmt,##args)/* ******************************************************************************************* *//* HID Class descriptions  */static struct usb_endpoint_description mouse_default[] = {    { bEndpointAddress: CONFIG_USBD_MOUSE_INT_ENDPOINT,        bmAttributes: INTERRUPT,        wMaxPacketSize: CONFIG_USBD_MOUSE_INT_PKTSIZE,        bInterval: 0x0a, /* 10ms */        direction: IN,        transferSize: MOUSE_PACKET_SIZE, },};/* HID Class descriptions *//* c.f. HID E.10 Report Descriptor (Mouse) */static __u8 mouse_report_desc[] = {    0x05, 0x01,			// USAGE_PAGE (Generic Desktop)    0x09, 0x02,			// USAGE (Mouse)    0xa1, 0x01,			// COLLECTION (Application)    0x09, 0x01,			//   USAGE (Pointer)    0xa1, 0x00,			//   COLLECTION (Physical)    0x05, 0x09,			//     USAGE_PAGE (Button)    0x19, 0x01,			//     USAGE_MINIMUM (Button 1)    0x29, 0x03,			//     USAGE_MAXIMUM (Button 3)    0x15, 0x00,			//     LOGICAL_MINIMUM (0)    0x25, 0x01,			//     LOGICAL_MAXIMUM (1)    0x95, 0x03,			//     REPORT_COUNT (3)    0x75, 0x01,			//     REPORT_SIZE (1)    0x81, 0x02,			//     INPUT (Data,Variable,Absolute)    0x95, 0x01,			//     REPORT_COUNT (1)    0x75, 0x05,			//     REPORT_SIZE (5)    0x81, 0x01,			//     INPUT (Cnstant)    0x05, 0x01,			//     USAGE_PAGE (Generic Desktop)    0x09, 0x30,			//     USAGE (X)    0x09, 0x31,			//     USAGE (Y)    0x15, 0x81,			//     LOGICAL_MINIMUM (-127)    0x25, 0x7f,			//     LOGICAL_MAXIMUM (127)    0x75, 0x08,			//     REPORT_SIZE (8)    0x95, 0x02,			//     REPORT_COUNT (2)    0x81, 0x06,			//     INPUT (Data,Variable,Relative)    0xc0,			//   END_COLLECTION    0xc0			// END_COLLECTION};static struct usb_class_description mouse_class[] = {    { USB_DT_HID, 0, 0, { hid: {	bcdCDC: CLASS_HID_BCD_VERSION,	bCountryCode: 0,	bDescriptorType: USB_DT_REPORT,	wDescriptorLength: sizeof(mouse_report_desc),	reportDescriptor: mouse_report_desc } }}, };/* Data Interface Alternate description(s) */static __devinitdata struct usb_alternate_description mouse_data_alternate_descriptions[] = {    {   iInterface: "Simple Mouse Data Interface - Int mode",         bAlternateSetting: 0,	classes: sizeof(mouse_class)/sizeof(struct usb_class_description),	class_list: mouse_class,        endpoints: sizeof(mouse_default)/sizeof(struct usb_endpoint_description),        endpoint_list: mouse_default, },};/* Interface description(s) */static __devinitdata struct usb_interface_description mouse_interfaces[] = {    {   iInterface: "Simple Mouse Data Interface",         bInterfaceClass: USB_CLASS_HID,        bInterfaceSubClass: 0x01, /* Keyboard/Mouse */        bInterfaceProtocol: 0x02, /* Mouse:2 */        alternates: sizeof(mouse_data_alternate_descriptions)/sizeof(struct usb_alternate_description),        alternate_list: mouse_data_alternate_descriptions, },};/* Configuration description(s) */struct __devinitdata usb_configuration_description mouse_description[] = {    {   iConfiguration: "USB Simple Mouse Configuration",         bmAttributes: BMATTRIBUTE,        bMaxPower: BMAXPOWER,        interfaces: sizeof(mouse_interfaces)/sizeof(struct usb_interface_description),        interface_list: mouse_interfaces, },};/* Device Description */struct __devinitdata usb_device_description mouse_device_description = {    bDeviceClass:       0,     bDeviceSubClass:    0,    bDeviceProtocol:    0,    idVendor:           CONFIG_USBD_VENDORID,    idProduct:          CONFIG_USBD_PRODUCTID,    iManufacturer:      CONFIG_USBD_MANUFACTURER,    iProduct:           CONFIG_USBD_PRODUCT_NAME,    iSerialNumber:      CONFIG_USBD_SERIAL_NUMBER_STR,};static int mouse_send(struct usb_mouse_private *mouse_private){    int port = 0; // XXX compound device    struct urb *urb;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合久久88色综合天天6| 一区二区在线免费观看| 欧美在线|欧美| 国产精品 欧美精品| 亚洲不卡av一区二区三区| 国产精品色婷婷久久58| 国产视频在线观看一区二区三区| 精品久久久久久无| 精品国产123| 精品国产91亚洲一区二区三区婷婷| 欧美日韩国产综合久久| 欧洲av在线精品| 欧美精品在线一区二区| 欧美三级一区二区| 欧洲视频一区二区| 色综合一个色综合亚洲| 欧美在线观看禁18| 欧美在线你懂得| 91精品在线观看入口| 日韩精品一区在线| 久久久久久一二三区| 国产视频视频一区| 国产人成一区二区三区影院| 久久久青草青青国产亚洲免观| 久久精品水蜜桃av综合天堂| 国产精品美女久久久久aⅴ| 中文字幕视频一区| 亚洲成在线观看| 狠狠色2019综合网| 国产成人av网站| 99久久综合色| 在线综合亚洲欧美在线视频| 久久影院午夜片一区| 日韩美女啊v在线免费观看| 亚洲高清中文字幕| 美女一区二区在线观看| 99久久精品免费| 欧美一区二区在线视频| 日韩成人dvd| 捆绑调教美女网站视频一区| 国产xxx精品视频大全| 色婷婷综合久色| 日韩欧美自拍偷拍| 综合精品久久久| 久久99热国产| 在线观看日韩高清av| 久久久久久久久久久久久久久99| 亚洲黄色录像片| 成人动漫一区二区| 精品对白一区国产伦| 亚洲综合清纯丝袜自拍| 国产成人精品亚洲日本在线桃色| 在线观看欧美日本| 中文字幕乱码一区二区免费| 日韩制服丝袜av| 91蜜桃传媒精品久久久一区二区| 欧美电影免费观看高清完整版在线 | 久久久精品综合| 亚洲综合精品自拍| 成人高清在线视频| 欧美电影免费观看高清完整版在线观看| 亚洲欧美欧美一区二区三区| 久草在线在线精品观看| 欧洲av在线精品| 亚洲视频一区在线| 狠狠色丁香婷综合久久| 欧美日韩免费一区二区三区视频| 国产精品久久久久久久久搜平片| 国产真实乱子伦精品视频| 69p69国产精品| 丝袜美腿一区二区三区| 欧美日韩一区成人| 亚洲一区av在线| 欧美视频一区二区三区四区 | 亚洲国产精品人人做人人爽| 99免费精品在线| 国产精品美女久久久久久| 国产成人免费高清| 久久精品在线免费观看| 国产一区二区三区黄视频| xnxx国产精品| 国产精品一品二品| 国产日韩成人精品| 成人免费av资源| 久久精品视频在线免费观看| 国产精品66部| 亚洲欧美在线高清| 91久久精品一区二区三区| 一区二区三区四区在线| 欧美体内she精视频| 婷婷综合久久一区二区三区| 日韩一区国产二区欧美三区| 久久精品久久精品| 国产欧美精品国产国产专区 | 激情六月婷婷综合| 久久久久久久综合日本| av午夜一区麻豆| 亚洲国产精品久久久男人的天堂| 91精品婷婷国产综合久久性色| 久久69国产一区二区蜜臀| 欧美激情一区二区三区不卡| 色老头久久综合| 日韩国产高清影视| 久久久不卡网国产精品二区| 99re这里都是精品| 日韩高清在线电影| 国产欧美一区二区精品性色超碰| 一本久道中文字幕精品亚洲嫩| 秋霞午夜av一区二区三区| 久久久国产午夜精品| 欧美午夜宅男影院| 久久 天天综合| 一区二区三区免费在线观看| 日韩精品中文字幕在线不卡尤物 | 91捆绑美女网站| 偷拍与自拍一区| 中文字幕一区二区三区在线播放 | 亚洲欧美日韩综合aⅴ视频| 欧美一区二区久久| 91免费精品国自产拍在线不卡| 日本欧洲一区二区| 亚洲色图在线看| 26uuu精品一区二区三区四区在线| 91污在线观看| 激情成人综合网| 亚洲妇女屁股眼交7| 国产精品乱码一区二区三区软件 | 99国产精品国产精品毛片| 日韩精品国产精品| 亚洲伦在线观看| 久久精品人人做人人综合 | 国产精品影视网| 五月激情丁香一区二区三区| 日韩美女久久久| 国产精品美女一区二区| 日韩一区二区在线观看| 欧美三级一区二区| 在线观看日韩av先锋影音电影院| 国产成人欧美日韩在线电影| 久久精品国产第一区二区三区| 亚洲已满18点击进入久久| 成人欧美一区二区三区黑人麻豆| 国产三区在线成人av| 精品免费日韩av| 日韩精品一区二区三区视频在线观看 | 成人久久18免费网站麻豆| 九色|91porny| 日日欢夜夜爽一区| 一区二区国产盗摄色噜噜| 亚洲欧美另类久久久精品| 国产精品高清亚洲| 亚洲视频免费看| 亚洲欧美综合网| 亚洲免费视频成人| 一区二区在线观看免费| 日韩毛片精品高清免费| 亚洲人妖av一区二区| 国产精品欧美一级免费| 1024亚洲合集| 亚洲影院免费观看| 日本大胆欧美人术艺术动态 | 国产精品久久久爽爽爽麻豆色哟哟| 国产欧美一二三区| 中文在线资源观看网站视频免费不卡| 久久久久久久久一| 亚洲色图视频网站| 亚洲一区二区三区中文字幕在线| 亚洲国产成人av网| 免费高清在线一区| 国产麻豆视频精品| 99久久婷婷国产综合精品电影| 91亚洲精华国产精华精华液| 在线观看精品一区| 日韩女优av电影在线观看| 国产午夜亚洲精品理论片色戒| 国产日韩欧美不卡| 亚洲一区二区三区视频在线| 精品一区二区在线播放| 成人av动漫网站| 欧美日韩中文另类| 日韩三级高清在线| 国产精品久久久久aaaa樱花| 亚洲一区二区在线观看视频| 欧美a级理论片| 99久久伊人精品| 91精品国产色综合久久久蜜香臀| 亚洲精品一区二区三区精华液| 中文字幕亚洲区| 奇米色777欧美一区二区| 国产主播一区二区三区| 在线精品视频免费观看| 精品欧美一区二区久久| 一区二区三区欧美在线观看| 久久er精品视频| 欧美三级日本三级少妇99| 国产亚洲视频系列| 亚洲一区二区三区国产| 国产精品一区二区在线看| 欧美影片第一页| 亚洲欧洲在线观看av|