XHPNlioctl(3X)XHPNlioctl(3X)NAMEXHPNlioctl - configure the 16-bit input environment
SYNOPSIS
#include <X11/XHPlib.h>
Status XHPNlioctl(display, status_in_out, command, arg)
Display *display;
XComposeStatus *status_in_out;
int command;
char *arg;
DESCRIPTION
display Specifies the display
status_in_out Specifies the XComposeStatus structure which this
routine, along with XHPConvertLookup, will use to
maintain information about this 16-bit input server.
command specifies the command associated with this call.
arg The meaning of arg is dependent upon the value of
command. It is not always char *. Check with the
documentation for communicating with the nlio process.
This routine controls the environment for the 16-bit input server
maintained in status_in_out.
The contents of status_in_out must be zero before its use by either
XHPConvertLookup or XHPNlioctl. Also, if multiple input servers are
running at the same time, they must each be maintained by separate
XComposeStatus parameters.
Upon successful completion, this routine returns 0. If an error has
occurred, -1 is returned and errno is set to indicate the error.
The following commands are supported by this library. Other control
commands may be supported by the NLIO input servers, see the
documentation for the NLIO product for details.
K16_ALT_ON
If the current state of the keyboard is in the alternate
character set the value of the integer pointed to by arg to one,
else set the value of the integer pointed to by arg to zero.
K16_EXEC_PROC
Exec the 16-bit input server process associated with the
keyboard mapping for display. The state information for this
server will be maintained in status_in_out. If the server could
not be started, -1 is returned and the external variable errno
will contain the error for the last system call that XHPNlioctl
called. The value of arg is ignored.
K16_GET_ENCODING
Get the encoding of the character to be returned. If the
encoding is HP-15, set the value of the integer pointed to by
arg to zero. If the encoding is EUC, set the value of the
integer pointed to by arg to one. No error is returned.
K16_GET_STATEKEYS
Get the keysyms for the keys which control state for the Asian
keyboards. The keys that are returned are those which control
the state of NLIO (invoke/terminate) and those which control the
state of the alternate keyboard (set/unset). The current values
are returned in the K16_state structure.
NoSymbol is returned for all values for non-Asian keyboards.
The default settings for the Asian keyboards are contained in
the following table.
┌─────────────────────────────┐
│Japanese │
├─────────────────┬───────────┤
│ set_alternate │XK_Meta_R │
│unset_alternate │XK_Meta_R │
│ invoke_nlio │XK_Meta_L │
│terminate_nlio │XK_Meta_L │
├─────────────────┴───────────┤
│Katakana │
├─────────────────┬───────────┤
│ set_alternate │XK_Meta_R │
│unset_alternate │XK_Meta_L │
│ invoke_nlio │ NoSymbol │
│terminate_nlio │ NoSymbol │
├─────────────────┴───────────┤
│Korean, S_Chinese, T_Chinese │
├─────────────────┬───────────┤
│ set_alternate │ NoSymbol │
│unset_alternate │ NoSymbol │
│ invoke_nlio │XK_Meta_R │
│terminate_nlio │XK_Meta_L │
└─────────────────┴───────────┘
A programming example follows.
Display *display;
XCompose compose;
struct K16_state k16state;
KeySym invoke_nlio, terminate_nlio;
KeySym set_alternate, unset_alternate;
XHPNlioctl (display, &compose, K16_GET_STATEKEYS, &k16state);
invoke_nlio = k16state.invoke_nlio;
terminate_nlio = k16state.terminate_nlio;
set_alternate = k16state.set_nlio;
unset_alternate = k16state.unset_nlio;
K16_KILL_PROC
Kill the 16-bit input server process which is being maintained
in status_in_out. No error is returned. The value of arg is
ignored.
K16_NLIO_ON
If the 16-bit input server is currently receiving characters,
set the value of the integer pointed to by arg to one, else set
the value of the integer pointed to by arg to zero.
K16_SET_ENCODING
Set the encoding of the character to be returned. If the value
of the integer pointed to by arg is zero, the encoding becomes
HP-15. If the value of the integer pointed to by arg is one,
the encoding becomes EUC. No error is returned.
K16_SET_STATEKEYS
Set the keys which control state for the Asian keyboards. The
keys that can be set are those which control the state of NLIO
(invoke/terminate) and those which control the state of the
alternate keyboard (set/unset). The keys are set by setting the
proper flag and by specifying the keysym which controls a
particular state in the K16_state structure.
If the keysyms that set and unset a state are the same, then
that key will be a toggle key. If both keysyms are set to
NoSymbol then that functionality is effectively disabled. Note:
no checking is made for the existence of keysyms on the current
keyboard. Functionality can be enabled and disabled by the use
of XChangeKeyboardMapping.
If the current keyboard mapping for display is that for a non-
Asian keyboard the error XHPINP_INVAL is returned. If the
current keyboard is other than Japanese or Katakana and flags
has K16_ALTSTATE set, -1 is returned and errno is set to EINVAL.
If the current keyboard mapping is Katakana and flags has
K16_NLIOSTATE set, -1 is returned and errno is set to EINVAL.
A programming example follows.
Display *display;
XCompose compose;
struct K16_state k16state;
KeySym invoke_nlio, terminate_nlio;
KeySym set_alternate unset_alternate
k16state.flags = K16_NLIOSTATE | K16_ALTSTATE;
k16state.invoke_nlio = invoke_nlio;
k16state.terminate_nlio = terminate_nlio;
k16state.set_alternate = set_alternate;
k16state.unset_alternate = unset_alternate;
XHPNlioctl (display, &compose, K16_SET_STATEKEYS, &k16state);
ERRORSXHPNlioctl will fail if:
[EACCES] The user is trying to exec the input server and does not
have execute permission for the input server.
[EAGAIN] The user is trying to fork the input server and a system
imposed limit for the number of processes would be
exceeded.
[EINVAL] An invalid parameter was passed to the routine.
[EIO] An error occurred in communicating with the input
server.
[EMFILE] The user is trying to start up the input server and the
maximum number of file descriptors is currently open.
[ENOENT] The user is trying to exec the input server and the file
does not exist.
ORIGIN
Hewlett-Packard Company
SEE ALSOXGetKeyboardMapping(3X), XHPConvertLookup(3X), XHPInputChinese_s(3X),
XHPInputChinese_t(3X), XHPInputJapanese(3X), XHPInputKorean(3X),
XHPSetKeyboardMapping(3X)X Version 11 Release 5 XHPNlioctl(3X)