Files
m241Neelima/vxworks-6.9/target/h/usb2/usb2KbdMap.h
T
2026-07-30 11:19:44 +05:30

136 lines
3.8 KiB
C

/* usb2KbdMap.h - Generation 2 USB keyboard mapper */
/*
* Copyright (c) 2008-2010 Wind River Systems, Inc.
*
* The right to copy, distribute, modify, or otherwise make use
* of this software may be licensed only pursuant to the terms
* of an applicable Wind River license agreement.
*/
/*
modification history
--------------------
01d,29apr10,pad Moved extern C statement after include statements.
01c,13jan10,ghs vxWorks 6.9 LP64 adapting
01b,17apr09,adh keyboard mapping changes
01a,05Nov08,adh written
*/
#ifndef __INCusb2KbdMaph
#define __INCusb2KbdMaph
/* includes */
#include <vxWorks.h>
#include <usb2/usb2Kbd.h>
#ifdef __cplusplus
extern "C" {
#endif
#define USB2_KBD_VALID_SCANCODE_LIMIT 0x3
#define USB2_KBD_BOOT_KEY_COUNT (0x06) /* size of scan codes */
/* These are the different modifier keys possibles as of HID spec */
#define USB2_KBD_NO_MODIFIER (0x00)
#define USB2_KBD_LEFT_CTRL (0x01)
#define USB2_KBD_LEFT_SHIFT (0x02)
#define USB2_KBD_LEFT_ALT (0x04)
#define USB2_KBD_LEFT_GUI (0x08)
#define USB2_KBD_RIGHT_CTRL (0x10)
#define USB2_KBD_RIGHT_SHIFT (0x20)
#define USB2_KBD_RIGHT_ALT (0x40)
#define USB2_KBD_RIGHT_GUI (0x80)
#define USB2_KBD_FILTER_KEY (0xFF)
/*
* These are our key codes to define when one of the Caps, num, scr lock keys
* has been pressed
*/
#define USB2_KBD_CAPS_KEY 0xF8
#define USB2_KBD_NUM_KEY 0xF9
#define USB2_KBD_SCR_KEY 0xFA
#define USB2_KBD_COMPOSE_KEY 0xFB
#define USB2_KBD_KANA_KEY 0xFC
#define USB2_KBD_CUSTOM_1_KEY 0xFD
#define USB2_KBD_CUSTOM_2_KEY 0xFE
#define USB2_KBD_CUSTOM_3_KEY 0xFF
#define USB2_KBD_LED_KEY_LIMIT 0xF8
#define USB2_KBD_MAX_MODIFIERS_PER_MAP 2
#define USB2_KBD_MAX_SCANCODES_PER_MAP 0x64
/* This defines a keyboard report */
typedef struct usb2_kbd_report
{
UINT8 modifiers; /* modifier keys */
UINT8 reserved; /* reserved */
UINT8 scanCodes [USB2_KBD_BOOT_KEY_COUNT]; /* scan codes */
} __attribute__ ((packed)) USB2_KBD_REPORT;
typedef struct usb2_kbd_modifier_map
{
UINT8 pModifiers[USB2_KBD_MAX_MODIFIERS_PER_MAP]; /* 0 terminated array */
UINT8 pCharMap[USB2_KBD_MAX_SCANCODES_PER_MAP]; /* Char array */
} USB2_KBD_MODIFIER_MAP;
typedef struct usb2_kbd_filter
{
UINT8 filterScanCode; /* 0 terminated array */
UINT8 modifierOffMask;
UINT8 modifierOffIndex;
UINT8 filterKeyCode;
} USB2_KBD_FILTER;
typedef struct usb2_kbd_filter_map
{
USB2_KBD_FILTER filter;
UINT8 pCharMap[USB2_KBD_MAX_SCANCODES_PER_MAP]; /* Char array */
} USB2_KBD_FILTER_MAP;
typedef struct usb2_kbd_map
{
USB2_KBD_MODIFIER_MAP * pModifierMap;
USB2_KBD_FILTER_MAP * pFilterMap;
UINT32 maxKeyMaps;
UINT32 maxFilters;
UINT16 countryCode;
} USB2_KBD_MAP;
typedef struct usb2_map_handle
{
USB2_KBD_MAP * pMap;
UINT8 filterKeyMask;
} USB2_KBD_MAP_HANDLE;
/* forward declarations */
extern ssize_t usb2KbdReport2Ascii
(
USB2_KBD_MAP_HANDLE * pMapHandle, /* Char Mapping used */
USB2_KBD_REPORT * pReport, /* Report used, scancodes transformed */
UCHAR * pAscii /* ascii array to be filled */
);
extern STATUS usb2KbdMapInit();
STATUS usb2KbdMapAdd
(
USB2_KBD_MAP * pMap /* Keyboard mapping to add to the list */
);
USB2_KBD_MAP * usb2CntryCodeToMap
(
UINT16 countryCode /* language Id to get the Map */
);
#ifdef __cplusplus
}
#endif
#endif /* __INCusb2KbdMap */