vlc_keys.h
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:10k
源码类别:

midi

开发平台:

Unix_Linux

  1. /*****************************************************************************
  2.  * vlc_keys.h: keycode defines
  3.  *****************************************************************************
  4.  * Copyright (C) 2003 the VideoLAN team
  5.  * $Id: 450a6f3213cdc007a04675ad06f84a313460601d $
  6.  *
  7.  * Authors: Sigmund Augdal Helberg <dnumgis@videolan.org>
  8.  *
  9.  * This program is free software; you can redistribute it and/or modify
  10.  * it under the terms of the GNU General Public License as published by
  11.  * the Free Software Foundation; either version 2 of the License, or
  12.  * (at your option) any later version.
  13.  *
  14.  * This program is distributed in the hope that it will be useful,
  15.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  * GNU General Public License for more details.
  18.  *
  19.  * You should have received a copy of the GNU General Public License
  20.  * along with this program; if not, write to the Free Software
  21.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  22.  *****************************************************************************/
  23. #ifndef VLC_KEYS_H
  24. #define VLC_KEYS_H 1
  25. /**
  26.  * file
  27.  * This file defines keys, functions and structures for hotkey handling in vlc
  28.  *
  29.  */
  30. #define KEY_MODIFIER         0xFF000000
  31. #define KEY_MODIFIER_ALT     0x01000000
  32. #define KEY_MODIFIER_SHIFT   0x02000000
  33. #define KEY_MODIFIER_CTRL    0x04000000
  34. #define KEY_MODIFIER_META    0x08000000
  35. #define KEY_MODIFIER_COMMAND 0x10000000
  36. #define KEY_SPECIAL          0x00FF0000
  37. #define KEY_LEFT             0x00010000
  38. #define KEY_RIGHT            0x00020000
  39. #define KEY_UP               0x00030000
  40. #define KEY_DOWN             0x00040000
  41. #define KEY_SPACE            0x00050000
  42. #define KEY_ENTER            0x00060000
  43. #define KEY_F1               0x00070000
  44. #define KEY_F2               0x00080000
  45. #define KEY_F3               0x00090000
  46. #define KEY_F4               0x000A0000
  47. #define KEY_F5               0x000B0000
  48. #define KEY_F6               0x000C0000
  49. #define KEY_F7               0x000D0000
  50. #define KEY_F8               0x000E0000
  51. #define KEY_F9               0x000F0000
  52. #define KEY_F10              0x00100000
  53. #define KEY_F11              0x00110000
  54. #define KEY_F12              0x00120000
  55. #define KEY_HOME             0x00130000
  56. #define KEY_END              0x00140000
  57. #define KEY_INSERT           0x00150000
  58. #define KEY_DELETE           0x00160000
  59. #define KEY_MENU             0x00170000
  60. #define KEY_ESC              0x00180000
  61. #define KEY_PAGEUP           0x00190000
  62. #define KEY_PAGEDOWN         0x001A0000
  63. #define KEY_TAB              0x001B0000
  64. #define KEY_BACKSPACE        0x001C0000
  65. #define KEY_MOUSEWHEELUP     0x001D0000
  66. #define KEY_MOUSEWHEELDOWN   0x001E0000
  67. #define KEY_MOUSEWHEELLEFT   0x001F0000
  68. #define KEY_MOUSEWHEELRIGHT  0x00200000
  69. /* TODO:
  70.  * The media keys are only used in win32. Support for other OSes needs to
  71.  * be added */
  72. #define KEY_BROWSER_BACK     0x001F0000
  73. #define KEY_BROWSER_FORWARD  0x00200000
  74. #define KEY_BROWSER_REFRESH  0x00210000
  75. #define KEY_BROWSER_STOP     0x00220000
  76. #define KEY_BROWSER_SEARCH   0x00230000
  77. #define KEY_BROWSER_FAVORITES 0x00240000
  78. #define KEY_BROWSER_HOME     0x00250000
  79. #define KEY_VOLUME_MUTE      0x00260000
  80. #define KEY_VOLUME_DOWN      0x00270000
  81. #define KEY_VOLUME_UP        0x00280000
  82. #define KEY_MEDIA_NEXT_TRACK 0x00290000
  83. #define KEY_MEDIA_PREV_TRACK 0x002a0000
  84. #define KEY_MEDIA_STOP       0x002b0000
  85. #define KEY_MEDIA_PLAY_PAUSE 0x002c0000
  86. #define KEY_ASCII            0x0000007F
  87. #define KEY_UNSET            0
  88. typedef struct key_descriptor_s
  89. {
  90.     const char *psz_key_string;
  91.     int i_key_code;
  92. } key_descriptor_t;
  93. #define ADD_KEY(a) { a, *a }
  94. static const struct key_descriptor_s vlc_modifiers[] =
  95. {
  96.     { "Alt", KEY_MODIFIER_ALT },
  97.     { "Shift", KEY_MODIFIER_SHIFT },
  98.     { "Ctrl", KEY_MODIFIER_CTRL },
  99.     { "Meta", KEY_MODIFIER_META },
  100.     { "Command", KEY_MODIFIER_COMMAND }
  101. };
  102. static const struct key_descriptor_s vlc_keys[] =
  103. {
  104.     { "Unset", KEY_UNSET },
  105.     { "Left", KEY_LEFT },
  106.     { "Right", KEY_RIGHT },
  107.     { "Up", KEY_UP },
  108.     { "Down", KEY_DOWN },
  109.     { "Space", KEY_SPACE },
  110.     { "Enter", KEY_ENTER },
  111.     { "F1", KEY_F1 },
  112.     { "F2", KEY_F2 },
  113.     { "F3", KEY_F3 },
  114.     { "F4", KEY_F4 },
  115.     { "F5", KEY_F5 },
  116.     { "F6", KEY_F6 },
  117.     { "F7", KEY_F7 },
  118.     { "F8", KEY_F8 },
  119.     { "F9", KEY_F9 },
  120.     { "F10", KEY_F10 },
  121.     { "F11", KEY_F11 },
  122.     { "F12", KEY_F12 },
  123.     { "Home", KEY_HOME },
  124.     { "End", KEY_END },
  125.     { "Insert", KEY_INSERT },
  126.     { "Delete", KEY_DELETE },
  127.     { "Menu", KEY_MENU },
  128.     { "Esc", KEY_ESC },
  129.     { "Page Up", KEY_PAGEUP },
  130.     { "Page Down", KEY_PAGEDOWN },
  131.     { "Tab", KEY_TAB },
  132.     { "Backspace", KEY_BACKSPACE },
  133.     { "Mouse Wheel Up", KEY_MOUSEWHEELUP },
  134.     { "Mouse Wheel Down", KEY_MOUSEWHEELDOWN },
  135.     { "0", '0' },
  136.     { "1", '1' },
  137.     { "2", '2' },
  138.     { "3", '3' },
  139.     { "4", '4' },
  140.     { "5", '5' },
  141.     { "6", '6' },
  142.     { "7", '7' },
  143.     { "8", '8' },
  144.     { "9", '9' },
  145.     { "a", 'a' },
  146.     { "b", 'b' },
  147.     { "c", 'c' },
  148.     { "d", 'd' },
  149.     { "e", 'e' },
  150.     { "f", 'f' },
  151.     { "g", 'g' },
  152.     { "h", 'h' },
  153.     { "i", 'i' },
  154.     { "j", 'j' },
  155.     { "k", 'k' },
  156.     { "l", 'l' },
  157.     { "m", 'm' },
  158.     { "n", 'n' },
  159.     { "o", 'o' },
  160.     { "p", 'p' },
  161.     { "q", 'q' },
  162.     { "r", 'r' },
  163.     { "s", 's' },
  164.     { "t", 't' },
  165.     { "u", 'u' },
  166.     { "v", 'v' },
  167.     { "w", 'w' },
  168.     { "x", 'x' },
  169.     { "y", 'y' },
  170.     { "z", 'z' },
  171.     { "!", '!' },
  172.     { """, '"' },
  173.     { "#", '#' },
  174.     { "$", '$' },
  175.     { "%", '%' },
  176.     { "&", '&' },
  177.     { "'", ''' },
  178.     { "(", ')' },
  179.     { ")", ')' },
  180.     { "*", '*' },
  181.     { "+", '+' },
  182.     { ",", ',' },
  183.     { "-", '-' },
  184.     { ".", '.' },
  185.     { "/", '/' },
  186.     { ":", ':' },
  187.     { ";", ';' },
  188.     { "<", '<' },
  189.     { "=", '=' },
  190.     { ">", '>' },
  191.     { "?", '?' },
  192.     { "@", '@' },
  193.     { "[", '[' },
  194.     { "\", '\' },
  195.     { "]", ']' },
  196.     { "^", '^' },
  197.     { "_", '_' },
  198.     { "`", '`' },
  199.     { "Browser Back", KEY_BROWSER_BACK },
  200.     { "Browser Forward", KEY_BROWSER_FORWARD },
  201.     { "Browser Refresh", KEY_BROWSER_REFRESH },
  202.     { "Browser Stop", KEY_BROWSER_STOP },
  203.     { "Browser Search", KEY_BROWSER_SEARCH },
  204.     { "Browser Favorites", KEY_BROWSER_FAVORITES },
  205.     { "Browser Home", KEY_BROWSER_HOME },
  206.     { "Volume Mute", KEY_VOLUME_MUTE },
  207.     { "Volume Down", KEY_VOLUME_DOWN },
  208.     { "Volume Up", KEY_VOLUME_UP },
  209.     { "Media Next Track", KEY_MEDIA_NEXT_TRACK },
  210.     { "Media Prev Track", KEY_MEDIA_PREV_TRACK },
  211.     { "Media Stop", KEY_MEDIA_STOP },
  212.     { "Media Play Pause", KEY_MEDIA_PLAY_PAUSE }
  213. };
  214. static inline const char *KeyToString( int i_key )
  215. {
  216.     unsigned int i = 0;
  217.     for ( i = 0; i < sizeof(vlc_keys) / sizeof(key_descriptor_t); i++ )
  218.     {
  219.         if ( vlc_keys[i].i_key_code == i_key )
  220.         {
  221.             return vlc_keys[i].psz_key_string;
  222.         }
  223.     }
  224.     return NULL;
  225. }
  226. static inline int StringToKey( char *psz_key )
  227. {
  228.     unsigned int i = 0;
  229.     for ( i = 0; i < sizeof(vlc_keys) / sizeof(key_descriptor_t); i++ )
  230.     {
  231.         if ( !strcmp( vlc_keys[i].psz_key_string, psz_key ))
  232.         {
  233.             return vlc_keys[i].i_key_code;
  234.         }
  235.     }
  236.     return 0;
  237. }
  238. typedef enum vlc_key {
  239.     ACTIONID_QUIT = 1,
  240.     ACTIONID_PLAY_PAUSE,
  241.     ACTIONID_PLAY,
  242.     ACTIONID_PAUSE,
  243.     ACTIONID_STOP,
  244.     ACTIONID_PREV,
  245.     ACTIONID_NEXT,
  246.     ACTIONID_SLOWER,
  247.     ACTIONID_FASTER,
  248.     ACTIONID_TOGGLE_FULLSCREEN,
  249.     ACTIONID_VOL_UP,
  250.     ACTIONID_VOL_DOWN,
  251.     ACTIONID_NAV_ACTIVATE,
  252.     ACTIONID_NAV_UP,
  253.     ACTIONID_NAV_DOWN,
  254.     ACTIONID_NAV_LEFT,
  255.     ACTIONID_NAV_RIGHT,
  256.     ACTIONID_JUMP_BACKWARD_EXTRASHORT,
  257.     ACTIONID_JUMP_FORWARD_EXTRASHORT,
  258.     ACTIONID_JUMP_BACKWARD_SHORT,
  259.     ACTIONID_JUMP_FORWARD_SHORT,
  260.     ACTIONID_JUMP_BACKWARD_MEDIUM,
  261.     ACTIONID_JUMP_FORWARD_MEDIUM,
  262.     ACTIONID_JUMP_BACKWARD_LONG,
  263.     ACTIONID_JUMP_FORWARD_LONG,
  264.     ACTIONID_FRAME_NEXT,
  265.     ACTIONID_POSITION,
  266.     ACTIONID_VOL_MUTE,
  267. /* let ACTIONID_SET_BOOMARK* and ACTIONID_PLAY_BOOKMARK* be contiguous */
  268.     ACTIONID_SET_BOOKMARK1,
  269.     ACTIONID_SET_BOOKMARK2,
  270.     ACTIONID_SET_BOOKMARK3,
  271.     ACTIONID_SET_BOOKMARK4,
  272.     ACTIONID_SET_BOOKMARK5,
  273.     ACTIONID_SET_BOOKMARK6,
  274.     ACTIONID_SET_BOOKMARK7,
  275.     ACTIONID_SET_BOOKMARK8,
  276.     ACTIONID_SET_BOOKMARK9,
  277.     ACTIONID_SET_BOOKMARK10,
  278.     ACTIONID_PLAY_BOOKMARK1,
  279.     ACTIONID_PLAY_BOOKMARK2,
  280.     ACTIONID_PLAY_BOOKMARK3,
  281.     ACTIONID_PLAY_BOOKMARK4,
  282.     ACTIONID_PLAY_BOOKMARK5,
  283.     ACTIONID_PLAY_BOOKMARK6,
  284.     ACTIONID_PLAY_BOOKMARK7,
  285.     ACTIONID_PLAY_BOOKMARK8,
  286.     ACTIONID_PLAY_BOOKMARK9,
  287.     ACTIONID_PLAY_BOOKMARK10,
  288.     /* end of contiguous zone */
  289.     ACTIONID_SUBDELAY_UP,
  290.     ACTIONID_SUBDELAY_DOWN,
  291.     ACTIONID_HISTORY_BACK,
  292.     ACTIONID_HISTORY_FORWARD,
  293.     ACTIONID_AUDIO_TRACK,
  294.     ACTIONID_SUBTITLE_TRACK,
  295.     ACTIONID_CUBESPEED_UP,
  296.     ACTIONID_CUBESPEED_DOWN,
  297.     ACTIONID_INTF_SHOW,
  298.     ACTIONID_INTF_HIDE,
  299.     /* chapter and title navigation */
  300.     ACTIONID_TITLE_PREV,
  301.     ACTIONID_TITLE_NEXT,
  302.     ACTIONID_CHAPTER_PREV,
  303.     ACTIONID_CHAPTER_NEXT,
  304.     /* end of chapter and title navigation */
  305.     ACTIONID_AUDIODELAY_UP,
  306.     ACTIONID_AUDIODELAY_DOWN,
  307.     ACTIONID_SNAPSHOT,
  308.     ACTIONID_RECORD,
  309.     ACTIONID_DISC_MENU,
  310.     ACTIONID_ASPECT_RATIO,
  311.     ACTIONID_CROP,
  312.     ACTIONID_DEINTERLACE,
  313.     ACTIONID_ZOOM,
  314.     ACTIONID_UNZOOM,
  315.     ACTIONID_CROP_TOP,
  316.     ACTIONID_UNCROP_TOP,
  317.     ACTIONID_CROP_LEFT,
  318.     ACTIONID_UNCROP_LEFT,
  319.     ACTIONID_CROP_BOTTOM,
  320.     ACTIONID_UNCROP_BOTTOM,
  321.     ACTIONID_CROP_RIGHT,
  322.     ACTIONID_UNCROP_RIGHT,
  323.     ACTIONID_DUMP,
  324.     ACTIONID_RANDOM,
  325.     ACTIONID_LOOP,
  326.     ACTIONID_WALLPAPER,
  327.     ACTIONID_LEAVE_FULLSCREEN,
  328.     ACTIONID_MENU_ON,
  329.     ACTIONID_MENU_OFF,
  330.     ACTIONID_MENU_RIGHT,
  331.     ACTIONID_MENU_LEFT,
  332.     ACTIONID_MENU_UP,
  333.     ACTIONID_MENU_DOWN,
  334.     ACTIONID_MENU_SELECT,
  335.     /* Zoom */
  336.     ACTIONID_ZOOM_QUARTER,
  337.     ACTIONID_ZOOM_HALF,
  338.     ACTIONID_ZOOM_ORIGINAL,
  339.     ACTIONID_ZOOM_DOUBLE,
  340.     /* Cycle Through Audio Devices */
  341.     ACTIONID_AUDIODEVICE_CYCLE,
  342.     /* scaling */
  343.     ACTIONID_TOGGLE_AUTOSCALE,
  344.     ACTIONID_SCALE_UP,
  345.     ACTIONID_SCALE_DOWN,
  346.     /* */
  347.     ACTIONID_RATE_NORMAL,
  348.     ACTIONID_RATE_SLOWER_FINE,
  349.     ACTIONID_RATE_FASTER_FINE,
  350. } vlc_key_t;
  351. #endif