3
M]WV @ s d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ e j dd ye
W n ek
rr eZ
e
ZY nX dd ZG dd d eZejd
krd dlZd dlZG dd deZG d
d deZnDejdkrd dlZd dlZd dlZG dd deZnedjejG dd deZG dd deZG dd deZG dd deZ G dd deZ!G dd de!Z"G dd deZ#G d d! d!eZ$G d"d# d#eZ%eee d$Z&ee!e"e#e$e%d%Z'd&d' Z(G d(d) d)eZ)d.d+d,Z*e+d-kre* dS )/ N)comports)
hexlify_codecc C s | dkrt j S d S )NZhexlify)r getregentry)c r /usr/lib/python3.6/miniterm.py s r c C s. t | }|dk r"djt d| S t| S dS )z)generate a readable description for a key z Ctrl+{:c}@N)ordformatrepr) characterZ
ascii_coder r r key_description s r c @ sX e Zd ZdZdd Zdd Zdd Zdd Zd
d Zdd
Z dd Z
dd Zdd ZdS )ConsoleBasez8OS abstraction for console (input/output codec, no echo)c C s* t jdkrt jj| _nt j| _t j| _d S )N r )r r )sysversion_infostdoutbufferbyte_outputoutput)selfr r r __init__, s
zConsoleBase.__init__c C s dS )z.Set console to read single characters, no echoNr )r r r r setup3 s zConsoleBase.setupc C s dS )z Restore default console settingsNr )r r r r cleanup6 s zConsoleBase.cleanupc C s dS )z"Read a single key from the consoleNr )r r r r getkey9 s zConsoleBase.getkeyc C s | j j| | j j dS )zWrite bytes (already encoded)N)r writeflush)r Zbyte_stringr r r write_bytes= s zConsoleBase.write_bytesc C s | j j| | j j dS )zWrite stringN)r r r )r textr r r r B s zConsoleBase.writec C s dS )zCancel getkey operationNr )r r r r cancelG s zConsoleBase.cancelc C s | j | S )N)r )r r r r __enter__N s zConsoleBase.__enter__c O s | j d S )N)r )r argskwargsr r r __exit__R s zConsoleBase.__exit__N)
__name__
__module____qualname____doc__r r r r r r r! r" r% r r r r r ) s r ntc @ s( e Zd ZdZdd Zdd Zdd ZdS ) Outz$file-like wrapper that uses os.writec C s
|| _ d S )N)fd)r r, r r r r ] s zOut.__init__c C s d S )Nr )r r r r r ` s z Out.flushc C s t j| j| d S )N)osr r, )r sr r r r c s z Out.writeN)r&