1# -*- python-mode -*- 2# -*- coding: UTF-8 -*- 3 4## Copyright (C) 2012-2013 Daniel Pavel 5## 6## This program is free software; you can redistribute it and/or modify 7## it under the terms of the GNU General Public License as published by 8## the Free Software Foundation; either version 2 of the License, or 9## (at your option) any later version. 10## 11## This program is distributed in the hope that it will be useful, 12## but WITHOUT ANY WARRANTY; without even the implied warranty of 13## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14## GNU General Public License for more details. 15## 16## You should have received a copy of the GNU General Public License along 17## with this program; if not, write to the Free Software Foundation, Inc., 18## 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 20# Reprogrammable keys information 21 22from __future__ import absolute_import, division, print_function, unicode_literals 23 24 25from .common import NamedInts as _NamedInts 26 27# <controls.xml awk -F\" '/<Control /{sub(/^LD_FINFO_(CTRLID_)?/, "", $2);printf("\t%s=0x%04X,\n", $2, $4)}' | sort -t= -k2 28CONTROL = _NamedInts( 29 Volume_Up=0x0001, 30 Volume_Down=0x0002, 31 Mute=0x0003, 32 Play__Pause=0x0004, 33 Next=0x0005, 34 Previous=0x0006, 35 Stop=0x0007, 36 Application_Switcher=0x0008, 37 BURN=0x0009, 38 Calculator=0x000A, 39 CALENDAR=0x000B, 40 CLOSE=0x000C, 41 EJECT=0x000D, 42 Mail=0x000E, 43 HELP_AS_HID=0x000F, 44 HELP_AS_F1=0x0010, 45 LAUNCH_WORD_PROC=0x0011, 46 LAUNCH_SPREADSHEET=0x0012, 47 LAUNCH_PRESENTATION=0x0013, 48 UNDO_AS_CTRL_Z=0x0014, 49 UNDO_AS_HID=0x0015, 50 REDO_AS_CTRL_Y=0x0016, 51 REDO_AS_HID=0x0017, 52 PRINT_AS_CTRL_P=0x0018, 53 PRINT_AS_HID=0x0019, 54 SAVE_AS_CTRL_S=0x001A, 55 SAVE_AS_HID=0x001B, 56 PRESET_A=0x001C, 57 PRESET_B=0x001D, 58 PRESET_C=0x001E, 59 PRESET_D=0x001F, 60 FAVORITES=0x0020, 61 GADGETS=0x0021, 62 MY_HOME=0x0022, 63 GADGETS_AS_WIN_G=0x0023, 64 MAXIMIZE_AS_HID=0x0024, 65 MAXIMIZE_AS_WIN_SHIFT_M=0x0025, 66 MINIMIZE_AS_HID=0x0026, 67 MINIMIZE_AS_WIN_M=0x0027, 68 MEDIA_PLAYER=0x0028, 69 MEDIA_CENTER_LOGI=0x0029, 70 MEDIA_CENTER_MSFT=0x002A, # Should not be used as it is not reprogrammable under Windows 71 CUSTOM_MENU=0x002B, 72 MESSENGER=0x002C, 73 MY_DOCUMENTS=0x002D, 74 MY_MUSIC=0x002E, 75 WEBCAM=0x002F, 76 MY_PICTURES=0x0030, 77 MY_VIDEOS=0x0031, 78 MY_COMPUTER_AS_HID=0x0032, 79 MY_COMPUTER_AS_WIN_E=0x0033, 80 LAUNC_PICTURE_VIEWER=0x0035, 81 ONE_TOUCH_SEARCH=0x0036, 82 PRESET_1=0x0037, 83 PRESET_2=0x0038, 84 PRESET_3=0x0039, 85 PRESET_4=0x003A, 86 RECORD=0x003B, 87 INTERNET_REFRESH=0x003C, 88 ROTATE_RIGHT=0x003D, 89 SEARCH=0x003E, 90 SHUFFLE=0x003F, 91 SLEEP=0x0040, 92 INTERNET_STOP=0x0041, 93 SYNCHRONIZE=0x0042, 94 ZOOM=0x0043, 95 ZOOM_IN_AS_HID=0x0044, 96 ZOOM_IN_AS_CTRL_WHEEL=0x0045, 97 ZOOM_IN_AS_CLTR_PLUS=0x0046, 98 ZOOM_OUT_AS_HID=0x0047, 99 ZOOM_OUT_AS_CTRL_WHEEL=0x0048, 100 ZOOM_OUT_AS_CLTR_MINUS=0x0049, 101 ZOOM_RESET=0x004A, 102 ZOOM_FULL_SCREEN=0x004B, 103 PRINT_SCREEN=0x004C, 104 PAUSE_BREAK=0x004D, 105 SCROLL_LOCK=0x004E, 106 CONTEXTUAL_MENU=0x004F, 107 LEFT_CLICK=0x0050, 108 RIGHT_CLICK=0x0051, 109 MIDDLE_BUTTON=0x0052, 110 BACK_AS_BUTTON_4=0x0053, 111 BACK_AS_HID=0x0054, 112 BACK_AS_ALT_WIN_ARROW=0x0055, 113 FORWARD_AS_BUTTON_5=0x0056, 114 FORWARD_AS_HID=0x0057, 115 FORWARD_AS_ALT_WIN_ARROW=0x0058, 116 BUTTON_6=0x0059, 117 LEFT_SCROLL_AS_BUTTON_7=0x005A, 118 LEFT_SCROLL_AS_AC_PAN=0x005B, 119 RIGHT_SCROLL_AS_BUTTON_8=0x005C, 120 RIGHT_SCROLL_AS_AC_PAN=0x005D, 121 BUTTON_9=0x005E, 122 BUTTON_10=0x005F, 123 BUTTON_11=0x0060, 124 BUTTON_12=0x0061, 125 BUTTON_13=0x0062, 126 BUTTON_14=0x0063, 127 BUTTON_15=0x0064, 128 BUTTON_16=0x0065, 129 BUTTON_17=0x0066, 130 BUTTON_18=0x0067, 131 BUTTON_19=0x0068, 132 BUTTON_20=0x0069, 133 BUTTON_21=0x006A, 134 BUTTON_22=0x006B, 135 BUTTON_23=0x006C, 136 BUTTON_24=0x006D, 137 SHOW_DESKTOP=0x006E, 138 Lock_PC=0x006F, 139 FN_F1=0x0070, 140 FN_F2=0x0071, 141 FN_F3=0x0072, 142 FN_F4=0x0073, 143 FN_F5=0x0074, 144 FN_F6=0x0075, 145 FN_F7=0x0076, 146 FN_F8=0x0077, 147 FN_F9=0x0078, 148 FN_F10=0x0079, 149 FN_F11=0x007A, 150 FN_F12=0x007B, 151 FN_F13=0x007C, 152 FN_F14=0x007D, 153 FN_F15=0x007E, 154 FN_F16=0x007F, 155 FN_F17=0x0080, 156 FN_F18=0x0081, 157 FN_F19=0x0082, 158 IOS_HOME=0x0083, 159 ANDROID_HOME=0x0084, 160 ANDROID_MENU=0x0085, 161 ANDROID_SEARCH=0x0086, 162 ANDROID_BACK=0x0087, 163 HOME_COMBO=0x0088, 164 LOCK_COMBO=0x0089, 165 IOS_VIRTUAL_KEYBOARD=0x008A, 166 IOS_LANGUAGE_SWICH=0x008B, 167 MAC_EXPOSE=0x008C, 168 MAC_DASHBOARD=0x008D, 169 WIN7_SNAP_LEFT=0x008E, 170 WIN7_SNAP_RIGHT=0x008F, 171 WIN7_MINIMIZE_AS_WIN_ARROW=0x0090, 172 WIN7_MAXIMIZE_AS_WIN_ARROW=0x0091, 173 WIN7_STRETCH_UP=0x0092, 174 WIN7_MONITOR_SWITCH_AS_WIN_SHIFT_LEFTARROW=0x0093, 175 WIN7_MONITOR_SWITCH_AS_WIN_SHIFT_RIGHTARROW=0x0094, 176 WIN7_SHOW_PRESENTATION_MODE=0x0095, 177 WIN7_SHOW_MOBILITY_CENTER=0x0096, 178 ANALOG_HSCROLL=0x0097, 179 METRO_APPSWITCH=0x009F, 180 METRO_APPBAR=0x00A0, 181 METRO_CHARMS=0x00A1, 182 CALC_VKEYBOARD=0x00A2, 183 METRO_SEARCH=0x00A3, 184 COMBO_SLEEP=0x00A4, 185 METRO_SHARE=0x00A5, 186 METRO_SETTINGS=0x00A6, 187 METRO_DEVICES=0x00A7, 188 METRO_START_SCREEN=0x00A9, 189 ZOOMIN=0x00AA, 190 ZOOMOUT=0x00AB, 191 BACK_HSCROLL=0x00AC, 192 SHOW_DESKTOP_HPP=0x00AE, 193) 194CONTROL._fallback = lambda x: 'unknown:%04X' % x 195 196# <tasks.xml awk -F\" '/<Task /{gsub(/ /, "_", $6); printf("\t%s=0x%04X,\n", $6, $4)}' 197TASK = _NamedInts( 198 Volume_Up=0x0001, 199 Volume_Down=0x0002, 200 Mute=0x0003, 201 # Multimedia tasks: 202 Play__Pause=0x0004, 203 Next=0x0005, 204 Previous=0x0006, 205 Stop=0x0007, 206 207 Application_Switcher=0x0008, 208 BurnMediaPlayer=0x0009, 209 Calculator=0x000A, 210 Calendar=0x000B, 211 Close_Application=0x000C, 212 Eject=0x000D, 213 Email=0x000E, 214 Help=0x000F, 215 OffDocument=0x0010, 216 OffSpreadsheet=0x0011, 217 OffPowerpnt=0x0012, 218 Undo=0x0013, 219 Redo=0x0014, 220 Print=0x0015, 221 Save=0x0016, 222 SmartKeySet=0x0017, 223 Favorites=0x0018, 224 GadgetsSet=0x0019, 225 HomePage=0x001A, 226 WindowsRestore=0x001B, 227 WindowsMinimize=0x001C, 228 Music=0x001D, # also known as MediaPlayer 229 230 # Both 0x001E and 0x001F are known as MediaCenterSet 231 Media_Center_Logitech=0x001E, 232 Media_Center_Microsoft=0x001F, 233 234 UserMenu=0x0020, 235 Messenger=0x0021, 236 PersonalFolders=0x0022, 237 MyMusic=0x0023, 238 Webcam=0x0024, 239 PicturesFolder=0x0025, 240 MyVideos=0x0026, 241 My_Computer=0x0027, 242 PictureAppSet=0x0028, 243 Search=0x0029, # also known as AdvSmartSearch 244 RecordMediaPlayer=0x002A, 245 BrowserRefresh=0x002B, 246 RotateRight=0x002C, 247 SearchForFiles=0x002D, 248 MM_SHUFFLE=0x002E, 249 Sleep=0x002F, # also known as StandBySet 250 BrowserStop=0x0030, 251 OneTouchSync=0x0031, 252 ZoomSet=0x0032, 253 ZoomBtnInSet2=0x0033, 254 ZoomBtnInSet=0x0034, 255 ZoomBtnOutSet2=0x0035, 256 ZoomBtnOutSet=0x0036, 257 ZoomBtnResetSet=0x0037, 258 LeftClick=0x0038, 259 RightClick=0x0039, 260 MiddleMouseButton=0x003A, 261 Back=0x003B, 262 BackEx=0x003C, 263 BrowserForward=0x003D, 264 BrowserForwardEx=0x003E, 265 HorzScrollLeftSet=0x003F, 266 HorzScrollRightSet=0x0040, 267 QuickSwitch=0x0041, 268 BatteryStatus=0x0042, 269 ShowDesktop=0x0043, 270 WindowsLock=0x0044, 271 FileLauncher=0x0045, 272 FolderLauncher=0x0046, 273 GotoWebAddress=0x0047, 274 GenericMouseButton=0x0048, 275 KeystrokeAssignment=0x0049, 276 LaunchProgram=0x004A, 277 MinMaxWindow=0x004B, 278 VOLUMEMUTE_NoOSD=0x004C, 279 New=0x004D, 280 Copy=0x004E, 281 CruiseDown=0x004F, 282 CruiseUp=0x0050, 283 Cut=0x0051, 284 Do_Nothing=0x0052, 285 PageDown=0x0053, 286 PageUp=0x0054, 287 Paste=0x0055, 288 SearchPicture=0x0056, 289 Reply=0x0057, 290 PhotoGallerySet=0x0058, 291 MM_REWIND=0x0059, 292 MM_FASTFORWARD=0x005A, 293 Send=0x005B, 294 ControlPanel=0x005C, 295 UniversalScroll=0x005D, 296 AutoScroll=0x005E, 297 GenericButton=0x005F, 298 MM_NEXT=0x0060, 299 MM_PREVIOUS=0x0061, 300 Do_Nothing_One=0x0062, # also known as Do_Nothing 301 SnapLeft=0x0063, 302 SnapRight=0x0064, 303 WinMinRestore=0x0065, 304 WinMaxRestore=0x0066, 305 WinStretch=0x0067, 306 SwitchMonitorLeft=0x0068, 307 SwitchMonitorRight=0x0069, 308 ShowPresentation=0x006A, 309 ShowMobilityCenter=0x006B, 310 HorzScrollNoRepeatSet=0x006C, 311 TouchBackForwardHorzScroll=0x0077, 312 MetroAppSwitch=0x0078, 313 MetroAppBar=0x0079, 314 MetroCharms=0x007A, 315 Calculator_VKEY=0x007B, # also known as Calculator 316 MetroSearch=0x007C, 317 MetroStartScreen=0x0080, 318 MetroShare=0x007D, 319 MetroSettings=0x007E, 320 MetroDevices=0x007F, 321 MetroBackLeftHorz=0x0082, 322 MetroForwRightHorz=0x0083, 323 Win8_Back=0x0084, # also known as MetroCharms 324 Win8_Forward=0x0085, # also known as AppSwitchBar 325 Win8Charm_Appswitch_GifAnimation=0x0086, 326 Win8BackHorzLeft=0x008B, # also known as Back 327 Win8ForwardHorzRight=0x008C, # also known as BrowserForward 328 MetroSearch2=0x0087, 329 MetroShare2=0x0088, 330 MetroSettings2=0x008A, 331 MetroDevices2=0x0089, 332 Win8MetroWin7Forward=0x008D, # also known as MetroStartScreen 333 Win8ShowDesktopWin7Back=0x008E, # also known as ShowDesktop 334 MetroApplicationSwitch=0x0090, # also known as MetroStartScreen 335 ShowUI=0x0092, 336) 337TASK._fallback = lambda x: 'unknown:%04X' % x 338# hidpp 4.5 info from https://lekensteyn.nl/files/logitech/x1b04_specialkeysmsebuttons.html 339KEY_FLAG = _NamedInts( 340 virtual=0x80, 341 persistently_divertable=0x40, 342 divertable=0x20, 343 reprogrammable=0x10, 344 FN_sensitive=0x08, 345 nonstandard=0x04, 346 is_FN=0x02, 347 mse=0x01 348) 349