Commit ddbc24c6ed8bf060a2bf551970954a92bfcf0145
1 parent
04acfdec
Exists in
master
Implementacao de funcoes para ativacao dos callbacks.
Showing
5 changed files
with
86 additions
and
72 deletions
Show diff stats
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); |