Operator.hx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package arm;
  2. import iron.system.Input;
  3. class Operator {
  4. public static var run = new Map<String, Dynamic>();
  5. public static var keymap = new Map<String, String>();
  6. public static function register(name: String, key: String, call: Dynamic) {
  7. run[name] = call;
  8. keymap[key] = name;
  9. }
  10. public static function update() {}
  11. public static function shortcut(s: String, type = ShortcutStarted): Bool {
  12. if (s == "") return false;
  13. var mouse = Input.getMouse();
  14. var kb = Input.getKeyboard();
  15. var shift = s.indexOf("shift") >= 0;
  16. var ctrl = s.indexOf("ctrl") >= 0;
  17. var alt = s.indexOf("alt") >= 0;
  18. var flag = shift == kb.down("shift") &&
  19. ctrl == kb.down("control") &&
  20. alt == kb.down("alt");
  21. if (s.indexOf("+") > 0) {
  22. s = s.substr(s.lastIndexOf("+") + 1);
  23. if (s == "number") return flag;
  24. }
  25. else if (shift || ctrl || alt) return flag;
  26. var key = (s == "left" || s == "right" || s == "middle") ?
  27. // Mouse
  28. (type == ShortcutDown ? mouse.down(s) : mouse.started(s)) :
  29. // Keyboard
  30. (type == ShortcutRepeat ? kb.repeat(s) : type == ShortcutDown ? kb.down(s) : type == ShortcutReleased ? kb.released(s) : kb.started(s));
  31. return flag && key;
  32. }
  33. }
  34. @:enum abstract ShortcutType(Int) from Int to Int {
  35. var ShortcutStarted = 0;
  36. var ShortcutRepeat = 1;
  37. var ShortcutDown = 2;
  38. var ShortcutReleased = 3;
  39. }