diff --git a/.gitignore b/.gitignore index ff9b350..1ccda00 100644 --- a/.gitignore +++ b/.gitignore @@ -52,7 +52,6 @@ vgcore.* doxygen/html *.crl *.sh -src/include/lib3270/actions.h doxygen/doxyfile win32-configure* ValgrindOut.xml diff --git a/Makefile.in b/Makefile.in index a32e495..c223eea 100644 --- a/Makefile.in +++ b/Makefile.in @@ -33,6 +33,7 @@ INSTALL_PACKAGES=@INSTALL_PACKAGES@ SOURCES= \ $(wildcard src/core/*.c) \ $(wildcard src/core/keyboard/*.c) \ + $(wildcard src/core/actions/*.c) \ $(wildcard src/core/ft/*.c) \ $(wildcard src/core/@OSNAME@/*.rc) \ $(wildcard src/core/@OSNAME@/*.c) \ @@ -325,23 +326,6 @@ $(BASEDIR)/.tmp/$(LIBNAME)/fallbacks.c: \ -c src/core/X3270.xad \ $@ -$(BASEDIR)/src/include/lib3270/actions.h: \ - src/include/lib3270/action_table.h \ - $(wildcard src/mkactions/*.c) - - @$(MKDIR) $(dir $@) - @$(MKDIR) $(BINDIR) - @echo $< ... - - @$(HOST_CC) \ - -g \ - -I$(BASEDIR)/src/include \ - -DBUILD_DATE=`date +%Y%m%d` \ - -o $(BINDIR)/mkactions@EXEEXT@ \ - $(wildcard src/mkactions/*.c) - - @$(BINDIR)/mkactions@EXEEXT@ -o $@ - $(POTDIR)/lib3270.pot: \ $(foreach SRC, $(basename $(SOURCES)), $(POTDIR)/$(LIBNAME)/$(SRC).pot) diff --git a/lib3270.cbp b/lib3270.cbp index ac48d80..69bd884 100644 --- a/lib3270.cbp +++ b/lib3270.cbp @@ -41,7 +41,10 @@ - + + + @@ -213,6 +216,7 @@ + diff --git a/src/core/actions.c b/src/core/actions.c deleted file mode 100644 index dd9c55a..0000000 --- a/src/core/actions.c +++ /dev/null @@ -1,96 +0,0 @@ -/* - * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 - * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a - * aplicativos mainframe. Registro no INPI sob o nome G3270. Registro no INPI sob o nome G3270. - * - * Copyright (C) <2008> - * - * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob - * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela - * Free Software Foundation. - * - * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER - * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO - * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para - * obter mais detalhes. - * - * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este - * programa; se não, escreva para a Free Software Foundation, Inc., 59 Temple - * Place, Suite 330, Boston, MA, 02111-1307, USA - * - * Este programa está nomeado como actions.c e possui - linhas de código. - * - * Contatos: - * - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) - * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) - * - */ - -#include -#include -#include - -/*---[ Globals ]--------------------------------------------------------------------------------------------------------------*/ - -/*---[ Statics ]--------------------------------------------------------------------------------------------------------------*/ - -/*---[ Implement ]------------------------------------------------------------------------------------------------------------*/ - -/** - * @brief Get LIB3270 action table; - * - */ - LIB3270_EXPORT const LIB3270_ACTION_ENTRY * lib3270_get_action_table() - { - #undef DECLARE_LIB3270_ACTION - #undef DECLARE_LIB3270_CLEAR_SELECTION_ACTION - #undef DECLARE_LIB3270_KEY_ACTION - #undef DECLARE_LIB3270_CURSOR_ACTION - #undef DECLARE_LIB3270_FKEY_ACTION - - #define DECLARE_LIB3270_ACTION( name, description ) { #name, description, lib3270_ ## name }, - #define DECLARE_LIB3270_CLEAR_SELECTION_ACTION( name, description ) { #name, description, lib3270_ ## name }, - #define DECLARE_LIB3270_KEY_ACTION( name, description ) { #name, description, lib3270_ ## name }, - #define DECLARE_LIB3270_CURSOR_ACTION( name, description ) { #name, description, lib3270_cursor_ ## name }, - #define DECLARE_LIB3270_FKEY_ACTION( name, description ) // name - - static const LIB3270_ACTION_ENTRY actions[] = - { - #include - { NULL, NULL, NULL } - }; - - return actions; - } - - -/** - * @brief Launch an action by name. - * - * @param name Name of the action to launch. - * - * @return 0 if ok, error code if not (sets errno). - * - */ -LIB3270_EXPORT int lib3270_action(H3270 *hSession, const char *name) -{ - const LIB3270_ACTION_ENTRY *actions = lib3270_get_action_table(); - size_t f; - - CHECK_SESSION_HANDLE(hSession); - - for(f=0; actions[f].name; f++) - { - if(!strcasecmp(name,actions[f].name)) - { - lib3270_trace_event(hSession,"Action: %s\n",actions[f].name); - return actions[f].call(hSession); - } - - } - - lib3270_trace_event(hSession,"Unknown action %s\n",name); - return errno = ENOENT; - -} diff --git a/src/core/actions/actions.c b/src/core/actions/actions.c new file mode 100644 index 0000000..84e8a42 --- /dev/null +++ b/src/core/actions/actions.c @@ -0,0 +1,64 @@ +/* + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a + * aplicativos mainframe. Registro no INPI sob o nome G3270. Registro no INPI sob o nome G3270. + * + * Copyright (C) <2008> + * + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela + * Free Software Foundation. + * + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para + * obter mais detalhes. + * + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este + * programa; se não, escreva para a Free Software Foundation, Inc., 59 Temple + * Place, Suite 330, Boston, MA, 02111-1307, USA + * + * Este programa está nomeado como actions.c e possui - linhas de código. + * + * Contatos: + * + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) + * + */ + +#include +#include +#include + +/*---[ Implement ]------------------------------------------------------------------------------------------------------------*/ + +/** + * @brief Launch an action by name. + * + * @param name Name of the action to launch. + * + * @return 0 if ok, error code if not (sets errno). + * + */ +LIB3270_EXPORT int lib3270_action(H3270 *hSession, const char *name) +{ + const LIB3270_ACTION_ENTRY *actions = lib3270_get_action_table(); + size_t f; + + CHECK_SESSION_HANDLE(hSession); + + for(f=0; actions[f].name; f++) + { + if(!strcasecmp(name,actions[f].name)) + { + lib3270_trace_event(hSession,"Action: %s\n",actions[f].name); + return actions[f].call(hSession); + } + + } + + lib3270_trace_event(hSession,"Unknown action %s\n",name); + return errno = ENOENT; + +} diff --git a/src/core/actions/table.c b/src/core/actions/table.c new file mode 100644 index 0000000..bf32ef0 --- /dev/null +++ b/src/core/actions/table.c @@ -0,0 +1,462 @@ +/* + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a + * aplicativos mainframe. Registro no INPI sob o nome G3270. Registro no INPI sob o nome G3270. + * + * Copyright (C) <2008> + * + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela + * Free Software Foundation. + * + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para + * obter mais detalhes. + * + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este + * programa; se não, escreva para a Free Software Foundation, Inc., 59 Temple + * Place, Suite 330, Boston, MA, 02111-1307, USA + * + * Este programa está nomeado como actions.c e possui - linhas de código. + * + * Contatos: + * + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) + * + */ + +#include +#include +#include +#include + +/*---[ Implement ]------------------------------------------------------------------------------------------------------------*/ + + static int save_all(H3270 *hSession) + { + return lib3270_save_all(hSession,NULL); + } + + static int paste_file(H3270 *hSession) + { + return lib3270_load(hSession,NULL); + } + + static int print(H3270 *hSession) + { + return lib3270_print(hSession); + } + + static int connect_host(H3270 *hSession) + { + return lib3270_reconnect(hSession,0); + } + +/** + * @brief Get LIB3270 action table; + * + */ + LIB3270_EXPORT const LIB3270_ACTION_ENTRY * lib3270_get_action_table() + { + + static const LIB3270_ACTION_ENTRY actions[] = + { + // + // Network actions + // + { + "connect", + NULL, + "connect", + NULL, + N_( "Connect to host." ), + connect_host + }, + + { + "disconnect", + NULL, + "disconnect", + NULL, + N_( "Disconnect from host." ), + lib3270_disconnect + }, + + // + // Navigation actions + // + { + "up", + "Up", + NULL, + NULL, + N_( "Cursor up 1 position." ), + lib3270_cursor_up + }, + + { + "down", + "Down", + NULL, + NULL, + N_( "Cursor down 1 position." ), + lib3270_cursor_down + }, + + { + "left", + "Left", + NULL, + NULL, + N_( "Cursor left 1 position." ), + lib3270_cursor_left + }, + + { + "right", + "Right", + NULL, + NULL, + N_( "Cursor right 1 position." ), + lib3270_cursor_right + }, + + { + "newline", + "Control_R", + NULL, + NULL, + N_( "Cursor to first field on next line or any lines after that." ), + lib3270_newline + }, + + { + "previousword", + NULL, + NULL, + NULL, + N_( "Cursor to previous word." ), + lib3270_previousword + }, + + { + "nextword", + NULL, + NULL, + NULL, + N_( "Cursor to next unprotected word." ), + lib3270_nextword + }, + + // + // Save/load actions + // + { + "saveall", + NULL, + "document-save", + NULL, + N_( "Save screen." ), + save_all + }, + + { + "loadfile", + NULL, + "document-load", + NULL, + N_( "Paste file." ), + paste_file + }, + + // + // Selection actions + // + { + "select_all", + "a", + "edit-select-all", + NULL, + NULL, + lib3270_select_all + }, + + { + "select_field", + "f", + NULL, + NULL, + N_( "Select Field" ), + lib3270_select_field + }, + + { + "unselect", + NULL, + NULL, + NULL, + N_( "Remove selection" ), + lib3270_unselect + }, + + { + "reselect", + "r", + NULL, + NULL, + N_( "Reselect"), + lib3270_reselect + }, + + + // + // Field actions. + // + { + "fieldend", + NULL, + NULL, + NULL, + N_( "Move the cursor to the first blank after the last nonblank in the field." ), + lib3270_fieldend + }, + + { + "firstfield", + "Home", + "go-first", + NULL, + N_( "Move to first unprotected field on screen." ), + lib3270_firstfield + }, + + { + "nextfield", + "Tab", + "go-next", + NULL, + N_( "Tab forward to next field." ), + lib3270_nextfield + }, + + { + "previousfield", + "ISO_Left_Tab", + "go-previous", + NULL, + N_( "Tab backward to previous field." ), + lib3270_previousfield + }, + + + // + // Erase actions. + // + { + "deleteword", + "w", + NULL, + NULL, + N_( "Backspaces the cursor until it hits the front of a word." ), + lib3270_deleteword + }, + + { + "deletefield", + "u", + NULL, + NULL, + N_( "Delete field" ), + lib3270_deletefield + }, + + + { + "eraseinput", + NULL, + NULL, + NULL, + NULL, + lib3270_eraseinput + }, + + { + "eraseeof", + "End", + NULL, + NULL, + N_( "Erase End Of Field Key." ), + lib3270_eraseeof + }, + + { + "eraseeol", + NULL, + NULL, + NULL, + N_( "Erase End Of Line Key." ), + lib3270_eraseeol + }, + + { + "erase", + "BackSpace", + NULL, + NULL, + NULL, + lib3270_erase + }, + + // + // Keyboard actions + // + { + "enter", + NULL, + NULL, + NULL, + N_( "Send an \"Enter\" action." ), + lib3270_enter + }, + + + { + "kybdreset", + "Escape", + NULL, + NULL, + NULL, + lib3270_kybdreset + }, + + { + "clear", + NULL, + NULL, + NULL, + N_( "Clear AID key" ), + lib3270_clear + }, + + + { + "delete", + "Delete", + NULL, + NULL, + NULL, + lib3270_delete + }, + + { + "dup", + "KP_Multiply", + NULL, + NULL, + N_( "DUP key" ), + lib3270_dup + }, + + { + "fieldmark", + NULL, + NULL, + NULL, + N_( "FM key" ), + lib3270_fieldmark + }, + + { + "backspace", + NULL, + NULL, + NULL, + N_( "3270-style backspace." ), + lib3270_backspace + }, + + { + "attn", + "Escape", + NULL, + NULL, + "ATTN key, per RFC 2355. Sends IP, regardless.", + lib3270_attn + }, + + { + "break", + NULL, + NULL, + NULL, + NULL, + lib3270_break + }, + + { + "pastenext", + "v", + NULL, + NULL, + NULL, + lib3270_paste_next + }, + + { + "sysreq", + "Print", + NULL, + NULL, + NULL, + lib3270_sysreq + }, + + // + // Misc actions + // + { + "print", + "Print", + "document-print", + NULL, + NULL, + print + }, + + // + // Test actions + // + + { + "testpattern", + NULL, + NULL, + NULL, + NULL, + lib3270_testpattern + }, + + { + "charsettable", + NULL, + NULL, + NULL, + NULL, + lib3270_charsettable + }, + + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL + } + }; + + return actions; + } + diff --git a/src/core/charset.c b/src/core/charset.c index cc0621a..abd66cc 100644 --- a/src/core/charset.c +++ b/src/core/charset.c @@ -35,7 +35,7 @@ */ #include -#include +#include #include #include #include diff --git a/src/core/paste.c b/src/core/paste.c index 9cc3b7a..3a098ab 100644 --- a/src/core/paste.c +++ b/src/core/paste.c @@ -318,7 +318,7 @@ LIB3270_EXPORT int lib3270_set_string(H3270 *hSession, const unsigned char *str, return rc; } -LIB3270_EXPORT int lib3270_paste(H3270 *h, const unsigned char *str) +LIB3270_EXPORT int lib3270_paste_text(H3270 *h, const unsigned char *str) { int sz; CHECK_SESSION_HANDLE(h); @@ -356,7 +356,7 @@ LIB3270_EXPORT int lib3270_paste(H3270 *h, const unsigned char *str) return 0; } -LIB3270_EXPORT int lib3270_pastenext(H3270 *hSession) +LIB3270_EXPORT int lib3270_paste_next(H3270 *hSession) { char * ptr; int rc; @@ -372,7 +372,7 @@ LIB3270_EXPORT int lib3270_pastenext(H3270 *hSession) ptr = hSession->paste_buffer; hSession->paste_buffer = NULL; - rc = lib3270_paste(hSession,(unsigned char *) ptr); + rc = lib3270_paste_text(hSession,(unsigned char *) ptr); lib3270_free(ptr); return rc; diff --git a/src/include/X11keysym.h b/src/include/X11keysym.h new file mode 100644 index 0000000..7c086ef --- /dev/null +++ b/src/include/X11keysym.h @@ -0,0 +1,217 @@ +/* + * Copyright 1999 by Paul Mattes. + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation. + * + * c3270, s3270 and tcl3270 are distributed in the hope that they will + * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the file LICENSE + * for more details. + */ + +/* X11 keysyms used by c3270, s3270 and tcl3270 */ + +#if !defined(_x11_keysym_h) /*[*/ +#define _x11_keysym_h 1 + +/* Latin-1 Keysyms */ +#define XK_space 0x020 +#define XK_exclam 0x021 +#define XK_quotedbl 0x022 +#define XK_numbersign 0x023 +#define XK_dollar 0x024 +#define XK_percent 0x025 +#define XK_ampersand 0x026 +#define XK_apostrophe 0x027 +#define XK_quoteright 0x027 +#define XK_parenleft 0x028 +#define XK_parenright 0x029 +#define XK_asterisk 0x02a +#define XK_plus 0x02b +#define XK_comma 0x02c +#define XK_minus 0x02d +#define XK_period 0x02e +#define XK_slash 0x02f +#define XK_0 0x030 +#define XK_1 0x031 +#define XK_2 0x032 +#define XK_3 0x033 +#define XK_4 0x034 +#define XK_5 0x035 +#define XK_6 0x036 +#define XK_7 0x037 +#define XK_8 0x038 +#define XK_9 0x039 +#define XK_colon 0x03a +#define XK_semicolon 0x03b +#define XK_less 0x03c +#define XK_equal 0x03d +#define XK_greater 0x03e +#define XK_question 0x03f +#define XK_at 0x040 +#define XK_A 0x041 +#define XK_B 0x042 +#define XK_C 0x043 +#define XK_D 0x044 +#define XK_E 0x045 +#define XK_F 0x046 +#define XK_G 0x047 +#define XK_H 0x048 +#define XK_I 0x049 +#define XK_J 0x04a +#define XK_K 0x04b +#define XK_L 0x04c +#define XK_M 0x04d +#define XK_N 0x04e +#define XK_O 0x04f +#define XK_P 0x050 +#define XK_Q 0x051 +#define XK_R 0x052 +#define XK_S 0x053 +#define XK_T 0x054 +#define XK_U 0x055 +#define XK_V 0x056 +#define XK_W 0x057 +#define XK_X 0x058 +#define XK_Y 0x059 +#define XK_Z 0x05a +#define XK_bracketleft 0x05b +#define XK_backslash 0x05c +#define XK_bracketright 0x05d +#define XK_asciicircum 0x05e +#define XK_underscore 0x05f +#define XK_grave 0x060 +#define XK_quoteleft 0x060 +#define XK_a 0x061 +#define XK_b 0x062 +#define XK_c 0x063 +#define XK_d 0x064 +#define XK_e 0x065 +#define XK_f 0x066 +#define XK_g 0x067 +#define XK_h 0x068 +#define XK_i 0x069 +#define XK_j 0x06a +#define XK_k 0x06b +#define XK_l 0x06c +#define XK_m 0x06d +#define XK_n 0x06e +#define XK_o 0x06f +#define XK_p 0x070 +#define XK_q 0x071 +#define XK_r 0x072 +#define XK_s 0x073 +#define XK_t 0x074 +#define XK_u 0x075 +#define XK_v 0x076 +#define XK_w 0x077 +#define XK_x 0x078 +#define XK_y 0x079 +#define XK_z 0x07a +#define XK_braceleft 0x07b +#define XK_bar 0x07c +#define XK_braceright 0x07d +#define XK_asciitilde 0x07e +#define XK_nobreakspace 0x0a0 +#define XK_exclamdown 0x0a1 +#define XK_cent 0x0a2 +#define XK_sterling 0x0a3 +#define XK_currency 0x0a4 +#define XK_yen 0x0a5 +#define XK_brokenbar 0x0a6 +#define XK_section 0x0a7 +#define XK_diaeresis 0x0a8 +#define XK_copyright 0x0a9 +#define XK_ordfeminine 0x0aa +#define XK_guillemotleft 0x0ab +#define XK_notsign 0x0ac +#define XK_hyphen 0x0ad +#define XK_registered 0x0ae +#define XK_macron 0x0af +#define XK_degree 0x0b0 +#define XK_plusminus 0x0b1 +#define XK_twosuperior 0x0b2 +#define XK_threesuperior 0x0b3 +#define XK_acute 0x0b4 +#define XK_mu 0x0b5 +#define XK_paragraph 0x0b6 +#define XK_periodcentered 0x0b7 +#define XK_cedilla 0x0b8 +#define XK_onesuperior 0x0b9 +#define XK_masculine 0x0ba +#define XK_guillemotright 0x0bb +#define XK_onequarter 0x0bc +#define XK_onehalf 0x0bd +#define XK_threequarters 0x0be +#define XK_questiondown 0x0bf +#define XK_Agrave 0x0c0 +#define XK_Aacute 0x0c1 +#define XK_Acircumflex 0x0c2 +#define XK_Atilde 0x0c3 +#define XK_Adiaeresis 0x0c4 +#define XK_Aring 0x0c5 +#define XK_AE 0x0c6 +#define XK_Ccedilla 0x0c7 +#define XK_Egrave 0x0c8 +#define XK_Eacute 0x0c9 +#define XK_Ecircumflex 0x0ca +#define XK_Ediaeresis 0x0cb +#define XK_Igrave 0x0cc +#define XK_Iacute 0x0cd +#define XK_Icircumflex 0x0ce +#define XK_Idiaeresis 0x0cf +#define XK_ETH 0x0d0 +#define XK_Eth 0x0d0 +#define XK_Ntilde 0x0d1 +#define XK_Ograve 0x0d2 +#define XK_Oacute 0x0d3 +#define XK_Ocircumflex 0x0d4 +#define XK_Otilde 0x0d5 +#define XK_Odiaeresis 0x0d6 +#define XK_multiply 0x0d7 +#define XK_Ooblique 0x0d8 +#define XK_Ugrave 0x0d9 +#define XK_Uacute 0x0da +#define XK_Ucircumflex 0x0db +#define XK_Udiaeresis 0x0dc +#define XK_Yacute 0x0dd +#define XK_THORN 0x0de +#define XK_Thorn 0x0de +#define XK_ssharp 0x0df +#define XK_agrave 0x0e0 +#define XK_aacute 0x0e1 +#define XK_acircumflex 0x0e2 +#define XK_atilde 0x0e3 +#define XK_adiaeresis 0x0e4 +#define XK_aring 0x0e5 +#define XK_ae 0x0e6 +#define XK_ccedilla 0x0e7 +#define XK_egrave 0x0e8 +#define XK_eacute 0x0e9 +#define XK_ecircumflex 0x0ea +#define XK_ediaeresis 0x0eb +#define XK_igrave 0x0ec +#define XK_iacute 0x0ed +#define XK_icircumflex 0x0ee +#define XK_idiaeresis 0x0ef +#define XK_eth 0x0f0 +#define XK_ntilde 0x0f1 +#define XK_ograve 0x0f2 +#define XK_oacute 0x0f3 +#define XK_ocircumflex 0x0f4 +#define XK_otilde 0x0f5 +#define XK_odiaeresis 0x0f6 +#define XK_division 0x0f7 +#define XK_oslash 0x0f8 +#define XK_ugrave 0x0f9 +#define XK_uacute 0x0fa +#define XK_ucircumflex 0x0fb +#define XK_udiaeresis 0x0fc +#define XK_yacute 0x0fd +#define XK_thorn 0x0fe +#define XK_ydiaeresis 0x0ff + +#endif /*]*/ diff --git a/src/include/lib3270/X11keysym.h b/src/include/lib3270/X11keysym.h deleted file mode 100644 index 7c086ef..0000000 --- a/src/include/lib3270/X11keysym.h +++ /dev/null @@ -1,217 +0,0 @@ -/* - * Copyright 1999 by Paul Mattes. - * Permission to use, copy, modify, and distribute this software and its - * documentation for any purpose and without fee is hereby granted, - * provided that the above copyright notice appear in all copies and that - * both that copyright notice and this permission notice appear in - * supporting documentation. - * - * c3270, s3270 and tcl3270 are distributed in the hope that they will - * be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the file LICENSE - * for more details. - */ - -/* X11 keysyms used by c3270, s3270 and tcl3270 */ - -#if !defined(_x11_keysym_h) /*[*/ -#define _x11_keysym_h 1 - -/* Latin-1 Keysyms */ -#define XK_space 0x020 -#define XK_exclam 0x021 -#define XK_quotedbl 0x022 -#define XK_numbersign 0x023 -#define XK_dollar 0x024 -#define XK_percent 0x025 -#define XK_ampersand 0x026 -#define XK_apostrophe 0x027 -#define XK_quoteright 0x027 -#define XK_parenleft 0x028 -#define XK_parenright 0x029 -#define XK_asterisk 0x02a -#define XK_plus 0x02b -#define XK_comma 0x02c -#define XK_minus 0x02d -#define XK_period 0x02e -#define XK_slash 0x02f -#define XK_0 0x030 -#define XK_1 0x031 -#define XK_2 0x032 -#define XK_3 0x033 -#define XK_4 0x034 -#define XK_5 0x035 -#define XK_6 0x036 -#define XK_7 0x037 -#define XK_8 0x038 -#define XK_9 0x039 -#define XK_colon 0x03a -#define XK_semicolon 0x03b -#define XK_less 0x03c -#define XK_equal 0x03d -#define XK_greater 0x03e -#define XK_question 0x03f -#define XK_at 0x040 -#define XK_A 0x041 -#define XK_B 0x042 -#define XK_C 0x043 -#define XK_D 0x044 -#define XK_E 0x045 -#define XK_F 0x046 -#define XK_G 0x047 -#define XK_H 0x048 -#define XK_I 0x049 -#define XK_J 0x04a -#define XK_K 0x04b -#define XK_L 0x04c -#define XK_M 0x04d -#define XK_N 0x04e -#define XK_O 0x04f -#define XK_P 0x050 -#define XK_Q 0x051 -#define XK_R 0x052 -#define XK_S 0x053 -#define XK_T 0x054 -#define XK_U 0x055 -#define XK_V 0x056 -#define XK_W 0x057 -#define XK_X 0x058 -#define XK_Y 0x059 -#define XK_Z 0x05a -#define XK_bracketleft 0x05b -#define XK_backslash 0x05c -#define XK_bracketright 0x05d -#define XK_asciicircum 0x05e -#define XK_underscore 0x05f -#define XK_grave 0x060 -#define XK_quoteleft 0x060 -#define XK_a 0x061 -#define XK_b 0x062 -#define XK_c 0x063 -#define XK_d 0x064 -#define XK_e 0x065 -#define XK_f 0x066 -#define XK_g 0x067 -#define XK_h 0x068 -#define XK_i 0x069 -#define XK_j 0x06a -#define XK_k 0x06b -#define XK_l 0x06c -#define XK_m 0x06d -#define XK_n 0x06e -#define XK_o 0x06f -#define XK_p 0x070 -#define XK_q 0x071 -#define XK_r 0x072 -#define XK_s 0x073 -#define XK_t 0x074 -#define XK_u 0x075 -#define XK_v 0x076 -#define XK_w 0x077 -#define XK_x 0x078 -#define XK_y 0x079 -#define XK_z 0x07a -#define XK_braceleft 0x07b -#define XK_bar 0x07c -#define XK_braceright 0x07d -#define XK_asciitilde 0x07e -#define XK_nobreakspace 0x0a0 -#define XK_exclamdown 0x0a1 -#define XK_cent 0x0a2 -#define XK_sterling 0x0a3 -#define XK_currency 0x0a4 -#define XK_yen 0x0a5 -#define XK_brokenbar 0x0a6 -#define XK_section 0x0a7 -#define XK_diaeresis 0x0a8 -#define XK_copyright 0x0a9 -#define XK_ordfeminine 0x0aa -#define XK_guillemotleft 0x0ab -#define XK_notsign 0x0ac -#define XK_hyphen 0x0ad -#define XK_registered 0x0ae -#define XK_macron 0x0af -#define XK_degree 0x0b0 -#define XK_plusminus 0x0b1 -#define XK_twosuperior 0x0b2 -#define XK_threesuperior 0x0b3 -#define XK_acute 0x0b4 -#define XK_mu 0x0b5 -#define XK_paragraph 0x0b6 -#define XK_periodcentered 0x0b7 -#define XK_cedilla 0x0b8 -#define XK_onesuperior 0x0b9 -#define XK_masculine 0x0ba -#define XK_guillemotright 0x0bb -#define XK_onequarter 0x0bc -#define XK_onehalf 0x0bd -#define XK_threequarters 0x0be -#define XK_questiondown 0x0bf -#define XK_Agrave 0x0c0 -#define XK_Aacute 0x0c1 -#define XK_Acircumflex 0x0c2 -#define XK_Atilde 0x0c3 -#define XK_Adiaeresis 0x0c4 -#define XK_Aring 0x0c5 -#define XK_AE 0x0c6 -#define XK_Ccedilla 0x0c7 -#define XK_Egrave 0x0c8 -#define XK_Eacute 0x0c9 -#define XK_Ecircumflex 0x0ca -#define XK_Ediaeresis 0x0cb -#define XK_Igrave 0x0cc -#define XK_Iacute 0x0cd -#define XK_Icircumflex 0x0ce -#define XK_Idiaeresis 0x0cf -#define XK_ETH 0x0d0 -#define XK_Eth 0x0d0 -#define XK_Ntilde 0x0d1 -#define XK_Ograve 0x0d2 -#define XK_Oacute 0x0d3 -#define XK_Ocircumflex 0x0d4 -#define XK_Otilde 0x0d5 -#define XK_Odiaeresis 0x0d6 -#define XK_multiply 0x0d7 -#define XK_Ooblique 0x0d8 -#define XK_Ugrave 0x0d9 -#define XK_Uacute 0x0da -#define XK_Ucircumflex 0x0db -#define XK_Udiaeresis 0x0dc -#define XK_Yacute 0x0dd -#define XK_THORN 0x0de -#define XK_Thorn 0x0de -#define XK_ssharp 0x0df -#define XK_agrave 0x0e0 -#define XK_aacute 0x0e1 -#define XK_acircumflex 0x0e2 -#define XK_atilde 0x0e3 -#define XK_adiaeresis 0x0e4 -#define XK_aring 0x0e5 -#define XK_ae 0x0e6 -#define XK_ccedilla 0x0e7 -#define XK_egrave 0x0e8 -#define XK_eacute 0x0e9 -#define XK_ecircumflex 0x0ea -#define XK_ediaeresis 0x0eb -#define XK_igrave 0x0ec -#define XK_iacute 0x0ed -#define XK_icircumflex 0x0ee -#define XK_idiaeresis 0x0ef -#define XK_eth 0x0f0 -#define XK_ntilde 0x0f1 -#define XK_ograve 0x0f2 -#define XK_oacute 0x0f3 -#define XK_ocircumflex 0x0f4 -#define XK_otilde 0x0f5 -#define XK_odiaeresis 0x0f6 -#define XK_division 0x0f7 -#define XK_oslash 0x0f8 -#define XK_ugrave 0x0f9 -#define XK_uacute 0x0fa -#define XK_ucircumflex 0x0fb -#define XK_udiaeresis 0x0fc -#define XK_yacute 0x0fd -#define XK_thorn 0x0fe -#define XK_ydiaeresis 0x0ff - -#endif /*]*/ diff --git a/src/include/lib3270/action_table.h b/src/include/lib3270/action_table.h index 7fb6097..d303c32 100644 --- a/src/include/lib3270/action_table.h +++ b/src/include/lib3270/action_table.h @@ -29,6 +29,8 @@ * */ + #error Deprecated + /* * Action call table. * diff --git a/src/include/lib3270/actions.h b/src/include/lib3270/actions.h new file mode 100644 index 0000000..414d31a --- /dev/null +++ b/src/include/lib3270/actions.h @@ -0,0 +1,467 @@ +/* + * Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a + * aplicativos mainframe. Registro no INPI sob o nome G3270. Registro no INPI sob o nome G3270. + * + * Copyright (C) <2008> + * + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela + * Free Software Foundation. + * + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para + * obter mais detalhes. + * + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin + * St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Contatos: + * + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) + * + */ + +#ifndef LIB3270_ACTIONS_H_INCLUDED + + #define LIB3270_ACTIONS_H_INCLUDED 1 + +#ifdef __cplusplus + extern "C" { +#endif + + typedef struct _lib3270_action_entry + { + const char *name; ///< @brief Action name. + const char *key; ///< @brief Default key (or NULL if no default). + const char *icon; ///< @brief Icon name (from https://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html) + const char *label; ///< @brief Label (or NULL). + const char *tooltip; ///< @brief Description (or NULL). + int (*call)(H3270 *hSession); ///< @brief lib3270 associated method. + } LIB3270_ACTION_ENTRY; + +/** + * + * @brief Send an "Enter" action. + * + * @param hSession TN3270 Session handle. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_enter(H3270 *hSession); + +/** + * + * @brief + * + * @param hSession TN3270 Session handle. + * @param keycode Number of the pfkey to activate. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_pfkey(H3270 *hSession, int keycode); + +/** + * + * @brief + * + * @param hSession TN3270 Session handle. + * @param keycode Number of the pakey to activate. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_pakey(H3270 *hSession, int keycode); + +/** + * + * @brief Cursor up 1 position. + * + * @param hSession TN3270 Session handle. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_cursor_up(H3270 *hSession); + +/** + * + * @brief Cursor down 1 position. + * + * @param hSession TN3270 Session handle. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_cursor_down(H3270 *hSession); + +/** + * + * @brief Cursor left 1 position. + * + * @param hSession TN3270 Session handle. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_cursor_left(H3270 *hSession); + +/** + * + * @brief Cursor right 1 position. + * + * @param hSession TN3270 Session handle. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_cursor_right(H3270 *hSession); + +/** + * + * @brief Cursor to first field on next line or any lines after that. + * + * @param hSession TN3270 Session handle. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_newline(H3270 *hSession); + +/** + * + * @brief + * + * @param hSession TN3270 Session handle. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_kybdreset(H3270 *hSession); + +/** + * + * @brief Clear AID key + * + * @param hSession TN3270 Session handle. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_clear(H3270 *hSession); + +/** + * + * @brief + * + * @param hSession TN3270 Session handle. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_eraseinput(H3270 *hSession); + +/** + * + * @brief + * + * @param hSession TN3270 Session handle. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_select_field(H3270 *hSession); + +/** + * + * @brief + * + * @param hSession TN3270 Session handle. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_select_all(H3270 *hSession); + +/** + * + * @brief + * + * @param hSession TN3270 Session handle. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_unselect(H3270 *hSession); + +/** + * + * @brief + * + * @param hSession TN3270 Session handle. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_reselect(H3270 *hSession); + +/** + * + * @brief Erase End Of Field Key. + * + * @param hSession TN3270 Session handle. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_eraseeof(H3270 *hSession); + +/** + * + * @brief Erase End Of Line Key. + * + * @param hSession TN3270 Session handle. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_eraseeol(H3270 *hSession); + +/** + * + * @brief + * + * @param hSession TN3270 Session handle. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_erase(H3270 *hSession); + +/** + * + * @brief + * + * @param hSession TN3270 Session handle. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_delete(H3270 *hSession); + +/** + * + * @brief DUP key + * + * @param hSession TN3270 Session handle. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_dup(H3270 *hSession); + +/** + * + * @brief FM key + * + * @param hSession TN3270 Session handle. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_fieldmark(H3270 *hSession); + +/** + * + * @brief 3270-style backspace. + * + * @param hSession TN3270 Session handle. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_backspace(H3270 *hSession); + +/** + * + * @brief Cursor to previous word. + * + * @param hSession TN3270 Session handle. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_previousword(H3270 *hSession); + +/** + * + * @brief Cursor to next unprotected word. + * + * @param hSession TN3270 Session handle. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_nextword(H3270 *hSession); + +/** + * + * @brief Move the cursor to the first blank after the last nonblank in the field. + * + * @param hSession TN3270 Session handle. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_fieldend(H3270 *hSession); + +/** + * + * @brief Move to first unprotected field on screen. + * + * @param hSession TN3270 Session handle. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_firstfield(H3270 *hSession); + +/** + * + * @brief + * + * @param hSession TN3270 Session handle. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_nextfield(H3270 *hSession); + +/** + * + * @brief Tab backward to previous field. + * + * @param hSession TN3270 Session handle. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_previousfield(H3270 *hSession); + +/** + * + * @brief ATTN key, per RFC 2355. Sends IP, regardless. + * + * @param hSession TN3270 Session handle. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_attn(H3270 *hSession); + +/** + * + * @brief + * + * @param hSession TN3270 Session handle. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_break(H3270 *hSession); + +/** + * + * @brief + * + * @param hSession TN3270 Session handle. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_paste_next(H3270 *hSession); + +/** + * + * @brief Backspaces the cursor until it hits the front of a word (does a ^W). + * + * @param hSession TN3270 Session handle. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_deleteword(H3270 *hSession); + +/** + * + * @brief Delete field key (does a ^U). + * + * @param hSession TN3270 Session handle. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_deletefield(H3270 *hSession); + +/** + * + * @brief + * + * @param hSession TN3270 Session handle. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_sysreq(H3270 *hSession); + +/** + * + * @brief + * + * @param hSession TN3270 Session handle. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_testpattern(H3270 *hSession); + +/** + * + * @brief + * + * @param hSession TN3270 Session handle. + * + * @return 0 if Ok, non zero if not (sets errno) + * + */ + LIB3270_EXPORT int lib3270_charsettable(H3270 *hSession); + + +/** + * + * @brief Get lib3270 action table. + * + * @return Array with all the supported actions. + */ + LIB3270_EXPORT const LIB3270_ACTION_ENTRY * lib3270_get_action_table(); + +/** + * + * @brief Call lib3270 action by name. + * + * @param hSession TN3270 Session handle. + * @param name Name of the action to call. + * + */ + LIB3270_EXPORT int lib3270_action(H3270 *hSession, const char *name); + +#ifdef __cplusplus + } +#endif + +#endif // LIB3270_ACTIONS_H_INCLUDED diff --git a/src/include/lib3270/selection.h b/src/include/lib3270/selection.h index e79dd32..b45d9d3 100644 --- a/src/include/lib3270/selection.h +++ b/src/include/lib3270/selection.h @@ -103,24 +103,24 @@ * @param h Session handle. * @param str String to paste. * - * @see lib3270_pastenext. + * @see lib3270_paste_next. * * @return Non 0 if there's more to paste with lib3270_pastenext. * */ - LIB3270_EXPORT int lib3270_paste(H3270 *h, const unsigned char *str); + LIB3270_EXPORT int lib3270_paste_text(H3270 *h, const unsigned char *str); /** * @brief Paste remaining string. * * @param h Session handle. * - * @see lib3270_paste. + * @see lib3270_paste_text. * * @return Non 0 if there's more to paste. * */ - LIB3270_EXPORT int lib3270_pastenext(H3270 *h); + LIB3270_EXPORT int lib3270_paste_next(H3270 *h); /** * @brief Move selected box 1 char in the selected direction. -- libgit2 0.21.2