MCDU Extending

Hoppie Home

747-400 MCDU

The MCDU already comes with many full screen and photorealistic modes, but you can still add your own modes if you wish. To the right you see a full screen mode, suitable for a standard 640x480 or 800x600 display. You can create all screen sizes you wish and use your own background bit maps for decoration.

A particularly nice application of this is to use a black rectangle as backdrop (to blank out a part of a physical display) and to put the MCDU display somewhere inside that rectangle. This allows you to align the MCDU display with hardware. The 0640area mode shows how to do this. If you need a different size rectangle, modify or copy the images\0640area.gif file.

Adding Display Modes

Take a look in the etc directory. You will see a few *.cfg files. If you copy one and call it "mymode.cfg" or anything else ending in .cfg, the MCDU will recognise it as a new mode. Via the Config page (2R) you can walk over all of them, and select the one you want. If you edit the file, just re-select (Config, 3R) for the changes to take effect.

I do have very large images of the MCDU available, if you want them. Especially the 1280-size file is not included as it is about 2Mb by itself, and very few people will need it. If you create a new *.cfg file, I am interested in including it in a next release.

Inside the config files, you will find a list of keywords followed by values. The full screen modes are very simple, they only contain the required display size in pixels and optionally the base colour (handy for hardware which already has a green visor, so you can use white for more brightness). The photorealistic modes add a bitmap, which can be anything, and project the display on top of the bitmap. If you wish you can also add "hot" clickable areas for the keys, and places where the annunciators need to be displayed.

image filename
The name of the GIF file you want to use, if any. Place the GIF file in the img directory. Do not include the .gif extension in the .cfg file, but do give the file this .gif tail in the img folder.
display x1 y1 x2 y2
The rectangle in which the display will be projected. Find out these coordinates by going to a test pattern and clicking around, or by looking up the size of your screen.
colour red green blue
In case you are not satisfied with the (realistic greenish) standard colour setting of the foreground text, you can change it here. If you desire a white display, use "colour 255 255 255". You cannot change the background colour, that is always black. This is a design limitation of this MCDU.
layout rows columns [meta-rows]
The number of rows and columns of the character cell display. Normally this is 14 rows of 24 columns (ARINC 739A-1) but you may change this. For example, a 600x800 portrait screen typically looks nicer with 24 rows of 24 columns. If you add the figure for meta-rows, a meta block will appear over the given number of rows at the bottom of the display and the original rows will be vertically shrunk to fit into the remaining space. Typically you will want to use 2; a pretty picture is made by (22 24 2) on a 600x800 portrait display.
mouse.autohide 1
When set to 1, the mouse pointer will disappear at startup and after each key press, both by keyboard and mouse click. This typically is desired behaviour for touch screens. Default is no autohide (0).
When not hovering above the MCDU window, the mouse pointer is always visible. When the mouse is being moved, the mouse pointer always becomes visible. Only a mouse click on the MCDU or a MCDU keyboard press will hide the pointer again.
titlebar.hide 1
When set to 1, the titlebar and resize borders will disappear and leave just a thin grey line. When your mode does not have a background image, no titlebar is the default, but with this setting you can override it. Modes with a background image default to having a title bar, and again you can override it here, using 0.
Normally, you use the thin gray line to position the display exactly on the place you want it, with the line 1 pixel outside all borders. You can use Right-Button-Drag to reposition the window if there is no titlebar.
floating.icon 1
If you activate this feature, a small "CDU>" icon appears on the desktop which remains always on top of anything else, including the Task Bar and any program that runs in Full Screen mode. You can drag this icon around with the mouse or a finger, to move it out of the way of whatever application you are running. By single-clicking the icon, the MCDU always moves to the top of the display stack. By double-clicking the icon, the MCDU appears and disappears. Right-click (or a tap where you keep your finger down for two seconds) opens a context menu that allows to exit the MCDU program. Default for floating.icon is 0.
This floating icon feature is designed to allow the MCDU as additional program alongside a full screen program, such as a charting application on an electronic flight bag.
config.prompt none
Normally, on the MENU page 6R there is a CONFIG prompt which allows access to technical configuration settings.
"none" removes the complete prompt. 6R still gives access to CONFIG page.
config.password password
When set, access to the CONFIG page (via 6R on the MENU page) is limited. Only features that will not harm the configuration are available. A PASSWORD prompt at 1R asks for the password and will unlock the harmful configuration features.
menu.skip 1
When set to 1, the MCDU will skip the initial MENU page if it knows at least one registered module. The MCDU will immediately switch to the first module that registered. If no module registers in time, the MENU page will appear anyway. Default is 0.
A manual push on the MENU button will always display the MENU page.
splash.skip 1
When set to 1, the startup splash screens (the character test pattern and the identification and copyright test pattern) will be skipped. A delay of three seconds is implemented to allow modules to register after a reset event, so they can show on the menu or be jumped to straight away. Default is 0.
Note that these test patterns can be accessed manually via CONFIG and TEST PAGES, then PREV/NEXT to cycle through all of them.
font.*.family
You can override the standard MCDU font if you desire so. Default is "Aerowinx FMC Small" in combination with "Aerowinx FMC Large". These fonts contain all required ARINC 739-A characters including the boxes and arrows, on the correct spots in the char map. But you can replace these by anything else. Suggestions are "Lucida Console" and "Consolas". The * above must be either "small" or "large".
font.*.style
Font style, usually "bold" or just empty. Lucida Console for both sizes looks better in bold.
font.*.factor
A scaling factor to adjust relative font size. Aerowinx FMC Small uses 1.0 which is the default anyway; Aerowinx FMC Large is sometimes better with 0.95. Lucida Console is good with 0.7 for small and 0.9 for large; Consolas is good with 0.7 and 0.9 as well.
key_* x y [r]
The hot center points for all the MCDU keys. Find them using the test patterns from the Config page. There are special keys for display brightness (key_brt- and key_brt+), and to make the virtual keyboard pop up and disappear (key_kbd).
If you add the r parameter, the hot spot will be repeated (for the same key) r times, to the right with positive r, to the left with negative r. Use this feature to make hot bars, typically for line select keys.
ann_* filename x y
The top-left position of the annunciator bitmaps and their file name. Find the approximate position using the test patterns and then fine-tune. Leave the .gif extensions off.

MCDUs for other planes than the 747-400

Although at the moment I am not planning to write modes for other planes than the Boeing 747-400, this is quite possible. If you provide a bitmap of, say, a 737-900 CDU and put it in, you can easily create a totally different MCDU. I would need to help you a bit by externalising all keystrokes, so that you can change the names of some of them, but that is not difficult.

Colour is supported by now, as are different layouts from 14x24, so many options are possible. In case you run into trouble, either patch the code (and let me know, please) or ask for a feature.


© 2019 Jeroen Hoppenbrouwers For more information, mail to hoppie@hoppie.nl