1217309Snwhitehorn/* 2251843Sbapt * $Id: dlg_keys.h,v 1.32 2012/12/21 21:54:30 tom Exp $ 3217309Snwhitehorn * 4224014Snwhitehorn * dlg_keys.h -- runtime binding support for dialog 5217309Snwhitehorn * 6251843Sbapt * Copyright 2005-2011,2012 Thomas E. Dickey 7217309Snwhitehorn * 8217309Snwhitehorn * This program is free software; you can redistribute it and/or modify 9217309Snwhitehorn * it under the terms of the GNU Lesser General Public License, version 2.1 10217309Snwhitehorn * as published by the Free Software Foundation. 11217309Snwhitehorn * 12217309Snwhitehorn * This program is distributed in the hope that it will be useful, but 13217309Snwhitehorn * WITHOUT ANY WARRANTY; without even the implied warranty of 14217309Snwhitehorn * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15217309Snwhitehorn * Lesser General Public License for more details. 16217309Snwhitehorn * 17217309Snwhitehorn * You should have received a copy of the GNU Lesser General Public 18217309Snwhitehorn * License along with this program; if not, write to 19217309Snwhitehorn * Free Software Foundation, Inc. 20217309Snwhitehorn * 51 Franklin St., Fifth Floor 21217309Snwhitehorn * Boston, MA 02110, USA. 22217309Snwhitehorn */ 23217309Snwhitehorn 24217309Snwhitehorn#ifndef DLG_KEYS_H_included 25217309Snwhitehorn#define DLG_KEYS_H_included 1 26251843Sbapt/* *INDENT-OFF* */ 27217309Snwhitehorn 28217309Snwhitehorn#include <dialog.h> 29217309Snwhitehorn 30217309Snwhitehorn#ifdef USE_WIDE_CURSES 31217309Snwhitehorn#include <wctype.h> 32217309Snwhitehorn#define dlg_toupper(ch) towupper((wint_t)ch) 33217309Snwhitehorn#define dlg_isupper(ch) iswupper((wint_t)ch) 34217309Snwhitehorn#else 35251843Sbapt#define dlg_toupper(ch) (((ch) > 0 && (ch) <= 255) ? toupper(ch) : (ch)) 36217309Snwhitehorn#define dlg_isupper(ch) (isalpha(ch) && isupper(ch)) 37217309Snwhitehorn#endif 38217309Snwhitehorn 39217309Snwhitehorn#ifdef __cplusplus 40217309Snwhitehornextern "C" { 41217309Snwhitehorn#endif 42217309Snwhitehorn 43217309Snwhitehorntypedef struct { 44217309Snwhitehorn int is_function_key; 45217309Snwhitehorn int curses_key; 46217309Snwhitehorn int dialog_key; 47217309Snwhitehorn} DLG_KEYS_BINDING; 48217309Snwhitehorn 49251843Sbapt#define DLG_KEYS_DATA(dialog, curses) { (curses) >= KEY_MIN, curses, dialog } 50217309Snwhitehorn 51217309Snwhitehorn#define END_KEYS_BINDING { -1, 0, 0 } 52217309Snwhitehorn 53217309Snwhitehorn/* 54217309Snwhitehorn * Define dialog's internal function-keys past the range used by curses. 55217309Snwhitehorn */ 56217309Snwhitehorntypedef enum { 57217309Snwhitehorn DLGK_MIN = KEY_MAX + 1, 58217309Snwhitehorn /* predefined buttons */ 59217309Snwhitehorn DLGK_OK, 60217309Snwhitehorn DLGK_CANCEL, 61217309Snwhitehorn DLGK_EXTRA, 62217309Snwhitehorn DLGK_HELP, 63217309Snwhitehorn DLGK_ESC, 64217309Snwhitehorn /* moving from screen to screen (pages) */ 65217309Snwhitehorn DLGK_PAGE_FIRST, 66217309Snwhitehorn DLGK_PAGE_LAST, 67217309Snwhitehorn DLGK_PAGE_NEXT, 68217309Snwhitehorn DLGK_PAGE_PREV, 69217309Snwhitehorn /* moving within a list */ 70217309Snwhitehorn DLGK_ITEM_FIRST, 71217309Snwhitehorn DLGK_ITEM_LAST, 72217309Snwhitehorn DLGK_ITEM_NEXT, 73217309Snwhitehorn DLGK_ITEM_PREV, 74217309Snwhitehorn /* moving from field to field (or buttons) */ 75217309Snwhitehorn DLGK_FIELD_FIRST, 76217309Snwhitehorn DLGK_FIELD_LAST, 77217309Snwhitehorn DLGK_FIELD_NEXT, 78217309Snwhitehorn DLGK_FIELD_PREV, 79251843Sbapt /* moving from form-field to form-field (or buttons) */ 80251843Sbapt DLGK_FORM_FIRST, 81251843Sbapt DLGK_FORM_LAST, 82251843Sbapt DLGK_FORM_NEXT, 83251843Sbapt DLGK_FORM_PREV, 84217309Snwhitehorn /* moving within a grid */ 85217309Snwhitehorn DLGK_GRID_UP, 86217309Snwhitehorn DLGK_GRID_DOWN, 87217309Snwhitehorn DLGK_GRID_LEFT, 88217309Snwhitehorn DLGK_GRID_RIGHT, 89217309Snwhitehorn /* delete */ 90217309Snwhitehorn DLGK_DELETE_LEFT, 91217309Snwhitehorn DLGK_DELETE_RIGHT, 92217309Snwhitehorn DLGK_DELETE_ALL, 93217309Snwhitehorn /* special */ 94217309Snwhitehorn DLGK_ENTER, 95217309Snwhitehorn DLGK_BEGIN, 96217309Snwhitehorn DLGK_FINAL, 97217309Snwhitehorn DLGK_SELECT, 98224014Snwhitehorn DLGK_HELPFILE, 99217309Snwhitehorn DLGK_TRACE 100217309Snwhitehorn} DLG_KEYS_ENUM; 101217309Snwhitehorn 102217309Snwhitehorn#define is_DLGK_MOUSE(code) ((code) >= M_EVENT) 103217309Snwhitehorn#define DLGK_MOUSE(code) ((code) + M_EVENT) 104217309Snwhitehorn 105224014Snwhitehorn#define HELPKEY_BINDINGS \ 106224014Snwhitehorn DLG_KEYS_DATA( DLGK_HELPFILE, CHR_HELP ), \ 107224014Snwhitehorn DLG_KEYS_DATA( DLGK_HELPFILE, KEY_F(1) ), \ 108224014Snwhitehorn DLG_KEYS_DATA( DLGK_HELPFILE, KEY_HELP ) 109224014Snwhitehorn 110217309Snwhitehorn#define ENTERKEY_BINDINGS \ 111217309Snwhitehorn DLG_KEYS_DATA( DLGK_ENTER, '\n' ), \ 112217309Snwhitehorn DLG_KEYS_DATA( DLGK_ENTER, '\r' ), \ 113217309Snwhitehorn DLG_KEYS_DATA( DLGK_ENTER, KEY_ENTER ) 114217309Snwhitehorn 115217309Snwhitehorn/* ^U == 21 */ 116217309Snwhitehorn#define INPUTSTR_BINDINGS \ 117217309Snwhitehorn DLG_KEYS_DATA( DLGK_BEGIN, KEY_HOME ), \ 118217309Snwhitehorn DLG_KEYS_DATA( DLGK_DELETE_ALL, CHR_KILL ), \ 119217309Snwhitehorn DLG_KEYS_DATA( DLGK_DELETE_LEFT, CHR_BACKSPACE ), \ 120217309Snwhitehorn DLG_KEYS_DATA( DLGK_DELETE_LEFT, KEY_BACKSPACE ), \ 121217309Snwhitehorn DLG_KEYS_DATA( DLGK_DELETE_RIGHT, CHR_DELETE ), \ 122217309Snwhitehorn DLG_KEYS_DATA( DLGK_DELETE_RIGHT, KEY_DC ), \ 123217309Snwhitehorn DLG_KEYS_DATA( DLGK_FINAL, KEY_END ), \ 124217309Snwhitehorn DLG_KEYS_DATA( DLGK_GRID_LEFT, KEY_LEFT ), \ 125217309Snwhitehorn DLG_KEYS_DATA( DLGK_GRID_RIGHT, KEY_RIGHT ) 126217309Snwhitehorn 127251843Sbapt#define SCROLL_FKEY_BINDINGS \ 128251843Sbapt DLG_KEYS_DATA( DLGK_GRID_DOWN, KEY_DOWN ), \ 129251843Sbapt DLG_KEYS_DATA( DLGK_GRID_UP, KEY_UP ), \ 130251843Sbapt DLG_KEYS_DATA( DLGK_PAGE_FIRST, KEY_HOME ), \ 131251843Sbapt DLG_KEYS_DATA( DLGK_PAGE_LAST, KEY_END ), \ 132251843Sbapt DLG_KEYS_DATA( DLGK_PAGE_NEXT, KEY_NPAGE ), \ 133251843Sbapt DLG_KEYS_DATA( DLGK_PAGE_PREV, KEY_PPAGE ) 134251843Sbapt 135217309Snwhitehorn#define SCROLLKEY_BINDINGS \ 136251843Sbapt SCROLL_FKEY_BINDINGS, \ 137217309Snwhitehorn DLG_KEYS_DATA( DLGK_GRID_DOWN, 'J' ), \ 138217309Snwhitehorn DLG_KEYS_DATA( DLGK_GRID_DOWN, 'j' ), \ 139217309Snwhitehorn DLG_KEYS_DATA( DLGK_GRID_UP, 'K' ), \ 140217309Snwhitehorn DLG_KEYS_DATA( DLGK_GRID_UP, 'k' ), \ 141217309Snwhitehorn DLG_KEYS_DATA( DLGK_PAGE_FIRST, 'g' ), \ 142217309Snwhitehorn DLG_KEYS_DATA( DLGK_PAGE_LAST, 'G' ), \ 143217309Snwhitehorn DLG_KEYS_DATA( DLGK_PAGE_NEXT, 'F' ), \ 144217309Snwhitehorn DLG_KEYS_DATA( DLGK_PAGE_NEXT, 'f' ), \ 145217309Snwhitehorn DLG_KEYS_DATA( DLGK_PAGE_PREV, 'B' ), \ 146251843Sbapt DLG_KEYS_DATA( DLGK_PAGE_PREV, 'b' ) 147217309Snwhitehorn 148251843Sbapt#define TRAVERSE_BINDINGS \ 149251843Sbapt DLG_KEYS_DATA( DLGK_ENTER, ' ' ), \ 150251843Sbapt DLG_KEYS_DATA( DLGK_FIELD_NEXT, KEY_DOWN ), \ 151251843Sbapt DLG_KEYS_DATA( DLGK_FIELD_NEXT, KEY_RIGHT ), \ 152251843Sbapt DLG_KEYS_DATA( DLGK_FIELD_NEXT, TAB ), \ 153251843Sbapt DLG_KEYS_DATA( DLGK_FIELD_PREV, KEY_UP ), \ 154251843Sbapt DLG_KEYS_DATA( DLGK_FIELD_PREV, KEY_BTAB ), \ 155251843Sbapt DLG_KEYS_DATA( DLGK_FIELD_PREV, KEY_LEFT ) 156251843Sbapt 157217309Snwhitehornextern int dlg_lookup_key(WINDOW * /*win*/, int /*curses_key*/, int * /*dialog_key*/); 158217309Snwhitehornextern int dlg_result_key(int /*dialog_key*/, int /*fkey*/, int * /*resultp*/); 159217309Snwhitehornextern void dlg_register_buttons(WINDOW * /*win*/, const char * /*name*/, const char ** /*buttons*/); 160217309Snwhitehornextern void dlg_register_window(WINDOW * /*win*/, const char * /*name*/, DLG_KEYS_BINDING * /*binding*/); 161217309Snwhitehornextern void dlg_unregister_window(WINDOW * /*win*/); 162217309Snwhitehorn 163217309Snwhitehorn#ifdef HAVE_RC_FILE 164217309Snwhitehornextern int dlg_parse_bindkey(char * /*params*/); 165217309Snwhitehornextern void dlg_dump_keys(FILE * /*fp*/); 166251843Sbaptextern void dlg_dump_window_keys(FILE * /*fp*/, WINDOW * /*win*/); 167217309Snwhitehorn#endif 168217309Snwhitehorn 169217309Snwhitehorn#ifdef __cplusplus 170217309Snwhitehorn} 171217309Snwhitehorn#endif 172251843Sbapt/* *INDENT-ON* */ 173217309Snwhitehorn 174217309Snwhitehorn#endif /* DLG_KEYS_H_included */ 175