📄 keyboard.inc
字号:
{* ______ ___ ___
* /\ _ \ /\_ \ /\_ \
* \ \ \L\ \\//\ \ \//\ \ __ __ _ __ ___
* \ \ __ \ \ \ \ \ \ \ /'__`\ /'_ `\/\`'__\/ __`\
* \ \ \/\ \ \_\ \_ \_\ \_/\ __//\ \L\ \ \ \//\ \L\ \
* \ \_\ \_\/\____\/\____\ \____\ \____ \ \_\\ \____/
* \/_/\/_/\/____/\/____/\/____/\/___L\ \/_/ \/___/
* /\____/
* \_/__/
*
* Keyboard routines.
*
* By Shawn Hargreaves.
*
* See readme.txt for copyright information.
*}
{$IFDEF ALLEGRO_INTERFACE}
type
P_KEYBOARD_DRIVER = ^KEYBOARD_DRIVER;
KEYBOARD_DRIVER = record
id : sint32;
name : PChar;
desc : PChar;
ascii_name : PChar;
autorepeat : sint32;
init : function: sint32; cdecl;
exit : procedure; cdecl;
poll : procedure; cdecl;
set_leds : procedure(leds: sint32); cdecl;
set_rate : procedure(delay, rate: sint32); cdecl;
wait_for_input : procedure; cdecl;
stop_waiting_for_input : procedure; cdecl;
scancode_to_ascii : function(scancode: sint32): sint32; cdecl;
scancode_to_name : function(scancode: sint32): PChar; cdecl;
end;
key_callback_ptr = function(key: sint32): sint32; cdecl;
key_ucallback_ptr = function(key: sint32; var scancode: sint32): sint32; cdecl;
key_lowlevel_ptr = procedure(scancode: sint32); cdecl;
keypressed_ptr = function: sint32; cdecl;
readkey_ptr = function: sint32; cdecl;
var
the_keyboard_driver : ^P_KEYBOARD_DRIVER;
_keyboard_driver_list : P_DRIVER_INFO;
install_keyboard : function: sint32; cdecl;
remove_keyboard : procedure; cdecl;
poll_keyboard : function: sint32; cdecl;
keyboard_needs_poll : function: sint32; cdecl;
keyboard_callback : ^key_callback_ptr;
keyboard_ucallback : ^key_ucallback_ptr;
keyboard_lowlevel_callback : ^key_lowlevel_ptr;
install_keyboard_hooks : procedure(keypressed: keypressed_ptr; readkey: readkey_ptr); cdecl;
key : p_booleans;
key_shifts : p_sint32;
three_finger_flag : p_sint32;
key_led_flag : p_sint32;
keypressed : function: Boolean; cdecl;
readkey : function: sint32; cdecl;
ureadkey : function(var scancode: sint32): sint32; cdecl;
simulate_keypress : procedure(keycode: sint32); cdecl;
simulate_ukeypress : procedure(keycode, scancode: sint32); cdecl;
clear_keybuf : procedure; cdecl;
set_leds : procedure(leds: sint32); cdecl;
set_keyboard_rate : procedure(delay, repeats: sint32); cdecl;
scancode_to_ascii : function(scancode: sint32): sint32; cdecl;
scancode_to_name : function(scancode: sint32): PChar; cdecl;
{* The KEY_ macros are no longer #defined directly to avoid conflicting with
* linux (which has its own KEY_ constants). "__allegro_"-prefixed constants
* are used by the Allegro-Linux keyboard driver, but everyone else should
* continue to use the KEY_ constants.
*}
const
__allegro_KB_SHIFT_FLAG = $0001;
__allegro_KB_CTRL_FLAG = $0002;
__allegro_KB_ALT_FLAG = $0004;
__allegro_KB_LWIN_FLAG = $0008;
__allegro_KB_RWIN_FLAG = $0010;
__allegro_KB_MENU_FLAG = $0020;
__allegro_KB_COMMAND_FLAG = $0040;
__allegro_KB_SCROLOCK_FLAG = $0100;
__allegro_KB_NUMLOCK_FLAG = $0200;
__allegro_KB_CAPSLOCK_FLAG = $0400;
__allegro_KB_INALTSEQ_FLAG = $0800;
__allegro_KB_ACCENT1_FLAG = $1000;
__allegro_KB_ACCENT2_FLAG = $2000;
__allegro_KB_ACCENT3_FLAG = $4000;
__allegro_KB_ACCENT4_FLAG = $8000;
__allegro_KEY_A = 1;
__allegro_KEY_B = 2;
__allegro_KEY_C = 3;
__allegro_KEY_D = 4;
__allegro_KEY_E = 5;
__allegro_KEY_F = 6;
__allegro_KEY_G = 7;
__allegro_KEY_H = 8;
__allegro_KEY_I = 9;
__allegro_KEY_J = 10;
__allegro_KEY_K = 11;
__allegro_KEY_L = 12;
__allegro_KEY_M = 13;
__allegro_KEY_N = 14;
__allegro_KEY_O = 15;
__allegro_KEY_P = 16;
__allegro_KEY_Q = 17;
__allegro_KEY_R = 18;
__allegro_KEY_S = 19;
__allegro_KEY_T = 20;
__allegro_KEY_U = 21;
__allegro_KEY_V = 22;
__allegro_KEY_W = 23;
__allegro_KEY_X = 24;
__allegro_KEY_Y = 25;
__allegro_KEY_Z = 26;
__allegro_KEY_0 = 27;
__allegro_KEY_1 = 28;
__allegro_KEY_2 = 29;
__allegro_KEY_3 = 30;
__allegro_KEY_4 = 31;
__allegro_KEY_5 = 32;
__allegro_KEY_6 = 33;
__allegro_KEY_7 = 34;
__allegro_KEY_8 = 35;
__allegro_KEY_9 = 36;
__allegro_KEY_0_PAD = 37;
__allegro_KEY_1_PAD = 38;
__allegro_KEY_2_PAD = 39;
__allegro_KEY_3_PAD = 40;
__allegro_KEY_4_PAD = 41;
__allegro_KEY_5_PAD = 42;
__allegro_KEY_6_PAD = 43;
__allegro_KEY_7_PAD = 44;
__allegro_KEY_8_PAD = 45;
__allegro_KEY_9_PAD = 46;
__allegro_KEY_F1 = 47;
__allegro_KEY_F2 = 48;
__allegro_KEY_F3 = 49;
__allegro_KEY_F4 = 50;
__allegro_KEY_F5 = 51;
__allegro_KEY_F6 = 52;
__allegro_KEY_F7 = 53;
__allegro_KEY_F8 = 54;
__allegro_KEY_F9 = 55;
__allegro_KEY_F10 = 56;
__allegro_KEY_F11 = 57;
__allegro_KEY_F12 = 58;
__allegro_KEY_ESC = 59;
__allegro_KEY_TILDE = 60;
__allegro_KEY_MINUS = 61;
__allegro_KEY_EQUALS = 62;
__allegro_KEY_BACKSPACE = 63;
__allegro_KEY_TAB = 64;
__allegro_KEY_OPENBRACE = 65;
__allegro_KEY_CLOSEBRACE = 66;
__allegro_KEY_ENTER = 67;
__allegro_KEY_COLON = 68;
__allegro_KEY_QUOTE = 69;
__allegro_KEY_BACKSLASH = 70;
__allegro_KEY_BACKSLASH2 = 71;
__allegro_KEY_COMMA = 72;
__allegro_KEY_STOP = 73;
__allegro_KEY_SLASH = 74;
__allegro_KEY_SPACE = 75;
__allegro_KEY_INSERT = 76;
__allegro_KEY_DEL = 77;
__allegro_KEY_HOME = 78;
__allegro_KEY_END = 79;
__allegro_KEY_PGUP = 80;
__allegro_KEY_PGDN = 81;
__allegro_KEY_LEFT = 82;
__allegro_KEY_RIGHT = 83;
__allegro_KEY_UP = 84;
__allegro_KEY_DOWN = 85;
__allegro_KEY_SLASH_PAD = 86;
__allegro_KEY_ASTERISK = 87;
__allegro_KEY_MINUS_PAD = 88;
__allegro_KEY_PLUS_PAD = 89;
__allegro_KEY_DEL_PAD = 90;
__allegro_KEY_ENTER_PAD = 91;
__allegro_KEY_PRTSCR = 92;
__allegro_KEY_PAUSE = 93;
__allegro_KEY_ABNT_C1 = 94;
__allegro_KEY_YEN = 95;
__allegro_KEY_KANA = 96;
__allegro_KEY_CONVERT = 97;
__allegro_KEY_NOCONVERT = 98;
__allegro_KEY_AT = 99;
__allegro_KEY_CIRCUMFLEX = 100;
__allegro_KEY_COLON2 = 101;
__allegro_KEY_KANJI = 102;
__allegro_KEY_EQUALS_PAD = 103; // MacOS X
__allegro_KEY_BACKQUOTE = 104; // MacOS X
__allegro_KEY_SEMICOLON = 105; // MacOS X
__allegro_KEY_COMMAND = 106; // MacOS X
__allegro_KEY_UNKNOWN1 = 107;
__allegro_KEY_UNKNOWN2 = 108;
__allegro_KEY_UNKNOWN3 = 109;
__allegro_KEY_UNKNOWN4 = 110;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -