Commit ddbc24c6ed8bf060a2bf551970954a92bfcf0145

Authored by perry
1 parent 04acfdec
Exists in master

Implementacao de funcoes para ativacao dos callbacks.

src/lib/keymap.c
@@ -30,6 +30,7 @@ @@ -30,6 +30,7 @@
30 #include "statusc.h" 30 #include "statusc.h"
31 #include "trace_dsc.h" 31 #include "trace_dsc.h"
32 #include "utilc.h" 32 #include "utilc.h"
  33 +#include "lib3270.h"
33 34
34 #undef COLS 35 #undef COLS
35 extern int cCOLS; 36 extern int cCOLS;
@@ -66,8 +67,7 @@ struct keymap { @@ -66,8 +67,7 @@ struct keymap {
66 67
67 #define IS_INACTIVE(k) ((k)->hints[0] & KM_INACTIVE) 68 #define IS_INACTIVE(k) ((k)->hints[0] & KM_INACTIVE)
68 69
69 -KEYBOARD_INFO *keyboard_info_3270 = 0;  
70 - 70 +const KEYBOARD_INFO *keyboard_info_3270 = 0;
71 71
72 static struct keymap *master_keymap = NULL; 72 static struct keymap *master_keymap = NULL;
73 static struct keymap **nextk = &master_keymap; 73 static struct keymap **nextk = &master_keymap;
@@ -812,3 +812,10 @@ keymap_dump(void) @@ -812,3 +812,10 @@ keymap_dump(void)
812 } 812 }
813 } 813 }
814 } 814 }
  815 +
  816 +int set_3270_keyboard(const KEYBOARD_INFO *kbd)
  817 +{
  818 + keyboard_info_3270 = kbd;
  819 + return 0;
  820 +}
  821 +
src/lib/keymapc.h
@@ -13,6 +13,8 @@ @@ -13,6 +13,8 @@
13 13
14 /* c3270 version of keymapc.h */ 14 /* c3270 version of keymapc.h */
15 15
  16 +#include "lib3270.h"
  17 +
16 #define KM_CTRL 0x0001 18 #define KM_CTRL 0x0001
17 #define KM_META 0x0002 19 #define KM_META 0x0002
18 20
@@ -21,24 +23,5 @@ extern char *lookup_key(int k); @@ -21,24 +23,5 @@ extern char *lookup_key(int k);
21 extern void keymap_dump(void); 23 extern void keymap_dump(void);
22 extern const char *decode_key(int k, int hint, char *buf); 24 extern const char *decode_key(int k, int hint, char *buf);
23 25
24 -#pragma pack(1)  
25 -  
26 -typedef struct _keytable  
27 -{  
28 - const char *name;  
29 - int code;  
30 -} KEYTABLE;  
31 -  
32 -typedef struct _keyboard_info  
33 -{  
34 - unsigned short sz;  
35 - unsigned short magic;  
36 -  
37 - void (*beep)(void);  
38 -  
39 - const KEYTABLE *keys;  
40 -} KEYBOARD_INFO;  
41 -  
42 -#pragma pack()  
43 26
44 27
src/lib/lib3270.h
@@ -12,15 +12,79 @@ @@ -12,15 +12,79 @@
12 * for more details. 12 * for more details.
13 */ 13 */
14 14
15 -/* Non-display version of screen.h */  
16 15
  16 +#ifndef LIB3270_INCLUDED
  17 +
  18 +#define LIB3270_INCLUDED
17 19
18 #ifdef __cplusplus 20 #ifdef __cplusplus
19 extern "C" { 21 extern "C" {
20 #endif 22 #endif
21 23
  24 +
  25 +#pragma pack(1)
  26 +
  27 +#define SCREEN_MAGIC 0x4871
  28 +
  29 +typedef struct _screen_callback
  30 +{
  31 + unsigned short sz;
  32 + unsigned short magic;
  33 +
  34 + void (*screen_init)(void);
  35 + void (*screen_disp)(Boolean erasing unused);
  36 + void (*screen_suspend)(void);
  37 + void (*screen_resume)(void);
  38 +
  39 + void (*cursor_move)(int baddr);
  40 + void (*toggle_monocase)(struct toggle *t unused, enum toggle_type tt unused);
  41 +
  42 + void (*status_ctlr_done)(void);
  43 + void (*status_insert_mode)(Boolean on);
  44 + void (*status_minus)(void);
  45 + void (*status_oerr)(int error_type);
  46 + void (*status_reset)(void);
  47 + void (*status_reverse_mode)(Boolean on);
  48 + void (*status_syswait)(void);
  49 + void (*status_twait)(void);
  50 + void (*status_typeahead)(Boolean on);
  51 + void (*status_compose)(Boolean on, unsigned char c, enum keytype keytype);
  52 + void (*status_lu)(const char *lu);
  53 +
  54 + void (*ring_bell)(void);
  55 + void (*screen_flip)(void);
  56 + void (*screen_width)(int width);
  57 +
  58 + void (*Redraw_action)(Widget w, XEvent *event, String *params, Cardinal *num_params);
  59 +
  60 +} SCREEN_CALLBACK;
  61 +
  62 +typedef struct _keytable
  63 +{
  64 + const char *name;
  65 + int code;
  66 +} KEYTABLE;
  67 +
  68 +typedef struct _keyboard_info
  69 +{
  70 + unsigned short sz;
  71 + unsigned short magic;
  72 +
  73 + void (*beep)(void);
  74 +
  75 + const KEYTABLE *keys;
  76 +} KEYBOARD_INFO;
  77 +
  78 +#pragma pack()
  79 +
  80 +int set_3270_screen(const SCREEN_CALLBACK *scr);
  81 +int set_3270_keyboard(const KEYBOARD_INFO *kbd);
22 int run_emulator(const char *cl_hostname); 82 int run_emulator(const char *cl_hostname);
23 83
  84 +
24 #ifdef __cplusplus 85 #ifdef __cplusplus
25 } 86 }
26 #endif 87 #endif
  88 +
  89 +
  90 +#endif // LIB3270_INCLUDED
src/lib/screen.c
@@ -36,12 +36,19 @@ @@ -36,12 +36,19 @@
36 #include "utilc.h" 36 #include "utilc.h"
37 #include "widec.h" 37 #include "widec.h"
38 #include "xioc.h" 38 #include "xioc.h"
  39 +#include "lib3270.h"
39 40
40 /*---[ Publics ]--------------------------------------------------------------*/ 41 /*---[ Publics ]--------------------------------------------------------------*/
41 42
42 -SCREEN_CALLBACK *screen_callbacks_3270 = 0;  
43 -Boolean escaped = True; 43 +const SCREEN_CALLBACK *screen_callbacks_3270 = 0;
  44 +Boolean escaped = True;
44 45
  46 +/* Set callback structure */
  47 +int set_3270_screen(const SCREEN_CALLBACK *scr)
  48 +{
  49 + screen_callbacks_3270 = scr;
  50 + return 0;
  51 +}
45 52
46 /* Initialize the screen. */ 53 /* Initialize the screen. */
47 void screen_init(void) 54 void screen_init(void)
src/lib/screenc.h
@@ -13,47 +13,7 @@ @@ -13,47 +13,7 @@
13 13
14 /* c3270 version of screenc.h */ 14 /* c3270 version of screenc.h */
15 15
16 -  
17 -#pragma pack(1)  
18 -  
19 -#define SCREEN_MAGIC 0x4871  
20 -  
21 -typedef struct _screen_callback  
22 -{  
23 - unsigned short sz;  
24 - unsigned short magic;  
25 -  
26 - void (*screen_init)(void);  
27 - void (*screen_disp)(Boolean erasing unused);  
28 - void (*screen_suspend)(void);  
29 - void (*screen_resume)(void);  
30 -  
31 - void (*cursor_move)(int baddr);  
32 - void (*toggle_monocase)(struct toggle *t unused, enum toggle_type tt unused);  
33 -  
34 - void (*status_ctlr_done)(void);  
35 - void (*status_insert_mode)(Boolean on);  
36 - void (*status_minus)(void);  
37 - void (*status_oerr)(int error_type);  
38 - void (*status_reset)(void);  
39 - void (*status_reverse_mode)(Boolean on);  
40 - void (*status_syswait)(void);  
41 - void (*status_twait)(void);  
42 - void (*status_typeahead)(Boolean on);  
43 - void (*status_compose)(Boolean on, unsigned char c, enum keytype keytype);  
44 - void (*status_lu)(const char *lu);  
45 -  
46 - void (*ring_bell)(void);  
47 - void (*screen_flip)(void);  
48 - void (*screen_width)(int width);  
49 -  
50 - void (*Redraw_action)(Widget w, XEvent *event, String *params, Cardinal *num_params);  
51 -  
52 -} SCREEN_CALLBACK;  
53 -  
54 -#pragma pack()  
55 -  
56 -extern SCREEN_CALLBACK *screen_callbacks_3270; 16 +#include "lib3270.h"
57 17
58 #define blink_start() 18 #define blink_start()
59 #define display_heightMM() 100 19 #define display_heightMM() 100
@@ -67,18 +27,11 @@ extern SCREEN_CALLBACK *screen_callbacks_3270; @@ -67,18 +27,11 @@ extern SCREEN_CALLBACK *screen_callbacks_3270;
67 #define screen_scroll() 27 #define screen_scroll()
68 28
69 extern void cursor_move(int baddr); 29 extern void cursor_move(int baddr);
70 -extern void cursor_move(int baddr);  
71 extern void ring_bell(void); 30 extern void ring_bell(void);
72 -extern void ring_bell(void);  
73 -extern void screen_132(void);  
74 extern void screen_132(void); 31 extern void screen_132(void);
75 extern void screen_80(void); 32 extern void screen_80(void);
76 -extern void screen_80(void);  
77 -extern void screen_disp(Boolean erasing);  
78 extern void screen_disp(Boolean erasing); 33 extern void screen_disp(Boolean erasing);
79 extern void screen_init(void); 34 extern void screen_init(void);
80 -extern void screen_init(void);  
81 -extern void screen_flip(void);  
82 extern void screen_flip(void); 35 extern void screen_flip(void);
83 extern void screen_resume(void); 36 extern void screen_resume(void);
84 extern void screen_suspend(void); 37 extern void screen_suspend(void);