diff --git a/oec/__main__.py b/oec/__main__.py index 0a0e4d3..ff6c128 100644 --- a/oec/__main__.py +++ b/oec/__main__.py @@ -7,9 +7,19 @@ from coax import Interface1 from .controller import Controller from .tn3270 import TN3270Session from .vt100 import VT100Session +from .keymap_3278_2 import KEYMAP as KEYMAP_3278_2 +from .keymap_3483 import KEYMAP as KEYMAP_3483 logging.basicConfig(level=logging.INFO) +def _get_keymap(terminal_id, extended_id): + keymap = KEYMAP_3278_2 + + if extended_id == 'c1348300': + keymap = KEYMAP_3483 + + return keymap + def _create_session(args, terminal): if args.emulator == 'tn3270': return TN3270Session(terminal, args.host, args.port) @@ -62,7 +72,7 @@ def main(): # Initialize and start the controller. create_session = lambda terminal: _create_session(args, terminal) - controller = Controller(interface, create_session) + controller = Controller(interface, _get_keymap, create_session) print('Starting controller...') diff --git a/oec/controller.py b/oec/controller.py index bacc686..b7e0190 100644 --- a/oec/controller.py +++ b/oec/controller.py @@ -14,12 +14,13 @@ from .session import SessionDisconnectedError class Controller: """The controller.""" - def __init__(self, interface, create_session): + def __init__(self, interface, get_keymap, create_session): self.logger = logging.getLogger(__name__) self.running = False self.interface = interface + self.get_keymap = get_keymap self.create_session = create_session self.terminal = None @@ -76,8 +77,11 @@ class Controller: self.logger.info(f'Terminal ID = {terminal_id}, Extended ID = {extended_id}') + # Get the keymap. + keymap = self.get_keymap(terminal_id, extended_id) + # Initialize the terminal. - self.terminal = Terminal(self.interface, terminal_id, extended_id) + self.terminal = Terminal(self.interface, terminal_id, extended_id, keymap) (rows, columns) = self.terminal.display.dimensions keymap_name = self.terminal.keyboard.keymap.name diff --git a/oec/terminal.py b/oec/terminal.py index c5143a4..c3832a8 100644 --- a/oec/terminal.py +++ b/oec/terminal.py @@ -9,8 +9,6 @@ from coax import read_terminal_id, read_extended_id, ReceiveError, ProtocolError from .display import Dimensions, Display from .keyboard import Keyboard -from .keymap_3278_2 import KEYMAP as KEYMAP_3278_2 -from .keymap_3483 import KEYMAP as KEYMAP_3483 logger = logging.getLogger(__name__) @@ -28,15 +26,6 @@ def get_dimensions(terminal_id, extended_id): return MODEL_DIMENSIONS[terminal_id.model] -def get_keymap(terminal_id, extended_id): - """Get terminal keymap.""" - keymap = KEYMAP_3278_2 - - if extended_id == 'c1348300': - keymap = KEYMAP_3483 - - return keymap - def read_terminal_ids(interface, extended_id_retry_attempts=3): terminal_id = None extended_id = None @@ -69,13 +58,12 @@ def read_terminal_ids(interface, extended_id_retry_attempts=3): class Terminal: """Terminal information and devices.""" - def __init__(self, interface, terminal_id, extended_id): + def __init__(self, interface, terminal_id, extended_id, keymap): self.interface = interface self.terminal_id = terminal_id self.extended_id = extended_id dimensions = get_dimensions(self.terminal_id, self.extended_id) - keymap = get_keymap(self.terminal_id, self.extended_id) self.display = Display(interface, dimensions) self.keyboard = Keyboard(keymap)