00001 /* 00002 * Copyright (c) 2011 Lubos Slovak 00003 * All rights reserved. 00004 * 00005 * Redistribution and use in source and binary forms, with or without 00006 * modification, are permitted provided that the following conditions 00007 * are met: 00008 * 00009 * - Redistributions of source code must retain the above copyright 00010 * notice, this list of conditions and the following disclaimer. 00011 * - Redistributions in binary form must reproduce the above copyright 00012 * notice, this list of conditions and the following disclaimer in the 00013 * documentation and/or other materials provided with the distribution. 00014 * - The name of the author may not be used to endorse or promote products 00015 * derived from this software without specific prior written permission. 00016 * 00017 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 00018 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 00019 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 00020 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 00021 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 00022 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 00023 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 00024 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 00025 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 00026 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00027 */ 00028 00036 #include <io/keycode.h> 00037 #include <stdint.h> 00038 #include <stdio.h> 00039 #include <usb/debug.h> 00040 #include "keymap.h" 00041 00049 static int usb_hid_keymap_consumer[0x29c] = { 00050 [0xb5] = 0, /* Scan Next Track */ 00051 [0xb6] = 0, /* Scan Previous Track */ 00052 [0xb7] = 0, /* Stop */ 00053 [0xb8] = 0, /* Eject */ 00054 [0xcd] = 0/*KC_F2*/, /* Play/Pause */ 00055 [0xe2] = 0/*KC_F3*/, /* Mute */ 00056 [0xe9] = 0/*KC_F5*/, /* Volume Increment */ 00057 [0xea] = 0/*KC_F4*/, /* Volume Decrement */ 00058 [0x183] = 0/*KC_F1*/, /* AL Consumer Control Configuration */ 00059 [0x18a] = 0, /* AL Email Reader */ 00060 [0x192] = 0, /* AL Calculator */ 00061 [0x221] = 0, /* AC Search */ 00062 [0x223] = 0/*KC_F6*/, /* AC Home */ 00063 [0x224] = 0, /* AC Back */ 00064 [0x225] = 0, /* AC Forward */ 00065 [0x226] = 0, /* AC Stop */ 00066 [0x227] = 0, /* AC Refresh */ 00067 [0x22a] = 0 /* AC Bookmarks */ 00068 }; 00069 00077 unsigned int usb_multimedia_map_usage(int usage) 00078 { 00079 unsigned int key; 00080 int *map = usb_hid_keymap_consumer; 00081 size_t map_length = sizeof(usb_hid_keymap_consumer) / sizeof(int); 00082 00083 if ((usage < 0) || ((size_t)usage >= map_length)) 00084 return -1; 00085 00087 key = map[usage]; 00088 00089 return key; 00090 } 00091