This shouldn't change behavior (or even object code) at all because those assignments are all without effect. Removing that code removes noise which helps working with code analysis tools.
266 lines
7.8 KiB
C
266 lines
7.8 KiB
C
/*
|
||
* CDE - Common Desktop Environment
|
||
*
|
||
* Copyright (c) 1993-2012, The Open Group. All rights reserved.
|
||
*
|
||
* These libraries and programs are free software; you can
|
||
* redistribute them and/or modify them under the terms of the GNU
|
||
* Lesser General Public License as published by the Free Software
|
||
* Foundation; either version 2 of the License, or (at your option)
|
||
* any later version.
|
||
*
|
||
* These libraries and programs are distributed in the hope that
|
||
* they will be useful, but WITHOUT ANY WARRANTY; without even the
|
||
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||
* PURPOSE. See the GNU Lesser General Public License for more
|
||
* details.
|
||
*
|
||
* You should have received a copy of the GNU Lesser General Public
|
||
* License along with these libraries and programs; if not, write
|
||
* to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
|
||
* Floor, Boston, MA 02110-1301 USA
|
||
*/
|
||
/* *
|
||
* (c) Copyright 1993, 1994, 1996 Hewlett-Packard Company *
|
||
* (c) Copyright 1993, 1994, 1996 International Business Machines Corp. *
|
||
* (c) Copyright 1993, 1994, 1996 Sun Microsystems, Inc. *
|
||
* (c) Copyright 1993, 1994, 1996 Novell, Inc. *
|
||
* (c) Copyright 1996 Digital Equipment Corporation. *
|
||
* (c) Copyright 1996 FUJITSU LIMITED. *
|
||
* (c) Copyright 1996 Hitachi. *
|
||
*/
|
||
|
||
#include "TermHeader.h"
|
||
#include "TermPrimDebug.h"
|
||
#include "TermPrimP.h"
|
||
#include "TermPrimI.h"
|
||
#include "TermPrimData.h"
|
||
#include "TermPrimAction.h"
|
||
#include "TermPrimFunction.h"
|
||
|
||
static void
|
||
invokeAction(Widget w, char *transmitString, TermFunction function, int count)
|
||
{
|
||
DtTermPrimitiveWidget tw = (DtTermPrimitiveWidget) w;
|
||
struct termData *tpd = tw->term.tpd;
|
||
|
||
if (KEYBOARD_LOCKED(tpd->keyboardLocked)) {
|
||
/* keyboard locked -- ring the bell...
|
||
*/
|
||
(void) _DtTermPrimBell(w);
|
||
} else if (tpd->transmitFunctions && transmitString) {
|
||
/* transmit functions mode -- transmit them...
|
||
*/
|
||
(void) _DtTermPrimSendInput(w, (unsigned char *) transmitString,
|
||
strlen(transmitString));
|
||
} else {
|
||
/* perform the function...
|
||
*/
|
||
(*function)(w, count, fromAction);
|
||
|
||
#ifdef NOTDEF
|
||
/* we need to wait for the scroll to complete before turning
|
||
* on the cursor...
|
||
*/
|
||
(void) _DtTermPrimScrollComplete(w, True);
|
||
#endif /* NOTDEF */
|
||
(void) _DtTermPrimCursorOn(w);
|
||
}
|
||
return;
|
||
}
|
||
|
||
typedef struct {
|
||
const char *string;
|
||
char value;
|
||
} EnumType;
|
||
|
||
static int
|
||
stringToEnum(char *c, EnumType *enumTypes, int numEnumTypes)
|
||
{
|
||
int i;
|
||
|
||
for (i = 0; i < numEnumTypes; i++) {
|
||
if (!strcmp(enumTypes[i].string, c))
|
||
return(i);
|
||
}
|
||
|
||
return(-1);
|
||
}
|
||
|
||
|
||
/*** INSERT CHAR/LINE *********************************************************
|
||
*
|
||
* # # # #### ###### ##### #####
|
||
* # ## # # # # # #
|
||
* # # # # #### ##### # # #
|
||
* # # # # # # ##### #
|
||
* # # ## # # # # # #
|
||
* # # # #### ###### # # #
|
||
*
|
||
* #
|
||
* #### # # ## ##### # # # # # ######
|
||
* # # # # # # # # # # # ## # #
|
||
* # ###### # # # # # # # # # # #####
|
||
* # # # ###### ##### # # # # # # #
|
||
* # # # # # # # # # # # # ## #
|
||
* #### # # # # # # # ###### # # # ######
|
||
*/
|
||
|
||
void
|
||
_DtTermPrimActionInsert(Widget w, XEvent *event,
|
||
String *params, Cardinal *num_params)
|
||
{
|
||
Debug('i', fprintf(stderr,
|
||
">>_DtTermPrimActionInsert: not yet implemented\n"));
|
||
}
|
||
|
||
|
||
|
||
/*** CURSOR MOTION ************************************************************
|
||
*
|
||
* #### # # ##### #### #### #####
|
||
* # # # # # # # # # # #
|
||
* # # # # # #### # # # #
|
||
* # # # ##### # # # #####
|
||
* # # # # # # # # # # # #
|
||
* #### #### # # #### #### # #
|
||
*
|
||
*
|
||
* # # #### ##### # #### # #
|
||
* ## ## # # # # # # ## #
|
||
* # ## # # # # # # # # # #
|
||
* # # # # # # # # # # #
|
||
* # # # # # # # # # ##
|
||
* # # #### # # #### # #
|
||
*/
|
||
|
||
void
|
||
_DtTermPrimActionRedrawDisplay(Widget w, XEvent *event,
|
||
String *params, Cardinal *num_params)
|
||
{
|
||
(void) invokeAction(w, NULL, _DtTermPrimFuncRedrawDisplay, 1);
|
||
return;
|
||
}
|
||
|
||
|
||
void
|
||
_DtTermPrimActionReturn(Widget w, XEvent *event,
|
||
String *params, Cardinal *num_params)
|
||
{
|
||
Debug('i', fprintf(stderr,
|
||
">>_DtTermPrimActionReturn: not yet implemented\n"));
|
||
return;
|
||
}
|
||
|
||
void
|
||
_DtTermPrimActionTab(Widget w, XEvent *event,
|
||
String *params, Cardinal *num_params)
|
||
{
|
||
DtTermPrimitiveWidget tw = (DtTermPrimitiveWidget) w;
|
||
Boolean shiftedTab = False;
|
||
Boolean numericTab = False;
|
||
int i;
|
||
|
||
(void) _DtTermPrimSendInput(w, (unsigned char *) "\t", 1);
|
||
return;
|
||
}
|
||
|
||
|
||
/*** STRING *******************************************************************
|
||
*
|
||
* #### ##### ##### # # # ####
|
||
* # # # # # ## # # #
|
||
* #### # # # # # # # #
|
||
* # # ##### # # # # # ###
|
||
* # # # # # # # ## # #
|
||
* #### # # # # # # ####
|
||
*/
|
||
|
||
void
|
||
_DtTermPrimActionString(Widget w, XEvent *event, String *params, Cardinal *num_params)
|
||
{
|
||
unsigned char *c;
|
||
unsigned char hexVal;
|
||
|
||
/* this is based on the functionality offered by xterm...
|
||
*/
|
||
|
||
if (*num_params != 1)
|
||
return;
|
||
|
||
/* process hex values... */
|
||
if (((*params)[0] == '0') &&
|
||
(((*params)[1] == 'x') || ((*params)[1] == 'X')) &&
|
||
((*params)[2] != '\0')) {
|
||
for (hexVal = 0, c = (unsigned char *) (*params + 2); *c; c++) {
|
||
hexVal *= 16;
|
||
*c = tolower(*c);
|
||
if ((*c >= '0') && (*c <= '9')) {
|
||
hexVal += *c - '0';
|
||
} else if ((*c >= 'a') && (*c <= 'f')) {
|
||
hexVal += *c - 'a' + 10;
|
||
} else {
|
||
break;
|
||
}
|
||
}
|
||
/* if we hit the end of the string, send the hex value... */
|
||
if (*c == '\0') {
|
||
(void) _DtTermPrimSendInput(w, &hexVal, 1);
|
||
}
|
||
} else {
|
||
(void) _DtTermPrimSendInput(w, (unsigned char *) *params, strlen(*params));
|
||
}
|
||
return;
|
||
}
|
||
|
||
|
||
/*** KEYMAP *******************************************************************
|
||
*
|
||
* # # ###### # # # # ## #####
|
||
* # # # # # ## ## # # # #
|
||
* #### ##### # # ## # # # # #
|
||
* # # # # # # ###### #####
|
||
* # # # # # # # # #
|
||
* # # ###### # # # # # #
|
||
*/
|
||
|
||
void
|
||
_DtTermPrimActionKeymap(Widget w, XEvent *event, String *params, Cardinal *num_params)
|
||
{
|
||
XtTranslations keymap;
|
||
char buffer[BUFSIZ];
|
||
static XtTranslations original = (XtTranslations) 0;
|
||
static XtResource key_resources[] = {
|
||
{XtNtranslations, XtCTranslations, XtRTranslationTable,
|
||
sizeof(XtTranslations), 0, XtRTranslationTable, (caddr_t) NULL}
|
||
};
|
||
char mapName[BUFSIZ];
|
||
char mapClass[BUFSIZ];
|
||
|
||
if (*num_params != 1) {
|
||
return;
|
||
}
|
||
|
||
_DtTermProcessLock();
|
||
if (original == (XtTranslations) 0) {
|
||
original = w->core.tm.translations;
|
||
}
|
||
_DtTermProcessUnlock();
|
||
|
||
if (!strcmp(params[0], "None")) {
|
||
(void) XtOverrideTranslations(w, original);
|
||
return;
|
||
}
|
||
|
||
(void) sprintf(mapName, "%sKeymap", params[0]);
|
||
(void) strcpy(mapClass, mapName);
|
||
mapClass[0] = toupper(mapClass[0]);
|
||
(void) XtGetSubresources(w, (XtPointer) &keymap, mapName, mapClass,
|
||
key_resources, XtNumber(key_resources), NULL, (Cardinal) 0);
|
||
|
||
if (keymap != NULL) {
|
||
(void) XtOverrideTranslations(w, keymap);
|
||
}
|
||
return;
|
||
}
|