dbgwset.c
来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 683 行 · 第 1/2 页
C
683 行
/****************************************************************************
*
* Open Watcom Project
*
* Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
*
* ========================================================================
*
* This file contains Original Code and/or Modifications of Original
* Code as defined in and that are subject to the Sybase Open Watcom
* Public License version 1.0 (the 'License'). You may not use this file
* except in compliance with the License. BY USING THIS FILE YOU AGREE TO
* ALL TERMS AND CONDITIONS OF THE LICENSE. A copy of the License is
* provided with the Original Code and Modifications, and is also
* available at www.sybase.com/developer/opensource.
*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND SYBASE AND ALL CONTRIBUTORS HEREBY DISCLAIM
* ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR
* NON-INFRINGEMENT. Please see the License for the specific language
* governing rights and limitations under the License.
*
* ========================================================================
*
* Description: Debugger interface configuration.
*
****************************************************************************/
#include <string.h>
#include <ctype.h>
#include "dbgdefn.h"
#include "dbgtoken.h"
#include "dbgerr.h"
#include "dbgtoggl.h"
#include "dbgwind.h"
#include "dbglit.h"
#include "dbgmem.h"
#include "wndregx.h"
#include "dbgio.h"
#include "mad.h"
#include "madcli.h"
extern unsigned int ScanCmd( char * );
extern void Scan( void );
extern char *ScanPos( void );
extern char *ReScan( char * );
extern bool ScanEOC( void );
extern bool ScanItem( bool, char **, unsigned int * );
extern void ReqEOC( void );
extern unsigned SetCurrRadix( unsigned int );
extern char *GetCmdEntry( char *, int, char * );
extern char *CnvULongDec( unsigned long, char * );
extern unsigned ReqExpr( void );
extern unsigned OptExpr( void );
extern void WndUserAdd( char *, unsigned int );
extern void CallSet( void );
extern void ImplicitSet( void );
extern void LookSet( void );
extern void RadixSet( void );
extern void SourceSet( void );
extern void LevelSet( void );
extern void CallConf( void );
extern void ImplicitConf( void );
extern void LookConf( void );
extern void RadixConf( void );
extern void SourceConf( void );
extern void LevelConf( void );
extern void DoConfig( char *, char *, void (**)(), void (**)() );
extern void ConfigLine( char * );
extern void WndMenuOn( void );
extern void WndMenuOff( void );
extern void LangInit( void );
extern void LangFini( void );
extern bool LangLoad( char *, int );
extern char *StrCopy( char *, char * );
extern void WndRedraw( wnd_class );
extern a_window *WndFindActive( void );
extern cmd_list *AllocCmdList( char *, unsigned int );
extern void FreeCmdList( cmd_list * );
extern char *Format( char *, char *, ... );
extern void Recog( unsigned int );
extern void WndRestoreToFront( a_window* );
extern a_window *WndFindClass( a_window*, wnd_class );
extern wnd_class ReqWndName( void );
extern gui_menu_struct *AddMenuAccel( char *, char *, wnd_class, bool * );
extern void VarChangeOptions( void );
extern void AsmChangeOptions( void );
extern void FuncChangeOptions( void );
extern void GlobChangeOptions( void );
extern void ModChangeOptions( void );
extern void ConfigCmdList( char *cmds, int indent );
extern void WndDlgTxt( char * );
extern void WndMenuSetHotKey( gui_menu_struct *, bool, char *);
extern char *UniqStrAddr( address *addr, char *p ,unsigned );
extern char *GetCmdName( int );
extern void RegFindData( mad_type_kind kind, mad_reg_set_data **pdata );
extern mad_handle FindMAD( char *, unsigned );
extern void DbgUpdate( update_list );
extern char OnOffNameTab[];
extern char *TxtBuff;
extern char *Language;
extern char WndNameTab[];
extern tokens CurrToken;
extern margins SrcMar;
extern margins AsmMar;
extern wnd_macro *WndMacroList;
extern system_config SysConfig;
static unsigned TabInterval = 8;
extern void DClickSet( void )
{
unsigned new;
unsigned old;
old = SetCurrRadix( 10 );
new = ReqExpr();
ReqEOC();
if( new < MIN_DCLICK || new > MAX_DCLICK ) Error( ERR_NONE, LIT( ERR_BAD_DCLICK ) );
WndSetDClick( new );
SetCurrRadix( old );
}
extern void DClickConf( void )
{
CnvULongDec( WndGetDClick(), TxtBuff );
ConfigLine( TxtBuff );
}
extern void InputSet( void )
{
wnd_class class;
a_window *wnd;
class = ReqWndName();
ReqEOC();
wnd = WndFindClass( NULL, class );
if( wnd == NULL ) {
GetCmdEntry( WndNameTab, class+1, TxtBuff );
Error( ERR_NONE, LIT( ERR_WIND_NOT_OPEN ), TxtBuff );
}
WndRestoreToFront( wnd );
}
extern void InputConf( void )
{
a_window *wnd;
wnd = WndFindActive();
if( wnd != NULL && WndHasClass( wnd ) ) {
GetCmdEntry( WndNameTab, WndClass( wnd )+1, TxtBuff );
ConfigLine( TxtBuff );
}
}
static char *KeyNamePieces[] =
{
#define pick( x ) #x,
#include "keynames.h"
};
typedef enum {
#define pick( x ) x,
#include "keynames.h"
CTRL = 0x2000,
SHIFT = 0x4000,
ALT = 0x8000,
} key_desc;
#define STATE (CTRL+ALT+SHIFT)
typedef struct {
key_desc desc;
unsigned key;
} key_name;
static key_name KeyNames[] = {
ENTER, GUI_KEY_ENTER,
ESCAPE, GUI_KEY_ESCAPE,
BACKSPACE, GUI_KEY_BACKSPACE,
TAB, GUI_KEY_TAB,
CTRL+ENTER, GUI_KEY_CTRL_ENTER,
CTRL+BACKSPACE, GUI_KEY_CTRL_BACKSPACE,
CTRL+TAB, GUI_KEY_CTRL_TAB,
ALT+ENTER, GUI_KEY_ALT_ENTER,
ALT+BACKSPACE, GUI_KEY_ALT_BACKSPACE,
ALT+TAB, GUI_KEY_ALT_TAB,
SHIFT+TAB, GUI_KEY_SHIFT_TAB,
INSERT, GUI_KEY_INSERT,
DELETE, GUI_KEY_DELETE,
HOME, GUI_KEY_HOME,
END, GUI_KEY_END,
PAGEUP, GUI_KEY_PAGEUP,
PAGEDOWN, GUI_KEY_PAGEDOWN,
UP, GUI_KEY_UP,
DOWN, GUI_KEY_DOWN,
LEFT, GUI_KEY_LEFT,
RIGHT, GUI_KEY_RIGHT,
CTRL+INSERT, GUI_KEY_CTRL_INSERT,
CTRL+DELETE, GUI_KEY_CTRL_DELETE,
CTRL+HOME, GUI_KEY_CTRL_HOME,
CTRL+END, GUI_KEY_CTRL_END,
CTRL+PAGEUP, GUI_KEY_CTRL_PAGEUP,
CTRL+PAGEDOWN, GUI_KEY_CTRL_PAGEDOWN,
CTRL+UP, GUI_KEY_CTRL_UP,
CTRL+DOWN, GUI_KEY_CTRL_DOWN,
CTRL+LEFT, GUI_KEY_CTRL_LEFT,
CTRL+RIGHT, GUI_KEY_CTRL_RIGHT,
F1, GUI_KEY_F1,
F2, GUI_KEY_F2,
F3, GUI_KEY_F3,
F4, GUI_KEY_F4,
F5, GUI_KEY_F5,
F6, GUI_KEY_F6,
F7, GUI_KEY_F7,
F8, GUI_KEY_F8,
F9, GUI_KEY_F9,
F10, GUI_KEY_F10,
F11, GUI_KEY_F11,
F12, GUI_KEY_F12,
ALT+F1, GUI_KEY_ALT_F1,
ALT+F2, GUI_KEY_ALT_F2,
ALT+F3, GUI_KEY_ALT_F3,
ALT+F4, GUI_KEY_ALT_F4,
ALT+F5, GUI_KEY_ALT_F5,
ALT+F6, GUI_KEY_ALT_F6,
ALT+F7, GUI_KEY_ALT_F7,
ALT+F8, GUI_KEY_ALT_F8,
ALT+F9, GUI_KEY_ALT_F9,
ALT+F10, GUI_KEY_ALT_F10,
ALT+F11, GUI_KEY_ALT_F11,
ALT+F12, GUI_KEY_ALT_F12,
CTRL+F1, GUI_KEY_CTRL_F1,
CTRL+F2, GUI_KEY_CTRL_F2,
CTRL+F3, GUI_KEY_CTRL_F3,
CTRL+F4, GUI_KEY_CTRL_F4,
CTRL+F5, GUI_KEY_CTRL_F5,
CTRL+F6, GUI_KEY_CTRL_F6,
CTRL+F7, GUI_KEY_CTRL_F7,
CTRL+F8, GUI_KEY_CTRL_F8,
CTRL+F9, GUI_KEY_CTRL_F9,
CTRL+F10, GUI_KEY_CTRL_F10,
CTRL+F11, GUI_KEY_CTRL_F11,
CTRL+F12, GUI_KEY_CTRL_F12,
SHIFT+F1, GUI_KEY_SHIFT_F1,
SHIFT+F2, GUI_KEY_SHIFT_F2,
SHIFT+F3, GUI_KEY_SHIFT_F3,
SHIFT+F4, GUI_KEY_SHIFT_F4,
SHIFT+F5, GUI_KEY_SHIFT_F5,
SHIFT+F6, GUI_KEY_SHIFT_F6,
SHIFT+F7, GUI_KEY_SHIFT_F7,
SHIFT+F8, GUI_KEY_SHIFT_F8,
SHIFT+F9, GUI_KEY_SHIFT_F9,
SHIFT+F10, GUI_KEY_SHIFT_F10,
SHIFT+F11, GUI_KEY_SHIFT_F11,
SHIFT+F12, GUI_KEY_SHIFT_F12,
0, 0
};
typedef struct {
char name;
unsigned key;
} alt_key_name;
static alt_key_name AltKeyNames[] = {
'`', GUI_KEY_ALT_BACKQUOTE,
'1', GUI_KEY_ALT_1,
'2', GUI_KEY_ALT_2,
'3', GUI_KEY_ALT_3,
'4', GUI_KEY_ALT_4,
'5', GUI_KEY_ALT_5,
'6', GUI_KEY_ALT_6,
'7', GUI_KEY_ALT_7,
'8', GUI_KEY_ALT_8,
'9', GUI_KEY_ALT_9,
'0', GUI_KEY_ALT_0,
'-', GUI_KEY_ALT_MINUS,
'=', GUI_KEY_ALT_EQUAL,
'[', GUI_KEY_ALT_LEFT_BRACKET,
']', GUI_KEY_ALT_RIGHT_BRACKET,
'\\', GUI_KEY_ALT_BACKSLASH,
';', GUI_KEY_ALT_SEMICOLON,
'\'', GUI_KEY_ALT_QUOTE,
',', GUI_KEY_ALT_COMMA,
'.', GUI_KEY_ALT_PERIOD,
'/', GUI_KEY_ALT_SLASH,
0, 0
};
static alt_key_name CtrlKeyNames[] = {
'a', GUI_KEY_CTRL_A,
'b', GUI_KEY_CTRL_B,
'c', GUI_KEY_CTRL_C,
'd', GUI_KEY_CTRL_D,
'e', GUI_KEY_CTRL_E,
'f', GUI_KEY_CTRL_F,
'g', GUI_KEY_CTRL_G,
'h', GUI_KEY_CTRL_H,
'i', GUI_KEY_CTRL_I,
'j', GUI_KEY_CTRL_J,
'k', GUI_KEY_CTRL_K,
'l', GUI_KEY_CTRL_L,
'm', GUI_KEY_CTRL_M,
'n', GUI_KEY_CTRL_N,
'o', GUI_KEY_CTRL_O,
'p', GUI_KEY_CTRL_P,
'q', GUI_KEY_CTRL_Q,
'r', GUI_KEY_CTRL_R,
's', GUI_KEY_CTRL_S,
't', GUI_KEY_CTRL_T,
'u', GUI_KEY_CTRL_U,
'v', GUI_KEY_CTRL_V,
'w', GUI_KEY_CTRL_W,
'x', GUI_KEY_CTRL_X,
'y', GUI_KEY_CTRL_Y,
'z', GUI_KEY_CTRL_Z,
'2', GUI_KEY_CTRL_2,
'\\', GUI_KEY_CTRL_BACKSLASH,
'[', GUI_KEY_CTRL_LEFT_BRACKET,
']', GUI_KEY_CTRL_RIGHT_BRACKET,
'6', GUI_KEY_CTRL_6,
'-', GUI_KEY_CTRL_MINUS,
0, 0
};
#define STR_CTRL "CTRL-"
#define STR_SHIFT "SHIFT-"
#define STR_ALT "ALT-"
char LookUpCtrlKey( unsigned key )
{
alt_key_name *alt;
for( alt = CtrlKeyNames; alt->name != 0; ++alt ) {
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?