form_driver(3x) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

form_driver(3x)

form_driver(3x)                  Library calls                 form_driver(3x)

NAME
       form_driver, form_driver_w - command-processing loop of the form system

SYNOPSIS
       #include <form.h>

       int form_driver(FORM *form, int c);
       int form_driver_w(FORM *form, int c, wchar_t wc);

DESCRIPTION
   form_driver
       Once a form has been posted (displayed), you should funnel input events
       to it through form_driver.  This routine has three major input cases:

       •   The  input  is a form navigation request.  Navigation request codes
           are constants defined in <form.h>, which are distinct from the key-
           and character codes returned by wgetch(3X).

       •   The input is a printable character.   Printable  characters  (which
           must  be positive, less than 256) are checked according to the pro‐
           gram's locale settings.

       •   The input is the KEY_MOUSE special key  associated  with  an  mouse
           event.

   form_driver_w
       This extension simplifies the use of the forms library using wide char‐
       acters.  The input is either a key code (a request) or a wide character
       returned  by  get_wch(3X).   The type must be passed as well, to enable
       the library to determine whether the parameter is a wide character or a
       request.

   Form Driver Requests
       The form driver requests are as follows:

       Lb Lb Lb Lx.  Name Description _ REQ_BEG_FIELD  Move  to  beginning  of
       field.     REQ_BEG_LINE   Move    to    beginning    of    the    line.
       REQ_CLR_EOF    Clear to end of field from cursor.  REQ_CLR_EOL    Clear
       to end of line from cursor.   REQ_CLR_FIELD  Clear  the  entire  field.
       REQ_DEL_CHAR   Delete  character  at the cursor.  REQ_DEL_LINE   Delete
       line at the cursor.  REQ_DEL_PREV   Delete character before the cursor.
       REQ_DEL_WORD   Delete     blank-delimited     word      at      cursor.
       REQ_DOWN_CHAR  Move  down  in  field.   REQ_DOWN_FIELD Move  down  to a
       field.  REQ_END_FIELD  Move to the end of  field.   REQ_END_LINE   Move
       to  the  end of the line.  REQ_FIRST_FIELD     Move to the first field.
       REQ_FIRST_PAGE Move to the first page.  REQ_INS_CHAR   Insert  a  blank
       at  the  cursor.   REQ_INS_LINE   Insert  a  blank  line at the cursor.
       REQ_INS_MODE   Enter insert  mode.   REQ_LAST_FIELD Move  to  the  last
       field.   REQ_LAST_PAGE  Move  to  the  last field.  REQ_LEFT_CHAR  Move
       left   in   field.     REQ_LEFT_FIELD Move    left    to    a    field.
       REQ_NEW_LINE   Insert  or  overlay  a new line.  REQ_NEXT_CHAR  Move to
       the  next  char.   REQ_NEXT_CHOICE     Display   next   field   choice.
       REQ_NEXT_FIELD Move to the next field.  REQ_NEXT_LINE  Move to the next
       line.   REQ_NEXT_PAGE  Move  to  the next page.  REQ_NEXT_PAGE  Move to
       the   next   page.    REQ_NEXT_WORD  Move    to    the    next    word.
       REQ_OVL_MODE   Enter overlay mode.  REQ_PREV_CHAR  Move to the previous
       char.      REQ_PREV_CHOICE     Display     previous    field    choice.
       REQ_PREV_FIELD Move to the previous field.  REQ_PREV_LINE  Move to  the
       previous    line.     REQ_PREV_PAGE  Move   to   the   previous   page.
       REQ_PREV_WORD  Move to the previous word.  REQ_RIGHT_CHAR Move right in
       field.      REQ_RIGHT_FIELD     Move     right     to     a      field.
       REQ_SCR_BCHAR  Scroll   field   backward   1   character.   REQ_SCR_BH‐
       PAGE Scroll field backward ½ page.  REQ_SCR_BLINE  Scroll  field  back‐
       ward   1   line.    REQ_SCR_BPAGE  Scroll   field   backward   1  page.
       REQ_SCR_FCHAR  Scroll field forward 1 character.  REQ_SCR_FHPAGE Scroll
       field forward ½ page.   REQ_SCR_FLINE  Scroll  field  forward  1  line.
       REQ_SCR_FPAGE  Scroll  field forward 1 page.  REQ_SCR_HBHALF Horizontal
       scroll field backward ½ line.  REQ_SCR_HBLINE Horizontal  scroll  field
       backward  1  line.   REQ_SCR_HFHALF Horizontal  scroll  field forward ½
       line.   REQ_SCR_HFLINE Horizontal  scroll   field   forward   1   line.
       REQ_SFIRST_FIELD    Move     to     the     sorted     first     field.
       REQ_SLAST_FIELD     Move     to     the     sorted     last      field.
       REQ_SNEXT_FIELD     Move      to     the     sorted     next     field.
       REQ_SPREV_FIELD     Move    to    the    sorted     previous     field.
       REQ_UP_CHAR    Move  up  in  field.  REQ_UP_FIELD   Move up to a field.
       REQ_VALIDATION Validate field.

       If the second argument is a printable character, the driver  places  it
       in  the  current  position  in  the current field.  If it is one of the
       forms requests listed above, that request is executed.

   Field Validation
       The form library makes updates  to  the  window  associated  with  form
       fields rather than directly to the field buffers.

       The  form  driver  provides  low-level control over updates to the form
       fields.  The form driver also provides for validating  modified  fields
       to  ensure  that  the contents meet whatever constraints an application
       may attach using set_field_type.

       You can validate a  field  without  making  any  changes  to  it  using
       REQ_VALIDATION.  The form driver also validates a field in these cases:

       •   a call to set_current_field attempts to move to a different field.

       •   a  call to set_current_page attempts to move to a different page of
           the form.

       •   a request attempts to move to a different field.

       •   a request attempts to move to a different page of the form.

       In each case, the move fails if the field is invalid.

       If the modified field is valid, the form  driver  copies  the  modified
       data from the window associated with the field to the field buffer.

   Mouse Handling
       If  the  second  argument  is the KEY_MOUSE special key, the associated
       mouse event is translated into one of the above  pre-defined  requests.
       Currently only clicks in the user window (e.g., inside the form display
       area or the decoration window) are handled.

       If you click above the display region of the form:

          a REQ_PREV_FIELD is generated for a single click,

          a REQ_PREV_PAGE is generated for a double-click and

          a REQ_FIRST_FIELD is generated for a triple-click.

       If you click below the display region of the form:

          a REQ_NEXT_FIELD is generated for a single click,

          a REQ_NEXT_PAGE is generated for a double-click and

          a REQ_LAST_FIELD is generated for a triple-click.

       If you click at an field inside the display area of the form:

          •   the form cursor is positioned to that field.

          •   If  you  double-click  a field, the form cursor is positioned to
              that field and E_UNKNOWN_COMMAND is returned.  This return value
              makes sense, because a double click usually means that an field-
              specific action should be returned.  It is exactly  the  purpose
              of this return value to signal that an application specific com‐
              mand should be executed.

          •   If  a  translation  into a request was done, form_driver returns
              the result of this request.

       If you clicked outside the user window or the mouse event could not  be
       translated into a form request an E_REQUEST_DENIED is returned.

   Application-defined Commands
       If  the  second argument is neither printable nor one of the above pre-
       defined form requests, the driver assumes it is an application-specific
       command and returns  E_UNKNOWN_COMMAND.   Application-defined  commands
       should  be  defined relative to MAX_COMMAND, the maximum value of these
       pre-defined requests.

RETURN VALUE
       form_driver returns one of the following error codes:

       E_OK The routine succeeded.

       E_BAD_ARGUMENT
            Routine detected an incorrect or out-of-range argument.

       E_BAD_STATE
            Routine was called from an initialization or termination function.

       E_NOT_POSTED
            The form has not been posted.

       E_INVALID_FIELD
            Contents of field is invalid.

       E_NOT_CONNECTED
            No fields are connected to the form.

       E_REQUEST_DENIED
            The form driver could not process the request.

       E_SYSTEM_ERROR
            System error occurred (see errno(3)).

       E_UNKNOWN_COMMAND
            The form driver code saw an unknown request code.

PORTABILITY
       These routines emulate the System V forms library.  They were not  sup‐
       ported on Version 7 or BSD versions.

AUTHORS
       Juergen Pfeifer.  Manual pages and adaptation for new curses by Eric S.
       Raymond.


ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:

       box; cbp-1 | cbp-1 l | l .  ATTRIBUTE TYPE ATTRIBUTE VALUE = Availabil‐
       ity   library/ncurses = Stability Uncommitted

SEE ALSO
       curses(3X),    form(3X),   form_fieldtype(3X),   form_field_buffer(3X),
       form_field_validation(3X), form_variables(3X), getch(3X)



NOTES
       Source code for open source software components in Oracle  Solaris  can
       be found at https://www.oracle.com/downloads/opensource/solaris-source-
       code-downloads.html.

       This software was built from source available at:
       https://github.com/oracle/solaris-userland

       The original community source was downloaded from:
       https://invisible-mirror.net/archives/ncurses/cur‐
       rent/ncurses-6.5-20250614.tgz

       Further information about this software can be found on the open source
       community website at https://invisible-island.net/ncurses/.

ncurses 6.5                       2024-04-20                   form_driver(3x)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3