home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 31 / CDASC_31_1996_juillet_aout.iso / vrac / cddk9605.zip / HEADERS.ARJ / KEYBOARD.INT < prev    next >
Text File  |  1996-05-17  |  9KB  |  403 lines

  1.  
  2. { ───────────────────────────────────────────────────────────────────────── }
  3. {  Name        : KEYBOARD.PAS                                               }
  4. {  Description : Keyboard routines                                          }
  5. { ───────────────────────────────────────────────────────────────────────── }
  6.  
  7. UNIT Keyboard;
  8.  
  9. {$B-} { . . . . . . . . . . . . . . . . . . . . Shortcut boolean evaluation }
  10. {$F+} { . . . . . . . . . . . . . . . . . . . .  Force far calls for safety }
  11. {$I-} { . . . . . . . . . . . . . . . . . . . Disable input/output checking }
  12. {$O+} { . . . . . . . . . . . . . . . . . . Allow this unit to be overlayed }
  13. {$Q-} { . . . . . . . . . . . . . .  Do not generate overflow-checking code }
  14. {$R-} { . . . . . . . . . . . . . . . . Do not generate range-checking code }
  15. {$S-} { . . . . . . . . . . . . . . . . Do not generate stack-checking code }
  16. {$X+} { . . . . . . . . . . . Extended syntax for pChars and function calls }
  17.  
  18. INTERFACE
  19.  
  20. CONST
  21.  
  22.   ScanCode : Word = 0; { The scan code of the last keystroke is assigned to }
  23.                        { this variable by the ReadKey procedure.            }
  24.  
  25.  
  26.   { Shift Flags -- use these constants with the GetShiftFlags function.     }
  27.  
  28.   sf_RightShift = $01; { -------1 }
  29.   sf_LeftShift  = $02; { ------1- }
  30.   sf_Control    = $04; { -----1-- }
  31.   sf_Alt        = $08; { ----1--- }
  32.   sf_ScrollLock = $10; { ---1---- }
  33.   sf_NumLock    = $20; { --1----- }
  34.   sf_CapsLock   = $40; { -1------ }
  35.   sf_Insert     = $40; { 1------- }
  36.  
  37.  
  38. CONST
  39.  
  40.   { Scan-Code Constants
  41.  
  42.     KB_Alt_?   =   Scan code of the ALT key plus the letter.
  43.     KB_Ctl_?   =   Scan code of the CONTROL key plus the letter.
  44.     KB_Cap_?   =   Scan code of the capital letter.
  45.     KB_Low_?   =   Scan code of the lower-case letter. }
  46.  
  47.  
  48.   { Letters }
  49.  
  50.   KB_Alt_A  = $1E00;
  51.   KB_Ctl_A  = $1E01;
  52.   KB_Cap_A  = $1E41;
  53.   KB_Low_A  = $1E61;
  54.  
  55.   KB_Alt_B  = $3000;
  56.   KB_Ctl_B  = $3002;
  57.   KB_Cap_B  = $3042;
  58.   KB_Low_B  = $3062;
  59.  
  60.   KB_Alt_C  = $2E00;
  61.   KB_Ctl_C  = $2E03;
  62.   KB_Cap_C  = $2E43;
  63.   KB_Low_C  = $2E63;
  64.  
  65.   KB_Alt_D  = $2000;
  66.   KB_Ctl_D  = $2004;
  67.   KB_Cap_D  = $2044;
  68.   KB_Low_D  = $2064;
  69.  
  70.   KB_Alt_E  = $1200;
  71.   KB_Ctl_E  = $1205;
  72.   KB_Cap_E  = $1245;
  73.   KB_Low_E  = $1265;
  74.  
  75.   KB_Alt_F  = $2100;
  76.   KB_Ctl_F  = $2106;
  77.   KB_Cap_F  = $2146;
  78.   KB_Low_F  = $2166;
  79.  
  80.   KB_Alt_G  = $2200;
  81.   KB_Ctl_G  = $2207;
  82.   KB_Cap_G  = $2247;
  83.   KB_Low_G  = $2267;
  84.  
  85.   KB_Alt_H  = $2300;
  86.   KB_Ctl_H  = $2308;
  87.   KB_Cap_H  = $2348;
  88.   KB_Low_H  = $2368;
  89.  
  90.   KB_Alt_I  = $1700;
  91.   KB_Ctl_I  = $1709;
  92.   KB_Cap_I  = $1749;
  93.   KB_Low_I  = $1769;
  94.  
  95.   KB_Alt_J  = $2400;
  96.   KB_Ctl_J  = $240A;
  97.   KB_Cap_J  = $244A;
  98.   KB_Low_J  = $246A;
  99.  
  100.   KB_Alt_K  = $2500;
  101.   KB_Ctl_K  = $250B;
  102.   KB_Cap_K  = $254B;
  103.   KB_Low_K  = $256B;
  104.  
  105.   KB_Alt_L  = $2600;
  106.   KB_Ctl_L  = $260C;
  107.   KB_Cap_L  = $264C;
  108.   KB_Low_L  = $266C;
  109.  
  110.   KB_Alt_M  = $3200;
  111.   KB_Ctl_M  = $320D;
  112.   KB_Cap_M  = $324D;
  113.   KB_Low_M  = $326D;
  114.  
  115.   KB_Alt_N  = $3100;
  116.   KB_Ctl_N  = $310E;
  117.   KB_Cap_N  = $314E;
  118.   KB_Low_N  = $316E;
  119.  
  120.   KB_Alt_O  = $1800;
  121.   KB_Ctl_O  = $180F;
  122.   KB_Cap_O  = $184F;
  123.   KB_Low_O  = $186F;
  124.  
  125.   KB_Alt_P  = $1900;
  126.   KB_Ctl_P  = $1910;
  127.   KB_Cap_P  = $1950;
  128.   KB_Low_P  = $1970;
  129.  
  130.   KB_Alt_Q  = $1000;
  131.   KB_Ctl_Q  = $1011;
  132.   KB_Cap_Q  = $1051;
  133.   KB_Low_Q  = $1071;
  134.  
  135.   KB_Alt_R  = $1300;
  136.   KB_Ctl_R  = $1312;
  137.   KB_Cap_R  = $1352;
  138.   KB_Low_R  = $1372;
  139.  
  140.   KB_Alt_S  = $1F00;
  141.   KB_Ctl_S  = $1F13;
  142.   KB_Cap_S  = $1F53;
  143.   KB_Low_S  = $1F73;
  144.  
  145.   KB_Alt_T  = $1400;
  146.   KB_Ctl_T  = $1414;
  147.   KB_Cap_T  = $1454;
  148.   KB_Low_T  = $1474;
  149.  
  150.   KB_Alt_U  = $1600;
  151.   KB_Ctl_U  = $1615;
  152.   KB_Cap_U  = $1655;
  153.   KB_Low_U  = $1675;
  154.  
  155.   KB_Alt_V  = $2F00;
  156.   KB_Ctl_V  = $2F16;
  157.   KB_Cap_V  = $2F56;
  158.   KB_Low_V  = $2F76;
  159.  
  160.   KB_Alt_W  = $1100;
  161.   KB_Ctl_W  = $1117;
  162.   KB_Cap_W  = $1157;
  163.   KB_Low_W  = $1177;
  164.  
  165.   KB_Alt_X  = $2D00;
  166.   KB_Ctl_X  = $2D18;
  167.   KB_Cap_X  = $2D58;
  168.   KB_Low_X  = $2D78;
  169.  
  170.   KB_Alt_Y  = $1500;
  171.   KB_Ctl_Y  = $1519;
  172.   KB_Cap_Y  = $1559;
  173.   KB_Low_Y  = $1579;
  174.  
  175.   KB_Alt_Z  = $2C00;
  176.   KB_Ctl_Z  = $2C1A;
  177.   KB_Cap_Z  = $2C5A;
  178.   KB_Low_Z  = $2C7A;
  179.  
  180.   { Digits }
  181.  
  182.   KB_Num_1  = $0231;
  183.   KB_Pad_1  = $4F31;
  184.   KB_Alt_1  = $7800;
  185.  
  186.   KB_Num_2  = $0332;
  187.   KB_Pad_2  = $5032;
  188.   KB_Alt_2  = $7900;
  189.  
  190.   KB_Num_3  = $0433;
  191.   KB_Pad_3  = $5133;
  192.   KB_Alt_3  = $7A00;
  193.  
  194.   KB_Num_4  = $0534;
  195.   KB_Pad_4  = $4B34;
  196.   KB_Alt_4  = $7B00;
  197.  
  198.   KB_Num_5  = $0635;
  199.   KB_Pad_5  = $4C35;
  200.   KB_Alt_5  = $7C00;
  201.  
  202.   KB_Num_6  = $0736;
  203.   KB_Pad_6  = $4D36;
  204.   KB_Alt_6  = $7D00;
  205.  
  206.   KB_Num_7  = $0837;
  207.   KB_Pad_7  = $4737;
  208.   KB_Alt_7  = $7E00;
  209.  
  210.   KB_Num_8  = $0938;
  211.   KB_Pad_8  = $4838;
  212.   KB_Alt_8  = $7F00;
  213.  
  214.   KB_Num_9  = $0A39;
  215.   KB_Pad_9  = $4939;
  216.   KB_Alt_9  = $8000;
  217.  
  218.   KB_Num_0  = $0B30;
  219.   KB_Pad_0  = $5230;
  220.   KB_Alt_0  = $8100;
  221.  
  222.   { Function Keys }
  223.  
  224.   KB_Fun_F1 = $3B00;
  225.   KB_Shf_F1 = $5400;
  226.   KB_Ctl_F1 = $5E00;
  227.   KB_Alt_F1 = $6800;
  228.  
  229.   KB_Fun_F2 = $3C00;
  230.   KB_Shf_F2 = $5500;
  231.   KB_Ctl_F2 = $5F00;
  232.   KB_Alt_F2 = $6900;
  233.  
  234.   KB_Fun_F3 = $3D00;
  235.   KB_Shf_F3 = $5600;
  236.   KB_Ctl_F3 = $6000;
  237.   KB_Alt_F3 = $6A00;
  238.  
  239.   KB_Fun_F4 = $3E00;
  240.   KB_Shf_F4 = $5700;
  241.   KB_Ctl_F4 = $6100;
  242.   KB_Alt_F4 = $6B00;
  243.  
  244.   KB_Fun_F5 = $3F00;
  245.   KB_Shf_F5 = $5800;
  246.   KB_Ctl_F5 = $6200;
  247.   KB_Alt_F5 = $6C00;
  248.  
  249.   KB_Fun_F6 = $4000;
  250.   KB_Shf_F6 = $5900;
  251.   KB_Ctl_F6 = $6300;
  252.   KB_Alt_F6 = $6D00;
  253.  
  254.   KB_Fun_F7 = $4100;
  255.   KB_Shf_F7 = $5A00;
  256.   KB_Ctl_F7 = $6400;
  257.   KB_Alt_F7 = $6E00;
  258.  
  259.   KB_Fun_F8 = $4200;
  260.   KB_Shf_F8 = $5B00;
  261.   KB_Ctl_F8 = $6500;
  262.   KB_Alt_F8 = $6F00;
  263.  
  264.   KB_Fun_F9 = $4300;
  265.   KB_Shf_F9 = $5C00;
  266.   KB_Ctl_F9 = $6600;
  267.   KB_Alt_F9 = $7000;
  268.  
  269.   KB_Fun_F0 = $4400;
  270.   KB_Shf_F0 = $5D00;
  271.   KB_Ctl_F0 = $6700;
  272.   KB_Alt_F0 = $7100;
  273.  
  274.   { Brackets }
  275.  
  276.   KB_Open_Brace        = $1A7B;
  277.   KB_Close_Brace       = $1B7D;
  278.  
  279.   KB_Open_Bracket      = $1A5B;
  280.   KB_Ctl_Open_Bracket  = $1A1B;
  281.  
  282.   KB_Close_Bracket     = $1B5D;
  283.   KB_Ctl_Close_Bracket = $1B1D;
  284.  
  285.   KB_Open_Parenthesis  = $0A28;
  286.   KB_Close_Parenthesis = $0B29;
  287.  
  288.  
  289.   { Math }
  290.  
  291.   KB_Equal             = $0D3D;
  292.   KB_Alt_Equal         = $8300;
  293.  
  294.   KB_Less_Than         = $333C;
  295.   KB_Greater_Than      = $343E;
  296.  
  297.   KB_Minus             = $352D;
  298.   KB_GrayMinus         = $4A2D;
  299.   KB_Ctl_Minus         = $0C1F;
  300.   KB_Alt_Minus         = $8200;
  301.   KB_ShfGrayMinus      = $4A2D;
  302.  
  303.   KB_Plus              = $1A2B;
  304.   KB_GrayPlus          = $4E2B;
  305.   KB_WhitePlus         = $0D2B;
  306.   KB_ShfGrayPlus       = $4E2B;
  307.  
  308.   KB_Slash             = $352F;
  309.   KB_BackSlash         = $2B5C;
  310.   KB_Ctl_BackSlash     = $2B1C;
  311.  
  312.   { Punctuation }
  313.  
  314.   KB_Ampersand     = $0826;
  315.   KB_Apostrophe    = $2827;
  316.   KB_At            = $0340;
  317.   KB_Cater         = $075E;
  318.   KB_Colon         = $273A;
  319.   KB_Comma         = $332C;
  320.   KB_Dollar        = $0524;
  321.   KB_Exclamation   = $0221;
  322.   KB_Grave         = $2960;
  323.   KB_GrayAsterisk  = $372A;
  324.   KB_NumberSign    = $0423;
  325.   KB_Percent       = $0625;
  326.   KB_Period        = $342E;
  327.   KB_ShfPeriod     = $532E;
  328.   KB_Space         = $3920;
  329.   KB_QuestionMark  = $353F;
  330.   KB_Quote         = $2822;
  331.   KB_Semicolon     = $273B;
  332.   KB_Tilde         = $297E;
  333.   KB_UnitSeparator = $0C5F;
  334.   KB_Vertical      = $2B7C;
  335.   KB_WhiteAsterisk = $1A2A;
  336.  
  337.   { Cursor Positioning }
  338.  
  339.   KB_Up         = $4800;
  340.   KB_Down       = $5000;
  341.   KB_Left       = $4B00;
  342.   KB_Ctl_Left   = $7300;
  343.   KB_Right      = $4D00;
  344.   KB_Ctl_Right  = $7400;
  345.   KB_Home       = $4700;
  346.   KB_Ctl_Home   = $7700;
  347.   KB_End        = $4F00;
  348.   KB_Ctl_End    = $7500;
  349.   KB_PgUp       = $4900;
  350.   KB_Ctl_PgUp   = $8400;
  351.   KB_PgDown     = $5100;
  352.   KB_Ctl_PgDown = $7600;
  353.  
  354.   { Misc. Keys }
  355.  
  356.   KB_BackSpace     = $0E08;
  357.   KB_Ctl_Backspace = $0E7F;
  358.   KB_Del           = $5300;
  359.   KB_Esc           = $011B;
  360.   KB_Enter         = $1C0D;
  361.   KB_Ctl_Enter     = $1C0A;
  362.   KB_Ins           = $5200;
  363.   KB_Tab           = $0F09;
  364.   KB_Shf_Tab       = $0F00;
  365.  
  366.  
  367. FUNCTION GetShiftFlags:Byte;
  368.   {
  369.   PURPOSE  : Returns the status of the control keys on the keyboard.
  370.  
  371.   NOTES    : 76543210
  372.              │││││││└ Right shift
  373.              ││││││└─ Left shift
  374.              │││││└── Control
  375.              ││││└─── Alt
  376.              │││└──── Scroll lock
  377.              ││└───── Num lock
  378.              │└────── Caps lock
  379.              └─────── Insert
  380.  
  381.   SEE ALSO : KeyPressed, ReadKey
  382.   }
  383.  
  384.  
  385. FUNCTION KeyPressed:Boolean;
  386.   {
  387.   PURPOSE  : Returns TRUE if a character is waiting in the keyboard buffer.
  388.  
  389.   SEE ALSO : ReadKey
  390.   }
  391.  
  392.  
  393. PROCEDURE ReadKey(VAR c:Char);
  394.   {
  395.   PURPOSE  : Reads a character from the keyboard.
  396.  
  397.   NOTES    : Stores the scan code in ScanCode.
  398.  
  399.   SEE ALSO : KeyPressed
  400.   }
  401.  
  402.  
  403.