/*
 * Copyright 1988, 1989, 1990, 1991 Massachusetts Institute of Technology
 */
#include"xpointer.h"
#include<stdio.h>
enter_key(event)
     XEvent event;
{
  extern Display *dpy;
  extern XContext string_context;
  extern GC brighttext;
  extern XFontStruct *normfont;

  char *input_string;
  XKeyEvent keyevent;
  char new_string[10], input_buffer[10];
  char sample_char;
  int bytes_return, swidth, length, cwidth;

  keyevent = event.xkey;

  XFindContext( dpy, event.xkey.window, string_context, &input_string);

  bytes_return = XLookupString( &keyevent, input_buffer, 10, NULL, NULL);
  
  strncpy( new_string, input_buffer, bytes_return);
  new_string[bytes_return] = '\0';

  if ((new_string[0] < 32 && new_string[0] != 8) || new_string[0] > 127)
    return(0);

  if (new_string[0] != 8 && new_string[0] != 127) {
    swidth = TextWidth( normfont, input_string, strlen(input_string));
    simple_text( dpy, event.xkey.window, brighttext, normfont, 4+swidth, 
		normfont->ascent + 2, new_string, strlen(new_string));
    strcat(input_string, new_string);
  }

  else {     /* here be the backspace */
    length = strlen(input_string);
    if (length <1) {
      input_string[0] = 0;
      return(0);
    }
    swidth = TextWidth( normfont, input_string, strlen(input_string));
    sample_char = input_string[length-1];
    cwidth = TextWidth( normfont, &sample_char, 1);
    XClearArea( dpy, event.xkey.window, 4+swidth-cwidth, 0, 0, 0, 0);
    input_string[length-1] = 0;
  }
  return(0);
}
