// ------------------------------------------------------------------ // GoldED+ // Copyright (C) 1990-1999 Odinn Sorensen // Copyright (C) 1999-2000 Alexander S. Aganichev // ------------------------------------------------------------------ // This program 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 of the // License, or (at your option) any later version. // // This program 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 this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, // MA 02111-1307 USA // ------------------------------------------------------------------ // $Id$ // ------------------------------------------------------------------ // Keyboard system. // ------------------------------------------------------------------ // ------------------------------------------------------------------ // // The keyboard system in GoldED // // Keycodes in the range 0x0000-0xFDFF are normal keys. // Keycodes in the range 0xFE00-0xFE7F are macro numbers. // Keycodes in the range 0xFE80-0xFFFE are command numbers. // // The global variable cmdkeys holds a list of all commands and // the keys or macro numbers, sorted by key/macro. // // The global variable macros holds all the macros, sorted by key. // The global variable totmacros contains the total number of macros. // // The macro list is searched first, then the command list, thus // allowing macros that override commands. // // ------------------------------------------------------------------ const gkey KK_Auto = 0xFD00; const gkey KK_Macro = 0xFE00; const gkey KK_AreaMacro = 0xFE01; const gkey KK_EditMacro = 0xFE02; const gkey KK_FileMacro = 0xFE03; const gkey KK_ListMacro = 0xFE04; const gkey KK_NodeMacro = 0xFE05; const gkey KK_ReadMacro = 0xFE06; const gkey KK_Commands = 0xFE80; const gkey KK_ExternUtil01 = 0xFE81; const gkey KK_ExternUtil02 = 0xFE82; const gkey KK_ExternUtil03 = 0xFE83; const gkey KK_ExternUtil04 = 0xFE84; const gkey KK_ExternUtil05 = 0xFE85; const gkey KK_ExternUtil06 = 0xFE86; const gkey KK_ExternUtil07 = 0xFE87; const gkey KK_ExternUtil08 = 0xFE88; const gkey KK_ExternUtil09 = 0xFE89; const gkey KK_ExternUtil10 = 0xFE8A; const gkey KK_ExternUtil11 = 0xFE8B; const gkey KK_ExternUtil12 = 0xFE8C; const gkey KK_ExternUtil13 = 0xFE8D; const gkey KK_ExternUtil14 = 0xFE8E; const gkey KK_ExternUtil15 = 0xFE8F; const gkey KK_ExternUtil16 = 0xFE90; const gkey KK_ExternUtil17 = 0xFE91; const gkey KK_ExternUtil18 = 0xFE92; const gkey KK_ExternUtil19 = 0xFE93; const gkey KK_ExternUtil20 = 0xFE94; const gkey KK_ExternUtil21 = 0xFE95; const gkey KK_ExternUtil22 = 0xFE96; const gkey KK_ExternUtil23 = 0xFE97; const gkey KK_ExternUtil24 = 0xFE98; const gkey KK_ExternUtil25 = 0xFE99; const gkey KK_AreaAbort = 0xFEA0; const gkey KK_AreaAskExit = 0xFEA1; const gkey KK_AreaBoardnos = 0xFEA2; const gkey KK_AreaCatchUp = 0xFEA3; const gkey KK_AreaDosShell = 0xFEA4; const gkey KK_AreaDropMsgMarks = 0xFEA5; const gkey KK_AreaGotoFirst = 0xFEA6; const gkey KK_AreaGotoLast = 0xFEA7; const gkey KK_AreaGotoNext = 0xFEA8; const gkey KK_AreaGotoPrev = 0xFEA9; const gkey KK_AreaHeat = 0xFEAA; const gkey KK_AreaInfo = 0xFEAB; const gkey KK_AreaJump = 0xFEAC; const gkey KK_AreaJumpNextMatch = 0xFEAD; const gkey KK_AreaMainMenu = 0xFEAE; const gkey KK_AreaMenu = 0xFEAF; const gkey KK_AreaQuitNow = 0xFEB0; const gkey KK_AreaScan = 0xFEB1; const gkey KK_AreaScanPM = 0xFEB2; const gkey KK_AreaSelect = 0xFEB3; const gkey KK_AreaSelectMarks = 0xFEB4; const gkey KK_AreaSoundkill = 0xFEB5; const gkey KK_AreaToggle = 0xFEB6; const gkey KK_AreaTouchNetscan = 0xFEB7; const gkey KK_AreaWriteGoldlast = 0xFEB8; const gkey KK_AreaZap = 0xFEB9; const gkey KK_AreaShowDel = 0xFEBA; const gkey KK_EditAbort = 0xFEC0; const gkey KK_EditAnchor = 0xFEC1; const gkey KK_EditAskExit = 0xFEC2; const gkey KK_EditClearDeleteBuf = 0xFEC3; const gkey KK_EditClearPasteBuf = 0xFEC4; const gkey KK_EditCopy = 0xFEC5; const gkey KK_EditCopyAbove = 0xFEC6; const gkey KK_EditCopyAboveChar = 0xFEC7; const gkey KK_EditCut = 0xFEC8; const gkey KK_EditDelChar = 0xFEC9; const gkey KK_EditDeleteEOL = 0xFECA; const gkey KK_EditDelLeft = 0xFECB; const gkey KK_EditDelLine = 0xFECC; const gkey KK_EditDelLtWord = 0xFECD; const gkey KK_EditDelRtWord = 0xFECE; const gkey KK_EditDosShell = 0xFECF; const gkey KK_EditDupLine = 0xFED0; const gkey KK_EditExitMsg = 0xFED1; const gkey KK_EditExportText = 0xFED2; const gkey KK_EditGoBegLine = 0xFED3; const gkey KK_EditGoBotLine = 0xFED4; const gkey KK_EditGoBotMsg = 0xFED5; const gkey KK_EditGoDown = 0xFED6; const gkey KK_EditGoEOL = 0xFED7; const gkey KK_EditGoLeft = 0xFED8; const gkey KK_EditGoPgDn = 0xFED9; const gkey KK_EditGoPgUp = 0xFEDA; const gkey KK_EditGoRight = 0xFEDB; const gkey KK_EditGoTopLine = 0xFEDC; const gkey KK_EditGoTopMsg = 0xFEDD; const gkey KK_EditGoUp = 0xFEDE; const gkey KK_EditGoWordLeft = 0xFEDF; const gkey KK_EditGoWordRight = 0xFEE0; const gkey KK_EditHeader = 0xFEE1; const gkey KK_EditImportQuotebuf = 0xFEE2; const gkey KK_EditImportText = 0xFEE3; const gkey KK_EditKillQuotes = 0xFEE4; const gkey KK_EditLoadFile = 0xFEE5; const gkey KK_EditLookupCursor = 0xFEE6; const gkey KK_EditLookupDest = 0xFEE7; const gkey KK_EditLookupOrig = 0xFEE8; const gkey KK_EditMainMenu = 0xFEE9; const gkey KK_EditMenu = 0xFEEA; const gkey KK_EditNewline = 0xFEEB; const gkey KK_EditPaste = 0xFEEC; const gkey KK_EditQuitNow = 0xFEED; const gkey KK_EditReflow = 0xFEEE; const gkey KK_EditSaveFile = 0xFEEF; const gkey KK_EditSaveMsg = 0xFEF0; const gkey KK_EditSoundkill = 0xFEF1; const gkey KK_EditSpellCheck = 0xFEF2; const gkey KK_EditTab = 0xFEF3; const gkey KK_EditTabReverse = 0xFEF4; const gkey KK_EditToggleCase = 0xFEF5; const gkey KK_EditToggleInsert = 0xFEF6; const gkey KK_EditToLower = 0xFEF7; const gkey KK_EditToUpper = 0xFEF8; const gkey KK_EditUnDelete = 0xFEF9; const gkey KK_EditZapQuoteBelow = 0xFEFA; const gkey KK_EditBlockRight = 0xFEFB; const gkey KK_EditBlockLeft = 0xFEFC; const gkey KK_EditBlockUp = 0xFEFD; const gkey KK_EditBlockDown = 0xFEFE; const gkey KK_EditBlockHome = 0xFEFF; const gkey KK_EditBlockEnd = 0xFF00; const gkey KK_EditBlockPgDn = 0xFF01; const gkey KK_EditBlockPgUp = 0xFF02; const gkey KK_EditDelete = 0xFF03; const gkey KK_EditUndo = 0xFF04; const gkey KK_EditDeleteSOL = 0xFF05; const gkey KK_FileAbort = 0xFF10; const gkey KK_FileAskExit = 0xFF11; const gkey KK_FileDosShell = 0xFF12; const gkey KK_FileGotoFirst = 0xFF13; const gkey KK_FileGotoLast = 0xFF14; const gkey KK_FileGotoNext = 0xFF15; const gkey KK_FileGotoPrev = 0xFF16; const gkey KK_FileMark = 0xFF17; const gkey KK_FileMarkAll = 0xFF18; const gkey KK_FileMenu = 0xFF19; const gkey KK_FileQuitNow = 0xFF1A; const gkey KK_FileSelect = 0xFF1B; const gkey KK_FileToggleMark = 0xFF1C; const gkey KK_FileToggleMarkAll = 0xFF1D; const gkey KK_FileUnMark = 0xFF1E; const gkey KK_FileUnMarkAll = 0xFF1F; const gkey KK_ListAbort = 0xFF20; const gkey KK_ListAskExit = 0xFF21; const gkey KK_ListDosShell = 0xFF22; const gkey KK_ListGotoBookMark = 0xFF23; const gkey KK_ListGotoFirst = 0xFF24; const gkey KK_ListGotoLast = 0xFF25; const gkey KK_ListGotoNext = 0xFF26; const gkey KK_ListGotoPrev = 0xFF27; const gkey KK_ListMainMenu = 0xFF28; const gkey KK_ListMarkingOptions = 0xFF29; const gkey KK_ListMenu = 0xFF2A; const gkey KK_ListQuitNow = 0xFF2B; const gkey KK_ListSelect = 0xFF2C; const gkey KK_ListToggleBookMark = 0xFF2D; const gkey KK_ListToggleDate = 0xFF2E; const gkey KK_ListToggleMark = 0xFF2F; const gkey KK_ListToggleWideSubj = 0xFF30; const gkey KK_NodeAbort = 0xFF40; const gkey KK_NodeAskExit = 0xFF41; const gkey KK_NodeDosShell = 0xFF42; const gkey KK_NodeGotoFirst = 0xFF43; const gkey KK_NodeGotoLast = 0xFF44; const gkey KK_NodeGotoNext = 0xFF45; const gkey KK_NodeGotoPrev = 0xFF46; const gkey KK_NodeMainMenu = 0xFF47; const gkey KK_NodeMenu = 0xFF48; const gkey KK_NodeQuitNow = 0xFF49; const gkey KK_NodeSelect = 0xFF4A; const gkey KK_ReadAddressbookAdd = 0xFF50; const gkey KK_ReadAskExit = 0xFF51; const gkey KK_ReadChangeAka = 0xFF52; const gkey KK_ReadChangeAttrs = 0xFF53; const gkey KK_ReadChangeCharsIn = 0xFF54; const gkey KK_ReadChangeCharsOut = 0xFF55; const gkey KK_ReadChangeMsg = 0xFF56; const gkey KK_ReadChangeOrigin = 0xFF57; const gkey KK_ReadChangeTagline = 0xFF58; const gkey KK_ReadChangeTemplate = 0xFF59; const gkey KK_ReadChangeUsername = 0xFF5A; const gkey KK_ReadChangeXlatImport = 0xFF5B; const gkey KK_ReadCommentMsg = 0xFF5C; const gkey KK_ReadCopyMoveForward = 0xFF5D; const gkey KK_ReadDecreaseMargin = 0xFF5E; const gkey KK_ReadDeleteMsg = 0xFF5F; const gkey KK_ReadDosShell = 0xFF60; const gkey KK_ReadExternUtilMenu = 0xFF61; const gkey KK_ReadFidoRenumber = 0xFF62; const gkey KK_ReadFileRequest = 0xFF63; const gkey KK_ReadFindAll = 0xFF64; const gkey KK_ReadFindHeader = 0xFF65; const gkey KK_ReadGotoBookMark = 0xFF66; const gkey KK_ReadGotoFirstMsg = 0xFF67; const gkey KK_ReadGotoLastMsg = 0xFF68; const gkey KK_ReadGotoMsgno = 0xFF69; const gkey KK_ReadGotoNextArea = 0xFF6A; const gkey KK_ReadGotoNextMsg = 0xFF6B; const gkey KK_ReadGotoNextUnread = 0xFF6C; const gkey KK_ReadGotoPrevArea = 0xFF6D; const gkey KK_ReadGotoPrevMsg = 0xFF6E; const gkey KK_ReadGotoPrevUnread = 0xFF6F; const gkey KK_ReadGotoReplies = 0xFF70; const gkey KK_ReadGotoReply1st = 0xFF71; const gkey KK_ReadGotoReplyNext = 0xFF72; const gkey KK_ReadGotoReplyPrev = 0xFF73; const gkey KK_ReadIncreaseMargin = 0xFF74; const gkey KK_ReadLookupDest = 0xFF75; const gkey KK_ReadLookupOrig = 0xFF76; const gkey KK_ReadMainMenu = 0xFF77; const gkey KK_ReadMakeUserlist = 0xFF78; const gkey KK_ReadMarkingOptions = 0xFF79; const gkey KK_ReadMenu = 0xFF7A; const gkey KK_ReadMessageList = 0xFF7B; const gkey KK_ReadMakePathreport = 0xFF7C; const gkey KK_ReadMoveCommentMsg = 0xFF7D; const gkey KK_ReadMoveQuoteMsg = 0xFF7E; const gkey KK_ReadMsgContinue = 0xFF7F; const gkey KK_ReadMsgEnd = 0xFF80; const gkey KK_ReadMsgHome = 0xFF81; const gkey KK_ReadMsgLineDown = 0xFF82; const gkey KK_ReadMsgLineUp = 0xFF83; const gkey KK_ReadMsgPgDn = 0xFF84; const gkey KK_ReadMsgPgUp = 0xFF85; const gkey KK_ReadNewArea = 0xFF86; const gkey KK_ReadNewMsg = 0xFF87; const gkey KK_ReadQuitNow = 0xFF88; const gkey KK_ReadQuoteBuf = 0xFF89; const gkey KK_ReadQuoteMsg = 0xFF8A; const gkey KK_ReadReplyMsg = 0xFF8B; const gkey KK_ReadSearch = 0xFF8C; const gkey KK_ReadSoundkill = 0xFF8D; const gkey KK_ReadStealTagline = 0xFF8E; const gkey KK_ReadThreadtree = 0xFF8F; const gkey KK_ReadToggleBookMark = 0xFF90; const gkey KK_ReadToggleHexdump = 0xFF91; const gkey KK_ReadToggleHidden = 0xFF92; const gkey KK_ReadToggleHiddKlud = 0xFF93; const gkey KK_ReadToggleKludge = 0xFF94; const gkey KK_ReadToggleMark = 0xFF95; const gkey KK_ReadToggleMarkRead = 0xFF96; const gkey KK_ReadTogglePageBar = 0xFF97; const gkey KK_ReadToggleQuote = 0xFF98; const gkey KK_ReadToggleRealMsgno = 0xFF99; const gkey KK_ReadToggleROT13 = 0xFF9A; const gkey KK_ReadToggleStyles = 0xFF9B; const gkey KK_ReadToggleTwits = 0xFF9C; const gkey KK_ReadTouchNetscan = 0xFF9D; const gkey KK_ReadTouchSemaphore = 0xFF9E; const gkey KK_ReadAddressbook = 0xFF9F; const gkey KK_ReadUUDecode = 0xFFA0; const gkey KK_ReadWriteMsg = 0xFFA1; const gkey KK_ReadDirQuoteMsg = 0xFFA2; const gkey KK_ReadMoveDirQuoteMsg = 0xFFA3; const gkey KK_ReadPeekURLs = 0xFFA4; const gkey KK_AddressbookQuit = 0xFFB0; const gkey KK_AddressbookAdd = 0xFFB1; const gkey KK_AddressbookSelect = 0xFFB2; const gkey KK_AddressbookDelete = 0xFFB3; const gkey KK_AddressbookPack = 0xFFB4; const gkey KK_HeaderAddressbook = 0xFFC0; const gkey KK_HeaderLookup = 0xFFC1; const gkey KK_HeaderToggleAttrWin = 0xFFC2; const gkey KK_HeaderClearAttrib = 0xFFC3; const gkey KK_HeaderToggleReserved = 0xFFC4; const gkey KK_HeaderToggleGroupmsg = 0xFFC5; const gkey KK_HeaderToggleScanned = 0xFFC6; const gkey KK_HeaderToggleFile = 0xFFC7; const gkey KK_HeaderToggleArcsent = 0xFFC8; const gkey KK_HeaderToggleCrash = 0xFFC9; const gkey KK_HeaderToggleDirect = 0xFFCA; const gkey KK_HeaderToggleDelsent = 0xFFCB; const gkey KK_HeaderToggleFreq = 0xFFCC; const gkey KK_HeaderToggleZonegate = 0xFFCD; const gkey KK_HeaderToggleHold = 0xFFCE; const gkey KK_HeaderToggleImm = 0xFFCF; const gkey KK_HeaderToggleTransit = 0xFFD0; const gkey KK_HeaderToggleKill = 0xFFD1; const gkey KK_HeaderToggleLocked = 0xFFD2; const gkey KK_HeaderToggleRetrecreq= 0xFFD3; const gkey KK_HeaderToggleRetrec = 0xFFD4; const gkey KK_HeaderToggleOrphan = 0xFFD5; const gkey KK_HeaderTogglePvt = 0xFFD6; const gkey KK_HeaderToggleAudit = 0xFFD7; const gkey KK_HeaderToggleReceived = 0xFFD8; const gkey KK_HeaderToggleSent = 0xFFD9; const gkey KK_HeaderToggleTrunc = 0xFFDA; const gkey KK_HeaderToggleUpdreq = 0xFFDB; const gkey KK_HeaderToggleHubhost = 0xFFDC; const gkey KK_HeaderToggleLocal = 0xFFDD; const gkey KK_HeaderToggleXmail = 0xFFDE; const gkey KK_HeaderToggleCfmrecreq= 0xFFDF; const gkey KK_AreaUndefine = 0xFFE0; const gkey KK_EditUndefine = 0xFFE1; const gkey KK_FileUndefine = 0xFFE2; const gkey KK_ListUndefine = 0xFFE3; const gkey KK_NodeUndefine = 0xFFE4; const gkey KK_ReadUndefine = 0xFFE5; const gkey KK_ZzzzLast = 0xFFE6; // ------------------------------------------------------------------ // Key groups (type of key) const int KT_A = 1; // Arealist const int KT_E = 2; // Editor const int KT_G = 4; // General (not used) const int KT_M = 8; // Msg lister const int KT_N = 16; // Node browser const int KT_R = 32; // Reader (+ external utils) const int KT_F = 64; // File browser const int KT_B = 128; // Addressbook browser const int KT_H = 256; // Header editor // ------------------------------------------------------------------ // Key command struct CmdKey { gkey key; // Associated key or macro number gkey cmd; // Command number int type; // Type of key }; // ------------------------------------------------------------------ // Macro struct Macro { int type; // Type of key gkey key; // Associated key gkey buf[128]; // Actual keys/commands }; // ------------------------------------------------------------------ struct tglobalkey { word crc_token; gkey keyval; word keytype; }; // ------------------------------------------------------------------