1117 lines
		
	
	
		
			No EOL
		
	
	
		
			36 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			1117 lines
		
	
	
		
			No EOL
		
	
	
		
			36 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!DOCTYPE html>
 | 
						|
<html>
 | 
						|
<head>
 | 
						|
<title>Cimdit Profile generator</title>
 | 
						|
<meta charset="UTF-8" />
 | 
						|
<meta name="viewport" content="width=device-width, initial-scale=1" />
 | 
						|
<style type="text/css">
 | 
						|
textarea{width:100%}#string{height:5vh}.codeEditor,.lineCounter{font-family:courier new, courier, monospace;margin:0;padding:10px 0;height:75vh;border-radius:0;resize:none;line-height:1.2;outline:none;box-sizing:border-box}.codeEditor{padding-left:calc(3.5rem + 5px);width:100%;background-color:#272822;border-color:#272822;color:#ffffff}.lineCounter{display:flex;border-color:transparent;overflow-y:hidden;text-align:right;box-shadow:none;color:#707070;background-color:#d8d8d8;position:absolute;width:3.5rem;background-color:#3E3D32;border-color:#3E3D32;color:#928869}.lineCounter:focus-visible,.codeEditor:focus-visible{outline:none}
 | 
						|
</style>
 | 
						|
</head>
 | 
						|
<body>
 | 
						|
<form><div>
 | 
						|
<textarea id="jsoncounter" class="lineCounter" wrap="off" readonly>1</textarea>
 | 
						|
<textarea id="json" class="codeEditor" wrap="off">
 | 
						|
[
 | 
						|
  {
 | 
						|
    "name": "Joystick",
 | 
						|
    "customimage": "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007FFFFFFC000000000000000000000001FFFFFFFF800000000000000000000003FFFFFFFFC00000000000000000000007FFFFFFFFE0000000000000000000000FE0000007F0000000000000000000001F80000001F8000000000000000000001F1A000000F8000000000000000000003E1E00000E7C000000000000000000003E1E00001F7C000000000000000000003C5F80001F3C000000000000000000003CFFC0000E3C000000000000000000003CFFC000E03C000000000000000000003C7F0001E07C000000000000000000003E1E0000F07C000000000000000000003E1E1FF8E078000000000000000000001F143FFC00F8000000000000000000001F807FFE01F8000000000000000000000FD1FFFF87F00000000000000000000007FFF81FFFE00000000000000000000003FFF00FFFC00000000000000000000001FFE007FF8000000000000000000000007F8001FE00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
 | 
						|
    "mappedbuttons": [
 | 
						|
      {
 | 
						|
        "source": 20,
 | 
						|
        "type": "JOYSTICK_BUTTON",
 | 
						|
        "target": 1
 | 
						|
      },
 | 
						|
      {
 | 
						|
        "source": 62,
 | 
						|
        "type": "SWITCH_PROFILE"
 | 
						|
      },
 | 
						|
      {
 | 
						|
        "source": 61,
 | 
						|
        "type": "MACRO_PRESS",
 | 
						|
        "macro": 0
 | 
						|
      },
 | 
						|
      {
 | 
						|
        "source": 60,
 | 
						|
        "type": "MACRO_PRESS",
 | 
						|
        "macro": 1
 | 
						|
      },
 | 
						|
      {
 | 
						|
        "source": 59,
 | 
						|
        "type": "MACRO_PRESS",
 | 
						|
        "macro": 2
 | 
						|
      },
 | 
						|
      {
 | 
						|
        "source": 59,
 | 
						|
        "type": "MACRO_RELEASE",
 | 
						|
        "macro": 3
 | 
						|
      },
 | 
						|
      {
 | 
						|
        "source": 58,
 | 
						|
        "type": "MACRO_PRESS",
 | 
						|
        "macro": 4
 | 
						|
      },
 | 
						|
      {
 | 
						|
        "source": 58,
 | 
						|
        "type": "MACRO_RELEASE",
 | 
						|
        "macro": 5
 | 
						|
      },
 | 
						|
      {
 | 
						|
        "source": 50,
 | 
						|
        "type": "KEYBOARD_BUTTON",
 | 
						|
        "target": "KEY_0"
 | 
						|
      }
 | 
						|
    ],
 | 
						|
    "mappedaxis": [
 | 
						|
      {
 | 
						|
        "source": 0,
 | 
						|
        "type": "JOYSTICK_AXIS",
 | 
						|
        "axis": 1
 | 
						|
      }, 
 | 
						|
      {
 | 
						|
        "source": 1,
 | 
						|
        "type": "JOYSTICK_AXIS",
 | 
						|
        "axis": 2
 | 
						|
      }, 
 | 
						|
      {
 | 
						|
        "source": 2,
 | 
						|
        "type": "JOYSTICK_AXIS",
 | 
						|
        "axis": 3
 | 
						|
      }, 
 | 
						|
      {
 | 
						|
        "source": 3,
 | 
						|
        "type": "JOYSTICK_AXIS",
 | 
						|
        "axis": 4
 | 
						|
      }
 | 
						|
    ],
 | 
						|
    "mappedrotary": [
 | 
						|
      {
 | 
						|
        "source": 0,
 | 
						|
        "type": "PREV_PROFILE"
 | 
						|
      },
 | 
						|
      {
 | 
						|
        "source": 1,
 | 
						|
        "type": "NEXT_PROFILE"
 | 
						|
      }
 | 
						|
    ],
 | 
						|
    "macros": [
 | 
						|
      [
 | 
						|
        "MACRO_SPEED", 
 | 
						|
        10, 
 | 
						|
        "MACRO_TYPE", 
 | 
						|
        "test"
 | 
						|
      ],
 | 
						|
      [
 | 
						|
        "MACRO_SPEED", 
 | 
						|
        10, 
 | 
						|
        "MACRO_KEY_PRESS",
 | 
						|
        "KEY_LEFT_SHIFT",
 | 
						|
        "t",
 | 
						|
        "MACRO_KEY_RELEASE",
 | 
						|
        "t",
 | 
						|
        "KEY_LEFT_SHIFT",
 | 
						|
        "MACRO_TYPE",
 | 
						|
        "est"
 | 
						|
      ],
 | 
						|
      [
 | 
						|
        "MACRO_SPEED",
 | 
						|
        10,
 | 
						|
        "MACRO_TYPE",
 | 
						|
        "te",
 | 
						|
        "MACRO_JOY_PRESS",
 | 
						|
        2,
 | 
						|
        "MACRO_DELAY",
 | 
						|
        2000,
 | 
						|
        "MACRO_JOY_RELEASE",
 | 
						|
        2,
 | 
						|
        "MACRO_TYPE",
 | 
						|
        "s"
 | 
						|
      ],
 | 
						|
      [
 | 
						|
        "MACRO_TYPE", 
 | 
						|
        "t"
 | 
						|
      ],
 | 
						|
      [
 | 
						|
        "MACRO_MOUSE_PRESS", 
 | 
						|
        2,
 | 
						|
        "MACRO_KEY_PRESS",
 | 
						|
        "KEY_LEFT_SHIFT",
 | 
						|
        "MACRO_MOUSE_REL_X_AXIS", 
 | 
						|
        0, 
 | 
						|
        5, 
 | 
						|
        "MACRO_MOUSE_REL_Y_AXIS", 
 | 
						|
        1, 
 | 
						|
        5
 | 
						|
      ],
 | 
						|
      [
 | 
						|
        "MACRO_MOUSE_REL_X_AXIS",
 | 
						|
        -1,
 | 
						|
        "MACRO_MOUSE_REL_Y_AXIS",
 | 
						|
        -1,
 | 
						|
        "MACRO_KEY_RELEASE",
 | 
						|
        "KEY_LEFT_SHIFT",
 | 
						|
        "MACRO_MOUSE_RELEASE",
 | 
						|
        2
 | 
						|
      ]
 | 
						|
    ]
 | 
						|
  },
 | 
						|
  {
 | 
						|
    "name": "Mouse",
 | 
						|
    "mappedbuttons": [
 | 
						|
      {
 | 
						|
        "source": 62,
 | 
						|
        "type": "SWITCH_PROFILE"
 | 
						|
      },
 | 
						|
      {
 | 
						|
        "source": 15, 
 | 
						|
        "type": "MOUSE_REL_X_AXIS",
 | 
						|
        "value": 25
 | 
						|
      },
 | 
						|
      {
 | 
						|
        "source": 23, 
 | 
						|
        "type": "MOUSE_REL_Y_AXIS",
 | 
						|
        "value": -25
 | 
						|
      }
 | 
						|
    ],
 | 
						|
    "mappedaxis": [
 | 
						|
      {
 | 
						|
        "source": 0,
 | 
						|
        "type": "MOUSE_REL_X_AXIS",
 | 
						|
        "value": 50
 | 
						|
      },
 | 
						|
      {
 | 
						|
        "source": 1,
 | 
						|
        "type": "MOUSE_REL_Y_AXIS",
 | 
						|
        "value": 50
 | 
						|
      }
 | 
						|
    ],
 | 
						|
    "mappedrotary": [
 | 
						|
      {
 | 
						|
        "source": 0,
 | 
						|
        "type": "PREV_PROFILE"
 | 
						|
      },
 | 
						|
      {
 | 
						|
        "source": 1,
 | 
						|
        "type": "NEXT_PROFILE"
 | 
						|
      }
 | 
						|
    ],
 | 
						|
    "macros": []
 | 
						|
  },
 | 
						|
  {
 | 
						|
    "name": "MIDI",
 | 
						|
    "mappedbuttons": [
 | 
						|
      {
 | 
						|
        "source": 62,
 | 
						|
        "type": "SWITCH_PROFILE"
 | 
						|
      },
 | 
						|
      {
 | 
						|
        "source": 61,
 | 
						|
        "type": "MIDI_NOTE",
 | 
						|
        "channel": 0,
 | 
						|
        "note": 48,
 | 
						|
        "velocity": 64
 | 
						|
      },
 | 
						|
      {
 | 
						|
        "source": 53,
 | 
						|
        "type": "MIDI_NOTE",
 | 
						|
        "channel": 0,
 | 
						|
        "note": 49,
 | 
						|
        "velocity": 64
 | 
						|
      },
 | 
						|
      {
 | 
						|
        "source": 45,
 | 
						|
        "type": "MIDI_NOTE",
 | 
						|
        "channel": 0,
 | 
						|
        "note": 50,
 | 
						|
        "velocity": 64
 | 
						|
      },
 | 
						|
      {
 | 
						|
        "source": 37,
 | 
						|
        "type": "MIDI_NOTE",
 | 
						|
        "channel": 0,
 | 
						|
        "note": 51,
 | 
						|
        "velocity": 64
 | 
						|
      },
 | 
						|
      {
 | 
						|
        "source": 46,
 | 
						|
        "type": "MIDI_CTRL",
 | 
						|
        "channel": 0,
 | 
						|
        "control": 10,
 | 
						|
        "value": 0
 | 
						|
      },
 | 
						|
      {
 | 
						|
        "source": 38,
 | 
						|
        "type": "MIDI_CTRL",
 | 
						|
        "channel": 0,
 | 
						|
        "control": 10,
 | 
						|
        "value": 64
 | 
						|
      },
 | 
						|
      {
 | 
						|
        "source": 49,
 | 
						|
        "type": "MIDI_PITCH",
 | 
						|
        "channel": 0,
 | 
						|
        "value": 0
 | 
						|
      },
 | 
						|
      {
 | 
						|
        "source": 41,
 | 
						|
        "type": "MIDI_PITCH",
 | 
						|
        "channel": 0,
 | 
						|
        "value": 8192
 | 
						|
      },
 | 
						|
      {
 | 
						|
        "source": 33,
 | 
						|
        "type": "MACRO_PRESS",
 | 
						|
        "macro": 0
 | 
						|
      }
 | 
						|
    ],
 | 
						|
    "mappedaxis": [
 | 
						|
      {
 | 
						|
        "source": 0,
 | 
						|
        "type": "MIDI_CTRL_AXIS",
 | 
						|
        "channel": 0,
 | 
						|
        "control": 10
 | 
						|
      },
 | 
						|
      {
 | 
						|
        "source": 1,
 | 
						|
        "type": "MIDI_PITCH_AXIS",
 | 
						|
        "channel": 0
 | 
						|
      },
 | 
						|
      {
 | 
						|
        "source": 2,
 | 
						|
        "type": "MIDI_CTRL_AXIS",
 | 
						|
        "channel": 0,
 | 
						|
        "control": 1
 | 
						|
      }
 | 
						|
    ],
 | 
						|
    "mappedrotary": [
 | 
						|
      {
 | 
						|
        "source": 0,
 | 
						|
        "type": "PREV_PROFILE"
 | 
						|
      },
 | 
						|
      {
 | 
						|
        "source": 1,
 | 
						|
        "type": "NEXT_PROFILE"
 | 
						|
      }
 | 
						|
    ],
 | 
						|
    "macros": [
 | 
						|
      [
 | 
						|
        "MACRO_MIDI_NOTEON",
 | 
						|
        0,
 | 
						|
        60,
 | 
						|
        64,
 | 
						|
        "MACRO_DELAY",
 | 
						|
        1000,
 | 
						|
        "MACRO_MIDI_CTRL",
 | 
						|
        0,
 | 
						|
        10,
 | 
						|
        0,
 | 
						|
        "MACRO_DELAY",
 | 
						|
        2000,
 | 
						|
        "MACRO_MIDI_CTRL",
 | 
						|
        0,
 | 
						|
        10,
 | 
						|
        64,
 | 
						|
        "MACRO_DELAY",
 | 
						|
        1000,
 | 
						|
        "MACRO_MIDI_PITCH",
 | 
						|
        0,
 | 
						|
        512,
 | 
						|
        "MACRO_DELAY",
 | 
						|
        1000,
 | 
						|
        "MACRO_MIDI_PITCH",
 | 
						|
        0,
 | 
						|
        8192,
 | 
						|
        "MACRO_DELAY",
 | 
						|
        1000,
 | 
						|
        "MACRO_MIDI_NOTEOFF",
 | 
						|
        0,
 | 
						|
        60,
 | 
						|
        64
 | 
						|
      ]
 | 
						|
    ]
 | 
						|
  }
 | 
						|
]</textarea>
 | 
						|
<p><button id="generatestring" class="button">Generate String</button></p>
 | 
						|
<p id="error"></p>
 | 
						|
<textarea id="string"></textarea>
 | 
						|
<p><button id="generatejson" class="button">Generate Json</button></p>
 | 
						|
</div></form>
 | 
						|
<script type="text/javascript">
 | 
						|
document.addEventListener("readystatechange", function (event) {
 | 
						|
    if (!window.pg) {
 | 
						|
        window.pg = new ProfileGenerator();
 | 
						|
    }
 | 
						|
});
 | 
						|
 | 
						|
var ProfileGenerator = (function () {
 | 
						|
    function ProfileGenerator() {
 | 
						|
        var _this = this;
 | 
						|
        this.profileEnum = [
 | 
						|
            "MAPPING_NONE",
 | 
						|
            "JOYSTICK_BUTTON",
 | 
						|
            "JOYSTICK_AXIS",
 | 
						|
            "MOUSE_BUTTON",
 | 
						|
            "MOUSE_REL_X_AXIS",
 | 
						|
            "MOUSE_REL_Y_AXIS",
 | 
						|
            "MOUSE_REL_WHEEL",
 | 
						|
            "NEXT_PROFILE",
 | 
						|
            "PREV_PROFILE",
 | 
						|
            "SWITCH_PROFILE",
 | 
						|
            "MACRO_PRESS",
 | 
						|
            "MACRO_RELEASE",
 | 
						|
            "KEYBOARD_BUTTON",
 | 
						|
            "MIDI_NOTE",
 | 
						|
            "MIDI_CTRL",
 | 
						|
            "MIDI_PITCH",
 | 
						|
            "MIDI_CTRL_AXIS",
 | 
						|
            "MIDI_PITCH_AXIS",
 | 
						|
        ];
 | 
						|
        this.macroEnum = [
 | 
						|
            "MACRO_NULL",
 | 
						|
            "MACRO_SPEED",
 | 
						|
            "MACRO_DELAY",
 | 
						|
            "MACRO_KEY_PRESS",
 | 
						|
            "MACRO_KEY_RELEASE",
 | 
						|
            "MACRO_JOY_PRESS",
 | 
						|
            "MACRO_JOY_RELEASE",
 | 
						|
            "MACRO_MOUSE_PRESS",
 | 
						|
            "MACRO_MOUSE_RELEASE",
 | 
						|
            "MACRO_MOUSE_WHEEL",
 | 
						|
            "MACRO_TYPE",
 | 
						|
            "MACRO_MOUSE_REL_X",
 | 
						|
            "MACRO_MOUSE_REL_Y",
 | 
						|
            "MACRO_MOUSE_REL_X_AXIS",
 | 
						|
            "MACRO_MOUSE_REL_Y_AXIS",
 | 
						|
            "MACRO_MIDI_NOTEON",
 | 
						|
            "MACRO_MIDI_NOTEOFF",
 | 
						|
            "MACRO_MIDI_CTRL",
 | 
						|
            "MACRO_MIDI_PITCH",
 | 
						|
        ];
 | 
						|
        this.keyLookup = {
 | 
						|
            "KEY_RESERVED": 0,
 | 
						|
            "KEY_ERROR_ROLLOVER": 1,
 | 
						|
            "KEY_POST_FAIL": 2,
 | 
						|
            "KEY_ERROR_UNDEFINED": 3,
 | 
						|
            "KEY_A": 4,
 | 
						|
            "KEY_B": 5,
 | 
						|
            "KEY_C": 6,
 | 
						|
            "KEY_D": 7,
 | 
						|
            "KEY_E": 8,
 | 
						|
            "KEY_F": 9,
 | 
						|
            "KEY_G": 10,
 | 
						|
            "KEY_H": 11,
 | 
						|
            "KEY_I": 12,
 | 
						|
            "KEY_J": 13,
 | 
						|
            "KEY_K": 14,
 | 
						|
            "KEY_L": 15,
 | 
						|
            "KEY_M": 16,
 | 
						|
            "KEY_N": 17,
 | 
						|
            "KEY_O": 18,
 | 
						|
            "KEY_P": 19,
 | 
						|
            "KEY_Q": 20,
 | 
						|
            "KEY_R": 21,
 | 
						|
            "KEY_S": 22,
 | 
						|
            "KEY_T": 23,
 | 
						|
            "KEY_U": 24,
 | 
						|
            "KEY_V": 25,
 | 
						|
            "KEY_W": 26,
 | 
						|
            "KEY_X": 27,
 | 
						|
            "KEY_Y": 28,
 | 
						|
            "KEY_Z": 29,
 | 
						|
            "KEY_1": 30,
 | 
						|
            "KEY_2": 31,
 | 
						|
            "KEY_3": 32,
 | 
						|
            "KEY_4": 33,
 | 
						|
            "KEY_5": 34,
 | 
						|
            "KEY_6": 35,
 | 
						|
            "KEY_7": 36,
 | 
						|
            "KEY_8": 37,
 | 
						|
            "KEY_9": 38,
 | 
						|
            "KEY_0": 39,
 | 
						|
            "KEY_ENTER": 40,
 | 
						|
            "KEY_RETURN": 40,
 | 
						|
            "KEY_ESC": 41,
 | 
						|
            "KEY_BACKSPACE": 42,
 | 
						|
            "KEY_TAB": 43,
 | 
						|
            "KEY_SPACE": 44,
 | 
						|
            "KEY_MINUS": 45,
 | 
						|
            "KEY_EQUAL": 46,
 | 
						|
            "KEY_LEFT_BRACE": 47,
 | 
						|
            "KEY_RIGHT_BRACE": 48,
 | 
						|
            "KEY_BACKSLASH": 49,
 | 
						|
            "KEY_NON_US_NUM": 50,
 | 
						|
            "KEY_SEMICOLON": 51,
 | 
						|
            "KEY_QUOTE": 52,
 | 
						|
            "KEY_TILDE": 53,
 | 
						|
            "KEY_COMMA": 54,
 | 
						|
            "KEY_PERIOD": 55,
 | 
						|
            "KEY_SLASH": 56,
 | 
						|
            "KEY_CAPS_LOCK": 0x39,
 | 
						|
            "KEY_F1": 0x3A,
 | 
						|
            "KEY_F2": 0x3B,
 | 
						|
            "KEY_F3": 0x3C,
 | 
						|
            "KEY_F4": 0x3D,
 | 
						|
            "KEY_F5": 0x3E,
 | 
						|
            "KEY_F6": 0x3F,
 | 
						|
            "KEY_F7": 0x40,
 | 
						|
            "KEY_F8": 0x41,
 | 
						|
            "KEY_F9": 0x42,
 | 
						|
            "KEY_F10": 0x43,
 | 
						|
            "KEY_F11": 0x44,
 | 
						|
            "KEY_F12": 0x45,
 | 
						|
            "KEY_PRINT": 0x46,
 | 
						|
            "KEY_PRINTSCREEN": 0x46,
 | 
						|
            "KEY_SCROLL_LOCK": 0x47,
 | 
						|
            "KEY_PAUSE": 0x48,
 | 
						|
            "KEY_INSERT": 0x49,
 | 
						|
            "KEY_HOME": 0x4A,
 | 
						|
            "KEY_PAGE_UP": 0x4B,
 | 
						|
            "KEY_DELETE": 0x4C,
 | 
						|
            "KEY_END": 0x4D,
 | 
						|
            "KEY_PAGE_DOWN": 0x4E,
 | 
						|
            "KEY_RIGHT_ARROW": 0x4F,
 | 
						|
            "KEY_LEFT_ARROW": 0x50,
 | 
						|
            "KEY_DOWN_ARROW": 0x51,
 | 
						|
            "KEY_UP_ARROW": 0x52,
 | 
						|
            "KEY_RIGHT": 0x4F,
 | 
						|
            "KEY_LEFT": 0x50,
 | 
						|
            "KEY_DOWN": 0x51,
 | 
						|
            "KEY_UP": 0x52,
 | 
						|
            "KEY_NUM_LOCK": 0x53,
 | 
						|
            "KEYPAD_DIVIDE": 0x54,
 | 
						|
            "KEYPAD_MULTIPLY": 0x55,
 | 
						|
            "KEYPAD_SUBTRACT": 0x56,
 | 
						|
            "KEYPAD_ADD": 0x57,
 | 
						|
            "KEYPAD_ENTER": 0x58,
 | 
						|
            "KEYPAD_1": 0x59,
 | 
						|
            "KEYPAD_2": 0x5A,
 | 
						|
            "KEYPAD_3": 0x5B,
 | 
						|
            "KEYPAD_4": 0x5C,
 | 
						|
            "KEYPAD_5": 0x5D,
 | 
						|
            "KEYPAD_6": 0x5E,
 | 
						|
            "KEYPAD_7": 0x5F,
 | 
						|
            "KEYPAD_8": 0x60,
 | 
						|
            "KEYPAD_9": 0x61,
 | 
						|
            "KEYPAD_0": 0x62,
 | 
						|
            "KEYPAD_DOT": 0x63,
 | 
						|
            "KEY_NON_US": 0x64,
 | 
						|
            "KEY_APPLICATION": 0x65,
 | 
						|
            "KEY_MENU": 0x65,
 | 
						|
            "KEY_POWER": 0x66,
 | 
						|
            "KEY_PAD_EQUALS": 0x67,
 | 
						|
            "KEY_F13": 0x68,
 | 
						|
            "KEY_F14": 0x69,
 | 
						|
            "KEY_F15": 0x6A,
 | 
						|
            "KEY_F16": 0x6B,
 | 
						|
            "KEY_F17": 0x6C,
 | 
						|
            "KEY_F18": 0x6D,
 | 
						|
            "KEY_F19": 0x6E,
 | 
						|
            "KEY_F20": 0x6F,
 | 
						|
            "KEY_F21": 0x70,
 | 
						|
            "KEY_F22": 0x71,
 | 
						|
            "KEY_F23": 0x72,
 | 
						|
            "KEY_F24": 0x73,
 | 
						|
            "KEY_EXECUTE": 0x74,
 | 
						|
            "KEY_HELP": 0x75,
 | 
						|
            "KEY_MENU2": 0x76,
 | 
						|
            "KEY_SELECT": 0x77,
 | 
						|
            "KEY_STOP": 0x78,
 | 
						|
            "KEY_AGAIN": 0x79,
 | 
						|
            "KEY_UNDO": 0x7A,
 | 
						|
            "KEY_CUT": 0x7B,
 | 
						|
            "KEY_COPY": 0x7C,
 | 
						|
            "KEY_PASTE": 0x7D,
 | 
						|
            "KEY_FIND": 0x7E,
 | 
						|
            "KEY_MUTE": 0x7F,
 | 
						|
            "KEY_VOLUME_MUTE": 0x7F,
 | 
						|
            "KEY_VOLUME_UP": 0x80,
 | 
						|
            "KEY_VOLUME_DOWN": 0x81,
 | 
						|
            "KEY_LOCKING_CAPS_LOCK": 0x82,
 | 
						|
            "KEY_LOCKING_NUM_LOCK": 0x83,
 | 
						|
            "KEY_LOCKING_SCROLL_LOCK": 0x84,
 | 
						|
            "KEYPAD_COMMA": 0x85,
 | 
						|
            "KEYPAD_EQUAL_SIGN": 0x86,
 | 
						|
            "KEY_INTERNATIONAL1": 0x87,
 | 
						|
            "KEY_INTERNATIONAL2": 0x88,
 | 
						|
            "KEY_INTERNATIONAL3": 0x89,
 | 
						|
            "KEY_INTERNATIONAL4": 0x8A,
 | 
						|
            "KEY_INTERNATIONAL5": 0x8B,
 | 
						|
            "KEY_INTERNATIONAL6": 0x8C,
 | 
						|
            "KEY_INTERNATIONAL7": 0x8D,
 | 
						|
            "KEY_INTERNATIONAL8": 0x8E,
 | 
						|
            "KEY_INTERNATIONAL9": 0x8F,
 | 
						|
            "KEY_LANG1": 0x90,
 | 
						|
            "KEY_LANG2": 0x91,
 | 
						|
            "KEY_LANG3": 0x92,
 | 
						|
            "KEY_LANG4": 0x93,
 | 
						|
            "KEY_LANG5": 0x94,
 | 
						|
            "KEY_LANG6": 0x95,
 | 
						|
            "KEY_LANG7": 0x96,
 | 
						|
            "KEY_LANG8": 0x97,
 | 
						|
            "KEY_LANG9": 0x98,
 | 
						|
            "KEY_ALTERNATE_ERASE": 0x99,
 | 
						|
            "KEY_SYSREQ_ATTENTION": 0x9A,
 | 
						|
            "KEY_CANCEL": 0x9B,
 | 
						|
            "KEY_CLEAR": 0x9C,
 | 
						|
            "KEY_PRIOR": 0x9D,
 | 
						|
            "KEY_RETURN2": 0x9E,
 | 
						|
            "KEY_SEPARATOR": 0x9F,
 | 
						|
            "KEY_OUT": 0xA0,
 | 
						|
            "KEY_OPER": 0xA1,
 | 
						|
            "KEY_CLEAR_AGAIN": 0xA2,
 | 
						|
            "KEY_CRSEL_PROPS": 0xA3,
 | 
						|
            "KEY_EXSEL": 0xA4,
 | 
						|
            "KEY_PAD_00": 0xB0,
 | 
						|
            "KEY_PAD_000": 0xB1,
 | 
						|
            "KEY_THOUSANDS_SEPARATOR": 0xB2,
 | 
						|
            "KEY_DECIMAL_SEPARATOR": 0xB3,
 | 
						|
            "KEY_CURRENCY_UNIT": 0xB4,
 | 
						|
            "KEY_CURRENCY_SUB_UNIT": 0xB5,
 | 
						|
            "KEYPAD_LEFT_BRACE": 0xB6,
 | 
						|
            "KEYPAD_RIGHT_BRACE": 0xB7,
 | 
						|
            "KEYPAD_LEFT_CURLY_BRACE": 0xB8,
 | 
						|
            "KEYPAD_RIGHT_CURLY_BRACE": 0xB9,
 | 
						|
            "KEYPAD_TAB": 0xBA,
 | 
						|
            "KEYPAD_BACKSPACE": 0xBB,
 | 
						|
            "KEYPAD_A": 0xBC,
 | 
						|
            "KEYPAD_B": 0xBD,
 | 
						|
            "KEYPAD_C": 0xBE,
 | 
						|
            "KEYPAD_D": 0xBF,
 | 
						|
            "KEYPAD_E": 0xC0,
 | 
						|
            "KEYPAD_F": 0xC1,
 | 
						|
            "KEYPAD_XOR": 0xC2,
 | 
						|
            "KEYPAD_CARET": 0xC3,
 | 
						|
            "KEYPAD_PERCENT": 0xC4,
 | 
						|
            "KEYPAD_LESS_THAN": 0xC5,
 | 
						|
            "KEYPAD_GREATER_THAN": 0xC6,
 | 
						|
            "KEYPAD_AMPERSAND": 0xC7,
 | 
						|
            "KEYPAD_DOUBLEAMPERSAND": 0xC8,
 | 
						|
            "KEYPAD_PIPE": 0xC9,
 | 
						|
            "KEYPAD_DOUBLEPIPE": 0xCA,
 | 
						|
            "KEYPAD_COLON": 0xCB,
 | 
						|
            "KEYPAD_POUND_SIGN": 0xCC,
 | 
						|
            "KEYPAD_SPACE": 0xCD,
 | 
						|
            "KEYPAD_AT_SIGN": 0xCE,
 | 
						|
            "KEYPAD_EXCLAMATION_POINT": 0xCF,
 | 
						|
            "KEYPAD_MEMORY_STORE": 0xD0,
 | 
						|
            "KEYPAD_MEMORY_RECALL": 0xD1,
 | 
						|
            "KEYPAD_MEMORY_CLEAR": 0xD2,
 | 
						|
            "KEYPAD_MEMORY_ADD": 0xD3,
 | 
						|
            "KEYPAD_MEMORY_SUBTRACT": 0xD4,
 | 
						|
            "KEYPAD_MEMORY_MULTIPLY": 0xD5,
 | 
						|
            "KEYPAD_MEMORY_DIVIDE": 0xD6,
 | 
						|
            "KEYPAD_PLUS_MINUS": 0xD7,
 | 
						|
            "KEYPAD_CLEAR": 0xD8,
 | 
						|
            "KEYPAD_CLEAR_ENTRY": 0xD9,
 | 
						|
            "KEYPAD_BINARY": 0xDA,
 | 
						|
            "KEYPAD_OCTAL": 0xDB,
 | 
						|
            "KEYPAD_DECIMAL": 0xDC,
 | 
						|
            "KEYPAD_HEXADECIMAL": 0xDD,
 | 
						|
            "KEY_LEFT_CTRL": 0xE0,
 | 
						|
            "KEY_LEFT_SHIFT": 0xE1,
 | 
						|
            "KEY_LEFT_ALT": 0xE2,
 | 
						|
            "KEY_LEFT_GUI": 0xE3,
 | 
						|
            "KEY_LEFT_WINDOWS": 0xE3,
 | 
						|
            "KEY_RIGHT_CTRL": 0xE4,
 | 
						|
            "KEY_RIGHT_SHIFT": 0xE5,
 | 
						|
            "KEY_RIGHT_ALT": 0xE6,
 | 
						|
            "KEY_RIGHT_GUI": 0xE7,
 | 
						|
            "KEY_RIGHT_WINDOWS": 0xE7,
 | 
						|
        };
 | 
						|
        this.json = document.getElementById("json");
 | 
						|
        this.jsonCounter = document.getElementById("jsoncounter");
 | 
						|
        this.profile = document.getElementById("string");
 | 
						|
        this.generatejson = document.getElementById("generatejson");
 | 
						|
        this.generatestring = document.getElementById("generatestring");
 | 
						|
        this.error = document.getElementById("error");
 | 
						|
        this.generatestring.addEventListener("click", this.createProfile.bind(this));
 | 
						|
        this.generatejson.addEventListener("click", this.createJson.bind(this));
 | 
						|
        this.lineCountCache = 0;
 | 
						|
        this.json.addEventListener('scroll', function () {
 | 
						|
            _this.jsonCounter.scrollTop = _this.json.scrollTop;
 | 
						|
            _this.jsonCounter.scrollLeft = _this.json.scrollLeft;
 | 
						|
        });
 | 
						|
        this.json.addEventListener('input', function () {
 | 
						|
            _this.line_counter();
 | 
						|
        });
 | 
						|
        this.line_counter();
 | 
						|
    }
 | 
						|
    ProfileGenerator.prototype.createProfile = function (event) {
 | 
						|
        event.preventDefault();
 | 
						|
        var input = this.json.value;
 | 
						|
        var json = {};
 | 
						|
        this.error.innerHTML = "";
 | 
						|
        try {
 | 
						|
            json = JSON.parse(input);
 | 
						|
        }
 | 
						|
        catch (e) {
 | 
						|
            this.error.innerHTML = e.message;
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
        var profiles = [];
 | 
						|
        var lengths = [];
 | 
						|
        var profileCount = 0;
 | 
						|
        for (var pNum in json) {
 | 
						|
            var p = this.parseProfile(json[pNum]);
 | 
						|
            profiles.push(p[1]);
 | 
						|
            lengths.push(p[0]);
 | 
						|
            ++profileCount;
 | 
						|
        }
 | 
						|
        profiles.unshift(this.hexString(profileCount));
 | 
						|
        var length = 3;
 | 
						|
        for (var i = 0; i < lengths.length; ++i) {
 | 
						|
            length += lengths[i];
 | 
						|
        }
 | 
						|
        profiles.unshift(this.hexString(length >> 8) + this.hexString(length & 255));
 | 
						|
        this.profile.value = "cimdit:F" + profiles.join("");
 | 
						|
        return false;
 | 
						|
    };
 | 
						|
    ProfileGenerator.prototype.hexString = function (input) {
 | 
						|
        if (input < 0) {
 | 
						|
            input += 256;
 | 
						|
        }
 | 
						|
        var hex = input.toString(16);
 | 
						|
        if (hex.length < 2) {
 | 
						|
            hex = "0" + hex;
 | 
						|
        }
 | 
						|
        return hex;
 | 
						|
    };
 | 
						|
    ProfileGenerator.prototype.parseProfile = function (json) {
 | 
						|
        var out = "";
 | 
						|
        var length = 2;
 | 
						|
        var tmp = json["name"];
 | 
						|
        for (var pos in tmp) {
 | 
						|
            out += this.hexString(tmp.charCodeAt(pos));
 | 
						|
        }
 | 
						|
        out += "00";
 | 
						|
        length += out.length / 2;
 | 
						|
        if (json["customimage"]) {
 | 
						|
            out += "01";
 | 
						|
            out += json["customimage"];
 | 
						|
            length += 513;
 | 
						|
        }
 | 
						|
        else {
 | 
						|
            out += "00";
 | 
						|
            ++length;
 | 
						|
        }
 | 
						|
        if (json["mappedbuttons"] instanceof Array) {
 | 
						|
            var buttons = this.map(json["mappedbuttons"]);
 | 
						|
            out += this.hexString(buttons.count);
 | 
						|
            out += buttons.string;
 | 
						|
            length += buttons.bytes + 1;
 | 
						|
        }
 | 
						|
        else {
 | 
						|
            out += "00";
 | 
						|
            ++length;
 | 
						|
        }
 | 
						|
        if (json["mappedaxis"] instanceof Array) {
 | 
						|
            var axis = this.map(json["mappedaxis"]);
 | 
						|
            out += this.hexString(axis.count);
 | 
						|
            out += axis.string;
 | 
						|
            length += axis.bytes + 1;
 | 
						|
        }
 | 
						|
        else {
 | 
						|
            out += "00";
 | 
						|
            ++length;
 | 
						|
        }
 | 
						|
        if (json["mappedrotary"] instanceof Array) {
 | 
						|
            var rotary = this.map(json["mappedrotary"]);
 | 
						|
            out += this.hexString(rotary.count);
 | 
						|
            out += rotary.string;
 | 
						|
            length += rotary.bytes + 1;
 | 
						|
        }
 | 
						|
        else {
 | 
						|
            out += "00";
 | 
						|
            ++length;
 | 
						|
        }
 | 
						|
        if (json["macros"] instanceof Array) {
 | 
						|
            var macro = this.createMacroString(json["macros"]);
 | 
						|
            out += this.hexString(macro.count);
 | 
						|
            out += macro.string;
 | 
						|
            length += macro.bytes + 1;
 | 
						|
        }
 | 
						|
        else {
 | 
						|
            out += "00";
 | 
						|
            ++length;
 | 
						|
        }
 | 
						|
        out = this.hexString(length >> 8) + this.hexString(length & 255) + out;
 | 
						|
        return [length, out];
 | 
						|
    };
 | 
						|
    ProfileGenerator.prototype.map = function (entities) {
 | 
						|
        var out = "";
 | 
						|
        var count = 0;
 | 
						|
        for (var i = 0; i < entities.length; ++i) {
 | 
						|
            var entity = entities[i];
 | 
						|
            try {
 | 
						|
                var tmp = this.hexString(entity.source);
 | 
						|
                tmp += this.hexString(this.profileEnum.indexOf(entity.type));
 | 
						|
                if (entity.target !== undefined) {
 | 
						|
                    if (typeof (entity.target) === "number") {
 | 
						|
                        tmp += this.hexString(entity.target);
 | 
						|
                    }
 | 
						|
                    else {
 | 
						|
                        tmp += this.hexString(this.keyLookup[entity.target]);
 | 
						|
                    }
 | 
						|
                }
 | 
						|
                else if (entity.channel !== undefined && entity.note !== undefined && entity.velocity !== undefined && entity.type === 'MIDI_NOTE') {
 | 
						|
                    tmp += this.hexString(entity.channel);
 | 
						|
                    tmp += this.hexString(entity.note);
 | 
						|
                    tmp += this.hexString(entity.velocity);
 | 
						|
                }
 | 
						|
                else if (entity.channel !== undefined && entity.control !== undefined && entity.value !== undefined && entity.type === 'MIDI_CTRL') {
 | 
						|
                    tmp += this.hexString(entity.channel);
 | 
						|
                    tmp += this.hexString(entity.control);
 | 
						|
                    tmp += this.hexString(entity.value);
 | 
						|
                }
 | 
						|
                else if (entity.channel !== undefined && entity.value !== undefined && entity.type === 'MIDI_PITCH') {
 | 
						|
                    tmp += this.hexString(entity.channel);
 | 
						|
                    tmp += this.hexString(entity.value >> 8);
 | 
						|
                    tmp += this.hexString(entity.value & 255);
 | 
						|
                }
 | 
						|
                else if (entity.channel !== undefined && entity.control !== undefined && entity.type === 'MIDI_CTRL_AXIS') {
 | 
						|
                    tmp += this.hexString(entity.channel);
 | 
						|
                    tmp += this.hexString(entity.control);
 | 
						|
                }
 | 
						|
                else if (entity.channel !== undefined && entity.type === 'MIDI_PITCH_AXIS') {
 | 
						|
                    tmp += this.hexString(entity.channel);
 | 
						|
                }
 | 
						|
                else if (entity.axis !== undefined) {
 | 
						|
                    tmp += this.hexString(entity.axis);
 | 
						|
                }
 | 
						|
                else if (entity.control !== undefined) {
 | 
						|
                    tmp += this.hexString(entity.control);
 | 
						|
                }
 | 
						|
                else if (entity.value !== undefined) {
 | 
						|
                    tmp += this.hexString(entity.value);
 | 
						|
                }
 | 
						|
                else if (entity.macro !== undefined) {
 | 
						|
                    tmp += this.hexString(entity.macro);
 | 
						|
                }
 | 
						|
                else {
 | 
						|
                    tmp += "00";
 | 
						|
                }
 | 
						|
                out += tmp;
 | 
						|
                ++count;
 | 
						|
            }
 | 
						|
            catch (e) {
 | 
						|
                console.log(e);
 | 
						|
            }
 | 
						|
        }
 | 
						|
        return { bytes: out.length / 2, count: count, string: out };
 | 
						|
    };
 | 
						|
    ProfileGenerator.prototype.createMacroString = function (macros) {
 | 
						|
        var bytes = 0;
 | 
						|
        var out = "";
 | 
						|
        for (var i = 0; i < macros.length; ++i) {
 | 
						|
            var macro = macros[i];
 | 
						|
            var append = false;
 | 
						|
            for (var j = 0; j < macro.length; ++j) {
 | 
						|
                var token = macro[j];
 | 
						|
                if (token === "MACRO_SPEED" || token === "MACRO_MOUSE_WHEEL" || token.toString().match(/^MACRO_(JOY|MOUSE)_(PRESS|RELEASE)$/)) {
 | 
						|
                    if (append) {
 | 
						|
                        append = false;
 | 
						|
                        out += "00";
 | 
						|
                        ++bytes;
 | 
						|
                    }
 | 
						|
                    out += this.hexString(this.macroEnum.indexOf(token)) + this.hexString(macro[++j]);
 | 
						|
                    bytes += 2;
 | 
						|
                }
 | 
						|
                else if (token === "MACRO_DELAY") {
 | 
						|
                    if (append) {
 | 
						|
                        append = false;
 | 
						|
                        out += "00";
 | 
						|
                        ++bytes;
 | 
						|
                    }
 | 
						|
                    var value = macro[++j];
 | 
						|
                    out += this.hexString(this.macroEnum.indexOf(token)) + this.hexString((value >> 8)) + this.hexString(value & 255);
 | 
						|
                    bytes += 3;
 | 
						|
                }
 | 
						|
                else if (token.toString().match(/^MACRO_KEY_(PRESS|RELEASE)$/) || token === "MACRO_TYPE") {
 | 
						|
                    if (append) {
 | 
						|
                        append = false;
 | 
						|
                        out += "00";
 | 
						|
                        ++bytes;
 | 
						|
                    }
 | 
						|
                    out += this.hexString(this.macroEnum.indexOf(token));
 | 
						|
                    append = true;
 | 
						|
                    ++bytes;
 | 
						|
                }
 | 
						|
                else if (token === "MACRO_MOUSE_REL_X" || token === "MACRO_MOUSE_REL_Y") {
 | 
						|
                    if (append) {
 | 
						|
                        append = false;
 | 
						|
                        out += "00";
 | 
						|
                        ++bytes;
 | 
						|
                    }
 | 
						|
                    out += this.hexString(this.macroEnum.indexOf(token)) + this.hexString(macro[++j]);
 | 
						|
                    bytes += 2;
 | 
						|
                }
 | 
						|
                else if (token === "MACRO_MOUSE_REL_X_AXIS" || token === "MACRO_MOUSE_REL_Y_AXIS") {
 | 
						|
                    if (append) {
 | 
						|
                        append = false;
 | 
						|
                        out += "00";
 | 
						|
                        ++bytes;
 | 
						|
                    }
 | 
						|
                    if (macro[j + 1] == -1) {
 | 
						|
                        out += this.hexString(this.macroEnum.indexOf(token)) + this.hexString(macro[++j]);
 | 
						|
                        bytes += 2;
 | 
						|
                    }
 | 
						|
                    else {
 | 
						|
                        out += this.hexString(this.macroEnum.indexOf(token)) + this.hexString(macro[++j]) + this.hexString(macro[++j]);
 | 
						|
                        bytes += 3;
 | 
						|
                    }
 | 
						|
                }
 | 
						|
                else if (token === "MACRO_MIDI_NOTEON" || token === "MACRO_MIDI_NOTEOFF") {
 | 
						|
                    out += this.hexString(this.macroEnum.indexOf(token)) + this.hexString(macro[++j]) + this.hexString(macro[++j]) + this.hexString(macro[++j]);
 | 
						|
                    bytes += 4;
 | 
						|
                }
 | 
						|
                else if (token === "MACRO_MIDI_CTRL") {
 | 
						|
                    out += this.hexString(this.macroEnum.indexOf(token)) + this.hexString(macro[++j]) + this.hexString(macro[++j]) + this.hexString(macro[++j]);
 | 
						|
                    bytes += 4;
 | 
						|
                }
 | 
						|
                else if (token === "MACRO_MIDI_PITCH") {
 | 
						|
                    out += this.hexString(this.macroEnum.indexOf(token)) + this.hexString(macro[++j]);
 | 
						|
                    const value = macro[++j];
 | 
						|
                    out += this.hexString(value >> 8) + this.hexString(value & 255);
 | 
						|
                    bytes += 4;
 | 
						|
                }
 | 
						|
                else {
 | 
						|
                    if (typeof (token) === "number") {
 | 
						|
                        out += this.hexString(token);
 | 
						|
                        ++bytes;
 | 
						|
                    }
 | 
						|
                    else {
 | 
						|
                        if (token.startsWith("KEY_")) {
 | 
						|
                            out += this.hexString(this.keyLookup[token]);
 | 
						|
                            ++bytes;
 | 
						|
                        }
 | 
						|
                        else {
 | 
						|
                            for (var k = 0; k < token.length; ++k) {
 | 
						|
                                out += this.hexString(this.keyLookup["KEY_" + token[k].toUpperCase()]);
 | 
						|
                                ++bytes;
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                }
 | 
						|
            }
 | 
						|
            if (append) {
 | 
						|
                append = false;
 | 
						|
                out += "00";
 | 
						|
                ++bytes;
 | 
						|
            }
 | 
						|
            out += "00";
 | 
						|
            ++bytes;
 | 
						|
        }
 | 
						|
        return { bytes: bytes, count: macros.length, string: out };
 | 
						|
    };
 | 
						|
    ProfileGenerator.prototype.fromHexS = function (input) {
 | 
						|
        var ret = parseInt(input, 16);
 | 
						|
        if (ret > 127)
 | 
						|
            ret -= 256;
 | 
						|
        return ret;
 | 
						|
    };
 | 
						|
    ProfileGenerator.prototype.fromHexU = function (input) {
 | 
						|
        return parseInt(input, 16);
 | 
						|
    };
 | 
						|
    ProfileGenerator.prototype.createJson = function (event) {
 | 
						|
        event.preventDefault();
 | 
						|
        var string = this.profile.value;
 | 
						|
        string = string.replace("cimdit:F", "");
 | 
						|
        var tokens = string.match(/.{1,2}/g);
 | 
						|
        tokens.shift();
 | 
						|
        tokens.shift();
 | 
						|
        var json;
 | 
						|
        json = [];
 | 
						|
        var numProfile = this.fromHexU(tokens.shift());
 | 
						|
        for (var i = 0; i < numProfile; ++i) {
 | 
						|
            json.push(this.createProfileFromTokens(tokens));
 | 
						|
        }
 | 
						|
        this.json.value = JSON.stringify(json, null, "  ");
 | 
						|
        return false;
 | 
						|
    };
 | 
						|
    ProfileGenerator.prototype.createProfileFromTokens = function (tokens) {
 | 
						|
        tokens.shift();
 | 
						|
        tokens.shift();
 | 
						|
        var name = "";
 | 
						|
        var char;
 | 
						|
        do {
 | 
						|
            char = this.fromHexU(tokens.shift());
 | 
						|
            if (char)
 | 
						|
                name += String.fromCharCode(char);
 | 
						|
        } while (char !== 0 && tokens.length > 0);
 | 
						|
        var ret = { name: name };
 | 
						|
        var customImage = tokens.shift();
 | 
						|
        if (customImage != "00") {
 | 
						|
            var cu = "";
 | 
						|
            for (var i = 0; i < 512; ++i) {
 | 
						|
                cu += tokens.shift();
 | 
						|
            }
 | 
						|
            ret.customimage = cu;
 | 
						|
        }
 | 
						|
        var mappedButtons = [];
 | 
						|
        var numButtons = this.fromHexU(tokens.shift());
 | 
						|
        for (var i = 0; i < numButtons; ++i) {
 | 
						|
            mappedButtons.push(this.createEntityFromTokens(tokens));
 | 
						|
        }
 | 
						|
        ret.mappedbuttons = mappedButtons;
 | 
						|
        var mappedAxis = [];
 | 
						|
        var numAxis = this.fromHexU(tokens.shift());
 | 
						|
        for (var i = 0; i < numAxis; ++i) {
 | 
						|
            mappedAxis.push(this.createEntityFromTokens(tokens));
 | 
						|
        }
 | 
						|
        ret.mappedaxis = mappedAxis;
 | 
						|
        var mappedRotary = [];
 | 
						|
        var numRotary = this.fromHexU(tokens.shift());
 | 
						|
        for (var i = 0; i < numRotary; ++i) {
 | 
						|
            mappedRotary.push(this.createEntityFromTokens(tokens));
 | 
						|
        }
 | 
						|
        ret.mappedrotary = mappedRotary;
 | 
						|
        var macros = [];
 | 
						|
        var numMacro = this.fromHexU(tokens.shift());
 | 
						|
        for (var i = 0; i < numMacro; ++i) {
 | 
						|
            macros.push(this.createMacrosFromTokens(tokens));
 | 
						|
        }
 | 
						|
        ret.macros = macros;
 | 
						|
        return ret;
 | 
						|
    };
 | 
						|
    ProfileGenerator.prototype.createEntityFromTokens = function (tokens) {
 | 
						|
        var entity = { source: this.fromHexU(tokens.shift()), type: this.profileEnum[this.fromHexU(tokens.shift())] };
 | 
						|
        if (entity.type === 'JOYSTICK_BUTTON' || entity.type === 'MOUSE_BUTTON') {
 | 
						|
            entity.target = this.fromHexU(tokens.shift());
 | 
						|
        }
 | 
						|
        else if (entity.type === 'KEYBOARD_BUTTON') {
 | 
						|
            entity.target = this.getKey(this.fromHexU(tokens.shift()));
 | 
						|
        }
 | 
						|
        else if (entity.type === 'JOYSTICK_AXIS') {
 | 
						|
            entity.axis = this.fromHexU(tokens.shift());
 | 
						|
        }
 | 
						|
        else if (entity.type === 'MOUSE_REL_X_AXIS' || entity.type === 'MOUSE_REL_Y_AXIS' || entity.type === 'MOUSE_REL_WHEEL') {
 | 
						|
            entity.value = this.fromHexS(tokens.shift());
 | 
						|
        }
 | 
						|
        else if (entity.type === 'MACRO_PRESS' || entity.type === 'MACRO_RELEASE') {
 | 
						|
            entity.macro = this.fromHexU(tokens.shift());
 | 
						|
        }
 | 
						|
        else if (entity.type === 'MIDI_NOTE') {
 | 
						|
            entity.channel = this.fromHexU(tokens.shift());
 | 
						|
            entity.note = this.fromHexU(tokens.shift());
 | 
						|
            entity.velocity = this.fromHexU(tokens.shift());
 | 
						|
        }
 | 
						|
        else if (entity.type === 'MIDI_CTRL') {
 | 
						|
            entity.channel = this.fromHexU(tokens.shift());
 | 
						|
            entity.control = this.fromHexU(tokens.shift());
 | 
						|
            entity.value = this.fromHexU(tokens.shift());
 | 
						|
        }
 | 
						|
        else if (entity.type === 'MIDI_PITCH') {
 | 
						|
            entity.channel = this.fromHexU(tokens.shift());
 | 
						|
            entity.value = this.fromHexU(tokens.shift()) << 8 + this.fromHexU(tokens.shift());
 | 
						|
        }
 | 
						|
        else if (entity.type === 'MIDI_CTRL_AXIS') {
 | 
						|
            entity.channel = this.fromHexU(tokens.shift());
 | 
						|
            entity.control = this.fromHexU(tokens.shift());
 | 
						|
        }
 | 
						|
        else if (entity.type === 'MIDI_PITCH_AXIS') {
 | 
						|
            entity.channel = this.fromHexU(tokens.shift());
 | 
						|
        }
 | 
						|
        else {
 | 
						|
            tokens.shift();
 | 
						|
        }
 | 
						|
        return entity;
 | 
						|
    };
 | 
						|
    ProfileGenerator.prototype.getKey = function (input) {
 | 
						|
        var _this = this;
 | 
						|
        return Object.keys(this.keyLookup).find(function (k) { return _this.keyLookup[k] === input; });
 | 
						|
    };
 | 
						|
    ProfileGenerator.prototype.createMacrosFromTokens = function (tokens) {
 | 
						|
        var macro = [];
 | 
						|
        do {
 | 
						|
            var token = this.macroEnum[this.fromHexU(tokens.shift())];
 | 
						|
            if (token !== "MACRO_NULL") {
 | 
						|
                macro.push(token);
 | 
						|
            }
 | 
						|
            switch (token) {
 | 
						|
                case "MACRO_NULL":
 | 
						|
                    break;
 | 
						|
                case "MACRO_SPEED":
 | 
						|
                case "MACRO_JOY_PRESS":
 | 
						|
                case "MACRO_JOY_RELEASE":
 | 
						|
                case "MACRO_MOUSE_PRESS":
 | 
						|
                case "MACRO_MOUSE_RELEASE":
 | 
						|
                case "MACRO_MOUSE_WHEEL":
 | 
						|
                    macro.push(this.fromHexU(tokens.shift()));
 | 
						|
                    break;
 | 
						|
                case "MACRO_DELAY":
 | 
						|
                    macro.push((this.fromHexU(tokens.shift()) << 8) + this.fromHexU(tokens.shift()));
 | 
						|
                    break;
 | 
						|
                case "MACRO_KEY_PRESS":
 | 
						|
                case "MACRO_KEY_RELEASE":
 | 
						|
                case "MACRO_TYPE":
 | 
						|
                    var next;
 | 
						|
                    var tmp = "";
 | 
						|
                    do {
 | 
						|
                        next = this.fromHexU(tokens.shift());
 | 
						|
                        if (next != 0) {
 | 
						|
                            var k = this.getKey(next);
 | 
						|
                            if (k.match(/^KEY_\S$/)) {
 | 
						|
                                tmp += k[4].toLowerCase();
 | 
						|
                            }
 | 
						|
                            else {
 | 
						|
                                if (tmp !== "")
 | 
						|
                                    macro.push(tmp);
 | 
						|
                                tmp = "";
 | 
						|
                                macro.push(k);
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                    } while (next != 0);
 | 
						|
                    if (tmp !== "") {
 | 
						|
                        macro.push(tmp);
 | 
						|
                    }
 | 
						|
                    break;
 | 
						|
                case "MACRO_MOUSE_REL_X":
 | 
						|
                case "MACRO_MOUSE_REL_Y":
 | 
						|
                    var next = this.fromHexS(tokens.shift());
 | 
						|
                    macro.push(next);
 | 
						|
                    break;
 | 
						|
                case "MACRO_MOUSE_REL_X_AXIS":
 | 
						|
                case "MACRO_MOUSE_REL_Y_AXIS":
 | 
						|
                    var next = this.fromHexS(tokens.shift());
 | 
						|
                    macro.push(next);
 | 
						|
                    if (next != -1) {
 | 
						|
                        macro.push(this.fromHexS(tokens.shift()));
 | 
						|
                    }
 | 
						|
                    break;
 | 
						|
                case "MACRO_MIDI_NOTEON":
 | 
						|
                case "MACRO_MIDI_NOTEOFF":
 | 
						|
                    macro.push(this.fromHexS(tokens.shift()));
 | 
						|
                    macro.push(this.fromHexS(tokens.shift()));
 | 
						|
                    macro.push(this.fromHexS(tokens.shift()));
 | 
						|
                    break;
 | 
						|
                case "MACRO_MIDI_CTRL":
 | 
						|
                    macro.push(this.fromHexS(tokens.shift()));
 | 
						|
                    macro.push(this.fromHexS(tokens.shift()));
 | 
						|
                    macro.push(this.fromHexS(tokens.shift()));
 | 
						|
                    break;
 | 
						|
                case "MACRO_MIDI_PITCH":
 | 
						|
                    macro.push(this.fromHexS(tokens.shift()));
 | 
						|
                    macro.push(this.fromHexU(tokens.shift()) << 8 + this.fromHexU(tokens.shift()));
 | 
						|
                    break;
 | 
						|
            }
 | 
						|
        } while (token !== "MACRO_NULL" && tokens.length > 0);
 | 
						|
        return macro;
 | 
						|
    };
 | 
						|
    ProfileGenerator.prototype.line_counter = function () {
 | 
						|
        var lineCount = this.json.value.split('\n').length;
 | 
						|
        var outarr = new Array();
 | 
						|
        if (this.lineCountCache != lineCount) {
 | 
						|
            for (var x = 0; x < lineCount; x++) {
 | 
						|
                outarr[x] = (x + 1);
 | 
						|
            }
 | 
						|
            this.jsonCounter.value = outarr.join('\n');
 | 
						|
        }
 | 
						|
        this.lineCountCache = lineCount;
 | 
						|
    };
 | 
						|
    return ProfileGenerator;
 | 
						|
})();
 | 
						|
 | 
						|
 | 
						|
</script>
 | 
						|
</body>
 | 
						|
</html> |