作业帮 > 体裁作文 > 教育资讯

鼠标键盘驱动

来源:学生作业帮助网 编辑:作业帮 时间:2024/09/23 09:28:26 体裁作文
鼠标键盘驱动体裁作文

篇一:无线鼠标键盘未能成功安装设备驱动程序而无反应解决方法

无线鼠标键盘未能成功安装设备驱动程序而无反应解决方法 成功的解决办法:(1)从目录C:\Windows\System32\DriverStore\FileRepository\usb.inf_amd64_neutral_*********'中复制文件,usb.inf和usb.PNF,粘贴到C:\Windows\inf目录中;(2)在设备管理器-未知设备中找到UsbReceiver,右键菜单选择更新驱动程序;(3)在对话框中选择浏览计算机以查找驱动程序软件(4)浏览位置输入C:\Windows\inf安装完毕后,UsbReceiver将分别变成以下设备:(1)GenericUSBHub(2)HID-compliantdevice

篇二:新的Microsoft 鼠标和键盘中心驱动安装Bug排除问题

新的Microsoft 鼠标和键盘中心驱动安装Bug排除问题

Windows 8.1 与 Windows 8均存在蓝牙鼠标连接要断线的问题,鼠标老是不在连接上,我是用不断地开关鼠标来实现重新连接,用了微软的专用鼠标及专用软件,也没有解决问题,近日下载了一个最新的Microsoft 鼠标和键盘中心驱动MouseKeyboardCenter_64bit_CHS_2.3.188,安装时提示 错误:1624,是转换出错,安装停止。

我当是安装包下载时存在Bug,本人又下载一个MouseKeyboardCenter_x64_CHS_2.3.145驱动进行安装,此驱动包提示是原来程序(之前安装过的)与本程序相同,要卸载原程序才能进行安装。

本人灵机一动,卸载原驱动后直接安装新驱动,成功!

原来是新的MouseKeyboardCenter_64bit_CHS_2.3.188(中文版)驱动存在Bug,其不提示卸载原驱动,而提示是安装转换错误,并提示系统要符合安装要求。微软也会有垃圾时期的。

关键是新的驱动仍未解决鼠标要断线的问题,只是能用微软键实现屏幕的快速切换。

Zrlobo 2014.05.15

篇三:键盘鼠标驱动

Linux操作系统课程报告

串行端口程序设计

姓 名:连炳发

班 级:集成电路设计与集成系统

学 号:1015251030

指导教师:李国刚

一、实验目的

了解 PS/2 键盘鼠标协议和接口;

了解模块驱动方法,掌握交叉编译的概念及方法,学习鼠标驱动的方法。

二、实验内容

加载 PS/2 驱动模块,观察键盘鼠标的接管情况。

三、预备知识

C 语言的基础知识。

Linux 的基本操作。

了模块驱动的基本命令。

四、实验设备及工具

硬件:UP-NETARM2410-S 嵌入式实验仪,PC 机Pentumn500 以上, 硬盘40G 以上,内存大于 128M。

软件:PC 机操作系统REDHAT LINUX 9.0 +MINICOM + AMRLINUX 开发环境

五、实验原理

1、PS/2 协议

PS/2 设备接口广泛用于现代的鼠标和键盘,它由IBM 开发,现在是大多数键盘、鼠标与P C机通讯的标准协议。物理上的PS/2 接口是两类连接器的一种:5 脚的DIN 或6 脚的mini -DIN。这两种连接器(在电气特性上)是十分类似的,实际上两者只有一点不同那就是管 脚的排列。这就意味着这两种连接器可以很容易用一种简单的硬件连线的适配器来转换。 DIN 标准是由德国标准化组织建立的。PC 键盘可以有6 脚的mini-DIN 或5 脚的DIN 连接器。

具有6 脚的mini-DIN 的键盘通常叫做“PS/2”键盘,而那些有5 脚的DIN 的叫做“AT”设 备(“XT”键盘也是用5 脚DIN,但它们非常古老并且多年前就不再生产了)。所以现代的 为PC 生产的键盘不是PS/2,AT 就是USB 的。鼠标流行着大量的形状和大小、接口,最流 行的类型可能算是PS/2 鼠标,现在USB 鼠标渐渐开始流行起来了。

每种连接器的引脚定义如图5.4.1 所示:在刚才提到的连接器上有四个有趣的管脚:地、 +5V、数据和时钟。主机提供+5V,并且键盘/鼠标的地连接到主机的地上。数据和时钟都 是集电极开路的,这就意味着它们通常保持高电平而且很容易下拉到地(逻辑0)。任何你 连接到PS/2 鼠标、键盘或主机的设备在时钟和数据线上要有一个大的上拉电阻。把线拉低

就置“0”,让线上浮成高电平就置“1”。参考图5.4.2 中数据和时钟线的一般接口结构。 PS/2 鼠标和键盘履行一种双向同步通信协议。换句话说,每次数据线上发送一位数据并且 没在时钟线上发一个脉冲就被读入。键盘/鼠标可以发送数据到主机,而主机也可以发送数 据到设备,但主机总是在总线上有优先权,它可以在任何时候抑制来自键盘/鼠标的通信, 只要把时钟位拉低即可。

图5.4.1 连接器的引脚定义

图5.4.2 数据和时钟线的一般接口结构

2、模块

模块(module)是在内核空间运行的程序,实际上是一种目标对象文件,没有链接,不能 独立运行,但是可以装载到系统中作为内核的一部分运行,从而可以动态扩充内核的功能。 模块最主要的用处就是用来实现设备驱动程序。

Linux 下对于一个硬件的驱动,可以有两种方式:直接加载到内核代码中,启动内核时就 会驱动此硬件设备。另一种就是以模块方式,编译生成一个.o 文件。当应用程序需要时再 加载进内核空间运行。所以我们所说的一个硬件的驱动程序,通常指的就是一个驱动模块。 对于一个设备,它可以在/dev 下面存在一个对应的逻辑设备节点,这个节点以文件的形式 存在,但它不是普通意义上的文件,它是设备文件,更确切的说,它是设备节点。这个节 点是通过mknod 命令建立的,其中指定了主设备号和次设备号。主设备号表明了某一类设 备,一般对应着确定的驱动程序;次设备号一般是区分不同属性,例如不同的使用方法, 不同的位置,不同的操作。这个设备号是从/proc/devices 文件中获得的,所以一般是先 有驱动程序在内核中,才有设备节点在目录中。这个设备号(特指主设备号)的主要作用, 就是声明设备所使用的驱动程序。驱动程序和设备号是一一对应的,当你打开一个设备文 件时,操作系统就已经知道这个设备所对应的驱动程序。

对于一个硬件,Linux 是这样来进行驱动的:首先,我们必须提供一个.o 的驱动模块文件 (这里我们只说明模块方式,其实内核方式是类似的)。我们要使用这个驱动程序,首先要 加载运行它(insmod *.o)。这样驱动就会根据自己的类型(字符设备类型或块设备类型, 例如鼠标就是字符设备而硬盘就是块设备)向系统注册,注册成功系统会反馈一个主设备 号,这个主设备号就是系统对它的唯一标识(例如硬盘块设备在/proc/devices 中显示的 主设备号为3 ,我们用ls -l /dev/had 看到的主设备就肯定是3)。驱动就是根据此主设 备号来创建一个一般放置在/dev 目录下的设备文件(mknod 命令用来创建它,它必须用主 设备号这个参数)。在我们要访问此硬件时,就可以对设备文件通过open、read、write 等命令进行。而驱动就会接收到相应的read、write 操作而根据自己的模块中的相应函数 进行了。

3、Linux 键盘驱动的工作原理

首先让我们通过以下的结构图5.4.3 来了解一下用户从终端的击键是如何工作的: _____________ _________ _________

/ \ put_queue | |receive_buf| |tty_read

/handle_scancode \-------->|tty_queue|---------->|tty_ldisc|------->

\ / | | |buffer |

\_____________/ |_________| |_________|

_________ ____________

| |sys_read| |

--->|/dev/ttyX|------->|user process|

| | | |

|_________| |____________|

图5.4.3 键盘结构图

首先,当你输入一个键盘值的时候,键盘将会发送相应的scancodes 给键盘驱动。一个独

立的击键可以产生一个六个scancodes 的队列。

键盘驱动中的handle_scancode()函数解析scancodes 流并通过kdb_translate()函数里的 转换表(translation-table)将击键事件和键的释放事件(key release events)转换成 连续的keycode。

比如,'a'的keycode 是30。击键’a'的时候便会产生keycode 30。释放a 键的时候会产 生keycode 158(128+30)。

然后,这些keycode 通过对keymap 的查询被转换成相应key 符号。这步是一个相当 复杂的过程。

以上操作之后,获得的字符被送入raw tty 队列--tty_flip_buffer。

receive_buf()函数周期性的从tty_flip_buffer 中获得字符,然后把这些字符送入tty read 队列。

当用户进程需要得到用户的输入的时候,它会在进程的标准输入(stdin)调用read()函 数。sys_read()函数调用定义在相应的tty 设备(如/dev/tty0)的file_operations 结构 中指向tty_read 的read()函数来读取字符并且返回给用户进程。

file_operations 是文件操作结构,定义了文件操作行为的成员,结构如下,很容易理解: struct file_operations {

struct module *owner;

loff_t (*llseek) (struct file *, loff_t, int);

ssize_t (*read) (struct file *, char *, size_t, loff_t *);<----这是本文提到的read 函数

ssize_t (*write) (struct file *, const char *, size_t, loff_t *);>---这是本文提到的write 函数 int (*readdir) (struct file *, void *, filldir_t);

unsigned int (*poll) (struct file *, struct poll_table_struct *);

int (*ioctl) (struct inode *, struct file *, unsigned int, unsigned long);

int (*mmap) (struct file *, struct vm_area_struct *);

int (*open) (struct inode *, struct file *);

int (*flush) (struct file *);

int (*release) (struct inode *, struct file *);

int (*fsync) (struct file *, struct dentry *, int datasync);

int (*fasync) (int, struct file *, int);

int (*lock) (struct file *, int, struct file_lock *);

ssize_t (*readv) (struct file *, const struct iovec *, unsigned long, loff_t *);

ssize_t (*writev) (struct file *, const struct iovec *, unsigned long, loff_t *);

ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int);

unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long);

};

我们知道unix 系统中设备也是文件,所以tty 设备我们也可以进行文件操作。

键盘驱动器可以有如下4 种模式:

- scancode(RAW 模式):应用程序取得输入的scancode。这种模式通常用于应用程序实现 自己的键盘驱动器,比如X11 程序。

- keycode(MEDIUMRAW 模式):应用程序取得key 的击键和释放行为(通过keycode 来鉴 别这两种行为)信息。

- ASCII(XLATE 模式):应用程序取得keymap 定义的字符,该字符是8 位编码的。

- Unicode(UNICODE 模式):此模式唯一和ASCII 模式不同之处就是UNICODE 模式允许用 户将自己的10 进制值编写成UTF8 的unicode 字符,如十进制的数可以编写成Ascii_0 到 Ascii_9,或者用户16 进制的值可以用Hex_0 到Hex_9 来代表。一个keymap 可以产生出一 系列UTF8 的序列。

六、程序分析

分析源代码 Ps2_kbd_mouse.c

使用者在键盘上按一个键,就产生一个中断请求,CPU 在响应中断时进入键盘的中断服务程 序keyboard_interrupt()。人们往往以为键盘是很简单的设备,但实际上键盘的结构和操 作都不简单。我们以字符”A”为例来说明键盘的操作。当在键盘上按下一个键时,键盘立 即就向母板发出一个字节的代码,称为”键盘扫描码” 。具体位置取决于键的位置,”A” 键的键盘扫描码为0x1c。母板上的键盘接口在接收这个字节以后就把它转换成一种”系统 扫描码”,并将其存入控制器的内部缓冲区,然后便向CPU 发出一个中断请求。对于”A”键, 其系统扫描码为0x1e。当CPU 从键盘接口的数据寄存器读时,读出的就是系统扫描码。然 后,当放开”A”时,键盘又要向母板发出键盘扫描码,而这次是两个字节,第一个是0xf0, 表示是放开一个键;然后是0x1c,表示是哪一个键.同样母板上的键盘接口也要把它转换成 系统扫描码、也要向CPU 发出中断请求,但是系统扫描码仍然是一个字节,只是在0x1e 的基 础上把最高位设成1,变成0x9e。这样,在CPU 从键盘接口读出的单字节系统扫描码中,其最 高位表示按下或放开,而低7 位则与具体的键对应。不光对普通的字符键是如此,对功能键 和控制键也是一样。例如,左右两个Shift 键的系统扫描码分别为0x2a 和0x36。这样,以 输入一个小写的”a”为例,CPU 实际上可能要发生4 次中断、要依次从键盘接口读出4 个 字节的系统扫描码,例如0x36,0x1e,0x9e,0xb6。对于把这个序列解释成什么,那就是软件 的事了;如果解释成ASCII 码,而键盘又没有锁定在大写状态,那就是”a” 。由此可见,键 盘接口向CPU 发出中断请求并不意味着从键盘接收到了一个字符,而只是意味着键盘上发 生了某种事件。此外,上面只是一般而言,实际上还有不少例外。其中最重要的是所谓”扩 充键” 。早期的PC 键盘上只有83 个键,后来扩充到了101 键或104 键,例如右边的Ctrl 键就是一个扩充键。当按下或放开扩充键时,键盘扫描码和系统扫描码都以一个0xe0 字节 开头,所以按下右边Ctrl 键时的键盘扫描码是[0xe0,0x14];放开时为[0xe0,0xf0,0x14]; 相应的系统扫描码则为[0xe0,0x1d]以及[0xe0,0x9d] 。

事件 键盘扫描码 系统扫描码

按下”A”键 0x1c 0x1e

放开”A”键 0xf0,0x1c 0x9e

按下右Shift 键 0x59 0x36

放开右Shift 键 0xf0,0x59 0xb6

按下右Ctrl 键 0xe0,0x14 0xe0,0x1d

篇四:关于usb鼠标、键盘驱动浅谈

关于usb鼠标、键盘驱动浅谈

你可能会遇见这样一个不可思议的问题,usb鼠标(键盘)插上亮但就是不可以用,去设备管理器里边发现其前边有个黄色的叹号——找到问题了原来是驱动的问题,于是就联网自动更新驱动发现可以找到但是打开文件失败,对于您对计算机的了解,也许你已经用了好几个测试软件比如驱动人生,驱动精灵,鲁大师等等,都可以检测到该驱动没有装上,但令人不可意思的是就是装不上驱动。在确定鼠标可用的情况下,这个时候您也许就该想这是不是1硬件的问题(主板usb接口)2系统问题。但是真正的做一个正版的系统是很费劲费事的(后期处理特繁琐)。接下来您可以这样做更新主板芯片组驱动,南桥驱动试试等等,如果还是不管用。这时候您可以试试进入u盘系统看看鼠标会不会用,如果会的话 那就是系统的问题。这时候就做只能系统了(几乎可以确定是系统的缺陷性)。

出现这些问题很大程度上是精简版系统的缺陷性,在一点是尽量不要有软件优化系统,很肯能把某些东东优化没了。所以在这里建议大家在选择系统时候做好做原版系统。有自带的系统更好,精简版系统很可能出现一些未知错误。

以上仅是本人自己的见解,多有不足之处,肯请各位批评指正。

篇五:Macbook air 2013安装windows7,解决鼠标键盘失灵问题的解决方法(集成USB3.0驱动的方法)

Macbook air 2013安装windows7,解决鼠标键盘失灵问题的解决方法(集成USB3.0驱动的方法)

2014-09-13 14:07 8817人阅读 评论(0) 收藏 举报

Macbook air 2013安装windows7时,会出现在语言选择界面,键盘鼠标均失灵,或者在用户名界面,鼠标键盘失灵。

本文采用的是将USb3.0集成到Windows7的安装盘的方法。

本文为参考http://bbs.feng.com/read-htm-tid-6613405-page-1.html,并添加了自己的心得。 步骤;

1、在Mac下,运行Bootcamp,执行第二和第三项,第一项不需要选。原因见说明3。 说明:

(1)如果选中第一和第二项,则将使用Win7安装盘的ISO,创建USB盘的Windows7安装盘,并将Bootcamp下载的驱动集成到该usb中。

(2)如果是将整个MAc只安装windows7,完全抹掉MAc,则只需第二项即可。 如果是同时保留Mac和Windows7,则需要使用第三项,进行硬盘分区。

(3)因本文采用的是将USB3的驱动集成到ISO中的方法,因此,如果你有USB的光驱,则第一项可以不需要做。如果没有,需要使用USB的windows7安装盘,则可使用第一项制作USB格式的Win7安装盘,或者使用其他软件制作USB的安装盘。但这个ISO必须为按下文所述的方法制作的集成USB3的驱动的ISO。

4)Bootcamp 5只支持Windows 64,不支持32位的系统。如需安装32位的Windows7,需要Bootcamp4。

2、完成后的U盘中,其中的bootcamp文件夹为驱动,$WinPEDriver$据说为windows启动时使用的驱动,所以在第一步时,如果选择Bootcamp中的第一步和第二步,则会该文件夹,网上有说使用第一步和第二步解决驱动问题的,但我试用了,没有成功。

最好将整个U盘备份,否则如果需要重装WIndows7 ,需要重新下载该驱动。

3、下载Intel的usb3的驱动,文件名为SetupUSB3.zip。

USB3.0 Driver: Intel? USB 3.0 eXtensible Host Controller Driver for Intel? 8Series/C220 Chipset Family

下载地址为:

https://downloadcenter.intel.com/confirm.aspx?httpDown=http://downloadmirror.intel.com/22824/eng/SetupUSB3.zip&lang=eng&Dwnldid=22824

但该链接指向的下载文件失效了,但可使用迅雷使用如下地址下载:

http://downloadmirror.intel.com/22824/eng/SetupUSB3.zip

或者在CSDN上下载:

http://download.csdn.net/detail/civilman/7908687

4、提取Install.wim和boot.wim

使用UltroISO或者直接用Winrar,解开WIn7的ISO,在Source目录下,提取其中的boot.wim和Install.wim。

这个boot.wim就是win7安装程序开始的时候出来的windowsis loadingfiles的那个白条界面读取的,较小,作用是创建一个win7的安装环境。Install.wim则是在进入程序后复制并展开的那个东东,正式建立了win7的操作系统环境。Install.wim不添加usb3驱动,在开始安装时,键盘鼠标正常,不会卡在语言选择界面,但是,重启之后就会卡在输入用户名计算机名那了。

5、集成usb3驱动进win7安装程序

(1)在硬盘上建立一个文件夹,用以存放以下所需文件,文件名任意,例如Win7USB。

(2)将第3步下载的驱动SetupUSB3.zip解压,解压后里面drivers文件夹下有hcsswitch和xhci两个文件夹,根据你安装的win7版本32位还是64位选择相应的文件。不管是哪个版本,应该都是12个文件,拷贝出来放到刚才建立的usb3文件夹里面。

(3)把boot.wim和install.wim两个文件拷贝到你建立的那个母文件夹(即里面有usb3和mount的,如Win7USB)。这两个文件在win7安装盘的sources文件夹里。

(4)windows下用管理员模式运行cmd。并进入你刚才建立的母文件夹。比如你在d盘建立了Win7USB文件夹,那你需要打两条命令:

d:回车

cdWin7USB 回车

然后继续输入下面的命令。

(5)在boot.wim中添加驱动,命令如下。该命令可建立批处理文件bo

鼠标键盘驱动

ot_wim.bat,直接运行即可。

体裁作文