|
|
1.1 ! root 1: /* ! 2: * QEMU keysym to keycode conversion using rdesktop keymaps ! 3: * ! 4: * Copyright (c) 2004 Johannes Schindelin ! 5: * ! 6: * Permission is hereby granted, free of charge, to any person obtaining a copy ! 7: * of this software and associated documentation files (the "Software"), to deal ! 8: * in the Software without restriction, including without limitation the rights ! 9: * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell ! 10: * copies of the Software, and to permit persons to whom the Software is ! 11: * furnished to do so, subject to the following conditions: ! 12: * ! 13: * The above copyright notice and this permission notice shall be included in ! 14: * all copies or substantial portions of the Software. ! 15: * ! 16: * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ! 17: * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ! 18: * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ! 19: * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ! 20: * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, ! 21: * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN ! 22: * THE SOFTWARE. ! 23: */ ! 24: ! 25: #ifndef __QEMU_KEYMAPS_H__ ! 26: #define __QEMU_KEYMAPS_H__ ! 27: ! 28: #include "qemu-common.h" ! 29: ! 30: typedef struct { ! 31: const char* name; ! 32: int keysym; ! 33: } name2keysym_t; ! 34: ! 35: struct key_range { ! 36: int start; ! 37: int end; ! 38: struct key_range *next; ! 39: }; ! 40: ! 41: #define MAX_NORMAL_KEYCODE 512 ! 42: #define MAX_EXTRA_COUNT 256 ! 43: typedef struct { ! 44: uint16_t keysym2keycode[MAX_NORMAL_KEYCODE]; ! 45: struct { ! 46: int keysym; ! 47: uint16_t keycode; ! 48: } keysym2keycode_extra[MAX_EXTRA_COUNT]; ! 49: int extra_count; ! 50: struct key_range *keypad_range; ! 51: struct key_range *numlock_range; ! 52: } kbd_layout_t; ! 53: ! 54: /* scancode without modifiers */ ! 55: #define SCANCODE_KEYMASK 0xff ! 56: /* scancode without grey or up bit */ ! 57: #define SCANCODE_KEYCODEMASK 0x7f ! 58: ! 59: /* "grey" keys will usually need a 0xe0 prefix */ ! 60: #define SCANCODE_GREY 0x80 ! 61: #define SCANCODE_EMUL0 0xE0 ! 62: /* "up" flag */ ! 63: #define SCANCODE_UP 0x80 ! 64: ! 65: /* Additional modifiers to use if not catched another way. */ ! 66: #define SCANCODE_SHIFT 0x100 ! 67: #define SCANCODE_CTRL 0x200 ! 68: #define SCANCODE_ALT 0x400 ! 69: #define SCANCODE_ALTGR 0x800 ! 70: ! 71: ! 72: void *init_keyboard_layout(const name2keysym_t *table, const char *language); ! 73: int keysym2scancode(void *kbd_layout, int keysym); ! 74: int keycode_is_keypad(void *kbd_layout, int keycode); ! 75: int keysym_is_numlock(void *kbd_layout, int keysym); ! 76: ! 77: #endif /* __QEMU_KEYMAPS_H__ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.