Files @ d0a14f973771
Branch filter:

Location: vmkdrivers/BLD/build/HEADERS/vmkapi-current-all-public/vmkernel64/release/device/vmkapi_input.h - annotation

unknown
ESXi-5.0-U1
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
0d186246d211
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
763922b5834e
0d186246d211
0d186246d211
0d186246d211
/* **********************************************************
 * Copyright 2008 - 2009 VMware, Inc.  All rights reserved.
 * **********************************************************/

/*
 * @VMKAPIMOD_LICENSE@
 */

/*
 ***********************************************************************
 * Input                                                          */ /**
 * \addtogroup Device
 * @{
 * \defgroup Input Human Input Device Interfaces
 *
 * Interfaces that allow to enqueue keyboard character(s) to vmkernel 
 * and forward input events to the host.
 * @{ 
 *
 ***********************************************************************
 */

#ifndef _VMKAPI_INPUT_H_
#define _VMKAPI_INPUT_H_

/** \cond never */
#ifndef VMK_HEADER_INCLUDED_FROM_VMKAPI_H
#error This vmkapi file should never be included directly but only via vmkapi.h
#endif
/** \endcond never */

/**
 * \brief Values for special keys (beyond normal ASCII codes).
 */
enum {
   VMK_INPUT_KEY_F1 = (vmk_int8) 0x81,
   VMK_INPUT_KEY_F2,
   VMK_INPUT_KEY_F3,
   VMK_INPUT_KEY_F4,
   VMK_INPUT_KEY_F5,
   VMK_INPUT_KEY_F6,
   VMK_INPUT_KEY_F7,
   VMK_INPUT_KEY_F8,
   VMK_INPUT_KEY_F9,
   VMK_INPUT_KEY_F10,
   VMK_INPUT_KEY_F11,
   VMK_INPUT_KEY_F12,
   VMK_INPUT_KEY_SHIFT_F1,
   VMK_INPUT_KEY_SHIFT_F2,
   VMK_INPUT_KEY_SHIFT_F3,
   VMK_INPUT_KEY_SHIFT_F4,
   VMK_INPUT_KEY_SHIFT_F5,
   VMK_INPUT_KEY_SHIFT_F6,
   VMK_INPUT_KEY_SHIFT_F7,
   VMK_INPUT_KEY_SHIFT_F8,
   VMK_INPUT_KEY_SHIFT_F9,
   VMK_INPUT_KEY_SHIFT_F10,
   VMK_INPUT_KEY_SHIFT_F11,
   VMK_INPUT_KEY_SHIFT_F12,
   VMK_INPUT_KEY_CTRL_F1,
   VMK_INPUT_KEY_CTRL_F2,
   VMK_INPUT_KEY_CTRL_F3,
   VMK_INPUT_KEY_CTRL_F4,
   VMK_INPUT_KEY_CTRL_F5,
   VMK_INPUT_KEY_CTRL_F6,
   VMK_INPUT_KEY_CTRL_F7,
   VMK_INPUT_KEY_CTRL_F8,
   VMK_INPUT_KEY_CTRL_F9,
   VMK_INPUT_KEY_CTRL_F10,
   VMK_INPUT_KEY_CTRL_F11,
   VMK_INPUT_KEY_CTRL_F12,
   VMK_INPUT_KEY_CTRLSHIFT_F1,
   VMK_INPUT_KEY_CTRLSHIFT_F2,
   VMK_INPUT_KEY_CTRLSHIFT_F3,
   VMK_INPUT_KEY_CTRLSHIFT_F4,
   VMK_INPUT_KEY_CTRLSHIFT_F5,
   VMK_INPUT_KEY_CTRLSHIFT_F6,
   VMK_INPUT_KEY_CTRLSHIFT_F7,
   VMK_INPUT_KEY_CTRLSHIFT_F8,
   VMK_INPUT_KEY_CTRLSHIFT_F9,
   VMK_INPUT_KEY_CTRLSHIFT_F10,
   VMK_INPUT_KEY_CTRLSHIFT_F11,
   VMK_INPUT_KEY_CTRLSHIFT_F12,
   VMK_INPUT_KEY_HOME,
   VMK_INPUT_KEY_UP,
   VMK_INPUT_KEY_PAGEUP,
   VMK_INPUT_KEY_NUMMINUS,
   VMK_INPUT_KEY_LEFT,
   VMK_INPUT_KEY_CENTER,
   VMK_INPUT_KEY_RIGHT,
   VMK_INPUT_KEY_NUMPLUS,
   VMK_INPUT_KEY_END,
   VMK_INPUT_KEY_DOWN,
   VMK_INPUT_KEY_PAGEDOWN,
   VMK_INPUT_KEY_INSERT,
   VMK_INPUT_KEY_DELETE,
   VMK_INPUT_KEY_UNUSED1,
   VMK_INPUT_KEY_UNUSED2,
   VMK_INPUT_KEY_UNUSED3,
   VMK_INPUT_KEY_ALT_F1,
   VMK_INPUT_KEY_ALT_F2,
   VMK_INPUT_KEY_ALT_F3,
   VMK_INPUT_KEY_ALT_F4,
   VMK_INPUT_KEY_ALT_F5,
   VMK_INPUT_KEY_ALT_F6,
   VMK_INPUT_KEY_ALT_F7,
   VMK_INPUT_KEY_ALT_F8,
   VMK_INPUT_KEY_ALT_F9,
   VMK_INPUT_KEY_ALT_F10,
   VMK_INPUT_KEY_ALT_F11,
   VMK_INPUT_KEY_ALT_F12,
};

/**
 * \brief Keyboard scancode mapping modes.
 */
typedef enum vmk_KeyboardKeymapMode {
   VMK_KEYMAP_MODE_INVALID=0,
   VMK_KEYMAP_MODE_XLATE=1,
   VMK_KEYMAP_MODE_MEDIUMRAW=2,
   VMK_KEYMAP_MODE_RAW=3,
   VMK_KEYMAP_MODE_UNICODE=4,
} vmk_KeyboardKeymapMode;

/**
 * \brief Keyboard driver type identifiers.
 */
typedef enum vmk_KeyboardDriverType {
   VMK_KEYBOARD_DRIVER_TYPE_INVALID=0,
   VMK_KEYBOARD_DRIVER_TYPE_USB=1,
} vmk_KeyboardDriverType;

/**
 * \brief Opaque handle for a keyboard interrupt handler.
 */
typedef void *vmk_KeyboardInterruptHandle;

/**
 * \brief Opaque handle for unregistering keyboard driver.
 */
typedef struct vmk_KeyboardDriverHandleInt *vmk_KeyboardDriverHandle;

/**
 * \brief Attributes struct for keyboard driver
 */
typedef struct vmk_KeyboardDriverAttributes {
   vmk_KeyboardDriverType driverType;
   int (*SetKeymapMode)(vmk_KeyboardKeymapMode mode);
   vmk_KeyboardKeymapMode (*GetKeymapMode)(void);
} vmk_KeyboardDriverAttributes;

/*
 ***********************************************************************
 * vmk_InputPutQueue         --                                   */ /**
 *
 * \ingroup Input
 * \brief Enqueue a keyboard character to vmkernel.
 *
 *        Does nothing if vmkernel is not the audience.
 *
 * \param[in]  ch    Input character (ASCII or special).
 *
 ***********************************************************************
 */

VMK_ReturnStatus vmk_InputPutQueue(int ch);

/*
 ***********************************************************************
 * vmk_InputPutsQueue --                                          */ /**
 *
 * \ingroup Input
 * \brief Enqueue multiple keyboard characters to vmkernel.
 *
 *        Does nothing if vmkernel is not the audience.
 *
 * \param[in]  cp    Input characters (ASCII or special).
 *
 ***********************************************************************
 */

VMK_ReturnStatus vmk_InputPutsQueue(char *cp);

/*
 ***********************************************************************
 * vmk_InterruptHandler --                                        */ /**
 *
 * \ingroup Input
 * \brief Interrupt handler pointer type provided to VMkernel
 *
 * \param[in] irq          Source specific IRQ info.
 * \param[in] context      Source specific context info.
 * \param[in] registers    Source specific register state.
 *
 ***********************************************************************
 */
typedef void (*vmk_InputInterruptHandler)(int irq,
                                          void *context,
                                          void *registers);

/*
 ***********************************************************************
 * vmk_RegisterInputKeyboardInterruptHandler --                   */ /**
 *
 * \ingroup Input
 * \brief Register an interrupt handler for polling an external
 *        keyboard.
 *
 * \note This function \em must be called at module load time.
 *
 * \param[in]  handler     Interrupt handler.
 * \param[in]  irq         Interrupt vector.
 * \param[in]  context     Context info.
 * \param[in]  registers   Register or other state.
 * \param[out] handle      Handle for registered keyboard interrupt
 *                         handler.
 *
 ***********************************************************************
 */
VMK_ReturnStatus
vmk_RegisterInputKeyboardInterruptHandler(vmk_InputInterruptHandler *handler,
                                          vmk_uint32 irq,
                                          void *context,
                                          void *registers,
                                          vmk_KeyboardInterruptHandle *handle);

/*
 ***********************************************************************
 * vmk_UnregisterInputKeyboardInterruptHandler --                 */ /**
 *
 * \ingroup Input
 * \brief Unregister a keyboard interrupt handler.
 *
 * \param[in] handle    Handle for registered keyboard interrupt
 *                      handler.
 *
 ***********************************************************************
 */
VMK_ReturnStatus
vmk_UnregisterInputKeyboardInterruptHandler(vmk_KeyboardInterruptHandle handle);

/*
 ***********************************************************************
 * vmk_RegisterKeyboardDriver --                                  */ /**
 *
 * \ingroup Input
 * \brief Register a keyboard driver.
 *
 * \param[in]  attributes Attributes for registered keyboard driver.
 * \param[out] handlePtr  Handle pointer for registered keyboard driver.
 *
 ***********************************************************************
 */
VMK_ReturnStatus
vmk_RegisterKeyboardDriver(vmk_KeyboardDriverAttributes *attributes, 
                           vmk_KeyboardDriverHandle *handlePtr);

/*
 ***********************************************************************
 * vmk_UnregisterKeyboardDriver --                                */ /**
 *
 * \ingroup Input
 * \brief Unregister a keyboard driver.
 *
 * \param[in] handle Handle for registered keyboard driver.
 *
 ***********************************************************************
 */
VMK_ReturnStatus
vmk_UnregisterKeyboardDriver(vmk_KeyboardDriverHandle handle);

#endif
/** @} */
/** @} */