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.
 | 
						|
                    }
 | 
						|
                )
 | 
						|
            );
 | 
						|
        },
 | 
						|
    };
 | 
						|
})();
 |