ir_kbd.h

来自「WinCE 3.0 BSP, 包含Inter SA1110, Intel_815」· C头文件 代码 · 共 173 行

H
173
字号
/*
 * Copyright 1997 Motorola.  All Rights Reserved.
 */

/*************************************************************************
 * File:  ir_kbd.h
 * Description:
 *    Sejin IR Keyboard and RS-232 Receiver Defines
 *
 * NOTES:
 *
 *    - Keyboard sends 4 byte packets per character/event
 *
 *    - IR Receiver has LEDS (CAPS_LOCK, SCROLL_LOCK, NUM_LOCK) which
 *       require transmitter to send data -
 *
 *       - IR Receiver RESET Command:
 *          - Tx: - 0xFF -
 *          - Rx: No response (until SelfTest command sent)
 *
 *       - IR Receiver SelfTest and Revision Request Command:
 *          - Tx: - 0xF3 -
 *          - Rx: - 0xAA (self-test OK) or 0xFE (fail)
 *                - revision byte (0xXX)
 *
 *       - IR Receiver LED Command/Control Bits:
 *          - Tx: - 0xEx -
 *                - x is any combination (OR) of the following:
 *                   - CapsLock   - 0x04 -
 *                   - NumLock    - 0x02 -
 *                   - ScrollLock - 0x01 -
 *          - Rx: No response.
 *
 *************************************************************************/

/*
 * Defines for Receiver Commands/Responses
 */

#define IR_RCVR_RESET_CMD (0xFF)

#define IR_RCVR_SELFTEST_CMD  (0xF3)

#define IR_RCVR_SELFTEST_OK   (0xAA)
#define IR_RCVR_SELFTEST_FAIL (0xFE)

#define IR_RCVR_LED_CMD (0xE0)

#define IR_RCVR_CAPS_LOCK_LED   (0x04)
#define IR_RCVR_NUM_LOCK_LED    (0x02)
#define IR_RCVR_SCROLL_LOCK_LED (0x01)


/***********************************************************************
 * Defines for IR Keyboard Self Test Response Data (in 4byte buffer)
 */

typedef struct IrRcvrSelfTestResponse
{
    unsigned char stResult;  /* 0xAA - self-test OK - 0xFE - fail */
    unsigned char rcvrRev;   /* receiver revision code */
    unsigned char void0;     /* empty */
    unsigned char void1;     /* empty */
}
IR_RCVR_ST_RESPONSE;


typedef struct PreMungedIrRcvrSelfTestResponse
{
    unsigned char void1;     /* empty */
    unsigned char void0;     /* empty */
    unsigned char rcvrRev;   /* receiver revision code */
    unsigned char stResult;  /* 0xAA - self-test OK - 0xFE - fail */
}
PM_IR_RCVR_ST_RESPONSE;


/***********************************************************************
 * Defines for IR Keyboard Event Packet (4 bytes)
 * 
 *
 *  #if (SMC_KBD_EXTERNAL_BUFFERS || ! DATA_CACHE_LITTLE_ENDIAN_MODE
 *
 *     - no pre-munge of IR_RCVR_PKT is required
 *
 *  #if (DATA_CACHE_LITTLE_ENDIAN_MODE && SMC_KBD_INTERNAL_BUFFERS)
 *
 *     - pre-munge(32-bit)/byte-swap of IR_RCVR_PKT is required
 *        if data is accesed directly in internal dual port RAM
 *
 */

typedef struct IrReceiverPacket
{
    unsigned char pktHdr;    /* 0x97 */
    unsigned char devId;     /* KBD(0x00)/Mouse(0xF8)//APPL//LWIN//RWIN */
    unsigned char keyStates; /* Make/Brk //FN//LS//RS//LA//RA//LC//RC */
    unsigned char keyCode;   /* IR keyboard matrix code */
}
IR_RCVR_PKT;


typedef struct PreMungedIrReceiverPacket
{
    unsigned char keyCode;   /* IR keyboard matrix code */
    unsigned char keyStates; /* Make/Brk //FN//LS//RS//LA//RA//LC//RC */
    unsigned char devId;     /* KBD(0x00)/Mouse(0xF8)//APPL//LWIN//RWIN */
    unsigned char pktHdr;    /* 0x97 */
}
PM_IR_RCVR_PKT;


typedef struct MouseReceiverPacket
{
    unsigned char pktHdr;    /* 0x97 */
    unsigned char devId;     /* KBD(0x00)/Mouse(0xF8)//APPL//LWIN//RWIN */
    unsigned char x_data;    /* bit 7: sign, bits 6-0: Coord data */
    unsigned char y_data;    /* bit 7: sign, bits 6-0: Coord data */
}
MOUSE_RCVR_PKT;


typedef struct PreMungedMouseReceiverPacket
{
    unsigned char y_data;    /* bit 7: sign, bits 6-0: Coord data */
    unsigned char x_data;    /* bit 7: sign, bits 6-0: Coord data */
    unsigned char devId;     /* KBD(0x00)/Mouse(0xF8)//APPL//LWIN//RWIN */
    unsigned char pktHdr;    /* 0x97 */
}
PM_MOUSE_RCVR_PKT;


#define RCVR_PKT_HEADER (0x97)


#define DEV_ID_MASK     (0xF8)

#define DEV_ID_KEYBOARD (0x00)
#define DEV_ID_MOUSE    (0xF8)

#define DID_STATE_MASK  (0x03)

#define DID_KEYSTATE_APPL     (0x04)
#define DID_KEYSTATE_LWIN     (0x02)
#define DID_KEYSTATE_RWIN     (0x01)

#define DID_M_BTN_DOWN     (0x04)
#define DID_R_BTN_DOWN     (0x02)
#define DID_L_BTN_DOWN     (0x01)
#define DID_NO_BTN         (0x00)



#define KEYSTATE_MAKE   (0x00)
#define KEYSTATE_BREAK  (0x80)
#define KEYSTATE_FN     (0x40)
#define KEYSTATE_LSHIFT (0x20)
#define KEYSTATE_RSHIFT (0x10)

#define KEYSTATE_LALT   (0x08)
#define KEYSTATE_RALT   (0x04)
#define KEYSTATE_LCTRL  (0x02)
#define KEYSTATE_RCTRL  (0x01)

#define KEYSTATE_SHIFT  (0x30)
#define KEYSTATE_ALT    (0x0C)
#define KEYSTATE_CTRL   (0x03)

#define KEYCODE_CAPITAL (0x73)
#define KEYCODE_NUMLOCK (0x74)
#define KEYCODE_SCROLL  (0x7D)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?