[Back to KEYBOARD SWAG index] [Back to Main SWAG index] [Original]
{
ROBERT ROTHENBURG
>I have created a Menu Bar, Now I think key #77 is left and key #77 is
>assigned to "M" or one of them. But anyway so when someone pushes the
>"M" key the menu bar moves. So how can I stop this, I only want it to
>use the arrow keys and a few letters but not "M".
You guessed it: USE BIOS CALLS!
}
Program ShowCodes; {* This Program will output the keyboard
{* scan codes. Use the Function "ScanCode"
{* in your Program once you know the codes
{* For each keypress *}
Uses
Crt, Dos;
Function Byte2Hex(numb : Byte): String; { Converts Byte to hex String }
Const
HexChars : Array[0..15] of Char = '0123456789ABCDEF';
begin
Byte2Hex[0] := #2;
Byte2Hex[1] := HexChars[numb shr 4];
Byte2Hex[2] := HexChars[numb and 15];
end; { Byte2Hex }
Function Numb2Hex(numb : Word): String; { Converts Word to hex String.}
begin
Numb2Hex := Byte2Hex(hi(numb)) + Byte2Hex(lo(numb));
end; { Numb2Hex }
Function ScanCode : Word;
Var
reg : Registers; {* You need the Dos Unit For this! *}
begin
reg.AH := $10; {* This should WAIT For a keystroke. If
{* you'd like to POLL For a keystroke and
{* have your Program do other stuff While
{* "waiting" For a key-stroke change to
{* reg.AH:=$11 instead... *}
intr($16, reg);
ScanCode := reg.AX {* The high-Byte is the "scan code" *}
end; {* The low-Byte is the ASCII Character *}
begin
Repeat
Writeln(Numb2Hex(ScanCode) : 6)
Until False; {* You'll have to reboot after running this <g>*}
end.
{
I "think" the arrow-key scan codes are:
$4800 = Up Arrow
$5000 = Down Arrow
$4B00 = Left Arrow
$4D00 = Right Arrow
}
[Back to KEYBOARD SWAG index] [Back to Main SWAG index] [Original]