Commit 175a47309b968e02d82cb67306edb81c4a0bf9cf

Authored by perry.werneck@gmail.com
1 parent 4ba96013

Mudando tratamento das entradas de teclado para melhorar a performance

src/include/lib3270.h
... ... @@ -468,6 +468,8 @@
468 468 */
469 469 LIB3270_EXPORT int lib3270_set_string(H3270 *h, const unsigned char *str);
470 470  
  471 + LIB3270_EXPORT void lib3270_input_string(H3270 *hSession, const unsigned char *str);
  472 +
471 473 /**
472 474 * Set cursor address.
473 475 *
... ...
src/lib3270/kybd.c
... ... @@ -70,6 +70,7 @@ struct ta;
70 70 #include "popupsc.h"
71 71 // #include "printc.h"
72 72 #include "screenc.h"
  73 +#include "screen.h"
73 74 // #if defined(X3270_DISPLAY) /*[*/
74 75 // #include "selectc.h"
75 76 // #endif /*]*/
... ... @@ -735,8 +736,6 @@ static void key_Character_wrapper(H3270 *hSession, const char *param1, const cha
735 736 code &= ~PASTE_WFLAG;
736 737 }
737 738  
738   -// lib3270_trace_event(hSession," %s -> Key(%s\"%s\")\n",ia_name[(int) ia_cause],with_ge ? "GE " : "",ctl_see((int) ebc2asc[code]));
739   -
740 739 (void) key_Character(hSession, code, with_ge, pasting, NULL);
741 740 }
742 741  
... ... @@ -987,6 +986,18 @@ static Boolean key_Character(H3270 *hSession, int code, Boolean with_ge, Boolean
987 986 return True;
988 987 }
989 988  
  989 +
  990 +LIB3270_EXPORT void lib3270_input_string(H3270 *hSession, const unsigned char *str)
  991 +{
  992 + while(*str)
  993 + {
  994 + key_ACharacter(hSession,(unsigned char)((*str) & 0xff), KT_STD, IA_KEY, NULL);
  995 + str++;
  996 + }
  997 +
  998 + screen_update(hSession,0,hSession->rows*hSession->cols);
  999 +}
  1000 +
990 1001 /**
991 1002 * Handle an ordinary character key, given an ASCII code.
992 1003 *
... ... @@ -996,7 +1007,7 @@ void key_ACharacter(H3270 *hSession, unsigned char c, enum keytype keytype, enum
996 1007 if (skipped != NULL)
997 1008 *skipped = False;
998 1009  
999   - lib3270_trace_event(hSession," %s -> Key(\"%s\")\n",ia_name[(int) cause], ctl_see((int) c));
  1010 + lib3270_trace_event(hSession," %s -> Key(\"%s\") Hex(%02x)\n",ia_name[(int) cause], ctl_see((int) c), (int) c);
1000 1011  
1001 1012 if (IN_3270)
1002 1013 {
... ...
src/pw3270/v3270/keyboard.c
... ... @@ -261,7 +261,8 @@
261 261  
262 262 if(utf)
263 263 {
264   - lib3270_set_string(GTK_V3270(widget)->host, (const unsigned char *) utf);
  264 + lib3270_input_string(GTK_V3270(widget)->host, (const unsigned char *) utf);
  265 +// lib3270_set_string(GTK_V3270(widget)->host, (const unsigned char *) utf);
265 266 g_free(utf);
266 267 }
267 268 else
... ...