.\" Copyright (C) 2001 Information-technology Promotion Agency (IPA)
.\" Copyright (C) 2001-2009
.\"   National Institute of Advanced Industrial Science and Technology (AIST)
.\" This file is part of the m17n library documentation.
.\" Permission is granted to copy, distribute and/or modify this document
.\" under the terms of the GNU Free Documentation License, Version 1.2 or
.\" any later version published by the Free Software Foundation; with no
.\" Invariant Section, no Front-Cover Texts,
.\" and no Back-Cover Texts.  A copy of the license is included in the
.\" appendix entitled "GNU Free Documentation License".
.TH "minput_config_command" 3m17n "15 Oct 2009" "" "Version 1.5.5" "" "The m17n Library" \" -*- nroff -*-
.ad l
.nh
.SH NAME
minput_config_command \- Configure the key sequence of an input method command. 


.SH SYNOPSIS
int
\fBminput_config_command\fP (\fBMSymbol\fP
\fIlanguage\fP, \fBMSymbol\fP
\fIname\fP, \fBMSymbol\fP
\fIcommand\fP, \fBMPlist\fP *
\fIkeyseqlist\fP)


.SH DESCRIPTION
Configure the key sequence of an input method command. 
.PP
The
.ft B
minput_config_command()
.ft R
function assigns a list of key sequences
.ft B
keyseqlist
.ft R
to the command
.ft B
command
.ft R
of the input method specified by
.ft B
language
.ft R
and
.ft B
name\fP.
.ft R
.PP
If
.ft B
keyseqlist
.ft R
is a non\-empty plist, it must be a list of key sequences, and each key sequence must be a plist of symbols.
.PP
If
.ft B
keyseqlist
.ft R
is an empty plist, any configuration and customization of the command are cancelled, and default key sequences become effective.
.PP
If
.ft B
keyseqlist
.ft R
is NULL, the configuration of the command is canceled, and the original key sequences (what saved in per\-user customization file, or the default one) become effective.
.PP
In the latter two cases,
.ft B
command
.ft R
can be
.ft B
Mnil
.ft R
to make all the commands of the input method the target of the operation.
.PP
If
.ft B
name
.ft R
is
.ft B
Mnil\fP,
.ft R
this function configures the key assignment of a global command, not that of a specific input method.
.PP
The configuration takes effect for input methods opened or re\-opened later in the current session. In order to make the configuration take effect for the future session, it must be saved in a per\-user customization file by the function
.ft B
minput_save_config()\fP.
.ft R
.PP
.SH RETURN VALUE
.PP
.RS 4
If the operation was successful, this function returns 0, otherwise returns \-1. The operation fails in these cases: 
.PD 0

.IP "\(bu" 2
\fBkeyseqlist
.ft R
is not in a valid form. 
.IP "\(bu" 2
\fBcommand
.ft R
is not available for the input method. 
.IP "\(bu" 2
\fBlanguage
.ft R
and
.ft B
name
.ft R
do not specify an existing input method. 
.PP
.RE
.PP
.SH "SEE ALSO"
.PP
.RS 4
\fBminput_get_commands()\fP,
.ft R
.ft B
minput_save_config()\fP.
.ft R
.RE
.PP
.SH Example:
.PP

.RS 4

.PP
.nf
/* Add 'C\-x u' to the 'start' command of Unicode input method.  */
{
  MSymbol start_command = msymbol ('start');
  MSymbol unicode = msymbol ('unicode');
  MPlist *cmd, *plist, *key_seq_list, *key_seq;

  /* At first get the current key\-sequence assignment.  */
  cmd = minput_get_command (Mt, unicode, start_command);
  if (! cmd)
    {
      /* The input method does not have the command 'start'.  Here
         should come some error handling code.  */
    }
  /* Now CMD == ((start DESCRIPTION STATUS KEY\-SEQUENCE ...) ...).
     Extract the part (KEY\-SEQUENCE ...).  */
  plist = mplist_next (mplist_next (mplist_next (mplist_value (cmd))));
  /* Copy it because we should not modify it directly.  */
  key_seq_list = mplist_copy (plist);
  
  key_seq = mplist();
  mplist_add (key_seq, Msymbol, msymbol ('C\-x'));
  mplist_add (key_seq, Msymbol, msymbol ('u'));
  mplist_add (key_seq_list, Mplist, key_seq);
  m17n_object_unref (key_seq);

  minput_config_command (Mt, unicode, start_command, key_seq_list);
  m17n_object_unref (key_seq_list);
}

.fi
.fi
 
.RE
.PP

.SH COPYRIGHT
Copyright (C) 2001 Information\-technology Promotion Agency (IPA)
.br
Copyright (C) 2001\-2009 National Institute of Advanced Industrial Science and Technology (AIST)
.br
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License 
<http://www.gnu.org/licenses/fdl.html>.
