原文见:https://sites.google.com/site/xiangyangsite/home/technical-tips/windows-tips/multi_media_key_customaziation_on_windows

前言

最近对键盘的多媒体键产生了兴趣,研究了一些心得,特此记录下来与大家分享。

本文共分为以下四个部分:
² 多媒体键简介
² 定制多媒体键
² 定制键盘任意键
² 改造普通键盘硬件,增加多媒体键

多媒体键简介

目前最常用的标准键盘是104键键盘,是在IBM定义的101键键盘标准上增加了两个Windows徽标键和一个右键菜单键而成,俗称Win95键盘。此类键盘一直沿用IBM标准,采用行列矩阵方式布局排列,称为扫描矩阵,扫描矩阵定义为8行×16列=128键。对于104键键盘而言,还有24个闲置键位未定义。107键键盘就是从这些闲置键位中选择了三个定义为“Power”、“Sleep”和“Wake UP”。后来微软又增加了18个键定义,用于完成音量调整、播放/暂停、打开浏览器等功能。为了方便,本文中我们将这18个键统称为多媒体键,各键功能详见下表:

序号

键名

功能

注册表分支名称

1

Volume UP

音量提高

2

Volume Down

音量降低

3

Mute

静音

4

Play/Pause

播放/暂停

5

Stop

停止

6

Scan Previous Track

上一曲

7

Scan Next Track

下一曲

8

WWW Back

IE浏览器后退

1

9

WWW Forward

IE浏览器前进

2

10

WWW Refresh

IE浏览器刷新

3

11

WWW Stop

IE浏览器停止

4

12

WWW Search

IE浏览器搜索

5

13

WWW Favorites

IE浏览器收藏夹

6

14

WWW Home

IE浏览器首页

7

15

Mail

邮件

15

16

Media Select

媒体选择(播放器)

16

17

My Computer

我的电脑

17

18

Calculator

计算器

18

微软、罗技等一些厂家都推出过各式各样的带有多媒体键的键盘,有音量调节、播放、停止、计算器、复制、粘贴、备份、还原等多种功能,但有相当一部分各类的键盘需要另行安装驱动程序或应用程序。本文所讨论的多媒体键盘,仅指在XP/Vista/Windows7等操作系统下只使用系统自带的驱动程序和HID Input Service 服务,多媒体键即可生效的键盘,如微软精巧500/600、DELL 8135等,这些键盘使用的驱动程序名称为HID Keyboard Device(USB接口键盘)或“标准 101/102键盘或microsoft 自然 PS/2 键盘”(PS/2接口键盘)。
另:按照微软提供的USB/PS2键盘扫描码对应表,USB键盘比PS/2键盘要多出一些键位定义,如:复制、粘贴、撤消等。因条件所限没有进一步研究。

定制多媒体键

多媒体键虽然有18个之多,但并不一样都是用户想要的功能。比如说我可能更需要一键打开记事本而不是计算器;按下“我的电脑”键我希望能运行的是Total Commander。微软考虑到了用户这个需求,提供了两种解决方案:一是安装微软提供的IntelliType Pro驱动工具,使用常驻内存的程序来控制各个键的定义。二是在注册表中提供了部分键的自定义功能,允许定制上表中8至18号键位功能。微软也提供了个工具TweakUI可以修改这些键的定义保存至注册表,但修改的内容有限。使用第三方驱动还要有常驻内存的程序,我个人不是很感冒。在这里我们详细了解一下注册表修改这种方法。

例一:修改Calculator计算器键,把它的定义改为打开记事本。只须将如下内容保存为notepad.reg,双击导入注册表即可:

代码:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AppKey\18]
"ShellExecute"="notepad.exe"

如果要改为打开默认的邮件客户端,可以将上面的"ShellExecute"="calc.exe"一行改为:

代码:
"Association"="mailto"

或者:

代码:
"RegisteredApp"="mail"

例二:修改My Computer我的电脑键,将其改为运行Total Commander。需要导入如下注册表项目:

代码:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AppKey\17]
"ShellExecute"=" D:\\Program Files\\TotalCmd\\TOTALCMD.EXE"

(Total Commander实际路径需要根据实际情况修改)

在以上两例中:

代码:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AppKey]

代码:
[HKEY_CURRENT_USER \SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\AppKey]

这两个主键下提供了对多媒体键定义功能,两个主键的区别是作用范围是全体用户还是当前用户。也就是说如果多人共用一台计算机,不同的账户下同一个键可以设定不同的功能。
每个多媒体键都有一个数字编号的分支,具体编号对应情况见上表。
键名有ShellExecute、Assocication和RegisteredApp三种类型可选:
ShellExecute 是执行一个外部程序,在键值中指定要执行的程序名称即可。
Assocication是指定关联,可以将键值设定为一个扩展名如“.rar”,将调用Winrar程序;也可以指定一个协议,http即调用默认的http浏览器,mailto则是调用默认的邮件客户端。
[size=2]RegisteredApp是指定已注册的默认程序,键值可以设定为mail、news、Calendar、Contacts、Media等,分别代表默认的邮件客户端、新闻组程序、日历、联系人、媒体播放器等。具体在注册表中的位置如下:

代码:
[HKEY_LOCAL_MACHINE\SOFTWARE\Clients]

定制键盘任意键

有人可能会问:我的键盘上只有表中1~7号多媒体键,或者根本就没有任何多多媒体键,有没有办法将某些键定义成打开指定程序或者其它多媒体键呢?回答是肯定的,那就是利用微软提供的扫描码映射(Scan Code Mapper)功能。
实际上这是个很古老的技术了,KeyTweak、RemapKey等软件都是利用了这项技术通过修改注册表来完成键盘值转义功能。下面我们手动操作,将Scroll Lock 键改为打开记事本功能:
1、 先将Scroll Lock 键映射为Calculator键,即打开计算器。导入如下注册表项目:

代码:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,21,e0,46,00,00,00,00,00

2、 重启计算机,此时按下Scroll Lock 键,可以打开计算器。
3、 按照前面介绍的方法,再将Calculator键的定义修改为打开记事本即可。
修改1~7号无法定制功能的多媒体键方法也是一样的。
注意:Power、Sleep、Wake Up 这三个电源键有些特殊,它们也可以映射到其它键,但必须先从控制面板-电源选项中将Power和Sleep的功能设定为“不采取任何操作”。另外在USB键盘上,这三个键映射无效,若是通过转换口连接到PS/2接口上,则是可以使用的。

改造普通键盘硬件,增加多媒体键

这时又有朋友问了:我用的是标准104键键盘,不想修改现有的键定义,能不能增加几个多媒体键?回答仍然是可行的!不过需要你有一定的DIY能力,能够熟练的使用电烙铁等工具。
前面我们提到过现在通用的键盘都是使用了IBM定义的矩阵,一共有8行×16列=128个键位,空闲了24个键位。而电源键和多媒体键都是利用了这些空闲键位。由此想来现在常用的键盘控制器芯片一定可以完整处理这128个键,厂家没有必要为普通104键键盘和多媒体键盘开发不同的键盘控制器芯片,更没有必要在普通104键键盘上屏蔽那多余的24个键位处理能力。基于以上理由,我们推测市场上最常见的104键键盘能够支持多媒体键,只是没有做出相应的键位而已。
下面就来验证一下我们的推测:拆开一块普通的104键键盘,找到线路板,可以看到上面有与键盘薄膜电路相连的金手指触点,这些触点通过键盘薄膜电路两两组合,从而得到了不同的按键。因为这一部分电路没有统一的标准,我只能用穷举法来一个个测试:找一根导线按顺序短接不同的触点。经过一段时间的测试,我果然找到了静音、音量增大、音量减小、计算器、我的电脑等热键;不幸的是在测试的过程中我也找到了电源键,于是系统就自动地关机了……不管怎么说,试验是成功了。
我先后在IBM、联想、浪潮、清华同方等四块不同品牌计算机的键盘上做过以上试验,不管是PS/2接口还是USB接口的键盘,都是成功的。
下面要做的就是去电子市场买一些轻触开关,想办法固定在键盘的空闲的地方,找到所需的键位组合,用导线焊好就可以了。当然,要想做得美观,需要你有较强的动手能力。
也许费了这么大功夫,改造一块不到一百元的键盘纯属浪费精力,但是对我们DIY爱好者来说,结果并不是目的,探索的过程中才是我们最大的乐趣。我们口号是:生命在于折腾……

【转载】修改Windows下键盘按键对应功能的一些方案的更多相关文章

  1. linux系统下键盘按键的重新映射——xmodmap工具和xev工具

    大家会不会有时候,感觉键盘上的某几个键用起来不是很方便,打字打久了很容易手指头疼呢? 例如大家使用vim编辑器时, 经常需要使用到esc键,而该键在左上角,很不方便的.再比如写程序的时候,经常会使用到 ...

  2. 【转载】Windows下VSCode编译调试c/c++

    懒得自己配置或自己配置出现不明问题的朋友可以点这里: [VSCode]Windows下VSCode便携式c/c++环境 http://blog.csdn.net/c_duoduo/article/de ...

  3. 转载:Windows下三分钟搭建Shadowoscks服务器端

    Windows下三分钟搭建Shadowoscks服务器端 之前在V2EX上有人问为啥没人做个在Windows上一键运行Shadowsocks服务器端的程序,我只想说……这是因为没人关注我的libQtS ...

  4. (转载)Windows下手动完全卸载Oracle

    使用Oracle自带的Universal Installer卸载存在问题: 不干净,不完全,还有一些注册表残留,会影响到后来的安装. 所以,推荐使用手工卸载Oracle. 1.[win+R]-> ...

  5. [转载]在Windows下搭建Android开发环境

    http://jingyan.baidu.com/article/bea41d437a41b6b4c51be6c1.html 在Windows下搭建Android开发环境 | 浏览:30780 | 更 ...

  6. mysql修改windows下的data目录

    在windows下,安装完mysql后,建议把数据目录(data目录)移动到非系统目录,避免系统出问题的时候还原. 1.在d盘创建一个mysqldata 2.给新文件增加权限NetworkServic ...

  7. 修改Windows下的键盘映射

    在知乎上看见有人说Ctrl键放在A的旁边会更方便,于是我就琢磨着把Cap Lock键改成Ctrl 我肯定不愿意用第三方工具修改的,于是找到了这篇文章,很容易的就修改成功,现在用起来果然舒服多了. 附上 ...

  8. 《Python黑帽子:黑客与渗透测试编程之道》 Windows下木马的常用功能

    有趣的键盘记录: 安装pyHook: http://nchc.dl.sourceforge.net/project/pyhook/pyhook/1.5.1/pyHook-1.5.1.win32-py2 ...

  9. windows下键盘常用快捷键整理

    以下快捷键均在win7环境下测试有效: 声明:本博文由多篇博文经实测整理而出. win键相关的快捷键多用于桌面场景,如开起资源管理器.切换任务窗口.最大化最小化窗口等等. 场景一: 1. 任何情况下想 ...

随机推荐

  1. 记录python上传文件的坑(2)

    描述: 1.之前在写项目mock代码时,碰到一个上传文件的接口,但项目接口本身有token保护机制,碰到token失效时,需要重新获取一次token后,再次对上传文件发起请求,在实际调用中发现,第一次 ...

  2. Windows性能监控监视器(perfmon使用)

    一.在命令窗口或运行中执行perfmon.exe,打开性能监视器 二.在用户定义中,即可新建--数据收集器--性能计数器,步骤如下: 三.添加监控Windows服务器的资源类型,例如:内存(Avail ...

  3. 从零开始学习java一般需要多长时间?

    从零开始学习java一般需要多长时间? 其实学java一般要多久?因人而异,例如一个零基础的小白自学java,每天学习8个小时来算,而且在有学习资料的基础上,每天学习,从零到找到工作,起码要半年起步, ...

  4. 多个div的多文本部分展开显示+关键字自动标注

    效果: 源码: <%@ page language="java" contentType="text/html; charset=utf-8" pageE ...

  5. Jenkins学习安装配置和使用

    为了能够频繁地将软件的最新版本,及时.持续地交付给测试团队及质量控制团队,以供评审,所以引入持续集成工具Jenkins,从而实现公司新产品持续集成,自动化部署. 环境准备 ●操作系统:Windows1 ...

  6. python文件的使用

    文件是一个存储在辅助存储器上的数据序列,可以包含任何数据内容.概念上,文件是数据的集合抽象,类似地,函数是程序的集合和抽象.用文件形式组织和表达数据更有效也更为灵活.文件包括两种类型:文本文件和二进制 ...

  7. ReactNative: 使用尺寸类Dimensions获取屏幕尺寸

    一.简介 在前面创建使用组件时,虽然使用的都是伸缩盒子布局,但是很少使用宽高来进行绝对定位.在iOS中可以通过UIScreen控件获取当前屏幕的宽高,同样地,在RN中提供了一个尺寸组件Dimensio ...

  8. npm与cnpm的区别

    NPM(Node Package Manager,节点包管理器)是NodeJS的包管理器,用于节点插件的管理(包括安装,卸载和管理依赖等).NPM是随同新版的NodeJS一起安装的包管理工具,所以我们 ...

  9. vscod如何自定义 python虚拟环境

    参考文档:https://code.visualstudio.com/docs/python/environments 1.创建虚拟环境,cd到当前目录 py -3 -m venv env 2.Ctr ...

  10. ES6 -箭头函数 ,对象的函数解构

    ES6 -箭头函数: //es6 中的箭头函数和扩展 //es5的写法 // function add(a,b){ // return a + b; // } // add(1,2); //3 fun ...