📄 kbusex.pas
字号:
unit KbUsEx;
interface
uses Windows;
//
// Key names
//
const
KB_LSHIFT = 0;
KB_RSHIFT = 1;
KB_CAPLOCK = 2;
KB_SPACE = 3;
KB_LCTR = 4;
KB_RCTR = 5;
KB_LALT = 6;
KB_RALT = 7;
KB_NUMLOCK = 8;
KB_PSC = 9;
NO_NAME = 10;
ICON = 11;
KB_SCROLL = 12;
BITMAP = 13;
//
// Key types
//
const
KNORMAL_TYPE = 1;
KMODIFIER_TYPE = 2;
KDEAD_TYPE = 3;
NUMLOCK_TYPE = 4;
SCROLLOCK_TYPE = 5;
CAPSLOCK_TYPE = 6;
//
// 单个按键
//
type
TKbKeyRec = record
TextL: PChar; // text in key lower
TextC: PChar; // text in key capital
SkLow: PChar; // What has to be printed low letter
SkCap: PChar; // What has to be printed cap letter
Name: Integer; // BITMAP, LSHIFT, RSHIF...
PosY: Short; // See explanation above
PosX: Short; // same as above
kSizeY: Short; // key size in conventional units
kSizeX: Short; // same as above
kType: Integer; // 1 - normal, 2 - modifier, 3 - dead
Print: Integer; // 1 - print use ToAscii(), 2 - print the text provided by the header file
ScanCode: array[0..3] of UInt; // key scan-code
end;
//
// 美式键盘
//
var
KbKeyList: array[0..103] of TKbKeyRec =
(
(TextL: 'esc'; TextC: 'esc'; SkLow: '{esc}'; SkCap: '{esc}'; Name: NO_NAME; PosY: 1; PosX: 1; kSizeY: 8; kSizeX: 8; kType: KNORMAL_TYPE; Print: 2; ScanCode: ($01, $00, $00, $00)),
(TextL: 'F1'; TextC: 'F1'; SkLow: '{f1}'; SkCap: '{f1}'; Name: NO_NAME; PosY: 1; PosX: 19; kSizeY: 8; kSizeX: 8; kType: KNORMAL_TYPE; Print: 2; ScanCode: ($3B, $00, $00, $00)),
(TextL: 'F2'; TextC: 'F2'; SkLow: '{f2}'; SkCap: '{f2}'; Name: NO_NAME; PosY: 1; PosX: 28; kSizeY: 8; kSizeX: 8; kType: KNORMAL_TYPE; Print: 2; ScanCode: ($3C, $00, $00, $00)),
(TextL: 'F3'; TextC: 'F3'; SkLow: '{f3}'; SkCap: '{f3}'; Name: NO_NAME; PosY: 1; PosX: 37; kSizeY: 8; kSizeX: 8; kType: KNORMAL_TYPE; Print: 2; ScanCode: ($3D, $00, $00, $00)),
(TextL: 'F4'; TextC: 'F4'; SkLow: '{f4}'; SkCap: '{f4}'; Name: NO_NAME; PosY: 1; PosX: 46; kSizeY: 8; kSizeX: 8; kType: KNORMAL_TYPE; Print: 2; ScanCode: ($3E, $00, $00, $00)),
(TextL: 'F5'; TextC: 'F5'; SkLow: '{f5}'; SkCap: '{f5}'; Name: NO_NAME; PosY: 1; PosX: 60; kSizeY: 8; kSizeX: 8; kType: KNORMAL_TYPE; Print: 2; ScanCode: ($3F, $00, $00, $00)),
(TextL: 'F6'; TextC: 'F6'; SkLow: '{f6}'; SkCap: '{f6}'; Name: NO_NAME; PosY: 1; PosX: 69; kSizeY: 8; kSizeX: 8; kType: KNORMAL_TYPE; Print: 2; ScanCode: ($40, $00, $00, $00)),
(TextL: 'F7'; TextC: 'F7'; SkLow: '{f7}'; SkCap: '{f7}'; Name: NO_NAME; PosY: 1; PosX: 78; kSizeY: 8; kSizeX: 8; kType: KNORMAL_TYPE; Print: 2; ScanCode: ($41, $00, $00, $00)),
(TextL: 'F8'; TextC: 'F8'; SkLow: '{f8}'; SkCap: '{f8}'; Name: NO_NAME; PosY: 1; PosX: 87; kSizeY: 8; kSizeX: 8; kType: KNORMAL_TYPE; Print: 2; ScanCode: ($42, $00, $00, $00)),
(TextL: 'F9'; TextC: 'F9'; SkLow: '{f9}'; SkCap: '{f9}'; Name: NO_NAME; PosY: 1; PosX: 101; kSizeY: 8; kSizeX: 8; kType: KNORMAL_TYPE; Print: 2; ScanCode: ($43, $00, $00, $00)),
(TextL: 'F10'; TextC: 'F10'; SkLow: '{f10}'; SkCap: '{f10}'; Name: NO_NAME; PosY: 1; PosX: 110; kSizeY: 8; kSizeX: 8; kType: KNORMAL_TYPE; Print: 2; ScanCode: ($44, $00, $00, $00)),
(TextL: 'F11'; TextC: 'F11'; SkLow: '{f11}'; SkCap: '{f11}'; Name: NO_NAME; PosY: 1; PosX: 119; kSizeY: 8; kSizeX: 8; kType: KNORMAL_TYPE; Print: 2; ScanCode: ($57, $00, $00, $00)),
(TextL: 'F12'; TextC: 'F12'; SkLow: '{f12}'; SkCap: '{f12}'; Name: NO_NAME; PosY: 1; PosX: 128; kSizeY: 8; kSizeX: 8; kType: KNORMAL_TYPE; Print: 2; ScanCode: ($58, $00, $00, $00)),
(TextL: 'psc'; TextC: 'psc'; SkLow: '{PRTSC}'; SkCap: '{PRTSC}'; Name: KB_PSC; PosY: 1; PosX: 138; kSizeY: 8; kSizeX: 8; kType: KNORMAL_TYPE; Print: 2; ScanCode: ($E0, $2A, $E0, $37)),
(TextL: 'slk'; TextC: 'slk'; SkLow: '{SCROLLOCK}'; SkCap: '{SCROLLOCK}'; Name: KB_SCROLL; PosY: 1; PosX: 147; kSizeY: 8; kSizeX: 8; kType: SCROLLOCK_TYPE; Print: 2; ScanCode: ($46, $00, $00, $00)),
(TextL: 'brk'; TextC: 'pau'; SkLow: '{BREAK}'; SkCap: '{^s}'; Name: NO_NAME; PosY: 1; PosX: 156; kSizeY: 8; kSizeX: 8; kType: KNORMAL_TYPE; Print: 2; ScanCode: ($E1, $1D, $45, $00)),
(TextL: '`'; TextC: '~'; SkLow: '`'; SkCap: '{~}'; Name: NO_NAME; PosY: 12; PosX: 1; kSizeY: 8; kSizeX: 8; kType: KNORMAL_TYPE; Print: 1; ScanCode: ($29, $00, $00, $00)),
(TextL: '1'; TextC: '!'; SkLow: '1'; SkCap: '!'; Name: NO_NAME; PosY: 12; PosX: 10; kSizeY: 8; kSizeX: 8; kType: KNORMAL_TYPE; Print: 1; ScanCode: ($02, $00, $00, $00)),
(TextL: '2'; TextC: '@'; SkLow: '2'; SkCap: '@'; Name: NO_NAME; PosY: 12; PosX: 19; kSizeY: 8; kSizeX: 8; kType: KNORMAL_TYPE; Print: 1; ScanCode: ($03, $00, $00, $00)),
(TextL: '3'; TextC: '#'; SkLow: '3'; SkCap: '#'; Name: NO_NAME; PosY: 12; PosX: 28; kSizeY: 8; kSizeX: 8; kType: KNORMAL_TYPE; Print: 1; ScanCode: ($04, $00, $00, $00)),
(TextL: '4'; TextC: '$'; SkLow: '4'; SkCap: '$'; Name: NO_NAME; PosY: 12; PosX: 37; kSizeY: 8; kSizeX: 8; kType: KNORMAL_TYPE; Print: 1; ScanCode: ($05, $00, $00, $00)),
(TextL: '5'; TextC: '%'; SkLow: '5'; SkCap: '{%}'; Name: NO_NAME; PosY: 12; PosX: 46; kSizeY: 8; kSizeX: 8; kType: KNORMAL_TYPE; Print: 1; ScanCode: ($06, $00, $00, $00)),
(TextL: '6'; TextC: '^'; SkLow: '6'; SkCap: '{^}'; Name: NO_NAME; PosY: 12; PosX: 55; kSizeY: 8; kSizeX: 8; kType: KNORMAL_TYPE; Print: 1; ScanCode: ($07, $00, $00, $00)),
(TextL: '7'; TextC: '&'; SkLow: '7'; SkCap: '&'; Name: NO_NAME; PosY: 12; PosX: 64; kSizeY: 8; kSizeX: 8; kType: KNORMAL_TYPE; Print: 1; ScanCode: ($08, $00, $00, $00)),
(TextL: '8'; TextC: '*'; SkLow: '8'; SkCap: '*'; Name: NO_NAME; PosY: 12; PosX: 73; kSizeY: 8; kSizeX: 8; kType: KNORMAL_TYPE; Print: 1; ScanCode: ($09, $00, $00, $00)),
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -