mod/maxgui.mod/fltkmaxgui.mod/src/Fl_compose.cxx
int Fl::compose(int& del) {
  // character composition is now handled by the OS
  del = 0;
#if defined(__APPLE__)
  // this stuff is to be treated as a function key
  if(Fl::e_length == 0 || Fl::e_keysym == FL_Enter || Fl::e_keysym == FL_KP_Enter || 
     Fl::e_keysym == FL_Tab || Fl::e_keysym == FL_Escape || Fl::e_state&(FL_META | FL_CTRL) ) {
    return 0;
  }
#else
  unsigned char ascii = (unsigned)e_text[0];
  if ((e_state & (FL_ALT | FL_META)) && !(ascii & 128)) return 0;
#endif
  if(Fl::compose_state) {
    del = 1;
    Fl::compose_state = 0;
  } else {
#ifndef __APPLE__
    // Only insert non-control characters:
    if (! (ascii & ~31 && ascii!=127)) { return 0; }
#endif
  }
  return 1;
}
/** Any text editing widget should call this for each FL_KEYBOARD event.
 Use of this function is very simple.
 
 <p>If <i>true</i> is returned, then it has modified the
 Fl::event_text() and Fl::event_length() to a set of <i>bytes</i> to
 insert (it may be of zero length!).  In will also set the "del"
 parameter to the number of <i>bytes</i> to the left of the cursor to
 delete, this is used to delete the results of the previous call to
 Fl::compose().
 
 <p>If <i>false</i> is returned, the keys should be treated as function
 keys, and del is set to zero. You could insert the text anyways, if
 you don't know what else to do.
 
 <p>Though the current implementation returns immediately, future
 versions may take quite awhile, as they may pop up a window or do
 other user-interface things to allow characters to be selected.
 */
Any text editing widget should call this for each FL_KEYBOARD event.
Use of this function is very simple.

If true is returned, then it has modified the
Fl::event_text() and Fl::event_length() to a set of bytes to
insert (it may be of zero length!).  In will also set the "del"
parameter to the number of bytes to the left of the cursor to
delete, this is used to delete the results of the previous call to
Fl::compose().

If false is returned, the keys should be treated as function
keys, and del is set to zero. You could insert the text anyways, if
you don't know what else to do.

Though the current implementation returns immediately, future
versions may take quite awhile, as they may pop up a window or do
other user-interface things to allow characters to be selected.
Any text editing widget should call this for each FL_KEYBOARD event . Use of this function is very simple . If true is returned then it has modified the Fl :: event_text () and Fl :: event_length () to a set of bytes to insert ( it may be of zero length! ) . In will also set the " del " parameter to the number of bytes to the left of the cursor to delete this is used to delete the results of the previous call to Fl :: compose () . If false is returned the keys should be treated as function keys and del is set to zero . You could insert the text anyways if you don ' t know what else to do . Though the current implementation returns immediately future versions may take quite awhile as they may pop up a window or do other user - interface things to allow characters to be selected .
int Fl::compose(int& del) {
  del = 0;
#if defined(__APPLE__)
  if(Fl::e_length == 0 || Fl::e_keysym == FL_Enter || Fl::e_keysym == FL_KP_Enter || 
     Fl::e_keysym == FL_Tab || Fl::e_keysym == FL_Escape || Fl::e_state&(FL_META | FL_CTRL) ) {
    return 0;
  }
#else
  unsigned char ascii = (unsigned)e_text[0];
  if ((e_state & (FL_ALT | FL_META)) && !(ascii & 128)) return 0;
#endif
  if(Fl::compose_state) {
    del = 1;
    Fl::compose_state = 0;
  } else {
#ifndef __APPLE__
    if (! (ascii & ~31 && ascii!=127)) { return 0; }
#endif
  }
  return 1;
}
int Fl :: compose ( int & del ) { del = 0 ; #if defined ( __APPLE__ ) if ( Fl :: e_length == 0 || Fl :: e_keysym == FL_Enter || Fl :: e_keysym == FL_KP_Enter || Fl :: e_keysym == FL_Tab || Fl :: e_keysym == FL_Escape || Fl :: e_state & ( FL_META | FL_CTRL ) ) { return 0 ; } #else unsigned char ascii = ( unsigned ) e_text [ 0 ] ; if ( ( e_state & ( FL_ALT | FL_META ) ) && ! ( ascii & 128 ) ) return 0 ; #endif if ( Fl :: compose_state ) { del = 1 ; Fl :: compose_state = 0 ; } else { #ifndef __APPLE__ if ( ! ( ascii & ~ 31 && ascii != 127 ) ) { return 0 ; } #endif } return 1 ; }
Any text editing widget should call this for each FL_KEYBOARD event.
Any text editing widget should call this for each FL_KEYBOARD event .
// character composition is now handled by the OS // this stuff is to be treated as a function key // Only insert non-control characters: