/* * akbd.h * * Really good keyboard handling * * © 1994-1998 Straylight */ /*----- Licensing note ----------------------------------------------------* * * This file is part of Straylight's Steel library. * * Steel is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * Steel is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Steel. If not, write to the Free Software Foundation, * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef __akbd_h #define __akbd_h /*----- Make sure we have BOOL defined ------------------------------------*/ #ifndef BOOL #define BOOL int #define TRUE 1 #define FALSE 0 #endif /*----- Old-style macros for keypresses -----------------------------------*/ #define akbd_Fn (256 + 128) #define akbd_Sh (16) #define akbd_Ctl (32) #define akbd_TabK (akbd_Fn + 10) #define akbd_CopyK (akbd_Fn + 11) #define akbd_LeftK (akbd_Fn + 12) #define akbd_RightK (akbd_Fn + 13) #define akbd_DownK (akbd_Fn + 14) #define akbd_UpK (akbd_Fn + 15) #define akbd_Fn10 (0x1CA) #define akbd_Fn11 (0x1CB) #define akbd_Fn12 (0x1CC) #define akbd_InsertK (0x1CD) #define akbd_PrintK (akbd_Fn+0) #define akbd_PageUpK (akbd_Sh+akbd_UpK) #define akbd_PageDownK (akbd_Sh+akbd_DownK) /*----- Constant names for the STEEL extended keyset ----------------------* * * Due to buggy compilers, we can't put these into an enumeration, so * we put the load onto the preprocessor instead... */ #define key_cA 0x001 #define key_cB 0x002 #define key_cC 0x003 #define key_cD 0x004 #define key_cE 0x005 #define key_cF 0x006 #define key_cG 0x007 #define key_cH 0x008 #define key_cI 0x009 #define key_cJ 0x00A #define key_cK 0x00B #define key_cL 0x00C #define key_cM 0x00D #define key_cN 0x00E #define key_cO 0x00F #define key_cP 0x010 #define key_cQ 0x011 #define key_cR 0x012 #define key_cS 0x013 #define key_cT 0x014 #define key_cU 0x015 #define key_cV 0x016 #define key_cW 0x017 #define key_cX 0x018 #define key_cY 0x019 #define key_cZ 0x01A #define key_scA 0x101 #define key_scB 0x102 #define key_scC 0x103 #define key_scD 0x104 #define key_scE 0x105 #define key_scF 0x106 #define key_scG 0x107 #define key_scH 0x108 #define key_scI 0x109 #define key_scJ 0x10A #define key_scK 0x10B #define key_scL 0x10C #define key_scM 0x10D #define key_scN 0x10E #define key_scO 0x10F #define key_scP 0x110 #define key_scQ 0x111 #define key_scR 0x112 #define key_scS 0x113 #define key_scT 0x114 #define key_scU 0x115 #define key_scV 0x116 #define key_scW 0x117 #define key_scX 0x118 #define key_scY 0x119 #define key_scZ 0x11A #define key_Esc 0x01B #define key_sEsc 0x11B #define key_cEsc 0x13B #define key_scEsc 0x15B #define key_Backspace 0x01C #define key_sBackspace 0x11C #define key_cBackspace 0x13C #define key_scBackspace 0x15C #define key_Return 0x01D #define key_sReturn 0x11D #define key_cReturn 0x13D #define key_scReturn 0x15D #define key_Insert 0x1CD #define key_sInsert 0x1DD #define key_cInsert 0x1ED #define key_scInsert 0x1FD #define key_Home 0x01E #define key_sHome 0x11E #define key_cHome 0x13E #define key_scHome 0x15E #define key_Delete 0x07F #define key_sDelete 0x17F #define key_cDelete 0x01F #define key_scDelete 0x11F #define key_Copy 0x18B #define key_sCopy 0x19B #define key_cCopy 0x1AB #define key_scCopy 0x1BB #define key_Tab 0x18A #define key_sTab 0x19A #define key_cTab 0x1AA #define key_scTab 0x1BA #define key_Space 0x020 #define key_sSpace 0x120 #define key_cSpace 0x000 #define key_scSpace 0x100 #define key_c0 0x130 #define key_c1 0x131 #define key_c2 0x132 #define key_c3 0x133 #define key_c4 0x134 #define key_c5 0x135 #define key_c6 0x136 #define key_c7 0x137 #define key_c8 0x138 #define key_c9 0x139 #define key_sc0 0x150 #define key_sc1 0x151 #define key_sc2 0x152 #define key_sc3 0x153 #define key_sc4 0x154 #define key_sc5 0x155 #define key_sc6 0x156 #define key_sc7 0x157 #define key_sc8 0x158 #define key_sc9 0x159 #define key_k0 0x1C0 #define key_k1 0x1C1 #define key_k2 0x1C2 #define key_k3 0x1C3 #define key_k4 0x1C4 #define key_k5 0x1C5 #define key_k6 0x1C6 #define key_k7 0x1C7 #define key_k8 0x1C8 #define key_k9 0x1C9 #define key_sk0 0x1D0 #define key_sk1 0x1D1 #define key_sk2 0x1D2 #define key_sk3 0x1D3 #define key_sk4 0x1D4 #define key_sk5 0x1D5 #define key_sk6 0x1D6 #define key_sk7 0x1D7 #define key_sk8 0x1D8 #define key_sk9 0x1D9 #define key_ck0 0x1E0 #define key_ck1 0x1E1 #define key_ck2 0x1E2 #define key_ck3 0x1E3 #define key_ck4 0x1E4 #define key_ck5 0x1E5 #define key_ck6 0x1E6 #define key_ck7 0x1E7 #define key_ck8 0x1E8 #define key_ck9 0x1E9 #define key_sck0 0x1F0 #define key_sck1 0x1F1 #define key_sck2 0x1F2 #define key_sck3 0x1F3 #define key_sck4 0x1F4 #define key_sck5 0x1F5 #define key_sck6 0x1F6 #define key_sck7 0x1F7 #define key_sck8 0x1F8 #define key_sck9 0x1F9 #define key_cLSquare 0x12B #define key_scLSquare 0x14B #define key_cRSquare 0x12D #define key_scRSquare 0x14D #define key_cBackslash 0x12C #define key_scBackslash 0x14C #define key_cMinus 0x12F #define key_scMinus 0x14F #define key_kSlash 0x161 #define key_kStar 0x162 #define key_kHash 0x163 #define key_kMinus 0x164 #define key_kPlus 0x165 #define key_kEnter 0x166 #define key_kDot 0x167 #define key_skSlash 0x171 #define key_skStar 0x172 #define key_skHash 0x173 #define key_skMinus 0x174 #define key_skPlus 0x175 #define key_skEnter 0x176 #define key_skDot 0x177 #define key_ckSlash 0x121 #define key_ckStar 0x122 #define key_ckHash 0x123 #define key_ckMinus 0x124 #define key_ckPlus 0x125 #define key_ckEnter 0x126 #define key_ckDot 0x127 #define key_sckSlash 0x141 #define key_sckStar 0x142 #define key_sckHash 0x143 #define key_sckMinus 0x144 #define key_sckPlus 0x145 #define key_sckEnter 0x146 #define key_sckDot 0x147 #define key_Print 0x180 #define key_F1 0x181 #define key_F2 0x182 #define key_F3 0x183 #define key_F4 0x184 #define key_F5 0x185 #define key_F6 0x186 #define key_F7 0x187 #define key_F8 0x188 #define key_F9 0x189 #define key_F10 0x1CA #define key_F11 0x1CB #define key_F12 0x1CC #define key_sPrint 0x190 #define key_sF1 0x191 #define key_sF2 0x192 #define key_sF3 0x193 #define key_sF4 0x194 #define key_sF5 0x195 #define key_sF6 0x196 #define key_sF7 0x197 #define key_sF8 0x198 #define key_sF9 0x199 #define key_sF10 0x1DA #define key_sF11 0x1DB #define key_sF12 0x1DC #define key_cPrint 0x1A0 #define key_cF1 0x1A1 #define key_cF2 0x1A2 #define key_cF3 0x1A3 #define key_cF4 0x1A4 #define key_cF5 0x1A5 #define key_cF6 0x1A6 #define key_cF7 0x1A7 #define key_cF8 0x1A8 #define key_cF9 0x1A9 #define key_cF10 0x1EA #define key_cF11 0x1EB #define key_cF12 0x1EC #define key_scPrint 0x1B0 #define key_scF1 0x1B1 #define key_scF2 0x1B2 #define key_scF3 0x1B3 #define key_scF4 0x1B4 #define key_scF5 0x1B5 #define key_scF6 0x1B6 #define key_scF7 0x1B7 #define key_scF8 0x1B8 #define key_scF9 0x1B9 #define key_scF10 0x1FA #define key_scF11 0x1FB #define key_scF12 0x1FC #define key_Left 0x18C #define key_Right 0x18D #define key_Down 0x18E #define key_Up 0x18F #define key_PageDown 0x19E #define key_PageUp 0x19F #define key_sLeft 0x19C #define key_sRight 0x19D #define key_sDown 0x19E #define key_sUp 0x19F #define key_sPageDown 0x18E #define key_sPageUp 0x18F #define key_cLeft 0x1AC #define key_cRight 0x1AD #define key_cDown 0x1AE #define key_cUp 0x1AF #define key_cPageDown 0x1BE #define key_cPageUp 0x1BF #define key_scLeft 0x1BC #define key_scRight 0x1BD #define key_scDown 0x1BE #define key_scUp 0x1BF #define key_scPageDown 0x1AE #define key_scPageUp 0x1AF /*----- Functions ---------------------------------------------------------*/ /* * BOOL akbd_checkInternalKey(int ikey) * * Use * Checks whether a given key is being pressed at the moment. * * Parameters * int ikey == the internal key number of the key to check, as shown on page * 1-849 of the RISC OS 3 Programmer's Reference Manual. */ BOOL akbd_checkInternalKey(int ikey); /* * int akbd_translate(int chcode) * * Use * Translates the given WIMP-type key number, as returned in a Key_Pressed * (wimp_EKEY) event into a STEEL extended key number, which should * distinguish almost every keypress available. * * Parameters * int chcode == a WIMP-type keypress number * * Returns * An extended keycode */ int akbd_translate(int chcode); /* * BOOL akbd_pollsh(void) * * Use * Returns whether the Shift key is pressed */ BOOL akbd_pollsh(void); /* * BOOL akbd_pollctl(void) * * Use * Returns whether the Control key is pressed */ BOOL akbd_pollctl(void); /* * BOOL akbd_pollkey(int *code) * * Use * Reports whether the user has typed ahead, and if so what the keypress * was. Note that the keypresses returned are WIMP-type, not STEEL extended * ones so you will have to use akbd_translate if you need the extended * type. * * This call could be used to allow buffering of keypresses: on a * Key_Pressed event you would call this routine until it returns FALSE * and store the codes it returns in a buffer along with the code from the * event. */ BOOL akbd_pollkey(int *code); #endif