MirBSD manpage: menu_driver(3)

menu_driver(3)      UNIX Programmer's Manual       menu_driver(3)


     menu_driver - command-processing loop of the menu system


     #include <menu.h>
     int menu_driver(MENU *menu, int c);


     Once a menu has been posted (displayed), you should funnel
     input events to it through menu_driver.  This routine has
     three major input cases; either the input is a menu naviga-
     tion request, it's a printable ASCII character or it is the
     KEY_MOUSE special key associated with an mouse event. The
     menu driver requests are as follows:

          Move left to an item.

          Move right to an item.

          Move up to an item.

          Move down to an item.

          Scroll up a line.

          Scroll down a line.

          Scroll down a page.

          Scroll up a page.

          Move to the first item.

          Move to the last item.

          Move to the next item.

          Move to the previous item.


MirBSD #10-current     Printed 2022-12-23                       1

menu_driver(3)      UNIX Programmer's Manual       menu_driver(3)

          Select/deselect an item.

          Clear the menu pattern buffer.

          Delete the previous character from the pattern buffer.

          Move to the next item matching the pattern match.

          Move to the previous item matching the pattern match.

     If the second argument is a printable ASCII character, the
     code appends it to the pattern buffer and attempts to move
     to the next item matching the new pattern.  If there is no
     such match, menu_driver returns E_NO_MATCH and deletes the
     appended character from the buffer.

     If the second argument is one of the above pre-defined
     requests, the corresponding action is performed.

     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 win-
     dow (e.g. inside the menu display area or the decoration
     window) are handled. If you click above the display region
     of the menu, a REQ_SCR_ULINE is generated, if you doub-
     leclick a REQ_SCR_UPAGE is generated and if you tripleclick
     a REQ_FIRST_ITEM is generated. If you click below the
     display region of the menu, a REQ_SCR_DLINE is generated, if
     you doubleclick a REQ_SCR_DPAGE is generated and if you tri-
     pleclick a REQ_LAST_ITEM is generated. If you click at an
     item inside the display area of the menu, the menu cursor is
     positioned to that item. If you double-click at an item a
     REQ_TOGGLE_ITEM is generated and E_UNKNOWN_COMMAND is
     returned. This return value makes sense, because a double
     click usually means that an item-specific action should be
     returned. It's exactly the purpose of this return value to
     signal that an application specific command should be exe-
     cuted. If a translation into a request was done, menu_driver
     returns the result of this request. If you clicked outside
     the user window or the mouse event couldn't be translated
     into a menu request an E_REQUEST_DENIED is returned.

     If the second argument is neither printable ASCII nor one of
     the above pre-defined menu requests or KEY_MOUSE, the drive
     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.

MirBSD #10-current     Printed 2022-12-23                       2

menu_driver(3)      UNIX Programmer's Manual       menu_driver(3)


     menu_driver return one of the following error codes:

     E_OK The routine succeeded.

          System error occurred (see errno).

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

          Routine was called from an initialization or termina-
          tion function.

          The menu has not been posted.

          The menu driver code saw an unknown request code.

          Character failed to match.

          The menu driver could not process the request.


     curses(3), menu(3).


     The header file <menu.h> automatically includes the header
     files <curses.h>.


     These routines emulate the System V menu library.  They were
     not supported on Version 7 or BSD versions. The support for
     mouse events is ncurses specific.


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

MirBSD #10-current     Printed 2022-12-23                       3

Generated on 2022-12-24 01:00:14 by $MirOS: src/scripts/roff2htm,v 1.113 2022/12/21 23:14:31 tg Exp $ — This product includes material provided by mirabilos.

These manual pages and other documentation are copyrighted by their respective writers; their sources are available at the project’s CVSweb, AnonCVS and other mirrors. The rest is Copyright © 2002–2022 MirBSD.

This manual page’s HTML representation is supposed to be valid XHTML/1.1; if not, please send a bug report — diffs preferred.

Kontakt / Impressum & Datenschutzerklärung