tooncher-extend-controls 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #!/usr/bin/env python3
  2. # PYTHON_ARGCOMPLETE_OK
  3. import sys
  4. import tooncher.controls
  5. def run(
  6. engine_pid: int,
  7. engine_window_name: str,
  8. toggle_keysym_name=tooncher.controls.EXTENDED_CONTROLS_DEFAULT_TOGGLE_KEYSYM_NAME,
  9. ):
  10. ec = tooncher.controls.ExtendedControls(
  11. primary_engine_pid=engine_pid,
  12. toggle_keysym_name=toggle_keysym_name,
  13. primary_engine_window_name=engine_window_name,
  14. )
  15. ec.run()
  16. def _init_argparser():
  17. import argparse
  18. argparser = argparse.ArgumentParser(
  19. description="Attach Extended Controls to an already running Toontown engine.",
  20. )
  21. argparser.add_argument(
  22. "engine_pid", type=int, help="process id of engine to attach to",
  23. )
  24. argparser.add_argument(
  25. "--toggle",
  26. "-t",
  27. metavar="KEYSYM_NAME",
  28. dest="toggle_keysym_name",
  29. default=tooncher.controls.EXTENDED_CONTROLS_DEFAULT_TOGGLE_KEYSYM_NAME,
  30. help="key to turn extended keyboard controls on / off."
  31. + " any keysym name may be used"
  32. + " (see XStringToKeysym & X11/keysymdef.h, "
  33. + " default: %(default)s)",
  34. )
  35. argparser.add_argument(
  36. "--change-window-name",
  37. metavar="ENGINE_WINDOW_NAME",
  38. dest="engine_window_name",
  39. default=None,
  40. help="change window name of engine after launch",
  41. )
  42. return argparser
  43. def main(argv):
  44. argparser = _init_argparser()
  45. try:
  46. import argcomplete
  47. argcomplete.autocomplete(argparser)
  48. except ImportError:
  49. pass
  50. args = argparser.parse_args(argv)
  51. run(**vars(args))
  52. return 0
  53. if __name__ == "__main__":
  54. sys.exit(main(sys.argv[1:]))