home | help
UILIBINTRO(3)		    Library Functions Manual		   UILIBINTRO(3)

NAME
     UILib intro -- User interface library intro

DESCRIPTION
     User  interface  libraries are responding to one-chracter or one-key input,
     return various kinds of information.  They include  the  unfixed  character
     string,  fixed  character	string,  marked segment position, status display
     character string, and candidate list character string.

     The application program displays the data according to the returned  infor-
     mation.   It  can	also control mode transition by triggering through some-
     thing other than key pressing (for example, selection through the mouse).

     The user interface library provides jrKanjiString	and  jrKanjiControl  for
     the input through the TTY.  It also provides XLookupKanjiString and XKanji-
     Control for the input through the X window.

     Use of the user interface library requires the following:

     -	Through the TTY:

	Function	    jrKanjiString, jrKanjiControl

	Header file	    canna/jrkanji.h

	Library 	    libcanna.a, libcanna.so

     -	Through the X window:

	Function	    XLookupKanjiString, XKanjiControl

	Header file	    canna/kanji.h

	Library 	    libXn.a, libXn.so, libcanna.a, libcanna.so

Outline
     jrKanjiString	 Converts  ordinary  keyboard  input  (input through the
			 TTY, input with X) into Kanji strings.

     jrKanjiControl	 Executes the control with  jrKanjiString  according  to
			 the specified parameters.

     XLookupKanjiString  Converts  the	keyboard  input  (key  event) into Kanji
			 strings in the X window system.

     XKanjiControl	 Executes the control with XLookupKanjiString  according
			 to the specified parameters.

								   UILIBINTRO(3)
--------------------------------------------------------------------------------
JRKANJISTRING(3)	    Library Functions Manual		JRKANJISTRING(3)

NAME
     jrKanjiString -- Kana-to-Kanji Conversion for ordinary keyboard input

SYNOPSIS
     #include <canna/jrkanji.h>
     int jrKanjiString(context_id, ch, buffer_return, bytes_buffer, kanji_status_return)
     int context_id;
     int ch;
     char *buffer_return;
     int bytes_buffer;
     jrKanjiStatus *kanji_status_return;

DESCRIPTION
     jrKanjiString  converts ordinary keyboard input (input through the TTY, in-
     put with X) into Kanji strings.

     jrKanjiString is a convenient routine which returns the  character  strings
     to  be displayed.	To convert the key input represented in ASCII code, into
     the Japanese characters, jrKanjiString specifies the input key  code  using
     ch.   Romaji-to-Kana  or  Kana-to-Kanji  Conversion  is  executed in jrKan-
     jiString.

     For a function or cursor key, specify a special code (listed in  ``FUNCTION
     KEYS''  below) to jrKanjiString.  Do not specify the sequence caused by the
     key.

     For the context identifier specified in context_id, the value is  not  used
     as  it  is.  Instead, a context that uses the context identifier as the key
     is created and used.  Thus, the application program may specify  any  value
     for the context identifier to be specified for jrKanjiString.  It is recom-
     mended  that the input port's file descriptor be specified for this identi-
     fier.  If 0 is specified for the identifier, the context  prepared  as  the
     system default will be used by way of exception.

     It  is  recommended  that 0 be specified unless particular consideration is
     given to the context.  The intermediate result to be displayed is	returned
     to the application through kanji_status_return.

     Responding to the input, it is necessary to display the intermediate result
     of  Romaji-to-Kana  or Kana-to-Kanji Conversion.  The application must dis-
     play the intermediate result  according  to  the  information  returned  by
     kanji_status_return, which is a jrKanjiStatus type structure.

     The jrKanjiStatus structure is defined as follows:

     typedef struct {
       unsigned char *echoStr; /* Character string for local echo */
       int	     length;   /* Length of the local echo character string */
       int	     revPos;   /* Offset to the reverse display field
				  within local echo character string */
       int	     revLen;   /* Length of the reverse display within
				  local echo echo character string */
       unsigned long info;     /* Other information */
       unsigned char *mode;    /* Mode information */
       struct {
	 unsigned char *line;  /* Candidate list character string */
	 int	       length; /* Length of candidate list character string */
	 int	       revPos; /* Offset to the reverse display field
				  within candidate list character string */
	 int	       revLen; /* Length of reverse display field within
				  candidate list character string */
       } gline; 	       /* Information about the candidate list*/
     } jrKanjiStatus;

     When  Kana-to-Kanji  conversion  is used during Japanese input, information
     such as the readings to be  converted  need  to  be  echoed  (local  echo).
     jrKanjiString does not perform display such as local echo.  Instead, it re-
     turns  the character strings to be submitted to local echo, to the applica-
     tion by using the jrKanjiStatus structure.

     The EUC character strings to be submitted to local echo include  characters
     already  converted  into  Kana from Romaji and conversion candidate charac-
     ters.  Until the conversion is fixed, they are returned by the echoStr mem-
     ber.  At this time, the length of local echo character string  is	returned
     by  the  length  member.  Also, the starting position and length (bytes) of
     reverse display area are returned by the revPos and revLen member,  respec-
     tively.   The buffer for local echo character strings is reserved automati-
     cally by jrKanjiString.  It must be used only for	reading.   No  character
     string must be written into this buffer.

     If no character string is to be submitted to local echo, 0 will be returned
     by the length member.

     The  contents  to be submitted to local echo may be the same as when jrKan-
     jiString was previously called.  (This occurs, for example, when a  control
     code  is pressed and the key is disabled.)  In this case, -1 returns to the
     length member.

     Mode changes and existence of information	about  the  candidate  list  are
     passed  by  the info member.  If info member's KanjiModeInfo bit is on, the
     character string indicating the new mode will return to mode.  If the  info
     member's KanjiGLineInfo bit is on, the gline structure has contained infor-
     mation such as the candidate list.

     The character string for candidate list display returns to the gline struc-
     ture's line member.  The length, reverse dispaly starting position, and re-
     verse display duration of the candidate list character string return to the
     gline structure's line, revPos, and revLen, respectively.

     If  there	is  an	EUC character string fixed during conversion, it will be
     stored into buffer buffer_return.	In this case, the length (bytes) of this
     character string will return. If there is no fixed  character  string,  the
     return value will be 0.  Using bytes_buffer, specify the size of the buffer
     that  is  to  contain  the  fixed character string (buffer_return).  If the
     fixed character string is longer than bytes_buffer, only  the  bytes_buffer
     substring	is stored into buffer_return.  In this case, the value specified
     in bytes_buffer will be the return value of jrKanjiString.

FUNCTION KEYS
     For any function key that issue an Escape sequence, specify one of the fol-
     lowing codes as ch instead of the Escape sequence:

     Logical nameCode

     Nfer	 CANNA_KEY_Nfer

     Xfer	 CANNA_KEY_Xfer

     Up 	 CANNA_KEY_Up

     Left	 CANNA_KEY_Left

     Right	 CANNA_KEY_Right

     Down	 CANNA_KEY_Down

     Insert	 CANNA_KEY_Insert

     Rollup	 CANNA_KEY_Rollup

     Rolldown	 CANNA_KEY_Rolldown

     Home	 CANNA_KEY_Home

     Help	 CANNA_KEY_Help

     S-Nfer	 CANNA_KEY_Shift_Nfer

     S-Xfer	 CANNA_KEY_Shift_Xfer

     S-Up	 CANNA_KEY_Shift_Up

     S-Left	 CANNA_KEY_Shift_Left

     S-Right	 CANNA_KEY_Shift_Right

     S-Down	 CANNA_KEY_Shift_Down

     C-Nfer	 CANNA_KEY_Control_Nfer

     C-Xfer	 CANNA_KEY_Control_Xfer

     C-Up	 CANNA_KEY_Control_Up

     C-Left	 CANNA_KEY_Control_Left

     C-Right	 CANNA_KEY_Control_Right

     C-Down	 CANNA_KEY_Control_Down

     F1 	 CANNA_KEY_F1

     PF1	 CANNA_KEY_PF1

SEE ALSO
     jrKanjiControl(3)

RETURN VALUE
     If an error occurs during input processing, -1 will return  as  the  return
     value  of this function.  In this case, the error message will be stored in
     external variable (char*)jrKanjiError.

     If a call to this function causes a  character  string  to  be  fixed,  the
     length (bytes) of this character string will return.  Otherwise, 0 will re-
     turn.

								JRKANJISTRING(3)
--------------------------------------------------------------------------------
JRKANJICONTROL(3)	    Library Functions Manual	       JRKANJICONTROL(3)

NAME
     jrKanjiControl -- Control the jrKanjiControl modes and processes

SYNOPSIS
     #include <canna/jrkanji.h>
     int jrKanjiControl(context_id, request, arg)
     int context_id;
     int request;
     char *arg;

DESCRIPTION
     jrKanjiControl  executes process request for conversion context context_id.
     Some processes are accompanied by the argument, specified in arg.

     jrKanjiControl controls the following 13 functions:

     request name      Function

     KC_INITIALIZE     Initializes Kana-to-Kanji conversion.

     KC_CHANGEMODE     Changes the input mode.

     KC_SETWIDTH       Specifies the width used to display the candidate

     KC_FINALIZE       Finalizes (terminates) Kana-to-Kanji conversion	process-
		       ing.

     KC_SETUNDEFKEYFUNCTION
		       Sets a function for an undefined key.

     KC_SETMODEINFOSTYLE
		       Specifies  whether mode information is represented in nu-
		       meric form.

     KC_KAKUTEI        Fixes the currently entered character string.

     KC_KILL	       Deletes the currently entered character string.

     KC_QUERYMODE      Queries about the current mode.

     KC_SETSERVERNAME  Specifies the server to be connected.

     KC_SETINITFILENAMESpecifies the customize file.

     KC_CLOSEUICONTEXT Closes the context.

     KC_QUERYMAXMODESTRObtains the maximum  length  of	mode  display  character
		       string.

     Basically,  jrKanjiControl  is  enabled only for something specified in the
     context.  This  rule  does  not  apply  to  the  initialize  and  terminate
     processes.

     The  unfixed  character string condition may change, or details of the mode
     may vary, depending on the jrKanjiControl operation.  If  this  may  occur,
     pass  the pointer to a structure that can contain the varied information in
     the arg field.  This structure is defined as follows:

     typedef struct {
       int	val;	      /* The length of the character string in the
				 buffer returns. */
       unsigned char *buffer; /* Specifies the buffer used to store the
				 fixed character string. */
       int	bytes_buffer; /* Specifies the size of the above buffer. */
       jrKanjiStatus *ks;     /* Pointer to the structure that contains
				 information about the unfixed character string. */
     } jrKanjiStatusWithValue;

     The jrKanjiControl functions can be executed in the following ways:

     (1)   KC_INITIALIZE -- Initializes Kana-to-Kanji conversion.

	   KC_INITIALIZE  initializes  Kana-to-Kanji  conversion  by  specifying
	   KC_INITIALIZE  in the request field.  Specify one of the following in
	   arg: (1) the pointer to the char ** type variable used to  store  the
	   warning message and (2) NULL.

	   The	initialize  process  is  basically  executed  automatically when
	   jrKanjiString(3) is first called.  This is skipped by using	jrKanji-
	   Control for initialization.

	   For	example, when control about Kana-to-Kanji conversion is executed
	   using jrKanjiControl before use  of	jrKanjiString(3),  Kana-to-Kanji
	   conversion must be initialized.

	   When the process terminates normally, 0 returns as the jrKanjiControl
	   return value.  When it terminates abnormally, -1 returns.

	   When  KC_INITIALIZE is executed, a warning, rather than an error, may
	   occur.  When it occurs, the pointer to the warning  character  string
	   array  is stored in and returns to the variable specified in arg.  If
	   no warning occurs, NULL is stored and returns.

	   (Example)
	     int res; /* Prepare for error return */
	     char **warning;
	     .....
	     res = jrKanjiControl(0, KC_INITIALIZE, &warning);
	     if (warning) {
	       char **p;

	       for (p = warning ; *p ; p++) {
		 fprintf(stderr, "%s0, *p);
	       }
	     }

	   In the library, malloc is done for the warning message  returning  to
	   the	third  argument.   This  message  is freed when KC_INITIALIZE or
	   KC_FINALIZE is executed next.  The application  programmer  must  not
	   free  it.  The maximum number of warning messages is restricted to 64
	   now.  The subsequent ones are discarded.

	   The following warnings may be included in a message:

	   -  All customize files including those of the system are unavailable.

	   -  The customize file contains a syntax error.

	   -  The Romaji-to-Kana conversion dictionary is unavailable.

	   -  The Kana-to-Kanji conversion dictionary is unavailable.

	   -  Connection to the Kana-to-Kanji conversion server is disabled.

	   If NULL is specified as the third argument, any warning message  will
	   be discarded.

     (2)   KC_CHANGEMODE -- Changes the input mode.

	   KC_CHANGEMODE  changes  the input mode from the application.  Specify
	   KC_CHANGEMODE in the request field.	Specify  the  jrKanjiStatusWith-
	   Value structure in arg.

	   The	Japanese  mode is changed by specifying the mode number with the
	   val member of jrKanjiStatusWithValue structure.  The mode  number  is
	   indicated by the following macros:

	   Macro number 	   Mode

	   CANNA_MODE_AlphaMode    Alphabet mode

	   CANNA_MODE_HenkanMode   Conversion input mode

	   CANNA_MODE_KigoMode	   Symbol input mode

	   CANNA_MODE_ZenHiraKakuteiMode
				   Full-wide Hiragana fixed input mode

	   CANNA_MODE_ZenKataKakuteiMode
				   Full-wide Katakana fixed mode

	   CANNA_MODE_HanKataKakuteiMode
				   Half-wide Katakana fixed input mode

	   CANNA_MODE_ZenAlphaKakuteiMode
				   Full-wide alphabet fixed input mode

	   CANNA_MODE_HanAlphaKakuteiMode
				   Half-wide alphabet fixed input mode

	   CANNA_MODE_HexMode	   Hexadecimal code input mode

	   CANNA_MODE_BushuMode    Bushu input mode

	   CANNA_MODE_TorokuMode   Word register mode

	   This  function  causes  much  dispaly (mode name etc.) to vary in re-
	   sponse to a mode change.  The  display  change  is  returned  by  the
	   jrKanjiStatusWithValue structure specified as arg.

	   (Example)
	     jrKanjiStatus ks;
	     jrKanjiStatusWithValue ksv;
	     unsigned char buf[SOMESIZE];
	     .....
	     ksv.ks = &ks;
	     ksv.buffer = buf;
	     ksv.bytes_buffer = SOMESIZE;
	     ksv.val = CANNA_MODE_HexMode;

	     jrKanjiControl(context, KC_CHANGEMODE, &ksv);
	     len = ksv.val;
	     .....

	   /* Information about the unfixed or fixed character string is returned
	      by ksv. */

     (3)   KC_SETWIDTH	--  Specifies  the  width  used to display the candidate
	   list.

	   KC_SETWIDTH specifies the number of columns of the area on which  the
	   candidate  list  is	to be displayed.  The width of one column equals
	   that of an alphabetical or half-wide Katakana character.  Each  full-
	   wide  Kanji character occupies two columns.	Using KC_SETWIDTH, spec-
	   ify the width of candidate list display area to be specified  in  the
	   request field.  At this time, specify the number of columns in arg.

	   (Example)
	     jrKanjiControl(0, KC_SETWIDTH, (char *)60);

     (4)   KC_FINALIZE	--  Finalizes  (terminates)  processing of Kana-to-Kanji
	   conversion

	   KC_FINALIZE specifies that Kana-to-Kanji  conversion  also  finalizes
	   (terminates) at the end of the program and in other cases.
	    Be	sure to execute this process when terminating Kana-to-Kanji con-
	   version processing.	All contents learned up to now are registered in
	   the file.  Specify KC_FINALIZE in the request field.

	   When the process terminates normally, 0 returns.  When it  terminates
	   abnormally, -1 returns.

	   When  KC_FINALIZE  is  executed, a warning, rather than an error, may
	   occur.  When it occurs, the pointer to the warning  character  string
	   array  is stored in and returns to the variable specified in arg.  If
	   no warning occurs, NULL is stored and returns.

	   (Example)
	     int res; /* Prepare for error return */
	     char **warning;
	     .....
	     res = jrKanjiControl(0, KC_FINALIZE, &warning);
	     if (warning) {
	       char **p;

	       for (p = warning ; *p ; p++) {
		 fprintf(stderr, "%s0, *p);
	       }
	     }

	   In the library, malloc is done for the warning message  returning  to
	   the	third  argument.   This  message  is freed when KC_INITIALIZE or
	   KC_FINALIZE is executed next.  The application  programmer  must  not
	   free it.

	   The	maximum number of warning messages is restricted to 64 now.  The
	   subsequent ones are discarded.

	   The following warning may be included in a message:

	   -  The dictionary cannot be unmounted.

	   If NULL is specified as the third argument, any warning message  will
	   be discarded.

     (5)   KC_SETUNDEFKEYFUNCTION -- Sets a function for an undefined key.

	   For example, if you press CTRL-t during input of a reading, it is re-
	   garded as undefined key input.  The following processes are executed,
	   responding to undefined key input:

	   Macro name  Process

	   kc_normal   Beep

	   kc_through  Passes the input to the application

	   kc_kakutei  Fixes the input and passes it to the application program.

	   kc_kill     Deletes	the  input and passes it to the application pro-
		       gram.

	   If kc_normal is specified, the function set in external variable  jr-
	   BeepFunc is called automatically by the library when an undefined key
	   is input.  If the value is not set in jrBeepFunc, nothing occurs when
	   ``jrBeepFunc == NULL'' appears.

	   (Example)
	     extern (*jrBeepFunc)(), beep();

	     jrBeepFunc = beep;
	     jrKanjiControl(0, KC_SETUNDEFKEYFUNCTION, kc_normal);

     (6)   KC_SETMODEINFOSTYLE -- Specifies mode information representation.

	   You	may  want  to display mode information with data such as the bit
	   map, rather than character strings.	In this case, return of  numeric
	   data  as  mode  information	helps  you execute the process.  Specify
	   KC_SETMODEINFOSTYLE in jrKanjiControl, and  pass  1	to  arg.   After
	   this, one character representing the mode code (numeric) plus To con-
	   vert  the  value into the mode code, subtract '@' (0x40) from the re-
	   turned character string.  For the mode codes, see the mode change de-
	   scription of Item (2) KC_CHANGEMODE.

     (7)   KC_KAKUTEI, (8) KC_KILL -- Kill the currently input character string.

	   You may want to relinquish the currently entered character string for
	   some reason.  There are two relinquishing methods.  One is to  relin-
	   quish  the  character  string  after  including the currently entered
	   character string as a fixed one.  The other is to discard the charac-
	   ter string completely then relinquish  it.	For  the  first  method,
	   specify KC_KAKUTEI in jrKanjiControl.  For the second method, specify
	   KC_KILL.

	   Each of the above influences the display.  The jrKanjiStatusWithValue
	   must thus be specified as the third argument.

	   (Example)
	     jrKanjiStatusWithValue ksv;
	     jrKanjiStatus ks;
	     unsigned char buf[SOMESIZE];
	     .....
	     ksv.ks = &ks;
	     ksv.buffer = buf;
	     ksv.bytes_buffer = SOMESIZE;

	     jrKanjiControl(context, KC_KAKUTEI, &ksv);
	     len = ksv.val;
	     .....

     (9)   KC_QUERYMODE -- Inquiry about the mode

	   To  inquire	about the current mode, specify KC_QUERYMODE in jrKanji-
	   Control.

	   Specify the pointer to the character array in which the mode  charac-
	   ter string is to be stored.	The mode character string is a character
	   string ending with a null character.  To return a numeric here, spec-
	   ify	KC_SETMODEINFOSTYLE in jrKanjiControl to change the mode charac-
	   ter string style.

	   (Example)
	     char currentMode[MAXMODELEN];
	     .....
	     jrKanjiControl(0, KC_QUERYMODE, currentMode);
	     .....

     (10)  KC_SETSERVERNAME   Specifies the server to be connected.

	   KC_SETSERVERNAME enables you to switch the  Kana-to-Kanji  conversion
	   server  without  terminating  the  application  program.   To set the
	   server to connect as the  Kana-to-Kanji  conversion	server,  specify
	   KC_SETSERVERNAME  in  jrKanjiControl.  In the third argument, specify
	   the name of the server to be connected.

     (11)  KC_SETINITFILENAME -- Specifies the customize file.

	   KC_SETINITFILENAM enables the application program to change the  cus-
	   tomize  file.   To change the customize file, specify KC_SETINITFILE-
	   NAME as the second argument and the file name character string as the
	   third argument.  This process must be executed before KC_INTIALIZE.

	   (Example)
	     char *inifile = "app-own.canna"
	     .....
	     jrKanjiControl(0, KC_SETINITFILENAME, initfile);
	     .....

     (12)  KC_CLOSEUICONTEXT   Closes the context.

	   Any integer may be assigned as the context  ID  that  represents  the
	   conversion context.	A context ID that has never been used can be as-
	   signed to jrKanjiString or jrKanjiControl.  In this case, initializa-
	   tion for this context is executed to reserve the required memory.

	   If an input port used up to now is not used, you may want to free the
	   memory  reserved for the context ID assigned to this port.  To do so,
	   call jrKanjiControl by specifying KC_CLOSEUICONTEXT as the second ar-
	   gument.

	   Because this process causes a  display  change,  specify  jrKanjiSta-
	   tusWithValue as the third structure.

	   (Example)
	     jrKanjiStatusWithValue ksv;
	     jrKanjiStatus ks;
	     unsigned char buf[SOMESIZE];
	     .....
	     ksv.ks = &ks;
	     ksv.buffer = buf;
	     ksv.bytes_buffer = SOMESIZE;

	     jrKanjiControl(0, KC_CLOSEUICONTEXT, &ksv);
	     .....

     (13)  KC_QUERYMAXMODESTR  --  Obtains  the  maximum  length of mode display
	   character string.

	   The mode display character string can be customized	using  the  ini-
	   tialize  file.   It	is  necessary to examine the size of the display
	   area (in the customized resulting mode display character string) that
	   is to be reserved.  Specify KC_QUERYMAXMODESTR as  the  second  argu-
	   ment,  then	call jrKanjiControl.  As a result, the number of columns
	   necessary for the mode display character  string  is  returned.   The
	   number  of  columns	is  represented,  defining that the width of one
	   half-wide alphanumeric character is 1.

	   The third argument is unused; dummy value 0 is assigned to it.

	   (Example)
	     int max_mode_columns;
	     .....
	     max_mode_columns = jrKanjiControl(0, KC_QUERYMAXMODESTR, 0);
	     .....

							       JRKANJICONTROL(3)
--------------------------------------------------------------------------------
XLookupKanjiString(3)	    Library Functions Manual	   XLookupKanjiString(3)

NAME
     XLookupKanjiString -- Converts the keyboard input into Kanji

SYNOPSIS
     #include <X11/Xlib.h>
     #include <X11/kanji.h>

     int
     XLookupKanjiString(event_struct, buffer_return, bytes_buffer,
			keysym_return, status_return, kanji_status_return)
	     XKeyEvent *event_struct;
	     char *buffer_return;
	     int bytes_buffer;
	     KeySym *keysym_return;
	     XComposeStatus *status_return;
	     XKanjiStatus *kanji_status_return;

ARGUMENTS
	    event_struct    Specifies the key event.

	    buffer_return   Returns the resulting Kanji string.

	    bytes_buffer    Specifies the buffer length.

	    keysym_return   Returns the key symbol.  NULL may be specified

	    status_return   Specifies the pointer to the XCompose structure.

	    kanji_status_return
			    Returns the Kana-to-Kanji conversion status.

DESCRIPTION
     XLookupKanjiString is a convenient routine that associates a key event with
     a Japanese character string.  It uses the modifier  key  bit  to  processes
     such as shift, lock, and control.

     XLookupKanjiString  enables  eight-  and  16-bit  Japanese characters to be
     processed.

     XLookupKanjiString processes alphabetical characters in  the  same  way  as
     XLookupString.

     For  Japanese  character processing, Romaji-to-Kana conversion and Kana-to-
     Kanji conversion are done in this function.  The XKanjiStatus, defined  be-
     low, is used during Japanese data input:

	  typedef struct _XKanjiStatus {
	      unsigned char *echoStr;	  /* local echo string */
	      int length;		   /* length of echo string */
	      int revPos;		  /* reverse position  */
	      int revLen;		  /* reverse length    */
	      unsigned long info;	/* other informations */
	      unsigned char *mode; /* mode information */
	      struct {
	       unsigned char *line;	/* a grance of Kanji characters */
	       int length;	   /* length of it */
	       int revPos;	   /* reverse position of it */
	       int revLen;	   /* reverse length of it */
	      } gline;		   /* a grancing line information */
	  } XKanjiStatus;

	  #define KanjiModeInfo    01
	  #define KanjiGLineInfo   02

     When  Kana-to-Kanji  conversion  is used during Japanese input, information
     such as the readings to be  converted  need  to  be  echoed  (local  echo).
     XLookupKanjiString  does  not perform display such as local echo.	Instead,
     it returns the character strings to be submitted to local echo, to the  ap-
     plication by using the XKanjiStatus structure.

     The  EUC character strings to be submitted to local echo include characters
     already converted into Kana from Romaji and  conversion  candidate  charac-
     ters.  Until the conversion is fixed, they are returned by the echoStr mem-
     ber.   At	this time, the length of local echo character string is returned
     by the length member.  Also, the starting position and  length  (bytes)  of
     reverse display are returned by the revPos and revLen member, respectively.
     The  buffer  for  local echo character strings is reserved automatically by
     XLookupKanjiString.  It should be used  only  for	reading.   No  character
     string must be written into this buffer.

     If  no  character string is to be submitted to local echo, 0 will return to
     the length member.

     The contents to be submitted to local echo may be the same as when XLookup-
     KanjiString was previously called.  (This occurs,	for  example,  when  the
     Shift key is pressed.)  In this case, -1 returns to the length member.

     Mode  changes  and  existence  of	information about the candidate list are
     passed by the info member.  If info member's KanjiModeInfo bit is	on,  the
     character	string indicating the new mode will return to mode.  If the info
     member's KanjiGLineInfo bit is on, the gline structure has contained infor-
     mation such as the candidate list.

     The character string for candidate list display returns to the gline struc-
     ture's line member.  The length, reverse dispaly starting position, and re-
     verse display duration of the candidate list character string return to the
     gline structure's line, revPos, and revLen, respectively.

     If there is an EUC character string fixed during  conversion,  it	will  be
     stored  in buffer_return.	In this case, the length (bytes) of this charac-
     ter string will return as the return value of this function.  If  there  is
     no fixed character string, the return value will be 0.

							   XLookupKanjiString(3)
--------------------------------------------------------------------------------
XKANJICONTROL(3)	    Library Functions Manual		XKANJICONTROL(3)

NAME
     XKanjiControl -- Control the XLookupKanjiString mode and process.

SYNOPSIS
     #include <X11/kanji.h>
     int XKanjiControl(dpy, win, request, arg)
     Display dpy;
     Window win;
     int request;
     char *arg;

DESCRIPTION
     XKanjiControl  executes a process that relates to Japanese input within the
     window defined by dpy and win.  The process is specified in request.   Some
     processes are accompanied by the argument, specified in arg.

     XKanjiControl controls the following functions:

     request name      Function

     KC_INITIALIZE     Initializes Kana-to-Kanji conversion.

     KC_CHANGEMODE     Changes the input mode.

     KC_SETWIDTH       Specifies the width used to display the candidate

     KC_FINALIZE       Finalizes  (terminates) Kana-to-Kanji conversion process-
		       ing.

     KC_SETUNDEFKEYFUNCTION
		       Sets a function for an undefined key.

     KC_SETMODEINFOSTYLE
		       Specifies whether mode information is represented in  nu-
		       meric form.

     KC_KAKUTEI        Fixes the currently entered character string.

     KC_KILL	       Deletes the currently entered character string.

     KC_QUERYMODE      Queries about the current mode.

     KC_SETSERVERNAME  Specifies the server to be connected.

     KC_SETINITFILENAMESpecifies the customize file.

     KC_CLOSEUICONTEXT Closes the context.

     KC_QUERYMAXMODESTRObtains	the  maximum  length  of  mode display character
		       string.

     Basically, XKanjiControl is enabled only for the window  specified  in  the
     dpy  and  win.   This  rule  does not apply to the initialize and terminate
     processes.

     The unfixed character string condition may change, or details of  the  mode
     may  vary,  depending  on	the XKanjiControl operation.  If this may occur,
     pass the pointer to a structure that can contain the varied information  in
     the arg field.  This structure is defined as follows:

     typedef struct {
       int	val;	      /* The length of the character string in the
				 buffer returns. */
       unsigned char *buffer; /* Specifies the buffer used to store the
				 fixed character string. */
       int	bytes_buffer; /* Specifies the size of the above buffer. */
       XKanjiStatus *ks;      /* Pointer to the structure that contains
				 information about the unfixed character string. */
     } XKanjiStatusWithValue;

     The XKanjiControl functions can be executed in the following ways:

     (1)   KC_INITIALIZE -- Initializes Kana-to-Kanji conversion.

	   KC_INITIALIZE  initializes  Kana-to-Kanji  conversion  by  specifying
	   KC_INITIALIZE in the request field.	Specify one of the following  in
	   arg:  (1)  the pointer to the char ** type variable used to store the
	   warning message and (2) NULL.  The initialize  process  is  basically
	   executed  automatically  when  XLookupKanjiString(3) is first called.
	   This is skipped by using XKanjiControl for initialization.

	   For example, when control about Kana-to-Kanji conversion is	executed
	   using  XKanjiControl  before  use  of XLookupKanjiString(3), Kana-to-
	   Kanji conversion must be initialized.

	   When the process terminates normally, 0 returns as the  XKanjiControl
	   return value.  When it terminates abnormally, -1 returns.

	   When  KC_INITIALIZE is executed, a warning, rather than an error, may
	   occur.  When it occurs, the pointer to the warning  character  string
	   array  is stored in and returns to the variable specified in arg.  If
	   no warning occurs, NULL is stored and returns.

	   (Example)
	     int res; /* Prepare for error return */
	     char **warning;
	     .....
	     res = XKanjiControl(dpy, win, KC_INITIALIZE, &warning);
	     if (warning) {
	       char **p;

	       for (p = warning ; *p ; p++) {
		 fprintf(stderr, "%s0, *p);
	       }
	     }

	   In the library, malloc is done for the warning message  returning  to
	   the	fourth	argument.   This  message is freed when KC_INITIALIZE or
	   KC_FINALIZE is executed next.  The application  programmer  must  not
	   free  it.  The maximum number of warning messages is restricted to 64
	   now.  The subsequent ones are discarded.

	   The following warnings may be included in a message:

	   -  All customize files including those of the system are unavailable.

	   -  The customize file contains a syntax error.

	   -  The Romaji-to-Kana conversion dictionary is unavailable.

	   -  The Kana-to-Kanji conversion dictionary is unavailable.

	   -  Connection to the Kana-to-Kanji conversion server is disabled.

	   If NULL is specified as the fourth argument, any warning message will
	   be discarded.

     (2)   KC_CHANGEMODE -- Changes the input mode.

	   KC_CHANGEMODE changes the input mode from the  application.	 Specify
	   KC_CHANGEMODE  in  the  request field.  Specify the XKanjiStatusWith-
	   Value structure in arg.  The Japanese mode is changed  by  specifying
	   the	mode  number with the val member of XKanjiStatusWithValue struc-
	   ture.  The mode number is indicated by the following macros:

	   Macro number 	   Mode

	   CANNA_MODE_AlphaMode    Alphabet mode

	   CANNA_MODE_HenkanMode   Conversion input mode

	   CANNA_MODE_KigoMode	   Symbol input mode

	   CANNA_MODE_ZenHiraKakuteiMode
				   Full-wide Hiragana fixed input mode

	   CANNA_MODE_ZenKataKakuteiMode
				   Full-wide Katakana fixed mode

	   CANNA_MODE_HanKataKakuteiMode
				   Half-wide Katakana fixed input mode

	   CANNA_MODE_ZenAlphaKakuteiMode
				   Full-wide alphabet fixed input mode

	   CANNA_MODE_HanAlphaKakuteiMode
				   Half-wide alphabet fixed input mode

	   CANNA_MODE_HexMode	   Hexadecimal code input mode

	   CANNA_MODE_BushuMode    Bushu input mode

	   CANNA_MODE_TorokuMode   Word register mode

	   This function causes much dispaly (mode name etc.)  to  vary  in  re-
	   sponse to a mode change.  The display change is returned by the XKan-
	   jiStatusWithValue structure specified as arg.

	   (Example)
	     XKanjiStatus ks;
	     XKanjiStatusWithValue ksv;
	     unsigned char buf[SOMESIZE];
	     .....
	     ksv.ks = &ks;
	     ksv.buffer = buf;
	     ksv.bytes_buffer = SOMESIZE;
	     ksv.val = CANNA_MODE_HexMode;

	     XKanjiControl(dpy, win, KC_CHANGEMODE, &ksv);
	     len = ksv.val;
	     .....
	     /* Information about the unfixed or fixed character string is
		returned by ksv. */

     (3)   KC_SETWIDTH	--  Specifies  the  width  used to display the candidate
	   list.

	   KC_SETWIDTH specifies the number of columns of the area on which  the
	   candidate  list  is	to be displayed.  The width of one column equals
	   that of an alphabetical or half-wide Katakana character.  Each  full-
	   wide  Kanji character occupies two columns.	Using KC_SETWIDTH, spec-
	   ify the width of candidate list display area to be specified  in  the
	   request field.  At this time, specify the number of columns in arg.

	   (Example)
	     XKanjiControl(dpy, win, KC_SETWIDTH, (char *)60);

     (4)   KC_FINALIZE	--  Finalizes  (terminates)  processing of Kana-to-Kanji
	   conversion

	   KC_FINALIZE specifies that Kana-to-Kanji  conversion  also  finalizes
	   (terminates)  at  the end of the program and in other cases.  Be sure
	   to execute this process  when  terminating  Kana-to-Kanji  conversion
	   processing.	 All  contents	learned  up to now are registered in the
	   file.  Specify KC_FINALIZE in the request field.

	   When the process terminates normally, 0 returns.  When it  terminates
	   abnormally, -1 returns.

	   When  KC_INITIALIZE is executed, a warning, rather than an error, may
	   occur.  When it occurs, the pointer to the warning  character  string
	   array  is stored in and returns to the variable specified in arg.  If
	   no warning occurs, NULL is stored and returns.

	   (Example)
	     int res; /* Prepare for error return */
	     char **warning;
	     .....
	     res = XKanjiControl(dpy, win, KC_FINALIZE, &warning);
	     if (warning) {
	       char **p;

	       for (p = warning ; *p ; p++) {
		 fprintf(stderr, "%s0, *p);
	       }
	     }

	   In the library, malloc is done for the warning message  returning  to
	   the	fourth	argument.   This  message is freed when KC_INITIALIZE or
	   KC_FINALIZE is executed next.  The application  programmer  must  not
	   free it.

	   The	maximum number of warning messages is restricted to 64 now.  The
	   subsequent ones are discarded.

	   The following warning may be included in a message:

	   -  The dictionary cannot be unmounted.

	   If NULL is specified as the fourth argument, any warning message will
	   be discarded.

     (5)   KC_SETUNDEFKEYFUNCTION -- Sets a function for an undefined key.

	   For example, if you press CTRL-t during input of a reading, it is re-
	   garded as undefined key input.  The following processes are executed,
	   responding to undefined key input:

	   Macro name  Process

	   kc_normal   Beep

	   kc_through  Passes the input to the application program.

	   kc_kakutei  Fixes the input and passes it to the application program.

	   kc_kill     Deletes the input and passes it to the  application  pro-
		       gram.

	   If  kc_normal is specified, the function set in external variable jr-
	   BeepFunc is called automatically by the library when an undefined key
	   is input.  If the value is not set in jrBeepFunc, nothing occurs when
	   "jrBeepFunc == NULL" appears.

	   (Example)
	     extern (*jrBeepFunc)(), beep();

	     jrBeepFunc = beep;
	     XKanjiControl(dpy, win, KC_SETUNDEFKEYFUNCTION, kc_normal);

     (6)   KC_SETMODEINFOSTYLE -- Specifies mode information representation.

	   You may want to display mode information with data such  as	the  bit
	   map,  rather than character strings.  In this case, return of numeric
	   data as mode information helps  you	execute  the  process.	 Specify
	   KC_SETMODEINFOSTYLE in XKanjiControl, and pass 1 to arg.  After this,
	   one	character  representing  the mode code (numeric) plus To convert
	   the value into the mode code, subtract '@' (0x40) from  the	returned
	   character  string.	For the mode codes, see the mode change descrip-
	   tion of Item (2) KC_CHANGEMODE.

     (7)   KC_KAKUTEI, (8) KC_KILL -- Kill the currently input character string.

	   You may want to relinquish the currently entered character string for
	   some reason.  There are two relinquishing methods.  One is to  relin-
	   quish  the  character  string  after  including the currently entered
	   character string as a fixed one.  The other is to discard the charac-
	   ter string completely then relinquish  it.	For  the  first  method,
	   specify KC_KAKUTEI in jrKanjiControl.  For the second method, specify
	   KC_KILL.

	   Each  of the above influences the display.  The XKanjiStatusWithValue
	   must thus be specified as the fourth argument.

	   (Example)
	     XKanjiStatusWithValue ksv;
	     XKanjiStatus ks;
	     unsigned char buf[SOMESIZE];
	     .....
	     ksv.ks = &ks;
	     ksv.buffer = buf;
	     ksv.bytes_buffer = SOMESIZE;

	     XKanjiControl(dpy, win, KC_KAKUTEI, &ksv);
	     len = ksv.val;
	     .....

     (9)   KC_QUERYMODE -- Inquiry about the mode

	   To inquire about the current mode, specify KC_QUERYMODE in XKanjiCon-
	   trol.

	   Specify the pointer to the character array in which the mode  charac-
	   ter string is to be stored.	The mode character string is a character
	   string ending with a null character.  To return a numeric here, spec-
	   ify KC_SETMODEINFOSTYLE in XKanjiControl to change the mode character
	   string style.

	   (Example)
	     char currentMode[MAXMODELEN];
	     .....
	     XKanjiControl(dpy, win, KC_QUERYMODE, currentMode);
	     .....

     (10)  KC_SETSERVERNAME -- Specifies the server to be connected.

	   KC_SETSERVERNAME  enables  you to switch the Kana-to-Kanji conversion
	   server without terminating  the  application  program.   To	set  the
	   server  to  connect	as  the Kana-to-Kanji conversion server, specify
	   KC_SETSERVERNAME in XKanjiControl.  In the fourth  argument,  specify
	   the name of the server to be connected.

     (11)  KC_SETINITFILENAME -- Specifies the customize file.

	   KC_SETINITFILENAM  enables the application program to change the cus-
	   tomize file.  To change the customize file,	specify  KC_SETINITFILE-
	   NAME  as the third argument and the file name character string as the
	   fourth argument.  This process must be executed before KC_INTIALIZE.

	   (Example)
	     char *inifile = "app-own.canna"
	     .....
	     XKanjiControl(dpy, win, KC_SETINITFILENAME, initfile);
	     .....

     (12)  KC_CLOSEUICONTEXT   Closes the context.

	   When XKanjiControl or XLookupKanjiString is	called,  one  conversion
	   context  is	assigned  to combination of dpy and win.  Combination of
	   dpy and win not used  yet  can  be  specified  for  XKanjiControl  or
	   XLookupKanjiString.	 When this is done, a new context is created for
	   the window and the required memory is reserved.

	   If a window used up to now is not used, you may want to free the con-
	   text memory that has been assigned to this window.  To  do  so,  call
	   XKanjiControl by specifying KC_CLOSEUICONTEXT as the third argument.

	   Because  this  process  causes  a  display change, specify XKanjiSta-
	   tusWithValue as the fourth structure.

	   (Example)
	     XKanjiStatusWithValue ksv;
	     XKanjiStatus ks;
	     unsigned char buf[SOMESIZE];
	     .....
	     ksv.ks = &ks;
	     ksv.buffer = buf;
	     ksv.bytes_buffer = SOMESIZE;

	     XKanjiControl(dpy, win, KC_CLOSEUICONTEXT, &ksv);
	     .....

     (13)  KC_QUERYMAXMODESTR -- Obtains the  maximum  length  of  mode  display
	   character string.

	   The	mode  display  character string can be customized using the ini-
	   tialize file.  It is necessary to examine the  size	of  the  display
	   area (in the customized resulting mode display character string) that
	   is to be reserved.  Specify KC_QUERYMAXMODESTR as the third argument,
	   then  call  XKanjiControl.  As a result, the number of columns neces-
	   sary for the mode display character string is returned.  (The  number
	   of  columns	is represented, defining that the width of one half-wide
	   alphanumeric character is 1.

	   The fourth argument is unused; dummy value 0 is assigned to it.

	   (Example)
	     int max_mode_columns;
	     .....
	     max_mode_columns = XKanjiControl(dpy, win, KC_QUERYMAXMODESTR, 0);
	     .....

								XKANJICONTROL(3)

home | help