qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

keymaps.h (2246B)


      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 "ui/kbd-state.h"
     29 
     30 typedef struct {
     31     const char* name;
     32     int keysym;
     33 } name2keysym_t;
     34 
     35 /* scancode without modifiers */
     36 #define SCANCODE_KEYMASK 0xff
     37 /* scancode without grey or up bit */
     38 #define SCANCODE_KEYCODEMASK 0x7f
     39 
     40 /* "grey" keys will usually need a 0xe0 prefix */
     41 #define SCANCODE_GREY   0x80
     42 #define SCANCODE_EMUL0  0xE0
     43 #define SCANCODE_EMUL1  0xE1
     44 /* "up" flag */
     45 #define SCANCODE_UP     0x80
     46 
     47 /* Additional modifiers to use if not catched another way. */
     48 #define SCANCODE_SHIFT  0x100
     49 #define SCANCODE_CTRL   0x200
     50 #define SCANCODE_ALT    0x400
     51 #define SCANCODE_ALTGR  0x800
     52 
     53 typedef struct kbd_layout_t kbd_layout_t;
     54 
     55 kbd_layout_t *init_keyboard_layout(const name2keysym_t *table,
     56                                    const char *language, Error **errp);
     57 int keysym2scancode(kbd_layout_t *k, int keysym,
     58                     QKbdState *kbd, bool down);
     59 int keycode_is_keypad(kbd_layout_t *k, int keycode);
     60 int keysym_is_numlock(kbd_layout_t *k, int keysym);
     61 
     62 #endif /* QEMU_KEYMAPS_H */