Today's the day

向软件大牛炫耀我会焊单片机,向硬件大牛炫耀我会写 Rails,向软硬件大牛炫耀我生物,向软硬件生物大牛炫耀我会折腾期货 -_-bbb

firefox扩展开发(六) : 关于event对象
firefox扩展开发(八) :控件激活

firefox扩展开发(七) : 键盘快捷键

galeki posted @ 2007年6月25日 04:41 in Firefox扩展开发 with tags firefox XUL 扩展开发 , 13900 阅读

键盘快捷键是一个应用程序不可缺少的部分,最常见的地方在菜单栏中,在XUL中添加键盘快捷键是很简单的,只需要设置控件的accesskey属性即可:

  1. <?xml version="1.0"?>
  2. <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
  3. <window
  4.   id="test-window"
  5.   title="测试用的窗口"
  6.   xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
  7.  
  8.         <menubar>
  9.           <menu id="file-menu" label="文件(F)" accesskey="f">
  10.             <menupopup id="file-popup">
  11.               <menuitem id="close-command" label="关闭(X)" accesskey="x"/>
  12.             </menupopup>
  13.           </menu>
  14.         </menubar>
  15.  
  16. </window>

当然,accesskey属性也可以设置在其他控件上(比如按钮)。

如果要设置全局快捷键,这个时候就要用到<key>标签,每个<key>标签设置一个快捷键,最后把所有的<key>标签包含在一个<keyset>标签中即可:

  1. <?xml version="1.0"?>
  2. <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
  3. <window
  4.   id="test-window"
  5.   title="测试用的窗口"
  6.   xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
  7.  
  8.     <keyset>
  9.         <key id="key1" modifiers="control" key="Q" oncommand="alert('你按了快捷键crtl+Q')"/>
  10.         <key id="key2" modifiers="control alt" key="C" oncommand="alert('你按了快捷键crtl+alt+C')"/>
  11.         <key id="key3" keycode="VK_F6" oncommand="alert('你按了快捷键F6')"/>
  12.     </keyset>
  13.  
  14. </window>

这里介绍了设置全局快捷键的3种情况:

第9行,设置的快捷键是crtl+q,modifiers就是通常所说的修饰键,modifiers可以取control、alt、meta、shift,分别代表了键盘上的ctrl、alt、meta、shift键。

第10行,设置的快捷键是ctrl+alt+c,演示了如何设置有两个修饰键的情况,只需把他们用空格分开即可。

第11行,设置的快捷键是F6,值得注意的是,前面两行中指示快捷键的属性是key,直接指出键盘上的字母值,但是碰到像F1、F2这样的功能键,还有TAB和回车这样的按键,就没法通过key属性设置了,这个时候只有通过keycode设置,其实,键盘上的每个键都对应了一个keycode值,这个值一般以“VK_”开头,下面的表格列出了常用的keycode值,对应的按键从后缀就可以看出:

VK_CANCEL VK_BACK VK_TAB VK_CLEAR
VK_RETURN VK_ENTER VK_SHIFT VK_CONTROL
VK_ALT VK_PAUSE VK_CAPS_LOCK VK_ESCAPE
VK_SPACE VK_PAGE_UP VK_PAGE_DOWN VK_END
VK_HOME VK_LEFT VK_UP VK_RIGHT
VK_DOWN VK_PRINTSCREEN VK_INSERT VK_DELETE
VK_0 VK_1 VK_2 VK_3
VK_4 VK_5 VK_6 VK_7
VK_8 VK_9 VK_SEMICOLON VK_EQUALS
VK_A VK_B VK_C VK_D
VK_E VK_F VK_G VK_H
VK_I VK_J VK_K VK_L
VK_M VK_N VK_O VK_P
VK_Q VK_R VK_S VK_T
VK_U VK_V VK_W VK_X
VK_Y VK_Z VK_NUMPAD0 VK_NUMPAD1
VK_NUMPAD2 VK_NUMPAD3 VK_NUMPAD4 VK_NUMPAD5
VK_NUMPAD6 VK_NUMPAD7 VK_NUMPAD8 VK_NUMPAD9
VK_MULTIPLY VK_ADD VK_SEPARATOR VK_SUBTRACT
VK_DECIMAL VK_DIVIDE VK_F1 VK_F2
VK_F3 VK_F4 VK_F5 VK_F6
VK_F7 VK_F8 VK_F9 VK_F10
VK_F11 VK_F12 VK_F13 VK_F14
VK_F15 VK_F16 VK_F17 VK_F18
VK_F19 VK_F20 VK_F21 VK_F22
VK_F23 VK_F24 VK_NUM_LOCK VK_SCROLL_LOCK
VK_COMMA VK_PERIOD VK_SLASH VK_BACK_QUOTE
VK_OPEN_BRACKET VK_BACK_SLASH VK_CLOSE_BRACKET VK_QUOTE
VK_HELP  

显示效果:

 

 

sdf 说:
2007年6月28日 01:04

seen 欢迎回访我的个人BLOG, 阅读了你的这篇文章, 听景777-Blog 地址1 http://matpul.blog.ssreader.com/user1/natinne2/ 地址2 takepul.googlepages.com/2.htm tingjing777@gmail.com

myctime 说:
2007年7月02日 18:46

十分感谢,对我这种初学者很有帮助哦

Avatar_small
galeki 说:
2007年7月03日 10:12

呵呵,楼上谦虚了


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter