// Version 0.10 01/12/96


int hebrew_status;


// If the character typed is a Hebrew character,
// type a left cursor after it.

int hebrew_fix(int user, int view, int key)
{
// bbc_vdu(4);
// prints("    \r");
// printi(key);
// bbc_vdu(5);

 // delete key (US)
 if (key == 0x7f)
 { 
   if (nselected() == 0)
     type("{CLeft}");
   return(key);
 }


 // normal, typing characters
 if ( (key >= ' ' && key < '0') || (key > '9' && key < 0x100) )
 {
   type(chars(key));
   return(0x18c);
 }

 switch (key)
 {
 // backspace
   case 0x1a08:
     if (nselected() == 0)
       type("{CRight}");
     break;

 // carriage return
   case 0x0d:
     type("{C_CRight}");
     break;

   default:
     break;
 }
 return(key);
}


// set up EVENT_KEYPRESS events

void hebrew_setevent(int i)
{
 if (i)  
  addeventhandler(0x300, 0, "hebrew_fix");
 else
  remeventhandler(0x300, 0, "hebrew_fix");

 hebrew_status = i;
}


// Deal with 'Type Hebrew' menu entry

int hebrew_entry(int entry, int subcode)
{
 hebrew_setevent(!hebrew_status);
 return(0);
}


// Tick or un-tick 'Type Hebrew' menu entry

int hebrew_flags(int entry, string &text)
{
 return(hebrew_status);
}


// add 'Ligatures' option to 'Applets' menu and enable hebrews

void main(void)
{
 script_menu_initialise();

 addentry_menu(script_handle,"hebrew_entry","hebrew_flags","","","{TYPEHEB_00}");
 hebrew_setevent(0);
}
