keymaps.h revision 5d8f37ad78fc66901af50c762029a501561f3b23
15d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner/* 25d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * QEMU keysym to keycode conversion using rdesktop keymaps 35d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * 45d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * Copyright (c) 2004 Johannes Schindelin 55d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * 65d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * Permission is hereby granted, free of charge, to any person obtaining a copy 75d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * of this software and associated documentation files (the "Software"), to deal 85d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * in the Software without restriction, including without limitation the rights 95d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 105d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * copies of the Software, and to permit persons to whom the Software is 115d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * furnished to do so, subject to the following conditions: 125d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * 135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * The above copyright notice and this permission notice shall be included in 145d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * all copies or substantial portions of the Software. 155d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * 165d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 175d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 185d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 195d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 205d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 215d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 225d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner * THE SOFTWARE. 235d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner */ 245d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 255d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#ifndef __QEMU_KEYMAPS_H__ 265d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define __QEMU_KEYMAPS_H__ 275d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 285d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#include "qemu-common.h" 295d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 305d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnertypedef struct { 315d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner const char* name; 325d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner int keysym; 335d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner} name2keysym_t; 345d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 355d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerstruct key_range { 365d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner int start; 375d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner int end; 385d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner struct key_range *next; 395d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner}; 405d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 415d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define MAX_NORMAL_KEYCODE 512 425d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#define MAX_EXTRA_COUNT 256 435d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnertypedef struct { 445d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner uint16_t keysym2keycode[MAX_NORMAL_KEYCODE]; 455d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner struct { 465d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner int keysym; 475d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner uint16_t keycode; 485d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner } keysym2keycode_extra[MAX_EXTRA_COUNT]; 495d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner int extra_count; 505d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner struct key_range *keypad_range; 515d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner struct key_range *numlock_range; 525d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner} kbd_layout_t; 535d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 545d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 555d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnervoid *init_keyboard_layout(const name2keysym_t *table, const char *language); 565d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint keysym2scancode(void *kbd_layout, int keysym); 575d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint keycode_is_keypad(void *kbd_layout, int keycode); 585d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turnerint keysym_is_numlock(void *kbd_layout, int keysym); 595d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 605d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner#endif /* __QEMU_KEYMAPS_H__ */ 61