              vals = [65, 67, 66, 68]
  
          return vals.index(ord(char.decode("utf-8")))
  
      @staticmethod
      def kbhit():
          """ Returns True if keyboard character was hit, False otherwise. """
          if os.name == "nt":
              return msvcrt.kbhit()
          d_r, _, _ = select([sys.stdin], [], [], 0)
          return d_r != []
 
</s> remove     @staticmethod
    def getch():
 </s> add     def getch(self): </s> remove     @staticmethod
    def getarrow():
 </s> add     def getarrow(self):
    def kbhit(self):
              vals = [65, 67, 66, 68]
  
          return vals.index(ord(char.decode("utf-8")))
  
    def kbhit(self):
    def kbhit(self):
          """ Returns True if keyboard character was hit, False otherwise. """
          if os.name == "nt":
              return msvcrt.kbhit()
          d_r, _, _ = select([sys.stdin], [], [], 0)
          return d_r != []
keep keep keep keep replace replace keep keep keep keep keep
 Config Changes + Bugfixes

Bugfix: Fully disable keypress monitor for GUI
Bugfix: Preview - Handle missing alignments file
Config changes:
    - Separate plugin defaults into their own files
    - Move mask_type to global training config
    - Add ability to pass in custom config files 
lib/keypress.py