/xbmc/guilib/Key.h

http://github.com/xbmc/xbmc · C Header · 530 lines · 364 code · 90 blank · 76 comment · 2 complexity · 1d3b1a77f5fd81cb87b3b66fcceb14d8 MD5 · raw file

  1. /*!
  2. \file Key.h
  3. \brief
  4. */
  5. #ifndef GUILIB_KEY
  6. #define GUILIB_KEY
  7. #pragma once
  8. /*
  9. * Copyright (C) 2005-2013 Team XBMC
  10. * http://xbmc.org
  11. *
  12. * This Program is free software; you can redistribute it and/or modify
  13. * it under the terms of the GNU General Public License as published by
  14. * the Free Software Foundation; either version 2, or (at your option)
  15. * any later version.
  16. *
  17. * This Program is distributed in the hope that it will be useful,
  18. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  19. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  20. * GNU General Public License for more details.
  21. *
  22. * You should have received a copy of the GNU General Public License
  23. * along with XBMC; see the file COPYING. If not, see
  24. * <http://www.gnu.org/licenses/>.
  25. *
  26. */
  27. #include "utils/StdString.h"
  28. // Reserved 0 - 255
  29. // XBIRRemote.h
  30. // XINPUT_IR_REMOTE-*
  31. // Analogue - don't change order
  32. #define KEY_BUTTON_A 256
  33. #define KEY_BUTTON_B 257
  34. #define KEY_BUTTON_X 258
  35. #define KEY_BUTTON_Y 259
  36. #define KEY_BUTTON_BLACK 260
  37. #define KEY_BUTTON_WHITE 261
  38. #define KEY_BUTTON_LEFT_TRIGGER 262
  39. #define KEY_BUTTON_RIGHT_TRIGGER 263
  40. #define KEY_BUTTON_LEFT_THUMB_STICK 264
  41. #define KEY_BUTTON_RIGHT_THUMB_STICK 265
  42. #define KEY_BUTTON_RIGHT_THUMB_STICK_UP 266 // right thumb stick directions
  43. #define KEY_BUTTON_RIGHT_THUMB_STICK_DOWN 267 // for defining different actions per direction
  44. #define KEY_BUTTON_RIGHT_THUMB_STICK_LEFT 268
  45. #define KEY_BUTTON_RIGHT_THUMB_STICK_RIGHT 269
  46. // Digital - don't change order
  47. #define KEY_BUTTON_DPAD_UP 270
  48. #define KEY_BUTTON_DPAD_DOWN 271
  49. #define KEY_BUTTON_DPAD_LEFT 272
  50. #define KEY_BUTTON_DPAD_RIGHT 273
  51. #define KEY_BUTTON_START 274
  52. #define KEY_BUTTON_BACK 275
  53. #define KEY_BUTTON_LEFT_THUMB_BUTTON 276
  54. #define KEY_BUTTON_RIGHT_THUMB_BUTTON 277
  55. #define KEY_BUTTON_LEFT_ANALOG_TRIGGER 278
  56. #define KEY_BUTTON_RIGHT_ANALOG_TRIGGER 279
  57. #define KEY_BUTTON_LEFT_THUMB_STICK_UP 280 // left thumb stick directions
  58. #define KEY_BUTTON_LEFT_THUMB_STICK_DOWN 281 // for defining different actions per direction
  59. #define KEY_BUTTON_LEFT_THUMB_STICK_LEFT 282
  60. #define KEY_BUTTON_LEFT_THUMB_STICK_RIGHT 283
  61. #define KEY_VMOUSE 0xEFFF
  62. // 0xF000 -> 0xF200 is reserved for the keyboard; a keyboard press is either
  63. #define KEY_VKEY 0xF000 // a virtual key/functional key e.g. cursor left
  64. #define KEY_ASCII 0xF100 // a printable character in the range of TRUE ASCII (from 0 to 127) // FIXME make it clean and pure unicode! remove the need for KEY_ASCII
  65. #define KEY_UNICODE 0xF200 // another printable character whose range is not included in this KEY code
  66. // 0xE000 -> 0xE0FF is reserved for mouse actions
  67. #define KEY_MOUSE 0xE000
  68. // 0xD000 -> 0xD0FF is reserved for WM_APPCOMMAND messages
  69. #define KEY_APPCOMMAND 0xD000
  70. // 0xF000 -> 0xF0FF is reserved for mouse actions
  71. #define KEY_TOUCH 0xF000
  72. #define KEY_INVALID 0xFFFF
  73. // actions that we have defined...
  74. #define ACTION_NONE 0
  75. #define ACTION_MOVE_LEFT 1
  76. #define ACTION_MOVE_RIGHT 2
  77. #define ACTION_MOVE_UP 3
  78. #define ACTION_MOVE_DOWN 4
  79. #define ACTION_PAGE_UP 5
  80. #define ACTION_PAGE_DOWN 6
  81. #define ACTION_SELECT_ITEM 7
  82. #define ACTION_HIGHLIGHT_ITEM 8
  83. #define ACTION_PARENT_DIR 9
  84. #define ACTION_PREVIOUS_MENU 10
  85. #define ACTION_SHOW_INFO 11
  86. #define ACTION_PAUSE 12
  87. #define ACTION_STOP 13
  88. #define ACTION_NEXT_ITEM 14
  89. #define ACTION_PREV_ITEM 15
  90. #define ACTION_FORWARD 16 // Can be used to specify specific action in a window, Playback control is handled in ACTION_PLAYER_*
  91. #define ACTION_REWIND 17 // Can be used to specify specific action in a window, Playback control is handled in ACTION_PLAYER_*
  92. #define ACTION_SHOW_GUI 18 // toggle between GUI and movie or GUI and visualisation.
  93. #define ACTION_ASPECT_RATIO 19 // toggle quick-access zoom modes. Can b used in videoFullScreen.zml window id=2005
  94. #define ACTION_STEP_FORWARD 20 // seek +1% in the movie. Can b used in videoFullScreen.xml window id=2005
  95. #define ACTION_STEP_BACK 21 // seek -1% in the movie. Can b used in videoFullScreen.xml window id=2005
  96. #define ACTION_BIG_STEP_FORWARD 22 // seek +10% in the movie. Can b used in videoFullScreen.xml window id=2005
  97. #define ACTION_BIG_STEP_BACK 23 // seek -10% in the movie. Can b used in videoFullScreen.xml window id=2005
  98. #define ACTION_SHOW_OSD 24 // show/hide OSD. Can b used in videoFullScreen.xml window id=2005
  99. #define ACTION_SHOW_SUBTITLES 25 // turn subtitles on/off. Can b used in videoFullScreen.xml window id=2005
  100. #define ACTION_NEXT_SUBTITLE 26 // switch to next subtitle of movie. Can b used in videoFullScreen.xml window id=2005
  101. #define ACTION_SHOW_CODEC 27 // show information about file. Can b used in videoFullScreen.xml window id=2005 and in slideshow.xml window id=2007
  102. #define ACTION_NEXT_PICTURE 28 // show next picture of slideshow. Can b used in slideshow.xml window id=2007
  103. #define ACTION_PREV_PICTURE 29 // show previous picture of slideshow. Can b used in slideshow.xml window id=2007
  104. #define ACTION_ZOOM_OUT 30 // zoom in picture during slideshow. Can b used in slideshow.xml window id=2007
  105. #define ACTION_ZOOM_IN 31 // zoom out picture during slideshow. Can b used in slideshow.xml window id=2007
  106. #define ACTION_TOGGLE_SOURCE_DEST 32 // used to toggle between source view and destination view. Can be used in myfiles.xml window id=3
  107. #define ACTION_SHOW_PLAYLIST 33 // used to toggle between current view and playlist view. Can b used in all mymusic xml files
  108. #define ACTION_QUEUE_ITEM 34 // used to queue a item to the playlist. Can b used in all mymusic xml files
  109. #define ACTION_REMOVE_ITEM 35 // not used anymore
  110. #define ACTION_SHOW_FULLSCREEN 36 // not used anymore
  111. #define ACTION_ZOOM_LEVEL_NORMAL 37 // zoom 1x picture during slideshow. Can b used in slideshow.xml window id=2007
  112. #define ACTION_ZOOM_LEVEL_1 38 // zoom 2x picture during slideshow. Can b used in slideshow.xml window id=2007
  113. #define ACTION_ZOOM_LEVEL_2 39 // zoom 3x picture during slideshow. Can b used in slideshow.xml window id=2007
  114. #define ACTION_ZOOM_LEVEL_3 40 // zoom 4x picture during slideshow. Can b used in slideshow.xml window id=2007
  115. #define ACTION_ZOOM_LEVEL_4 41 // zoom 5x picture during slideshow. Can b used in slideshow.xml window id=2007
  116. #define ACTION_ZOOM_LEVEL_5 42 // zoom 6x picture during slideshow. Can b used in slideshow.xml window id=2007
  117. #define ACTION_ZOOM_LEVEL_6 43 // zoom 7x picture during slideshow. Can b used in slideshow.xml window id=2007
  118. #define ACTION_ZOOM_LEVEL_7 44 // zoom 8x picture during slideshow. Can b used in slideshow.xml window id=2007
  119. #define ACTION_ZOOM_LEVEL_8 45 // zoom 9x picture during slideshow. Can b used in slideshow.xml window id=2007
  120. #define ACTION_ZOOM_LEVEL_9 46 // zoom 10x picture during slideshow. Can b used in slideshow.xml window id=2007
  121. #define ACTION_CALIBRATE_SWAP_ARROWS 47 // select next arrow. Can b used in: settingsScreenCalibration.xml windowid=11
  122. #define ACTION_CALIBRATE_RESET 48 // reset calibration to defaults. Can b used in: settingsScreenCalibration.xml windowid=11/settingsUICalibration.xml windowid=10
  123. #define ACTION_ANALOG_MOVE 49 // analog thumbstick move. Can b used in: slideshow.xml window id=2007/settingsScreenCalibration.xml windowid=11/settingsUICalibration.xml windowid=10
  124. #define ACTION_ROTATE_PICTURE_CW 50 // rotate current picture clockwise during slideshow. Can be used in slideshow.xml window id=2007
  125. #define ACTION_ROTATE_PICTURE_CCW 51 // rotate current picture counterclockwise during slideshow. Can be used in slideshow.xml window id=2007
  126. #define ACTION_SUBTITLE_DELAY_MIN 52 // Decrease subtitle/movie Delay. Can b used in videoFullScreen.xml window id=2005
  127. #define ACTION_SUBTITLE_DELAY_PLUS 53 // Increase subtitle/movie Delay. Can b used in videoFullScreen.xml window id=2005
  128. #define ACTION_AUDIO_DELAY_MIN 54 // Increase avsync delay. Can b used in videoFullScreen.xml window id=2005
  129. #define ACTION_AUDIO_DELAY_PLUS 55 // Decrease avsync delay. Can b used in videoFullScreen.xml window id=2005
  130. #define ACTION_AUDIO_NEXT_LANGUAGE 56 // Select next language in movie. Can b used in videoFullScreen.xml window id=2005
  131. #define ACTION_CHANGE_RESOLUTION 57 // switch 2 next resolution. Can b used during screen calibration settingsScreenCalibration.xml windowid=11
  132. #define REMOTE_0 58 // remote keys 0-9. are used by multiple windows
  133. #define REMOTE_1 59 // for example in videoFullScreen.xml window id=2005 you can
  134. #define REMOTE_2 60 // enter time (mmss) to jump to particular point in the movie
  135. #define REMOTE_3 61
  136. #define REMOTE_4 62 // with spincontrols you can enter 3digit number to quickly set
  137. #define REMOTE_5 63 // spincontrol to desired value
  138. #define REMOTE_6 64
  139. #define REMOTE_7 65
  140. #define REMOTE_8 66
  141. #define REMOTE_9 67
  142. #define ACTION_PLAY 68 // Unused at the moment
  143. #define ACTION_OSD_SHOW_LEFT 69 // Move left in OSD. Can b used in videoFullScreen.xml window id=2005
  144. #define ACTION_OSD_SHOW_RIGHT 70 // Move right in OSD. Can b used in videoFullScreen.xml window id=2005
  145. #define ACTION_OSD_SHOW_UP 71 // Move up in OSD. Can b used in videoFullScreen.xml window id=2005
  146. #define ACTION_OSD_SHOW_DOWN 72 // Move down in OSD. Can b used in videoFullScreen.xml window id=2005
  147. #define ACTION_OSD_SHOW_SELECT 73 // toggle/select option in OSD. Can b used in videoFullScreen.xml window id=2005
  148. #define ACTION_OSD_SHOW_VALUE_PLUS 74 // increase value of current option in OSD. Can b used in videoFullScreen.xml window id=2005
  149. #define ACTION_OSD_SHOW_VALUE_MIN 75 // decrease value of current option in OSD. Can b used in videoFullScreen.xml window id=2005
  150. #define ACTION_SMALL_STEP_BACK 76 // jumps a few seconds back during playback of movie. Can b used in videoFullScreen.xml window id=2005
  151. #define ACTION_PLAYER_FORWARD 77 // FF in current file played. global action, can be used anywhere
  152. #define ACTION_PLAYER_REWIND 78 // RW in current file played. global action, can be used anywhere
  153. #define ACTION_PLAYER_PLAY 79 // Play current song. Unpauses song and sets playspeed to 1x. global action, can be used anywhere
  154. #define ACTION_DELETE_ITEM 80 // delete current selected item. Can be used in myfiles.xml window id=3 and in myvideoTitle.xml window id=25
  155. #define ACTION_COPY_ITEM 81 // copy current selected item. Can be used in myfiles.xml window id=3
  156. #define ACTION_MOVE_ITEM 82 // move current selected item. Can be used in myfiles.xml window id=3
  157. #define ACTION_SHOW_MPLAYER_OSD 83 // toggles mplayers OSD. Can be used in videofullscreen.xml window id=2005
  158. #define ACTION_OSD_HIDESUBMENU 84 // removes an OSD sub menu. Can be used in videoOSD.xml window id=2901
  159. #define ACTION_TAKE_SCREENSHOT 85 // take a screenshot
  160. #define ACTION_RENAME_ITEM 87 // rename item
  161. #define ACTION_VOLUME_UP 88
  162. #define ACTION_VOLUME_DOWN 89
  163. #define ACTION_MUTE 91
  164. #define ACTION_NAV_BACK 92
  165. #define ACTION_VOLAMP_UP 93
  166. #define ACTION_VOLAMP_DOWN 94
  167. #define ACTION_CREATE_EPISODE_BOOKMARK 95 //Creates an episode bookmark on the currently playing video file containing more than one episode
  168. #define ACTION_CREATE_BOOKMARK 96 //Creates a bookmark of the currently playing video file
  169. #define ACTION_CHAPTER_OR_BIG_STEP_FORWARD 97 // Goto the next chapter, if not available perform a big step forward
  170. #define ACTION_CHAPTER_OR_BIG_STEP_BACK 98 // Goto the previous chapter, if not available perform a big step back
  171. #define ACTION_MOUSE_START 100
  172. #define ACTION_MOUSE_LEFT_CLICK 100
  173. #define ACTION_MOUSE_RIGHT_CLICK 101
  174. #define ACTION_MOUSE_MIDDLE_CLICK 102
  175. #define ACTION_MOUSE_DOUBLE_CLICK 103
  176. #define ACTION_MOUSE_WHEEL_UP 104
  177. #define ACTION_MOUSE_WHEEL_DOWN 105
  178. #define ACTION_MOUSE_DRAG 106
  179. #define ACTION_MOUSE_MOVE 107
  180. #define ACTION_MOUSE_END 109
  181. #define ACTION_BACKSPACE 110
  182. #define ACTION_SCROLL_UP 111
  183. #define ACTION_SCROLL_DOWN 112
  184. #define ACTION_ANALOG_FORWARD 113
  185. #define ACTION_ANALOG_REWIND 114
  186. #define ACTION_MOVE_ITEM_UP 115 // move item up in playlist
  187. #define ACTION_MOVE_ITEM_DOWN 116 // move item down in playlist
  188. #define ACTION_CONTEXT_MENU 117 // pops up the context menu
  189. // stuff for virtual keyboard shortcuts
  190. #define ACTION_SHIFT 118
  191. #define ACTION_SYMBOLS 119
  192. #define ACTION_CURSOR_LEFT 120
  193. #define ACTION_CURSOR_RIGHT 121
  194. #define ACTION_BUILT_IN_FUNCTION 122
  195. #define ACTION_SHOW_OSD_TIME 123 // displays current time, can be used in videoFullScreen.xml window id=2005
  196. #define ACTION_ANALOG_SEEK_FORWARD 124 // seeks forward, and displays the seek bar.
  197. #define ACTION_ANALOG_SEEK_BACK 125 // seeks backward, and displays the seek bar.
  198. #define ACTION_VIS_PRESET_SHOW 126
  199. #define ACTION_VIS_PRESET_LIST 127
  200. #define ACTION_VIS_PRESET_NEXT 128
  201. #define ACTION_VIS_PRESET_PREV 129
  202. #define ACTION_VIS_PRESET_LOCK 130
  203. #define ACTION_VIS_PRESET_RANDOM 131
  204. #define ACTION_VIS_RATE_PRESET_PLUS 132
  205. #define ACTION_VIS_RATE_PRESET_MINUS 133
  206. #define ACTION_SHOW_VIDEOMENU 134
  207. #define ACTION_ENTER 135
  208. #define ACTION_INCREASE_RATING 136
  209. #define ACTION_DECREASE_RATING 137
  210. #define ACTION_NEXT_SCENE 138 // switch to next scene/cutpoint in movie
  211. #define ACTION_PREV_SCENE 139 // switch to previous scene/cutpoint in movie
  212. #define ACTION_NEXT_LETTER 140 // jump through a list or container by letter
  213. #define ACTION_PREV_LETTER 141
  214. #define ACTION_JUMP_SMS2 142 // jump direct to a particular letter using SMS-style input
  215. #define ACTION_JUMP_SMS3 143
  216. #define ACTION_JUMP_SMS4 144
  217. #define ACTION_JUMP_SMS5 145
  218. #define ACTION_JUMP_SMS6 146
  219. #define ACTION_JUMP_SMS7 147
  220. #define ACTION_JUMP_SMS8 148
  221. #define ACTION_JUMP_SMS9 149
  222. #define ACTION_FILTER_CLEAR 150
  223. #define ACTION_FILTER_SMS2 151
  224. #define ACTION_FILTER_SMS3 152
  225. #define ACTION_FILTER_SMS4 153
  226. #define ACTION_FILTER_SMS5 154
  227. #define ACTION_FILTER_SMS6 155
  228. #define ACTION_FILTER_SMS7 156
  229. #define ACTION_FILTER_SMS8 157
  230. #define ACTION_FILTER_SMS9 158
  231. #define ACTION_FIRST_PAGE 159
  232. #define ACTION_LAST_PAGE 160
  233. #define ACTION_AUDIO_DELAY 161
  234. #define ACTION_SUBTITLE_DELAY 162
  235. #define ACTION_RECORD 170
  236. #define ACTION_PASTE 180
  237. #define ACTION_NEXT_CONTROL 181
  238. #define ACTION_PREV_CONTROL 182
  239. #define ACTION_CHANNEL_SWITCH 183
  240. #define ACTION_CHANNEL_UP 184
  241. #define ACTION_CHANNEL_DOWN 185
  242. #define ACTION_NEXT_CHANNELGROUP 186
  243. #define ACTION_PREVIOUS_CHANNELGROUP 187
  244. #define ACTION_PVR_PLAY 188
  245. #define ACTION_PVR_PLAY_TV 189
  246. #define ACTION_PVR_PLAY_RADIO 190
  247. #define ACTION_TOGGLE_FULLSCREEN 199 // switch 2 desktop resolution
  248. #define ACTION_TOGGLE_WATCHED 200 // Toggle watched status (videos)
  249. #define ACTION_SCAN_ITEM 201 // scan item
  250. #define ACTION_TOGGLE_DIGITAL_ANALOG 202 // switch digital <-> analog
  251. #define ACTION_RELOAD_KEYMAPS 203 // reloads CButtonTranslator's keymaps
  252. #define ACTION_GUIPROFILE_BEGIN 204 // start the GUIControlProfiler running
  253. #define ACTION_TELETEXT_RED 215 // Teletext Color buttons to control TopText
  254. #define ACTION_TELETEXT_GREEN 216 // " " " " " "
  255. #define ACTION_TELETEXT_YELLOW 217 // " " " " " "
  256. #define ACTION_TELETEXT_BLUE 218 // " " " " " "
  257. #define ACTION_INCREASE_PAR 219
  258. #define ACTION_DECREASE_PAR 220
  259. #define ACTION_VSHIFT_UP 227 // shift up video image in DVDPlayer
  260. #define ACTION_VSHIFT_DOWN 228 // shift down video image in DVDPlayer
  261. #define ACTION_PLAYER_PLAYPAUSE 229 // Play/pause. If playing it pauses, if paused it plays.
  262. #define ACTION_SUBTITLE_VSHIFT_UP 230 // shift up subtitles in DVDPlayer
  263. #define ACTION_SUBTITLE_VSHIFT_DOWN 231 // shift down subtitles in DVDPlayer
  264. #define ACTION_SUBTITLE_ALIGN 232 // toggle vertical alignment of subtitles
  265. #define ACTION_FILTER 233
  266. #define ACTION_SWITCH_PLAYER 234
  267. #define ACTION_STEREOMODE_NEXT 235
  268. #define ACTION_STEREOMODE_PREVIOUS 236
  269. #define ACTION_STEREOMODE_TOGGLE 237 // turns 3d mode on/off
  270. #define ACTION_STEREOMODE_SELECT 238
  271. #define ACTION_STEREOMODE_TOMONO 239
  272. #define ACTION_SETTINGS_RESET 240
  273. #define ACTION_SETTINGS_LEVEL_CHANGE 241
  274. // touch actions
  275. #define ACTION_TOUCH_TAP 401
  276. #define ACTION_TOUCH_TAP_TEN 410
  277. #define ACTION_TOUCH_LONGPRESS 411
  278. #define ACTION_TOUCH_LONGPRESS_TEN 420
  279. #define ACTION_GESTURE_NOTIFY 500
  280. #define ACTION_GESTURE_BEGIN 501
  281. #define ACTION_GESTURE_ZOOM 502 //sendaction with point and currentPinchScale (fingers together < 1.0 -> fingers apart > 1.0)
  282. #define ACTION_GESTURE_ROTATE 503
  283. #define ACTION_GESTURE_PAN 504
  284. #define ACTION_GESTURE_SWIPE_LEFT 511
  285. #define ACTION_GESTURE_SWIPE_LEFT_TEN 520
  286. #define ACTION_GESTURE_SWIPE_RIGHT 521
  287. #define ACTION_GESTURE_SWIPE_RIGHT_TEN 530
  288. #define ACTION_GESTURE_SWIPE_UP 531
  289. #define ACTION_GESTURE_SWIPE_UP_TEN 540
  290. #define ACTION_GESTURE_SWIPE_DOWN 541
  291. #define ACTION_GESTURE_SWIPE_DOWN_TEN 550
  292. // 5xx is reserved for additional gesture actions
  293. #define ACTION_GESTURE_END 599
  294. // The NOOP action can be specified to disable an input event. This is
  295. // useful in user keyboard.xml etc to disable actions specified in the
  296. // system mappings.
  297. #define ACTION_NOOP 999
  298. #define ICON_TYPE_NONE 101
  299. #define ICON_TYPE_PROGRAMS 102
  300. #define ICON_TYPE_MUSIC 103
  301. #define ICON_TYPE_PICTURES 104
  302. #define ICON_TYPE_VIDEOS 105
  303. #define ICON_TYPE_FILES 106
  304. #define ICON_TYPE_WEATHER 107
  305. #define ICON_TYPE_SETTINGS 109
  306. #ifndef SWIG
  307. class CKey;
  308. /*!
  309. \ingroup actionkeys
  310. \brief class encapsulating information regarding a particular user action to be sent to windows and controls
  311. */
  312. class CAction
  313. {
  314. public:
  315. CAction(int actionID, float amount1 = 1.0f, float amount2 = 0.0f, const CStdString &name = "", unsigned int holdTime = 0);
  316. CAction(int actionID, wchar_t unicode);
  317. CAction(int actionID, unsigned int state, float posX, float posY, float offsetX, float offsetY, const CStdString &name = "");
  318. CAction(int actionID, const CStdString &name, const CKey &key);
  319. /*! \brief Identifier of the action
  320. \return id of the action
  321. */
  322. int GetID() const { return m_id; };
  323. /*! \brief Is this an action from the mouse
  324. \return true if this is a mouse action, false otherwise
  325. */
  326. bool IsMouse() const { return (m_id >= ACTION_MOUSE_START && m_id <= ACTION_MOUSE_END); };
  327. bool IsGesture() const { return (m_id >= ACTION_GESTURE_NOTIFY && m_id <= ACTION_GESTURE_END); };
  328. /*! \brief Human-readable name of the action
  329. \return name of the action
  330. */
  331. const CStdString &GetName() const { return m_name; };
  332. /*! \brief Get an amount associated with this action
  333. \param zero-based index of amount to retrieve, defaults to 0
  334. \return an amount associated with this action
  335. */
  336. float GetAmount(unsigned int index = 0) const { return (index < max_amounts) ? m_amount[index] : 0; };
  337. /*! \brief Unicode value associated with this action
  338. \return unicode value associated with this action, for keyboard input.
  339. */
  340. wchar_t GetUnicode() const { return m_unicode; };
  341. /*! \brief Time in ms that the key has been held
  342. \return time that the key has been held down in ms.
  343. */
  344. unsigned int GetHoldTime() const { return m_holdTime; };
  345. /*! \brief Time since last repeat in ms
  346. \return time since last repeat in ms. Returns 0 if unknown.
  347. */
  348. float GetRepeat() const { return m_repeat; };
  349. /*! \brief Button code that triggered this action
  350. \return button code
  351. */
  352. unsigned int GetButtonCode() const { return m_buttonCode; };
  353. private:
  354. int m_id;
  355. CStdString m_name;
  356. static const unsigned int max_amounts = 4; // Must be at least 4.
  357. float m_amount[max_amounts];
  358. float m_repeat;
  359. unsigned int m_holdTime;
  360. unsigned int m_buttonCode;
  361. wchar_t m_unicode;
  362. };
  363. /*!
  364. \ingroup actionkeys, mouse
  365. \brief Simple class for mouse events
  366. */
  367. class CMouseEvent
  368. {
  369. public:
  370. CMouseEvent(int actionID, int state = 0, float offsetX = 0, float offsetY = 0)
  371. {
  372. m_id = actionID;
  373. m_state = state;
  374. m_offsetX = offsetX;
  375. m_offsetY = offsetY;
  376. };
  377. int m_id;
  378. int m_state;
  379. float m_offsetX;
  380. float m_offsetY;
  381. };
  382. /*!
  383. \ingroup actionkeys
  384. \brief
  385. */
  386. class CKey
  387. {
  388. public:
  389. CKey(void);
  390. CKey(uint32_t buttonCode, uint8_t leftTrigger = 0, uint8_t rightTrigger = 0, float leftThumbX = 0.0f, float leftThumbY = 0.0f, float rightThumbX = 0.0f, float rightThumbY = 0.0f, float repeat = 0.0f);
  391. CKey(uint32_t buttonCode, unsigned int held);
  392. CKey(uint8_t vkey, wchar_t unicode, char ascii, uint32_t modifiers, unsigned int held);
  393. CKey(const CKey& key);
  394. virtual ~CKey(void);
  395. CKey& operator=(const CKey& key);
  396. uint8_t GetLeftTrigger() const;
  397. uint8_t GetRightTrigger() const;
  398. float GetLeftThumbX() const;
  399. float GetLeftThumbY() const;
  400. float GetRightThumbX() const;
  401. float GetRightThumbY() const;
  402. float GetRepeat() const;
  403. bool FromKeyboard() const;
  404. bool IsAnalogButton() const;
  405. bool IsIRRemote() const;
  406. void SetFromService(bool fromService);
  407. bool GetFromService() const { return m_fromService; }
  408. inline uint32_t GetButtonCode() const { return m_buttonCode; }
  409. inline uint8_t GetVKey() const { return m_vkey; }
  410. inline wchar_t GetUnicode() const { return m_unicode; }
  411. inline char GetAscii() const { return m_ascii; }
  412. inline uint32_t GetModifiers() const { return m_modifiers; };
  413. inline unsigned int GetHeld() const { return m_held; }
  414. enum Modifier {
  415. MODIFIER_CTRL = 0x00010000,
  416. MODIFIER_SHIFT = 0x00020000,
  417. MODIFIER_ALT = 0x00040000,
  418. MODIFIER_RALT = 0x00080000,
  419. MODIFIER_SUPER = 0x00100000,
  420. MODIFIER_META = 0X00200000
  421. };
  422. private:
  423. void Reset();
  424. uint32_t m_buttonCode;
  425. uint8_t m_vkey;
  426. wchar_t m_unicode;
  427. char m_ascii;
  428. uint32_t m_modifiers;
  429. unsigned int m_held;
  430. uint8_t m_leftTrigger;
  431. uint8_t m_rightTrigger;
  432. float m_leftThumbX;
  433. float m_leftThumbY;
  434. float m_rightThumbX;
  435. float m_rightThumbY;
  436. float m_repeat; // time since last keypress
  437. bool m_fromService;
  438. };
  439. #endif //undef SWIG
  440. #endif