Module vkCodes
[hide private]
[frames] | no frames]

Source Code for Module vkCodes

  1  #vkCodes.py 
  2  #A part of NonVisual Desktop Access (NVDA) 
  3  #This file is covered by the GNU General Public License. 
  4  #See the file COPYING for more details. 
  5  #Copyright (C) 2007-2010 Michael Curran <mick@kulgan.net>, James Teh <jamie@jantrid.net> 
  6   
  7  """Maps between Windows virtual key (vk) codes and NVDA key names. 
  8  These names are used when binding keyboard gestures to scripts. 
  9  """ 
 10   
 11  #: Maps vk codes to key names. 
 12  #: The dict key is a tuple of (vkCode, extended), 
 13  #: where vkCode is the vk code and extended is a bool specifying whether the key is an extended key. 
 14  #: If extended is C{None}, the extended state of the key is irrelevant to the mapping; 
 15  #: i.e. the name is the same in either case. 
 16  #: The dict value is the key name. 
 17  #: @type: dict with keys of tuple(int, bool) and values of str 
 18  byCode = { 
 19          (0x01, None): "leftMouse", 
 20          (0x02, None): "rightMouse", 
 21          (0x03, None): "break", 
 22          (0x04, None): "middleMouse", 
 23          (0x08, None): "backspace", 
 24          (0x09, None): "tab", 
 25          (0x0C, None): "numpad5", 
 26          (0x0D, False): "enter", 
 27          (0x0D, True): "numpadEnter", 
 28          (0x10, None): "shift", 
 29          (0x11, None): "control", 
 30          (0x12, None): "alt", 
 31          (0x13, None): "pause", 
 32          (0x14, None): "capsLock", 
 33          (0x18, None): "IMEFinalMode", 
 34          (0x1B, None): "escape", 
 35          (0x1C, None): "IMEConvert", 
 36          (0x1D, None): "IMENonconvert", 
 37          (0x1E, None): "IMEAccept", 
 38          (0x1F, None): "IMEModeChange", 
 39          (0x20, None): "space", 
 40          (0x21, True): "pageUp", 
 41          (0x21, False): "numpad9", 
 42          (0x22, True): "pageDown", 
 43          (0x22, False): "numpad3", 
 44          (0x23, True): "end", 
 45          (0x23, False): "numpad1", 
 46          (0x24, True): "home", 
 47          (0x24, False): "numpad7", 
 48          (0x25, True): "leftArrow", 
 49          (0x25, False): "numpad4", 
 50          (0x26, True): "upArrow", 
 51          (0x26, False): "numpad8", 
 52          (0x27, True): "rightArrow", 
 53          (0x27, False): "numpad6", 
 54          (0x28, True): "downArrow", 
 55          (0x28, False): "numpad2", 
 56          (0x29, None): "select", 
 57          (0x2A, None): "print", 
 58          (0x2B, None): "execute", 
 59          (0x2C, None): "printScreen", 
 60          (0x2D, True): "insert", 
 61          (0x2D, False): "numpadInsert", 
 62          (0x2E, True): "delete", 
 63          (0x2E, False): "numpadDelete", 
 64          (0x2F, None): "help", 
 65          (0x5B, None): "leftWindows", 
 66          (0x5C, None): "rightWindows", 
 67          (0x5D, None): "applications", 
 68          (0x5F, None): "sleep", 
 69          (0x60, None): "numLockNumpad0", 
 70          (0x61, None): "numLockNumpad1", 
 71          (0x62, None): "numLockNumpad2", 
 72          (0x63, None): "numLockNumpad3", 
 73          (0x64, None): "numLockNumpad4", 
 74          (0x65, None): "numLockNumpad5", 
 75          (0x66, None): "numLockNumpad6", 
 76          (0x67, None): "numLockNumpad7", 
 77          (0x68, None): "numLockNumpad8", 
 78          (0x69, None): "numLockNumpad9", 
 79          (0x6A, None): "numpadMultiply", 
 80          (0x6B, None): "numpadPlus", 
 81          (0x6C, None): "numpadSeparator", 
 82          (0x6D, None): "numpadMinus", 
 83          (0x6E, None): "numpadDecimal", 
 84          (0x6F, None): "numpadDivide", 
 85          (0x70, None): "f1", 
 86          (0x71, None): "f2", 
 87          (0x72, None): "f3", 
 88          (0x73, None): "f4", 
 89          (0x74, None): "f5", 
 90          (0x75, None): "f6", 
 91          (0x76, None): "f7", 
 92          (0x77, None): "f8", 
 93          (0x78, None): "f9", 
 94          (0x79, None): "f10", 
 95          (0x7A, None): "f11", 
 96          (0x7B, None): "f12", 
 97          (0x7C, None): "f13", 
 98          (0x7D, None): "f14", 
 99          (0x7E, None): "f15", 
100          (0x7F, None): "f16", 
101          (0x80, None): "f17", 
102          (0x81, None): "f18", 
103          (0x82, None): "f19", 
104          (0x83, None): "f20", 
105          (0x84, None): "f21", 
106          (0x85, None): "f22", 
107          (0x86, None): "f23", 
108          (0x87, None): "f24", 
109          (0x90, None): "numLock", 
110          (0x91, None): "scrollLock", 
111          (0xA0, None): "leftShift", 
112          (0xA1, None): "rightShift", 
113          (0xA2, None): "leftControl", 
114          (0xA3, None): "rightControl", 
115          (0xA4, None): "leftAlt", 
116          (0xA5, None): "rightAlt", 
117          (0xA6, None): "browserBack", 
118          (0xA7, None): "browserForward", 
119          (0xA8, None): "browserRefresh", 
120          (0xA9, None): "browserStop", 
121          (0xAA, None): "browserSearch", 
122          (0xAB, None): "browserFavorites", 
123          (0xAC, None): "browserHome", 
124          (0xAD, None): "volumeMute", 
125          (0xAE, None): "volumeDown", 
126          (0xAF, None): "volumeUp", 
127          (0xB0, None): "mediaNextTrack", 
128          (0xB1, None): "mediaPrevTrack", 
129          (0xB2, None): "mediaStop", 
130          (0xB3, None): "mediaPlayPause", 
131          (0xB4, None): "launchMail", 
132          (0xB5, None): "launchMediaPlayer", 
133          (0xB6, None): "launchApp1", 
134          (0xB7, None): "launchApp2", 
135  } 
136   
137  #: Maps key names to vk codes. 
138  #: This is the inverse of the L{byCode} map 
139  #: except that names are all lower case to make case insensitive lookup easier. 
140  #: @type: dict with keys of str and values of tuple(int, bool) 
141  byName = dict((name.lower(), code) for code, name in byCode.iteritems()) 
142