Keyboard and HOTAS Reference Sheet Generator

Status
Thread Closed: Not open for further replies.
Yes, you're right, the code as it stands doesn't catrer for dual keyboard bindings. I'll see what I can do, although the EDDI internationalisation project is taking up all my spare cycles at the moment.
 
Hello,

I'm getting a "Unknown Controller Detected". It's a CH Throttle Quadrant USB. The reference is "hckjkz"

Thanks!
 
Last edited:
This is a great tool. It was easily usable when I got my T16K FCS throttle & stick last year, with someones existing bindings. I recently upgraded my stick to a VKB Gladiator mk II, and spent a while this morning doing some bindings for it. The Gladiator has some stuff on the wrong buttons: primary trigger is currently showing up at C1; secondary trigger at EJECT; Flaps Forward at Primary Trigger; Flaps Back at Secondary Trigger; EJECT at B3. Here's my current mapping https://edrefcard.info/binds/haagfn.

Fly Smart, Commanders!
 
Hi,
I just finished converting my old Thrustmaster FLCS and TQS over to USB. When I tried to gen up a reference card I received the following message:
You have a device that is not supported at this time. Please report details of your device by following the link at the bottom of this page supplying the reference "odjjic" and we will attempt to add support for it.

Any possible help with this? Looks like an absolutely stunning tool. I hope you can get it to work with my FLCS/TQS combo.

thx
 
Error drawing the graphics?

I received this error - happens if any / all options checked. Looks like it has something to do with drawing the HOTAS graphics?


A problem occurred in a Python script. Here is the sequence of function calls leading up to the error, in the order they occurred.
/var/www/edrefcard.info/www/scripts/bindings.py in ()
1116
1117 printHTML(mode, config, public, createdImages, deviceForBlockImage, errors)
1118
1119 if __name__ == '__main__':
=> 1120 main()
main = <function main>
/var/www/edrefcard.info/www/scripts/bindings.py in main()
1097
1098 if devices.get('Keyboard::0') is not None:
=> 1099 appendKeyboardImage(createdImages, physicalKeys, modifiers, displayGroups, runId, public)
1100
1101 for deviceKey, device in devices.items():
global appendKeyboardImage = <function appendKeyboardImage>, createdImages = ['TFlightHOTASX::0'], physicalKeys = {'Keyboard::0::Key_0': {'BaseKey': 'Key_0', 'Binds': {'Unmodified': {'Controls': OrderedDict([('TargetWingman2', {'Group': 'Ship'...: 'Digital', 'OverriddenBy': [], 'Order': 403})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_0'}, 'Keyboard::0::Key_1': {'BaseKey': 'Key_1', 'Binds': {'Unmodified': {'Controls': OrderedDict([('FocusLeftPanel', {'Group': 'Ship'...: 'Digital', 'OverriddenBy': [], 'Order': 504})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_1'}, 'Keyboard::0::Key_2': {'BaseKey': 'Key_2', 'Binds': {'Unmodified': {'Controls': OrderedDict([('FocusCommsPanel', {'Group': 'Ship...: 'Digital', 'OverriddenBy': [], 'Order': 502})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_2'}, 'Keyboard::0::Key_3': {'BaseKey': 'Key_3', 'Binds': {'Keyboard::0::Key_LeftShift': {'Controls': OrderedDict([('UseShieldCell', {'Group': 'Ship',...'Digital', 'Category': 'Combat', 'Order': 117})])}, 'Unmodified': {'Controls': OrderedDict([('FocusRadarPanel', {'Group': 'Ship...: 'Digital', 'OverriddenBy': [], 'Order': 506})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_3'}, 'Keyboard::0::Key_4': {'BaseKey': 'Key_4', 'Binds': {'Unmodified': {'Controls': OrderedDict([('FocusRightPanel', {'Group': 'Ship...: 'Digital', 'OverriddenBy': [], 'Order': 505})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_4'}, 'Keyboard::0::Key_8': {'BaseKey': 'Key_8', 'Binds': {'Unmodified': {'Controls': OrderedDict([('TargetWingman0', {'Group': 'Ship'...: 'Digital', 'OverriddenBy': [], 'Order': 401})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_8'}, 'Keyboard::0::Key_9': {'BaseKey': 'Key_9', 'Binds': {'Unmodified': {'Controls': OrderedDict([('TargetWingman1', {'Group': 'Ship'...: 'Digital', 'OverriddenBy': [], 'Order': 402})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_9'}, 'Keyboard::0::Key_A': {'BaseKey': 'Key_A', 'Binds': {'Unmodified': {'Controls': OrderedDict([('YawLeftButton', {'Group': 'Ship',...gital', 'Category': 'Navigation', 'Order': 11})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_A'}, 'Keyboard::0::Key_B': {'BaseKey': 'Key_B', 'Binds': {'Unmodified': {'Controls': OrderedDict([('CyclePreviousTarget', {'Group': '...'Digital', 'Category': 'Combat', 'Order': 104})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_B'}, 'Keyboard::0::Key_C': {'BaseKey': 'Key_C', 'Binds': {'Unmodified': {'Controls': OrderedDict([('FireChaffLauncher', {'Group': 'Sh...'Digital', 'Category': 'Combat', 'Order': 114})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_C'}, ...}, modifiers = {'Keyboard::0::': [{'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': '', 'ModifierKey': 'Keyboard::0::', 'Number': 101}], 'Keyboard::0::Key_LeftAlt': [{'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_LeftAlt', 'ModifierKey': 'Keyboard::0::Key_LeftAlt', 'Number': 103}], 'Keyboard::0::Key_LeftShift': [{'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_LeftShift', 'ModifierKey': 'Keyboard::0::Key_LeftShift', 'Number': 102}], 'ThrustMasterTFlightHOTASX::0::Joy_5': [{'Device': 'ThrustMasterTFlightHOTASX', 'DeviceIndex': 0, 'Key': 'Joy_5', 'ModifierKey': 'ThrustMasterTFlightHOTASX::0::Joy_5', 'Number': 1}], 'ThrustMasterTFlightHOTASX::0::Joy_6': [{'Device': 'ThrustMasterTFlightHOTASX', 'DeviceIndex': 0, 'Key': 'Joy_6', 'ModifierKey': 'ThrustMasterTFlightHOTASX::0::Joy_6', 'Number': 4}], 'ThrustMasterTFlightHOTASX::0::Joy_7': [{'Device': 'ThrustMasterTFlightHOTASX', 'DeviceIndex': 0, 'Key': 'Joy_7', 'ModifierKey': 'ThrustMasterTFlightHOTASX::0::Joy_7', 'Number': 3}], 'ThrustMasterTFlightHOTASX::0::Joy_8': [{'Device': 'ThrustMasterTFlightHOTASX', 'DeviceIndex': 0, 'Key': 'Joy_8', 'ModifierKey': 'ThrustMasterTFlightHOTASX::0::Joy_8', 'Number': 2}]}, displayGroups = ['Ship'], runId = 'zzdede', public = False
/var/www/edrefcard.info/www/scripts/bindings.py in appendKeyboardImage(createdImages=['TFlightHOTASX::0'], physicalKeys={'Keyboard::0::Key_0': {'BaseKey': 'Key_0', 'Binds': {'Unmodified': {'Controls': OrderedDict([('TargetWingman2', {'Group': 'Ship'...: 'Digital', 'OverriddenBy': [], 'Order': 403})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_0'}, 'Keyboard::0::Key_1': {'BaseKey': 'Key_1', 'Binds': {'Unmodified': {'Controls': OrderedDict([('FocusLeftPanel', {'Group': 'Ship'...: 'Digital', 'OverriddenBy': [], 'Order': 504})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_1'}, 'Keyboard::0::Key_2': {'BaseKey': 'Key_2', 'Binds': {'Unmodified': {'Controls': OrderedDict([('FocusCommsPanel', {'Group': 'Ship...: 'Digital', 'OverriddenBy': [], 'Order': 502})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_2'}, 'Keyboard::0::Key_3': {'BaseKey': 'Key_3', 'Binds': {'Keyboard::0::Key_LeftShift': {'Controls': OrderedDict([('UseShieldCell', {'Group': 'Ship',...'Digital', 'Category': 'Combat', 'Order': 117})])}, 'Unmodified': {'Controls': OrderedDict([('FocusRadarPanel', {'Group': 'Ship...: 'Digital', 'OverriddenBy': [], 'Order': 506})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_3'}, 'Keyboard::0::Key_4': {'BaseKey': 'Key_4', 'Binds': {'Unmodified': {'Controls': OrderedDict([('FocusRightPanel', {'Group': 'Ship...: 'Digital', 'OverriddenBy': [], 'Order': 505})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_4'}, 'Keyboard::0::Key_8': {'BaseKey': 'Key_8', 'Binds': {'Unmodified': {'Controls': OrderedDict([('TargetWingman0', {'Group': 'Ship'...: 'Digital', 'OverriddenBy': [], 'Order': 401})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_8'}, 'Keyboard::0::Key_9': {'BaseKey': 'Key_9', 'Binds': {'Unmodified': {'Controls': OrderedDict([('TargetWingman1', {'Group': 'Ship'...: 'Digital', 'OverriddenBy': [], 'Order': 402})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_9'}, 'Keyboard::0::Key_A': {'BaseKey': 'Key_A', 'Binds': {'Unmodified': {'Controls': OrderedDict([('YawLeftButton', {'Group': 'Ship',...gital', 'Category': 'Navigation', 'Order': 11})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_A'}, 'Keyboard::0::Key_B': {'BaseKey': 'Key_B', 'Binds': {'Unmodified': {'Controls': OrderedDict([('CyclePreviousTarget', {'Group': '...'Digital', 'Category': 'Combat', 'Order': 104})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_B'}, 'Keyboard::0::Key_C': {'BaseKey': 'Key_C', 'Binds': {'Unmodified': {'Controls': OrderedDict([('FireChaffLauncher', {'Group': 'Sh...'Digital', 'Category': 'Combat', 'Order': 114})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_C'}, ...}, modifiers={'Keyboard::0::': [{'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': '', 'ModifierKey': 'Keyboard::0::', 'Number': 101}], 'Keyboard::0::Key_LeftAlt': [{'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_LeftAlt', 'ModifierKey': 'Keyboard::0::Key_LeftAlt', 'Number': 103}], 'Keyboard::0::Key_LeftShift': [{'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_LeftShift', 'ModifierKey': 'Keyboard::0::Key_LeftShift', 'Number': 102}], 'ThrustMasterTFlightHOTASX::0::Joy_5': [{'Device': 'ThrustMasterTFlightHOTASX', 'DeviceIndex': 0, 'Key': 'Joy_5', 'ModifierKey': 'ThrustMasterTFlightHOTASX::0::Joy_5', 'Number': 1}], 'ThrustMasterTFlightHOTASX::0::Joy_6': [{'Device': 'ThrustMasterTFlightHOTASX', 'DeviceIndex': 0, 'Key': 'Joy_6', 'ModifierKey': 'ThrustMasterTFlightHOTASX::0::Joy_6', 'Number': 4}], 'ThrustMasterTFlightHOTASX::0::Joy_7': [{'Device': 'ThrustMasterTFlightHOTASX', 'DeviceIndex': 0, 'Key': 'Joy_7', 'ModifierKey': 'ThrustMasterTFlightHOTASX::0::Joy_7', 'Number': 3}], 'ThrustMasterTFlightHOTASX::0::Joy_8': [{'Device': 'ThrustMasterTFlightHOTASX', 'DeviceIndex': 0, 'Key': 'Joy_8', 'ModifierKey': 'ThrustMasterTFlightHOTASX::0::Joy_8', 'Number': 2}]}, displayGroups=['Ship'], runId='zzdede', public=False)
298
299 fontSize = fontSizeForKeyBoardItems(physicalKeys)
=> 300 createKeyboardImage(physicalKeys, modifiers, 'keyboard', ['Keyboard'], fontSize, displayGroups, runId, public)
301 createdImages.append('Keyboard')
302
global createKeyboardImage = <function createKeyboardImage>, physicalKeys = {'Keyboard::0::Key_0': {'BaseKey': 'Key_0', 'Binds': {'Unmodified': {'Controls': OrderedDict([('TargetWingman2', {'Group': 'Ship'...: 'Digital', 'OverriddenBy': [], 'Order': 403})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_0'}, 'Keyboard::0::Key_1': {'BaseKey': 'Key_1', 'Binds': {'Unmodified': {'Controls': OrderedDict([('FocusLeftPanel', {'Group': 'Ship'...: 'Digital', 'OverriddenBy': [], 'Order': 504})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_1'}, 'Keyboard::0::Key_2': {'BaseKey': 'Key_2', 'Binds': {'Unmodified': {'Controls': OrderedDict([('FocusCommsPanel', {'Group': 'Ship...: 'Digital', 'OverriddenBy': [], 'Order': 502})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_2'}, 'Keyboard::0::Key_3': {'BaseKey': 'Key_3', 'Binds': {'Keyboard::0::Key_LeftShift': {'Controls': OrderedDict([('UseShieldCell', {'Group': 'Ship',...'Digital', 'Category': 'Combat', 'Order': 117})])}, 'Unmodified': {'Controls': OrderedDict([('FocusRadarPanel', {'Group': 'Ship...: 'Digital', 'OverriddenBy': [], 'Order': 506})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_3'}, 'Keyboard::0::Key_4': {'BaseKey': 'Key_4', 'Binds': {'Unmodified': {'Controls': OrderedDict([('FocusRightPanel', {'Group': 'Ship...: 'Digital', 'OverriddenBy': [], 'Order': 505})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_4'}, 'Keyboard::0::Key_8': {'BaseKey': 'Key_8', 'Binds': {'Unmodified': {'Controls': OrderedDict([('TargetWingman0', {'Group': 'Ship'...: 'Digital', 'OverriddenBy': [], 'Order': 401})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_8'}, 'Keyboard::0::Key_9': {'BaseKey': 'Key_9', 'Binds': {'Unmodified': {'Controls': OrderedDict([('TargetWingman1', {'Group': 'Ship'...: 'Digital', 'OverriddenBy': [], 'Order': 402})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_9'}, 'Keyboard::0::Key_A': {'BaseKey': 'Key_A', 'Binds': {'Unmodified': {'Controls': OrderedDict([('YawLeftButton', {'Group': 'Ship',...gital', 'Category': 'Navigation', 'Order': 11})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_A'}, 'Keyboard::0::Key_B': {'BaseKey': 'Key_B', 'Binds': {'Unmodified': {'Controls': OrderedDict([('CyclePreviousTarget', {'Group': '...'Digital', 'Category': 'Combat', 'Order': 104})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_B'}, 'Keyboard::0::Key_C': {'BaseKey': 'Key_C', 'Binds': {'Unmodified': {'Controls': OrderedDict([('FireChaffLauncher', {'Group': 'Sh...'Digital', 'Category': 'Combat', 'Order': 114})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_C'}, ...}, modifiers = {'Keyboard::0::': [{'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': '', 'ModifierKey': 'Keyboard::0::', 'Number': 101}], 'Keyboard::0::Key_LeftAlt': [{'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_LeftAlt', 'ModifierKey': 'Keyboard::0::Key_LeftAlt', 'Number': 103}], 'Keyboard::0::Key_LeftShift': [{'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_LeftShift', 'ModifierKey': 'Keyboard::0::Key_LeftShift', 'Number': 102}], 'ThrustMasterTFlightHOTASX::0::Joy_5': [{'Device': 'ThrustMasterTFlightHOTASX', 'DeviceIndex': 0, 'Key': 'Joy_5', 'ModifierKey': 'ThrustMasterTFlightHOTASX::0::Joy_5', 'Number': 1}], 'ThrustMasterTFlightHOTASX::0::Joy_6': [{'Device': 'ThrustMasterTFlightHOTASX', 'DeviceIndex': 0, 'Key': 'Joy_6', 'ModifierKey': 'ThrustMasterTFlightHOTASX::0::Joy_6', 'Number': 4}], 'ThrustMasterTFlightHOTASX::0::Joy_7': [{'Device': 'ThrustMasterTFlightHOTASX', 'DeviceIndex': 0, 'Key': 'Joy_7', 'ModifierKey': 'ThrustMasterTFlightHOTASX::0::Joy_7', 'Number': 3}], 'ThrustMasterTFlightHOTASX::0::Joy_8': [{'Device': 'ThrustMasterTFlightHOTASX', 'DeviceIndex': 0, 'Key': 'Joy_8', 'ModifierKey': 'ThrustMasterTFlightHOTASX::0::Joy_8', 'Number': 2}]}, fontSize = 39, displayGroups = ['Ship'], runId = 'zzdede', public = False
/var/www/edrefcard.info/www/scripts/bindings.py in createKeyboardImage(physicalKeys={'Keyboard::0::Key_0': {'BaseKey': 'Key_0', 'Binds': {'Unmodified': {'Controls': OrderedDict([('TargetWingman2', {'Group': 'Ship'...: 'Digital', 'OverriddenBy': [], 'Order': 403})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_0'}, 'Keyboard::0::Key_1': {'BaseKey': 'Key_1', 'Binds': {'Unmodified': {'Controls': OrderedDict([('FocusLeftPanel', {'Group': 'Ship'...: 'Digital', 'OverriddenBy': [], 'Order': 504})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_1'}, 'Keyboard::0::Key_2': {'BaseKey': 'Key_2', 'Binds': {'Unmodified': {'Controls': OrderedDict([('FocusCommsPanel', {'Group': 'Ship...: 'Digital', 'OverriddenBy': [], 'Order': 502})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_2'}, 'Keyboard::0::Key_3': {'BaseKey': 'Key_3', 'Binds': {'Keyboard::0::Key_LeftShift': {'Controls': OrderedDict([('UseShieldCell', {'Group': 'Ship',...'Digital', 'Category': 'Combat', 'Order': 117})])}, 'Unmodified': {'Controls': OrderedDict([('FocusRadarPanel', {'Group': 'Ship...: 'Digital', 'OverriddenBy': [], 'Order': 506})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_3'}, 'Keyboard::0::Key_4': {'BaseKey': 'Key_4', 'Binds': {'Unmodified': {'Controls': OrderedDict([('FocusRightPanel', {'Group': 'Ship...: 'Digital', 'OverriddenBy': [], 'Order': 505})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_4'}, 'Keyboard::0::Key_8': {'BaseKey': 'Key_8', 'Binds': {'Unmodified': {'Controls': OrderedDict([('TargetWingman0', {'Group': 'Ship'...: 'Digital', 'OverriddenBy': [], 'Order': 401})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_8'}, 'Keyboard::0::Key_9': {'BaseKey': 'Key_9', 'Binds': {'Unmodified': {'Controls': OrderedDict([('TargetWingman1', {'Group': 'Ship'...: 'Digital', 'OverriddenBy': [], 'Order': 402})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_9'}, 'Keyboard::0::Key_A': {'BaseKey': 'Key_A', 'Binds': {'Unmodified': {'Controls': OrderedDict([('YawLeftButton', {'Group': 'Ship',...gital', 'Category': 'Navigation', 'Order': 11})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_A'}, 'Keyboard::0::Key_B': {'BaseKey': 'Key_B', 'Binds': {'Unmodified': {'Controls': OrderedDict([('CyclePreviousTarget', {'Group': '...'Digital', 'Category': 'Combat', 'Order': 104})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_B'}, 'Keyboard::0::Key_C': {'BaseKey': 'Key_C', 'Binds': {'Unmodified': {'Controls': OrderedDict([('FireChaffLauncher', {'Group': 'Sh...'Digital', 'Category': 'Combat', 'Order': 114})])}}, 'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_C'}, ...}, modifiers={'Keyboard::0::': [{'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': '', 'ModifierKey': 'Keyboard::0::', 'Number': 101}], 'Keyboard::0::Key_LeftAlt': [{'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_LeftAlt', 'ModifierKey': 'Keyboard::0::Key_LeftAlt', 'Number': 103}], 'Keyboard::0::Key_LeftShift': [{'Device': 'Keyboard', 'DeviceIndex': 0, 'Key': 'Key_LeftShift', 'ModifierKey': 'Keyboard::0::Key_LeftShift', 'Number': 102}], 'ThrustMasterTFlightHOTASX::0::Joy_5': [{'Device': 'ThrustMasterTFlightHOTASX', 'DeviceIndex': 0, 'Key': 'Joy_5', 'ModifierKey': 'ThrustMasterTFlightHOTASX::0::Joy_5', 'Number': 1}], 'ThrustMasterTFlightHOTASX::0::Joy_6': [{'Device': 'ThrustMasterTFlightHOTASX', 'DeviceIndex': 0, 'Key': 'Joy_6', 'ModifierKey': 'ThrustMasterTFlightHOTASX::0::Joy_6', 'Number': 4}], 'ThrustMasterTFlightHOTASX::0::Joy_7': [{'Device': 'ThrustMasterTFlightHOTASX', 'DeviceIndex': 0, 'Key': 'Joy_7', 'ModifierKey': 'ThrustMasterTFlightHOTASX::0::Joy_7', 'Number': 3}], 'ThrustMasterTFlightHOTASX::0::Joy_8': [{'Device': 'ThrustMasterTFlightHOTASX', 'DeviceIndex': 0, 'Key': 'Joy_8', 'ModifierKey': 'ThrustMasterTFlightHOTASX::0::Joy_8', 'Number': 2}]}, source='keyboard', imageDevices=['Keyboard'], biggestFontSize=39, displayGroups=['Ship'], runId='zzdede', public=False)
270 for bindKey, bind in orderedOutputs.items():
271 for modifier in bind.get('Modifiers', []):
=> 272 writeText(context, sourceImg, transKey(modifier), screenState, font, True, False)
273 writeText(context, sourceImg, transKey(bind.get('Key')), screenState, font, True, False)
274 writeText(context, sourceImg, bind.get('Control').get('Name'), screenState, font, False, True)
global writeText = <function writeText>, context = <wand.drawing.Drawing object>, sourceImg = <wand.image.Image: (closed)>, global transKey = <function transKey>, modifier = '', screenState = {'baseX': 916, 'baseY': 320, 'currentX': 916, 'currentY': 1110, 'maxWidth': 558, 'thisWidth': 0}, font = wand.font.Font(('../fonts/Exo2.0-Regular.otf', 39, wand.color.Color('srgb(0,0,0)'), True))
/var/www/edrefcard.info/www/scripts/bindings.py in writeText(context=<wand.drawing.Drawing object>, img=<wand.image.Image: (closed)>, text='', screenState={'baseX': 916, 'baseY': 320, 'currentX': 916, 'currentY': 1110, 'maxWidth': 558, 'thisWidth': 0}, font=wand.font.Font(('../fonts/Exo2.0-Regular.otf', 39, wand.color.Color('srgb(0,0,0)'), True)), surround=True, newLine=False)
327 x = screenState['currentX']
328 y = screenState['currentY'] + int(metrics.ascender)
=> 329 context.text(x=x, y=y, body=text)
330 context.pop()
331
context = <wand.drawing.Drawing object>, context.text = <bound method Drawing.text of <wand.drawing.Drawing object>>, x = 916, y = 1149, body undefined, text = ''
/usr/lib/python3/dist-packages/wand/drawing.py in text(self=<wand.drawing.Drawing object>, x=916, y=1149, body='')
1793 raise TypeError('body must be a string, not ' + repr(body))
1794 elif not body:
=> 1795 raise ValueError('body string cannot be empty')
1796 if isinstance(body, text_type):
1797 # According to ImageMagick C API docs, we can use only UTF-8
builtin ValueError = <class 'ValueError'>

ValueError: body string cannot be empty
args = ('body string cannot be empty',)
with_traceback = <built-in method with_traceback of ValueError object>
 
Don't know if someone already mentioned it, but when viewing the list of available bindings I get an "cannot encode" error (I also had fun with that in Python3 lately :p ), .encode should help.

https://edrefcard.info/list

Traceback (most recent call last):
File "/var/www/edrefcard.info/www/scripts/bindings.py", line 1120, in <module>
main()
File "/var/www/edrefcard.info/www/scripts/bindings.py", line 1117, in main
printHTML(mode, config, public, createdImages, deviceForBlockImage, errors)
File "/var/www/edrefcard.info/www/scripts/bindings.py", line 757, in printHTML
printBody(mode, config, public, createdImages, deviceForBlockImage, errors)
File "/var/www/edrefcard.info/www/scripts/bindings.py", line 743, in printBody
printList()
File "/var/www/edrefcard.info/www/scripts/bindings.py", line 705, in printList
''' % (refcardURL, cgi.escape(name, quote=True), controllersStr, dateStr))
UnicodeEncodeError: 'ascii' codec can't encode character '\ufffd' in position 120: ordinal not in range(128)
 
Not to be a bearer of bad news, but this error comes up when reviewing saved binds (Mod 3 is the last one displayed):


Mod 3 SaitekX52Pro Fri Nov 24 13:39:32 2017

Traceback (most recent call last):
File "/var/www/edrefcard.info/www/scripts/bindings.py", line 1120, in <module>
main()
File "/var/www/edrefcard.info/www/scripts/bindings.py", line 1117, in main
printHTML(mode, config, public, createdImages, deviceForBlockImage, errors)
File "/var/www/edrefcard.info/www/scripts/bindings.py", line 757, in printHTML
printBody(mode, config, public, createdImages, deviceForBlockImage, errors)
File "/var/www/edrefcard.info/www/scripts/bindings.py", line 743, in printBody
printList()
File "/var/www/edrefcard.info/www/scripts/bindings.py", line 705, in printList
''' % (refcardURL, cgi.escape(name, quote=True), controllersStr, dateStr))
UnicodeEncodeError: 'ascii' codec can't encode character '\ufffd' in position 120: ordinal not in range(128)
 
Thanks for the report. I'll take a look at that tomorrow.

Camera settings shouldn't be causing problems: I have a couple of bindings files uploaded with a full set of camera bindings configured. Let me know your URL and I'll have a look.
 
Deployed a quick fix to the listing while I contemplate a proper fix. That whole listing page is a horrible placeholder to be honest.

Thanks for the reports!
 
Thanks for the report. I'll take a look at that tomorrow.

Camera settings shouldn't be causing problems: I have a couple of bindings files uploaded with a full set of camera bindings configured. Let me know your URL and I'll have a look.

My config doesn't save before the page blows up - any other way to get my bind file to you?
 
It doesn't like T.A.R.G.E.T Configs... I'm playing with 2 Thrustmaster Joysticks. I would still like to get the mapping, is there another way? It doesn't have to be graphical!
Fly safe!
Jibs
 
The problem with TARGET configs is that there is no way for me to see through the virtual device mappings to the physical device and figure out what in the virtual device has been mapped to what on the physical device.

Same applies to other joystick mapping software such as vJoy and Joystick curves.

I'm sorry but that level of complexity is just far too much for me to deal with in a hobby project.
 
Status
Thread Closed: Not open for further replies.
Back
Top Bottom