import time from morsedecode import MorseDecoder MORSE = { "A": ".,-", "B": "-,.,.,.", "C": "-,.,-,.", "D": "-,.,.", "E": ".", "F": ".,.,-.", "G": "-,-,.", "H": ".,.,.,.", "I": ".,.", "J": ".,-,-,-", "K": "-,.,-", "L": ".,-,.,.", "M": "-,-", "N": "-,.", "O": "-,-,-", "P": ".,-,-,.", "Q": "-,-,.,-", "R": ".,-,.", "S": ".,.,.", "T": "-", "U": ".,.,-", "V": ".,.,.,-", "W": ".,-,-", "X": "-,.,.,-", "Y": "-,.,-,-", "Z": "-,-,.,.", " ": " ", } TAPS = { ".": "self.tap(1*self.unit)", "-": "self.tap(3*self.unit)", ",": "time.sleep(1*self.unit)", ";": "time.sleep(3*self.unit)", " ": "time.sleep(7*self.unit)", } class Encoder: def __init__(self, unit=0.1): self.unit = unit def tap(self, seconds): d.signal_on() time.sleep(seconds) d.signal_off() def encode(self, string: str): encoded = "" for char in string: encoded += MORSE[char.upper()] encoded += ";" # separates characters print(encoded) return encoded def send(self, string: str): encoded = self.encode(string) for char in encoded: eval(TAPS[char]) d = MorseDecoder(unit=0.1) e = Encoder(unit=0.1) e.send(input()) d.flush()