New Features in x3270 3.2

x3270 3.2 is a reorganization of x3270 3.1, with some additional enhancements.  It is intended to be the future development platform for x3270, with x3270 3.1 continued only with bug fixes.

Internal Changes
The primary focus of the reorganzation is modularity. For example, through the new parts.h header file, it is now possible to build subsets of x3270, excluding one or more of the following features:

This can make for a much smaller footprint for limited applications, as well as new applications based on components of x3270. For example, a new program, s3270, is now available, which consists of only the 3270 protocol engine and the scripting facility, allowing x3270 scripts to be run without an X display.

The code is also reorganized to reduce the amount of explicit coupling between modules. An event registration mechanism is used to propagate state changes, instead of explicit calls from one module to another.

The code is now written in ANSI C, using function prototypes and const where appropriate.

Support for X11R4 and K&R C compilers has been dropped.

External Changes
Basic TN3270E mode is now supported.

On systems that support the forkpty() library call (such as BSD-derived systems), tn3270 supports local processes.  A local process is a Unix process such as a shell which is connected to x3270 with a pty.  In this way, x3270 will function as a local terminal emulator like xterm.

All operating modes can now be changed at runtime via menus, including extended data stream mode, and 3277/3278/3279 emulation.

The "Trace X Events" option has been replaced with a "Trace Keyboard and Mouse Events" option, which reports only X events which can be mapped with keymaps. It also reports the keymap that was used to map each action, making keymap debug much easier.

A menu option allows the current keymap to be displayed.

A new base keymap is defined, containing the default keyboard mappings.  This keymap can be modified at will, without interfering with the basic operation of x3270, or the processing of X events not related to the keyboard or mouse (as was the case with the previous default translations resource).

Default keymaps are defined for several well-known keyboards. These keymaps are automatically used when x3270 recognizes the vendor string for the associated X server.

Several x3270 bugs, which were in the "impossible to fix" category (because of basic code organization problems) have finally been fixed.