Files
armorpaint/base/Sources/arm/Operator.hx
T
2023-02-08 14:40:15 +01:00

47 lines
1.3 KiB
Haxe

package arm;
import iron.system.Input;
class Operator {
public static var run = new Map<String, Dynamic>();
public static var keymap = new Map<String, String>();
public static function register(name: String, key: String, call: Dynamic) {
run[name] = call;
keymap[key] = name;
}
public static function update() {}
public static function shortcut(s: String, type = ShortcutStarted): Bool {
if (s == "") return false;
var mouse = Input.getMouse();
var kb = Input.getKeyboard();
var shift = s.indexOf("shift") >= 0;
var ctrl = s.indexOf("ctrl") >= 0;
var alt = s.indexOf("alt") >= 0;
var flag = shift == kb.down("shift") &&
ctrl == kb.down("control") &&
alt == kb.down("alt");
if (s.indexOf("+") > 0) {
s = s.substr(s.lastIndexOf("+") + 1);
if (s == "number") return flag;
}
else if (shift || ctrl || alt) return flag;
var key = (s == "left" || s == "right" || s == "middle") ?
// Mouse
(type == ShortcutDown ? mouse.down(s) : mouse.started(s)) :
// Keyboard
(type == ShortcutRepeat ? kb.repeat(s) : type == ShortcutDown ? kb.down(s) : type == ShortcutReleased ? kb.released(s) : kb.started(s));
return flag && key;
}
}
@:enum abstract ShortcutType(Int) from Int to Int {
var ShortcutStarted = 0;
var ShortcutRepeat = 1;
var ShortcutDown = 2;
var ShortcutReleased = 3;
}