cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

kbd-state.h (2365B)


      1/*
      2 * This work is licensed under the terms of the GNU GPL, version 2 or
      3 * (at your option) any later version.  See the COPYING file in the
      4 * top-level directory.
      5 */
      6
      7#ifndef QEMU_UI_KBD_STATE_H
      8#define QEMU_UI_KBD_STATE_H
      9
     10#include "qapi/qapi-types-ui.h"
     11
     12typedef enum QKbdModifier QKbdModifier;
     13
     14enum QKbdModifier {
     15    QKBD_MOD_NONE = 0,
     16
     17    QKBD_MOD_SHIFT,
     18    QKBD_MOD_CTRL,
     19    QKBD_MOD_ALT,
     20    QKBD_MOD_ALTGR,
     21
     22    QKBD_MOD_NUMLOCK,
     23    QKBD_MOD_CAPSLOCK,
     24
     25    QKBD_MOD__MAX
     26};
     27
     28typedef struct QKbdState QKbdState;
     29
     30/**
     31 * qkbd_state_init: init keyboard state tracker.
     32 *
     33 * Allocates and initializes keyboard state struct.
     34 *
     35 * @con: QemuConsole for this state tracker.  Gets passed down to
     36 * qemu_input_*() functions when sending key events to the guest.
     37 */
     38QKbdState *qkbd_state_init(QemuConsole *con);
     39
     40/**
     41 * qkbd_state_free: free keyboard tracker state.
     42 *
     43 * @kbd: state tracker state.
     44 */
     45void qkbd_state_free(QKbdState *kbd);
     46
     47/**
     48 * qkbd_state_key_event: process key event.
     49 *
     50 * Update keyboard state, send event to the guest.
     51 *
     52 * This function takes care to not send suspious events (keyup event
     53 * for a key not pressed for example).
     54 *
     55 * @kbd: state tracker state.
     56 * @qcode: the key pressed or released.
     57 * @down: true for key down events, false otherwise.
     58 */
     59void qkbd_state_key_event(QKbdState *kbd, QKeyCode qcode, bool down);
     60
     61/**
     62 * qkbd_state_set_delay: set key press delay.
     63 *
     64 * When set the specified delay will be added after each key event,
     65 * using qemu_input_event_send_key_delay().
     66 *
     67 * @kbd: state tracker state.
     68 * @delay_ms: the delay in miliseconds.
     69 */
     70void qkbd_state_set_delay(QKbdState *kbd, int delay_ms);
     71
     72/**
     73 * qkbd_state_key_get: get key state.
     74 *
     75 * Returns true when the key is down.
     76 *
     77 * @kbd: state tracker state.
     78 * @qcode: the key to query.
     79 */
     80bool qkbd_state_key_get(QKbdState *kbd, QKeyCode qcode);
     81
     82/**
     83 * qkbd_state_modifier_get: get modifier state.
     84 *
     85 * Returns true when the modifier is active.
     86 *
     87 * @kbd: state tracker state.
     88 * @mod: the modifier to query.
     89 */
     90bool qkbd_state_modifier_get(QKbdState *kbd, QKbdModifier mod);
     91
     92/**
     93 * qkbd_state_lift_all_keys: lift all pressed keys.
     94 *
     95 * This sends key up events to the guest for all keys which are in
     96 * down state.
     97 *
     98 * @kbd: state tracker state.
     99 */
    100void qkbd_state_lift_all_keys(QKbdState *kbd);
    101
    102#endif /* QEMU_UI_KBD_STATE_H */