206 lines
6.5 KiB
JavaScript
206 lines
6.5 KiB
JavaScript
(() => {
|
|
window.context.c1 = {
|
|
m1: (target, key_map, timeout, freq, mouse_amplifier) => {
|
|
if (mouse_amplifier == undefined)
|
|
{
|
|
mouse_amplifier = 100;
|
|
}
|
|
|
|
if (freq == undefined)
|
|
{
|
|
freq = 50;
|
|
}
|
|
if (timeout == undefined)
|
|
{
|
|
timeout = 40;
|
|
}
|
|
|
|
let ctx = {
|
|
timer_id: null,
|
|
game_pad: null
|
|
};
|
|
ctx.game_pad = new window.context.game_pad.GamePads();
|
|
if (target == undefined)
|
|
{
|
|
throw "NOT_IMPLEMENTED_ERROR";
|
|
}
|
|
if (key_map == undefined)
|
|
{
|
|
throw "NOT_IMPLEMENTED_ERROR";
|
|
}
|
|
if (timeout == undefined)
|
|
{
|
|
throw "NOT_IMPLEMENTED_ERROR";
|
|
}
|
|
let t6 = null;
|
|
let t7 = null;
|
|
ctx.timer_id = setInterval(
|
|
() => {
|
|
ctx.game_pad.update();
|
|
if (
|
|
ctx.game_pad.current.length < 1 &&
|
|
ctx.game_pad.previous.length < 1
|
|
)
|
|
{
|
|
return;
|
|
}
|
|
|
|
let o3 = {};
|
|
let o4 = {}
|
|
let t4 = ctx.game_pad.previous[0];
|
|
let t5 = ctx.game_pad.current[0];
|
|
|
|
if (t4 == undefined || t5 == undefined)
|
|
{
|
|
return;
|
|
}
|
|
t6 = t7;
|
|
t7 = {};
|
|
|
|
t5.pad.buttons.forEach(
|
|
(o, i) => {
|
|
o4[i] = t5.map.buttons[i];
|
|
o4[o4[i]] = i;
|
|
|
|
o3[
|
|
t5.map.buttons[i]
|
|
] = o.value;
|
|
t7[o4[i]] = o.value;
|
|
}
|
|
);
|
|
for (k in o3)
|
|
{
|
|
if (key_map[k] != undefined)
|
|
{
|
|
let event_type = null;
|
|
|
|
if (
|
|
o3[k] == 1 && (t6 == null || t6[k] == 0)
|
|
)
|
|
{
|
|
event_type = "keydown";
|
|
}
|
|
else if (
|
|
o3[k] == 0 && (
|
|
t6 != null && t6[k] == 1
|
|
)
|
|
)
|
|
{
|
|
event_type = "keyup";
|
|
}
|
|
|
|
if (event_type != null)
|
|
{
|
|
console.log([target, key_map[k], event_type]);
|
|
window.context.c1.m2(
|
|
target,
|
|
key_map[k],
|
|
event_type,
|
|
);
|
|
}
|
|
}
|
|
}
|
|
{
|
|
let dx = t5.pad.axes[1];
|
|
let dy = t5.pad.axes[2];
|
|
|
|
if (Math.abs(dx) > 0.05 || Math.abs(dy) > 0.05)
|
|
{
|
|
window.context.drag_mouse(
|
|
dx * mouse_amplifier,
|
|
dy * mouse_amplifier,
|
|
);
|
|
}
|
|
}
|
|
if (o3.PAD_L_SHOULDER_1 || o3.PAD_R_SHOULDER_1)
|
|
{
|
|
window.context.drag_mouse(
|
|
0,
|
|
0,
|
|
[
|
|
0,
|
|
]
|
|
);
|
|
}
|
|
if (o3.PAD_SELECT == 1)
|
|
{
|
|
clearInterval(ctx.timer_id);
|
|
console.log(
|
|
`
|
|
d2.gamepad.script window.context.c1.m1
|
|
clearInterval ${ctx.timer_id}
|
|
`
|
|
);
|
|
}
|
|
},
|
|
freq,
|
|
);
|
|
return ctx;
|
|
},
|
|
m4: (key_code) => {
|
|
let t1 = null;
|
|
for (let k in window.context.game_pad.KEYS)
|
|
{
|
|
if (window.context.game_pad.KEYS[k] == key_code)
|
|
{
|
|
t1 = k;
|
|
}
|
|
}
|
|
if (t1 == null)
|
|
{
|
|
throw `NOT_IMPLEMENTED_ERROR`;
|
|
}
|
|
return {
|
|
code: key_code,
|
|
lable: t1,
|
|
};
|
|
},
|
|
m3: (target, key_code, timeout) => {
|
|
window.context.c1.m2(target, key_code, `keydown`);
|
|
|
|
if (!(timeout > 0 && timeout < 2000))
|
|
{
|
|
throw `NOT_IMPLEMENTED_ERROR`;
|
|
}
|
|
|
|
return setTimeout(
|
|
() => {
|
|
window.context.c1.m2(target, key_code, `keyup`);
|
|
},
|
|
timeout,
|
|
);
|
|
},
|
|
m5: (a, b) => {
|
|
return b.findIndex((o) => o == a);
|
|
},
|
|
m2: (target, key_code, key_event_name) => {
|
|
let t1 = window.context.c1.m4(key_code);
|
|
|
|
if (
|
|
window.context.c1.m5(
|
|
key_event_name,
|
|
[`keydown`, `keyup`]
|
|
) == -1
|
|
)
|
|
{
|
|
throw `NOT_IMPLEMENTED_ERROR`;
|
|
}
|
|
|
|
target.dispatchEvent(
|
|
new KeyboardEvent(
|
|
key_event_name,
|
|
{
|
|
key: t1.label,
|
|
keyCode: t1.code, // example values.
|
|
code: t1.code, // put everything you need in this object.
|
|
which: t1.code,
|
|
shiftKey: false, // you don't need to include values
|
|
ctrlKey: false, // if you aren't going to use them.
|
|
metaKey: false // these are here for example's sake.
|
|
}
|
|
)
|
|
);
|
|
},
|
|
};
|
|
})();
|