You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
236 lines
9.6 KiB
236 lines
9.6 KiB
/**************************************************************************\
|
|
* Module Name: softkbd.h
|
|
*
|
|
* Copyright (c) 1985 - 1999, Microsoft Corporation
|
|
*
|
|
* Declarations of soft keyboard related data structures and constants
|
|
*
|
|
* History:
|
|
* 02-Dec-1995 wkwok Ported from Win95
|
|
\**************************************************************************/
|
|
#ifndef _SOFTKBD_
|
|
#define _SOFTKBD_
|
|
|
|
|
|
#define UI_MARGIN 4
|
|
|
|
|
|
// T1 part
|
|
#define SKT1_XIN 3
|
|
#define SKT1_YIN 3
|
|
#define SKT1_XOUT 1
|
|
#define SKT1_YOUT 1
|
|
#define SKT1_TOTAL_ROW_NUM 5
|
|
#define SKT1_TOTAL_COLUMN_NUM 15
|
|
#define SKT1_ENTER_ROW_NUM 2
|
|
#define SKT1_XOVERLAP 2
|
|
|
|
#define SKT1_CONTEXT 0
|
|
|
|
enum SKT1_BUTTON_TYPE {
|
|
SKT1_LETTER_TYPE,
|
|
SKT1_BACKSPACE_TYPE,
|
|
SKT1_TAB_TYPE,
|
|
SKT1_CAPS_TYPE,
|
|
SKT1_ENTER_TYPE,
|
|
SKT1_SHIFT_TYPE,
|
|
SKT1_CTRL_TYPE,
|
|
SKT1_ALT_TYPE,
|
|
SKT1_ESC_TYPE,
|
|
SKT1_SPACE_TYPE,
|
|
};
|
|
|
|
#define SKT1_TOTAL_TYPE (SKT1_SPACE_TYPE + 1)
|
|
|
|
#define SKT1_LETTER_WIDTH_TIMES 2
|
|
#define SKT1_BACKSPACE_WIDTH_TIMES 2
|
|
#define SKT1_TAB_WIDTH_TIMES 3
|
|
#define SKT1_CAPS_WIDTH_TIMES 4
|
|
#define SKT1_ENTER_WIDTH_TIMES 3
|
|
#define SKT1_SHIFT_WIDTH_TIMES 5
|
|
#define SKT1_CTRL_WIDTH_TIMES 3
|
|
#define SKT1_ALT_WIDTH_TIMES 3
|
|
#define SKT1_ESC_WIDTH_TIMES 3
|
|
#define SKT1_SPACE_WIDTH_TIMES 12
|
|
|
|
#define SKT1_LETTER_KEY_NUM 47
|
|
#define SKT1_BACKSPACE_INDEX (SKT1_LETTER_KEY_NUM)
|
|
#define SKT1_BACKSPACE_KEY_NUM 1
|
|
#define SKT1_TAB_INDEX (SKT1_BACKSPACE_INDEX + SKT1_BACKSPACE_KEY_NUM)
|
|
#define SKT1_TAB_KEY_NUM 1
|
|
#define SKT1_CAPS_INDEX (SKT1_TAB_INDEX + SKT1_TAB_KEY_NUM)
|
|
#define SKT1_CAPS_KEY_NUM 1
|
|
#define SKT1_ENTER_INDEX (SKT1_CAPS_INDEX + SKT1_CAPS_KEY_NUM)
|
|
#define SKT1_ENTER_KEY_NUM 1
|
|
#define SKT1_SHIFT_INDEX (SKT1_ENTER_INDEX + SKT1_ENTER_KEY_NUM)
|
|
#define SKT1_SHIFT_KEY_NUM 2
|
|
#define SKT1_CTRL_INDEX (SKT1_SHIFT_INDEX + SKT1_SHIFT_KEY_NUM)
|
|
#define SKT1_CTRL_KEY_NUM 2
|
|
#define SKT1_ALT_INDEX (SKT1_CTRL_INDEX + SKT1_CTRL_KEY_NUM)
|
|
#define SKT1_ALT_KEY_NUM 2
|
|
#define SKT1_ESC_INDEX (SKT1_ALT_INDEX + SKT1_ALT_KEY_NUM)
|
|
#define SKT1_ESC_KEY_NUM 1
|
|
#define SKT1_SPACE_INDEX (SKT1_ESC_INDEX + SKT1_ESC_KEY_NUM)
|
|
#define SKT1_SPACE_KEY_NUM 1
|
|
#define SKT1_TOTAL_INDEX (SKT1_SPACE_INDEX + SKT1_SPACE_KEY_NUM)
|
|
#define SKT1_TOTAL_KEY_NUM (SKT1_TOTAL_INDEX + 1)
|
|
|
|
#define SKT1_ROW1_LETTER_NUM 14
|
|
#define SKT1_ROW2_LETTER_NUM 12
|
|
#define SKT1_ROW3_LETTER_NUM 11
|
|
#define SKT1_ROW4_LETTER_NUM 10
|
|
|
|
#define SKT1_LABEL_BMP_X 8
|
|
#define SKT1_LABEL_BMP_Y 8
|
|
|
|
#define SKT1_BACKSPACE_BMP_X 16
|
|
#define SKT1_BACKSPACE_BMP_Y 9
|
|
#define SKT1_TAB_BMP_X 16
|
|
#define SKT1_TAB_BMP_Y 9
|
|
#define SKT1_CAPS_BMP_X 22
|
|
#define SKT1_CAPS_BMP_Y 9
|
|
#define SKT1_ENTER_BMP_X 26
|
|
#define SKT1_ENTER_BMP_Y 9
|
|
#define SKT1_SHIFT_BMP_X 23
|
|
#define SKT1_SHIFT_BMP_Y 9
|
|
#define SKT1_CTRL_BMP_X 16
|
|
#define SKT1_CTRL_BMP_Y 9
|
|
#define SKT1_ESC_BMP_X 18
|
|
#define SKT1_ESC_BMP_Y 9
|
|
#define SKT1_ALT_BMP_X 16
|
|
#define SKT1_ALT_BMP_Y 9
|
|
|
|
#if 0
|
|
#define VK_OEM_SEMICLN 0xba // ; :
|
|
#define VK_OEM_EQUAL 0xbb // = +
|
|
#define VK_OEM_COMMA 0xbc // , <
|
|
#define VK_OEM_MINUS 0xbd // - _
|
|
#define VK_OEM_PERIOD 0xbe // . >
|
|
#define VK_OEM_SLASH 0xbf // / ?
|
|
#define VK_OEM_3 0xc0 // ` ~
|
|
#define VK_OEM_LBRACKET 0xdb // [ {
|
|
#define VK_OEM_BSLASH 0xdc // \ |
|
|
#define VK_OEM_RBRACKET 0xdd // ] }
|
|
#define VK_OEM_QUOTE 0xde // ' "
|
|
#endif
|
|
|
|
#define SKT1_NOT_DRAG 0xFFFFFFFF
|
|
|
|
typedef struct _tagSKT1CTXT {
|
|
int nButtonWidth[SKT1_TOTAL_TYPE];
|
|
int nButtonHeight[2];
|
|
POINT ptButtonPos[SKT1_TOTAL_KEY_NUM];
|
|
WORD wCodeTable[SKT1_LETTER_KEY_NUM];
|
|
HBITMAP hSKBitmap;
|
|
UINT lfCharSet;
|
|
UINT uKeyIndex;
|
|
POINT ptSkCursor;
|
|
POINT ptSkOffset;
|
|
UINT uSubType;
|
|
} SKT1CTXT, *PSKT1CTXT, FAR *LPSKT1CTXT, NEAR *NPSKT1CTXT;
|
|
|
|
void GetSKT1TextMetric(LPTEXTMETRIC);
|
|
|
|
LRESULT SKWndProcT1(HWND, UINT, WPARAM, LPARAM);
|
|
|
|
// T2 part
|
|
|
|
// C1 part
|
|
|
|
// button constants
|
|
#define ROW_LETTER_C1 4 // number of rows of letter button
|
|
#define COL_LETTER_C1 13 // number of column of letter button in first row
|
|
#define COL2_LETTER_C1 COL_LETTER_C1 // number of column of letter button in second row
|
|
#define COL3_LETTER_C1 (COL2_LETTER_C1 - 2) // number of column of letter button in third row
|
|
#define COL4_LETTER_C1 (COL3_LETTER_C1 - 1) // number of column of letter button in forth row
|
|
|
|
#define W_LETTER_C1 20 // width of letter button face
|
|
#define H_LETTER_C1 24 // height of letter button face
|
|
#define BORDER_C1 2 // the width/height of button border
|
|
#define W_LETTER_BTN_C1 (W_LETTER_C1 + 2 * BORDER_C1)
|
|
#define H_LETTER_BTN_C1 (H_LETTER_C1 + 2 * BORDER_C1)
|
|
|
|
#define H_BOTTOM_C1 20 // the height of bottom button face
|
|
#define H_BOTTOM_BTN_C1 (H_BOTTOM_C1 + 2 * BORDER_C1)
|
|
|
|
|
|
// bitmap have the same size
|
|
#define W_BACKSP_C1 32 // width of Backspace button face
|
|
#define H_BACKSP_C1 H_LETTER_C1 // height of Backspace button face
|
|
#define W_TAB_C1 32 // width of Tab button face
|
|
#define H_TAB_C1 H_LETTER_C1 // height of Tab button face
|
|
#define W_CAPS_C1 38 // width of Caps button face
|
|
#define H_CAPS_C1 H_LETTER_C1 // height of Caps button face
|
|
#define W_ENTER_C1 38 // width of Enter button face
|
|
#define H_ENTER_C1 H_LETTER_C1 // height of Enter button face
|
|
#define W_SHIFT_C1 56 // width of Shift button face
|
|
#define H_SHIFT_C1 H_LETTER_C1 // height of Shift button face
|
|
#define W_INS_C1 34 // width of Ins button face
|
|
#define H_INS_C1 H_BOTTOM_C1 // height of Ins button face
|
|
#define W_DEL_C1 34 // width of Del button face
|
|
#define H_DEL_C1 H_BOTTOM_C1 // height of Del button face
|
|
#define W_SPACE_C1 168 // width of Space button face
|
|
#define H_SPACE_C1 H_BOTTOM_C1 // height of Space button face
|
|
#define W_ESC_C1 34 // width of Esc button face
|
|
#define H_ESC_C1 H_BOTTOM_C1 // height of Esc button face
|
|
|
|
#define X_ROW_LETTER_C1 0
|
|
#define X_ROW2_LETTER_C1 (W_TAB_C1 + 2 * BORDER_C1)
|
|
#define X_ROW3_LETTER_C1 (W_CAPS_C1 + 2 * BORDER_C1)
|
|
#define X_ROW4_LETTER_C1 (W_SHIFT_C1 + 2 * BORDER_C1)
|
|
#define X_DEL_C1 58
|
|
#define X_ESC_C1 310
|
|
|
|
#define LETTER_NUM_C1 47 // number of letter buttons
|
|
#define OTHER_NUM_C1 9 // number of other buttons
|
|
#define BUTTON_NUM_C1 (LETTER_NUM_C1 + OTHER_NUM_C1) // number of buttons
|
|
|
|
#define WIDTH_SOFTKBD_C1 (COL_LETTER_C1 * W_LETTER_BTN_C1 \
|
|
+ W_BACKSP_C1 + 2 * BORDER_C1)
|
|
#define HEIGHT_SOFTKBD_C1 (ROW_LETTER_C1 * H_LETTER_BTN_C1 + H_BOTTOM_BTN_C1)
|
|
|
|
#define BACKSP_TYPE_C1 LETTER_NUM_C1
|
|
#define TAB_TYPE_C1 (BACKSP_TYPE_C1 + 1)
|
|
#define CAPS_TYPE_C1 (BACKSP_TYPE_C1 + 2)
|
|
#define ENTER_TYPE_C1 (BACKSP_TYPE_C1 + 3)
|
|
#define SHIFT_TYPE_C1 (BACKSP_TYPE_C1 + 4)
|
|
#define INS_TYPE_C1 (BACKSP_TYPE_C1 + 5)
|
|
#define DEL_TYPE_C1 (BACKSP_TYPE_C1 + 6)
|
|
#define SPACE_TYPE_C1 (BACKSP_TYPE_C1 + 7)
|
|
#define ESC_TYPE_C1 (BACKSP_TYPE_C1 + 8)
|
|
|
|
// font constants
|
|
#define SIZEFONT_C1 12 // 12 x 12 pixels font
|
|
#define SIZELABEL_C1 8 // 8 x 8 button label
|
|
|
|
#define X_LABEL_C1 2 // from the button org
|
|
#define Y_LABEL_C1 2
|
|
#define X_SHIFT_CHAR_C1 10
|
|
#define Y_SHIFT_CHAR_C1 2
|
|
#define X_NONSHIFT_CHAR_C1 2
|
|
#define Y_NONSHIFT_CHAR_C1 14
|
|
|
|
|
|
// SoftKbd context
|
|
#define SKC1_CONTEXT 0
|
|
|
|
#define FLAG_SHIFT_C1 0x01
|
|
#define FLAG_DRAG_C1 0x02
|
|
#define FLAG_FOCUS_C1 0x04
|
|
|
|
typedef struct _tagSKC1CTXT {
|
|
WORD wShiftCode[LETTER_NUM_C1];
|
|
WORD wNonShiftCode[LETTER_NUM_C1];
|
|
UINT uState;
|
|
HBITMAP hSoftkbd;
|
|
UINT uSubtype;
|
|
int uKeyIndex;
|
|
POINT ptSkCursor;
|
|
POINT ptSkOffset;
|
|
UINT lfCharSet;
|
|
} SKC1CTXT, *PSKC1CTXT, FAR *LPSKC1CTXT, NEAR *NPSKC1CTXT;
|
|
|
|
LRESULT SKWndProcC1(HWND, UINT, WPARAM, LPARAM);
|
|
VOID SKC1DrawDragBorder(HWND, LPPOINT, LPPOINT);
|
|
|
|
#endif // _SOFTKBD_
|