Inputs Channel

Inputs Channel — control the server mouse and keyboard

Stability Level

Stable, unless otherwise indicated

Synopsis

#include <channel-inputs.h>

struct              SpiceInputsChannel;
struct              SpiceInputsChannelClass;
enum                SpiceInputsLock;

void                spice_inputs_motion                 (SpiceInputsChannel *channel,
                                                         gint dx,
                                                         gint dy,
                                                         gint button_state);
void                spice_inputs_position               (SpiceInputsChannel *channel,
                                                         gint x,
                                                         gint y,
                                                         gint display,
                                                         gint button_state);
void                spice_inputs_button_press           (SpiceInputsChannel *channel,
                                                         gint button,
                                                         gint button_state);
void                spice_inputs_button_release         (SpiceInputsChannel *channel,
                                                         gint button,
                                                         gint button_state);
void                spice_inputs_key_press              (SpiceInputsChannel *channel,
                                                         guint scancode);
void                spice_inputs_key_press_and_release  (SpiceInputsChannel *channel,
                                                         guint scancode);
void                spice_inputs_key_release            (SpiceInputsChannel *channel,
                                                         guint scancode);
void                spice_inputs_set_key_locks          (SpiceInputsChannel *channel,
                                                         guint locks);

Object Hierarchy

  GObject
   +----SpiceChannel
         +----SpiceInputsChannel
  GFlags
   +----SpiceInputsLock

Properties

  "key-modifiers"            gint                  : Read

Signals

  "inputs-modifiers"                               : Run First

Description

Spice supports sending keyboard key events and keyboard leds synchronization. The key events are sent using spice_inputs_key_press() and spice_inputs_key_release() using PC AT scancode.

Guest keyboard leds state can be manipulated with spice_inputs_set_key_locks(). When key lock change, a notification is emitted with "inputs-modifiers" signal.

Details

struct SpiceInputsChannel

struct SpiceInputsChannel;

The SpiceInputsChannel struct is opaque and should not be accessed directly.


struct SpiceInputsChannelClass

struct SpiceInputsChannelClass {
    SpiceChannelClass parent_class;

    /* signals */
    void (*inputs_modifiers)(SpiceChannel *channel);
};

Class structure for SpiceInputsChannel.

SpiceChannelClass parent_class;

Parent class.

inputs_modifiers ()

Signal class handler for the "inputs-modifiers" signal.

enum SpiceInputsLock

typedef enum {
    SPICE_INPUTS_SCROLL_LOCK = (1 << 0),
    SPICE_INPUTS_NUM_LOCK    = (1 << 1),
    SPICE_INPUTS_CAPS_LOCK   = (1 << 2)
} SpiceInputsLock;

SPICE_INPUTS_SCROLL_LOCK

SPICE_INPUTS_NUM_LOCK

SPICE_INPUTS_CAPS_LOCK


spice_inputs_motion ()

void                spice_inputs_motion                 (SpiceInputsChannel *channel,
                                                         gint dx,
                                                         gint dy,
                                                         gint button_state);

Change mouse position (used in SPICE_MOUSE_MODE_CLIENT).

dx :

delta X mouse coordinates

dy :

delta Y mouse coordinates

button_state :

SPICE_MOUSE_BUTTON_MASK flags

spice_inputs_position ()

void                spice_inputs_position               (SpiceInputsChannel *channel,
                                                         gint x,
                                                         gint y,
                                                         gint display,
                                                         gint button_state);

Change mouse position (used in SPICE_MOUSE_MODE_CLIENT).

x :

X mouse coordinates

y :

Y mouse coordinates

display :

display channel id

button_state :

SPICE_MOUSE_BUTTON_MASK flags

spice_inputs_button_press ()

void                spice_inputs_button_press           (SpiceInputsChannel *channel,
                                                         gint button,
                                                         gint button_state);

Press a mouse button.

button :

a SPICE_MOUSE_BUTTON

button_state :

SPICE_MOUSE_BUTTON_MASK flags

spice_inputs_button_release ()

void                spice_inputs_button_release         (SpiceInputsChannel *channel,
                                                         gint button,
                                                         gint button_state);

Release a button.

button :

a SPICE_MOUSE_BUTTON

button_state :

SPICE_MOUSE_BUTTON_MASK flags

spice_inputs_key_press ()

void                spice_inputs_key_press              (SpiceInputsChannel *channel,
                                                         guint scancode);

Press a key.

scancode :

a PC AT key scancode

spice_inputs_key_press_and_release ()

void                spice_inputs_key_press_and_release  (SpiceInputsChannel *channel,
                                                         guint scancode);

Press and release a key event atomically (in the same message).

scancode :

a PC AT key scancode

Since 0.13


spice_inputs_key_release ()

void                spice_inputs_key_release            (SpiceInputsChannel *channel,
                                                         guint scancode);

Release a key.

scancode :

a PC AT key scancode

spice_inputs_set_key_locks ()

void                spice_inputs_set_key_locks          (SpiceInputsChannel *channel,
                                                         guint locks);

Set the keyboard locks on the guest (Caps, Num, Scroll..)

locks :

SpiceInputsLock modifiers flags

Property Details

The "key-modifiers" property

  "key-modifiers"            gint                  : Read

Guest keyboard lock/led state.

Allowed values: >= 0

Default value: 0

Signal Details

The "inputs-modifiers" signal

void                user_function                      (SpiceInputsChannel *spiceinputschannel,
                                                        gpointer            user_data)               : Run First

See Also

SpiceChannel, and the GTK widget SpiceDisplay