Download text file
Hi,
It seems that there have been a rash of key-press questions popping
up again (must be the weather:) so I've prepared the following for
those of you who are still struggling with it. If you don't wish to
use the integer version then I've also sent the string version in the
mesage fGetKey$.
The variable constants below represent all the 2byte key codes and
are in PB v3+ format. They can be quickly changed with a search and
replace. If you're using Q*Basic then you'll want to:
replace " : %" with ", "
replace "%" with "CONST"
replace "_" with "." ' or
replace "_" with "" '
At the bottom of the file are 3 versions of the fGetKey% function;
one for PB3.2, one for FirstBASIC and one for the Q*BASICs.
%HOME_key = &h4700 : %UP_key = &h4800 : %PGUP_key = &h4900
%LEFT_key = &h4B00 : %GREY5_key = &h4C00 : %RIGHT_key = &h4D00
%END_key = &h4F00 : %DOWN_key = &h5000 : %PGDN_key = &h5100
%INS_key = &h5200 : %DEL_key = &h5300
%CTRL_HOME = &h7700 : %CTRL_UP = &h8D00 : %CTRL_PGUP = &h8400
%CTRL_LEFT = &h7300 : %CTRL_GREY5 = &h8F00 : %CTRL_RIGHT = &h7400
%CTRL_END = &h7500 : %CTRL_DOWN = &h9100 : %CTRL_PGDN = &h7600
%CTRL_INS = &h9200 : %CTRL_DEL = &h9300
%ENTER_key = &h000D : %CTRL_ENTER = &h000A
%ESC_key = &h001B : %ALT_ESC = &h0100
%BKSPC_key = &h0008 : %ALT_BKSPC = &h0E00 : %CTRL_BKSPC = &h007F
%TAB_key = &h0009 : %SHIFT_TAB = &h0F00
%F01_key = &h3B00 : %F02_key = &h3C00 : %F03_key = &h3D00
%F04_key = &h3E00 : %F05_key = &h3F00 : %F06_key = &h4000
%F07_key = &h4100 : %F08_key = &h4200 : %F09_key = &h4300
%F10_key = &h4400 : %F11_key = &h8500 : %F12_key = &h8600
%ALT_F01 = &h6800 : %ALT_F02 = &h6900 : %ALT_F03 = &h6A00
%ALT_F04 = &h6B00 : %ALT_F05 = &h6C00 : %ALT_F06 = &h6D00
%ALT_F07 = &h6E00 : %ALT_F08 = &h6F00 : %ALT_F09 = &h7000
%ALT_F10 = &h7100 : %ALT_F11 = &h8B00 : %ALT_F12 = &h8C00
%CTRL_F01 = &h5E00 : %CTRL_F02 = &h5F00 : %CTRL_F03 = &h6000
%CTRL_F04 = &h6100 : %CTRL_F05 = &h6200 : %CTRL_F06 = &h6300
%CTRL_F07 = &h6400 : %CTRL_F08 = &h6500 : %CTRL_F09 = &h6600
%CTRL_F10 = &h6700 : %CTRL_F11 = &h8900 : %CTRL_F12 = &h8A00
%SHIFT_F01 = &h5400 : %SHIFT_F02 = &h5500 : %SHIFT_F03 = &h5600
%SHIFT_F04 = &h5700 : %SHIFT_F05 = &h5800 : %SHIFT_F06 = &h5900
%SHIFT_F07 = &h5A00 : %SHIFT_F08 = &h5B00 : %SHIFT_F09 = &h5C00
%SHIFT_F10 = &h5D00 : %SHIFT_F11 = &h8700 : %SHIFT_F12 = &h8800
%ALT_0 = &h8100 : %ALT_1 = &h7800 : %ALT_2 = &h7900 : %ALT_3 = &h7A00
%ALT_4 = &h7B00 : %ALT_5 = &h7C00 : %ALT_6 = &h7D00 : %ALT_7 = &h7E00
%ALT_8 = &h7F00 : %ALT_9 = &h8000 : %ALT_A = &h1E00 : %ALT_B = &h3000
%ALT_C = &h2E00 : %ALT_D = &h2000 : %ALT_E = &h1200 : %ALT_F = &h2100
%ALT_G = &h2200 : %ALT_H = &h2300 : %ALT_I = &h1700 : %ALT_J = &h2400
%ALT_K = &h2500 : %ALT_L = &h2600 : %ALT_M = &h3200 : %ALT_N = &h3100
%ALT_O = &h1800 : %ALT_P = &h1900 : %ALT_Q = &h1000 : %ALT_R = &h1300
%ALT_S = &h1F00 : %ALT_T = &h1400 : %ALT_U = &h1600 : %ALT_V = &h2F00
%ALT_W = &h1100 : %ALT_X = &h2D00 : %ALT_Y = &h1500 : %ALT_Z = &h2C00
%ALT_ESC = &h0100 : %ALT_MINUS = &h8200 : %ALT_F_SLASH = &h3500
%ALT_TAB = &hA500 : %ALT_EQUAL = &h8300 : %ALT_L_QUOTE = &h2900
%ALT_BKSPC = &h0E00 : %ALT_COMMA = &h3300 : %ALT_R_BRACKET = &h1B00
%ALT_ENTER = &h1C00 : %ALT_PERIOD = &h3400 : %ALT_L_BRACKET = &h1A00
%ALT_TILDE = &h2800 : %ALT_B_SLASH = &h2B00 : %ALT_SIMICOLON = &h2700
%CTRL_2 = &h0300 : %CTRL_6 = &h001E : %CTRL_A = &h0001
%CTRL_B = &h0002 : %CTRL_C = &h0003 : %CTRL_D = &h0004
%CTRL_E = &h0005 : %CTRL_F = &h0006 : %CTRL_G = &h0007
%CTRL_H = &h0008 : %CTRL_I = &h0009 : %CTRL_J = &h000A
%CTRL_K = &h000B : %CTRL_L = &h000C : %CTRL_M = &h000D
%CTRL_N = &h000E : %CTRL_O = &h000F : %CTRL_P = &h0010
%CTRL_Q = &h0011 : %CTRL_R = &h0012 : %CTRL_S = &h0013
%CTRL_T = &h0014 : %CTRL_U = &h0015 : %CTRL_V = &h0016
%CTRL_W = &h0017 : %CTRL_X = &h0018 : %CTRL_Y = &h0019
%CTRL_Z = &h001A
%CTRL_TAB = &h9400 : %CTRL_MINUS = &h001F
%CTRL_BKSPC = &h007F : %CTRL_R_BRACKET = &h001D
%CTRL_B_SLASH = &h001C : %CTRL_L_BRACKET = &h001B
%ALT_GREYMINUS = &h4A00 : %CTRL_GREYMINUS = &h8E00
%ALT_GREYPLUS = &h4E00 : %CTRL_GREYPLUS = &h9000
%ALT_GREYSLASH = &hA400 : %CTRL_GREYSLASH = &h9500
%ALT_GREYSTAR = &h3700 : %CTRL_GREYSTAR = &h9600
%ALT_GREYENTER = &hA600
' PowerBASIC v3.0+
FUNCTION fGetKey%() LOCAL PUBLIC
LOCAL G$
WHILE NOT INSTAT : WEND
G$ = INKEY$
IF LEN(G$) = 1 THEN
FUNCTION = ASCII( G$ )
ELSE
FUNCTION = CVI( G$ )
END IF
END FUNCTION
' FirstBASIC and Older versions of PowerBASIC
FUNCTION fGetKey%() LOCAL PUBLIC
LOCAL G$, L%
DO
G$ = INKEY$
L% = LEN( G$ )
LOOP UNTIL L% > 0
IF L% = 1 THEN
fGetKey% = ASC( G$ )
ELSE
fGetKey% = CVI( G$ )
END IF
END FUNCTION
'Q*BASIC
FUNCTION fGetKey%
DO
G$ = INKEY$
L% = LEN( G$ )
LOOP UNTIL L% > 0
IF L% = 1 THEN
fGetKey% = ASC( G$ )
ELSE
fGetKey% = CVI( G$ )
END IF
END FUNCTION