217 lines
7.1 KiB
C
217 lines
7.1 KiB
C
|
/************************************************************/
|
|||
|
/* Windows Write, Copyright 1985-1992 Microsoft Corporation */
|
|||
|
/************************************************************/
|
|||
|
|
|||
|
/* This file defines the characters used by Windows Word. */
|
|||
|
/* You must include windows.h to get virtual key definitions */
|
|||
|
|
|||
|
#define chNil (-1)
|
|||
|
|
|||
|
/* Characters in files */
|
|||
|
|
|||
|
#define chDelPrev 0x08
|
|||
|
#define chTab 0x09
|
|||
|
#define chEol 0x0A
|
|||
|
#define chNewLine 0x0B
|
|||
|
#define chSect 0x0C
|
|||
|
#define chReturn 0x0D
|
|||
|
#define chNRHFile 0x1F /* Non-required hyphen */
|
|||
|
|
|||
|
#ifndef NOKCCODES
|
|||
|
/* Keyboard Characters */
|
|||
|
/* A high bit of 1 means that this is a command character */
|
|||
|
/* For Windows, a command character it one that is processed through */
|
|||
|
/* the virtual key mechanism (WM_KEYBOARD) instead of translated (WM_CHAR) */
|
|||
|
|
|||
|
#define wKcCommandMask 0x8000 /* mask that tells if command */
|
|||
|
#define FIsCommandKc(kc) ((int)(kc) < 0) /* or, test it this way */
|
|||
|
|
|||
|
#define kcDelPrev (wKcCommandMask | VK_BACK)
|
|||
|
#define kcDelNext (wKcCommandMask | VK_DELETE)
|
|||
|
#define kcInsert (wKcCommandMask | VK_INSERT)
|
|||
|
#define kcTab (wKcCommandMask | VK_TAB )
|
|||
|
#define kcReturn (wKcCommandMask | VK_RETURN)
|
|||
|
#define kcLeft (wKcCommandMask | VK_LEFT)
|
|||
|
#define kcUp (wKcCommandMask | VK_UP)
|
|||
|
#define kcRight (wKcCommandMask | VK_RIGHT)
|
|||
|
#define kcDown (wKcCommandMask | VK_DOWN)
|
|||
|
#define kcPageUp (wKcCommandMask | VK_PRIOR)
|
|||
|
#define kcPageDown (wKcCommandMask | VK_NEXT)
|
|||
|
#define kcBeginLine (wKcCommandMask | VK_HOME)
|
|||
|
#define kcEndLine (wKcCommandMask | VK_END)
|
|||
|
#define kcGoto (wKcCommandMask | VK_CLEAR)
|
|||
|
|
|||
|
/* Special for windows: we must handle these key codes & update shift state */
|
|||
|
|
|||
|
#define kcShift (wKcCommandMask | VK_SHIFT)
|
|||
|
#define kcControl (wKcCommandMask | VK_CONTROL)
|
|||
|
#define kcAlt (wKcCommandMask | VK_MENU)
|
|||
|
#define kcCapsLock (wKcCommandMask | VK_CAPITAL)
|
|||
|
|
|||
|
/* Phony Keyboard Characters, used to force actions */
|
|||
|
|
|||
|
#define kcNextPara 0xFFFE /* Generated from GOTO-DOWN */
|
|||
|
#define kcPrevPara 0xFFFD /* Generated from GOTO-UP */
|
|||
|
/* #define kcAlphaVirtual 0xFFFC Defined below, outside ifdef */
|
|||
|
|
|||
|
/* Keys that affect the look of the current selection (char or para) */
|
|||
|
|
|||
|
#define kcLookMin 0x8001 /* As of now, no look keys */
|
|||
|
#define kcLookMax 0x8000
|
|||
|
|
|||
|
/* These control keys are processed as WM_CHAR ASCII codes */
|
|||
|
|
|||
|
#define kcLFld (wKcCommandMask | ('[' & 0x1F)) /* Print-Merge <<>> */
|
|||
|
#define kcRFld (wKcCommandMask | (']' & 0x1F)) /* CTRL-[ and CTRL-] */
|
|||
|
|
|||
|
/* Keyboard Kontrol (CTRL) codes -- a key message word is interpreted
|
|||
|
as a kk instead of a kc, if the CTRL key is down */
|
|||
|
|
|||
|
#define kkUpScrollLock (kcUp)
|
|||
|
#define kkDownScrollLock (kcDown)
|
|||
|
#define kkTopDoc (wKcCommandMask | VK_HOME)
|
|||
|
#define kkEndDoc (wKcCommandMask | VK_END)
|
|||
|
#define kkTopScreen (wKcCommandMask | VK_PRIOR)
|
|||
|
#define kkEndScreen (wKcCommandMask | VK_NEXT)
|
|||
|
#define kkWordLeft (wKcCommandMask | VK_LEFT)
|
|||
|
#define kkWordRight (wKcCommandMask | VK_RIGHT)
|
|||
|
#define kkCopy (wKcCommandMask | VK_INSERT)
|
|||
|
#define kkDelPrev (wKcCommandMask | VK_BACK)
|
|||
|
|
|||
|
#if WINVER < 0x300
|
|||
|
#define kkNonReqHyphen (wKcCommandMask | VK_MINUS)
|
|||
|
#else
|
|||
|
/* I don't know how the above EVER worked so I'm changing
|
|||
|
it to use the return value from VkKeyScan(). See routines
|
|||
|
KcAlphaKeyMessage() and FNonAlphaKeyMessage() ..pault */
|
|||
|
|
|||
|
#define kkNonReqHyphen (wKcCommandMask | vkMinus)
|
|||
|
#endif
|
|||
|
|
|||
|
#ifdef CASHMERE /* These keys not supported by MEMO */
|
|||
|
#define kkNonBrkSpace (wKcCommandMask | (unsigned) ' ')
|
|||
|
#define kkNLEnter (wKcCommandMask | VK_RETURN) /* EOL w/o end Para */
|
|||
|
#endif
|
|||
|
|
|||
|
/* CTRL-shifted keys */
|
|||
|
|
|||
|
#define kksPageBreak (wKcCommandMask | VK_RETURN)
|
|||
|
|
|||
|
#ifdef DEBUG
|
|||
|
#define kksEatWinMemory (wKcCommandMask | 'H') /* Hog Windows Heap */
|
|||
|
#define kksFreeWinMemory (wKcCommandMask | 'R') /* Release Windows heap */
|
|||
|
#define kksEatMemory (wKcCommandMask | 'E') /* Eat WRITE Heap Space */
|
|||
|
#define kksFreeMemory (wKcCommandMask | 'F') /* Free WRITE Heap Space */
|
|||
|
#define kksTest (wKcCommandMask | VK_ESCAPE)
|
|||
|
#endif
|
|||
|
|
|||
|
/* Transformation from kk && kks codes to a unique kc code */
|
|||
|
|
|||
|
#define KcFromKk(kk) ( (kk) + 0x100 )
|
|||
|
#define KcFromKks(kks) ( (kks) + 0x200 )
|
|||
|
|
|||
|
/* new style ctrl-key accelerators (7.22.91) v-dougk */
|
|||
|
#define kkNewCopy (wKcCommandMask | 'C')
|
|||
|
#define kkNewUndo (wKcCommandMask | 'Z')
|
|||
|
#define kkNewPaste (wKcCommandMask | 'V')
|
|||
|
#define kkNewCut (wKcCommandMask | 'X')
|
|||
|
|
|||
|
/* Kc codes for CTRL-keys that are processed at the virtual key level */
|
|||
|
|
|||
|
#define kcNewCopy KcFromKk( kkNewCopy )
|
|||
|
#define kcNewUndo KcFromKk( kkNewUndo )
|
|||
|
#define kcNewPaste KcFromKk( kkNewPaste )
|
|||
|
#define kcNewCut KcFromKk( kkNewCut )
|
|||
|
#define kcTopDoc KcFromKk( kkTopDoc )
|
|||
|
#define kcEndDoc KcFromKk( kkEndDoc )
|
|||
|
#define kcTopScreen KcFromKk( kkTopScreen )
|
|||
|
#define kcEndScreen KcFromKk( kkEndScreen )
|
|||
|
#define kcWordLeft KcFromKk( kkWordLeft )
|
|||
|
#define kcWordRight KcFromKk( kkWordRight )
|
|||
|
#define kcCut KcFromKk( kkCut )
|
|||
|
#define kcPaste KcFromKk( kkPaste )
|
|||
|
#define kcCopy KcFromKk( kkCopy )
|
|||
|
#define kcClear KcFromKk( kkClear )
|
|||
|
#define kcUndo KcFromKk( kkUndo )
|
|||
|
#define kcUpScrollLock KcFromKk( kkUpScrollLock )
|
|||
|
#define kcDownScrollLock KcFromKk( kkDownScrollLock )
|
|||
|
|
|||
|
#ifdef DEBUG /* kc codes for Debugging control keys */
|
|||
|
#define kcEatWinMemory KcFromKks(kksEatWinMemory)
|
|||
|
#define kcFreeWinMemory KcFromKks(kksFreeWinMemory)
|
|||
|
#define kcEatMemory KcFromKks(kksEatMemory)
|
|||
|
#define kcFreeMemory KcFromKks(kksFreeMemory)
|
|||
|
#define kcTest (KcFromKks(kksTest))
|
|||
|
#endif /* DEBUG */
|
|||
|
|
|||
|
/* A special case: kcPageBreak is a CTRL-SHIFT key that is processed in
|
|||
|
AlphaMode */
|
|||
|
#define kcPageBreak KcFromKks( kksPageBreak )
|
|||
|
|
|||
|
#define kcNonReqHyphen KcFromKk( kkNonReqHyphen )
|
|||
|
|
|||
|
#ifdef CASHMERE /* These keys not supported by MEMO */
|
|||
|
#define kcNonBrkSpace KcFromKk( kkNonBrkSpace )
|
|||
|
#define kcNLEnter KcFromKk( kkNLEnter )
|
|||
|
#endif
|
|||
|
|
|||
|
#endif /* #ifndef NOKCCODES */
|
|||
|
|
|||
|
/* Outside #ifdef because these are return codes from Kc funcs */
|
|||
|
/* Also defined in mmw.c because of compiler stack overflow problems */
|
|||
|
#define kcNil 0xFFFF
|
|||
|
#define kcAlphaVirtual 0xFFFC /* Means "Virtual Key, must translate it" */
|
|||
|
|
|||
|
/* Display & text-processing characters. These are real characters in the ANSI
|
|||
|
character set as opposed to characters that appear in the file. */
|
|||
|
|
|||
|
#define chSpace ' '
|
|||
|
#define chHyphen '-'
|
|||
|
|
|||
|
#ifndef DBCS
|
|||
|
/* we defined them in kanji.h */
|
|||
|
#define chStatPage (CHAR)'\273'
|
|||
|
#define chStatRH '>'
|
|||
|
#define chEMark (CHAR)'\244'
|
|||
|
#endif
|
|||
|
|
|||
|
#define chSplat '.'
|
|||
|
#define chSectSplat ':'
|
|||
|
#define chDot '.'
|
|||
|
#define chDecimal '.'
|
|||
|
#define chBang '!'
|
|||
|
#define chQMark '?'
|
|||
|
#define chQuote '"'
|
|||
|
#define chFldSep ','
|
|||
|
#define chLParen '('
|
|||
|
#define chRParen ')'
|
|||
|
#define chStar '*'
|
|||
|
#define chLFldFile (CHAR)'\253'
|
|||
|
#define chRFldFile (CHAR)'\273'
|
|||
|
#define chNBH (CHAR)'\255' /* Non-breaking hyphen */
|
|||
|
#define chNBSFile (CHAR)'\240' /* Non-breaking space */
|
|||
|
|
|||
|
|
|||
|
/* The following are "special" characters that are essentially macros for longer
|
|||
|
strings. */
|
|||
|
|
|||
|
#define schPage (CHAR)'\001'
|
|||
|
#define schFootnote (CHAR)'\005'
|
|||
|
#define schInclude (CHAR)'\006'
|
|||
|
|
|||
|
/* Characters in Search patterns */
|
|||
|
#define chPrefixMatch '^'
|
|||
|
#define chMatchAny '?'
|
|||
|
#define chMatchWhite 'w'
|
|||
|
#define chMatchTab 't'
|
|||
|
#define chMatchEol 'p'
|
|||
|
#define chMatchNewLine 'n'
|
|||
|
#define chMatchSect 'd'
|
|||
|
#define chMatchNBSFile 's'
|
|||
|
#define chMatchNRHFile '-'
|
|||
|
|
|||
|
/* ANSI block character, see FWriteExtTextScrap! ..pault */
|
|||
|
|
|||
|
#define chBlock 0x7f
|
|||
|
|