<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.flightgear.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tipunch</id>
	<title>FlightGear wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.flightgear.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Tipunch"/>
	<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/Special:Contributions/Tipunch"/>
	<updated>2026-04-15T08:06:53Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.6</generator>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=FlightGear_wiki:Village_pump&amp;diff=103487</id>
		<title>FlightGear wiki:Village pump</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=FlightGear_wiki:Village_pump&amp;diff=103487"/>
		<updated>2016-08-23T11:26:00Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: /* new portal for cockpit building (hardware) ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Archives|[[/Archive 2012|2012]]|[[/Archive 2013|2013]]|[[/Archive 2014|2014]]|[[/Archive 2015|2015]]}}&lt;br /&gt;
{{shortcut|FGW:VP}}&lt;br /&gt;
Welcome to the '''Village Pump'''. This page is used to discuss the technical issues, operations and guidelines of the [[FlightGear wiki]].&lt;br /&gt;
&lt;br /&gt;
Please &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[{{fullurl:{{FULLPAGENAME}}|action=edit&amp;amp;section=new}} add new topics]&amp;lt;/span&amp;gt; to the '''bottom''' of this page.&lt;br /&gt;
&lt;br /&gt;
Old discussion should be moved to a [[FlightGear wiki:Village pump/Archive YEAR]]. These discussions can then be moved to a relevant talk page if appropriate.&lt;br /&gt;
&lt;br /&gt;
== Welcome template? ==&lt;br /&gt;
I have been thinking about suggesting a welcome template, for example named {{obr}}welcome{{cbr}}, to place on top of (at least) new users user discussion pages.&lt;br /&gt;
&lt;br /&gt;
It should welcome the (new) user&lt;br /&gt;
&lt;br /&gt;
In addition, it should probably mention and/or link to pages mentioning:&lt;br /&gt;
* The introduction page/tutorial (Hmm, I do not think I did finish that one. See [[Help talk:Tutorial]] ([http://wiki.flightgear.org/index.php?title=Help_talk:Tutorial&amp;amp;oldid=70843 perm])).&lt;br /&gt;
* Help pages&lt;br /&gt;
* How to use categories (in particular not like #tags, ;-) but also that image and article categories should be separate, but link to each other)&lt;br /&gt;
* The portals&lt;br /&gt;
* The style manual&lt;br /&gt;
* Discussion pages and where to discuss what:&lt;br /&gt;
** How to use discussion pages&lt;br /&gt;
** The wiki in general:  The village pump (this page)&lt;br /&gt;
** Wiki articles:  Article discussion pages&lt;br /&gt;
** Wiki user actions:  User discussion pages&lt;br /&gt;
&lt;br /&gt;
Maybe it should also mention that FGAddon aircraft, effects, other features etc. (except for their articles) and their bugs should be discussed on the forum, unless developers say otherwise, and that core features should be discussed on the developer mailing list and core bugs on the bug tracker.&lt;br /&gt;
&lt;br /&gt;
—[[User:Johan G|Johan G]] ([[User_talk:Johan_G|Talk]] | [[Special:Contributions/Johan_G|contribs]]) 20:31, 30 January 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
: I think this is a great idea.  A nice concise summary with links to help a new user navigate the FlightGear jungle would be a great addition.  It should however remain very short with simple sentences - while being complete - as many users are not native speakers.  So maybe there should be translations of the template with manually added links at the bottom for easy access to all the translations?&lt;br /&gt;
&lt;br /&gt;
: [[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 03:35, 12 February 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
:: Regarding an introduction article, I have come to the conclusion that a complete but long article is probably not as helpful as short but specific help pages.  In essence the latter would be easier to navigate and absorb.  I have therefore started to slowly split up some of the help pages and have added one more section to [[Help:Contents]].&lt;br /&gt;
:: I think that a welcome phrase, a link to that page and the [[FlightGear wiki:Manual of Style|style manual]] might actually suffice for a welcome template for now.  It is at least better than what we currently have (i.e. more or less nothing).&lt;br /&gt;
:: —[[User:Johan G|Johan G]] ([[User_talk:Johan_G|Talk]] | [[Special:Contributions/Johan_G|contribs]]) 14:47, 4 March 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
:: I now consider&lt;br /&gt;
::* A Welcome message&lt;br /&gt;
::* A link to this page&lt;br /&gt;
::* A link to the help pages&lt;br /&gt;
::* A link to the manual of style&lt;br /&gt;
::* Some final welcoming words&lt;br /&gt;
&lt;br /&gt;
:: A welcome template should probably also very briefly mention a pet peeve of mine: the categories.&lt;br /&gt;
:: Many (if not most) image uploaders seem to treat them like tags, but if say all screenshots of aircraft (probably &amp;gt;2000) would end up at [[:Category:Aircraft]] (instead of under a subcategory to [[:Category:Screenshots of aircraft]]), of what use would that page be when looking for a specific one?  If people would like to be able to search for an aircraft, a concise but comprehensive image description is very hard to beat.&lt;br /&gt;
:: How do I convey all that in a way that is, short, to the point and easy to absorb (and act by)? And where is the best place?&lt;br /&gt;
:: —[[User:Johan G|Johan G]] ([[User_talk:Johan_G|Talk]] | [[Special:Contributions/Johan_G|contribs]]) 02:46, 8 March 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
:: An early draft is now at [[User:Johan G/Template:Welcome to the wiki]]&lt;br /&gt;
:: —[[User:Johan G|Johan G]] ([[User_talk:Johan_G|Talk]] | [[Special:Contributions/Johan_G|contribs]]) 02:52, 18 April 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
::: Some comments on the draft:&lt;br /&gt;
::: * I'm not fully sure about using a prominent box - I think it stands out a bit too much. Wikipedia {{wikipedia|Template:Welcome|uses a simple thread on the Talk page}}; as an alternative, we could use lighter colors.&lt;br /&gt;
::: * I've also expanded the text a bit. My proposal would be (I've put it in a box, but I'm for the &amp;quot;thread&amp;quot; solution):&lt;br /&gt;
&amp;lt;div style=&amp;quot;background: #fff; border: 1px #585858 solid; padding: 12px; margin: 12px&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:Example.png|left]] '''Welcome to the FlightGear wiki, {{#if: {{{name|}}} | {{{name}}} | {{BASEPAGENAME}}}}'''! We hope you will enjoy your stay!&lt;br /&gt;
&lt;br /&gt;
See [[Help:Contents#Reading|Reading]] to learn how wikis work. You can also [[Special:CategoryTree/Root category|browse the existing page categories]].&lt;br /&gt;
&lt;br /&gt;
Should you wish to create or edit some articles, ''do so''! Here are some resources to get you started:&lt;br /&gt;
* [[Help:Contents#Editing|How to edit pages]]&lt;br /&gt;
* [[Help:Discussion pages|Discussion pages]], where we discuss and agree on potential improvements&lt;br /&gt;
* [[FlightGear wiki:Manual of Style|The Manual of Style]], a set of guidelines to help editors maintain a consistent style and formatting (please follow them)&lt;br /&gt;
* [[Help:Contents|Wiki help page]]&lt;br /&gt;
&lt;br /&gt;
If you have any questions, just start a topic on the [[FlightGear wiki:Village pump|''Discuss!'' page]]. Again, welcome!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
::: ...where the image on the left is an appropriately chosen icon.&lt;br /&gt;
::: Finally, we could use the {{mediawiki|Extension:NewUserMessage|NewUserMessage extension}} to have the wiki software automatically post the message to the new user's talk page.&lt;br /&gt;
::: ---- [[User:Elgaton|ElGaton]] ([[User talk:Elgaton|&amp;lt;tt&amp;gt;talk&amp;lt;/tt&amp;gt; to me]]) 17:30, 1 May 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Permanently removing spam bots ==&lt;br /&gt;
For permanently removing spam bots, has the [https://www.mediawiki.org/wiki/Extension:UserMerge UserMerge] Mediawiki extension been considered?  I use that regularly on [http://wiki.nmr-relax.com my own wiki], though there we have also reverted to communicating to the person via email before manually granting access (probably not an option here), as all of the Mediawiki captcha methods were recently cracked.&lt;br /&gt;
&lt;br /&gt;
[[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 03:15, 12 February 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
: Oh, for the extension, we simply have a user called 'Spam bot' in a blocked state, and merge the spam bot accounts into this one, deleting the old account.&lt;br /&gt;
: [[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 03:20, 12 February 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
:: I'd use the [https://www.mediawiki.org/wiki/Extension:AbuseFilter abuse filter extension] instead (much more powerful and automated) - other users have also proposed different remedies, see [http://forum.flightgear.org/viewtopic.php?f=42&amp;amp;t=28734 this forum thread]. Anyway, Gijs is going to upgrade MediaWiki shortly and review the current anti-spam measures.&lt;br /&gt;
:: -- [[User:Elgaton|ElGaton]] ([[User talk:Elgaton|&amp;lt;tt&amp;gt;talk&amp;lt;/tt&amp;gt; to me]]) 06:26, 13 February 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
::: A lot of the spam bots are using their name as advertising nowadays, so the [https://www.mediawiki.org/wiki/Extension:UserMerge UserMerge] extension is the only one I know which will allow a user and associated name to be permanently deleted.&lt;br /&gt;
&lt;br /&gt;
::: [[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 12:04, 14 February 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
:::: The problem now is that they're also adding the information to the page title, so that it will still show up in the deletion logs [http://wiki.flightgear.org/Special:Log/delete] in other words, there's still some SEO juice associated with deleted entries ... Another idea would be to allow admins to temporarily disable wiki registrations/article creation, e.g. if more than 2 admins agree, this could be done to protect the wiki from spam attacks.&lt;br /&gt;
&lt;br /&gt;
::::: Hooray, you should sign your posts ;)  The bots don't target the deletion logs, as that's a little pointless.  It's a Special:* page, and the default Mediawiki robots.txt file tells all search engines to not index these pages.  User pages, page histories, etc. are however normally indexed.&lt;br /&gt;
&lt;br /&gt;
::::: [[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 14:36, 19 February 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
:: The point was not what the bots are targeting, but what shows up in the logs - i.e. SEO-wise - Gijs' article blacklist stuff should help with that hopefully. PS: I could not find the signature button on the mobile device I am using, and I am not too good at remembering the correct number of tildes ;-) [[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 15:04, 19 February 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
== WIP vs. Under construction ==&lt;br /&gt;
I have been beginning to miss the under construction template[http://wiki.flightgear.org/index.php?title=Template:Under_Construction&amp;amp;direction=prev&amp;amp;oldid=46229] more and more (though I could it definitively could be improved).&lt;br /&gt;
&lt;br /&gt;
I have begun to appreciate the need to differentiate between letting readers that a page is to be considered a yet to be finished construction site (though we in a way have that through the {{tl|incomplete}} template) and letting the reader (and other editors) that a page will receive a large amount of work for some hours or even days, usually the use for {{tl|WIP}}.&lt;br /&gt;
&lt;br /&gt;
In summary i miss templates giving a clear distinction between conditions akin to &amp;quot;Under construction&amp;quot; and &amp;quot;Caution - Wet floors&amp;quot;, rather than &amp;quot;being worked on&amp;quot; and &amp;quot;could need more work&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
—[[User:Johan G|Johan G]] ([[User_talk:Johan_G|Talk]] | [[Special:Contributions/Johan_G|contribs]]) 10:11, 17 February 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
== [[Fr/Pilote automatique]] ==&lt;br /&gt;
Bonjour,&lt;br /&gt;
&lt;br /&gt;
Je viens de créer la page de traduction en français de l'article original en anglais [[Autopilot]]. Vu mes faibles compétences en matière de pilotage, vu que je n'ai pas sur ma version téléchargée d'avion avec un pilote automatique, la traduction doit souffrir quelques approximations, si ce n'est des contresens plus ennuyeux. Si quelques bonnes âmes plus qualifiées pouvaient me faire la grâce d'une relecture... merci d'avance.&lt;br /&gt;
&lt;br /&gt;
Cordialement, et Hop ! --[[User:F-WTSS|F-WTSS]] ([[User talk:F-WTSS|talk]]) 15:30, 18 February 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
== MediaWiki updated to 1.26.2 ==&lt;br /&gt;
I've updated MediaWiki to the latest stable release (1.26.2) today. I've still got to update some of the extensions, so there may be regressions for now. Please report bugs if you find any. For a list of changes, see https://www.mediawiki.org/wiki/Release_notes/1.26&lt;br /&gt;
&lt;br /&gt;
[[User:Gijs|Gijs]] ([[User talk:Gijs|talk]]) 10:47, 19 February 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
: Cheers!  I was hoping that it would solve the uneditable Chinese, Russian, and other non-latin character-based pages (Polish strangely as well), but unfortunately [[FlightGear_wiki:Village_pump/Archive_2015#UTF-8_language_pages_cannot_be_edited|that issue remains]].&lt;br /&gt;
&lt;br /&gt;
: [[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 10:54, 19 February 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
:: Hm, looks that will require quite some attention indeed. I'm afraid that'll has to wait for now.&lt;br /&gt;
:: [[User:Gijs|Gijs]] ([[User talk:Gijs|talk]]) 12:29, 19 February 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
=== Nasal Syntaxhighlighting ===&lt;br /&gt;
: Thanks for your efforts, btw: Nasal syntax highlighting is gone again.&lt;br /&gt;
: {{unsigned|17:22, 19 February 2016‎|Hooray}}&lt;br /&gt;
&lt;br /&gt;
:: Unfortunately this time it isn't me forgetting to copy a file. The SyntaxHighlight extension no longer uses GeSHi, but has switched to Pygments. This means our Nasal mapping no longer works and has to be re-written. If anyone is interested, be my guest. See http://pygments.org/docs/lexerdevelopment/&lt;br /&gt;
:: [[User:Gijs|Gijs]] ([[User talk:Gijs|talk]]) 12:29, 19 February 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
::: Hi Gijs,&lt;br /&gt;
::: I'm interested in making a Pygments Nasal lexer, but unfortunately I won't be able to work on it until the end of March at the earliest.&lt;br /&gt;
::: [[User:Red_Leader|&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;'''''Red Leader'''''&amp;lt;/span&amp;gt;]] ([[User_talk:Red_Leader|Talk]], [[Special:Contributions/Red_Leader|contribs]]) 16:59, 23 February 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
:::: Unless Gijs is facing any problems, I don't think it's necessarily needed, see my comment/suggestion in this revision: [http://wiki.flightgear.org/index.php?title=FlightGear_wiki:Village_pump&amp;amp;oldid=93166] [[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 17:20, 23 February 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
:::Hi Gijs,&lt;br /&gt;
:::Here's the code for a Nasal lexer. Be warned, it's thoroughly untested, but has the following features:&lt;br /&gt;
:::* Full support for all three string types (backtick, single quote, and double quote), including escapes and formatting strings (e.g., for {{func link|sprintf}}).&lt;br /&gt;
:::* All kinds of numbers, including numbers in scientific notation and octal and hex numbers.&lt;br /&gt;
:::* All global functions and variables as of FG v2016.1.1.&lt;br /&gt;
:::* Some of the commonly-used &amp;lt;code&amp;gt;props.Node&amp;lt;/code&amp;gt; methods.&lt;br /&gt;
:::* All the other things that can be expected (keywords, punctuation, etc.).&lt;br /&gt;
:::I have also created a lexer based on the XML lexer for XML with embedded Nasal, which I thought would be useful.&lt;br /&gt;
:::Regards,&lt;br /&gt;
:::[[User:Red_Leader|&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;'''''Red Leader'''''&amp;lt;/span&amp;gt;]] ([[User_talk:Red_Leader|Talk]], [[Special:Contributions/Red_Leader|contribs]]) 16:35, 2 April 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
:::http://pygments.org/docs/lexerdevelopment/#adding-and-testing-a-new-lexer&lt;br /&gt;
:::&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot; enclose=&amp;quot;div&amp;quot;&amp;gt;&lt;br /&gt;
# -*- coding: utf-8 -*-&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	Lexer for Nasal.&lt;br /&gt;
&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
from pygments.lexer import RegexLexer, words, include, inherit, bygroups, using&lt;br /&gt;
from pygments.token import Text, Keyword, Name, String, Number, Operator, Punctuation, Comment&lt;br /&gt;
from pygments.lexers.html import XmlLexer&lt;br /&gt;
&lt;br /&gt;
__all__ = ['NasalLexer', 'XMLNasalLexer']&lt;br /&gt;
&lt;br /&gt;
class NasalLexer(RegexLexer):&lt;br /&gt;
&lt;br /&gt;
	name = 'Nasal'&lt;br /&gt;
	aliases = ['nasal']&lt;br /&gt;
	filenames = ['*.nas']&lt;br /&gt;
&lt;br /&gt;
	tokens = {&lt;br /&gt;
		'formatters': [&lt;br /&gt;
			(r'%[-#0 +]*(?:[0-9]+)?(?:\.[0-9]+)?[dis%couxXeEfFgG]', String.Interpol),&lt;br /&gt;
		],&lt;br /&gt;
		'backtick': [&lt;br /&gt;
			(r'`', String.Backtick, '#pop'),&lt;br /&gt;
			(r'[^`\\]+', String.Backtick),&lt;br /&gt;
			(r'\\n|\\r|\\t|\\`|\\\\|\\x[0-9a-fA-F]{2}', String.Escape),&lt;br /&gt;
		],&lt;br /&gt;
		'sqstring': [&lt;br /&gt;
			(r&amp;quot;'&amp;quot;, String.Single, '#pop'),&lt;br /&gt;
			(r&amp;quot;[^'\\%]+&amp;quot;, String.Single),&lt;br /&gt;
			(r&amp;quot;\\'&amp;quot;, String.Escape),&lt;br /&gt;
			include('formatters'),&lt;br /&gt;
		],&lt;br /&gt;
		'dqstring': [&lt;br /&gt;
			(r'&amp;quot;', String.Double, '#pop'),&lt;br /&gt;
			(r'[^&amp;quot;\\%]+', String.Double),&lt;br /&gt;
			(r'\\n|\\r|\\t|\\&amp;quot;|\\\\|\\x[0-9a-fA-F]{2}', String.Escape),&lt;br /&gt;
			include('formatters'),&lt;br /&gt;
		],&lt;br /&gt;
		'root': [&lt;br /&gt;
			(r'\s+', Text),&lt;br /&gt;
			(r'#.*?$'m, Comment.Single),&lt;br /&gt;
			(r':|\?|[!=&amp;lt;&amp;gt;+\-*\/~&amp;amp;|^]=?', Operator),&lt;br /&gt;
			(words(('or', 'and'), suffix=r'\b'), Operator.Word),&lt;br /&gt;
			(r'[{(\[})\]\.;,]', Punctuation),&lt;br /&gt;
			(words(('for', 'foreach', 'forindex', 'while', 'break', 'return', 'continue', 'if', 'else', 'elsif'), suffix=r'\b'), Keyword),&lt;br /&gt;
			(words(('var', 'func'), suffix=r'\b'), Keyword.Declaration),&lt;br /&gt;
			(words(('nil'), suffix=r'\b'), Keyword.Constant),&lt;br /&gt;
			(words(('me', 'arg'), suffix=r'\b'), Name.Builtin.Pseudo),&lt;br /&gt;
			(words(('new', 'del', 'getNode', 'getParent', 'getChild', 'getChildren', 'removeChild', 'removeChildren', 'removeAllChildren', 'getName', 'getIndex', 'getType', 'getAttribute', 'setAttribute', 'getValue', 'setValue', 'setIntValue', 'setBoolValue', 'setDoubleValue', 'unalias', 'alias', 'getPath', 'getBoolValue', 'remove', 'setValues', 'getValues', 'initNode'), suffix=r'\b'), Keyword.Pseudo),&lt;br /&gt;
			(r'0o[0-7]+', Number.Oct),&lt;br /&gt;
			(r'0x[0-9a-fA-F]+', Number.Hex),&lt;br /&gt;
			(r'\d*(?:\.\d*)?[eE][+-]?\d+', Number.Float),&lt;br /&gt;
			(r'\d*\.\d*', Number.Float),&lt;br /&gt;
			(r'\b[0-9]+\b', Number.Integer),&lt;br /&gt;
			(words(('D2R', 'R2D', 'FT2M', 'M2FT', 'IN2M', 'M2IN', 'NM2M', 'M2NM', 'KT2MPS', 'MPS2KT', 'FPS2KT', 'KT2FPS', 'LB2KG', 'KG2LB', 'GAL2L', 'L2GAL'), suffix=r'\b'), Name.Variable.Global),&lt;br /&gt;
			(words(('abort', 'abs', 'addcommand', 'airportinfo', 'airwaysRoute', 'assert', 'carttogeod', 'cmdarg', 'courseAndDistance', 'createViaTo', 'createDiscontinuity', 'createWP', 'createWPFrom', 'defined', 'directory', 'fgcommand', 'findAirportsByICAO', 'findAirportsWithinRange', 'findFixesByID', 'findNavaidByFrequency', 'findNavaidsByFrequency', 'findNavaidsByID', 'findNavaidsWithinRange', 'finddata', 'flightplan', 'geodinfo', 'geodtocart', 'getprop', 'greatCircleMove', 'interpolate', 'isa', 'logprint', 'magvar', 'maketimer', 'md5', 'navinfo', 'parse_markdown', 'parsexml', 'print', 'printf', 'printlog', 'rand', 'registerFlightPlanDelegate', 'removecommand', 'removelistener', 'resolvepath', 'setlistener', 'setprop', 'settimer', 'srand', 'systime', 'thisfunc', 'tileIndex', 'tilePath', 'values'), suffix=r'\b'), Name.Builtin),&lt;br /&gt;
			(words(('append', 'bind', 'call', 'caller', 'chr', 'closure', 'cmp', 'compile', 'contains', 'delete', 'die', 'find', 'ghosttype', 'id', 'int', 'keys', 'left', 'num', 'pop', 'right', 'setsize', 'size', 'sort', 'split', 'sprintf', 'streq', 'substr', 'subvec', 'typeof'), suffix=r'\b'), Name.Builtin),&lt;br /&gt;
			(words(('_createCondition', '_fgcommand', '_interpolate', '_setlistener'), suffix=r'\b'), Keyword.Reserved),&lt;br /&gt;
			(r'`', String.Backtick, 'backtick'),&lt;br /&gt;
			(r&amp;quot;'&amp;quot;, String.Single, 'sqstring'),&lt;br /&gt;
			(r'&amp;quot;', String.Double 'dqstring'),&lt;br /&gt;
			(r'\b_\w*?\b', Keyword.Reserved),&lt;br /&gt;
			#(r'\b\w*?\b', Name),&lt;br /&gt;
		]&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
class XMLNasalLexer(XmlLexer):&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
	For Nasal code embedded in XML files.&lt;br /&gt;
	&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	name = 'XML-Nasal'&lt;br /&gt;
	aliases = ['xml-nasal', 'xml-ns']&lt;br /&gt;
&lt;br /&gt;
	tokens = {&lt;br /&gt;
		'root': [&lt;br /&gt;
			(r'(&amp;lt;(?:load|unload|script)&amp;gt;)(&amp;lt;!\[CDATA\[)?(.*?)(]]&amp;gt;)?(&amp;lt;/(?:load|unload|script)&amp;gt;)', bygroups(Name.Tag, Comment.Preproc, using(NasalLexer), Comment.Preproc, Name.Tag),&lt;br /&gt;
			inherit,&lt;br /&gt;
		],&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:: We can use the ECMAScript/JavaScript lexer[http://pygments.org/docs/lexers/#lexers-for-javascript-and-related-languages] for now, my suggestion would be to copy that over to a file so that we can work on a custom Nasal lexer (Syntax  is almost identical, with a few different keywords, and many others being irrelevant). What is missing/different can be obtained from other lexers that are similar, e.g. [http://pygments.org/docs/lexers/#lexers-for-other-c-like-languages] [[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 15:45, 19 February 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
:: Okay, here's the better/quick&amp;amp;easy way: We have Nasal support for some fairly popular editors, like [http://wiki.flightgear.org/Howto:Syntax_highlighting_for_Nasal#Vim|vim](originally created by Melchior&amp;lt;ref&amp;gt;https://sourceforge.net/p/flightgear/flightgear/ci/next/tree/scripts/syntax/nasal.vim&amp;lt;/ref&amp;gt;), listed at [[Howto:Syntax_highlighting_for_Nasal]] - there are various free converters available that will read such a syntaxhighlighting file and convert it to a pygments class, e.g. see: https://github.com/honza/vim2pygments [[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 16:00, 19 February 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
==== References ====&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== The repository link templates ==&lt;br /&gt;
=== Complete overhaul of the repository link templates ===&lt;br /&gt;
&lt;br /&gt;
I have now performed a complete overhaul of the repository link templates (see {{tl|repo link/doc related}}).  This was motivated by the incomplete state of these templates, the lack of standardisation, the lack of SourceForge git repository support for {{tl|repo link}}, web-interface only support, etc.  I have used a lot of recursive transclusion for standardisation, so that there is a single point for updating for any FlightGear infrastructure changes.  This is the master {{tl|repo link}} template.  All the other templates are subtemplates which recursively transclude from this master template.  I have also created a number of documentation templates for simplifying template maintenance (see {{tl|repo link/doc related‎}}, {{tl|repo link/doc specific file git‎‎}}, {{tl|repo link/doc git clone‎‎}}, and {{tl|repo link/doc commit}}).  The changes were constrained to maintain backwards compatibility as much as possible.  However I would like to break this to allow the following templates to be updated to transclude from the master {{tl|repo link}} template:&lt;br /&gt;
&lt;br /&gt;
* {{tl|flightgear file}},&lt;br /&gt;
* {{tl|simgear file}},&lt;br /&gt;
* {{tl|fgdata file}},&lt;br /&gt;
* {{tl|fgaddon file}}.&lt;br /&gt;
&lt;br /&gt;
If no one objects, I would like to completely break these and expand and rename the parameter set to match the other &amp;lt;nowiki&amp;gt;{{* file}}&amp;lt;/nowiki&amp;gt; repository templates (e.g. {{tl|terragear file}}).  My overhaul currently does not include Hooray's ideas for non command line usages, i.e. different GUIs, but it enables it to be easily added via the master template and the addition of a single parameter to any subtemplates.&lt;br /&gt;
&lt;br /&gt;
[[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 15:05, 25 February 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
: I don't have any objections myself, I appreciate all the work you are putting into this, and would like to thank you for helping us clean up all that mess by doing such unglamorous work ;-) I also appreciate that your changes would facilitate adding a non-CLI mode to the corresponding templates. However, I would suggest to wait for Gijs' feedback, because he's ultimately the most likely person to veto something around here ;-) [[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 17:31, 25 February 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
:: Johan seems to be the one who did a lot of the initial work on these &amp;lt;nowiki&amp;gt;{{* file}}&amp;lt;/nowiki&amp;gt; templates, and Red Leader with the {{tl|repo link}} template.  And they were involved in the general discussions ([[http://wiki.flightgear.org/index.php?title=FlightGear_wiki:Village_pump&amp;amp;oldid=87148#Repository_link_templates perm]).  But I know Gijs was also involved in the design.&lt;br /&gt;
&lt;br /&gt;
:: For the non-CLI mode, that will need -a lot- more planning.  For example a definitive list of all these modes would be useful.  Should this use an optional Mediawiki pop up extension showing a link to a general page that describes the action for all different GUIs, CLI, etc.?  Should we have a switch box so that the reader can switch in-text between CLI, and the numerous GUIs?  Are we going to have a large set of screenshots for each GUI?  If so, I would strongly recommend the [https://www.mediawiki.org/wiki/Extension:Labeled_Section_Transclusion labelled section transclusion extension] for creating a single page for one GUI with everything for that GUI, as a tutorial.  Here is [http://wiki.nmr-relax.com/Relax_4.0.1 an external example where I have used this], to fragment the base release page to create [http://wiki.nmr-relax.com/Relax_release_descriptions this meta page], as well as many other meta pages.&lt;br /&gt;
&lt;br /&gt;
:: [[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 03:14, 26 February 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
I am also thinking of changing the name of the &amp;lt;nowiki&amp;gt;{{* file}}&amp;lt;/nowiki&amp;gt; templates, as I hope to make the scope of the templates far more general.  The name &amp;lt;nowiki&amp;gt;{{* source}}&amp;lt;/nowiki&amp;gt; or &amp;lt;nowiki&amp;gt;{{* repo}}&amp;lt;/nowiki&amp;gt; might be better.  For example these will allow the repository commit, tree view, log view (and maybe rss feed), with or without a file/directory path.  And I would like to generalise this to handle both the SF web-interface and non-web net protocols (git://, ssh://, svn://, etc.).  It will allow for CLI instructions to be built up and embedded in &amp;lt;nowiki&amp;gt;{{#tag:source|&amp;lt;content&amp;gt;|lang=sh}}&amp;lt;/nowiki&amp;gt; tags.  And I will defer all infrastructure decisions in the subtemplates to the single point of {{tl|project infrastructure}}, so that if there are changes in the future, then only this single template needs to be updated to update the entire wiki.&lt;br /&gt;
&lt;br /&gt;
[[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 03:22, 26 February 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
: The {{tl|project infrastructure}} template as a single point provider of various project infrastructure names and URL pairs seem like a great idea.  If it work out well it will really lessen the maintenance by having less places needing updates, while allowing the various repository templates to be simple to use, in essence by having comprehensible names and no boiler plate parameters for their users.&lt;br /&gt;
: —[[User:Johan G|Johan G]] ([[User_talk:Johan_G|Talk]] | [[Special:Contributions/Johan_G|contribs]]) 15:15, 27 February 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
==== Repository link update ====&lt;br /&gt;
For those following, I have massively expanded the capabilities of the {{tl|repo link}} template:&lt;br /&gt;
* The SourceForge URLs are now comprehensive.&lt;br /&gt;
* Full support for the new query-based URLs for the Gitorious archives.&lt;br /&gt;
* Functional GitLab URLs.&lt;br /&gt;
* Generic repository support (used to create the {{tl|openscenegraph co}} template).&lt;br /&gt;
* Detailed documentation and extensive examples for checking the implementation (if you find any non-supported links, please add these as examples).&lt;br /&gt;
* Isolation of the '''cmd''' parameter from the CLI options &amp;amp;mdash; this is to enable future support for non-CLI instructions based on the value of '''cmd'''.&lt;br /&gt;
&lt;br /&gt;
I have also completed a large set of subtemplates of {{tl|repo link}}, see the list at {{tl|repo link/doc related}}.  This includes a full set of &amp;lt;nowiki&amp;gt;{{* source}}&amp;lt;/nowiki&amp;gt; templates.  I have left the original &amp;lt;nowiki&amp;gt;{{* file}}&amp;lt;/nowiki&amp;gt; templates, rather than renaming and modifying them, so these are now redundant.  All of the &amp;lt;nowiki&amp;gt;{{* source}}&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;{{* commit}}&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;{{* clone}}&amp;lt;/nowiki&amp;gt;, and &amp;lt;nowiki&amp;gt;{{* co}}&amp;lt;/nowiki&amp;gt; templates transclude from the master {{tl|repo link}} template to do all of the work.&lt;br /&gt;
&lt;br /&gt;
One important template is {{tl|gitorious source}}.  The support for the new query-based URLs for the Gitorious archives is now quite comprehensive in {{tl|repo link}}.  Therefore I have converted almost every single FlightGear wiki link to https://gitorious.org to use {{tl|gitorious source}} instead.  This fixes a lot of broken links and broken git instructions.  I have reduced the number of hits for gitorious.org on the wiki (searching just for &amp;quot;gitorious&amp;quot;) to 22 hits.  This includes 2 very outdated articles ([[FlightGear Git: aircraft authors]], [[Fr/FlightGear et Git]]), 15 locked newsletters, 1 with no longer existent Gitorious merge request links, and 4 base URL links for Hangars.  This way we can maintain the Gitorious web interface links and git command instructions in a functional state by simply updating the single source of {{tl|repo link}}.&lt;br /&gt;
&lt;br /&gt;
[[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 11:38, 29 February 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
: I just remembered [[Special:LinkSearch]], so make that 184 broken gitorious.org links remaining.  Lots more work to do :)&lt;br /&gt;
&lt;br /&gt;
: [[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 14:46, 29 February 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
For some of these templates, e.g. {{tl|repo link/doc usage}}, I'm trying to implement some logic for automatic whitespace padding for documentation formatting, but the &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;{{#len:string}}&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; function is not enabled.  According to {{mediawiki|Wikitext_parser/Core_parser_functions#.23len}} and {{mediawiki|Extension:StringFunctions}}, the option &amp;lt;code&amp;gt;$wgPFEnableStringFunctions = true;&amp;lt;/code&amp;gt; should be set (in &amp;lt;code&amp;gt;LocalSettings.php&amp;lt;/code&amp;gt;).  Unless there is a reason for not using this, I was wondering if someone could enable this?  Cheers!&lt;br /&gt;
&lt;br /&gt;
[[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 09:53, 8 March 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
=== Archived newsletters and dead links? ===&lt;br /&gt;
&lt;br /&gt;
Do we have a policy for the dead links in the FlightGear newsletters?  It is obviously good to preserve the historic state.  But there are many Gitorious links that could be made functional again using the {{tl|gitorious source}} template to point to the historic Gitorious archives (including the official FlightGear repositories, rather than using {{tl|fgdata source}}, for example).  The https://gitorious.org links have been converted from URL/path based to query based, so absolutely all of the old links are broken.  I am steadily converting all Gitorious links to use the [[Template:repo link/doc related|{{obr}}repo link{{cbr}} family of templates]], with the exception of the newsletters.&lt;br /&gt;
&lt;br /&gt;
[[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 04:52, 8 March 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
: I think it could be a good idea to try update old links in those newsletters.  I sometimes look back at things and tend to think that I probably are not the only one doing that.&lt;br /&gt;
: I wonder if the rotten links should be replaced or stricken, but I think they could just as well be replaced.  The key thing is that they go to the same resource or content, not weather they have been updated or not (also, the change will be visible in the revision history after all).&lt;br /&gt;
: —[[User:Johan G|Johan G]] ([[User_talk:Johan_G|Talk]] | [[Special:Contributions/Johan_G|contribs]]) 07:11, 8 March 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
:: I should add that I'm using [http://wiki.flightgear.org/index.php?title=Special:LinkSearch&amp;amp;limit=500&amp;amp;offset=0&amp;amp;target=http%3A%2F%2Fgitorious.org &amp;lt;nowiki&amp;gt;Special:LinkSearch for http://gitorious.org&amp;lt;/nowiki&amp;gt;] and [http://wiki.flightgear.org/index.php?title=Special:LinkSearch&amp;amp;limit=500&amp;amp;offset=0&amp;amp;target=https%3A%2F%2Fgitorious.org &amp;lt;nowiki&amp;gt;Special:LinkSearch for https://gitorious.org&amp;lt;/nowiki&amp;gt;].  And I am also not touching the &amp;lt;code&amp;gt;User*&amp;lt;/code&amp;gt; pages, &amp;lt;code&amp;gt;*talk*&amp;lt;/code&amp;gt; pages, or pages tagged as out of date or up for deletion.  For the newsletters I might look at these later when the broken Gitorious links are fixed in the rest of the wiki but, as these are locked, someone else might have make the switch to {{tl|gitorious source}}, {{tl|gitorious url}}, {{tl|gitorious clone}}, and {{tl|gitorious merge request}}.&lt;br /&gt;
&lt;br /&gt;
:: [[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 02:53, 9 March 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
::: I will temporarily add a table here for the templates in the newsletters and will slowly fix them one by one together with any other admin.&lt;br /&gt;
{{navbox&lt;br /&gt;
| title = Click &amp;quot;show&amp;quot; to show --&amp;gt;&lt;br /&gt;
| state = collapsed&lt;br /&gt;
| navbar = plain&lt;br /&gt;
| list1 =&lt;br /&gt;
http:...&lt;br /&gt;
{{{!}} class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Fixed !! Newsletter !! Gitorious URL !! Notes&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[FlightGear Newsletter May 2010]]&lt;br /&gt;
{{!}} http://gitorious.org/fg&lt;br /&gt;
{{!}} No equivalent link for the Gitorious archive - project pages are dead.  Maybe just use http://gitorious.org/?&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[Es/FlightGear Newsletter May 2010]]&lt;br /&gt;
{{!}} http://gitorious.org/fg&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[FlightGear Newsletter September 2010]]&lt;br /&gt;
{{!}} http://gitorious.org/fg/flightgear/commit/5c6fe952598053fa63631fc0161d666f22a50f51&lt;br /&gt;
{{!}} Functional link, equivalent to {{gitorious url|fg|flightgear|commit=5c6fe952598053fa63631fc0161d666f22a50f51}}.&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[Es/FlightGear Newsletter September 2010]]&lt;br /&gt;
{{!}} http://gitorious.org/fg/flightgear/commit/5c6fe952598053fa63631fc0161d666f22a50f51&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[FlightGear Newsletter January 2011]]&lt;br /&gt;
{{!}} http://gitorious.org/jsbsim/jsbsim&lt;br /&gt;
{{!}} Functional link.  Switched to {{gitorious url|jsbsim|jsbsim}} to future-protect the link.&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[Es/FlightGear Newsletter January 2011]]&lt;br /&gt;
{{!}} http://gitorious.org/jsbsim/jsbsim&lt;br /&gt;
{{!}} Functional link.  Switched to {{gitorious url|jsbsim|jsbsim}} to future-protect the link.&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[FlightGear Newsletter February 2011]]&lt;br /&gt;
{{!}} http://gitorious.org/headtrack&lt;br /&gt;
&lt;br /&gt;
http://gitorious.org/arduinocockpit&lt;br /&gt;
{{!}} Project pages are dead, switched to {{gitorious url|headtrack|headtrack}}&lt;br /&gt;
&lt;br /&gt;
{{gitorious url|arduinocockpit|arduinocockpit}}&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[Es/FlightGear Newsletter February 2011]]&lt;br /&gt;
{{!}} http://gitorious.org/arduinocockpi&lt;br /&gt;
&lt;br /&gt;
http://gitorious.org/headtrack&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[FlightGear Newsletter March 2011]]&lt;br /&gt;
{{!}} http://gitorious.org/lockheed-l10-electra&lt;br /&gt;
{{!}} Missing project - i.e. {{gitlab source|user=emilianh|repo=Lockheed-L10-Electra|text=migrated to GitLab}}.  Switched to {{gitlab source|user=emilianh|repo=Lockheed-L10-Electra}}.&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[Es/FlightGear Newsletter March 2011]]&lt;br /&gt;
{{!}} http://gitorious.org/lockheed-l10-electra&lt;br /&gt;
{{!}} Switched to {{gitlab source|user=emilianh|repo=Lockheed-L10-Electra}}.&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[FlightGear Newsletter November 2011]]&lt;br /&gt;
{{!}} http://gitorious.org/flightgear-aircraft&lt;br /&gt;
{{!}} Switched to {{gitorious source}} and rephrased text slightly to help readers find the repositories.&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[FlightGear Newsletter October 2012]]&lt;br /&gt;
{{!}} http://gitorious.org/anders-hangar/mtb_20m/trees/master&lt;br /&gt;
{{!}} Switch to {{gitorious url|proj=anders-hangar|repo=mtb_20m}}&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[FlightGear Newsletter March 2013]]&lt;br /&gt;
{{!}} http://gitorious.org/fg/flightgear/blobs/next/scripts/java/FGClient/src/FGFSDemo.java&lt;br /&gt;
{{!}} Switched to {{gitorious url|proj=fg|repo=flightgear|path=scripts/java/FGClient/src/FGFSDemo.java}}.  This points to the old Gitorious repository to protect against path changes in the future.&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[FlightGear Newsletter September 2013]]&lt;br /&gt;
{{!}} http://gitorious.org/boeing/707&lt;br /&gt;
{{!}} Switched to {{gitorious source|proj=boeing|repo=707}}&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[Es/FlightGear Newsletter September 2013]]&lt;br /&gt;
{{!}} http://gitorious.org/boeing/707&lt;br /&gt;
{{!}} Switched to {{gitorious source|proj=boeing|repo=707}}&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[FlightGear Newsletter November 2013]]&lt;br /&gt;
{{!}} http://gitorious.org/fg/fgrun&lt;br /&gt;
{{!}} Switch to {{gitorious url|proj=fg|repo=fgrun}}&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[Es/FlightGear Newsletter November 2013]]&lt;br /&gt;
{{!}} http://gitorious.org/fg/fgrun&lt;br /&gt;
{{!}} Switch to {{gitorious url|proj=fg|repo=fgrun}}&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[FlightGear Newsletter July 2014]]&lt;br /&gt;
{{!}} http://gitorious.org/nasal-support/nasal-npp&lt;br /&gt;
{{!}} Switched to {{gitorious url|nasal-support|nasal-npp}}&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[FlightGear Newsletter April 2015]]&lt;br /&gt;
{{!}} http://gitorious.org&lt;br /&gt;
{{!}} Switched to {{tl|gitorious source}} without parameters for the Gitorious base URL, to future-protect it.&lt;br /&gt;
{{!}}}&lt;br /&gt;
&lt;br /&gt;
https:...&lt;br /&gt;
{{{!}} class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Fixed !! Newsletter !! Gitorious URL !! Notes&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[FlightGear Newsletter April 2011]]&lt;br /&gt;
{{!}} https://gitorious.org/papillon81/flightgear-custom-scenery/&lt;br /&gt;
&lt;br /&gt;
https://gitorious.org/dvanmosselbeen/flightgear-custom-scenery&lt;br /&gt;
{{!}} Switched to {{gitorious source|dvanmosselbeen|flightgear-custom-scenery}} and {{gitorious source|papillon81|flightgear-custom-scenery}}&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[Es/FlightGear Newsletter April 2011]]&lt;br /&gt;
{{!}} https://gitorious.org/dvanmosselbeen/flightgear-custom-scenery&lt;br /&gt;
&lt;br /&gt;
https://gitorious.org/papillon81/flightgear-custom-scenery/&lt;br /&gt;
{{!}} Switched to {{gitorious source|dvanmosselbeen|flightgear-custom-scenery}} and {{gitorious source|papillon81|flightgear-custom-scenery}}&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[FlightGear Newsletter July 2011]]&lt;br /&gt;
{{!}} https://gitorious.org/dvanmosselbeen/flightgear-custom-scenery&lt;br /&gt;
{{!}} Switched to {{gitorious source|dvanmosselbeen|flightgear-custom-scenery}}&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[Es/FlightGear Newsletter July 2011]]&lt;br /&gt;
{{!}} https://gitorious.org/dvanmosselbeen/flightgear-custom-scenery&lt;br /&gt;
{{!}} Switched to {{gitorious source|dvanmosselbeen|flightgear-custom-scenery}}&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[FlightGear Newsletter December 2011]]&lt;br /&gt;
{{!}} https://gitorious.org/dvanmosselbeen/flightgear-custom-scenery&lt;br /&gt;
{{!}} Switched to {{gitorious source|dvanmosselbeen|flightgear-custom-scenery}}&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[Fr/Nouvelles du projet FlightGear - décembre 2011]]&lt;br /&gt;
{{!}} https://gitorious.org/dvanmosselbeen/flightgear-custom-scenery&lt;br /&gt;
{{!}} Switched to {{gitorious source|dvanmosselbeen|flightgear-custom-scenery}}&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[FlightGear Newsletter April 2012]]&lt;br /&gt;
{{!}} https://gitorious.org/fg/fgdata/blobs/master/Aircraft/Instruments-3d/garmin196/README&lt;br /&gt;
&lt;br /&gt;
https://gitorious.org/fg/fgdata/blobs/master/Aircraft/Instruments-3d/garmin196/doc/doc-en.htm&lt;br /&gt;
{{!}} Switched to {{fgdata source|path=Aircraft/Instruments-3d/garmin196/README|full=1}} and {{fgdata source|path=Aircraft/Instruments-3d/garmin196/doc/doc-en.htm|full=1}} to point to the current FGData locations and removed the name &amp;quot;Gitorious&amp;quot; to make the text of the Garmin 196 GPS section still relevant&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[FlightGear Newsletter August 2012]]&lt;br /&gt;
{{!}} https://gitorious.org/mil-mi-6&lt;br /&gt;
{{!}} Switched to {{gitorious url|proj=mil-mi-6|repo=mi6dev}}, and changed from the non-existent project page to the main repository.&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[FlightGear Newsletter October 2012]]&lt;br /&gt;
{{!}} https://gitorious.org/fgradar&lt;br /&gt;
{{!}} Switched from the project page to the direct repository {{gitorious url|fgradar|fgradar}}.&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[FlightGear Newsletter March 2013]]&lt;br /&gt;
{{!}} https://gitorious.org/fg/flightgear/commit/913727239d6776c0508d206f395e16c265413ec3&lt;br /&gt;
&lt;br /&gt;
https://gitorious.org/fg/flightgear/commit/eba03b5e469824ee8f1494723fcddbbc56155a08&lt;br /&gt;
{{!}} Switched to {{flightgear url|commit=913727239d6776c0508d206f395e16c265413ec3}} and {{flightgear url|commit=eba03b5e469824ee8f1494723fcddbbc56155a08}}.  This deliberately points to the current repository.&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[FlightGear Newsletter April 2013]]&lt;br /&gt;
{{!}} https://gitorious.org/fg-radi/osm2city&lt;br /&gt;
&lt;br /&gt;
https://gitorious.org/scenery-france-850&lt;br /&gt;
{{!}} Switched to the new GitLab repository {{gitlab source|proj=fg-radi|repo=osm2city|full=1}}&lt;br /&gt;
&lt;br /&gt;
and removed the no longer existent scenery-france-850 repository, replacing it with &amp;quot;&amp;lt;s&amp;gt;Scenery repository (Gitorious)&amp;lt;/s&amp;gt;&amp;quot;.&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[FlightGear Newsletter October 2013]]&lt;br /&gt;
{{!}} https://gitorious.org/fg/galvedros-fgdata&lt;br /&gt;
{{!}} Switch to {{gitorious url|proj=fg|repo=galvedros-fgdata}}&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[Es/FlightGear Newsletter October 2013]]&lt;br /&gt;
{{!}} https://gitorious.org/fg/galvedros-fgdata&lt;br /&gt;
{{!}} Switch to {{gitorious url|proj=fg|repo=galvedros-fgdata}}&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[FlightGear Newsletter November 2013]]&lt;br /&gt;
{{!}} https://gitorious.org/ec130/&lt;br /&gt;
{{!}} Switched from the project page to the direct repository {{gitorious source|ec130|ec130}}.&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[Es/FlightGear Newsletter November 2013]]&lt;br /&gt;
{{!}} https://gitorious.org/ec130/&lt;br /&gt;
{{!}} Switched from the project page to the direct repository {{gitorious source|ec130|ec130}}.&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[FlightGear Newsletter February 2014]]&lt;br /&gt;
{{!}} https://gitorious.org/fg/philosophers-fgdata/source/022bef27f05d4837d720f63c6507b47466ff2a59:Nasal/console/repl.nas#L436&lt;br /&gt;
&lt;br /&gt;
https://gitorious.org/fg/philosophers-fgdata/source/nasal-console:Nasal/console&lt;br /&gt;
&lt;br /&gt;
https://gitorious.org/fg/fgdata/commit/eaaf816b772649d5b0826a1d0bdd166dbc5b968f&lt;br /&gt;
&lt;br /&gt;
https://gitorious.org/fg/flightgear/commit/34ed79e5f88ffdfc5e651a1fe3e639cb8f4d3353&lt;br /&gt;
&lt;br /&gt;
https://gitorious.org/fg/flightgear/commit/5eee5e42ae4f5cf56283b3bf5a3be46efc2b51c4&lt;br /&gt;
&lt;br /&gt;
https://www.gitorious.org/fg/flightgear/merge_requests/26&lt;br /&gt;
{{!}} Switched to {{gitorious source|proj=fg|repo=philosophers-fgdata|branch=nasal-console|path=Nasal/console/repl.nas|line=708}}&lt;br /&gt;
&lt;br /&gt;
{{gitorious url|proj=fg|repo=philosophers-fgdata|branch=nasal-console|path=Nasal/console|view=tree}}&lt;br /&gt;
&lt;br /&gt;
{{fgdata-old url|commit=eaaf816b772649d5b0826a1d0bdd166dbc5b968f}}&lt;br /&gt;
&lt;br /&gt;
{{flightgear commit|34ed79e5f88ffdfc5e651a1fe3e639cb8f4d3353}}&lt;br /&gt;
&lt;br /&gt;
{{gitorious merge request|mr=54}}&lt;br /&gt;
&lt;br /&gt;
{{gitorious merge request|mr=26}}&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[Es/FlightGear Newsletter February 2014]]&lt;br /&gt;
{{!}} https://gitorious.org/fg/philosophers-fgdata/source/022bef27f05d4837d720f63c6507b47466ff2a59:Nasal/console/repl.nas#L436&lt;br /&gt;
&lt;br /&gt;
https://gitorious.org/fg/philosophers-fgdata/source/nasal-console:Nasal/console&lt;br /&gt;
&lt;br /&gt;
https://gitorious.org/fg/fgdata/commit/eaaf816b772649d5b0826a1d0bdd166dbc5b968f&lt;br /&gt;
&lt;br /&gt;
https://gitorious.org/fg/flightgear/commit/34ed79e5f88ffdfc5e651a1fe3e639cb8f4d3353&lt;br /&gt;
&lt;br /&gt;
https://gitorious.org/fg/flightgear/commit/5eee5e42ae4f5cf56283b3bf5a3be46efc2b51c4&lt;br /&gt;
&lt;br /&gt;
https://www.gitorious.org/fg/flightgear/merge_requests/26&lt;br /&gt;
{{!}} Changes match the English article.&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[FlightGear Newsletter April 2014]]&lt;br /&gt;
{{!}} https://gitorious.org/fg/fgdata/flightgear?p=fg/fgdata:flightgear.git;a=blob;f=keyboard.xml&lt;br /&gt;
&lt;br /&gt;
https://gitorious.org/fg/fgdata?p=fg:fgdata.git;a=commit;h=f8c56dcc52ffd3d6dfca1d39dc4a72b6b3478368&lt;br /&gt;
&lt;br /&gt;
https://gitorious.org/fg/hoorays-flightgear?p=fg:hoorays-flightgear.git;a=shortlog;h=refs/heads/topics/cppbind-fgprotocol&lt;br /&gt;
{{!}} This first link was the broken {{tl|git link}} template (see the table below).  The other two links are not in the article?!&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[FlightGear Newsletter June 2014]]&lt;br /&gt;
{{!}} https://gitorious.org/eddp-custom-scenery/eddp-custom-scenery/&lt;br /&gt;
{{!}} Switched to {{tl|gitorious clone}} to provide functional '''git clone''' instructions.&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[FlightGear Newsletter November 2014]]&lt;br /&gt;
{{!}} https://gitorious.org/fg/hoorays-fgdata/source/2857d8fc9fcfe2bb162a9eb9d3dcca4d41b3a876:Nasal/ai/aim9/aim9.fdm#L9&lt;br /&gt;
{{!}} Switch to {{gitorious url|proj=fg|repo=hoorays-fgdata|commit=2857d8fc9fcfe2bb162a9eb9d3dcca4d41b3a876|path=Nasal/ai/aim9/aim9.fdm|line=9}}&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[FlightGear Newsletter January 2015]]&lt;br /&gt;
{{!}} https://gitorious.org/fg/canvas-hackers-fgdata/source/f59c42134a5a77e343981dcff8278c3e2f094e87&lt;br /&gt;
{{!}} Switch to {{gitorious url|proj=fg|repo=canvas-hackers-fgdata|commit=f59c42134a5a77e343981dcff8278c3e2f094e87|view=summary}}&lt;br /&gt;
{{!}}}&lt;br /&gt;
&lt;br /&gt;
Broken templates:...&lt;br /&gt;
{{{!}} class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Fixed !! Newsletter !! Template !! Notes&lt;br /&gt;
{{!-}}&lt;br /&gt;
{{!}} {{tick}}&lt;br /&gt;
{{!}} [[FlightGear Newsletter April 2014]]&lt;br /&gt;
{{!}} {{tlx|Git link|gitorious|fg/fgdata|master|keyboard.xml|pre=$FG_ROOT/}}&lt;br /&gt;
{{!}} Switched to {{fgdata source|path=keyboard.xml|pre=$FG_ROOT}} to fix the Gitorious link created by the broken and depreciated {{tl|git link}} template.&lt;br /&gt;
{{!}}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
::: —[[User:Johan G|Johan G]] ([[User_talk:Johan_G|Talk]] | [[Special:Contributions/Johan_G|contribs]]) 12:06, 9 March 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
:::: I've added a '''notes''' column to help a little.&lt;br /&gt;
&lt;br /&gt;
:::: [[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 12:30, 9 March 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
=== Elimination of the dead Gitorious links ===&lt;br /&gt;
Thanks largely to the diversity and flexibility of the [[:Category:Repository link templates|{{obr}}repo link{{cbr}} family of templates]], I have now managed to eliminate almost every last dead Gitorious link in the FlightGear wiki!  The locked Newsletter articles, user pages, and talk pages are the only exceptions.  The page counts from the (Main) namespace are:&lt;br /&gt;
* [http://wiki.flightgear.org/index.php?target=http%3A%2F%2Fgitorious.org&amp;amp;namespace=0&amp;amp;title=Special%3ALinkSearch &amp;lt;nowiki&amp;gt;Special:LinkSearch for http://gitorious.org&amp;lt;/nowiki&amp;gt;] &amp;amp;mdash; 37.  Of these, 17 are for the front page with the news of the Gitorious to SourceForge migration, and the rest are Newsletters.&lt;br /&gt;
* [http://wiki.flightgear.org/index.php?title=Special:LinkSearch&amp;amp;limit=500&amp;amp;offset=0&amp;amp;target=https%3A%2F%2Fgitorious.org&amp;amp;namespace=0 &amp;lt;nowiki&amp;gt;Special:LinkSearch for https://gitorious.org&amp;lt;/nowiki&amp;gt;] &amp;amp;mdash; 166.  Most of these links are valid and created by the {{obr}}gitorious *{{cbr}} subtemplates of {{tl|repo link}}.  The remaining broken links are all in the locked Newsletters.&lt;br /&gt;
The Howto:* pages are not in the (Main) wiki namespace, but I've knocked those out too.&lt;br /&gt;
&lt;br /&gt;
[[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 13:54, 10 March 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
: thanks for doing all this unglamorous work - I am sorry that Gijs was apparently too busy to follow up on my suggestion to either provide you with admin access around here, or at least to help you run a Python script to do all this work in an automated, rather than manual, fashion. Hopefully, things will work out better next time. Again, thank you. Like I said, I think you should definitely be given admin access on the wiki, especially given your recent contributions - and I would gladly have my wiki status downgraded accordingly. In fact, if I was able to directly promote accounts accordingly, I would have done so months ago - however, it seems that Gijs is the only one to have those privileges, and he mentioned off-list that he's kinda busy with RL/exams etc, so it is to be expected that he's going to become a bottleneck more often - hopefully, this will be recongized as an actual issue, so that there will be more people able to promote new wiki admins. Sorry that things didn't work out better this time, and thanks so much for doing all this stuff manually. -[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 14:49, 10 March 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
:: No problems!  As for automating this, that would not have been possible.  If you look at the changes, you'll see that each one is different &amp;lt;sup&amp;gt;[http://wiki.flightgear.org/index.php?title=Special:RecentChanges&amp;amp;to=20160310210655&amp;amp;limit=500]&amp;lt;/sup&amp;gt;.  I had to check each one, and update the link as required.&lt;br /&gt;
&lt;br /&gt;
:: [[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 16:08, 10 March 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
::: There's three of us actually (Curt, Simon and myself), no need to wait on me. See http://wiki.flightgear.org/index.php?title=Special%3AListUsers&amp;amp;username=&amp;amp;group=bureaucrat&amp;amp;limit=100 (Sek is inactive nowadays) ;-)&lt;br /&gt;
::: Please note that forum pms are really not the best way to contact me. I very much prefer email over forum pms as it's a lot easier to filter out the huge amounts of nonsense I'm receiving from stuff requiring actual attention.&lt;br /&gt;
::: Anyhow I've just  promoted Bugman so he can edit locked articles.&lt;br /&gt;
::: [[User:Gijs|Gijs]] ([[User talk:Gijs|talk]]) 05:06, 11 March 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
:::: Thank you.  I'll try to preserve the original intent of the Newsletters while fixing the broken links (maybe even preserving any original URLs as Mediawiki link text, while pointing to the new URL).  I will use the {{obr}}gitorious *{{cbr}} templates to point to the historical sources, and will probably use this for all of the Gitorious URLs so that we have full control over any future URL breakages via the single location of {{tl|repo link}}.  For example, if they change the gitorious.org domain name to a https://archive.org subdomain (i.e. gitorious.archive.org).&lt;br /&gt;
&lt;br /&gt;
:::: [[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 06:40, 11 March 2016 (EST)&lt;br /&gt;
&lt;br /&gt;
=== Regex parsing of template parameters? ===&lt;br /&gt;
&lt;br /&gt;
For the {{tl|repo link}} template, I am currently trying to work out what to do for git branches and tags on the SourceForge infrastructure.  The problem is that the presence of the character &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; within a branch or tag name requires the text &amp;lt;code&amp;gt;/~&amp;lt;/code&amp;gt; to be appended to that name in the URL, for example:&lt;br /&gt;
&lt;br /&gt;
* Tag &amp;lt;code&amp;gt;version/2016.1.1&amp;lt;/code&amp;gt;:  https://sourceforge.net/p/flightgear/simgear/ci/version/2016.1.1/~/tree/simgear/ephemeris/ephemeris.cxx&lt;br /&gt;
* Branch &amp;lt;code&amp;gt;release/2016.1&amp;lt;/code&amp;gt;:  https://sourceforge.net/p/flightgear/simgear/ci/release/2016.1/~/tree/simgear/ephemeris/ephemeris.cxx&lt;br /&gt;
&lt;br /&gt;
I haven't found out a way to use regex to parse the &amp;lt;code&amp;gt;tag&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;branch&amp;lt;/code&amp;gt; template parameters to automate this, hence I am thinking of just giving the instruction for the template user to append this text to the &amp;lt;code&amp;gt;tag&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;branch&amp;lt;/code&amp;gt; parameter text themselves.  However this is not ideal - a change of this behaviour on the SourceForge side requires end pages with SourceForge URLs to be updated, rather than just updating {{tl|repo link}}.  I was wondering about possibility of installing the extension:&lt;br /&gt;
&lt;br /&gt;
* [https://www.mediawiki.org/wiki/Extension:RegexParserFunctions Extension:RegexParserFunctions]&lt;br /&gt;
&lt;br /&gt;
Though I'm not 100% sure if that will work.  Or does someone else know an alternative?  Cheers!&lt;br /&gt;
&lt;br /&gt;
[[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 12:09, 22 April 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
: not a solution, just a potential workaround would be checking for the most common prefix strings used in tags/branches (e.g. version, release, topic, topics) and explicitly rewrite the URL accordingly to append the /~ suffix -[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 12:59, 22 April 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
:: That might be a solution.  But I don't know how to do that without regex ;)  We really only have #ifeq statements, but that has to match the whole string.&lt;br /&gt;
&lt;br /&gt;
:: [[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 13:44, 22 April 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
As a temporary workaround, I'll update the SourceForge {{tl|repo link}} template instructions to tell the user to append &amp;lt;code&amp;gt;/~&amp;lt;/code&amp;gt; to the branch or tag name, if the &amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt; character is present.&lt;br /&gt;
&lt;br /&gt;
[[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 10:31, 20 May 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Discussion about quotes on the wiki ==&lt;br /&gt;
{{usr|Hooray}} have started a page now at [[FlightGear wiki:Quoting Guidelines]] ([http://wiki.flightgear.org/index.php?title=FlightGear_wiki:Quoting_Guidelines&amp;amp;oldid=96104 perm]) for a discussion regarding guidelines for the use of quotes on the wiki.  Join the discussion.&lt;br /&gt;
&lt;br /&gt;
—[[User:Johan G|Johan G]] ([[User_talk:Johan_G|Talk]] | [[Special:Contributions/Johan_G|contribs]]) 18:17, 21 March 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In slight relation to this I have tried to make the wiki more consistently use the most common spelling and case, &amp;quot;Instant-Cquotes&amp;quot; and have changed the automatic categorization accordingly.  All articles using the {{tl|FGCquote}} template can now be found in [[:Category:Articles containing Instant-Cquotes]] (currently some ~250 articles).&lt;br /&gt;
&lt;br /&gt;
—[[User:Johan G|Johan G]] ([[User_talk:Johan_G|Talk]] | [[Special:Contributions/Johan_G|contribs]]) 08:21, 23 March 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Reorganizing the Git articles ==&lt;br /&gt;
I've noticed that the [[:Category:Git|Git articles]] suffer from duplication and are in part obsolete (especially with regard to the instructions for running Git on Windows). Thus, I propose the following reorganization:&lt;br /&gt;
* [[Development workflow]]: reorganization to explain how the patch submission process is organized from a high-level point of view (forking the repository from SourceForge, developing, pushing the commits to the personal fork, submitting a merge request/sending a patch to the mailing list);&lt;br /&gt;
* [[FlightGear Git]]: leave as is;&lt;br /&gt;
* '''Installing and configuring Git''' - new article about installing Git and configuring it (setting the username/e-mail address); merge the contents of [[FlightGear Git on Windows]] and [[Resources WRT running git on Win32]] here;&lt;br /&gt;
* [[FlightGear Git for laymen]] - make it follow [[FGW:MOS]], merge the contents of [[Howto:Start using git]] here;&lt;br /&gt;
* [[FlightGear Git: core developers]] and [[FlightGear Git: data developers]] - I'm uncertain about what I should do with them: the only piece information that would not be written in other articles is the list of alternative methods for cloning FGData;&lt;br /&gt;
* [[FlightGear Git: gitiquette]] and [[FlightGear Git: tips]] - make them follow [[FGW:MOS]].&lt;br /&gt;
Any comments? -- [[User:Elgaton|ElGaton]] ([[User talk:Elgaton|&amp;lt;tt&amp;gt;talk&amp;lt;/tt&amp;gt; to me]]) 06:11, 13 May 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
: This is sorely needed!  For [[FlightGear Git: core developers]] and [[FlightGear Git: data developers]], maybe these can be merged into something like [[FlightGear Git: working with the repositories]]?  The only real difference is the URL, but that is a minor difference with the [[:Category:Repository link templates]].  This could be generalised into a set of instructions for working with all git repositories for the core infrastructure, including forking and merge requests, with a current focus on the SourceForge web and non-web interfaces.&lt;br /&gt;
&lt;br /&gt;
: [[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 08:17, 13 May 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
:: Yes, I was thinking about a similar solution as well. -- [[User:Elgaton|ElGaton]] ([[User talk:Elgaton|&amp;lt;tt&amp;gt;talk&amp;lt;/tt&amp;gt; to me]]) 10:16, 13 May 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
: For the reorganisation of the articles, it would be good to make a lot of use of the {{tl|Project infrastructure}} template.  This will abstract away the SourceForge infrastructure (well some instructions will be 100% SourceForge specific, so it won't be perfect).  I would like to however have [[Template talk:Project infrastructure#Slight variation of the current architecture|Johan's design]] implemented first, as it would be quite beneficial.&lt;br /&gt;
&lt;br /&gt;
: [[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 18:43, 14 May 2016 (EDT)&lt;br /&gt;
:: Thanks, didn't know it existed. Right now I'm fixing some last-minute bugs before the release, but I'll have a look at this. -- [[User:Elgaton|ElGaton]] ([[User talk:Elgaton|&amp;lt;tt&amp;gt;talk&amp;lt;/tt&amp;gt; to me]]) 09:05, 15 May 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
::: And while we're at it, we also have a handful of git related templates to abstract away UI-specifics, which would allow us/me to upload screenshots for different interfaces (CLI, tortoisegit etc), so that we only need to update the templates, and not touch any  of those articles. OTOH, I cannot seem to find a recent discussion of the idea, only http://wiki.flightgear.org/Talk:Development_workflow and that has not been updated in 3 years. Any opinions ? -[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 20:52, 15 May 2016 (EDT)&lt;br /&gt;
:::: I'm not fully sold on this one. I see the point of creating templates (for example, the Git commands mentioned in [[Talk:Development workflow]] can be used in aircraft pages to explain how to checkout a development version from a private repository), but, in my opinion, screenshots are a bit &amp;quot;heavy&amp;quot; to be reused in other articles (beside the Git ones). Did you plan to use them in other pages and, if yes, how? -- [[User:Elgaton|ElGaton]] ([[User talk:Elgaton|&amp;lt;tt&amp;gt;talk&amp;lt;/tt&amp;gt; to me]]) 14:11, 23 May 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
:: It was originally intended to document different UIs and workflows - i.e. by parameterizing the templates, so that a matching set of commands, and screenshots, could be shown. The basic idea was that we have a growing number of articles detailing git workflows (clone, checkout, push, branch etc) - and it seemed to make sense to have a single article/template documenting the specifics, so that other articles could merely use that template, while specifiying the &amp;quot;action&amp;quot; and any other variable items (repository, branch etc) - and then use a template to provide the matching command line. However, don't worry - we don't need to do it that way. Originally, it was all inspired by [[Howto:Build FlightGear with NetBeans using CMake]]. -[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 14:23, 23 May 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
== UTF-8 language pages cannot be edited ==&lt;br /&gt;
&lt;br /&gt;
This is a continuation of [[FlightGear wiki:Village pump/Archive 2015#UTF-8 language pages cannot be edited]].  I can see that wiki editors are [[Zh/FlightGear Wiki|forced to create workarounds]], as the [[Main page]] in Chinese [http://wiki.flightgear.org/index.php?title=Zh/%E9%A6%96%E9%A1%B5&amp;amp;action=edit cannot be edited].  I think it is quite important to solve this ''&amp;quot;A database query error has occurred. This may indicate a bug in the software&amp;quot;'' issue.  As the fix is quite dangerous (see {{mediawiki|Topic:S1q54kosfdkhz6w1}}), do we have a backup system?  Do we have regular mysql and ftp dumps that can be backed up locally using rsync?&lt;br /&gt;
&lt;br /&gt;
[[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 05:16, 15 May 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
: This is quite urgent!  We have a new contributor who would like to add Greek translations to our wiki, but he is completely blocked.  Here are the steps to reproduce:&lt;br /&gt;
:* Go the the main page.&lt;br /&gt;
:* Click on the &amp;quot;Ελληνικά&amp;quot; language (Greek in Greek).&lt;br /&gt;
:* As the page doesn't exist, create it.&lt;br /&gt;
:* See the error message &amp;quot;A database query error has occurred. This may indicate a bug in the software&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
: [[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 17:30, 19 June 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
=== Non-latin characters in the URL ===&lt;br /&gt;
&lt;br /&gt;
The problem is non-latin characters in the URL.  I just ran a test:&lt;br /&gt;
&lt;br /&gt;
* Edit [[Zh/你好]] → ''&amp;quot;A database query error has occurred. This may indicate a bug in the software&amp;quot;''&lt;br /&gt;
* Edit the latin equivalent [[Zh/nihao]] → No error.&lt;br /&gt;
&lt;br /&gt;
Let me repeat that fixing this huge bug should be given the highest priority, as it prevents the wiki from being translated into many, many languages.&lt;br /&gt;
&lt;br /&gt;
[[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 05:30, 28 June 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Making wiki specific templates available via editor ? == &lt;br /&gt;
We now have an increasing number of wiki specific templates that should be more widely used, so that it would make sense to integrate those with the default mediawiki editor - e.g. the URL encapsulating templates. -[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 10:12, 16 May 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Categorizing aircraft infoboxes by hangar ==&lt;br /&gt;
I would like to bring the discussions from [[Template talk:Infobox aircraft#fgaddon aircraft]] into here for greater exposure.  The idea discussed there was to add &amp;lt;code&amp;gt;hangar&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;aircraft&amp;lt;/code&amp;gt; parameters to automate and categorise the aircraft infoboxes.  This is to help readers instantly identify the source of the aircraft and to give greater exposure to 3rd party hangars or independent aircraft.  To show off the potential of this automated approach, I have created an example template at [[User:Bugman/Infobox Aircraft]] (see the bottom for an example based on the [[Space Shuttle]] infobox).  Each [[FlightGear hangars#Third party sites|3rd party hangar]] can add one of the following options:&lt;br /&gt;
&lt;br /&gt;
* The hangar logo, with a link to the hangar.  For example I have created an initial test logo for FGAddon:  [[File:FGAddon logo.png|80px]]&lt;br /&gt;
* Development repository link.  An automatically created link, if the {{param|development}} parameter is not supplied.&lt;br /&gt;
* Download link.  An automatically created link, if the {{param|download}} parameter is not supplied.&lt;br /&gt;
* A hangar category.  For example [[:Category:FGAddon hangar]].&lt;br /&gt;
&lt;br /&gt;
Feedback would be appreciated.  Cheers!&lt;br /&gt;
&lt;br /&gt;
[[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 04:53, 25 May 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
: Following from these ideas, I have made a proposal for a new template:  [[Template talk:Infobox aircraft#Proposal for a new aircraft infobox template design (2016/06)]].  The more feedback on this, the better ;)  Cheers!&lt;br /&gt;
&lt;br /&gt;
: [[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 10:17, 1 June 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
:: Thanks for your work - looks good, the only change I would make is (as you noted in the template talk page) replacing the repository/download/livery database/forum thread icons with something more suitable and less &amp;quot;brilliant&amp;quot; icons (though I admit I don't have an alternative proposal for this right now). -- [[User:Elgaton|ElGaton]] ([[User talk:Elgaton|&amp;lt;tt&amp;gt;talk&amp;lt;/tt&amp;gt; to me]]) 04:40, 2 June 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
::: Cheers!  I used the high quality Oxygen icon set from the git repository at https://quickgit.kde.org/?p=oxygen-icons.git (this used to be at svn://anonsvn.kde.org/home/kde/trunk/kdesupport/oxygen-icons), as these are {{tl|LGPLv3}} licensed, and hence usable on this wiki.  I especially liked the gender neutral icon for the forum:  [[File:Meeting-attending 32x32.png]].  They are hi-colour and hence match the bright yellow status stars, but they don't match the minimalistic {{tl|ready}} icons.  Anyway, we can switch to a different icon set after the template and aircraft infobox collection have been updated, and once a suitable set is found or created and, more importantly, once a FG wiki-wide colour scheme policy has been discussed ;)&lt;br /&gt;
&lt;br /&gt;
::: — [[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 05:21, 2 June 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
=== Bermuda Triangle ===&lt;br /&gt;
&lt;br /&gt;
To allow for the easy management of wiki articles in which the aircraft appears to have been lost, I have created the new [[:Category:Bermuda Triangle]] aircraft &amp;quot;hangar&amp;quot;.  If the {{param|hangar}} parameter for the {{tl|infobox aircraft}} is set to {{param||bermuda}}, then the result is:  [[Template:Infobox aircraft#Lost aircraft]].  Feedback is more than welcome!&lt;br /&gt;
&lt;br /&gt;
[[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 06:36, 2 August 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Set up a robot to fix all the broken &amp;quot;prettytable&amp;quot; table classes? ==&lt;br /&gt;
&lt;br /&gt;
After the last Mediawiki update, the &amp;quot;prettytable&amp;quot; class for tables is no longer defined.  I believe that it has been merged into the &amp;quot;wikitable&amp;quot; class.  Here is a before and after example of fixing the tables:&lt;br /&gt;
* http://wiki.flightgear.org/index.php?title=List_of_abbreviations&amp;amp;oldid=70465&lt;br /&gt;
* http://wiki.flightgear.org/index.php?title=List_of_abbreviations&amp;amp;oldid=99718&lt;br /&gt;
I suggest automating the conversion of &amp;quot;prettytable&amp;quot; to &amp;quot;wikitable&amp;quot;, as this is an absolutely huge job.&lt;br /&gt;
&lt;br /&gt;
[[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 14:04, 10 June 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
: For reference, here is what the &amp;quot;prettytable&amp;quot; class formatting was like prior to its disappearance:&lt;br /&gt;
:* https://web.archive.org/web/20150510160626/http://wiki.flightgear.org/List_of_abbreviations&lt;br /&gt;
: The tables without borders that we now see is not the original format desired by those creating the tables (prior to sometime in 2015).&lt;br /&gt;
&lt;br /&gt;
: [[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 11:05, 13 June 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
:: As a workaround, I have redefined the &amp;quot;prettytable&amp;quot; class in [[Mediawiki:common.css]].&lt;br /&gt;
&lt;br /&gt;
:: [[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 06:23, 22 July 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
=== A new &amp;quot;keytable&amp;quot; class ===&lt;br /&gt;
&lt;br /&gt;
For an improved table formatting which sits well with the {{tl|key press}} template, I have defined the new &amp;quot;keytable&amp;quot; class in [[Mediawiki:common.css]].  This is for the elegant formatting of keyboard shortcut tables.  It uses high quality typesetting rules:  There is no background colour; uses generous margins and padding; only horizontal dividers at the top and bottom and between the header and main content; somewhat indented from the main text.  Here is an example (which will change as the &amp;quot;keytable&amp;quot; styles are refined):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;keytable&amp;quot;&lt;br /&gt;
! Key&lt;br /&gt;
! Function&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|d}}&lt;br /&gt;
| Open/close crew door&lt;br /&gt;
|-&lt;br /&gt;
| {{key press|D}}&lt;br /&gt;
| Open/close passenger door&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 07:49, 21 July 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
== URL change notifications ==&lt;br /&gt;
Referring to controversial URL changes like &amp;lt;ref&amp;gt;http://wiki.flightgear.org/index.php?title=Airbus_A340-600HGW&amp;amp;diff=99775&amp;amp;oldid=99774&amp;lt;/ref&amp;gt;, could we discuss setting up some rules, infrastructure/tools to get a notification when certain links (regex) are updated/added ? For now, I have updated http://wiki.flightgear.org/MediaWiki:Spam-blacklist accordingly.-[[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 06:23, 12 June 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
: We currently have these situations under control&amp;lt;ref&amp;gt;http://wiki.flightgear.org/index.php?title=Airbus_A340-600HGW&amp;amp;diff=next&amp;amp;oldid=99776&amp;lt;/ref&amp;gt;, and I have been able to resolve them in a way that is beneficial to all.  So I don't think we need such measures.  Education is more productive, as the intent is good.  And I believe that both monitoring the recent changes list and a simple search for that keyword are sufficient for now.&lt;br /&gt;
&lt;br /&gt;
: [[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 11:11, 13 June 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
== SVG graphics support? ==&lt;br /&gt;
I was wondering if we could [https://www.mediawiki.org/wiki/Manual:Image_administration#SVG enable SVG graphics support]?  Currently we cannot upload svg files&amp;lt;ref&amp;gt;https://forum.flightgear.org/viewtopic.php?t=29732&amp;amp;p=288612#p288612&amp;lt;/ref&amp;gt;.  The purpose would be for high quality graphics at all resolutions for icons, logos, banners, etc., and allowing for low resolution bitmap graphics to be made into higher resolution graphics for future wiki purposes.&lt;br /&gt;
&lt;br /&gt;
[[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 10:49, 13 June 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
== Thai language support ==&lt;br /&gt;
&lt;br /&gt;
Could we please have Thai (th) added to the supported langauges in LocalSettings.php? Cheers!&lt;br /&gt;
&lt;br /&gt;
[[User:Bugman|Bugman]] ([[User talk:Bugman|talk]]) 07:21, 10 August 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
== new portal for cockpit building (hardware) ? ==&lt;br /&gt;
We are now seeing an increasing number of articles relating to hardware/cockpit building -- [[User:Hooray|Hooray]] ([[User talk:Hooray|talk]]) 13:57, 21 August 2016 (EDT)&lt;br /&gt;
&lt;br /&gt;
* [[Howto:C172P Panel Project]]&lt;br /&gt;
* [[Howto:Build your own procedure trainer]]&lt;br /&gt;
* [[Howto:Build your own Panel or Cockpit]]&lt;br /&gt;
* [[Howto:Build your own Panel or Cockpit - Prototyping]]&lt;br /&gt;
* [[Howto:Build your own Panel or Cockpit - Software]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
See also [[:Category:Cockpit_building]]&lt;br /&gt;
&lt;br /&gt;
: I've added all relevant pages (except omissions) in the category Cockpit_building, so this could be enough, but having a new portal could encourage sharing of experience. Or perhaps we just need a new sub-forum on the FlightGear site?&lt;br /&gt;
: [[User:Tipunch|Tipunch]] ([[User talk:Tipunch|talk]])&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Build_your_own_Panel_or_Cockpit_-_Prototyping&amp;diff=103229</id>
		<title>Howto:Build your own Panel or Cockpit - Prototyping</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Build_your_own_Panel_or_Cockpit_-_Prototyping&amp;diff=103229"/>
		<updated>2016-08-20T07:09:10Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: Category:Cockpit building&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align: right&amp;quot;&amp;gt;[[Howto:Build your own Panel or Cockpit | Return to Build your own Panel or Cockpit]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;hr&amp;gt;&lt;br /&gt;
In order to build anything of this complexity from scratch, you need to take things a step at a time.  Before you can put the parts together, you'll need to be sure the parts you are going to build will work as expected.&lt;br /&gt;
&lt;br /&gt;
Here's the areas I've identified for my project for prototypes in no particular order:&lt;br /&gt;
== Integrated Circuit Types and Features ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Type or Feature !! Description !! Manufacturer !! Part Nos &lt;br /&gt;
|-&lt;br /&gt;
| Buffers || || &lt;br /&gt;
|-&lt;br /&gt;
| Bus Hold || || &lt;br /&gt;
|-&lt;br /&gt;
| Inverters || || &lt;br /&gt;
|-&lt;br /&gt;
| Drivers || || &lt;br /&gt;
|-&lt;br /&gt;
| Flip Flops || || &lt;br /&gt;
|-&lt;br /&gt;
| latches|| || &lt;br /&gt;
|-&lt;br /&gt;
| Level Shifters|| || &lt;br /&gt;
|-&lt;br /&gt;
| Translators|| || &lt;br /&gt;
|-&lt;br /&gt;
| || || &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Integrated Circuit Candidates ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Description !! Manufacturer !! Part No !! Package/Case !! Supply Voltage !! Supply Current or Power Dissapation- Max&lt;br /&gt;
|-&lt;br /&gt;
| 8 Digit 7 Segment LED Display Driver || Maxim || MAX7221CNG+ || PDIP-Narrow-24 || 4V to 5.5 V || 330Ma&lt;br /&gt;
|-&lt;br /&gt;
| IO Expander I2C SPI 16 Lines ||Microchip ||MCP23016-I/SP ||PDIP-Narrow-28 || 2 to 5.5V ||&lt;br /&gt;
|-&lt;br /&gt;
| ||Microchip SPI 16 Lines ||MCP23S17-E/SP || PDIP-Narrow-28|| 1.8 to 5.5V ||&lt;br /&gt;
|-&lt;br /&gt;
| ||Microchip SPI 16 Lines ||MCP23S18-E/SP || PDIP-Narrow-28|| 1.8 to 5.5V ||&lt;br /&gt;
|-&lt;br /&gt;
| Multiplexer 8 channel-1 Data Selector|| Texas Instruments ||CD4512BE || PDIP-16|| -0.5 to 20V || 500mw&lt;br /&gt;
|-&lt;br /&gt;
| Demultiplexer CMOS 3 to 8 High||Texas Instruments  ||CD74HC237E ||PDIP-16 || 2 to 6V||&lt;br /&gt;
|-&lt;br /&gt;
| Demultiplexer CMOS 3 to 8 Low ||Texas Instruments  ||CD74HC137E ||PDIP-16 || 2 to 6V||&lt;br /&gt;
|-&lt;br /&gt;
| Demultiplexer CMOS 4 to 16 Low ||Texas Instruments||Texas Instruments ||CD74HC4515EN ||PDIP-24 ||  ||&lt;br /&gt;
|-&lt;br /&gt;
| ||Atmel ||ATMEGA8535-16PU || PDIP-40 .6&amp;quot;|| ||&lt;br /&gt;
|-&lt;br /&gt;
| ||Atmel ||ATMEGA328-PU ||PDIP-24 || ||&lt;br /&gt;
|-&lt;br /&gt;
| ||Atmel ||ATMEGA8A-PU ||PDIP-24 || ||&lt;br /&gt;
|-&lt;br /&gt;
| || || || || ||&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
== I2C and SPI Interfaces ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Feature !! Description !! Platform !! Library&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | I2C and SPI Master &lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Bus Masters for I2c and SPI &lt;br /&gt;
| Rasberry Pi&lt;br /&gt;
| wiringPi&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| AtMega || Check the Web. There's got to be one.&lt;br /&gt;
|-&lt;br /&gt;
| Bitbanged Bus Masters&lt;br /&gt;
| Raspberry Pi or AtMega&lt;br /&gt;
| Don't know if these will be needed?&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=2 | AtMega Driver &lt;br /&gt;
| rowspan=2 | Driver to manage communication of Raw Data for AtMega Peripherals&lt;br /&gt;
| Raspberry Pi || New Code&lt;br /&gt;
|-&lt;br /&gt;
| AtMega ||  New Code&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| I2C and SPI Port Expander Drivers || Exact Chip TBD || Raspberry Pi || Check the Web for code or write in C&lt;br /&gt;
|-&lt;br /&gt;
| 7 Segment Display Driver || Max7221 Driver for 24 digits displayed on radios || Raspberry Pi || Check the Web for code or write in C&lt;br /&gt;
|- &lt;br /&gt;
| SPI Select || Since several SPI devices will be needed, there needs to be a way to select the one to be active.  Several Methods may apply&lt;br /&gt;
* Use GPIO pins directly&lt;br /&gt;
* Use a Decoder Chip&lt;br /&gt;
* Use an I2c or SPI Port Expander ||Raspberry Pi || Need to look at examples and search for code&lt;br /&gt;
| Raspberry Pi &lt;br /&gt;
| &lt;br /&gt;
* Need to look at examples  &lt;br /&gt;
* Probably need to code this &lt;br /&gt;
|- &lt;br /&gt;
| I2C Select || Need to know more about how the addresing and selection of I2c Devices work || Raspberry Pi  &lt;br /&gt;
| &lt;br /&gt;
* Need to look at examples  &lt;br /&gt;
* Probably need to code this &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Flightgear Properties and Hardware Interfaces ==&lt;br /&gt;
* Mapping of each Flightgear property to a hardware interface and one or more addresses on the interface and to a routine to translate and move data between them.&lt;br /&gt;
* Pi to Flightgear requires Property Path, Name and Value.  Protocol is documented on Flightgear Wiki.&lt;br /&gt;
* Pi to Max7221 is defined by the chip&lt;br /&gt;
* Pi to Port Expander is defined by the chip and a driver on the Pi to use the port expander instead of a gpio pin &lt;br /&gt;
* Pi to AtMega and Atmega to Pi requires an id for the AtMega interface port associated with the property and the value.&lt;br /&gt;
* To save time on the SPI or I2c intefaces, a table will be loaded down from the Pi to the ATMega at startup.  On the AtMega, it will contain the AtMega Interface Port Id, identify the port's handler routine and the hardware addressing data for the port. On the Pi, it will contain the AtMega Interface Port Id, the path and name of the Flightgear property and the id of the Pi Routine responsible for translating between the Property Value and the AtMega Hardware Value.&lt;br /&gt;
&lt;br /&gt;
for details see: [[Howto:Build your own Panel or Cockpit - Software]]&lt;br /&gt;
&lt;br /&gt;
== Switches ==&lt;br /&gt;
* Map anything that behaves like a switch as a switch &lt;br /&gt;
** Switch Multiplexing&lt;br /&gt;
** Switch De-Bouncing&lt;br /&gt;
** On-Off Switch&lt;br /&gt;
** On-Off-On Switch&lt;br /&gt;
** Multi Position Switch&lt;br /&gt;
** Multiplexing Switch Data &lt;br /&gt;
** Rotary Encoder&lt;br /&gt;
== Encoder Processing ==&lt;br /&gt;
** Prioritization of Rotary Encoder Switch Data Processing &lt;br /&gt;
** Magnetic Encoder &lt;br /&gt;
** Rotary Encoder vs Magnetic Encoder &lt;br /&gt;
** Magnetic Encoder Calibration &lt;br /&gt;
** Synchronizing Magnetic Encoder Data, Actual Rotation of Instrument Compass Dial and Corresponding Rotation in Flightgear Properties&lt;br /&gt;
== Volume or Control Axis Data ==&lt;br /&gt;
** Audio Volume or Linear Potentiometer&lt;br /&gt;
** Potentiometer vs Magnetic Encoder&lt;br /&gt;
== Air Coils ==&lt;br /&gt;
* Air Coils are used for Various Guages and Instruments with Needles &lt;br /&gt;
** Mounting of Air Coils for Gauges, VORs and center dial instruments&lt;br /&gt;
** Separate Air Coils for Three Needles at Center of Altitude Indicator&lt;br /&gt;
== Mechanical Linkages == &lt;br /&gt;
** Rotation of Attitude Indicator&lt;br /&gt;
** Attitude Indicator Horizon&lt;br /&gt;
** Ball Part of Turn Coordinator&lt;br /&gt;
** Adjustment of Magnetic Compass with two adjusters&lt;br /&gt;
== Radios and Auto Pilot == &lt;br /&gt;
* Display of alphabetic and numeric data in COM, NAV and DME Radios&lt;br /&gt;
* Tuning via Rotary Encoder or Magnetic Encoder (needs detent)&lt;br /&gt;
* Dual Rotary Encoders or Magnetic Encoders for Tuners&lt;br /&gt;
* Pull Switches vs Push Switches&lt;br /&gt;
* Combining Indicators and Numeric Displays&lt;br /&gt;
* Modelling the KR87 Ident Radio 8 Position Switches&lt;br /&gt;
&lt;br /&gt;
== USB Serial Interface ==&lt;br /&gt;
** Implement using AtMega8-16PU&lt;br /&gt;
** Use for Flightgear data that cannot be set or sensed using Telnet&lt;br /&gt;
== Telnet Interface ==&lt;br /&gt;
* List as many properties needed for C172 as you can find&lt;br /&gt;
* Build a UI to display and set a number of them from the Raspberry Pi&lt;br /&gt;
* For the properties in the telnet or USB interfaces&lt;br /&gt;
== Raspberry Pi Setup ==&lt;br /&gt;
== Raspberry Pi Event Loop ==&lt;br /&gt;
* USB communication&lt;br /&gt;
* Telnet Communication&lt;br /&gt;
* I2C Master Communication&lt;br /&gt;
* SPI Master Communication&lt;br /&gt;
== ATmega Setup ==&lt;br /&gt;
== ATmega Event Loop ==&lt;br /&gt;
* I2C Slave Communication&lt;br /&gt;
* SPI Slave Communication&lt;br /&gt;
* Rotary Encoder Sense&lt;br /&gt;
* Other Switches Sense&lt;br /&gt;
* A/D Sense (rheostats)&lt;br /&gt;
* Air Coil Movement&lt;br /&gt;
* Frequency Display&lt;br /&gt;
* Indicator Display&lt;br /&gt;
* Instrument Lighting&lt;br /&gt;
* Logging&lt;br /&gt;
* Event Prioritization&lt;br /&gt;
&lt;br /&gt;
[[Category:Cockpit building]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Create_WebPanel_instrument&amp;diff=103228</id>
		<title>Howto:Create WebPanel instrument</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Create_WebPanel_instrument&amp;diff=103228"/>
		<updated>2016-08-20T07:07:32Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: Category:Cockpit building&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide will show you how to create a one simple web based instrument for a WebPanel. In a picture below, a Cessna 172P WebPanel is shown in another monitor in front of a lcd tv used as a scenery visual.&lt;br /&gt;
&lt;br /&gt;
[[File:C172p WebPanel with TV as visual.jpg|thumb|Cessna 172P WebPanel shown in a monitor front of a TV used as visual]]&lt;br /&gt;
&lt;br /&gt;
First you should check that you can see a Cessna 172P WebPanel on a browser window. Start Flightgear with a Cessna 172P plane selected and with &amp;quot;--httpd=8080&amp;quot; additional option to start internal webserver. Then from Flightgear's C172P aircraft menu, click &amp;quot;Panel in a Browser&amp;quot; and browser window should open with a working instrument panel. When you start engine and lift off, instruments should be moving.&lt;br /&gt;
&lt;br /&gt;
This HowTo uses following software:&lt;br /&gt;
* Ubuntu 16.04&lt;br /&gt;
* Flightgear 2016.2.1&lt;br /&gt;
* PC-9m aircraft&lt;br /&gt;
* Inkscape&lt;br /&gt;
&lt;br /&gt;
=== WebPanel folder and instrument files for aircraft ===&lt;br /&gt;
&lt;br /&gt;
Create a folder named &amp;quot;WebPanel&amp;quot; into Flightgear's aircraft folder. In Ubuntu, installed aircraft folders can be found from: /home/YOUR_USER_NAME/.fgfs/Aircraft/org.flightgear.official/Aircraft&lt;br /&gt;
&lt;br /&gt;
For WebPanel to work,  following files are needed:&lt;br /&gt;
* webpanel-properties.json (maps Flightgears internal properties for instruments)&lt;br /&gt;
* webpanel.html (html page what is shown in browser)&lt;br /&gt;
&lt;br /&gt;
And for a single instrument, following files are needed:&lt;br /&gt;
* INSTRUMENT_NAME.svg (vector image shown in www-page as flight instrument)&lt;br /&gt;
* INSTRUMENT_NAME.json (for instrument animations)&lt;br /&gt;
* INSTRUMENT_NAMEInterpolation.xml (not necessary file, but used if instrument animation needs to be non-linear)&lt;br /&gt;
&lt;br /&gt;
=== webpanel-properties.json ===&lt;br /&gt;
&lt;br /&gt;
webpanel-properties.json file maps Flightgears internal properties to instruments. Create a file named webpanel-properties.json, save it to aircrafts WebPanel folder and insert following code into it:&lt;br /&gt;
&amp;lt;syntaxhighlight land=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;instrumentSelector&amp;quot;: &amp;quot;.instrument&amp;quot;,&lt;br /&gt;
  &amp;quot;instrumentDataKey&amp;quot;:  &amp;quot;fgpanel-instrument&amp;quot;,&lt;br /&gt;
  &amp;quot;updateInterval&amp;quot;:     32,&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;propertyMirror&amp;quot;: [&lt;br /&gt;
    [&amp;quot;ias&amp;quot;,         &amp;quot;/instrumentation/airspeed-indicator/indicated-speed-kt&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This example file will take only planes indicated speed in knots and sends it to &amp;quot;ias&amp;quot;. If you need multiple internal properties for one instrument or for creating other instruments, see example from {{fgdata source|path = Aircraft/c172p/WebPanel/c172p-webpanel-properties.json}} file, for how more rows for multiple properties are added.&lt;br /&gt;
&lt;br /&gt;
=== WebPanel www-page file ===&lt;br /&gt;
&lt;br /&gt;
Create webpanel.html file and save it in WebPanel folder with following code:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight land=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;meta charset=utf-8 /&amp;gt;&lt;br /&gt;
&amp;lt;!-- Tweaks for panel on an ipad - from https://gist.github.com/tfausak/2222823 --&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;quot;apple-mobile-web-app-capable&amp;quot; content=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0&amp;quot; --&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;quot;apple-touch-fullscreen&amp;quot; content=&amp;quot;yes&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;quot;apple-mobile-web-app-status-bar-style&amp;quot; content=&amp;quot;black&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;title&amp;gt;FlightGear - PC-9m Instrument Panel&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;style type=&amp;quot;text/css&amp;quot; media=&amp;quot;screen&amp;quot;&amp;gt;&lt;br /&gt;
body,html {&lt;br /&gt;
    width: 100%;&lt;br /&gt;
    height: 100%;&lt;br /&gt;
    overflow: hidden;&lt;br /&gt;
    background-color: #000000;&lt;br /&gt;
    border: 0;&lt;br /&gt;
    margin: 0;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
.instrument {&lt;br /&gt;
    border: 1px solid #131313;&lt;br /&gt;
    padding: 8px;&lt;br /&gt;
    background-color: #111111;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; charset=&amp;quot;utf-8&amp;quot;&lt;br /&gt;
    src=&amp;quot;/3rdparty/jquery/jquery-1.11.1.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Latest compiled and minified CSS --&amp;gt;&lt;br /&gt;
&amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;bootstrap/bootstrap.min.css&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!-- Latest compiled and minified JavaScript --&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;bootstrap/bootstrap.min.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; charset=&amp;quot;utf-8&amp;quot; src=&amp;quot;/lib/jquery.fganimate.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; charset=&amp;quot;utf-8&amp;quot; src=&amp;quot;/lib/fgfs.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body data-fgpanel=&amp;quot;true&amp;quot; data-fgpanel-props=&amp;quot;webpanel-properties.json&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;pc9m_ASI&amp;quot; class=&amp;quot;instrument col-xs-2&amp;quot; data-fgpanel-instrument=&amp;quot;pc9m_ASI.json&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This creates a file for browser to show instruments. Important is data-fgpanel-props=&amp;quot;webpanel-properties.json&amp;quot;&amp;gt; which specifies planes properties .json file. In &amp;amp;#60;div&amp;amp;#62; tag id=&amp;quot;pc9m_ASI&amp;quot; and data-fgpanel-instrument=&amp;quot;pc9m_ASI.json&amp;quot; specifies what instrument is drawn into browser. To create a new instrument, add another &amp;amp;#60;div&amp;amp;#62; with new id tag and .json file. To create a new row for instruments start a new &amp;amp;#60;div class=&amp;quot;row&amp;quot;&amp;amp;#62;. See example from Cessna 172P planes folder /usr/share/games/flightgear/Aircraft/c172p/WebPanel/c172p-webpanel.html.&lt;br /&gt;
&lt;br /&gt;
=== INSTRUMENT_NAME.json ===&lt;br /&gt;
&lt;br /&gt;
INSTRUMENT_NAME.json file specifies how instrument behaves when Flightgears properties change. Create file named pc9m_ASI.json, save it to WebPanel folder and add following code into it:&lt;br /&gt;
&amp;lt;syntaxhighlight land=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{ &lt;br /&gt;
    &amp;quot;src&amp;quot;:    &amp;quot;pc9m_ASI.svg&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;animations&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;element&amp;quot;: &amp;quot;#Needle&amp;quot;,&lt;br /&gt;
        &amp;quot;type&amp;quot;:    &amp;quot;transform&amp;quot;,&lt;br /&gt;
        &amp;quot;transforms&amp;quot;: [{&lt;br /&gt;
          &amp;quot;type&amp;quot;: &amp;quot;rotate&amp;quot;,&lt;br /&gt;
          &amp;quot;a&amp;quot;: {&lt;br /&gt;
            &amp;quot;property&amp;quot;: &amp;quot;ias&amp;quot;,&lt;br /&gt;
            &amp;quot;interpolation&amp;quot;: &amp;quot;AirspeedInterpolation.xml&amp;quot;&lt;br /&gt;
          },&lt;br /&gt;
          &amp;quot;x&amp;quot;: 256,&lt;br /&gt;
          &amp;quot;y&amp;quot;: 256&lt;br /&gt;
        }]&lt;br /&gt;
      }&lt;br /&gt;
      &lt;br /&gt;
    ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Explanation for rows:&lt;br /&gt;
* &amp;quot;src&amp;quot;: &amp;quot;pc9m_ASI.svg&amp;quot;: filename of instruments .svg vector graphic file&lt;br /&gt;
* &amp;quot;element&amp;quot;: &amp;quot;#Needle&amp;quot;: instruments .svg images id what is meant to be animated&lt;br /&gt;
* &amp;quot;type&amp;quot;: &amp;quot;rotate&amp;quot;: we are rotating Needle layer of instrument image&lt;br /&gt;
* property &amp;quot;ias&amp;quot;: Flightgears internal property that causes the movement&lt;br /&gt;
* &amp;quot;interpolation&amp;quot;: file where interpolation is specified&lt;br /&gt;
* &amp;quot;x&amp;quot;: 256, &amp;quot;y&amp;quot;: 256: specifies origo for rotation. In our image size 512x512px, 256px is in middle of the image.&lt;br /&gt;
&lt;br /&gt;
=== INSTRUMENT_NAMEInterpolation.xml ===&lt;br /&gt;
&lt;br /&gt;
Create file AirspeedInterpolation.xml and save it to WebPanel folder with following code:&lt;br /&gt;
&amp;lt;syntaxhighlight land=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
 This file is part of FlightGear, the free flight simulator&lt;br /&gt;
 http://www.flightgear.org/&lt;br /&gt;
&lt;br /&gt;
 Copyright (C) 2009 Torsten Dreyer, Torsten (at) t3r _dot_ de&lt;br /&gt;
&lt;br /&gt;
 This program is free software; you can redistribute it and/or&lt;br /&gt;
 modify it under the terms of the GNU General Public License as&lt;br /&gt;
 published by the Free Software Foundation; either version 2 of the&lt;br /&gt;
 License, or (at your option) any later version.&lt;br /&gt;
&lt;br /&gt;
 This program is distributed in the hope that it will be useful, but&lt;br /&gt;
 WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU&lt;br /&gt;
 General Public License for more details.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;   0&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;    0&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;  35&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;   36&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;  40&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;   50&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;  60&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;  100&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;  80&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;  152&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt; 100&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;  206&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt; 120&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;  249&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt; 140&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;  291&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt; 160&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;  333&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt; 190&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;  340&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Interpolation lists first number input property (air speed in this example) and second number is angle for needle.&lt;br /&gt;
&lt;br /&gt;
=== Creating instrument graphics with Inkscape ===&lt;br /&gt;
&lt;br /&gt;
If you are not familiar with Inkscape, see [https://inkscape.org/en/learn/tutorials/ Inkscape tutorials].&lt;br /&gt;
&lt;br /&gt;
To create a instrument image, start creating a new 512x512 px size file with Inkscape. When drawing .svg file, following issues need to be kept in mind:&lt;br /&gt;
* moving objects needs to be on a different layers&lt;br /&gt;
* layers id needs to be renamed from Inkscapes XML editor. Layer animation will fail if id is not correct.&lt;br /&gt;
&lt;br /&gt;
Draw a round face and a simple needle on top of it&lt;br /&gt;
*Create new layer and call it &amp;quot;Face&amp;quot;. Draw a circle in it.&lt;br /&gt;
*create new layers called &amp;quot;Needle&amp;quot; and draw a needle in it. Needles rotating point should be in middle of the drawing area. Rename its ID from XML editor to &amp;quot;Needle&amp;quot;.&lt;br /&gt;
*Save it with a pc9m_ASI.svg name in to PC-9m aircrafts WebPanel folder. &lt;br /&gt;
&lt;br /&gt;
=== Test WebPanel ===&lt;br /&gt;
&lt;br /&gt;
To test instrument in WebPanel, start Flightgear with &amp;quot;--httpd=8080&amp;quot; additional option to start Flightgears web server.&lt;br /&gt;
&lt;br /&gt;
When Flightgear has started, go to http://localhost:8080/aircraft-dir/WebPanel/webpanel.html address and simple instrument with one needle and without numbers should be visible.&lt;br /&gt;
&lt;br /&gt;
Start PC-9m and when speed is rising you should see needle to start moving.&lt;br /&gt;
&lt;br /&gt;
[[File:PC-9m WebPanel tutorial air speed instrument.jpg|thumb|Example of WebPanel instrument showing PC-9m airspeed in browser]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Cockpit building]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:C172P_Cockpit_Project&amp;diff=103227</id>
		<title>Howto:C172P Cockpit Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:C172P_Cockpit_Project&amp;diff=103227"/>
		<updated>2016-08-20T07:06:58Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: Category:Cockpit building&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This Howto will develop into a detailed project plan for building a C172P Instrument Panel.  While not a step by step guide, it will include details on the prototyping, design and building of a panel.  The project includes the following major activities:&lt;br /&gt;
= Open Identified Tasks =&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Task Description !! Blocking Factors/Action Items/Progress !! Status&lt;br /&gt;
|-&lt;br /&gt;
| Bench Power Supply&lt;br /&gt;
| &lt;br /&gt;
* Blocked by Lack of suitable case &lt;br /&gt;
* Action: Visit Robinson's Hardware, check out aluminum sheet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Blocked by: Lack of a Bending Brake&lt;br /&gt;
* Action: Make a Bending Brake&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Action: Bend Some Tin&lt;br /&gt;
* Action: Test what load Resistor will turn on the power supply&lt;br /&gt;
* Action: Drill Mounting Holes for Load Resistor&lt;br /&gt;
* Mount the power supply in the hand built case&lt;br /&gt;
* Blocked by: No way to extract power from power supply without cutting wires&lt;br /&gt;
* Action Taken Ordered 24 Pin Socket from E-Bay&lt;br /&gt;
| Proceeding in part&lt;br /&gt;
|-&lt;br /&gt;
| Flightgear Rasberry Pi Client &lt;br /&gt;
| Ready To Start&lt;br /&gt;
* Create Data Structures&lt;br /&gt;
** Flightgear Aircraft Property Table&lt;br /&gt;
** Cockpit Hardware Table&lt;br /&gt;
** Flightgear Connection Table&lt;br /&gt;
* Build Test Stubs with data for these tables&lt;br /&gt;
* Investigate Exporting/Importing the data from XML files&lt;br /&gt;
* Find out if a node server could drive or call the client&lt;br /&gt;
* &lt;br /&gt;
| Status&lt;br /&gt;
|-&lt;br /&gt;
| Task Description&lt;br /&gt;
| Blocking Factors/Progress&lt;br /&gt;
| Status&lt;br /&gt;
|-&lt;br /&gt;
| Task Description&lt;br /&gt;
| Blocking Factors/Progress&lt;br /&gt;
| Status&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Description =&lt;br /&gt;
The work product will match an actual C172P cockpit instrument panel as closely as possible given constraints of tool availability, time and money.&lt;br /&gt;
&lt;br /&gt;
Versions: &lt;br /&gt;
# A set of rotary encoders and switches in an overlay for a regular monitor&lt;br /&gt;
# Expand the project to include items in the radio stack&lt;br /&gt;
# Replace the monitor with individual instruments &lt;br /&gt;
&lt;br /&gt;
= Design Alternatives =&lt;br /&gt;
* Instruments&lt;br /&gt;
** Monitor Overlay&lt;br /&gt;
** Individual Instruments&lt;br /&gt;
* Multi-value inputs &lt;br /&gt;
** using potentiometers and ADC ports &lt;br /&gt;
** Using magnetic encoders with:&lt;br /&gt;
*** AtMega driven pins&lt;br /&gt;
*** SPI&lt;br /&gt;
*** I2C&lt;br /&gt;
* Display of Numeric and Alphabetic data &lt;br /&gt;
** driven by Maxim Max7221 on an SPI interface&lt;br /&gt;
** driven directly by an AtMega processor&lt;br /&gt;
* Banks of switches and rotary encoders with a multiplexed parallel interface &lt;br /&gt;
* Raspberry Pi connected to one or more AtMega Processors via SPI or I2C&lt;br /&gt;
* Raspberry Pi connected to a 4 to 16 bit multiplexer to select SPI data&lt;br /&gt;
* Raspberry Pi responsible for interfacing raw data to flightgear property values&lt;br /&gt;
* Display of numeric and alphabetic data using 7 and 16 segment displays&lt;br /&gt;
** drive with AtMega chip and Transistors&lt;br /&gt;
** drive with Maxim Max7221CNG Integrated Circuit&lt;br /&gt;
* AtMega Processors with port expanders responsible for raw data&lt;br /&gt;
* AtMega Processors communicate with Raspberry Pi&lt;br /&gt;
** Using SPI&lt;br /&gt;
** Using I2C&lt;br /&gt;
* Telnet interface to Flightgear runs on Raspberry Pi&lt;br /&gt;
** C programming language&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Code Development Activities&lt;br /&gt;
=== Client to Flightgear protocol ===&lt;br /&gt;
=== Client to AtMega protocol&lt;br /&gt;
=== Pi Client ===&lt;br /&gt;
=== AtMega Client ===&lt;br /&gt;
=== Magnetic Encoders ===&lt;br /&gt;
* For Heading Adjusters on Instruments&lt;br /&gt;
* Replacement for Rotary Encoders &lt;br /&gt;
* Replacement for Potentiometers&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Proof of Concept and Prototyping Activities =&lt;br /&gt;
&lt;br /&gt;
== Client on PI ==&lt;br /&gt;
=== Communication with Flightgear using Telnet ===&lt;br /&gt;
* Change the value of a cockpit switch&lt;br /&gt;
* Read the value of a Com or Nav Radio's frequency&lt;br /&gt;
* Change a standby frequency &lt;br /&gt;
* Make a standby frequency the in use frequency&lt;br /&gt;
* Dim and brighten the instruments &lt;br /&gt;
* Move the throttle&lt;br /&gt;
* Move one of the control surfaces&lt;br /&gt;
=== SPI ===&lt;br /&gt;
* different speeds&lt;br /&gt;
* Error Detection and re-transmission&lt;br /&gt;
* Client to ATMega&lt;br /&gt;
* Client to Max7221&lt;br /&gt;
* Client to Port Expander&lt;br /&gt;
=== I2C ===&lt;br /&gt;
* different speeds&lt;br /&gt;
* Error Detection and re-transmission&lt;br /&gt;
* Client to ATMega&lt;br /&gt;
* Client to Port Expander&lt;br /&gt;
== Client on AtMega ==&lt;br /&gt;
=== Communication ===&lt;br /&gt;
* I2c&lt;br /&gt;
* SPI&lt;br /&gt;
* Raw Data Protocol&lt;br /&gt;
== Data Acquisition ==&lt;br /&gt;
* Switch &lt;br /&gt;
* Rotary Encoder&lt;br /&gt;
* Magnetic Encoder&lt;br /&gt;
* Potentiometer&lt;br /&gt;
== Control Data ==&lt;br /&gt;
* Air Core&lt;br /&gt;
* Stepper Motor&lt;br /&gt;
* Lighting Level&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Building =&lt;br /&gt;
&lt;br /&gt;
== Hardware Choices ==&lt;br /&gt;
* AtMega Models&lt;br /&gt;
* Raspberry Pi III&lt;br /&gt;
* for 7 and 16 segment displays&lt;br /&gt;
** Max7221&lt;br /&gt;
** or 7 Segment Driver Transistors&lt;br /&gt;
* 4 to 16 Multiplexer&lt;br /&gt;
* Magnetic Encoder&lt;br /&gt;
* Rotary Encoder&lt;br /&gt;
* Slider Potentiometer:&lt;br /&gt;
* Power Supply: Bench Supply based on an ATX PC power supply&lt;br /&gt;
* Knobs&lt;br /&gt;
** Heading Adjusters&lt;br /&gt;
** Radio Stack Volume&lt;br /&gt;
** Radio Stack Frequency Select&lt;br /&gt;
** Radio Stack Buttons&lt;br /&gt;
** Rotary Switches&lt;br /&gt;
** Rocker Switches&lt;br /&gt;
** Toggle Switches&lt;br /&gt;
** Main Switches&lt;br /&gt;
** Magneto Switch&lt;br /&gt;
** Flaps Lever: Design the Mechanism to attach to a rotary switch&lt;br /&gt;
&lt;br /&gt;
[[Category:Cockpit building]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Cessna_150&amp;diff=103142</id>
		<title>Cessna 150</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Cessna_150&amp;diff=103142"/>
		<updated>2016-08-18T06:56:07Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: Gallery added&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WIP|The C150 is now (20160504) under maintenance by HJ}}&lt;br /&gt;
&lt;br /&gt;
{{:{{PAGENAME}}/info}}&lt;br /&gt;
The '''Cessna 150''' is a two-seat tricycle gear general aviation [[aircraft]], that was designed for flight training, touring and personal use.&lt;br /&gt;
&lt;br /&gt;
The Cessna 150 is the third most produced civilian plane ever, with 23,839 aircraft produced. The Cessna 150 was offered for sale in the 150 basic model, Commuter, Commuter II, Patroller and the aerobatic Aerobat models.&lt;br /&gt;
&lt;br /&gt;
== Normal Operating Procedures ==&lt;br /&gt;
&lt;br /&gt;
=== Airspeeds for normal flight operation ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !!  Vias&lt;br /&gt;
|-&lt;br /&gt;
| '''NORMAL / OPTIMUM''' || kts|| MPH&lt;br /&gt;
|-&lt;br /&gt;
| Best angle of climb '''V'''&amp;lt;sub&amp;gt;X&amp;lt;/sub&amp;gt; || 56 || 64&lt;br /&gt;
|-&lt;br /&gt;
| Best rate of climb '''V'''&amp;lt;sub&amp;gt;Y&amp;lt;/sub&amp;gt; || 68 || 78&lt;br /&gt;
|-&lt;br /&gt;
| Normal rotation speed '''V'''&amp;lt;sub&amp;gt;R&amp;lt;/sub&amp;gt; || 50 || 58&lt;br /&gt;
|-&lt;br /&gt;
| Normal climb speed || 65-75 || 75-85&lt;br /&gt;
|-&lt;br /&gt;
| Normal landing (no flaps) || 60-70 || 70-80&lt;br /&gt;
|-&lt;br /&gt;
| Normal landing (full flaps) || 50-60 || 57-69&lt;br /&gt;
|-&lt;br /&gt;
| Powered landing (no flaps) || 65 || 75&lt;br /&gt;
|-&lt;br /&gt;
| Powered landing (full flaps) || 55 || 63&lt;br /&gt;
|-&lt;br /&gt;
| Maximum performance approach || 52 || 60&lt;br /&gt;
|-&lt;br /&gt;
| Optimum glide speed || 60 || 69&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !!  Vias&lt;br /&gt;
|-&lt;br /&gt;
| '''LIMITS''' || kts|| MPH&lt;br /&gt;
|-&lt;br /&gt;
| Never Exceed Speed '''V'''&amp;lt;sub&amp;gt;NE&amp;lt;/sub&amp;gt; &amp;lt;br&amp;gt;Do not exceed this speed in any operation || 141 || 162&lt;br /&gt;
|-&lt;br /&gt;
| Max structural speed '''V'''&amp;lt;sub&amp;gt;NO&amp;lt;/sub&amp;gt; &amp;lt;br&amp;gt;Do no exceed this speed except in smooth air and&amp;lt;br&amp;gt;then only with caution || 107 || 123&lt;br /&gt;
|-&lt;br /&gt;
| Maneuvering speed '''V'''&amp;lt;sub&amp;gt;A&amp;lt;/sub&amp;gt; ||  || &lt;br /&gt;
|-&lt;br /&gt;
| 1,600 pounds || 67 || 111&lt;br /&gt;
|-&lt;br /&gt;
| 1,450 pounds || 93 || 107&lt;br /&gt;
|-&lt;br /&gt;
| 1,300 pounds || 88 || 101&lt;br /&gt;
|-&lt;br /&gt;
| Maximum flap extended speed '''V'''&amp;lt;sub&amp;gt;FE&amp;lt;/sub&amp;gt; || 85 || 97&lt;br /&gt;
|-&lt;br /&gt;
| Stall speed V&amp;lt;sub&amp;gt;S&amp;lt;/sub&amp;gt; || 47 || 54&lt;br /&gt;
|-&lt;br /&gt;
| Stall speed (10° Flaps) '''V'''&amp;lt;sub&amp;gt;S1&amp;lt;/sub&amp;gt; || 45 || 52&lt;br /&gt;
|-&lt;br /&gt;
| Stall speed in landing configuration '''V'''&amp;lt;sub&amp;gt;S0&amp;lt;/sub&amp;gt; || 42 || 49&lt;br /&gt;
|-&lt;br /&gt;
| Optimum glide speed || 60 || 69&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Checklist ===&lt;br /&gt;
&lt;br /&gt;
==== Startup ====&lt;br /&gt;
# Carburetor Heat - Cold&lt;br /&gt;
# Mixture - Rich&lt;br /&gt;
# Primer - As Required&lt;br /&gt;
# Ignition switch - Both&lt;br /&gt;
# Throttle - Open 1/4 inch&lt;br /&gt;
# Propeller Area - Clear&lt;br /&gt;
# Starter - On&lt;br /&gt;
&lt;br /&gt;
==== Takeoff ====&lt;br /&gt;
# Wing flaps - Up&lt;br /&gt;
# Carburetor Heat - Cold&lt;br /&gt;
# Throttle - Full &amp;quot;Open&amp;quot;&lt;br /&gt;
# Elevator Control - Lift nose wheel at 50 mph&lt;br /&gt;
# Climb Speed - 72 MPH until all obstacles are cleared&lt;br /&gt;
&lt;br /&gt;
==== Climb ====&lt;br /&gt;
# Air Speed - 75 to 80 MPH&lt;br /&gt;
# Power - Full throttle&lt;br /&gt;
# Mixture - Rich (unless engine is rough)&lt;br /&gt;
&lt;br /&gt;
==== Cruise ====&lt;br /&gt;
# Power - 2000 to 2750 RPM&lt;br /&gt;
# Elevator Trim - Adjust&lt;br /&gt;
# Mixture - Lean to maximum RPM&lt;br /&gt;
&lt;br /&gt;
==== Approach ====&lt;br /&gt;
# Mixture - Rich&lt;br /&gt;
# Carburetor Heat - Apply full heat before closing throttle&lt;br /&gt;
# Airspeed - 65 to 75 MPH&lt;br /&gt;
# Wing Flaps - As desired below 100 MPH&lt;br /&gt;
# Airspeed - 60 to 70 MPH with flaps extended&lt;br /&gt;
&lt;br /&gt;
==== Landing ====&lt;br /&gt;
# Touch down - Main wheels first&lt;br /&gt;
# Landing Roll - Lower nose wheel gently&lt;br /&gt;
# Braking - Minimum required&lt;br /&gt;
&lt;br /&gt;
=== Keyboard reminder ===&lt;br /&gt;
{| class=&amp;quot;keytable&amp;quot;&lt;br /&gt;
!Key&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|{{Key press|d}}/{{Key press|Shift|d}}&lt;br /&gt;
|Door select&lt;br /&gt;
|-&lt;br /&gt;
|{{Key press|Ctrl|d}}&lt;br /&gt;
|Open/close selected door&lt;br /&gt;
|-&lt;br /&gt;
|{{Key press|Shift|O}}&lt;br /&gt;
|Operate priming pump&lt;br /&gt;
|-&lt;br /&gt;
|{{Key press|&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Open configuration dialog&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot;&amp;gt;&lt;br /&gt;
C150-064.jpg|Taking off at Winterland (CCC2)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Cessna_150 Wikipedia]&lt;br /&gt;
* [http://www.cessna150-152club.com/ Cessna 150-152 Club]&lt;br /&gt;
&lt;br /&gt;
{{Cessna}}&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:C150-064.jpg&amp;diff=103141</id>
		<title>File:C150-064.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:C150-064.jpg&amp;diff=103141"/>
		<updated>2016-08-18T06:52:04Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: User created page with UploadWizard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=Taking off at CCC2}}&lt;br /&gt;
|date=2016-08-18&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Tipunch|Tipunch]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other versions=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-4.0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Screenshots of aircraft]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Changelog_2016.3&amp;diff=103019</id>
		<title>Changelog 2016.3</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Changelog_2016.3&amp;diff=103019"/>
		<updated>2016-08-14T07:19:49Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: new version of the Cessna 150&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{draft|changelog|This changelog is currently being written for the FlightGear v2016.3 release. Feel free to help! If you are aware of any FlightGear related changes, please add them to the changelog.}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
The FlightGear development team is delighted to announce the v2016.3 release of FlightGear, the free, open-source flight simulator. This new version contains many exciting new features, enhancements and bugfixes. Highlights in this release include ...  &lt;br /&gt;
&lt;br /&gt;
Founded in 1997, FlightGear is developed by a worldwide group of volunteers, brought together by a shared ambition to create the most realistic flight simulator possible that is free to use, modify and distribute. FlightGear is used all over the world by desktop flight simulator enthusiasts, for research in universities and for interactive exhibits in museums.&lt;br /&gt;
&lt;br /&gt;
FlightGear features more than 400 aircraft, a worldwide scenery database, a multiplayer environment, detailed sky modelling, a flexible and open aircraft modelling system, varied networking options, multiple display support, a powerful scripting language and an open architecture. Best of all, being open-source, the simulator is owned by the community and everyone is encouraged to contribute. &lt;br /&gt;
&lt;br /&gt;
Download FlightGear v2016.3 for free from [http://www.flightgear.org/ FlightGear.org]&lt;br /&gt;
&lt;br /&gt;
FlightGear - Fly Free!&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Major enhancements in this release ==&lt;br /&gt;
=== Core ===&lt;br /&gt;
* new XML Sound expression support&lt;br /&gt;
* Enable the Qt gui inside the sim [https://sourceforge.net/p/flightgear/fgdata/ci/654a343bbb7eb51b387060515e3415e152d12c2a/]&lt;br /&gt;
&lt;br /&gt;
=== Aircraft Modeling ===&lt;br /&gt;
&lt;br /&gt;
=== JSBSim ===&lt;br /&gt;
&lt;br /&gt;
=== Atmospheric Light Scattering ===&lt;br /&gt;
&lt;br /&gt;
=== Environment Rendering ===&lt;br /&gt;
&lt;br /&gt;
=== Performance ===&lt;br /&gt;
&lt;br /&gt;
=== Misc/Uncategorized ===&lt;br /&gt;
&lt;br /&gt;
=== Usability ===&lt;br /&gt;
&lt;br /&gt;
=== Internationalization ===&lt;br /&gt;
&lt;br /&gt;
=== Scenery ===&lt;br /&gt;
&lt;br /&gt;
=== Canvas System ===&lt;br /&gt;
&lt;br /&gt;
=== Nasal Scripting ===&lt;br /&gt;
*  [[Emesary]] MPI framwork and multiplayer bridge have been added [{{fgdata url|view=commit|commit=c350d79007eeafe9b602cf763c28de81bf54d2da}}]&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
&lt;br /&gt;
=== Highlighted new and improved aircraft ===&lt;br /&gt;
* [[Cessna 150]]&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
=== Bug fixes ===&lt;br /&gt;
* See [https://sourceforge.net/p/flightgear/codetickets/search/?q=status%3AFixed+AND+created_date%3A%5B2016-05-17T09%3A03%3A11Z+TO+*%5D our bugtracker] for a list, albeit incomplete, of the bugs fixed in this release.&lt;br /&gt;
&lt;br /&gt;
[[Category:FlightGear changelogs]]&lt;br /&gt;
[[Category:New Versioning Scheme]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Template:Cessna&amp;diff=103018</id>
		<title>Template:Cessna</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Template:Cessna&amp;diff=103018"/>
		<updated>2016-08-14T07:11:17Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: the Cessna 150 is a 150 L&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Navbox&lt;br /&gt;
| name      = Cessna&lt;br /&gt;
| title     = [[Cessna]]&lt;br /&gt;
| listclass = hlist&lt;br /&gt;
&lt;br /&gt;
| group1 = Civilian aircraft&lt;br /&gt;
| list1 =&lt;br /&gt;
* [[Cessna 150|150L]]&lt;br /&gt;
* [[Cessna 172P|172P]]&lt;br /&gt;
* [[Cessna 172R Skyhawk|172R]]&lt;br /&gt;
* [[Cessna 182S|182S]] &lt;br /&gt;
* [[Cessna C310|310]]&lt;br /&gt;
* [[Cessna 337G Skymaster|337G Skymaster]]&lt;br /&gt;
* [[Cessna 550 Citation II|550 Citation II]]&lt;br /&gt;
* [[Cessna Citation Bravo|Citation Bravo]]&lt;br /&gt;
* [[Cessna Citation X|Citation X]]&lt;br /&gt;
&lt;br /&gt;
| group2 = Military aircraft&lt;br /&gt;
| list2 =&lt;br /&gt;
* [[Cessna T-37|T-37]]&lt;br /&gt;
}}&amp;lt;includeonly&amp;gt;{{main other| [[Category:Cessna]] }}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{Informative template|1=&lt;br /&gt;
__NOTOC__&lt;br /&gt;
== Goal ==&lt;br /&gt;
This navigation template links together Cessna aircraft.&lt;br /&gt;
&lt;br /&gt;
Adding this template to a page in the article namespace will automatically add [[:Category:Cessna]] to that page.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
Put this line before the categories and the language links at the bottom of the article.&lt;br /&gt;
&lt;br /&gt;
 {{obr}}'''Cessna'''{{cbr}}&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Navigation templates]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Walk_view&amp;diff=102963</id>
		<title>Walk view</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Walk_view&amp;diff=102963"/>
		<updated>2016-08-11T18:15:59Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
== Updates ==&lt;br /&gt;
{{See also|Skydiving}}&lt;br /&gt;
&lt;br /&gt;
Marius_A has started extending Stuart's [[Tutorials]] system to also support DFaber's Walker: &lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|dU7ikBZOjgk}}&lt;br /&gt;
&lt;br /&gt;
Learn more at: [[FlightGear Missions and Adventures]]...&lt;br /&gt;
&lt;br /&gt;
== Easy walk ==&lt;br /&gt;
This is the most easy walk mode: you just walk at the same level (compared to the plane) and you will not fall if you get outside the plane.&lt;br /&gt;
=== walk.nas ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
 # view nodes and offsets --------------------------------------------&lt;br /&gt;
 var zNoseNode = props.globals.getNode(&amp;quot;sim/view/config/y-offset-m&amp;quot;, 1);&lt;br /&gt;
 var xViewNode = props.globals.getNode(&amp;quot;sim/current-view/z-offset-m&amp;quot;, 1);&lt;br /&gt;
 var yViewNode = props.globals.getNode(&amp;quot;sim/current-view/x-offset-m&amp;quot;, 1);&lt;br /&gt;
 var hViewNode = props.globals.getNode(&amp;quot;sim/current-view/heading-offset-deg&amp;quot;, 1);&lt;br /&gt;
 &lt;br /&gt;
 var walk_about = func(wa_distance) {&lt;br /&gt;
 	var i = getprop(&amp;quot;sim/current-view/view-number&amp;quot;);&lt;br /&gt;
 	if (i == view.indexof(&amp;quot;Pilot View&amp;quot;) or i == view.indexof(&amp;quot;Model View&amp;quot;) or i == view.indexof(&amp;quot;View 8&amp;quot;)) {&lt;br /&gt;
 		var wa_heading_rad = hViewNode.getValue() * 0.01745329252;&lt;br /&gt;
 		var new_x_position = xViewNode.getValue() - (math.cos(wa_heading_rad) * wa_distance);&lt;br /&gt;
 		var new_y_position = yViewNode.getValue() - (math.sin(wa_heading_rad) * wa_distance);&lt;br /&gt;
 		xViewNode.setValue(new_x_position);&lt;br /&gt;
 		yViewNode.setValue(new_y_position);&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== -set.xml ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;input&amp;gt;&lt;br /&gt;
  &amp;lt;keyboard&amp;gt;&lt;br /&gt;
   &amp;lt;key n=&amp;quot;119&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;w&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;desc&amp;gt;Walk forward toward view&amp;lt;/desc&amp;gt;&lt;br /&gt;
     &amp;lt;repeatable&amp;gt;true&amp;lt;/repeatable&amp;gt;&lt;br /&gt;
     &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;script&amp;gt;walk.walk_about(0.1)&amp;lt;/script&amp;gt;&lt;br /&gt;
     &amp;lt;/binding&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key n=&amp;quot;87&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;name&amp;gt;W&amp;lt;/name&amp;gt;&lt;br /&gt;
    &amp;lt;desc&amp;gt;Walk backward from view&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;repeatable&amp;gt;true&amp;lt;/repeatable&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
     &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
     &amp;lt;script&amp;gt;walk.walk_about(-0.1)&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
  &amp;lt;/keyboard&amp;gt;&lt;br /&gt;
 &amp;lt;/input&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Advanced walk with jump and parachute ==&lt;br /&gt;
{{Out of date}}&lt;br /&gt;
&lt;br /&gt;
This advanced mode is way more complicated than the easy walk (see above). With this mode you can jump out of the plane and land with a parachute.&lt;br /&gt;
=== walk.nas ===&lt;br /&gt;
''See the [[Pilatus PC-6 Porter‎]]'s &amp;lt;tt&amp;gt;PC-6/Nasal/walk.nas&amp;lt;/tt&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
=== -set.xml ===&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;walker&amp;gt;&lt;br /&gt;
  &amp;lt;outside type=&amp;quot;bool&amp;quot;&amp;gt;false&amp;lt;/outside&amp;gt;&lt;br /&gt;
  &amp;lt;walking type=&amp;quot;bool&amp;quot;&amp;gt;false&amp;lt;/walking&amp;gt;&lt;br /&gt;
  &amp;lt;speed type=&amp;quot;double&amp;quot;&amp;gt;0.000006&amp;lt;/speed&amp;gt;&lt;br /&gt;
  &amp;lt;latitude-deg type=&amp;quot;double&amp;quot;&amp;gt;0.0&amp;lt;/latitude-deg&amp;gt;&lt;br /&gt;
  &amp;lt;longitude-deg type=&amp;quot;double&amp;quot;&amp;gt;0.0&amp;lt;/longitude-deg&amp;gt;&lt;br /&gt;
  &amp;lt;altitude-at-exit-ft type=&amp;quot;double&amp;quot;&amp;gt;0.0&amp;lt;/altitude-at-exit-ft&amp;gt;&lt;br /&gt;
  &amp;lt;altitude-ft type=&amp;quot;double&amp;quot;&amp;gt;0.0&amp;lt;/altitude-ft&amp;gt;&lt;br /&gt;
  &amp;lt;heading-deg type=&amp;quot;double&amp;quot;&amp;gt;0.0&amp;lt;/heading-deg&amp;gt;&lt;br /&gt;
  &amp;lt;pitch-deg type=&amp;quot;double&amp;quot;&amp;gt;0.0&amp;lt;/pitch-deg&amp;gt;&lt;br /&gt;
  &amp;lt;roll-deg type=&amp;quot;double&amp;quot;&amp;gt;0.0&amp;lt;/roll-deg&amp;gt;&lt;br /&gt;
  &amp;lt;internal&amp;gt;&lt;br /&gt;
   &amp;lt;x-offset-m type=&amp;quot;double&amp;quot;&amp;gt;4.3&amp;lt;/x-offset-m&amp;gt;&lt;br /&gt;
   &amp;lt;y-offset-m type=&amp;quot;double&amp;quot;&amp;gt;0.0&amp;lt;/y-offset-m&amp;gt;&lt;br /&gt;
   &amp;lt;z-offset-m type=&amp;quot;double&amp;quot;&amp;gt;0.0&amp;lt;/z-offset-m&amp;gt;&lt;br /&gt;
   &amp;lt;heading-deg type=&amp;quot;double&amp;quot;&amp;gt;0.0&amp;lt;/heading-deg&amp;gt;&lt;br /&gt;
  &amp;lt;/internal&amp;gt;&lt;br /&gt;
  &amp;lt;keep-inside-offset-x type=&amp;quot;double&amp;quot;&amp;gt;0.0&amp;lt;/keep-inside-offset-x&amp;gt;&lt;br /&gt;
  &amp;lt;keep-inside-offset-y type=&amp;quot;double&amp;quot;&amp;gt;0.0&amp;lt;/keep-inside-offset-y&amp;gt;&lt;br /&gt;
  &amp;lt;keep-inside-offset-z type=&amp;quot;double&amp;quot;&amp;gt;0.0&amp;lt;/keep-inside-offset-z&amp;gt;&lt;br /&gt;
  &amp;lt;keep-pitch-offset-deg type=&amp;quot;double&amp;quot;&amp;gt;0.0&amp;lt;/keep-pitch-offset-deg&amp;gt;&lt;br /&gt;
  &amp;lt;key-triggers&amp;gt;&lt;br /&gt;
   &amp;lt;forward type=&amp;quot;double&amp;quot;&amp;gt;0&amp;lt;/forward&amp;gt;&lt;br /&gt;
   &amp;lt;outside-toggle type=&amp;quot;bool&amp;quot;&amp;gt;0&amp;lt;/outside-toggle&amp;gt;&lt;br /&gt;
   &amp;lt;slide type=&amp;quot;double&amp;quot;&amp;gt;0&amp;lt;/slide&amp;gt;&lt;br /&gt;
  &amp;lt;/key-triggers&amp;gt;&lt;br /&gt;
  &amp;lt;parachute-opened-altitude-ft type=&amp;quot;double&amp;quot;&amp;gt;0&amp;lt;/parachute-opened-altitude-ft&amp;gt;&lt;br /&gt;
  &amp;lt;parachute-opened-sec type=&amp;quot;double&amp;quot;&amp;gt;0&amp;lt;/parachute-opened-sec&amp;gt;&lt;br /&gt;
  &amp;lt;starting-trajectory-lat type=&amp;quot;double&amp;quot;&amp;gt;0&amp;lt;/starting-trajectory-lat&amp;gt;&lt;br /&gt;
  &amp;lt;starting-trajectory-lon type=&amp;quot;double&amp;quot;&amp;gt;0&amp;lt;/starting-trajectory-lon&amp;gt;&lt;br /&gt;
  &amp;lt;time-of-exit-sec type=&amp;quot;double&amp;quot;&amp;gt;0&amp;lt;/time-of-exit-sec&amp;gt;&lt;br /&gt;
 &amp;lt;/walker&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;input&amp;gt;&lt;br /&gt;
  &amp;lt;keyboard&amp;gt;&lt;br /&gt;
   &amp;lt;key n=&amp;quot;111&amp;quot;&amp;gt;&lt;br /&gt;
   	&amp;lt;name&amp;gt;o&amp;lt;/name&amp;gt;&lt;br /&gt;
   	&amp;lt;desc&amp;gt;Toggle walker outside/inside&amp;lt;/desc&amp;gt;&lt;br /&gt;
   	&amp;lt;repeatable&amp;gt;false&amp;lt;/repeatable&amp;gt;&lt;br /&gt;
   	&amp;lt;binding&amp;gt;&lt;br /&gt;
   	   &amp;lt;command&amp;gt;property-toggle&amp;lt;/command&amp;gt;&lt;br /&gt;
   	   &amp;lt;property&amp;gt;sim/walker/key-triggers/outside-toggle&amp;lt;/property&amp;gt;&lt;br /&gt;
   	&amp;lt;/binding&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key n=&amp;quot;119&amp;quot;&amp;gt; &lt;br /&gt;
   	&amp;lt;name&amp;gt;w&amp;lt;/name&amp;gt;&lt;br /&gt;
   	&amp;lt;desc&amp;gt;Walk forward&amp;lt;/desc&amp;gt;&lt;br /&gt;
   	&amp;lt;repeatable&amp;gt;false&amp;lt;/repeatable&amp;gt;&lt;br /&gt;
   	&amp;lt;binding n=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
   	   &amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
   	   &amp;lt;property&amp;gt;sim/walker/key-triggers/forward&amp;lt;/property&amp;gt;&lt;br /&gt;
   	   &amp;lt;value&amp;gt;1&amp;lt;/value&amp;gt;&lt;br /&gt;
   	&amp;lt;/binding&amp;gt;&lt;br /&gt;
   	&amp;lt;binding n=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
   	   &amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
   	   &amp;lt;property&amp;gt;sim/walker/speed&amp;lt;/property&amp;gt;&lt;br /&gt;
   	   &amp;lt;value&amp;gt;0.000006&amp;lt;/value&amp;gt;&lt;br /&gt;
   	&amp;lt;/binding&amp;gt;&lt;br /&gt;
   	&amp;lt;mod-up&amp;gt;&lt;br /&gt;
   	   &amp;lt;binding n=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
   	   	&amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
   	   	&amp;lt;property&amp;gt;sim/walker/key-triggers/forward&amp;lt;/property&amp;gt;&lt;br /&gt;
   	   	&amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
   	   &amp;lt;/binding&amp;gt;&lt;br /&gt;
   	   &amp;lt;binding n=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
   	   	&amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
   	   	&amp;lt;property&amp;gt;sim/walker/speed&amp;lt;/property&amp;gt;&lt;br /&gt;
   	   	&amp;lt;value&amp;gt;0.000006&amp;lt;/value&amp;gt;&lt;br /&gt;
   	   &amp;lt;/binding&amp;gt;&lt;br /&gt;
   	&amp;lt;/mod-up&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key n=&amp;quot;87&amp;quot;&amp;gt; &lt;br /&gt;
   	&amp;lt;name&amp;gt;W&amp;lt;/name&amp;gt;&lt;br /&gt;
   	&amp;lt;desc&amp;gt;Run forward&amp;lt;/desc&amp;gt;&lt;br /&gt;
   	&amp;lt;repeatable&amp;gt;false&amp;lt;/repeatable&amp;gt;&lt;br /&gt;
   	&amp;lt;binding n=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
   	   &amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
   	   &amp;lt;property&amp;gt;sim/walker/key-triggers/forward&amp;lt;/property&amp;gt;&lt;br /&gt;
   	   &amp;lt;value&amp;gt;1&amp;lt;/value&amp;gt;&lt;br /&gt;
   	&amp;lt;/binding&amp;gt;&lt;br /&gt;
   	&amp;lt;binding n=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
   	   &amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
   	   &amp;lt;property&amp;gt;sim/walker/speed&amp;lt;/property&amp;gt;&lt;br /&gt;
   	   &amp;lt;value&amp;gt;0.000018&amp;lt;/value&amp;gt;&lt;br /&gt;
   	&amp;lt;/binding&amp;gt;&lt;br /&gt;
   	&amp;lt;mod-up&amp;gt;&lt;br /&gt;
   	   &amp;lt;binding n=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
   	   	&amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
   	   	&amp;lt;property&amp;gt;sim/walker/key-triggers/forward&amp;lt;/property&amp;gt;&lt;br /&gt;
   	   	&amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
   	   &amp;lt;/binding&amp;gt;&lt;br /&gt;
   	   &amp;lt;binding n=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
   	   	&amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
   	   	&amp;lt;property&amp;gt;sim/walker/speed&amp;lt;/property&amp;gt;&lt;br /&gt;
   	   	&amp;lt;value&amp;gt;0.000006&amp;lt;/value&amp;gt;&lt;br /&gt;
   	   &amp;lt;/binding&amp;gt;&lt;br /&gt;
   	&amp;lt;/mod-up&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key n=&amp;quot;115&amp;quot;&amp;gt; &lt;br /&gt;
   	&amp;lt;name&amp;gt;s&amp;lt;/name&amp;gt;&lt;br /&gt;
   	&amp;lt;desc&amp;gt;Walk backward&amp;lt;/desc&amp;gt;&lt;br /&gt;
   	&amp;lt;repeatable&amp;gt;false&amp;lt;/repeatable&amp;gt;&lt;br /&gt;
   	&amp;lt;binding&amp;gt;&lt;br /&gt;
   	   &amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
   	   &amp;lt;property&amp;gt;sim/walker/key-triggers/forward&amp;lt;/property&amp;gt;&lt;br /&gt;
   	   &amp;lt;value&amp;gt;-1&amp;lt;/value&amp;gt;&lt;br /&gt;
   	&amp;lt;/binding&amp;gt;&lt;br /&gt;
   	&amp;lt;mod-up&amp;gt;&lt;br /&gt;
   	   &amp;lt;binding&amp;gt;&lt;br /&gt;
   	   	&amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
   	   	&amp;lt;property&amp;gt;sim/walker/key-triggers/forward&amp;lt;/property&amp;gt;&lt;br /&gt;
   	   	&amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
   	   &amp;lt;/binding&amp;gt;&lt;br /&gt;
   	&amp;lt;/mod-up&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key n=&amp;quot;97&amp;quot;&amp;gt; &lt;br /&gt;
   	&amp;lt;name&amp;gt;a&amp;lt;/name&amp;gt;&lt;br /&gt;
   	&amp;lt;desc&amp;gt;Slide left&amp;lt;/desc&amp;gt;&lt;br /&gt;
   	&amp;lt;repeatable&amp;gt;false&amp;lt;/repeatable&amp;gt;&lt;br /&gt;
   	&amp;lt;binding&amp;gt;&lt;br /&gt;
   	   &amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
   	   &amp;lt;property&amp;gt;sim/walker/key-triggers/slide&amp;lt;/property&amp;gt;&lt;br /&gt;
   	   &amp;lt;value&amp;gt;-1&amp;lt;/value&amp;gt;&lt;br /&gt;
   	&amp;lt;/binding&amp;gt;&lt;br /&gt;
   	&amp;lt;mod-up&amp;gt;&lt;br /&gt;
   	   &amp;lt;binding&amp;gt;&lt;br /&gt;
   	   	&amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
   	   	&amp;lt;property&amp;gt;sim/walker/key-triggers/slide&amp;lt;/property&amp;gt;&lt;br /&gt;
   	   	&amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
   	   &amp;lt;/binding&amp;gt;&lt;br /&gt;
   	&amp;lt;/mod-up&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key n=&amp;quot;65&amp;quot;&amp;gt; &lt;br /&gt;
   	&amp;lt;name&amp;gt;A&amp;lt;/name&amp;gt;&lt;br /&gt;
   	&amp;lt;desc&amp;gt;Slide left2, override default assignment&amp;lt;/desc&amp;gt;&lt;br /&gt;
   	&amp;lt;repeatable&amp;gt;false&amp;lt;/repeatable&amp;gt;&lt;br /&gt;
   	&amp;lt;binding&amp;gt;&lt;br /&gt;
   	   &amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
   	   &amp;lt;property&amp;gt;sim/walker/key-triggers/slide&amp;lt;/property&amp;gt;&lt;br /&gt;
   	   &amp;lt;value&amp;gt;-1&amp;lt;/value&amp;gt;&lt;br /&gt;
   	&amp;lt;/binding&amp;gt;&lt;br /&gt;
   	&amp;lt;mod-up&amp;gt;&lt;br /&gt;
   	   &amp;lt;binding&amp;gt;&lt;br /&gt;
   	   	&amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
   	   	&amp;lt;property&amp;gt;sim/walker/key-triggers/slide&amp;lt;/property&amp;gt;&lt;br /&gt;
   	   	&amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
   	   &amp;lt;/binding&amp;gt;&lt;br /&gt;
   	&amp;lt;/mod-up&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key n=&amp;quot;100&amp;quot;&amp;gt; &lt;br /&gt;
   	&amp;lt;name&amp;gt;d&amp;lt;/name&amp;gt;&lt;br /&gt;
   	&amp;lt;desc&amp;gt;Slide right&amp;lt;/desc&amp;gt;&lt;br /&gt;
   	&amp;lt;repeatable&amp;gt;false&amp;lt;/repeatable&amp;gt;&lt;br /&gt;
   	&amp;lt;binding&amp;gt;&lt;br /&gt;
   	   &amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
   	   &amp;lt;property&amp;gt;sim/walker/key-triggers/slide&amp;lt;/property&amp;gt;&lt;br /&gt;
   	   &amp;lt;value&amp;gt;1&amp;lt;/value&amp;gt;&lt;br /&gt;
   	&amp;lt;/binding&amp;gt;&lt;br /&gt;
   	&amp;lt;mod-up&amp;gt;&lt;br /&gt;
   	   &amp;lt;binding&amp;gt;&lt;br /&gt;
   	   	&amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
   	   	&amp;lt;property&amp;gt;sim/walker/key-triggers/slide&amp;lt;/property&amp;gt;&lt;br /&gt;
   	   	&amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
   	   &amp;lt;/binding&amp;gt;&lt;br /&gt;
   	&amp;lt;/mod-up&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key n=&amp;quot;68&amp;quot;&amp;gt; &lt;br /&gt;
   	&amp;lt;name&amp;gt;D&amp;lt;/name&amp;gt;&lt;br /&gt;
   	&amp;lt;desc&amp;gt;Slide right2&amp;lt;/desc&amp;gt;&lt;br /&gt;
   	&amp;lt;repeatable&amp;gt;false&amp;lt;/repeatable&amp;gt;&lt;br /&gt;
   	&amp;lt;binding&amp;gt;&lt;br /&gt;
   	   &amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
   	   &amp;lt;property&amp;gt;sim/walker/key-triggers/slide&amp;lt;/property&amp;gt;&lt;br /&gt;
   	   &amp;lt;value&amp;gt;1&amp;lt;/value&amp;gt;&lt;br /&gt;
   	&amp;lt;/binding&amp;gt;&lt;br /&gt;
   	&amp;lt;mod-up&amp;gt;&lt;br /&gt;
   	   &amp;lt;binding&amp;gt;&lt;br /&gt;
   	   	&amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
   	   	&amp;lt;property&amp;gt;sim/walker/key-triggers/slide&amp;lt;/property&amp;gt;&lt;br /&gt;
   	   	&amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
   	   &amp;lt;/binding&amp;gt;&lt;br /&gt;
   	&amp;lt;/mod-up&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key n=&amp;quot;114&amp;quot;&amp;gt; &lt;br /&gt;
   	&amp;lt;name&amp;gt;r&amp;lt;/name&amp;gt;&lt;br /&gt;
   	&amp;lt;desc&amp;gt;open parachute&amp;lt;/desc&amp;gt;&lt;br /&gt;
   	&amp;lt;repeatable&amp;gt;false&amp;lt;/repeatable&amp;gt;&lt;br /&gt;
   	&amp;lt;binding&amp;gt;&lt;br /&gt;
   	   &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
   	   &amp;lt;script&amp;gt;walk.open_chute()&amp;lt;/script&amp;gt;&lt;br /&gt;
   	&amp;lt;/binding&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
  &amp;lt;/keyboard&amp;gt;&lt;br /&gt;
 &amp;lt;/input&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Adding a walker pilot or co-pilot &amp;lt;ref&amp;gt;Human [http://cms.flightgear-de.net/index.php/engoben/91-comdiffen/112-humanen]&amp;lt;/ref&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
To add the Walker to your Aircraft replace the &amp;lt;PropertyList&amp;gt; Entry at the top of your -set file with this:&lt;br /&gt;
           &lt;br /&gt;
&amp;lt;PropertyList include=&amp;quot;Aircraft/Generic/Human/Include/walker-include.xml&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This includes all Properties for the Walker, Key Bindings and a Menubar Entry. The Keys &amp;quot;a&amp;quot;, &amp;quot;A&amp;quot; and &amp;quot;s&amp;quot; have their normal Binding when not in Walk View or Walker Orbit View.&lt;br /&gt;
&lt;br /&gt;
To have a custom Exit Point add the following Properties to the &amp;lt;model&amp;gt; section in your Aircrafts -set file:&lt;br /&gt;
 &amp;lt;map&amp;gt;&lt;br /&gt;
  &amp;lt;default_exit&amp;gt;&lt;br /&gt;
   &amp;lt;x-offset-m type =&amp;quot;float&amp;quot;&amp;gt;1&amp;lt;/x-offset-m&amp;gt;&lt;br /&gt;
   &amp;lt;y-offset-m type =&amp;quot;float&amp;quot;&amp;gt;3&amp;lt;/y-offset-m&amp;gt;&lt;br /&gt;
  &amp;lt;/default_exit&amp;gt;&lt;br /&gt;
 &amp;lt;/map&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This specifies where the Walker Model appears.&lt;br /&gt;
&lt;br /&gt;
=== Creating a pilot/copilot ===&lt;br /&gt;
&lt;br /&gt;
First, position the Walker Model (walker.xml) below the seat with it's origin (feet) on the Cockpit floor. Then start FlightGear and edit the pose in the Walker animation dialog. When this is done, export the animation and copy the file to a subfolder of the aircraft. This file is referenced in the -set files pilot Properties via &amp;quot;include&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Note: Once the pose is done, the walker.xml entry in the Model file has to be replaced with either pilot.xml or copilot.xml!&lt;br /&gt;
&lt;br /&gt;
The following properties control the appearance of the pilot and co-pilot. They are located in the /sim/model/ section of the -set file:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;crew&amp;gt;&lt;br /&gt;
  &amp;lt;pilot n=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;pose include = &amp;quot;Include/ju52_pilot.xml&amp;quot;&amp;gt;&amp;lt;/pose&amp;gt;&lt;br /&gt;
   &amp;lt;gender&amp;gt;0&amp;lt;/gender&amp;gt;&lt;br /&gt;
   &amp;lt;character&amp;gt;0&amp;lt;/character&amp;gt;&lt;br /&gt;
   &amp;lt;outfit&amp;gt;2&amp;lt;/outfit&amp;gt;&lt;br /&gt;
  &amp;lt;/pilot&amp;gt;&lt;br /&gt;
  &amp;lt;pilot n=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;pose include = &amp;quot;Include/ju52_pilot.xml&amp;quot;&amp;gt;&amp;lt;/pose&amp;gt;&lt;br /&gt;
   &amp;lt;gender&amp;gt;1&amp;lt;/gender&amp;gt;&lt;br /&gt;
   &amp;lt;character&amp;gt;0&amp;lt;/character&amp;gt;&lt;br /&gt;
   &amp;lt;outfit&amp;gt;0&amp;lt;/outfit&amp;gt;&lt;br /&gt;
  &amp;lt;/pilot&amp;gt;&lt;br /&gt;
 &amp;lt;/crew&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Custom movements ===&lt;br /&gt;
Basic Head Movements can be done by including this in the nasal section:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;pilot-movment&amp;gt;&lt;br /&gt;
  &amp;lt;file&amp;gt;Aircraft/Generic/Human/Nasal/pilot-movment.nas&amp;lt;/file&amp;gt;&lt;br /&gt;
  &amp;lt;script&amp;gt;&lt;br /&gt;
   var head_x = &amp;quot;sim/model/crew/pilot[0]/pose/position/limb[2]/x-deg&amp;quot;;&lt;br /&gt;
   var head_y = &amp;quot;sim/model/crew/pilot[0]/pose/position/limb[2]/y-deg&amp;quot;;&lt;br /&gt;
   var head_z = &amp;quot;sim/model/crew/pilot[0]/pose/position/limb[2]/z-deg&amp;quot;;&lt;br /&gt;
  &amp;lt;/script&amp;gt;&lt;br /&gt;
 &amp;lt;/pilot-movment&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;copilot-movment&amp;gt;&lt;br /&gt;
  &amp;lt;file&amp;gt;Aircraft/Generic/Human/Nasal/pilot-movment.nas&amp;lt;/file&amp;gt;&lt;br /&gt;
  &amp;lt;script&amp;gt;&lt;br /&gt;
   var head_x = &amp;quot;sim/model/crew/pilot[1]/pose/position/limb[2]/x-deg&amp;quot;;&lt;br /&gt;
   var head_y = &amp;quot;sim/model/crew/pilot[1]/pose/position/limb[2]/y-deg&amp;quot;;&lt;br /&gt;
   var head_z = &amp;quot;sim/model/crew/pilot[1]/pose/position/limb[2]/z-deg&amp;quot;;&lt;br /&gt;
  &amp;lt;/script&amp;gt;&lt;br /&gt;
 &amp;lt;/copilot-movment&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WalkView: Another option for internal walk views ==&lt;br /&gt;
&lt;br /&gt;
Another option is to use the WalkView module available in Aircraft/Generic/WalkView/ (in FlightGear 2.2.0 or later).&lt;br /&gt;
The module supports aircraft internal views that can move around based on a description of the reachable spaces.&lt;br /&gt;
&lt;br /&gt;
Load the WalkView module and the configuration from the -set file. The example below is from [[Nordstern]] and makes the view named &amp;quot;Walk View&amp;quot; into a walk view. See also [[Zeppelin NT]] and [[Short Empire]] for more examples.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;!-- Define the view. --&amp;gt;&lt;br /&gt;
 &amp;lt;sim&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;view n=&amp;quot;103&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;name&amp;gt;Walk View&amp;lt;/name&amp;gt;&lt;br /&gt;
   &amp;lt;internal&amp;gt;true&amp;lt;/internal&amp;gt;&lt;br /&gt;
   &amp;lt;config&amp;gt;&lt;br /&gt;
    &amp;lt;!-- x/y/z == right/up/back --&amp;gt;&lt;br /&gt;
    &amp;lt;from-model type=&amp;quot;bool&amp;quot;&amp;gt;true&amp;lt;/from-model&amp;gt;&lt;br /&gt;
    &amp;lt;from-model-idx type=&amp;quot;int&amp;quot;&amp;gt;0&amp;lt;/from-model-idx&amp;gt;&lt;br /&gt;
    &amp;lt;x-offset-m type=&amp;quot;double&amp;quot;&amp;gt;  0.00 &amp;lt;/x-offset-m&amp;gt;&lt;br /&gt;
    &amp;lt;y-offset-m type=&amp;quot;double&amp;quot;&amp;gt; -7.50 &amp;lt;/y-offset-m&amp;gt;&lt;br /&gt;
    &amp;lt;z-offset-m type=&amp;quot;double&amp;quot;&amp;gt; 51.00 &amp;lt;/z-offset-m&amp;gt;&lt;br /&gt;
    &amp;lt;heading-offset-deg type=&amp;quot;double&amp;quot;&amp;gt; 0.0 &amp;lt;/heading-offset-deg&amp;gt;&lt;br /&gt;
    &amp;lt;pitch-offset-deg type=&amp;quot;double&amp;quot;&amp;gt; 0.0 &amp;lt;/pitch-offset-deg&amp;gt;&lt;br /&gt;
    &amp;lt;default-field-of-view-deg type=&amp;quot;double&amp;quot;&amp;gt; 65 &amp;lt;/default-field-of-view-deg&amp;gt;&lt;br /&gt;
   &amp;lt;/config&amp;gt;&lt;br /&gt;
  &amp;lt;/view&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
 &amp;lt;/sim&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!-- Load and configure the WalkView module. --&amp;gt;&lt;br /&gt;
 &amp;lt;nasal&amp;gt;&lt;br /&gt;
  &amp;lt;walkview&amp;gt;&lt;br /&gt;
   &amp;lt;file&amp;gt;Aircraft/Generic/WalkView/walkview.nas&amp;lt;/file&amp;gt;&lt;br /&gt;
   &amp;lt;script&amp;gt;&lt;br /&gt;
    # The keel walk-way is a long narrow path running in the fore-aft direction.&lt;br /&gt;
    # Additionally there is a path to the side engine cars.&lt;br /&gt;
    var keelConstraint =&lt;br /&gt;
      walkview.makeUnionConstraint(&lt;br /&gt;
        [&lt;br /&gt;
         walkview.makePolylinePath(&lt;br /&gt;
             [&lt;br /&gt;
              [ 10.0,  0.0,  -6.3],&lt;br /&gt;
              [ 15.0,  0.0,  -7.2],&lt;br /&gt;
              [ 20.0,  0.0,  -7.8],&lt;br /&gt;
              [ 25.0,  0.0,  -8.2],&lt;br /&gt;
              [ 30.0,  0.0,  -8.6],&lt;br /&gt;
              [ 35.0,  0.0,  -8.8],&lt;br /&gt;
              [ 40.0,  0.0,  -9.0],&lt;br /&gt;
              [ 50.0,  0.0,  -9.1],&lt;br /&gt;
              [ 65.0,  0.0,  -9.1],&lt;br /&gt;
              [ 70.0,  0.0,  -8.8],&lt;br /&gt;
              [ 80.0,  0.0,  -8.5],&lt;br /&gt;
              [ 90.0,  0.0,  -7.9],&lt;br /&gt;
              [ 95.0,  0.0,  -7.4],&lt;br /&gt;
              [100.0,  0.0,  -6.9],&lt;br /&gt;
              [105.0,  0.0,  -6.2],&lt;br /&gt;
              [110.0,  0.0,  -5.4],&lt;br /&gt;
             ],&lt;br /&gt;
             0.20),&lt;br /&gt;
         walkview.makePolylinePath(&lt;br /&gt;
             [&lt;br /&gt;
              [ 59.75, -4.90, -7.79],&lt;br /&gt;
              [ 59.75, -1.70, -9.05],&lt;br /&gt;
              [ 59.75,  1.70, -9.05],&lt;br /&gt;
              [ 59.75,  4.90, -7.79],&lt;br /&gt;
             ],&lt;br /&gt;
             0.20)&lt;br /&gt;
        ]);&lt;br /&gt;
    # Create the walker for the named view and the given movement restrictions.&lt;br /&gt;
    var rigger_walker = walkview.Walker.new(&amp;quot;Walk View&amp;quot;,&lt;br /&gt;
                                            keelConstraint);&lt;br /&gt;
   &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/walkview&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
 &amp;lt;/nasal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!-- Load the default keyboard bindings for the walk view (w/W, a, d, s). --&amp;gt;&lt;br /&gt;
 &amp;lt;input&amp;gt;&lt;br /&gt;
  &amp;lt;keyboard include=&amp;quot;Aircraft/Generic/WalkView/walk-view-keys.xml&amp;quot;&amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
  &amp;lt;/keyboard&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
 &amp;lt;/input&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[es:Walk View]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft enhancement]]&lt;br /&gt;
[[Category:Nasal]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Cessna_150/info&amp;diff=102830</id>
		<title>Cessna 150/info</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Cessna_150/info&amp;diff=102830"/>
		<updated>2016-08-07T11:31:25Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: aircraft rating&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{infobox aircraft&lt;br /&gt;
| name           = Cessna 150L&lt;br /&gt;
| hangar         = fgaddon&lt;br /&gt;
| aircraft       = c150&lt;br /&gt;
| image          = C150L.jpg&lt;br /&gt;
| image2         = C150l-cockpit.jpg&lt;br /&gt;
| type           = Civil aircraft/Civil utility aircraft/Trainer aircraft&lt;br /&gt;
| config         = High wing aircraft/Fixed gear aircraft/Tricycle landing gear aircraft&lt;br /&gt;
| propulsion     = Propeller aircraft/Single-engine aircraft&lt;br /&gt;
| manufacturer   = Cessna&lt;br /&gt;
| authors        = Harald Johnsen&lt;br /&gt;
| fdm            = JSBSim&lt;br /&gt;
| fgname         = c150&lt;br /&gt;
| status         = beta&lt;br /&gt;
| status-fdm     = 2&lt;br /&gt;
| status-systems = 3&lt;br /&gt;
| status-cockpit = 4&lt;br /&gt;
| status-model   = 3&lt;br /&gt;
| ready          = &lt;br /&gt;
| devel-repo     = {{github url|user=Harald67|repo=c150}}&lt;br /&gt;
| liverydbid     = &lt;br /&gt;
| forumtid       = &lt;br /&gt;
| note           = &lt;br /&gt;
| navbar         = 1&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
This is the aircraft infobox subpage of the [[Cessna 150]].&lt;br /&gt;
[[Category:Aircraft infobox documentation]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Cessna_150&amp;diff=102670</id>
		<title>Cessna 150</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Cessna_150&amp;diff=102670"/>
		<updated>2016-08-02T17:23:30Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: Adding limits&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WIP|The C150 is now (20160504) under maintenance by HJ}}&lt;br /&gt;
&lt;br /&gt;
{{:{{PAGENAME}}/info}}&lt;br /&gt;
The '''Cessna 150''' is a two-seat tricycle gear general aviation [[aircraft]], that was designed for flight training, touring and personal use.&lt;br /&gt;
&lt;br /&gt;
The Cessna 150 is the third most produced civilian plane ever, with 23,839 aircraft produced. The Cessna 150 was offered for sale in the 150 basic model, Commuter, Commuter II, Patroller and the aerobatic Aerobat models.&lt;br /&gt;
&lt;br /&gt;
== Normal Operating Procedures ==&lt;br /&gt;
&lt;br /&gt;
=== Airspeeds for normal flight operation ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !!  Vias&lt;br /&gt;
|-&lt;br /&gt;
| '''NORMAL / OPTIMUM''' || kts|| MPH&lt;br /&gt;
|-&lt;br /&gt;
| Best angle of climb '''V'''&amp;lt;sub&amp;gt;X&amp;lt;/sub&amp;gt; || 56 || 64&lt;br /&gt;
|-&lt;br /&gt;
| Best rate of climb '''V'''&amp;lt;sub&amp;gt;Y&amp;lt;/sub&amp;gt; || 68 || 78&lt;br /&gt;
|-&lt;br /&gt;
| Normal rotation speed '''V'''&amp;lt;sub&amp;gt;R&amp;lt;/sub&amp;gt; || 50 || 58&lt;br /&gt;
|-&lt;br /&gt;
| Normal climb speed || 65-75 || 75-85&lt;br /&gt;
|-&lt;br /&gt;
| Normal landing (no flaps) || 60-70 || 70-80&lt;br /&gt;
|-&lt;br /&gt;
| Normal landing (full flaps) || 50-60 || 57-69&lt;br /&gt;
|-&lt;br /&gt;
| Powered landing (no flaps) || 65 || 75&lt;br /&gt;
|-&lt;br /&gt;
| Powered landing (full flaps) || 55 || 63&lt;br /&gt;
|-&lt;br /&gt;
| Maximum performance approach || 52 || 60&lt;br /&gt;
|-&lt;br /&gt;
| Optimum glide speed || 60 || 69&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !!  Vias&lt;br /&gt;
|-&lt;br /&gt;
| '''LIMITS''' || kts|| MPH&lt;br /&gt;
|-&lt;br /&gt;
| Never Exceed Speed '''V'''&amp;lt;sub&amp;gt;NE&amp;lt;/sub&amp;gt; &amp;lt;br&amp;gt;Do not exceed this speed in any operation || 141 || 162&lt;br /&gt;
|-&lt;br /&gt;
| Max structural speed '''V'''&amp;lt;sub&amp;gt;NO&amp;lt;/sub&amp;gt; &amp;lt;br&amp;gt;Do no exceed this speed except in smooth air and&amp;lt;br&amp;gt;then only with caution || 107 || 123&lt;br /&gt;
|-&lt;br /&gt;
| Maneuvering speed '''V'''&amp;lt;sub&amp;gt;A&amp;lt;/sub&amp;gt; ||  || &lt;br /&gt;
|-&lt;br /&gt;
| 1,600 pounds || 67 || 111&lt;br /&gt;
|-&lt;br /&gt;
| 1,450 pounds || 93 || 107&lt;br /&gt;
|-&lt;br /&gt;
| 1,300 pounds || 88 || 101&lt;br /&gt;
|-&lt;br /&gt;
| Maximum flap extended speed '''V'''&amp;lt;sub&amp;gt;FE&amp;lt;/sub&amp;gt; || 85 || 97&lt;br /&gt;
|-&lt;br /&gt;
| Stall speed V&amp;lt;sub&amp;gt;S&amp;lt;/sub&amp;gt; || 47 || 54&lt;br /&gt;
|-&lt;br /&gt;
| Stall speed (10° Flaps) '''V'''&amp;lt;sub&amp;gt;S1&amp;lt;/sub&amp;gt; || 45 || 52&lt;br /&gt;
|-&lt;br /&gt;
| Stall speed in landing configuration '''V'''&amp;lt;sub&amp;gt;S0&amp;lt;/sub&amp;gt; || 42 || 49&lt;br /&gt;
|-&lt;br /&gt;
| Optimum glide speed || 60 || 69&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Checklist ===&lt;br /&gt;
&lt;br /&gt;
==== Startup ====&lt;br /&gt;
# Carburetor Heat - Cold&lt;br /&gt;
# Mixture - Rich&lt;br /&gt;
# Primer - As Required&lt;br /&gt;
# Ignition switch - Both&lt;br /&gt;
# Throttle - Open 1/4 inch&lt;br /&gt;
# Propeller Area - Clear&lt;br /&gt;
# Starter - On&lt;br /&gt;
&lt;br /&gt;
==== Takeoff ====&lt;br /&gt;
# Wing flaps - Up&lt;br /&gt;
# Carburetor Heat - Cold&lt;br /&gt;
# Throttle - Full &amp;quot;Open&amp;quot;&lt;br /&gt;
# Elevator Control - Lift nose wheel at 50 mph&lt;br /&gt;
# Climb Speed - 72 MPH until all obstacles are cleared&lt;br /&gt;
&lt;br /&gt;
==== Climb ====&lt;br /&gt;
# Air Speed - 75 to 80 MPH&lt;br /&gt;
# Power - Full throttle&lt;br /&gt;
# Mixture - Rich (unless engine is rough)&lt;br /&gt;
&lt;br /&gt;
==== Cruise ====&lt;br /&gt;
# Power - 2000 to 2750 RPM&lt;br /&gt;
# Elevator Trim - Adjust&lt;br /&gt;
# Mixture - Lean to maximum RPM&lt;br /&gt;
&lt;br /&gt;
==== Approach ====&lt;br /&gt;
# Mixture - Rich&lt;br /&gt;
# Carburetor Heat - Apply full heat before closing throttle&lt;br /&gt;
# Airspeed - 65 to 75 MPH&lt;br /&gt;
# Wing Flaps - As desired below 100 MPH&lt;br /&gt;
# Airspeed - 60 to 70 MPH with flaps extended&lt;br /&gt;
&lt;br /&gt;
==== Landing ====&lt;br /&gt;
# Touch down - Main wheels first&lt;br /&gt;
# Landing Roll - Lower nose wheel gently&lt;br /&gt;
# Braking - Minimum required&lt;br /&gt;
&lt;br /&gt;
=== Keyboard reminder ===&lt;br /&gt;
{| class=&amp;quot;keytable&amp;quot;&lt;br /&gt;
!Key&lt;br /&gt;
!Function&lt;br /&gt;
|-&lt;br /&gt;
|{{Key press|d}}/{{Key press|Shift|d}}&lt;br /&gt;
|Door select&lt;br /&gt;
|-&lt;br /&gt;
|{{Key press|Ctrl|d}}&lt;br /&gt;
|Open/close selected door&lt;br /&gt;
|-&lt;br /&gt;
|{{Key press|Shift|O}}&lt;br /&gt;
|Operate priming pump&lt;br /&gt;
|-&lt;br /&gt;
|{{Key press|&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
|Open configuration dialog&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Cessna_150 Wikipedia]&lt;br /&gt;
* [http://www.cessna150-152club.com/ Cessna 150-152 Club]&lt;br /&gt;
&lt;br /&gt;
{{Cessna}}&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Troubleshooting_input_devices&amp;diff=102456</id>
		<title>Troubleshooting input devices</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Troubleshooting_input_devices&amp;diff=102456"/>
		<updated>2016-07-29T12:54:50Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: Category:Joysticks and Yokes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Troubleshooting}}&lt;br /&gt;
'''Troubleshooting input devices''' will try to help you with input device issues, like with joysticks, yokes and keyboards.&lt;br /&gt;
&lt;br /&gt;
Other than this page, consider visiting the main page for [[input device]]s, and the forum section on hardware, with its [http://forum.flightgear.org/viewtopic.php?f=24&amp;amp;t=2439 FAQs on joysticks].&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
=== Checking the position of your controls ===&lt;br /&gt;
Often, when trying to find what's wrong with your controls, you'll need to be sure that the movements are correctly interpreted. For this, the [[Head-up display]] (HUD) will be very helpful, as it has indication of their position. Press {{key press|h}} to enable the HUD and see its wiki page to learn how to interpret it.&lt;br /&gt;
&lt;br /&gt;
=== USB Joystick Fails to Work ===&lt;br /&gt;
FlightGear is designed to recognize automatically any USB joystick that it is aware of (has a configuration on file for it). Configuration for USB joysticks is located in the Inputs folder. For example:&lt;br /&gt;
&lt;br /&gt;
 Input/Saitek/X45.xml&lt;br /&gt;
&lt;br /&gt;
The name reported by the joystick through the hardware of your system must match the name specified in the configuration file. If the stick identifies itself as &lt;br /&gt;
&lt;br /&gt;
 Saitek Saitek X45 Flight Control Stick&lt;br /&gt;
&lt;br /&gt;
but the configuration file specifies&lt;br /&gt;
&lt;br /&gt;
 Saitek X45 USB Flight Stick&lt;br /&gt;
&lt;br /&gt;
FlightGear will fail to recognize it.&lt;br /&gt;
&lt;br /&gt;
This happens with some frequency. It has been known for the same stick in a manufacturer's line to report different identifier strings. If you encounter a problem getting your usb stick to be recognized by FlightGear, it is helpful to first check to see&lt;br /&gt;
&lt;br /&gt;
* a configuration file matching the name of your stick exists&lt;br /&gt;
* the configuration joystick name matches the name the stick actually reports to your computer&lt;br /&gt;
&lt;br /&gt;
=== USB Joystick exhibits permanent offset / requires repeated recalibration ===&lt;br /&gt;
USB Joystick drivers should automatically zero and calibrate the joystick on plugin. Some examples of some types of joystick can be faulty where the fault is exhibited as an offset from the zero position when this process is completed. In Kubuntu this can be fixed for the session by use of the Joystick calibration tool under &amp;quot;Keyboard and Mouse&amp;quot; of &amp;quot;System Settings&amp;quot;, or equivalent tools with other distributions, but the problem will recur.&lt;br /&gt;
&lt;br /&gt;
In some cases this may be caused by improper connector seating or other loose connections within the joystick. This can sometimes be remedied by unscrewing the base or other case element to access the circuit board and then reseating the connectors. Also check for faulty solder joints and discrete components bent over onto the circuit board. Before attempting any repair unplug the device and remove any batteries.&lt;br /&gt;
&lt;br /&gt;
=== Configuring CH Products Under Windows Vista ===&lt;br /&gt;
The CH Products Yoke and Pedals are among the most popular flight sim controls. &lt;br /&gt;
FlightGear provides excellent configuration files for both the Yoke and Pedals manufactured by CH. Windows Vista recognizes and configures the USB versions of these products by default. However, it reports them as &amp;quot;Generic Controls.&amp;quot; This creates an issue when FlightGear tries to assign the appropriate controller configuration. &lt;br /&gt;
&lt;br /&gt;
To overcome this you need to edit your Joystick.xml (Filghtgear\Data\Joystick.xml) file to manually assign a configuration file for FlightGear to use. &lt;br /&gt;
&lt;br /&gt;
Eg: &lt;br /&gt;
&lt;br /&gt;
If you have the Yoke as MS-Windows Controller 0 and Pedals as Controller 1 then you include the following lines: &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
   &amp;lt;js n=&amp;quot;0&amp;quot; include=&amp;quot;Input/Joysticks/CH/pro-yoke-usb.xml&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;js n=&amp;quot;1&amp;quot; include=&amp;quot;Input/Joysticks/CH/pro-pedals-usb.xml&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== [Enter] does not work for rudder control ===&lt;br /&gt;
First of all: if [0] doesn't work, check if toggling num-lock solves the issue.&lt;br /&gt;
&lt;br /&gt;
Open file ''[[$FG_ROOT]]/keyboard.xml'' with your preferred Editor. and search for those lines (it's close to the top, around line 40):&lt;br /&gt;
      ## uncomment this line to get keycode reports printed to the terminal window&lt;br /&gt;
      #setlistener(&amp;quot;devices/status/keyboard/event&amp;quot;, func(n) debug.dump(n.getValues()));&lt;br /&gt;
Read the first one and uncomment the second one. To uncomment it remove the leading &amp;quot;#&amp;quot;.&amp;lt;br /&amp;gt;&lt;br /&gt;
Save the file and run FlightGear as usual but with the log-level set to &amp;quot;alarm&amp;quot; (no need to do anything if it wasn't used/changed before!).&amp;lt;br /&amp;gt;&lt;br /&gt;
When FlightGear is running press [Enter] and immediately after this, without doing anyting on the keyboard, ''click'' on FlightGears log window and you'll see something like this in the last two lines of the log:&lt;br /&gt;
 { key: 13, modifier: { meta: 0, shift: 0, alt: 0, super: 0, ctrl: 0, hyper: 0 }, pressed: 1 }&lt;br /&gt;
 { key: 13, modifier: { meta: 0, shift: 0, alt: 0, super: 0, ctrl: 0, hyper: 0 }, pressed: 0 }&lt;br /&gt;
The first line is for pressing the [Enter]-Key, the second for releasing it. Keep the first number, named &amp;quot;key&amp;quot;, in this exaple shown as &amp;quot;13&amp;quot;, in mind.&lt;br /&gt;
&lt;br /&gt;
Open file [[$FG_ROOT]]/keyboard.xml again and search for &amp;quot;enter&amp;quot;. You should find following:&lt;br /&gt;
 &amp;lt;key n=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;Enter&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;desc&amp;gt;Move rudder right&amp;lt;/desc&amp;gt;&lt;br /&gt;
Now replace the value of ''key n='' with the one you had to keep in mind earlier. Save file and run FlightGear to test it.&lt;br /&gt;
&lt;br /&gt;
If the [Enter] key doesn't work at all for some reason one solution would be to assign the key right hand next to (not the num-block-)[0], if it is not already assigned to something else. Procedure is the same as shown with the [Enter] key.&lt;br /&gt;
&lt;br /&gt;
Last thing to do, in any case, disable the keycode reports by replacing the &amp;quot;#&amp;quot; which we removed earlier.&lt;br /&gt;
&lt;br /&gt;
=== Controls returning to a particular position ===&lt;br /&gt;
Some laptops have an onboard gravity sensor, that might be detected by FlightGear as a [[joystick]]. You can set FlightGear to ignore this fake-joystick:&lt;br /&gt;
# Get your accelerometer's name via the in-sim ''Help &amp;gt; Joystick Information'' dialog.&lt;br /&gt;
# Add this name to your &amp;lt;tt&amp;gt;[[$FG_ROOT]]/Input/Joysticks/Accelerometers/accelerometers.xml&amp;lt;/tt&amp;gt; file, enclosed by &amp;lt;tt&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;&amp;lt;/name&amp;gt;&amp;lt;/tt&amp;gt; tags..&lt;br /&gt;
# Report your device name to #flightgear at [[IRC|irc.flightgear.org]], or on the [http://forum.flightgear.org/viewforum.php?f=24 hardware support forum], so it can be included in the &amp;quot;official&amp;quot; accelerometer.xml file.&lt;br /&gt;
&lt;br /&gt;
[[Category:Troubleshooting]]&lt;br /&gt;
[[Category:Joysticks and Yokes]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Home_made_Joystick&amp;diff=102455</id>
		<title>Home made Joystick</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Home_made_Joystick&amp;diff=102455"/>
		<updated>2016-07-29T12:49:37Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: Category:Joysticks and Yokes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Many of you will remember [[Howto:Build a yoke in 5 minutes|the 5 minute yoke]], well here is another home made effort for those of us who still fly by mouse.&lt;br /&gt;
&lt;br /&gt;
== You will need ==&lt;br /&gt;
*  A smooth surfaced (plastic?) hollow ball with just a little larger diameter than your computer mouse's length.&lt;br /&gt;
*  A wooden dowel about 50mm thick.&lt;br /&gt;
*  Another dowel which fits comfortably into your hand, or any other object you want which will form the handle.&lt;br /&gt;
*  Three Lengths of floor board. I prefer them long enough for me to be able to rest my elbow for stability.&lt;br /&gt;
*  A material which will set hard e.g. plaster of paris, filling foam (like cavity wall insulation) or similar.&lt;br /&gt;
*  Some superglue or wood glue.&lt;br /&gt;
&lt;br /&gt;
== Method ==&lt;br /&gt;
[[File:Screen shot 2012-07-09 at 12.34.49.png|thumb|Lower half-sphere with mouse inside.]]&lt;br /&gt;
[[File:Screen shot 2012-07-09 at 12.36.54.png|thumb|Base unit.]]&lt;br /&gt;
[[File:Screen shot 2012-07-09 at 12.36.08.png|thumb|Joystick.]]&lt;br /&gt;
'''Sizes:  I have deliberately not included any measurements because they will depend on the size of your mouse etc.'''&lt;br /&gt;
&lt;br /&gt;
# Carefully cut the ball into 2 equal halves.&lt;br /&gt;
# Make sure one half-sphere fits around your mouse without touching, then drill a hole in the centre with a slightly larger diameter than your thin dowel. If the gaps between your mouse and the half-sphere are too great, you can line or pack out the inside of the half-sphere with insulation tape.&lt;br /&gt;
#: '''Note:''' If your mouse is wired you will need to make a hole on one edge to allow the wire through.&lt;br /&gt;
# In the other half-sphere, drill a hole a little larger than your thin dowel's diameter, then drill a hole exactly the same diameter as the dowel in the centre of the bottom of your large dowel/handle.&lt;br /&gt;
# Assemble your base, making sure there will be enough room between the upper surface of the lower half-sphere and the bottom of the uppermost flat surface of the base, to allow some movement of the smaller dowel when it is protruding from the lower surface of the upper half-sphere. The base needs to be wide enough to allow plenty of movement in all directions during use.&lt;br /&gt;
# Drill a hole in your base, large enough for the upper half-sphere to swivel in all directions, but not large enough for it to pass through.&lt;br /&gt;
# Ascertain how much the smaller dowel needs to be shortened, make allowance for both the bottom of the dowel having to connect with and move the lower half-sphere (yet still clear the top of your mouse), and the other end needing to be pushed into your handle. Cut it to the required length.&lt;br /&gt;
# Put some glue into the hole you drilled in the bottom of your handle, then push in the smaller dowel. &lt;br /&gt;
# Allow that glue to dry.&lt;br /&gt;
# Affix some small nails near the bottom of your handle to act as anchors inside the filler, then place your handle centrally in the upper half-sphere and fill with setting material (plaster or foam etc).&lt;br /&gt;
#: '''Optional:''' If you wish to tidy things up a bit, you could trim off some of the upper half-sphere to lessen the amount of filler needed, but be careful not to remove too much, because this might allow the edge to rub/catch in the hole.&lt;br /&gt;
# Allow time for the filler to set.&lt;br /&gt;
&lt;br /&gt;
== Operation ==&lt;br /&gt;
After you have used your mouse to do the necessary set up for your flight (If you are fortunate enough to have a spare mouse, you can take the necessary actions with the other one provided you have a spare USB slot):&lt;br /&gt;
&lt;br /&gt;
# Place lower half-sphere over your computer mouse, making sure the end of your mouse which normally faces away from you is now facing towards you.&lt;br /&gt;
# Place your handle so the upper half-sphere sits centrally in the hole in your base unit, making sure the lower end of the small dowel goes through the hole in the top of the lower half-sphere.&lt;br /&gt;
# Make sure your handle is centred, then press 5 on your numpad to centre all your aircrafts control surfaces.&lt;br /&gt;
&lt;br /&gt;
Start your flight.&lt;br /&gt;
&lt;br /&gt;
=== Note ===&lt;br /&gt;
It may be necessary to go into your computer's system preferences to slow down the speed of your mouse's actions, but that is optional. You may just get used to it without adjustment.&lt;br /&gt;
&lt;br /&gt;
Have fun.&lt;br /&gt;
&lt;br /&gt;
[[Category:Cockpit building|Joystick, Home made]]&lt;br /&gt;
[[Category:Howto|Joystick, Home made]]&lt;br /&gt;
[[Category:Joysticks and Yokes]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=User:Johan_G/Hardware_Review:_CH_Products_controls_(Combatstick,_throttle_and_pedals)&amp;diff=102454</id>
		<title>User:Johan G/Hardware Review: CH Products controls (Combatstick, throttle and pedals)</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=User:Johan_G/Hardware_Review:_CH_Products_controls_(Combatstick,_throttle_and_pedals)&amp;diff=102454"/>
		<updated>2016-07-29T12:48:45Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: Category:Joysticks and Yokes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;My setup when at &amp;quot;home&amp;quot;,&amp;lt;ref&amp;gt;I'm working to far away from &amp;quot;home&amp;quot;, and have not got around to get them to where I'm living while working.  I may or may not get around to bring them with me.&amp;lt;/ref&amp;gt; are all from CH Products:&lt;br /&gt;
* 586 Combatstick&lt;br /&gt;
* Pro Throttle&lt;br /&gt;
* Pro Pedals&lt;br /&gt;
I also use my own configuration file, mainly because I want trim controls to be placed as on the aircraft I fly most (Petar Jedvaj's [[Pilatus PC-9M]]).  In the default configuration the top hat rocker switch is used for view control instead of the instead more usual elevator and aileron trim.&lt;br /&gt;
&lt;br /&gt;
== Why I bought them specifically, and some rants ==&lt;br /&gt;
I usually plan to stick with my stuff for 5 to 10 years, and want to by high quality gear. In order to do so I did some research on the net comparing mainly ''CH Products'', ''Logitech'', ''Saitec'' and ''Thrustmaster''.&lt;br /&gt;
&lt;br /&gt;
What I was aiming for was a joystick, throttle and pedal setup with enough buttons for a HOTAS setup,&amp;lt;ref name=&amp;quot;HOTAS&amp;quot;&amp;gt;Hands On Throttle And Stick, in essence you will (almost) never have to hunt for keys on the keyboard.&amp;lt;/ref&amp;gt; possibly later getting a throttle quadrant and a yoke.&lt;br /&gt;
&lt;br /&gt;
{{Note|Keep in mind that I had below experiences while doing my research about 1 1/2 year ago; my memory might not be all correct.}}&lt;br /&gt;
&lt;br /&gt;
=== Thrustmaster ===&lt;br /&gt;
Thrustmaster, which I looked at first, seem to have joysticks with a good build quality, but scratching under the surface I found that their top of the line joysticks had some problems.  There was some mechanical problem which the enthusiast knew about and fixed upon delivery, but there was also some firmware and/or driver bugs with the initial releases that should not have made it out.  Even so, their top of the line looked promising and their support seemed great.&lt;br /&gt;
&lt;br /&gt;
=== Saitec ===&lt;br /&gt;
Saitec yokes have appeared here far to many times with the exact same problem, a hat rocker very often is wired in a way that makes the view spin around either leftwards (or rightward, I may not remember correctly).  The real downer is that they seem to have no interest in fixing the problem, which is either in hardware or software.  That's pretty disappointing as their stuff otherwise seem great.&lt;br /&gt;
&lt;br /&gt;
=== Logitech ===&lt;br /&gt;
Logitechs lower and mid end joysticks are well renowned, but their try at a high end HOTAS setup (G940?) seems to be plagued.  Reading their own support forum was really disappointing.  What would be known as the &amp;quot;reversal bug&amp;quot;, because moving the joystick forward, then back slightly would cause the output to jump and nearly make formation flying and aiming impossible, was discovered within weeks of release, but the forum posts got unanswered for months.  The problem seemed to be in the firmware and was related to the force feedback.  Doing anything getting even close to a fix took many months further, and when I was looking at it (November 2010?) a bug fix beta was on the way only to a select few, and only after one compassionate employee seem to have needed to pull some strings to even get permission to do something, as research and development was focusing on another product.&lt;br /&gt;
&lt;br /&gt;
=== CH Products ===&lt;br /&gt;
Finally, after seeing that CH Products line, apart from getting USB instead of game port connectors, seemed to not have changed since my early FS 5.1 days and most of all having seen an excellent and thorough six-page review&amp;lt;ref&amp;gt;[http://www.simhq.com/_technology2/technology_014a.html An excellent and thorough six-page review] of CH Products product line.&amp;lt;/ref&amp;gt;  I settled for them.  Also keeping in mind that the joysticks are just a side business to they're real business, industrial joysticks, is helping a bit, as well as that they are a family owned company.  They are a bit on the expensive side though, and here in Sweden surprisingly hard to find.&lt;br /&gt;
&lt;br /&gt;
As a side note CH products seem to be the only one of them selling spare parts to their stuff, like cords and potentiometers.  &lt;br /&gt;
&lt;br /&gt;
== My experiences ==&lt;br /&gt;
=== Installing drivers, or maybe not ===&lt;br /&gt;
My biggest error was doing all the configuration work before installing the drivers or simply that I installed the drivers.  The stick, throttle and pedals worked well right out of the box, so I configured them up to my liking.  But when installing the drivers all button assignments shifted.  *sigh*  I had to do all the configuration again, but now had the experience of doing that the first time, and the help of their setup and calibration software.  js-demo is not for mere mortals that think in decimal.&lt;br /&gt;
&lt;br /&gt;
=== The controls ===&lt;br /&gt;
==== The 586 Combatstick ====&lt;br /&gt;
If you have small hands, this is not for you.  The stick is huge.  While my hands are not that small, I sometimes have to change grip while flying in order to trim the aircraft etc.  When flying helicopters, which I for the record is very bad at, and I rest my palm on the base the buttons are very far up.  For now the throttle wheel and smaller trim wheels on the rather large joystick base is not in use as I have a separate throttle and have mapped the aileron and rudder trim to the top hat rocker and the rudder trim to the cone hat rocker on the throttle.  All the buttons and hat rockers have a distinct feel when pressed, while the are easily pressed.  The only thing that I would consider worth altering is perhaps a slightly less hard centring spring.&lt;br /&gt;
&lt;br /&gt;
==== The Pro Throttle ====&lt;br /&gt;
This is the best thing in the setup.  The throttle has about 5 centimeters/ 2 inces of horizontal travel.  Having very fine control over the throttle is fantastic as it makes it a lot easier to control both horizontal and vertical speed, specially when I trim up the aircraft properly.  The multitude of buttons makes it more easy to set up the controls in a HOTAS&amp;lt;ref name=&amp;quot;HOTAS&amp;quot;/&amp;gt; way.  Like the joystick, the throttle has a rather large base and all the buttons and hat rockers are distinct, yet light to press.&lt;br /&gt;
&lt;br /&gt;
==== The Pro Pedals ====&lt;br /&gt;
The pedal base are a bit on the heavy side, but that helps to keep it in place.  The pedals move horizontally and differentially in parallel, when one of them is pushed forward the other moves backward along two &amp;quot;tracks&amp;quot;.  The pedals are big enough for me, but are placed a bit narrow.  Somehow I find toe breaking a bit difficult even though the pedals provide a lot of toe brake travel.  I might have to change the braking power in the configuration file.&lt;br /&gt;
&lt;br /&gt;
=== The flying ===&lt;br /&gt;
Flying with a setup like this is a dream compared to flying with mouse and keyboard.  You have so much greater control.  Formation flying, and even just cruising gets a lot easier when you can fine tune the throttle.  And crosswind landings get a lot more challenging and fun with pedals.  While I neither do it often or well, flying helicopters get much easier with torque pedals and a throttle stick used as collective in addition to a joystick.  Since most of the helicopters have autothrottle one will not need a specialised collective/throttle control (though I bet a joystick with twist rudder would be great for that).&lt;br /&gt;
&lt;br /&gt;
==== Trimming ====&lt;br /&gt;
Also having realistic trim controls is rewarding.  Trimming a plane up makes for almost hands-free flying for short periods, like when looking at the map (or answering the phone).  When changing horizontal or vertical speed, remember PAT REA:&amp;lt;ref&amp;gt;As found in [https://www.cnatra.navy.mil/pubs/folder5/T6B/P-764_ch1.PDF P-764, T-6B Primary Contact Flight Training Instruction] (PDF) on the [https://www.cnatra.navy.mil/pubs/ppub_t6b.htm Chief of Naval Air Training (CNATRA) website].&amp;lt;/ref&amp;gt;&lt;br /&gt;
#Adjust:&lt;br /&gt;
##'''P'''ower,&lt;br /&gt;
##'''A'''ttitude and&lt;br /&gt;
##'''T'''rim.&lt;br /&gt;
#Trim:&lt;br /&gt;
##'''R'''udder&lt;br /&gt;
##'''E'''levator and&lt;br /&gt;
##'''A'''ileron.&lt;br /&gt;
&lt;br /&gt;
==== A few tips when flying with pedals ====&lt;br /&gt;
Crosswind landings and even taxing never get the same again. Consider training taxing before flying in crosswind. Remember to keep the wing on the wind side low, so the wind does not get under it lifting the wing and making steering a lot more difficult. I tended to weather-wane a lot the first days, pointing the nose towards the wind, usually ending up running off the taxi-/runway.&lt;br /&gt;
&lt;br /&gt;
== Footnotes ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Some posts at the forum ==&lt;br /&gt;
A few post I've made about my setup at the forum, though I pretty much summed them on this page:&lt;br /&gt;
* [http://www.flightgear.org/forums/viewtopic.php?p=113005#p113005 Rudder pedals and crosswind touch and goes]&lt;br /&gt;
* [http://www.flightgear.org/forums/viewtopic.php?p=113148#p113148 Re: Problem with CH products - joysticks]&lt;br /&gt;
* [http://www.flightgear.org/forums/viewtopic.php?p=131915#p131915 Re: Thrustmaster Hotas Warthog with Ubuntu 11.04?]&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware reviews]]&lt;br /&gt;
[[Category:Joysticks and Yokes]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Talk:Hardware_Review:_Saitek_Pro_Flight_Cessna_controls&amp;diff=102453</id>
		<title>Talk:Hardware Review: Saitek Pro Flight Cessna controls</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Talk:Hardware_Review:_Saitek_Pro_Flight_Cessna_controls&amp;diff=102453"/>
		<updated>2016-07-29T12:47:49Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: perhaps adding this to Category:Joysticks and Yokes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Hardware review category ==&lt;br /&gt;
&lt;br /&gt;
Please consider adding this review to the [[:Category:Hardware reviews|hardware review category]]. It would be great if all these articles could be found from the same place. ;-)&lt;br /&gt;
&lt;br /&gt;
—[[User:Johan G|Johan G]] ([[User_talk:Johan_G|Talk]] | [[Special:Contributions/Johan_G|contribs]]) 07:42, 30 June 2012 (EDT)&lt;br /&gt;
&lt;br /&gt;
Can we add this page to Category:Joysticks and Yokes ?&lt;br /&gt;
[[User:Tipunch|Tipunch]] ([[User talk:Tipunch|talk]])&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Bindings&amp;diff=102452</id>
		<title>Bindings</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Bindings&amp;diff=102452"/>
		<updated>2016-07-29T12:44:09Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: Category:Joysticks and Yokes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Bindings''' define what happens when a user:&lt;br /&gt;
* [[Howto: Make a clickable panel|Clicks an object]] in the [[scenery]] or in an [[aircraft]].&lt;br /&gt;
* Presses a key/button on the keyboard or [[joystick]].&lt;br /&gt;
* Clicks a [[menu]] item&lt;br /&gt;
* Interacts with a dialog (clicking a button, selecting list entries etc)&lt;br /&gt;
&lt;br /&gt;
In other words, '''bindings''' are simply the term for '''actions''' that are associated with certain '''events''' in FlightGear. &lt;br /&gt;
&lt;br /&gt;
There are different types of events supported by various subsystems, but the resulting action that can be triggered will typically involve either a hard-coded command (a so called fgcommand), or a block of scripted code (using [[Nasal]]). Bindings can be parameterized/customized using properties as arguments that are passed to each binding as a props.Node object.&lt;br /&gt;
And Nasal code can also be registered to become available as a dedicated fgcommand.&lt;br /&gt;
&lt;br /&gt;
You can assign multiple bindings to one object, button or key. Bindings may contain [[conditions]] to make them conditionally executed. Each binding must specify a command node with its particular type, see below.&lt;br /&gt;
&lt;br /&gt;
This article gives a small overview of frequently used bindings. Please refer to {{readme file|commands}} for additional information and refer to $FG_SRC/Main/commands.cxx for a complete list of available bindings.&lt;br /&gt;
&lt;br /&gt;
All given codes are examples, found on various places in the [[FlightGear]] package.&lt;br /&gt;
&lt;br /&gt;
== Commands ==&lt;br /&gt;
Below are a number of useful commands, some also with their equivalent Nasal call. For the complete list, see {{flightgear file|src/Main/fg_commands.cxx|l=1425}}. &lt;br /&gt;
&lt;br /&gt;
To learn more about adding your own custom fgcommands to the source code, see [[Howto:Add new fgcommands to FlightGear]].&lt;br /&gt;
&lt;br /&gt;
=== dialog-close ===&lt;br /&gt;
Closes the active dialog.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;dialog-close&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
fgcommand(&amp;quot;dialog-close&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== dialog-show ===&lt;br /&gt;
Shows a dialog, which should be present in &amp;lt;tt&amp;gt;''[[$FG_ROOT]]/gui/dialogs''&amp;lt;/tt&amp;gt;. In addition, from FlightGear 2.8, dialog files located in &amp;lt;tt&amp;gt;''&amp;lt;aircraft directory&amp;gt;/gui/dialogs''&amp;lt;/tt&amp;gt; are also loaded. This should be used for dialogs specific to a certain aircraft.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;dialog-show&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;dialog-name&amp;gt;location-in-air&amp;lt;/dialog-name&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
fgcommand(&amp;quot;dialog-show&amp;quot;, props.Node.new({&amp;quot;dialog-name&amp;quot;: &amp;quot;location-in-air&amp;quot;}));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; dialog-name : The name of the dialog, as designated in its XML file.&lt;br /&gt;
&lt;br /&gt;
=== nasal ===&lt;br /&gt;
[[Nasal]] is frequently used for complicated systems, because it can execute virtually any function and allows running previously-defined Nasal functions.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;script&amp;gt;b777.afds.input(0,1);&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; script : The Nasal script to execute.&lt;br /&gt;
: {{inote|Make sure that the script does not conflict with the {{wikipedia|List of XML and HTML character entity references#Predefined entities in XML|predefined XML entities}}. If it does, you can either put it in a {{wikipedia|CDATA|CDATA section}} or use a non-interpreted version (e.g., &amp;lt;code&amp;gt;&amp;amp;amp;gt;&amp;lt;/code&amp;gt; in place of &amp;lt;code&amp;gt;&amp;gt;&amp;lt;/code&amp;gt;).}}&lt;br /&gt;
&lt;br /&gt;
The {{func link|cmdarg}} function is often useful in these situations to extract offset values passed to the binding. It returns the specific &amp;lt;tt&amp;gt;&amp;amp;lt;binding&amp;amp;gt;&amp;lt;/tt&amp;gt; node, which contains a &amp;lt;tt&amp;gt;&amp;amp;lt;setting&amp;amp;gt;&amp;lt;/tt&amp;gt; node at runtime if used in a joystick axis that represents the value of that axis.&lt;br /&gt;
&lt;br /&gt;
In joysticks and keyboard keys, the script is run in a specific namespace; please see [[Howto:Understand Namespaces and Methods]] for more information on namespaces.&lt;br /&gt;
&lt;br /&gt;
=== property-adjust ===&lt;br /&gt;
Increases or decreases a property's value with a given step. Maximum and minimum values are optional.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-adjust&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/autopilot/settings/heading-bug-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;step&amp;gt;1&amp;lt;/step&amp;gt;&lt;br /&gt;
  &amp;lt;min&amp;gt;0&amp;lt;/min&amp;gt;&lt;br /&gt;
  &amp;lt;max&amp;gt;360&amp;lt;/max&amp;gt;&lt;br /&gt;
  &amp;lt;wrap&amp;gt;true&amp;lt;/wrap&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; property : Property that will be changed.&lt;br /&gt;
; step     : Amount to increase or decrease the property's value. Defaults to 0.&lt;br /&gt;
; offset   : Offset from the property's current value. If '''step''' is not given, this is multiplied by '''factor'''.&lt;br /&gt;
; factor   : When '''step''' is not given, '''offset''' is multiplied by this. Defaults to 1.&lt;br /&gt;
; min      : The minimum allowed value. Defaults to &amp;quot;no minimum.&amp;quot;&lt;br /&gt;
; max      : The maximum allowed value. Defaults to &amp;quot;no maximum.&amp;quot;&lt;br /&gt;
; wrap     : If true, the value will be wrapped when it passes min or max; both min and max must be present for this to work. Defaults to false.&lt;br /&gt;
; mask     : This argument accepts three value: &amp;quot;integer,&amp;quot; &amp;quot;decimal&amp;quot; and &amp;quot;all&amp;quot; (default). &amp;quot;integer&amp;quot; means that '''step''' or '''offset * factor''' is applied to the part of the property's current value left of the decimal point first. &amp;quot;decimal&amp;quot; does the same, but applies it to the prt to the right of the decimal point. &amp;quot;all&amp;quot; simply applies it to the whole number. This parameter does not seem to affect the resulting new value of the property, and so is not needed.&lt;br /&gt;
&lt;br /&gt;
=== property-assign ===&lt;br /&gt;
One of the most important commands. It sets a property to a predefined value.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/autopilot/settings/target-speed-kt&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== property-cycle ===&lt;br /&gt;
Cycles between a list of values and assigns one to a property. The value-list can vary in length. If the current value is &amp;quot;value1&amp;quot;, it will change to &amp;quot;value2&amp;quot;; if it is &amp;quot;value2&amp;quot;, it will change to &amp;quot;value3&amp;quot;, and so on, wrapping around the end.  If the current value is not in the list, it will jump to the first one.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-cycle&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/autopilot/autobrake/setting&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;value type=&amp;quot;string&amp;quot;&amp;gt;ARM&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;value type=&amp;quot;string&amp;quot;&amp;gt;DISARM&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;value type=&amp;quot;string&amp;quot;&amp;gt;OFF&amp;lt;/value&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
As of May 2013, the command supports additional behaviours to simplify use with the new [[Knob_/_slider_animation|knob and slider animations]]. The wrapping behaviour can be disabled by setting &amp;lt;wrap&amp;gt;0&amp;lt;/wrap&amp;gt;, and the command uses the 'offset' argument to select a direction of movement. This means a property-cycle bound to a multi-position knob will function as expected for movement in both directions.&lt;br /&gt;
&lt;br /&gt;
=== property-interpolate ===&lt;br /&gt;
Interpolates to a value with a given rate of change (per second).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-interpolate&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/flight/aileron-trim&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;value type=&amp;quot;double&amp;quot;&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;rate&amp;gt;0.5&amp;lt;/rate&amp;gt;&amp;lt;!-- 2 seconds to 0 from 1 or -1 --&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instead of using &amp;lt;rate&amp;gt;, one could use &amp;lt;time&amp;gt;, to specify the time (in seconds) it takes to go to the new value, independent of the current value.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-interpolate&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/flight/aileron-trim&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;value type=&amp;quot;double&amp;quot;&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;time&amp;gt;2&amp;lt;/time&amp;gt;&amp;lt;!-- 2 seconds to 0 from 1, 0.5, -1 etc. --&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also interpolate to a value given by a property.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-interpolate&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/flight/aileron-trim&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/flight/default-aileron-trim&amp;lt;/property&amp;gt;&amp;lt;!-- the value to interpolate to, is 0 --&amp;gt;&lt;br /&gt;
  &amp;lt;rate&amp;gt;0.5&amp;lt;/rate&amp;gt;&amp;lt;!-- 2 seconds to 0 from 1 or -1 --&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== property-multiply ===&lt;br /&gt;
Multiply the value of a property by a given factor.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-multiply&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/flight/aileron&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;factor&amp;gt;0.5&amp;lt;/factor&amp;gt;&lt;br /&gt;
  &amp;lt;min&amp;gt;-1&amp;lt;/min&amp;gt;&lt;br /&gt;
  &amp;lt;max&amp;gt;1&amp;lt;/max&amp;gt;&lt;br /&gt;
  &amp;lt;mask&amp;gt;all&amp;lt;/mask&amp;gt;&lt;br /&gt;
  &amp;lt;wrap&amp;gt;true&amp;lt;/wrap&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*'''factor:''' the amount to multiply by.&lt;br /&gt;
*'''min:''' minimum value.&lt;br /&gt;
*'''max:''' maximum value.&lt;br /&gt;
*'''mask:'''&lt;br /&gt;
** '''integer:''' mutiply only left of the decimal point.&lt;br /&gt;
** '''decimal:''' multiply only the right of the decimal point.&lt;br /&gt;
** '''all:''' multiply the entire value.&lt;br /&gt;
*'''wrap:''' true if the value should be wrapped if it passes min/max. It is required to set both min and max in that case.&lt;br /&gt;
&lt;br /&gt;
=== property-randomize ===&lt;br /&gt;
Assigns a random value (between min and max) to a property.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-randomize&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/orientation/pitch-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;min&amp;gt;0&amp;lt;/min&amp;gt;&lt;br /&gt;
  &amp;lt;max&amp;gt;360&amp;lt;/max&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== property-scale ===&lt;br /&gt;
Set the value of a property based on an axis, often used in [[joystick]] configuration files.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-scale&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/flight/aileron&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0.001&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;factor&amp;gt;-1&amp;lt;/factor&amp;gt;&lt;br /&gt;
  &amp;lt;power&amp;gt;3&amp;lt;/power&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''offset:''' the offset to shift by, before applying the factor.&lt;br /&gt;
* '''factor:''' the factor to multiply by (use negative to reverse).&lt;br /&gt;
* '''squared:''' if true will square the resulting value (same as power=2).&lt;br /&gt;
* '''power:''' the resulting value will be taken to the power of this integer value (overrides squared).&lt;br /&gt;
&lt;br /&gt;
Remember: &amp;lt;tt&amp;gt;((property+offset)*factor)^power=result&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== property-swap ===&lt;br /&gt;
Swaps the values of two properties, useful for radio panels.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-swap&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/instrumentation/comm/frequencies/selected-mhz&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/instrumentation/comm/frequencies/standby-mhz&amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== property-toggle ===&lt;br /&gt;
Toggles the value of a property on each click, between true (1) and false (0).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-toggle&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/gear/gear-down&amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Or - if defined - it toggles between two custom values.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-toggle&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/gear/gear-down&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;value&amp;gt;2&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;value&amp;gt;3&amp;lt;/value&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===request-metar ===&lt;br /&gt;
{{cquote|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
fgcommand(&amp;quot;request-metar&amp;quot;, props.Node.new({&amp;quot;path&amp;quot;: &amp;quot;/foo/mymetar&amp;quot;, &amp;quot;station&amp;quot;: &amp;quot;LOWI&amp;quot;}));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you pass an existing path, the station ID will be updated, and if you pass the same station ID as before, no additional request is made. As usual for metar-properties, there's a time-to-live and valid flags you can check, and the metar refreshes automatically every 900 seconds. You can also write to the station ID directly to change station, update the time-to-live, and wait for the valid signal.&lt;br /&gt;
&lt;br /&gt;
There's also an unregister command ('clear-metar') to cancel the binding into the property tree.&amp;lt;ref&amp;gt;{{cite web |url=http://www.mail-archive.com/flightgear-devel@lists.sourceforge.net/msg38372.html|title=&amp;lt;nowiki&amp;gt;[Flightgear-devel] Requesting arbitrary metar&amp;lt;/nowiki&amp;gt;|author=James Turner|date=Sun, 23 Sep 2012 08:56:48 -0700}}&amp;lt;/ref&amp;gt;|James Turner}}&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Related content ==&lt;br /&gt;
* {{readme file|commands}}&lt;br /&gt;
* [[Howto:Make a clickable panel]]&lt;br /&gt;
* [[Howto:Reassign keyboard bindings]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:XML]]&lt;br /&gt;
[[Category:FlightGear keyboard]]&lt;br /&gt;
[[Category:Joysticks and Yokes]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Joystick_xml_library&amp;diff=102451</id>
		<title>Joystick xml library</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Joystick_xml_library&amp;diff=102451"/>
		<updated>2016-07-29T12:39:09Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: Category:Joysticks and Yokes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a master page linking to pages containing joystick xml codes for various specialised functions. Note that there is an equivalent forum topic with the same aim (see Related content) as well as a dropbox page extracted from the forum.  However, the wiki offers the potential to organise the codes in a hierarchical manner, and improvements can be made in a collective manner not possible as a forum topic.  You are well advised to check out both.&lt;br /&gt;
&lt;br /&gt;
* [[Joystick Autopilot Bindings]]  Control the Bendix/KAP140 and the CENTURYIII autopilots with the joystick &lt;br /&gt;
&lt;br /&gt;
NB: If you want to introduce more code, make a new wiki page and link rather than pasting code directly in this page.&lt;br /&gt;
&lt;br /&gt;
== Related content ==&lt;br /&gt;
* [http://forum.flightgear.org/viewtopic.php?f=24&amp;amp;t=12363 Joystick xml codes Library project] Forum topic with a similar objective&lt;br /&gt;
&lt;br /&gt;
== External link ==&lt;br /&gt;
* [https://dl.dropboxusercontent.com/u/11151437/STICK%20XML%20LIBRARY/INDEX.html Dropbox library] Collection of short snippets for particular tasks, complete configuration files for particular joysticks, and various general aviation related links&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Joysticks and Yokes]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Joystick/Sony-PLAYSTATION(R)3-Controller&amp;diff=102450</id>
		<title>Joystick/Sony-PLAYSTATION(R)3-Controller</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Joystick/Sony-PLAYSTATION(R)3-Controller&amp;diff=102450"/>
		<updated>2016-07-29T12:38:19Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: Category:Joysticks and Yokes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
  &amp;lt;name type=&amp;quot;string&amp;quot;&amp;gt;Sony PLAYSTATION(R)3 Controller&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;axis&amp;gt;&lt;br /&gt;
    &amp;lt;desc type=&amp;quot;string&amp;quot;&amp;gt;Rudder&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command type=&amp;quot;string&amp;quot;&amp;gt;property-scale&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;property type=&amp;quot;string&amp;quot;&amp;gt;/controls/flight/rudder&amp;lt;/property&amp;gt;&lt;br /&gt;
      &amp;lt;dead-band type=&amp;quot;double&amp;quot;&amp;gt;0&amp;lt;/dead-band&amp;gt;&lt;br /&gt;
      &amp;lt;factor type=&amp;quot;double&amp;quot;&amp;gt;1&amp;lt;/factor&amp;gt;&lt;br /&gt;
      &amp;lt;offset type=&amp;quot;double&amp;quot;&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
  &amp;lt;/axis&amp;gt;&lt;br /&gt;
  &amp;lt;axis n=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;desc type=&amp;quot;string&amp;quot;&amp;gt;Aileron&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command type=&amp;quot;string&amp;quot;&amp;gt;property-scale&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;property type=&amp;quot;string&amp;quot;&amp;gt;/controls/flight/aileron&amp;lt;/property&amp;gt;&lt;br /&gt;
      &amp;lt;dead-band type=&amp;quot;double&amp;quot;&amp;gt;0&amp;lt;/dead-band&amp;gt;&lt;br /&gt;
      &amp;lt;factor type=&amp;quot;double&amp;quot;&amp;gt;1&amp;lt;/factor&amp;gt;&lt;br /&gt;
      &amp;lt;offset type=&amp;quot;double&amp;quot;&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
  &amp;lt;/axis&amp;gt;&lt;br /&gt;
  &amp;lt;axis n=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;desc type=&amp;quot;string&amp;quot;&amp;gt;Elevator&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command type=&amp;quot;string&amp;quot;&amp;gt;property-scale&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;property type=&amp;quot;string&amp;quot;&amp;gt;/controls/flight/elevator&amp;lt;/property&amp;gt;&lt;br /&gt;
      &amp;lt;dead-band type=&amp;quot;double&amp;quot;&amp;gt;0&amp;lt;/dead-band&amp;gt;&lt;br /&gt;
      &amp;lt;factor type=&amp;quot;double&amp;quot;&amp;gt;-1&amp;lt;/factor&amp;gt;&lt;br /&gt;
      &amp;lt;offset type=&amp;quot;double&amp;quot;&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
  &amp;lt;/axis&amp;gt;&lt;br /&gt;
  &amp;lt;axis n=&amp;quot;12&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;desc&amp;gt;Throttle&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;direction&amp;gt;forward&amp;lt;/direction&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;script&amp;gt;controls.throttleAxis(1)&amp;lt;/script&amp;gt;&lt;br /&gt;
      &lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;dead-band type=&amp;quot;double&amp;quot;&amp;gt;0&amp;lt;/dead-band&amp;gt;&lt;br /&gt;
  &amp;lt;/axis&amp;gt;&lt;br /&gt;
  &amp;lt;button&amp;gt;&lt;br /&gt;
    &amp;lt;desc type=&amp;quot;string&amp;quot;&amp;gt;Brakes&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;repeatable type=&amp;quot;string&amp;quot;&amp;gt;false&amp;lt;/repeatable&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command type=&amp;quot;string&amp;quot;&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;script type=&amp;quot;string&amp;quot;&amp;gt;controls.applyBrakes(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;mod-up&amp;gt;&lt;br /&gt;
      &amp;lt;binding&amp;gt;&lt;br /&gt;
        &amp;lt;command type=&amp;quot;string&amp;quot;&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
        &amp;lt;script type=&amp;quot;string&amp;quot;&amp;gt;controls.applyBrakes(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
      &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
  &amp;lt;/button&amp;gt;&lt;br /&gt;
  &amp;lt;button n=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;desc type=&amp;quot;string&amp;quot;&amp;gt;Elevator Trim Up&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command type=&amp;quot;string&amp;quot;&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;script type=&amp;quot;string&amp;quot;&amp;gt;controls.elevatorTrim(-1);&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;repeatable type=&amp;quot;double&amp;quot;&amp;gt;1&amp;lt;/repeatable&amp;gt;&lt;br /&gt;
  &amp;lt;/button&amp;gt;&lt;br /&gt;
  &amp;lt;button n=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;desc type=&amp;quot;string&amp;quot;&amp;gt;View Up&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command type=&amp;quot;string&amp;quot;&amp;gt;property-adjust&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;property type=&amp;quot;string&amp;quot;&amp;gt;/sim/current-view/goal-pitch-offset-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
      &amp;lt;step type=&amp;quot;string&amp;quot;&amp;gt;20.0&amp;lt;/step&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
  &amp;lt;/button&amp;gt;&lt;br /&gt;
  &amp;lt;button n=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;desc type=&amp;quot;string&amp;quot;&amp;gt;View Right&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command type=&amp;quot;string&amp;quot;&amp;gt;property-adjust&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;property type=&amp;quot;string&amp;quot;&amp;gt;/sim/current-view/goal-heading-offset-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
      &amp;lt;step type=&amp;quot;string&amp;quot;&amp;gt;-30.0&amp;lt;/step&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
  &amp;lt;/button&amp;gt;&lt;br /&gt;
  &amp;lt;button n=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;desc type=&amp;quot;string&amp;quot;&amp;gt;View Down&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command type=&amp;quot;string&amp;quot;&amp;gt;property-adjust&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;property type=&amp;quot;string&amp;quot;&amp;gt;/sim/current-view/goal-pitch-offset-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
      &amp;lt;step type=&amp;quot;string&amp;quot;&amp;gt;-20.0&amp;lt;/step&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
  &amp;lt;/button&amp;gt;&lt;br /&gt;
  &amp;lt;button n=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;desc type=&amp;quot;string&amp;quot;&amp;gt;View Left&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command type=&amp;quot;string&amp;quot;&amp;gt;property-adjust&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;property type=&amp;quot;string&amp;quot;&amp;gt;/sim/current-view/goal-heading-offset-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
      &amp;lt;step type=&amp;quot;string&amp;quot;&amp;gt;30.0&amp;lt;/step&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
  &amp;lt;/button&amp;gt;&lt;br /&gt;
  &amp;lt;button n=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;desc type=&amp;quot;string&amp;quot;&amp;gt;View Increase&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command type=&amp;quot;string&amp;quot;&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;script type=&amp;quot;string&amp;quot;&amp;gt;view.increase(0.75);&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;repeatable type=&amp;quot;double&amp;quot;&amp;gt;1&amp;lt;/repeatable&amp;gt;&lt;br /&gt;
  &amp;lt;/button&amp;gt;&lt;br /&gt;
  &amp;lt;button n=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;desc type=&amp;quot;string&amp;quot;&amp;gt;FGCom PTT&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;repeatable type=&amp;quot;string&amp;quot;&amp;gt;false&amp;lt;/repeatable&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command type=&amp;quot;string&amp;quot;&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;script type=&amp;quot;string&amp;quot;&amp;gt;controls.ptt(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
      &amp;lt;module type=&amp;quot;string&amp;quot;&amp;gt;__js0&amp;lt;/module&amp;gt;&lt;br /&gt;
      &amp;lt;offset type=&amp;quot;double&amp;quot;&amp;gt;1&amp;lt;/offset&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;mod-up&amp;gt;&lt;br /&gt;
      &amp;lt;binding&amp;gt;&lt;br /&gt;
        &amp;lt;command type=&amp;quot;string&amp;quot;&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
        &amp;lt;script type=&amp;quot;string&amp;quot;&amp;gt;controls.ptt(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
        &amp;lt;module type=&amp;quot;string&amp;quot;&amp;gt;__js0&amp;lt;/module&amp;gt;&lt;br /&gt;
        &amp;lt;offset type=&amp;quot;double&amp;quot;&amp;gt;1&amp;lt;/offset&amp;gt;&lt;br /&gt;
      &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
  &amp;lt;/button&amp;gt;&lt;br /&gt;
  &amp;lt;button n=&amp;quot;11&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;desc type=&amp;quot;string&amp;quot;&amp;gt;Brakes&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;repeatable type=&amp;quot;string&amp;quot;&amp;gt;false&amp;lt;/repeatable&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command type=&amp;quot;string&amp;quot;&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;script type=&amp;quot;string&amp;quot;&amp;gt;controls.applyBrakes(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;mod-up&amp;gt;&lt;br /&gt;
      &amp;lt;binding&amp;gt;&lt;br /&gt;
        &amp;lt;command type=&amp;quot;string&amp;quot;&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
        &amp;lt;script type=&amp;quot;string&amp;quot;&amp;gt;controls.applyBrakes(0);&amp;lt;/script&amp;gt;&lt;br /&gt;
      &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
  &amp;lt;/button&amp;gt;&lt;br /&gt;
  &amp;lt;button n=&amp;quot;12&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;desc type=&amp;quot;string&amp;quot;&amp;gt;Elevator Trim Down&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command type=&amp;quot;string&amp;quot;&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;script type=&amp;quot;string&amp;quot;&amp;gt;controls.elevatorTrim(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;repeatable type=&amp;quot;double&amp;quot;&amp;gt;1&amp;lt;/repeatable&amp;gt;&lt;br /&gt;
  &amp;lt;/button&amp;gt;&lt;br /&gt;
  &amp;lt;button n=&amp;quot;13&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;desc type=&amp;quot;string&amp;quot;&amp;gt;View Cycle Forwards&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command type=&amp;quot;string&amp;quot;&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;script type=&amp;quot;string&amp;quot;&amp;gt;view.stepView(1);&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;repeatable type=&amp;quot;double&amp;quot;&amp;gt;0&amp;lt;/repeatable&amp;gt;&lt;br /&gt;
  &amp;lt;/button&amp;gt;&lt;br /&gt;
  &amp;lt;button n=&amp;quot;14&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;desc type=&amp;quot;string&amp;quot;&amp;gt;Elevator Trim Up&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command type=&amp;quot;string&amp;quot;&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;script type=&amp;quot;string&amp;quot;&amp;gt;controls.elevatorTrim(-1);&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;repeatable type=&amp;quot;double&amp;quot;&amp;gt;1&amp;lt;/repeatable&amp;gt;&lt;br /&gt;
  &amp;lt;/button&amp;gt;&lt;br /&gt;
  &amp;lt;button n=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;desc type=&amp;quot;string&amp;quot;&amp;gt;View Cycle Backwards&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command type=&amp;quot;string&amp;quot;&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;script type=&amp;quot;string&amp;quot;&amp;gt;view.stepView(-1);&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;repeatable type=&amp;quot;double&amp;quot;&amp;gt;0&amp;lt;/repeatable&amp;gt;&lt;br /&gt;
  &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
[[Category:Joysticks and Yokes]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Joystick/WaillyDX7s&amp;diff=102449</id>
		<title>Joystick/WaillyDX7s</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Joystick/WaillyDX7s&amp;diff=102449"/>
		<updated>2016-07-29T12:37:13Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: Category:Joysticks and Yokes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Hardware:&lt;br /&gt;
&lt;br /&gt;
# PPM to USB Adapter ID 06f7:0003 Wailly Technology Ltd USB-&amp;gt;Din 4 Adaptor&lt;br /&gt;
# Spektrum DX7s 7-channel RC Transmitter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/usr/share/games/flightgear/Input/Joysticks/Default/joystick.xml&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=xml&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
  &amp;lt;axis n=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;desc&amp;gt;Aileron&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;direction&amp;gt;right&amp;lt;/direction&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;property-scale&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;property&amp;gt;/controls/flight/aileron&amp;lt;/property&amp;gt;&lt;br /&gt;
      &amp;lt;offset type=&amp;quot;double&amp;quot;&amp;gt;0&amp;lt;/offset&amp;gt;&lt;br /&gt;
      &amp;lt;factor type=&amp;quot;double&amp;quot;&amp;gt;1&amp;lt;/factor&amp;gt;&lt;br /&gt;
      &amp;lt;power type=&amp;quot;int&amp;quot;&amp;gt;1&amp;lt;/power&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;dead-band type=&amp;quot;double&amp;quot;&amp;gt;0&amp;lt;/dead-band&amp;gt;&lt;br /&gt;
  &amp;lt;/axis&amp;gt;&lt;br /&gt;
  &amp;lt;axis n=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;desc&amp;gt;Elevator&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;direction&amp;gt;down/forward&amp;lt;/direction&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;property-scale&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;property&amp;gt;/controls/flight/elevator&amp;lt;/property&amp;gt;&lt;br /&gt;
      &amp;lt;factor type=&amp;quot;double&amp;quot;&amp;gt;1&amp;lt;/factor&amp;gt;&lt;br /&gt;
      &amp;lt;power type=&amp;quot;int&amp;quot;&amp;gt;1&amp;lt;/power&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;dead-band type=&amp;quot;double&amp;quot;&amp;gt;0&amp;lt;/dead-band&amp;gt;&lt;br /&gt;
  &amp;lt;/axis&amp;gt;&lt;br /&gt;
  &amp;lt;axis n=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;desc&amp;gt;Rudder&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;direction&amp;gt;right&amp;lt;/direction&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;property-scale&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;property&amp;gt;/controls/flight/rudder&amp;lt;/property&amp;gt;&lt;br /&gt;
      &amp;lt;factor type=&amp;quot;double&amp;quot;&amp;gt;1&amp;lt;/factor&amp;gt;&lt;br /&gt;
      &amp;lt;power type=&amp;quot;int&amp;quot;&amp;gt;1&amp;lt;/power&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
  &amp;lt;dead-band type=&amp;quot;double&amp;quot;&amp;gt;0&amp;lt;/dead-band&amp;gt;&lt;br /&gt;
  &amp;lt;/axis&amp;gt;&lt;br /&gt;
  &amp;lt;axis n=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;desc&amp;gt;Throttle&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;direction&amp;gt;forward&amp;lt;/direction&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;script&amp;gt;controls.throttleAxis()&amp;lt;/script&amp;gt;&lt;br /&gt;
      &amp;lt;factor type=&amp;quot;double&amp;quot;&amp;gt;1&amp;lt;/factor&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;dead-band type=&amp;quot;double&amp;quot;&amp;gt;0&amp;lt;/dead-band&amp;gt;&lt;br /&gt;
  &amp;lt;/axis&amp;gt;&lt;br /&gt;
  &amp;lt;name type=&amp;quot;string&amp;quot;&amp;gt;WAILLY PPM&amp;lt;/name&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:XML]]&lt;br /&gt;
[[Category:Joysticks and Yokes]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Input_device&amp;diff=102447</id>
		<title>Input device</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Input_device&amp;diff=102447"/>
		<updated>2016-07-29T12:28:14Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: Category:Joysticks and Yokes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Could you imagine a pilot in his or her [[:Category:Cessna|Cessna]] controlling the machine with a keyboard alone? For getting the proper feeling of flight you will need a '''joystick/yoke''' plus [[rudder]] pedals, right? &lt;br /&gt;
&lt;br /&gt;
FlightGear has integrated joystick support, which automatically detects any joystick, yoke, or pedals attached. Just try it! If this does work for you, lean back and be happy! You can see what FlightGear has detected your joystick as in the Help &amp;gt; Joystick Configuration dialog from the [[menu]]. &lt;br /&gt;
&lt;br /&gt;
Unfortunately, for the above mentioned versatility, chances are your joystick does not work out of the box. This article explains you how to make FlightGear recognise your device&lt;br /&gt;
&lt;br /&gt;
== Joystick or yoke? ==&lt;br /&gt;
{| cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;0&amp;quot; align=&amp;quot;right&amp;quot; style=&amp;quot;clear:right; background:#fafafa; font-size: 85%; border: 1px solid #CCCCCC;&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| [[File:CH Products Fighterstick USB.jpg|x199px|CH Products Fighterstick USB]]&lt;br /&gt;
| [[File:Saitek Pro Flight Cessna Yoke front.jpg|300px|Saitek Pro Flight Cessna Yoke]]&lt;br /&gt;
|-&lt;br /&gt;
| CH Products Fighterstick USB&lt;br /&gt;
| Saitek Pro Flight Cessna Yoke&lt;br /&gt;
|}&lt;br /&gt;
The two most common control devices on aircraft are the joystick (left picture) and yoke (right picture). Joysticks can be found on military fighters, helicopters and Airbus [[airliner]]s, while yokes are used on almost all other fixed wing aircraft, including Boeing airliners.&lt;br /&gt;
&lt;br /&gt;
Joysticks are generally a lot cheaper, starting at $10. Yokes start at $100. When you are new to flightsimming, buying a cheap (ca. $20) joystick might be a good way to find out if it's something for you.&lt;br /&gt;
&lt;br /&gt;
The following table should help you decide which one is best suited for you:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! Joystick&lt;br /&gt;
! Yoke&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Price&lt;br /&gt;
| $10+&lt;br /&gt;
| $100+&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | General aviation&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Helicopter&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Fighters&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Airbus&lt;br /&gt;
| {{yes}}&lt;br /&gt;
| {{no}}&lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Boeing&lt;br /&gt;
| {{no}}&lt;br /&gt;
| {{yes}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Some reviews of flight simulation hardware can be found in [[:Category:Hardware reviews]].&lt;br /&gt;
&lt;br /&gt;
== Built-in joystick support ==&lt;br /&gt;
In order for joystick auto-detection to work, a joystick bindings xml file must exist for each joystick. This file describes what axes and buttons are to be used to control which functions in FlightGear. The associations between functions and axes or buttons are called &amp;quot;bindings&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
FlightGear includes a large number of such bindings files for a variety of manufacturers. Chances are high that your joystick will be recognised straight away, so let's try that first. You can confirm whether it was recognised by looking in the &amp;lt;tt&amp;gt;Help &amp;gt; Joystick Configuration&amp;lt;/tt&amp;gt; dialog. &amp;quot;Used for&amp;quot; should contain a name/description of your joystick. It will contain &amp;quot;default&amp;quot; when FlightGear did not recognise your joystick.&lt;br /&gt;
&lt;br /&gt;
Most of the time when your joystick is not recognised, it is because of a missing name definition in the respective bindings file. Because FlightGear is used on all kind of operating systems, names vary a lot. You can find the files under &amp;lt;tt&amp;gt;[[$FG_ROOT]]/Input/Joysticks/&amp;lt;/tt&amp;gt; (despite the name, yokes and pedals are also found here!). For example, if you have a CH Products joystick, look in the folder &amp;lt;tt&amp;gt;[[$FG_ROOT]]/Input/Joysticks/CH&amp;lt;/tt&amp;gt; for a file that might work for your joystick. When such a file exists, do the following:&lt;br /&gt;
# Launch FlightGear with the joystick connected.&lt;br /&gt;
# Look under Help &amp;gt; Joystick Configuration and check the name behind &amp;quot;Joystick #0:&amp;quot;. &lt;br /&gt;
# Open your joystick's bindings file in a XML editor and add the following code to the file, below the already-present &amp;lt;code&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/code&amp;gt; tags.&lt;br /&gt;
# &amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;name&amp;gt;The EXACT name you found under step 2; including spaces, capitals etc.&amp;lt;/name&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# Please report this name [http://forum.flightgear.org/viewforum.php?f=24 at our forum], so it can be added to the official file (and next releases).&lt;br /&gt;
&lt;br /&gt;
Please note that the latest config files are always to be found at {{fgdata file|Input/Joysticks}}. This link may contain additional binding files that were not included in the latest stable release.&lt;br /&gt;
&lt;br /&gt;
If there is no file for your joystick, you will have to create such a file. We will discuss that in [[Joystick#Writing or editing joystick binding xml files|a later section]], by cutting and pasting bindings from the examples that are included with FlightGear.&lt;br /&gt;
&lt;br /&gt;
=== Multiple devices on Windows ===&lt;br /&gt;
In case you have two USB devices (for instance a yoke plus pedals) to a Windows computer, there may be cases, where the same driver name is reported twice. In this case, you can get at least the yoke to work by assigning it number 0 (out of 0 and 1), by adding a line to &amp;lt;tt&amp;gt;[[$FG_ROOT]]/joystick.xml&amp;lt;/tt&amp;gt; like:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;js n=&amp;quot;0&amp;quot; include=&amp;quot;Input/Joysticks/Saitek/ST290-Pro.xml&amp;quot;/&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
if you also have pedals (or another joystick), just add more lines, similar to:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;js n=&amp;quot;1&amp;quot; include=&amp;quot;Input/Joysticks/Saitek/Pro-Flight-Rudder-Pedals.xml&amp;quot;/&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To make sure that the first input device is indeed the yoke, rotate the yoke ([[aileron]] control) and observe the Help &amp;gt; Joystick Configuration dialog. If the aileron value does not change, you have to make the yoke the preferred device first. For doing so, enter the Windows &amp;quot;Control panel&amp;quot;, open &amp;quot;Game controllers&amp;quot; and select the &amp;quot;Advanced&amp;quot; button. Here you can select the yoke as the &amp;quot;Preferred&amp;quot; device. Afterwards you can check that assignment by restarting FlightGear. The yoke should now control the aileron.&lt;br /&gt;
&lt;br /&gt;
== Adding support for your joystick ==&lt;br /&gt;
=== Verifying your joystick is working ===&lt;br /&gt;
==== Linux ====&lt;br /&gt;
Reboot your system and immediately enter on the [[command line]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
dmesg | grep Joystick &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which pipes the boot message to grep which then prints every line in the boot message that contains the string “Joystick”. When you do this with a Saitek joystick attached, you will see a line similar to this one: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
input0: USB HID v1.00 Joystick [SAITEK CYBORG 3D USB] on usb2:3.0 &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This line tells us that a joystick has identified itself as SAITEK CYBORG 3D USB to the operating system. It does not tell us that the joystick driver sees your joystick.  You can verify that the joystick driver sees the joystick by entering:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
js_demo &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your joystick is not recognized by the driver, you may have to manually load the joystick device module with the command:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
modprobe joydev&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Windows ====&lt;br /&gt;
Go to &amp;lt;tt&amp;gt;Start &amp;gt; Control Panel &amp;gt; Game Controller&amp;lt;/tt&amp;gt; and see whether the dialog displays (and responses) on your joystick. &lt;br /&gt;
&lt;br /&gt;
=== Confirming that the driver recognizes your joystick ===&lt;br /&gt;
FlightGear ships with a utility called js_demo. It will report the number of joysticks attached to a system, their respective &amp;quot;names&amp;quot; and their capabilities. Under Linux, you can run js_demo from the folder /FlightGear/bin as follows: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd /usr/local/FlightGear/bin &lt;br /&gt;
$ js_demo&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Under Windows, open a command shell (&amp;lt;tt&amp;gt;Start &amp;gt; All Programs &amp;gt; Accessories &amp;gt; Command Prompt&amp;lt;/tt&amp;gt;), go to the FlightGear binary folder and start the program as follows (given FlightGear is installed under &amp;lt;tt&amp;gt;C:/Program Files/Flightgear&amp;lt;/tt&amp;gt;) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;dos&amp;quot;&amp;gt;&lt;br /&gt;
C:&lt;br /&gt;
cd /Program Files/FlightGear/bin/win32 &lt;br /&gt;
js_demo.exe &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--If js_demo.exe is not included in your version, download it [http://fgfs.beggabaur.de/forum/js_demo.exe here].--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On our system, the first few lines of output are (stop the program with C if it is quickly scrolling past your window!) as follows: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
Joystick test program. &lt;br /&gt;
Joystick 0: “CH PRODUCTS CH FLIGHT SIM YOKE USB ” &lt;br /&gt;
Joystick 1: “CH PRODUCTS CH PRO PEDALS USB” &lt;br /&gt;
Joystick 2 not detected &lt;br /&gt;
Joystick 3 not detected &lt;br /&gt;
Joystick 4 not detected &lt;br /&gt;
Joystick 5 not detected &lt;br /&gt;
Joystick 6 not detected &lt;br /&gt;
Joystick 7 not detected &lt;br /&gt;
+——————–JS.0———————-+——————–JS.1———————-+ &lt;br /&gt;
| Btns Ax:0 Ax:1 Ax:2 Ax:3 Ax:4 Ax:5 Ax:6 | Btns Ax:0 Ax:1 Ax:2 | &lt;br /&gt;
+———————————————-+———————————————-+ &lt;br /&gt;
| 0000 +0.0 +0.0 +1.0 -1.0 -1.0 +0.0 +0.0 . | 0000 -1.0 -1.0 -1.0 . . . . . | &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First note that js demo reports which number is assigned to each joystick recognized by the driver. Also, note that the “name” each joystick reports is also included between quotes. We will need the names for each bindings file when we begin writing the binding xml files for each joystick.&lt;br /&gt;
&lt;br /&gt;
=== Identifying the numbering of axes and buttons ===&lt;br /&gt;
Axis and button numbers can be identified using js demo as follows. By observing the output of js demo while working your joystick axes and buttons you can determine what axis and button numbers are assigned to each joystick axis and button. It should be noted that numbering generally starts with zero. &lt;br /&gt;
&lt;br /&gt;
The buttons are handled internally as a binary number in which bit 0 (the least significant bit) represents button 0, bit 1 represents button 1, etc., but this number is displayed on the screen in hexadecimal notation, so: &lt;br /&gt;
&lt;br /&gt;
* 0001 ⇒ button 0 pressed &lt;br /&gt;
* 0002 ⇒ button 1 pressed &lt;br /&gt;
* 0004 ⇒ button 2 pressed &lt;br /&gt;
* 0008 ⇒ button 3 pressed &lt;br /&gt;
* 0010 ⇒ button 4 pressed &lt;br /&gt;
* 0020 ⇒ button 5 pressed &lt;br /&gt;
* 0040 ⇒ button 6 pressed &lt;br /&gt;
* ... etcp to ... &lt;br /&gt;
* 8000 ⇒ button 15 pressed &lt;br /&gt;
* ... and ... &lt;br /&gt;
* 0014 ⇒ buttons 2 and 4 pressed simultaneously &lt;br /&gt;
* ... etc. &lt;br /&gt;
&lt;br /&gt;
For Linux users, there is another option for identifying the “name” and the numbers assigned to each axis and button. Most Linux distributions include a very handy program, “jstest”. With a CH Product Yoke plugged into the system, the following output lines are displayed by jstest: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
jstest /dev/js3 &lt;br /&gt;
Joystick (CH PRODUCTS CH FLIGHT SIM YOKE USB ) has 7 axes and 12 buttons. Driver version is 2.1.0 &lt;br /&gt;
Testing…(interrupt to exit) &lt;br /&gt;
Axes: 0: 0 1: 0 2: 0 3: 0 4: 0 5: 0 6: 0 Buttons: 0:off 1:off 2:off 3:on 4:off 5:off 6:off 7:off 8:off 9:off 10:off 11:off &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note the “name” between parentheses. This is the name the system associates with your joystick. &lt;br /&gt;
&lt;br /&gt;
When you move any control, the numbers change after the axis number corresponding to that moving control and when you depress any button, the “off” after the button number corresponding to the button pressed changes to “on”. In this way, you can quickly write down the axes numbers and button numbers for each function without messing with binary.&lt;br /&gt;
&lt;br /&gt;
In most modern repositories, there is a graphical version of this program, called &amp;quot;jstest-gtk&amp;quot;, where you are given a list of attached devices to choose from, and then get a graphical representation of all axes and buttons.&lt;br /&gt;
&lt;br /&gt;
=== Calibration ===&lt;br /&gt;
For many/most joysticks this step might not be necessary.  If either, the centre position of the joystick does not yield near-zero values for relevant axes, or if the maximum value for an axis cannot be reached, or is reached too early, you need to calibrate the joystick. (Note that some calibration problems can be fixed with the flighgear joystick configuration files, but not all, e.g. if the maximum value is reached too early)&lt;br /&gt;
&lt;br /&gt;
==== Linux ====&lt;br /&gt;
The program &amp;quot;jscal&amp;quot; (install from repositories if not already available on your system) provides a calibration routine for joysticks.  You need to know or find out the device name of your joystick (usually /dev/js0  or /dev/input/js0 - instead of 0 a different number might need to be used, look at output of js_demo to figure out which). For example to calibrate the joystick with device name /dev/input/js0, execute&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;jscal -c /dev/input/js0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
and follow instructions.&lt;br /&gt;
The calibration is retained until the joystick is unplugged, or the computer rebooted.  In order to save it for future use, execute &lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;jscal -p /dev/input/js0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
which will print the command that needs to be entered to restore the calibration, for example&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;jscal -s 6,1,0,8171,8171,65936,65374,1,0,8166,8166,65928,65494,1,0,128,128,4194176,4227201,1,0,128,128,4194176,4227201,1,0,0,0,536854528,536854528,1,0,0,0,536854528,536854528 /dev/input/js0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Copy the command you obtained into your startup script in order to restore calibration automatically.&lt;br /&gt;
&lt;br /&gt;
Recent versions of jscal have this simplified, you can store and restore your calibration settings.&lt;br /&gt;
After calibration store the settings:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;jscal-store /dev/input/js0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then in your startup script recall the settings for the given device:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;jscal-restore /dev/input/js0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However if you have multiple controllers connected, they might be renumbered on pluging/repluging. Best way to insure you get the correct calibration is to create a custom '''udev''' rule-set that you put into /etc/udev/rules.d/00-joystick.rules, similar to the following example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#joystick rules to make the names persistent and reload the stored calibration profile&lt;br /&gt;
ACTION!=&amp;quot;add|change&amp;quot;, GOTO=&amp;quot;joystick_end&amp;quot;&lt;br /&gt;
SUBSYSTEM!=&amp;quot;input&amp;quot;, GOTO=&amp;quot;joystick_end&amp;quot;&lt;br /&gt;
&lt;br /&gt;
KERNEL==&amp;quot;js*&amp;quot;, ATTRS{idProduct}==&amp;quot;a02f&amp;quot;, ATTRS{idVendor}==&amp;quot;12bd&amp;quot;, SYMLINK+=&amp;quot;input/joystick&amp;quot; RUN+=&amp;quot;/etc/udev/scripts/joycal.sh&amp;quot;&lt;br /&gt;
KERNEL==&amp;quot;js*&amp;quot;, ATTRS{name}==&amp;quot;Logitech Logitech Racing Wheel&amp;quot;, SYMLINK+=&amp;quot;input/logiwheel&amp;quot; RUN+=&amp;quot;/etc/udev/scripts/wheelcal.sh&amp;quot;&lt;br /&gt;
&lt;br /&gt;
LABEL=&amp;quot;joystick_end&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then the scripts called would be as follows:&lt;br /&gt;
*/etc/udev/scripts/joycal.sh:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
jscal-restore /dev/input/joystick&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*/etc/udev/scripts/wheelcal.sh&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
jscal-restore /dev/input/logiwheel&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now each time you plug/replug your joysticks/controllers they will get the persistent device names, and will get the correct calibration profile restored.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The calibration is even more comfortable using the program &amp;quot;jstest-gtk&amp;quot;, also available from most repositories. Starting this you are given a list of all attached joysticks with their device names. Pick the one you wish to inspect or calibrate and click 'Properties', then calibrate.  This calibration tool offers the possibility to fine-tune the calibration by editing the numbers. The program manipulates the same internals as jscal so you can use jscal to save the calibration information for later use, as before.&lt;br /&gt;
&lt;br /&gt;
=== Writing or editing joystick binding xml files ===&lt;br /&gt;
At this point, you have confirmed that the operating system and the joystick driver both recognize your joystick(s). You also know of several ways to identify the joystick “name” your joystick reports to the driver and operating system. You will need a written list of what control functions you wish to have assigned to which axis and button and the corresponding numbers. &lt;br /&gt;
&lt;br /&gt;
Make the following table from what you learned from js demo or jstest above (pencil and paper is fine). Here we assume there are 5 axes including 2 axes associated with the hat. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; bgcolor=&amp;quot;#EFEFEF&amp;quot; | Axis&lt;br /&gt;
! align=&amp;quot;center&amp;quot; bgcolor=&amp;quot;#EFEFEF&amp;quot; | Button&lt;br /&gt;
|- &lt;br /&gt;
|elevator = 0 &lt;br /&gt;
|view cycle = 0  &lt;br /&gt;
|- &lt;br /&gt;
|rudder = 1  &lt;br /&gt;
|all brakes = 1  &lt;br /&gt;
|- &lt;br /&gt;
|aileron = 2  &lt;br /&gt;
|up trim = 2  &lt;br /&gt;
|- &lt;br /&gt;
|throttle = 3  &lt;br /&gt;
|down trim = 3  &lt;br /&gt;
|-&lt;br /&gt;
|leftright hat = 4 &lt;br /&gt;
|extend flaps = 4 &lt;br /&gt;
|- &lt;br /&gt;
|foreaft hat = 5  &lt;br /&gt;
|retract flaps = 5 &lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|decrease RPM = 6 &lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|increase RPM = 7 &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
We will assume that our hypothetical joystick supplies the “name” QUICK STICK 3D USB to the system and driver. With all the examples included with FlightGear, the easiest way to get a so far unsupported joystick to be auto detected, is to edit an existing binding xml file. Look at the xml files in the sub-folders of '''/FlightGear/Input/Joysticks/'''. After evaluating several of the xml binding files supplied with FlightGear, we decide to edit the file &amp;lt;tt&amp;gt;[[$FG_ROOT]]/Input/Joysticks/Saitek/Cyborg-Gold-3d-USB.xml&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
This file has all the axes functions above assigned to axes and all the button functions above assigned to buttons. This makes our editing almost trivial. &lt;br /&gt;
&lt;br /&gt;
Before we begin to edit, we need to choose a name for our bindings xml file, create the folder for the QS joysticks, and copy the original xml file into this directory with this name. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ cd /usr/local/FlightGear/Input/Joysticks &lt;br /&gt;
$ mkdir QS &lt;br /&gt;
$ cd QS &lt;br /&gt;
$ cp /usr/local/FlightGear/Input/Joysticks/Saitek/ &lt;br /&gt;
Cyborg-Gold-3d-USB.xml QuickStick.xml &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here, we obviously have supposed a Linux/UNIX system with FlightGear being installed under '''/usr/local/FlightGear'''. For a similar procedure under Windows with FlightGear being installed under C:/Program Files/FlightGear, open a command shell and type &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;dos&amp;quot;&amp;gt;&lt;br /&gt;
C: &lt;br /&gt;
cd /Program Files/FlightGear/Input/Joysticks &lt;br /&gt;
mkdir QS &lt;br /&gt;
cd QS &lt;br /&gt;
copy /Program Files/FlightGear/Input/Joysticks/Saitek/ &lt;br /&gt;
Cyborg-Gold-3d-USB.xml QuickStick.xml &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, open QuickStick.xml with your favorite editor. Before we forget to change the joystick name, search for the line containing &amp;lt;name&amp;gt;. You should find the line &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;name&amp;gt;SAITEK CYBORG 3D USB&amp;lt;/name&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and change it to &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;name&amp;gt;QUICK STICK 3D USB&amp;lt;/name&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This line illustrates a key feature of xml statements. They begin with a &amp;lt;tag&amp;gt; and end with a &amp;lt;/tag&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
You can now compare your table to the comment table at the top of your file copy. Note that the comments tell us that the Saitek elevator was assigned to axis 1. Search for the string &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;axis n=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and change this to &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;axis n=&amp;quot;0&amp;quot;&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, note that the Saitek rudder was assigned to axis 2. Search for the string &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;axis n=&amp;quot;2&amp;quot;&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and change this to &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&amp;lt;axis n=&amp;quot;1&amp;quot;&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Continue comparing your table with the comment table for the Saitek and changing the axis numbers and button numbers accordingly. Since QUICKSTICK USB and the Saitek have the same number of axes but different number of buttons, you must delete the buttons left over. Just remember to double check that you have a closing tag for each opening tag or you will get an error using the file. &lt;br /&gt;
&lt;br /&gt;
Finally, be good to yourself (and others when you submit your new binding file to a FlightGear developers or users archive!), take the time to change the comment table in the edited file to match your changed axis and button assignments. The new comments should match the table you made from the js demo output. Save your edits. &lt;br /&gt;
&lt;br /&gt;
Several users have reported that the numbers of axes and buttons assigned to functions may be different with the same joystick under Windows and Linux. The above procedure should allow one to easily change a binding xml file created for a different operating system for use by their operating system.&lt;br /&gt;
&lt;br /&gt;
You can tell how FlightGear has interpretted your joystick setup by selecting &amp;lt;tt&amp;gt;Help &amp;gt; Joystick Configuration&amp;lt;/tt&amp;gt; from the menu.&lt;br /&gt;
&lt;br /&gt;
== Joystick support via .fgfsrc entries ==&lt;br /&gt;
Fortunately, there is a tool available now, which takes most of the burden from the average user who, maybe, is not that experienced with XML, the language which these files are written in. &lt;br /&gt;
&lt;br /&gt;
For configuring your joystick using this approach, open a command shell (command prompt under windows, to be found under Start|All programs|Accessories). Change to the directory &amp;lt;tt&amp;gt;[[$FG_ROOT]]/bin&amp;lt;/tt&amp;gt; via e.g. (modify to your path) &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;dos&amp;quot;&amp;gt;cd C:/Program Files/FlightGear/bin&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and invoke the tool fgjs via &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;./fgjs --fg-root=$FG_ROOT&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
on a UNIX/Linux machine, or via &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;dos&amp;quot;&amp;gt;fgjs --fg-root=$FG_ROOT&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
on a Windows machine. The program will tell you which joysticks, if any, were detected. Now follow the commands given on screen, i.eṁove the axis and press the buttons as required. Be careful, a minor touch already “counts” as a movement. Check the reports on screen. If you feel something went wrong, just re-start the program. &lt;br /&gt;
&lt;br /&gt;
After you are done with all the axis and switches, the directory above will hold a file called fgfsrc.js. If the FlightGear base directory FlightGear does not already contain an options file .fgfsrc (under UNIX)/system.fgfsrc (under Windows) mentioned above, just copy &lt;br /&gt;
&lt;br /&gt;
'''fgfsrc.js''' into '''.fgfsrc''' (UNIX)/'''system.fgfsrc''' (Windows) &lt;br /&gt;
&lt;br /&gt;
and place it into the directory FlightGear base directory FlightGear. In case you already wrote an options file, just open it as well as fgfsrc.js with an editor and copy the entries from fgfsrc.js into .fgfsrc/system.fgfsrc. One hint: The output of fgjs is UNIX formatted. As a result, Windows Editor may not display it the proper way. I suggest getting an editor being able to handle UNIX files as well, for example [https://notepad-plus-plus.org/ Notepad++]. &amp;lt;!-- My favorite freeware file editor for that purpose, although somewhat dated, is still PFE, to be obtained from http://www.lancs.ac.uk/people/cpaap/pfe/. --&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The the axis/button assignment of fgjs should, at least, get the axis assignments right, its output may need some tweaking. There may be axes moving the opposite way they should, the dead zones may be too small etc. For instance, I had to change &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
--prop:/input/joysticks/js[1]/axis[1]/binding/factor=-1.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
into &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
--prop:/input/joysticks/js[1]/axis[1]/binding/factor=1.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(USB CH Flightsim Yoke under Windows XP). Thus, here is a short introduction into the assignments of joystick properties. &lt;br /&gt;
&lt;br /&gt;
Basically, all axes settings are specified via lines having the following structure: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
--prop:/input/joysticks/js[n]/axis[m]/binding/command=property-scale &lt;br /&gt;
--prop:/input/joysticks/js[n]/axis[m]/binding/property=/controls/steering option&lt;br /&gt;
--prop:/input/joysticks/js[n]/axis[m]/binding/dead-band=db&lt;br /&gt;
--prop:/input/joysticks/js[n]/axis[m]/binding/offset=os&lt;br /&gt;
--prop:/input/joysticks/js[n]/axis[m]/binding/factor=fa&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
! align=&amp;quot;center&amp;quot; bgcolor=&amp;quot;#EFEFEF&amp;quot; | &lt;br /&gt;
! align=&amp;quot;center&amp;quot; bgcolor=&amp;quot;#EFEFEF&amp;quot; | &lt;br /&gt;
|- &lt;br /&gt;
|n&lt;br /&gt;
|number of device (usually starting with 0)  &lt;br /&gt;
|-&lt;br /&gt;
|m&lt;br /&gt;
|number of axis (usually starting with 0)&lt;br /&gt;
|-&lt;br /&gt;
|steering option&lt;br /&gt;
|elevator, aileron, rudder, throttle, mixture, pitch  &lt;br /&gt;
|-&lt;br /&gt;
|dead-band&lt;br /&gt;
|range, within which signals are discarded; useful to avoid jittering for minor yoke movements&lt;br /&gt;
|-&lt;br /&gt;
|offset&lt;br /&gt;
|specifies, if device not centered in its neutral position &lt;br /&gt;
|-&lt;br /&gt;
|factor&lt;br /&gt;
|controls sensitivity of that axis; defaults to +1, with a value of -1 reversing the behavior &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
You should be able to at least get your joystick working along these lines. Concerning all the finer points, for instance, getting the joystick buttons working, John Check has written a very useful README being included in the base package to be found under '''FlightGear/Docs/Readme/Joystick.html'''. In case of any trouble with your input device, it is highly recommended to have a look into this document.&lt;br /&gt;
&lt;br /&gt;
== More about programming joystick XML files ==&lt;br /&gt;
=== General tips ===&lt;br /&gt;
* When testing a new xml file it is best to start FlightGear via a command window (rather than the GUI interface). Any error messages will then be displayed in the terminal. Error messages will give both a message and a line number, helping you pinpoint any errors.&lt;br /&gt;
* Errors can be detected on initial startup or at runtime. Both types of errors will be displayed in the terminal.&lt;br /&gt;
* One of the most common errors is including a character that makes XML choke. Such characters include&amp;lt;br&amp;gt;&amp;amp; &amp;lt; --&amp;lt;br&amp;gt;These characters will cause problems even if simply included in comments or within scripts.&lt;br /&gt;
* If your scripts contain any of these characters, you have to enclose the scripts in &amp;lt;script&amp;gt;&amp;lt;![CDATA[...]]&amp;gt;&amp;lt;/script&amp;gt;. Alternatively, you can 'escape' the characters, ie &amp;quot;&amp;lt;&amp;quot; becomes &amp;quot;&amp;amp;amp;lt;&amp;quot;.&lt;br /&gt;
* You can reload your edited joystick file without restarting FlightGear by selecting &amp;quot;Debug&amp;quot; &amp;amp;gt; &amp;quot;Reload Input&amp;quot; from the main simulator window.&lt;br /&gt;
* You can find many examples of different ways to program joysticks simply by examining the joystick xml files that are packaged with FlightGear. See the directory FlightGear/data/input/joysticks&lt;br /&gt;
* Many advanced functions can be programmed using the Nasal scripting language. These scripts are enclosed in &amp;lt;script&amp;gt;&amp;lt;/script&amp;gt; tags in the XML file. Helpful:&lt;br /&gt;
** A guide to the [[Nasal scripting language]] in FlightGear &lt;br /&gt;
** [[Nasal FAQ]]&lt;br /&gt;
** [[Howto: Write simple scripts in Nasal]]&lt;br /&gt;
* You can explore the internal property tree to see many variables that can be altered using joystick buttons or axes (File/Browse Internal Properties)&lt;br /&gt;
* You can test bits of Nasal code and do some other useful things using the Nasal Console (Debug/Nasal Console).&lt;br /&gt;
* All Nasal code shares a common namespace, so it's possible to set a variable in one nasal binding, and to read it in another.&lt;br /&gt;
&lt;br /&gt;
=== Useful hints for scripts ===&lt;br /&gt;
Some particularly useful ideas for programming scripts within joystick XML files:&lt;br /&gt;
* getprop and setprop can be used for getting &amp;amp; setting properties from the internal properties tree:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
var brake = !getprop(&amp;quot;/controls/gear/brake-parking&amp;quot;);&lt;br /&gt;
setprop(&amp;quot;/controls/gear/brake-parking&amp;quot;, brake);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* You can also make your own values on the property tree:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
setprop(&amp;quot;/input/joysticks/js[0]/myjoystick-modifier&amp;quot;, 1);&lt;br /&gt;
var mod = getprop(&amp;quot;/input/joysticks/js[0]/myjoystick-modifier&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* You can print to terminal using the print function. This is very useful for debugging.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Just&amp;quot;, &amp;quot; a &amp;quot;, &amp;quot;test&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* You can display info in FlightGear via a popup. This is useful for giving the user feedback about changes that may not be obvious via the panel. It can also be useful for debugging. Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
gui.popupTip(&amp;quot;Parking Brake ON&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Arguments for gui.popupTip must be strings, so if you want to display other types of variables they should be formatted with something like sprintf:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
gui.popupTip(sprintf(&amp;quot;Elevator trim: %d&amp;quot;, 100 * getprop(&amp;quot;/controls/flight/elevator-trim&amp;quot;)));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
thv = getprop(&amp;quot;/controls/engines/engine[0]/mixture&amp;quot;);&lt;br /&gt;
gui.popupTip(&amp;quot;Thrust vector &amp;quot; ~ int(thv * 120 - 20));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* You can just start using variables, ie,&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
x = 10;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But [http://wiki.flightgear.org/index.php/Nasal_scripting_language#Variables for various reasons] it is generally better to declare variables with the &amp;quot;var&amp;quot; statement:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
var x = 10;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that &amp;quot;var&amp;quot; creates variables that are local in scope, but since all bindings for a joystick share the same scope, it will be seen across each script in the joystick file.&lt;br /&gt;
&lt;br /&gt;
* You can include a section of script that runs on startup to initialize variables, create functions, etc. Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
  &amp;lt;name type=&amp;quot;string&amp;quot;&amp;gt;My joystick name&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;name type=&amp;quot;string&amp;quot;&amp;gt;My joystick name #2&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;nasal&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
       #initialize variables&lt;br /&gt;
       f1 = f2 = 0;&lt;br /&gt;
       left_brake = right_brake = 0;&lt;br /&gt;
       # create a function to be used with all buttons&lt;br /&gt;
       getmod = func { getprop(&amp;quot;/input/joysticks/js[0]/t-flight-hotas-x-modifier&amp;quot; ) }&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/nasal&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Sample code for firing weapons with the joystick is found on the [[Gun Effects]] page.&lt;br /&gt;
&lt;br /&gt;
== Related content ==&lt;br /&gt;
{{Forum|24|Hardware}}&lt;br /&gt;
* [[Head tracking]]&lt;br /&gt;
* [[Joystick xml library]] &lt;br /&gt;
* [[Force feedback]]&lt;br /&gt;
* [[Troubleshooting input devices]]&lt;br /&gt;
* [[Writing Joystick Code: Part 1]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* [http://www.flightgear.org/Docs/getstart/getstartch3.html#x8-360003.6 The FlightGear Manual]&lt;br /&gt;
* [http://sourceforge.net/projects/hapticsforfg/ Force Feedback]&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Joysticks and Yokes]]&lt;br /&gt;
&lt;br /&gt;
[[de:Joystick]]&lt;br /&gt;
[[es:Joystick]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Gimbal_Project&amp;diff=102446</id>
		<title>Gimbal Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Gimbal_Project&amp;diff=102446"/>
		<updated>2016-07-29T12:26:44Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: Category:Joysticks and Yokes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back in May 2009 I had spent some time tossing ideas back and forth with a nice gent by the name of Jentron on the #flightgear [[IRC|IRC channel]] (irc.flightgear.org). We were discussing the various methods that could be used to create a very inexpensive gimbal assembly for pitch &amp;amp; roll control in a home built flight simulator [[cockpit]].&lt;br /&gt;
&lt;br /&gt;
This is what Jentron developed:&lt;br /&gt;
&lt;br /&gt;
[[File:jentron_original.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
As you can see, it's very simple and uses easily obtainable off the shelf hardware. In fact, this particular example was built entirely from the resources of his local Ace Hardware.&lt;br /&gt;
&lt;br /&gt;
I've named his original gimbal design the &amp;quot;Mark I&amp;quot; to differentiate it from the design I'm using - but they're both built from essentially the same components.&lt;br /&gt;
&lt;br /&gt;
Here is what I call the Jentron Gimbal, Mk II:&lt;br /&gt;
&lt;br /&gt;
[[File:jentron_mk2-1.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
As you can see, the design elements from the Mk I design are present here with a couple notable changes:&lt;br /&gt;
* The pitch axis bearings are two separate components.&lt;br /&gt;
* Simpler interconnect for the pitch axis centering arm - no need for a hand-fabricated pitch arm.&lt;br /&gt;
* Reduced part count&lt;br /&gt;
&lt;br /&gt;
Jentron's design is perfectly usable in it's configuration, but I needed to modify it for use with the DIY Cockpit Project.&amp;lt;br&amp;gt;Besides, I'm a geek and no self respecting geek can resist fiddling with things. :)&lt;br /&gt;
&lt;br /&gt;
Below is instructions on how you can construct this gimbal for use in your cockpit!&lt;br /&gt;
&lt;br /&gt;
== Building instructions ==&lt;br /&gt;
&lt;br /&gt;
Here's information on how my version of the Jentron Gimbal Mk II was built and how you can build your own.&lt;br /&gt;
&lt;br /&gt;
One important thing to note - the gimbal is designed to be mounted underneath the cockpit floor. This is what it looks like from above, in the &amp;quot;operating&amp;quot; position:&lt;br /&gt;
&lt;br /&gt;
[[file:jentron_mk2-3.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
This article will only cover the ins and outs of the gimbal itself. The reason for this is that your application may be a bit different and you'll need to adjust other parts of the design to fit your situation.&lt;br /&gt;
&lt;br /&gt;
Two &amp;quot;fancy&amp;quot; tools are going to be required to build this project.&lt;br /&gt;
* 1 Step Drill. This is used to enlarge the end holes in the single-gang extender box.&lt;br /&gt;
* 1/4&amp;quot; Die. This is used for threading the ends of the centering push-rods.&lt;br /&gt;
&lt;br /&gt;
A cheap 1&amp;quot; Step Drill can be had for less than $30. In case you're not sure, a step drill looks like this:&lt;br /&gt;
&lt;br /&gt;
[[file:step_drill.jpg]]&lt;br /&gt;
&lt;br /&gt;
Here's a list of some other common tools you're going to need:&lt;br /&gt;
* Hacksaw -or- a pipe cutter. Pipe cutters work better for cutting EMT.&lt;br /&gt;
* Drill&lt;br /&gt;
* Drill Bits - 1/4&amp;quot; and 13/64&amp;quot;&lt;br /&gt;
* Pop-Rivet gun&lt;br /&gt;
* Jig Saw, Band Saw or a Scroll Saw&lt;br /&gt;
* Two 7/16&amp;quot; open end wrenches&lt;br /&gt;
* 3/8&amp;quot; open end wrench&lt;br /&gt;
* Philips screwdriver&lt;br /&gt;
* Vice Grips (2 pair if you can)&lt;br /&gt;
* Vice or vice-like device&lt;br /&gt;
&lt;br /&gt;
Materials needed to build the gimbal box:&lt;br /&gt;
* 1 each single-gang electrical extension box&lt;br /&gt;
[[file:single-gang_box.jpg]]&lt;br /&gt;
* 2 each 3/4&amp;quot; EMT connectors&lt;br /&gt;
[[file:emt_connector.jpg]]&lt;br /&gt;
* 2 each 3&amp;quot; &amp;quot;T&amp;quot; Brackets&lt;br /&gt;
[[file:t-bracket.jpg]]&lt;br /&gt;
* 4 each 3/16&amp;quot; Pop-Rivets&lt;br /&gt;
[[file:pop-rivet.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now the first thing you're going to need to do is pop out all the knock-outs in the electrical box and then drill out the ends using the 1&amp;quot; Step Drill. The hole needs to be large enough to accept the threaded portion of the 3/4&amp;quot; EMT connector. When you're done, the box should look like this:&lt;br /&gt;
&lt;br /&gt;
[[file:prepped_box.jpg]]&lt;br /&gt;
&lt;br /&gt;
Next up, you're going to have to use your vice grips (2 pair if you have them!) to position the 3&amp;quot; &amp;quot;T&amp;quot; bracket on the side of the extension box. The best way to do this is to measure 1-1/2&amp;quot; in from the end of the &amp;quot;top&amp;quot; of the T brace and draw a centering line. Measure the electrical box along its long axis and mark the center of it. The centering lines ensure that you'll correctly position the &amp;quot;T&amp;quot; bracket on the side of the box.&lt;br /&gt;
&lt;br /&gt;
Position the box and T-Bracket like this:&lt;br /&gt;
&lt;br /&gt;
[[file:t-bracket_position.jpg]]&lt;br /&gt;
&lt;br /&gt;
With the vice grip(s) holding the t-bracket in place, put the box in a vice to hold it down. You're going to use a 1/4&amp;quot; drill bit to drill holes in the extension box, using the bracket as a guide. Do this for both brackets. When you've got all four holes drilled, go ahead and pop-rivet them in place - please be careful to make sure that both brackets are lined up with one another. The portion of the bracket that sticks out will be the support for the stick stub. It's got to be as close perfect as you can make it. In the end, you should have something that looks like this:&lt;br /&gt;
&lt;br /&gt;
[[file:both_brackets_mounted.jpg]]&lt;br /&gt;
&lt;br /&gt;
You'll notice in my drawing that I'm using screws to hold the brackets in. This was done because I didn't want to take the time to draw a reasonable looking pop rivet. :)&lt;br /&gt;
&lt;br /&gt;
The last step is to mount the 3/4&amp;quot; EMT fittings. These hold 3&amp;quot; sections of 3/4&amp;quot; EMT conduit that act as the pitch bearings for the box. It's important to get these as tight as you can. They'll take all the force of the stick moving fore and aft. I recommend using a pair of Channel-Lock pliers and a vice to make sure those fittings are as tight as you can make them. &lt;br /&gt;
&lt;br /&gt;
If you're paranoid and have a welder, it couldn't hurt it to weld them in place. &lt;br /&gt;
&lt;br /&gt;
With it all assembled, it should look like this:&lt;br /&gt;
&lt;br /&gt;
[[file:complete_gimbal_box.jpg]]&lt;br /&gt;
&lt;br /&gt;
I didn't include the nuts that go to the EMT connectors on purpose. They MUST be used. :)&lt;br /&gt;
&lt;br /&gt;
Here's an exploded diagram that shows you how it all goes together:&lt;br /&gt;
&lt;br /&gt;
[[file:gimbal_box_exploded.jpg]]&lt;br /&gt;
&lt;br /&gt;
The last part of this assembly is the stick stub. The stick stub is made from a 7&amp;quot; long piece of 3/4&amp;quot; EMT that has had two holes and a notch cut in the bottom. A PDF file of the part drawing is available: [[media:stick_stub.pdf]] &lt;br /&gt;
&lt;br /&gt;
The completed stick stub should look like this:&lt;br /&gt;
&lt;br /&gt;
[[file:stick_stub.png|400px]]&lt;br /&gt;
&lt;br /&gt;
The stick stub is just that - a stub. Your flight grip and lower stick or &amp;quot;stick box&amp;quot; will attach to this using another 3/4&amp;quot; EMT mating connector. The stick stub also provides the mechanical interconnect for the roll and pitch axes.&lt;br /&gt;
&lt;br /&gt;
The next part is the roll axis actuator rod. This is just a fancy name for a 6.75&amp;quot; long bit of 1/4&amp;quot; steel rod that you've flatted on one end and threaded on the other. It looks like this:&lt;br /&gt;
&lt;br /&gt;
[[file:roll_axis_acutator_rod.png|400px]]&lt;br /&gt;
&lt;br /&gt;
[[medial:roll_axis_actuator_rod.pdf]]Here is a PDF file that shows the details of making the rod. The hole is sized for a #10 screw. When installed, it looks like this:&lt;br /&gt;
&lt;br /&gt;
[[file:roll_actuator_installed.png|400px]]&lt;br /&gt;
&lt;br /&gt;
The screw is not shown. The attachment will take bit of experimenting with to get it centered in the stick stub. You want a #10 screw that's about 1-1/4&amp;quot; long You'll use a &amp;quot;stop-nut&amp;quot; which is basically a regular nut with a nylon ring pressed into the top. The idea is to allow you to tighten the screw down enough to take the slop out, but not enough to bind up the mechanism. Stop-nuts allow this - the nylon ring ensures that they won't loosen over time.&lt;br /&gt;
&lt;br /&gt;
[[file:roll_axis_pushrod_connection.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
To center the rod in the stick stub, you'll need to get two #10 nylon washers and a few #10 zinc washers. Place the nylon washers on the &amp;quot;outside&amp;quot; of the stack. They'll be the washers that will rub on the inside of the stick stub. The nylon won't produce the noise that a metal washer would when rubbing against the inside wall of the stick stub. Take the metal washers and stack them on either side of the rod until you've got the right number on each side that gives the closest to center fit.&lt;br /&gt;
&lt;br /&gt;
The clevis fork is made by taking a 1/4&amp;quot; extruded aluminum turnbuckle and cutting off the left-hand threaded end. You then drill a hole that's the appropriate size for the bolt you're going to use. In my case the holes were drilled for 1/4&amp;quot; and #10 bolts (not on the same clevis).&lt;br /&gt;
&lt;br /&gt;
[[file:clevis_fork.png|400px]]&lt;br /&gt;
&lt;br /&gt;
Next up, making the wooden bearing blocks for the gimbal... First, you're going to need to download the drawing for the bearing parts.&lt;br /&gt;
&lt;br /&gt;
[[media:pitch%20axis%20bearing%20drawing.dxf]] pitch axis bearing drawing.dxf&lt;br /&gt;
&lt;br /&gt;
- This drawing was saved in AutoCAD 2004 DXF format. You shouldn't have any problems reading it using any of the freely available CAD programs, you can download a PDF of the plan [[media:pitch%20axis%20bearing%20drawing.pdf]]. The drawing will print full size on a single 11x17 sheet. The blocks are made from 5/8&amp;quot; Birch plywood. However, any good quality 5/8&amp;quot; (or close) plywood will work.&lt;br /&gt;
&lt;br /&gt;
Please take your time cutting out the bearing blocks. Here are some recommendations that should help you get a more accurate &lt;br /&gt;
result:&lt;br /&gt;
&lt;br /&gt;
* When drilling the three mounting holes in the bearing base, it would be a good idea to drill both parts at the same time to ensure that the holes are placed identically in both parts. The bearings must be square and aligned to one another or the pitch axis bearing shaft will bind.&lt;br /&gt;
* When creating the parts with the bearing holes in them, it is far safer and more accurate to drill all the small holes and the two large holes&amp;lt;em&amp;gt;before &amp;lt;/em&amp;gt;you cut the parts to shape. Trust me, you don't want to be boring a near 1&amp;quot; diameter hole in a part with nearly no material to hang on to while the drill does its job. :)&lt;br /&gt;
* The large bearing holes are specified at .95&amp;quot;. The easiest way to reach that size is to use a 7/8&amp;quot; Forstner or Spade bit. This will get you to .875&amp;quot; The remainder can be sanded away with a small drum sander in a drill or a drill press. The idea is to get the size of the holes to the point where they're just a little bit loose around the 3/4&amp;quot; EMT conduit that makes up the pitch axis bearing. Make sure that when you're sanding the parts to shape, you do them in assembled pairs.&lt;br /&gt;
* If you'd rather not sand the holes to size, you can still get good results by boring a 1&amp;quot; diameter hole instead of a .95&amp;quot; hole. The fit will only be a tiny bit looser than what I've specified and it won't affect how the gimbal operates.&lt;br /&gt;
&lt;br /&gt;
Here is an exploded illustration that shows you how the pitch axis bearings are assembled:&lt;br /&gt;
&lt;br /&gt;
[[file:pab_exploded.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
The bearing is assembled using three 1-3/4&amp;quot; #10 pan head screws and three #10 nylon ringed stop-nuts. It's important that you don't use any washers on this because the washers will actually rub on the bearing shaft when it's installed. The base is attached using two 1-1/2&amp;quot; #8 flat head wood screws. You should countersink the holes for them as shown in the model above.&lt;br /&gt;
&lt;br /&gt;
Now that you've got the bearing blocks made, you're going to need to lay out the position of them on the base plate. This spacing will vary, but generally a distance of about 6-1/4&amp;quot; should be sufficient. When you do your bearing block layout, you'll also want to mark out the space needed to allow the gimbal box to protrude up through the cockpit floor. In my version I'm using a hole that's 5-1/2&amp;quot; wide and 5-1/4&amp;quot; high.&lt;br /&gt;
&lt;br /&gt;
You'll now want to make the pitch axis bearings. They consist of two short lengths of 3/4&amp;quot; EMT conduit cut to a length that will allow them to fully seat in the EMT mating connectors on the gimbal box and extend at least two inches on the pitch actuator side and about 1/2&amp;quot; on the roll axis actuator side. Below are examples that show you roughly how it should look. Pitch axis connection end:&lt;br /&gt;
&lt;br /&gt;
[[file:pitch_axis_bearing_detail.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
You'll note here how the centering rod for the pitch axis is mounted to the bearing. I'm using a #8 eye bolt that has a locknut on both sides to hold it in place. I chose a #8 because the eye is perfectly sized for a 1/4&amp;quot; bolt. You can also just barely see the Du-Bro ball-link that I'm using to connect the pitch axis to the potentiometer that connects to the computer. The ball-links are very inexpensive and very handy to use. The ones I chose are threaded and have a long enough reach for them to be able to pass through the side of the clevis fork. You can see the nut for the ball on the inside.&lt;br /&gt;
&lt;br /&gt;
Roll axis connection end:&lt;br /&gt;
&lt;br /&gt;
[[file:roll_axis_pushrod_and_center_interconnect.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
Here you can see why the roll axis side of the pitch axis bearing needs to be so short. When you move the stick to the far left, the back end of the clevis fork can't come in contact with the bearing tube.&lt;br /&gt;
&lt;br /&gt;
You can also see the roll axis potentiometer connection. Just like on the pitch axis, I'm using a Du-Bro ball-link on the clevis end, and a Du-Bro E/Z Connector on the potentiometer end. This is a very simple and very reliable way to connect your axis pots to your stick gimbal. The last component I'm going to cover is the centering mechanism. The centering mech is very simple. It consists of a 1/4&amp;quot; steel rod that's been threaded on one end, a clevis fork made from a turnbuckle, a pair of springs and some locking collars.&lt;br /&gt;
&lt;br /&gt;
In my design the steel rod is 10&amp;quot; long. Your application may and probably will vary. Here's a picture of the assembly:&lt;br /&gt;
&lt;br /&gt;
[[file:roll_axis_centering_and_pot.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
As you can see, the whole thing is very simple. A 1x1 L bracket is bolted in place and has a 5/16&amp;quot; hole to allow the rod to pass through it. &lt;br /&gt;
&lt;br /&gt;
A collar on either end holds the spring in place. The springs are compressed against the center bracket just slightly. This provides good centering force for the gimbal.&lt;br /&gt;
&lt;br /&gt;
One option you may want to consider is using two spring pairs. If you stack a lighter spring atop a heavier spring, your gimbal will have light force around the center and it will increase as you move the controls. This happens because small movements around the center only compress the light spring, while movements toward the travel ranges compresses both the light and heavy springs.&lt;br /&gt;
&lt;br /&gt;
That's really all there is to it! Below you'll find various pictures of the assembly that will help out in building your own. &lt;br /&gt;
&lt;br /&gt;
[[file:roll_axis_pushrod_and_center_interconnect-2.jpg|400px]] [[file:pitch_axis_pushrod_and_pot.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[file:pitch_axis_pushrod_and_pot-2.jpg|400px]] [[file:pitch_axis_bearing_detail.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[file:pitch_axis_bearing_detail-2.jpg|400px]] [[file:gimbal_box_detail.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[file:roll_axis_pushrod_connection-2.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware|Gimbal Build a simple pitch &amp;amp; roll gimbal]]&lt;br /&gt;
[[Category:Howto|Gimbal Build a simple pitch &amp;amp; roll gimbal]]&lt;br /&gt;
[[Category:Joysticks and Yokes]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Force_feedback&amp;diff=102445</id>
		<title>Force feedback</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Force_feedback&amp;diff=102445"/>
		<updated>2016-07-29T12:25:08Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: Category:Joysticks and Yokes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Development of '''force feedback''' (also called haptic) support for [[FlightGear]] started in December 2011.&lt;br /&gt;
&lt;br /&gt;
==Repository==&lt;br /&gt;
The development is currently happening at {{gitorious source|proj=fg-haptic|repo=fg-haptic|text=FG-Haptic on Gitorious}}. It is tested on Linux only, as the author (Zan) has no build environment on Windows. Testers wanted!&lt;br /&gt;
&lt;br /&gt;
No built modules yet available. Only source code and nasal/xml scripts. Requires SDL 2.0 to function (might also work with 1.3 or later, but is tested with 2.0).&lt;br /&gt;
&lt;br /&gt;
==Installation and how to use==&lt;br /&gt;
===Building===&lt;br /&gt;
# You need to have SDL 2.0 development libraries installed&lt;br /&gt;
# Edit Makefile for the library paths if necessary&lt;br /&gt;
# Type '''make''' and it should build&lt;br /&gt;
# Done&lt;br /&gt;
&lt;br /&gt;
===Installation===&lt;br /&gt;
# Copy '''ff-protocol.xml''' to '''Protocols/''' in FG data directory.&lt;br /&gt;
# Copy '''force-feedback.nas''' to '''Nasal/''' in FG data directory.&lt;br /&gt;
# Copy '''force-feedback.xml''' to '''gui/dialogs/''' in FG data directory.&lt;br /&gt;
&lt;br /&gt;
===Using===&lt;br /&gt;
# Run '''fg-haptic''' or '''fg-haptic.exe'''&lt;br /&gt;
# Launch flightgear with following command line: '''fgfs --telnet=5401 --generic=socket,out,20,localhost,5402,tcp,ff-protocol'''&lt;br /&gt;
# If menu bar is not visible, press '''F10'''&lt;br /&gt;
# In flightgear's '''Help-&amp;gt;Force feedback options''' you can configure force settings&lt;br /&gt;
# Enjoy&lt;br /&gt;
&lt;br /&gt;
==Features==&lt;br /&gt;
[[File:Fgfs-haptic-settings.png|thumb|270px|The options dialog.]]&lt;br /&gt;
===General features===&lt;br /&gt;
* In-sim options dialog&lt;br /&gt;
* Support for multiple devices simultaneously&lt;br /&gt;
* Devices do not need to be the same ones that are used as inputs&lt;br /&gt;
* Devices can have different effects applied on them&lt;br /&gt;
* Add-on, can be installed on older FlightGear versions too&lt;br /&gt;
&lt;br /&gt;
===Effects===&lt;br /&gt;
* Stick shaker when about to stall&lt;br /&gt;
* Stick pusher&lt;br /&gt;
* Control surface forces ([[JSBSim]] support, no [[YASim]] or others yet, but to be done)&lt;br /&gt;
* Pilot G forces&lt;br /&gt;
&lt;br /&gt;
==Technical details==&lt;br /&gt;
===System description===&lt;br /&gt;
Fg-haptic uses two communication methods with FG; telnet and general protocol. Telnet is used to send force-feedback device info to FG during intialisation, and later on it is used to fetch device configuration. General protocol is used to send force details from FG (one way communication). Telnet is quite slow, update of device configuration may take up to 10 seconds, while general protocol sends data currently 20 times per second.&lt;br /&gt;
&lt;br /&gt;
All properties used by fg-haptic currently reside under '''/haptic/'''. All effects are directly under that (like '''stick-force/''') and each device is below '''/haptic/device[X]/''', showing device info and configuration. &lt;br /&gt;
&lt;br /&gt;
Generic protocol, '''ff-protocol''', uses following format:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;reconfigure_request|aileron|elevator|rudder|pilot_x|pilot_y|pilot_z|stick_shaker_trigger|ground_rumble_period&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Force calculations===&lt;br /&gt;
Stick forces are based on the following equation, which represents force caused by air flowing towards a surface:&amp;lt;br /&amp;gt;&lt;br /&gt;
'''F=0.5*airspeed^2*density*area*Cd''', where Cd is drag coefficient and area is perpendicular to airflow.&lt;br /&gt;
&lt;br /&gt;
Since the surfaces can turn, the effective area is:&amp;lt;br /&amp;gt;&lt;br /&gt;
'''effective_area=area*sin(angle)''', where angle is the deflection angle, and it should take angle of attack into account:&amp;lt;br /&amp;gt;&lt;br /&gt;
'''angle=deflection_angle-AoA''', since that is the real direction of air flow with relation to the surface. For rudder, we use slip angle instead of AoA.&lt;br /&gt;
&lt;br /&gt;
Also slip may be taken into account, if the air flows from side, it has less effect on the surface, thus giving:&amp;lt;br /&amp;gt;&lt;br /&gt;
'''effective_area_2=effective_area*(1-sin(slip_angle))'''.&lt;br /&gt;
&lt;br /&gt;
Another thing we take into account is stall and deep stall. If AoA is over the stall limit, or over deep stall limit, forces acting on elevator and aileron are quickly ramped to zero, representing separated airflow.&lt;br /&gt;
&lt;br /&gt;
In this implementation, multiplication by 0.5, Cd and area are combined to a single coefficient for aileron, elevator and rudder, that are aircraft specific. Coefficients should be set so that the force does not exceed 1.0 (maximum value) in normal operation, and they can also be set to 0 or other value to represent fly-by-wire systems. Also slip coefficients can be defined to fine tune the stick feeling. A good starting value to try for each coefficient is:&amp;lt;br /&amp;gt;&lt;br /&gt;
'''coeff=1.0/((Vne^2)*sin(max_deflection)*0.00257)''', where Vne is the maximum (never exceed) speed in knots, max deflection is the maximum deflection of the control surface and 0.00257 is standard air density (slugs/ft3). This value can then be fine tuned.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Force feedback===&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
* {{gitorious source|proj=fg-haptic|repo=fg-haptic|text=Official FG-Haptic repository}} (Gitorious)&lt;br /&gt;
* [http://sourceforge.net/projects/hapticsforfg/ hapticsforfg] (SourceForge)&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Joysticks and Yokes]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Changing_repeat_rate_of_joystick_buttons&amp;diff=102444</id>
		<title>Changing repeat rate of joystick buttons</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Changing_repeat_rate_of_joystick_buttons&amp;diff=102444"/>
		<updated>2016-07-29T12:24:22Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: Category:Joysticks and Yokes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
If you are new to writing Nasal functions for joysticks, read [[Using a Nasal file with a joystick]] first.&lt;br /&gt;
&lt;br /&gt;
==  Background ==&lt;br /&gt;
&lt;br /&gt;
Sometimes the repeat rate of joystick buttons is too high. The value changes so fast that you can't set it accurately. In your joystick xml file you could use&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;desc&amp;gt;whatever&amp;lt;/desc&amp;gt;&lt;br /&gt;
  &amp;lt;interval-sec&amp;gt;x.xx&amp;lt;/interval-sec&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where x.xx is the time between button action repeats. This has the problem that the delay is implemented at the start of the button press, as well as between repeats. It is also not as versatile as using this method.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Changes (additions) to the Nasal file ==&lt;br /&gt;
&lt;br /&gt;
You must have set up everything according to [[Using a Nasal file with a joystick]] so that your joystick button calls a routine in a Nasal file, as per the next paragraph.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Assume that the button in question is labelled &amp;quot;C&amp;quot;. The property we want to change with the button is '''/mythical/telescope-colour'''. Our nas file is called mynasfile.nas. We will use a flag called busyTelescope to control the repeat rate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Start off by adding the function for the button&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
  var buttonC = func {&lt;br /&gt;
        if (getprop(&amp;quot;/busyTelescope&amp;quot;)) return;&lt;br /&gt;
  &lt;br /&gt;
        setprop(&amp;quot;/busyTelescope&amp;quot;, 1);&lt;br /&gt;
  &lt;br /&gt;
        # ... Your code to adjust telescope property goes here  ..&lt;br /&gt;
    &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now when the button is pressed the busy flag will be set, the code will be called. As soon as FG repeats the button, the set state of the busy flag will make the routine return. So far so good.&lt;br /&gt;
&lt;br /&gt;
We still need to create the busy flag, set the repeat rate we want, and clear the busy flag between (our) repeats.&lt;br /&gt;
&lt;br /&gt;
At the top of the nas file add&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
  var buttonRate = 0.1;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This is the number of seconds we want ''between'' repeats. In this case it is 100 milliseconds.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Then we need to create the busy flag. This must be done in an init routine. Add to the init routine&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
  props.globals.getNode(&amp;quot;/busyTelescope&amp;quot;, 1);&lt;br /&gt;
  setprop(&amp;quot;/busyTelescope&amp;quot;, 0);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
We now have the flag, and it is cleared.&lt;br /&gt;
&lt;br /&gt;
We still need to clear it at our required repeat rate. Add to the init routine&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
  setlistener(&amp;quot;/busyTelescopy&amp;quot;, func &lt;br /&gt;
  { &lt;br /&gt;
   if (getprop(&amp;quot;/mythical/busyTelescope&amp;quot;)) &lt;br /&gt;
    settimer(busyTelescopeClear, buttonRate, 1); &lt;br /&gt;
  } #end of anonymous function&lt;br /&gt;
); #end of setlistener&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and add this function&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
  var busyTelescopeClear = func {&lt;br /&gt;
        setprop(&amp;quot;/busyTelescope&amp;quot;, 0);&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now, whenever the button is pressed, the flag gets set. The listener detects this and starts a timer, with delay buttonRate. When the delay elapses, busyTelescopeClear is called, which clears the flag, and the button will repeat.&lt;br /&gt;
&lt;br /&gt;
We now can control the repeat rate of the button.&lt;br /&gt;
&lt;br /&gt;
==  Making the code safe ==&lt;br /&gt;
To avoid the busy flag possibly getting stuck in the true state, make the mod-up of your joystick call ''mynasfile.buttonCUp()''.&lt;br /&gt;
&lt;br /&gt;
Then add this to the nas file&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
  var buttonCUp = func {&lt;br /&gt;
        busyTelescopeClear();&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  Other uses  ==&lt;br /&gt;
It is of course possible to use this technique for adding a delay in any nasal code, with appropriate changes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Joysticks and Yokes]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Using_a_Nasal_file_with_a_joystick&amp;diff=102443</id>
		<title>Using a Nasal file with a joystick</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Using_a_Nasal_file_with_a_joystick&amp;diff=102443"/>
		<updated>2016-07-29T12:23:08Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: Category:Joysticks and Yokes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Sometimes the code for a button is quite complicated. Not only does it make your xml file larger and more difficult to go through, but writing the code in a dedicated Nasal file cane be a lot easier. There are things which are just easier that way. You may also have come across an example in the forums which you want to use, and you don't know how to do it.&lt;br /&gt;
&lt;br /&gt;
Whatever your reason for using a Nasal file, this is how to implement the Nasal file approach. Part 2, expands the idea and shows you just why it is easier.&lt;br /&gt;
&lt;br /&gt;
==  Getting Started ==&lt;br /&gt;
&lt;br /&gt;
You are going to put your Nasal file in the same folder as your joystick's xml file. You need to choose a suitable name for the file. If your joystick is a KungFu ABC123 you could safely name the file abc123.nas. If, however, you have a Saitek yoke, you don't want to name the file yoke.nas, because in the Saitek folder is a Pro Flight Yoke and a Cessna Yoke, so you want to be more specific. Call the file cessnayoke.nas or proflightyoke.nas'&lt;br /&gt;
&lt;br /&gt;
The name you choose is visible ''everywhere'' in FG, so make sure you choose something unique.&lt;br /&gt;
&lt;br /&gt;
Notice that there are no capital letters.&lt;br /&gt;
&lt;br /&gt;
So open up your favourite text-editor, create a new file, and save it in your joystick's folder with the chosen filename. Don't forget that the extension must be .nas, and make sure your editor doesn't make it .nas.txt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Changes to your joystick's xml file  ==&lt;br /&gt;
&lt;br /&gt;
'''Save a copy of your xml file in a safe place, one that you will remember.'''&lt;br /&gt;
&lt;br /&gt;
For the sake of this exercise we will assume that you have a KungFu ABC123 joystick. So your nasal file is abc123.nas. &lt;br /&gt;
&lt;br /&gt;
Open the xml file.&lt;br /&gt;
&lt;br /&gt;
At the top, just after all the &amp;lt;name&amp;gt; entries, add this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;nasal&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
      ## begin of custom section&lt;br /&gt;
      var modulename = &amp;quot;abc123&amp;quot;; # customize this according to the namespace used&lt;br /&gt;
      var module_path = &amp;quot;/Input/Joysticks/KungFu/abc123.nas&amp;quot;; # customize this according to the file name/path&lt;br /&gt;
      ## end of custom section&lt;br /&gt;
&lt;br /&gt;
      var is_loaded = func (name) contains(globals,name);&lt;br /&gt;
&lt;br /&gt;
      if (!is_loaded(modulename)) {&lt;br /&gt;
        io.load_nasal(getprop(&amp;quot;/sim/fg-root&amp;quot;) ~ module_path);&lt;br /&gt;
      }&lt;br /&gt;
  &lt;br /&gt;
      abc123.initABC123(); # customize init routine&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/nasal&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ''if (!contains...'' bit (if not contains) makes sure that the nas file is loaded only once.&lt;br /&gt;
&lt;br /&gt;
The ''abc123.initABC123'' cals an initialise routine in the nas file. We haven't created it yet. Notice the ''abc123''. This tells FG which nas file to use. The ''initABC123'' is which routine in that nas file to call. The ''()'' is because it is a function.&lt;br /&gt;
&lt;br /&gt;
Save your xml file and open the nas file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Adding routines to the nas file  ==&lt;br /&gt;
&lt;br /&gt;
We have just told the xml file to call initABC123, so we better add it to the nas file.&lt;br /&gt;
&lt;br /&gt;
At the top of the file add&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
  var initABC123 = func() {&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Every new thing in Nasal starts with '''var'''. That is followed by its name (initABC123). Then we must assign it to something. In this case it is a function, so we write '''= func()'''. If you want to pass a value to the function (we aren't here), you give a name to the value between the brackets, and place the value to pass between the brackets in the xml file. The '''{''' and '''}''' mark the start and end of the function (what it does.) It doesn't currently do anything, so there is nothing between them.&lt;br /&gt;
&lt;br /&gt;
Now we need to make at least one button call a function in the nas file. Let's assume you have a button labelled D on your joystick. So we will have a function called buttonD. If it is the only red button, you could call the function redButton.&lt;br /&gt;
&lt;br /&gt;
So we add&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
  var buttonD = func() {&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once again, it doesn't do anything yet.&lt;br /&gt;
&lt;br /&gt;
Save the nas file and open the xml file. Go to where the D button is handled.&lt;br /&gt;
&lt;br /&gt;
Between the &amp;lt;binding&amp;gt; and &amp;lt;/binding&amp;gt; we add our call to the nas file. We get&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;binding&amp;gt;&lt;br /&gt;
    &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;abc123.buttonD()&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, when button D is pressed, it will call the function '''buttonD''' in abc123.nas. You just need to put the correct code in the function.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To make your nas file a bit more use-friendly, open it and at right at the top add&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
print(&amp;quot;Loading abc123.nas&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, when you run FG, along with all the other info in the &amp;quot;black window&amp;quot; you will see ''Loading abc123.nas'' when the joystick xml file loads. This not only confirms that it has loaded, but if you have a parse error in your nas file it will be reported, and you can fix it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Notes  ==&lt;br /&gt;
&lt;br /&gt;
This article does not supply any coding for actions, it is just to get you started. A sort of template. See Part 2 for more details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When naming Nasal functions, the convention is to use camel coding. That is, the first word in the name starts with a lower-case letter, all subsequent words star with an upper-case letter. The can be no spaces in the name. If you want to separate words use an underscore (_).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So valid names would be startDividingByThree, start_Dividing_By_Three, adjRadioFrequency.&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Joysticks and Yokes]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Using_Saitek_AV8R_second_throttle_as_view_pan_speed_control&amp;diff=102442</id>
		<title>Using Saitek AV8R second throttle as view pan speed control</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Using_Saitek_AV8R_second_throttle_as_view_pan_speed_control&amp;diff=102442"/>
		<updated>2016-07-29T12:21:59Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: Category:Joysticks and Yokes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;These changes to your &amp;lt;code&amp;gt;aviator.xml&amp;lt;/code&amp;gt; file will enable you to use the second throttle of the Saitek AV8R joystick as a view panning speed control.  The panning speed can be controlled smoothly from no movement at all to very fast.&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
You will lose the second throttles other functionality. The most important being mixture, which means you will have to use the keyboard for this - {{key press|Shift|M}} for leaner and {{key press|M}} for richer. This is not a significant problem as the mixture does not have to be adjusted often.&lt;br /&gt;
&lt;br /&gt;
Also, this article assumes that you have not done any modifications to your &amp;lt;code&amp;gt;aviator.xml&amp;lt;/code&amp;gt; file. If you have, you will have to work out the changes yourself, or ask on the Support-&amp;gt;Hardware forum.&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
This is the same as standard - use the hat-switch as is to get the predefined views. Press the modifier (trigger) while using the hat-switch to pan left/right and up/down. The difference is that, while using the trigger/hat-switch, Throttle 2 will control the speed of view-change.&lt;br /&gt;
&lt;br /&gt;
There are two methods you can use:&lt;br /&gt;
&lt;br /&gt;
; Method 1&lt;br /&gt;
: Moving the hat-switch left/right (up/down) will pan left/right (up/down) with Throttle 2 controlling the speed of movement - throttle closed is dead-still and throttle fully open is very fast movement. This means that the hat-switch can only be used for left/right and up/down.&lt;br /&gt;
&lt;br /&gt;
; Method 2&lt;br /&gt;
: With this method you assign 4 different controls to the 4 directions of the hat-switch. With each one, Throttle 2 in the center means no movement, fully open is fast in one direction and throttle closed means fast in the ''other'' direction.&lt;br /&gt;
&lt;br /&gt;
So you could use hat-switch left for pan left/right and hat-switch up for pan up/down. This leaves hat-switch right and hat-switch down for other functions, such as move eye-position (more on this later.)&lt;br /&gt;
&lt;br /&gt;
== Changes to aviator.xml ==&lt;br /&gt;
You need a text-editor to modify this file:&lt;br /&gt;
    .../FlightGear/data/Input/Saitek/Aviator.xml&lt;br /&gt;
&lt;br /&gt;
Step 1 is to make a copy of this file in a safe place, in case things go wrong.&lt;br /&gt;
&lt;br /&gt;
Step 2 is to open the file, and find this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;!-- Analog axis 4. Throttle 2 --&amp;gt;&lt;br /&gt;
 &amp;lt;axis&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;Right throttle&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;number&amp;gt;&lt;br /&gt;
   &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
   &amp;lt;mac&amp;gt;4&amp;lt;/mac&amp;gt;&lt;br /&gt;
   &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
  &amp;lt;/number&amp;gt;&lt;br /&gt;
  &amp;lt;desc&amp;gt;TM0: mixture, TM1: throttle/propeller 2, TM2: throttle/propeller 4&amp;lt;/desc&amp;gt;&lt;br /&gt;
  &amp;lt;binding&amp;gt;&lt;br /&gt;
   &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
   &amp;lt;script&amp;gt;&lt;br /&gt;
     if (engine_select_mode == 0) {&lt;br /&gt;
       controls.mixtureAxis();&lt;br /&gt;
     } else {&lt;br /&gt;
       controls.perEngineSelectedAxisHandler(engine_axis_mode)&lt;br /&gt;
           ((engine_select_mode == 1) ? engine[1] : engine[3]);&lt;br /&gt;
     }&lt;br /&gt;
   &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/binding&amp;gt;&lt;br /&gt;
 &amp;lt;/axis&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and change it to this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;!-- Analog axis 4. Throttle 2 --&amp;gt;&lt;br /&gt;
 &amp;lt;axis&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;Right throttle&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;number&amp;gt;&lt;br /&gt;
   &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
   &amp;lt;mac&amp;gt;4&amp;lt;/mac&amp;gt;&lt;br /&gt;
   &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
  &amp;lt;/number&amp;gt;&lt;br /&gt;
  &amp;lt;desc&amp;gt;TM0: mixture, TM1: throttle/propeller 2, TM2: throttle/propeller 4&amp;lt;/desc&amp;gt;&lt;br /&gt;
  &amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;/binding&amp;gt;&lt;br /&gt;
 &amp;lt;/axis&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now Throttle 2 does nothing. No cutting out the engine because you changed the Mixture while panning around.&lt;br /&gt;
If you really want to keep your Mixture control, then you can change the above to:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;!-- Analog axis 4. Throttle 2 --&amp;gt;&lt;br /&gt;
 &amp;lt;axis&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;Right throttle&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;number&amp;gt;&lt;br /&gt;
   &amp;lt;unix&amp;gt;4&amp;lt;/unix&amp;gt;&lt;br /&gt;
   &amp;lt;mac&amp;gt;4&amp;lt;/mac&amp;gt;&lt;br /&gt;
   &amp;lt;windows&amp;gt;4&amp;lt;/windows&amp;gt;&lt;br /&gt;
  &amp;lt;/number&amp;gt;&lt;br /&gt;
  &amp;lt;desc&amp;gt;TM0: mixture, TM1: throttle/propeller 2, TM2: throttle/propeller 4&amp;lt;/desc&amp;gt;&lt;br /&gt;
  &amp;lt;binding&amp;gt;&lt;br /&gt;
   &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
   &amp;lt;script&amp;gt;&lt;br /&gt;
     if (!modifier) {&lt;br /&gt;
       if (engine_select_mode == 0) {&lt;br /&gt;
         controls.mixtureAxis();&lt;br /&gt;
       } else {&lt;br /&gt;
         controls.perEngineSelectedAxisHandler(engine_axis_mode)&lt;br /&gt;
             ((engine_select_mode == 1) ? engine[1] : engine[3]);&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
   &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/binding&amp;gt;&lt;br /&gt;
 &amp;lt;/axis&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will keep the Throttle 2 functionality, but you need to return it to its original position before you release the modifier button.&lt;br /&gt;
&lt;br /&gt;
Next is to look for this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;!-- Axis 5. Hat left/right --&amp;gt;&lt;br /&gt;
 &amp;lt;axis&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;Hat left/right&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;number&amp;gt;&lt;br /&gt;
   &amp;lt;unix&amp;gt;5&amp;lt;/unix&amp;gt;&lt;br /&gt;
   &amp;lt;mac&amp;gt;5&amp;lt;/mac&amp;gt;&lt;br /&gt;
   &amp;lt;windows&amp;gt;5&amp;lt;/windows&amp;gt;&lt;br /&gt;
  &amp;lt;/number&amp;gt;&lt;br /&gt;
  &amp;lt;desc&amp;gt;quick view left/right, +mod: horizontal view pan&amp;lt;/desc&amp;gt;&lt;br /&gt;
  .....&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scroll down until you see:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
     &amp;lt;![CDATA[&lt;br /&gt;
       trace(&amp;quot;Axis 5, Hat: low!&amp;quot;);&lt;br /&gt;
      if (modifier) {&lt;br /&gt;
         view.panViewDir(0.5);&lt;br /&gt;
       } else {&lt;br /&gt;
         quick_view(1);&lt;br /&gt;
       }&lt;br /&gt;
     ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will need to change this line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
         view.panViewDir(0.5);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are using Method 1, change it to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
         view.panViewDir(1 - getprop(&amp;quot;input/joysticks/js[0]/axis[4]/binding/setting&amp;quot;));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are using Method 2, change it to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
         view.panViewDir(getprop(&amp;quot;input/joysticks/js[0]/axis[4]/binding/setting&amp;quot;) * 2);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You only need do this step for Method 1. Scroll a bit further down until you see&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
     &amp;lt;![CDATA[&lt;br /&gt;
       trace(&amp;quot;Axis 5, Hat: high!&amp;quot;);&lt;br /&gt;
       if (modifier) {&lt;br /&gt;
         view.panViewDir(-0.5);&lt;br /&gt;
       } else {&lt;br /&gt;
         quick_view(2);&lt;br /&gt;
       }&lt;br /&gt;
     ]]&amp;gt;&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The line to change is&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
         view.panViewDir(-0.5);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change it to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
         view.panViewDir(-(1 - getprop(&amp;quot;input/joysticks/js[0]/axis[4]/binding/setting&amp;quot;)));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Having made these changes, you can do the following:&lt;br /&gt;
&lt;br /&gt;
; Method 1:  Pressing modifier (trigger) and moving the hat-switch left means you can use Throttle 2 to control the speed of pan to the left. Pressing modifier (trigger) and moving the hat-switch right means you can use Throttle 2 to control the speed of pan to the right.&lt;br /&gt;
&lt;br /&gt;
; Method 2:  Pressing modifier (trigger) and moving the hat-switch left means that you can use Throttle 2 to control the speed of pan to left and right, with throttle in the middle doing no movement.&lt;br /&gt;
&lt;br /&gt;
Now to make the changes to manage pan up and down (pitch).&lt;br /&gt;
&lt;br /&gt;
Scroll down to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;!-- Axis 6. Hat up/down --&amp;gt;&lt;br /&gt;
 &amp;lt;axis&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;Hat up/down&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;number&amp;gt;&lt;br /&gt;
   &amp;lt;unix&amp;gt;6&amp;lt;/unix&amp;gt;&lt;br /&gt;
   &amp;lt;mac&amp;gt;6&amp;lt;/mac&amp;gt;&lt;br /&gt;
   &amp;lt;windows&amp;gt;6&amp;lt;/windows&amp;gt;&lt;br /&gt;
  &amp;lt;/number&amp;gt;&lt;br /&gt;
  &amp;lt;desc&amp;gt;view reset/quick view front, +mod: vertical view pan&amp;lt;/desc&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Scroll a bit further down. The line to change is&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
         view.panViewPitch(0.5);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For Method 1, change it to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
         view.panViewPitch(1 - getprop(&amp;quot;input/joysticks/js[0]/axis[4]/binding/setting&amp;quot;));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For Method 2, change it to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
         view.panViewPitch(getprop(&amp;quot;input/joysticks/js[0]/axis[4]/binding/setting&amp;quot;) * 2);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For Method 1, scroll a bit further down and replace &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
         view.panViewPitch(0.5);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
         view.panViewPitch(-(1 - getprop(&amp;quot;input/joysticks/js[0]/axis[4]/binding/setting&amp;quot;)));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now you can do look up/down exactly the same as left/right.&lt;br /&gt;
&lt;br /&gt;
== Alternatives ==&lt;br /&gt;
You could of course use this exact same method to move your eye-point around, instead of looking around. &lt;br /&gt;
&lt;br /&gt;
If using Method 1, replace&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
         view.panViewDir(1 - getprop(&amp;quot;input/joysticks/js[0]/axis[4]/binding/setting&amp;quot;));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
         controls.slewProp(&amp;quot;/sim/current-view/x-offset-m&amp;quot;, (1 - getprop(&amp;quot;input/joysticks/js[0]/axis[4]/binding/setting&amp;quot;)) * 10);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
         view.panViewDir(-(1 - getprop(&amp;quot;input/joysticks/js[0]/axis[4]/binding/setting&amp;quot;)));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
         controls.slewProp(&amp;quot;/sim/current-view/x-offset-m&amp;quot;, (1 - getprop(&amp;quot;input/joysticks/js[0]/axis[4]/binding/setting&amp;quot;))* -10);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If using Method 2. change&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
         view.panViewDir(getprop(&amp;quot;input/joysticks/js[0]/axis[4]/binding/setting&amp;quot;) * 2);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
         controls.slewProp(&amp;quot;/sim/current-view/x-offset-m&amp;quot;, getprop(&amp;quot;input/joysticks/js[0]/axis[4]/binding/setting&amp;quot;) * 20);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This will move you horizontally.&lt;br /&gt;
To move up and down, replace x-offset with y-offset. To move backwards and forwards, change it to z-offset.&lt;br /&gt;
&lt;br /&gt;
You can also use this method for zooming in and out. Unfortunately we need to implement limits for zoom, so the code is more complicated.&lt;br /&gt;
If using Method 1, replace&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
         view.panViewDir(-(1 - getprop(&amp;quot;input/joysticks/js[0]/axis[4]/binding/setting&amp;quot;)));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;![CDATA[&lt;br /&gt;
           controls.slewProp(&amp;quot;/sim/current-view/field-of-view&amp;quot;, &lt;br /&gt;
              (1 - getprop(&amp;quot;input/joysticks/js[0]/axis[4]/binding/setting&amp;quot;)) * -20);&lt;br /&gt;
           if (getprop(&amp;quot;/sim/current-view/field-of-view&amp;quot;) &amp;gt;= 120)&lt;br /&gt;
             setprop(&amp;quot;/sim/current-view/field-of-view&amp;quot;, 120);&lt;br /&gt;
           if (getprop(&amp;quot;/sim/current-view/field-of-view&amp;quot;) &amp;lt;= 1)&lt;br /&gt;
             setprop(&amp;quot;/sim/current-view/field-of-view&amp;quot;, 1);&lt;br /&gt;
         ]]&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
         view.panViewDir(1 - getprop(&amp;quot;input/joysticks/js[0]/axis[4]/binding/setting&amp;quot;));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
with&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;![CDATA[&lt;br /&gt;
           controls.slewProp(&amp;quot;/sim/current-view/field-of-view&amp;quot;, &lt;br /&gt;
              -(1 - getprop(&amp;quot;input/joysticks/js[0]/axis[4]/binding/setting&amp;quot;)) * -20);&lt;br /&gt;
           if (getprop(&amp;quot;/sim/current-view/field-of-view&amp;quot;) &amp;gt;= 120)&lt;br /&gt;
             setprop(&amp;quot;/sim/current-view/field-of-view&amp;quot;, 120);&lt;br /&gt;
           if (getprop(&amp;quot;/sim/current-view/field-of-view&amp;quot;) &amp;lt;= 1)&lt;br /&gt;
             setprop(&amp;quot;/sim/current-view/field-of-view&amp;quot;, 1);&lt;br /&gt;
         ]]&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If using Method 2. change&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
         view.panViewDir(getprop(&amp;quot;input/joysticks/js[0]/axis[4]/binding/setting&amp;quot;) * -2);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;![CDATA[&lt;br /&gt;
           controls.slewProp(&amp;quot;/sim/current-view/field-of-view&amp;quot;, &lt;br /&gt;
              getprop(&amp;quot;input/joysticks/j[0]/axis[4]/binding/setting&amp;quot;) * 40);&lt;br /&gt;
           if (getprop(&amp;quot;/sim/current-view/field-of-view&amp;quot;) &amp;gt;= 120)&lt;br /&gt;
             setprop(&amp;quot;/sim/current-view/field-of-view&amp;quot;, 120);&lt;br /&gt;
           if (getprop(&amp;quot;/sim/current-view/field-of-view&amp;quot;) &amp;lt;= 1)&lt;br /&gt;
             setprop(&amp;quot;/sim/current-view/field-of-view&amp;quot;, 1);&lt;br /&gt;
         ]]&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Summing up ==&lt;br /&gt;
It seems a bit daunting, but if you look carefully, the steps are all the same, there are just a few places where the changes need to be made.&lt;br /&gt;
&lt;br /&gt;
== Related content ==&lt;br /&gt;
* [[Input device]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Joysticks and Yokes]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Improving_the_Joystick_GUI&amp;diff=102440</id>
		<title>Improving the Joystick GUI</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Improving_the_Joystick_GUI&amp;diff=102440"/>
		<updated>2016-07-29T12:21:18Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: Category:Joysticks and Yokes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Mentored Volunteer Effort&lt;br /&gt;
|mentors= macnab, Philosopher, Hooray, Stuart (review/commit), Zakalawe (C++ hooks [http://forum.flightgear.org/viewtopic.php?f=18&amp;amp;t=18530#p172461])&lt;br /&gt;
|skills=[[PropertyList XML File]], [[Property Tree]], [[Nasal|Nasal scripting]], fgcommands, [[Howto:Making HTTP Requests from Nasal|Nasal/Web scripting]]}}&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
We once talked about integrating the various Nasal capabilities added by Macnab and Philosopher right into Stuart's new JS config dialog - back then, Stuart &amp;amp; Zakalawe actually seemed supportive of the idea. And it would indeed not require many customizations to allow bindings to become fully runtime-configurable, including Nasal bindings and a standard library of general-purpose Nasal/JS APIs. UI-wise, we could simply reuse/integrate the existing Nasal console, so that bindings can be dynamically added and edited. At the end of the day, it's all XML, Nasal and the property tree, and some fgcommands to reinit stuff - so if people still think, that'd be useful, please speak-up and share your feature requests / ideas here.&lt;br /&gt;
&lt;br /&gt;
Also see [[User:Philosopher/Advanced Input Programming]].&lt;br /&gt;
&lt;br /&gt;
== Status 07/2013 ==&lt;br /&gt;
Stuart being the developer and maintainer of the latest Joystick GUI, here's his feedback:&lt;br /&gt;
&lt;br /&gt;
'''Stuart''':&lt;br /&gt;
Adding the ability to write Nasal for a given button was something I considered, but didn't implement. Partly this was due to time constraints, but it was also because I didn't think there was a use-case for it. The joystick configuration dialog is really targeted at new users who don't have any XML or Nasal experience. IMO anyone who knows enough to write Nasal joystick bindings will have enough knowledge to edit the joystick XML files directly and use the Nasal Console.&lt;br /&gt;
&lt;br /&gt;
On a different note, I'm interested to see what bindings people are using on joysticks, to check that the set of button bindings that are supported in the configuration dialog are sufficient. &lt;br /&gt;
&lt;br /&gt;
At present the dialog supports trim settings, but sets the button to be repeatable. Is there are a particular reason for not using the repeatable flag, or is it purely for people who have mode-switches and might have another (non-repeatable) function assigned to the button?&lt;br /&gt;
&lt;br /&gt;
I'm very happy if someone wants to expand the Joystick GUI to include advanced features such as modifier keys, and support for arbritary Nasal snippets. I also very much like the idea of re-implementing it in Canvas, as I had to make some design decisions purely on the basis of what was possible through the XML GUI code. &lt;br /&gt;
&lt;br /&gt;
If someone is working on this, it would be good to add support to allow setting of the joystick deadband - this is something that I simply haven't had the time to add.&lt;br /&gt;
&lt;br /&gt;
Finally, one point that I'm sure you will bear in mind: It's critical that it remains easy to use for new users. In particular, I spent some time determining the minimum set of bindings that were really required so that someone programming their joystick for the first time wouldn't be overloaded by a massive list of possible key bindings. It might be worth having an &amp;quot;Advanced bindings&amp;quot; option that enables modifier keys and the more esoteric bindings. For example, my yoke has a slider switch that I use to control the sensitivity of the view movement control. That's really useful for my yoke in particular, but probably doesn't generalize.&lt;br /&gt;
&lt;br /&gt;
Finally, I'm very happy to review any code that people want to submit, though I apologize in advance if it takes me a little time.&lt;br /&gt;
&lt;br /&gt;
== Roadmap ==&lt;br /&gt;
&lt;br /&gt;
=== Misc ===&lt;br /&gt;
* To me the first step would be to have the UI include at least one &amp;quot;Modifier&amp;quot; button and/or keyboard modifiers. Then the UI can have the option of switching views between modified/not modified. This will give more available actions.&lt;br /&gt;
&lt;br /&gt;
=== repeatable flag ===&lt;br /&gt;
* Between us we can come up with the &amp;quot;actions&amp;quot; and code. If we can get &amp;quot;on the fly&amp;quot; switching between repeatable/non-repeatable that would make a great addition/change for Version 3.&lt;br /&gt;
** To make this work we definitely need to get around the repeatable/non-repeatable limitation first.&lt;br /&gt;
** making the repeatable flag runtime configurable should be pretty straightforward for anybody familiar with the JS code and property tree listeners (SGPropertyChangeListener).&lt;br /&gt;
** Without on-the-fly switching between repeatable/non-repeatable switching to modified view would have to limit the available actions to repeatable/non-repeatable based on the unmodified action.&lt;br /&gt;
** It will need FGCommands to do it. Then the specific joystick code can set/clear it according to needs. If no FGCommand is sent it must stay the way it is for compatibility with existing joystick xml files.&lt;br /&gt;
** there are obviously several ways to skin this cat - no matter if it's fgcommands or listeners - I just believe listeners to be more &amp;quot;direct&amp;quot;, i.e. by simply replicating the whole config file through the property tree and just waiting for events that change things, and automatically reparsing/re-initializing things - that's after all, how the AP, AI system or the canvas work, without necessarily requiring fgcommands. On the other hand, Stuart -as the author of the JS dialog- seems to prefer fgcommands over listeners (see his clouds API). So at the end of the day it all boils down to who gets around to implementing it. It doesn't really matter if it's through listeners or fgcommands (or even something else).&lt;br /&gt;
** Note that the upcoming FG releases (beyond 2.12+) will include a new Nasal API for registering invididual Nasal functions as fgcommands, so that you can have very compact joystick bindings by making up new, joystick-specific, fgcommands&lt;br /&gt;
** it's basically the same, except obviously more universal (C++ code can use it too). It also looks better (to me) as it just used the &amp;lt;command&amp;gt; tag instead of a function call with all those tags around it (&amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&amp;lt;script&amp;gt;call_function()&amp;lt;/script&amp;gt;), and it of course requires &amp;quot;arguments&amp;quot; to be in the property tree (they can be retrieved using cmdarg() or the first argument passed to the callback function). For example, I could register a &amp;quot;Cyborg-X-axis&amp;quot; fgcommand&lt;br /&gt;
**  this is probably going to be what bindings will look like in the future, simply because we can easily maintain a generic standard Nasal library for joystick code, without individual bindings having to be aware of implementation details - so this is pretty much the &amp;quot;frontend&amp;quot;, and what things will look like to end-users, or the joystick GUI, while the backend would be based on generic and unified Nasal snippets dealing with Joystick/Yokes, Pedals etc - that would allow us provide a &amp;quot;stable frontend API&amp;quot; through Nasal-based fgcommands, whereas the back-end could evolve as needed - and the front-end would be easily editable through a corresponding GUI dialog. It would then even be possible to merge the Nasal console into everything, so that backend snippets become also customizable at runtime. Basically, more flexibility, with less coding required for people who do not want to look into scripting - also, no need for cdata or XML escaping&lt;br /&gt;
&lt;br /&gt;
* Being able to edit the generated code would be nice for those who are capable of tweaking it. (Such as a personal preference for slew-rate.) Dynamic re-inits would also be good.&lt;br /&gt;
&lt;br /&gt;
=== GUI ===&lt;br /&gt;
Before creating new [[Canvas GUI]] widgets please have a look at Tom's fgdata branch: {{gitorious url|fg|toms-fgdata|branch=canvas-gui-demo}}.&lt;br /&gt;
Tom is currently working on creating a standard widget and layout system (similar to eg. Qt). At the moment there only exists a button widget (but already with focus, and hover/press effects) [http://forum.flightgear.org/viewtopic.php?f=24&amp;amp;p=186563#p186563]. Specifically, see {{gitorious source|fg|toms-fgdata|branch=canvas-gui-demo|path=Nasal/canvas/gui|view=tree|pre=$FG_ROOT}}.&lt;br /&gt;
&lt;br /&gt;
* The UI can be worded carefully so that less-experienced users can understand the concept of doubling-up on button actions.&lt;br /&gt;
* And for doing it in Canvas. And for all buttons to be implemented in a nas file, not the xml file. (Standard axes can stay in the xml file.)&lt;br /&gt;
* For the axes, along with deadband, power as well. (With a slider in the GUI?)&lt;br /&gt;
* Maybe the start page with only the basic bindings, and 3 buttons: Basic, Medium and Advanced that change the view?&lt;br /&gt;
&lt;br /&gt;
=== Updating ===&lt;br /&gt;
* Something that occurs to me is that once the system is out there people will make requests for bindings that don't exist yet. If these are implemented, unless the people use Git, they will have to wait for a new release to see them. So maybe a system where they can download just the necessary files, which be the GUI and the new glorified version of controls.nas.&lt;br /&gt;
** You could provide custom bindings as self-contained PropertyList-encoded XML files with embedded Nasal sections - FlightGear already supports loading PropertyList XML files via network, which is how the multiplayer list is loaded dynamically. In other words, you could take these building blocks and load/share arbitrary stuff via network, including custom joystick bindings. For details, see: Howto:Making HTTP Requests from Nasal. The tutorial also demonstrates how to use a simple web server (in fact, a single line in python) to serve a FG GUI XML file that shows a FG GUI dialog with a custom message (&amp;quot;Hello World&amp;quot;).&lt;br /&gt;
** the tutorial uses the official fgdata repository to dynamically download the latest XML/Nasal stuff - and we've been talking about using such a method for automatically updating the Nasal APIs of the Canvas system. Also, Zakalawe is planning to provide a feature to allow aircraft to be downloaded at runtime using WebDAV (see the wiki)&lt;br /&gt;
**  we could simply use $FG_HOME for persistence/caching - either by using the &amp;quot;userarchive&amp;quot; attribute on all JS-related snippets, so that they become persistent between sessions (see $FG_HOME/autosave.xml) or by using a custom PropertyList-XML file that stores downloaded snippets and uses a hash to check if they were already downloaded and/or need to be updated. Thus, you would only need to be online when downloading things - later on, everything would be persistent/cached.&lt;br /&gt;
** also, by convention, fgdata has usually been considered (and installed) as read-only - especially on &amp;quot;true&amp;quot; multi-user systems, so this should be kept in mind - it simply makes sense to have user-specific stuff in $FG_HOME, i.e. a user-specific directory for application settings. Just look at how TerraSync solves the same problem basically - because it also cannot modify $FG_ROOT, but still needs to download and store tons of data.&lt;br /&gt;
** The library and GUI will have to be put in a read/write folder. It does mean making FG look for it in the correct place - non-standard.&lt;br /&gt;
** There are a bunch of Nasal wrappers available in io.nas for loading Nasal code from different places, and there are helpers in gui.nas to load GUI dialogs from non-standard places. Keep in mind how we have a bunch of Nasal code and custom GUI dialogs in most aircraft folders, which are also &amp;quot;non-standard&amp;quot; - so that's a no-brainer.&lt;br /&gt;
&lt;br /&gt;
== Team ==&lt;br /&gt;
Please feel free to add your name to this list if you are willing and able to help.&lt;br /&gt;
&lt;br /&gt;
=== Mentors ===&lt;br /&gt;
* Hooray&lt;br /&gt;
&lt;br /&gt;
=== Joystick GUI ===&lt;br /&gt;
* Philosopher&lt;br /&gt;
&lt;br /&gt;
=== Nasal Joystick Routines ===&lt;br /&gt;
* macnab. I already have a large collection of of what would be classified as Advanced (or even Esoteric) functions written in Nasal.&lt;br /&gt;
&lt;br /&gt;
=== C++ Code ===&lt;br /&gt;
* Zakalawe&lt;br /&gt;
&lt;br /&gt;
=== Review/Commit ===&lt;br /&gt;
* Stuart&lt;br /&gt;
&lt;br /&gt;
== Ideas/Suggestions ==&lt;br /&gt;
Please add any ideas or suggestions you may have which are not listed above.&lt;br /&gt;
&lt;br /&gt;
== Related ==&lt;br /&gt;
* http://forum.flightgear.org/viewtopic.php?f=24&amp;amp;t=20324&lt;br /&gt;
* http://forum.flightgear.org/viewtopic.php?f=18&amp;amp;t=18530&lt;br /&gt;
* http://forum.flightgear.org/viewtopic.php?f=24&amp;amp;t=17892&lt;br /&gt;
&lt;br /&gt;
[[Category:Core development projects]]&lt;br /&gt;
[[Category:Joysticks and Yokes]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Using_Saitek_Pro_Flight_Yoke_Mode_Switch&amp;diff=102439</id>
		<title>Using Saitek Pro Flight Yoke Mode Switch</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Using_Saitek_Pro_Flight_Yoke_Mode_Switch&amp;diff=102439"/>
		<updated>2016-07-29T12:17:57Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: Category:Joysticks and Yokes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Before you start ==&lt;br /&gt;
&lt;br /&gt;
To use the Mode Switch you need to install the Smart Technology software that came on the CD with your yoke. Install it ''after'' installing the drivers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Running the Profile Editor ==&lt;br /&gt;
If the Profile Editor does not run after installation, you can run it from the Start Menu - Start - All Programs - Smart Technology (folder) - Profile Editor.&lt;br /&gt;
If you have the rudder pedals as well as the yoke you will have to select the yoke in the first dialog box that appears.&lt;br /&gt;
At the top right is ''Product Programming Support''. Click on 'Programming'. Here is the top left corner of the page that appears:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Saitek Yoke - Top Left Blank.jpg | 550px]]&lt;br /&gt;
&lt;br /&gt;
                                                                              &lt;br /&gt;
&lt;br /&gt;
== Creating a blank safety profile ==&lt;br /&gt;
The first thing to do is create a profile that does nothing, i.e. does not interfere in any way with the current working of the yoke. This is your &amp;quot;safety&amp;quot; backup.  Click on (Create) Profile. This generates the file that will be saved and opens the Save as dialog. Give the profile a suitable name (such as Blank) and save it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  What the software does ==&lt;br /&gt;
It simulates keystrokes. You can assign different keystrokes to specific yoke buttons for each mode. Then, when you select a mode and press a button, that/those keystroke(s) are sent to Flightgear. Just as if you had typed them at the keyboard.&lt;br /&gt;
But this does have the limitation of only being able to use commands that exist on keyboard.xml and multikey.xml. And that also means no 'repeatable' actions, such as 'Trim' Elevator'.  So we will not discuss it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mod-Key style of use ==&lt;br /&gt;
What we are going to do is make the Mode Switch act as if we are pressing the Shift, Ctrl or Alt keys while pressing a yoke button - emulating &amp;lt;mod-shift&amp;gt;, &amp;lt;mod-ctrl&amp;gt; and &amp;lt;mod-alt&amp;gt;. Mode 1 is none of the above pressed. Choose which 2 of the 3 mod conditions you want to use. In this article we will use Shift in Mode 2 and Ctrl in Mode 3. It really doesn't matter unless you already have your yoke programmed with mods.&lt;br /&gt;
To make Mode 2 emulate pressing the Shift key, hold your mouse pointer in the large blank rectangle under Mode 2, and then click on the little arrow that appears.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Saitek Yoke - To make little arrow appear.jpg | 400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                                             &lt;br /&gt;
A popup menu appears. Click on &amp;quot;New Key Presses...&amp;quot;. You now see this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Saitek Yoke - New Key Presses clicked.jpg | 400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                                              &lt;br /&gt;
Ignore where the cursor is (this is just for a name) and click in the bigger rectangle. Then give the Shift key a tap. An icon of the Shift key will appear in the rectangle. Click on the little green tick mark. (If you got it wrong, click on the little red cross and try again.&lt;br /&gt;
You will have this, if you got it right:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Saitek Yoke - Shift key done..jpg | 400px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                                           &lt;br /&gt;
If it doesn't look like that, click on one of the incorrect key icons. You will be taken back to the point before you clicked the green tick. You can then right-click on any incorrect keys and select Cut. And redo tapping the Shift key if needed.&lt;br /&gt;
&lt;br /&gt;
Now go to the column for Mode 3, and repeat all the ablove actions, except using the Ctrl key, instead of Shift. &lt;br /&gt;
Now you need to create the profile. Click on (Create) Profile. The profile will be created and the Save As dialog will open. Choose a suitable name for the profile and save it.&lt;br /&gt;
You will now need to edit your joysticks's xml file. There is plenty of information on that. You will of course need to program &amp;lt;mod-shift&amp;gt; and &amp;lt;mod-ctrl&amp;gt; sections for the buttons.&lt;br /&gt;
&lt;br /&gt;
== Very Important ==&lt;br /&gt;
* If you assign Shift to Mode 2, and the yoke switch is in Mode 2, then ''everything'' you do will be treated as if the shift key is pressed while you do it. This includes the mouse. To use a modded button, flick the switch to Mode 2 or Mode 3, do what you have to do, and then flick straight back to Mode 1.&lt;br /&gt;
&lt;br /&gt;
* The profile you have defined is not automatically assigned at system boot-up. You have to go to the system area, right-click on the yoke-icon and select your profile. The icon will then have a green box around it to show that it has been assigned a profile.&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Howto]]&lt;br /&gt;
[[Category:Joysticks and Yokes]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Using_a_Nasal_file_with_a_joystick_Part_2&amp;diff=102438</id>
		<title>Using a Nasal file with a joystick Part 2</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Using_a_Nasal_file_with_a_joystick_Part_2&amp;diff=102438"/>
		<updated>2016-07-29T12:17:19Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: Category:Joysticks and Yokes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In [[Using a Nasal file with a joystick]] you saw how to get started. &lt;br /&gt;
This article goes into it in more depth.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  First Steps  ==&lt;br /&gt;
Backup your xml file. &lt;br /&gt;
Print it, you need to know which button does what.&lt;br /&gt;
If you have a Nasal file, back it up too. &lt;br /&gt;
If you haven't read the first part, read it and do the basic implementation now.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Modifying your xml file ==&lt;br /&gt;
This seems like a lot of work, but it is worth it in the end.&lt;br /&gt;
You need to use the labels of the buttons on your joystick. &lt;br /&gt;
You will use these labels for the name of the Nasal function to call in your nasal file.&lt;br /&gt;
For each button in your xml file, change your code. Here, the button is labelled &amp;quot;1&amp;quot;. &lt;br /&gt;
And remember, we are talking about the label printed on the joystick, not the button number &lt;br /&gt;
&lt;br /&gt;
assigned by the operating system.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;button n=&amp;quot;xxx&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Labled as 1 --&amp;gt;&lt;br /&gt;
    &amp;lt;desc&amp;gt;Whatever it does&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;script&amp;gt;nasfilename.button1()&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
  &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Of course, nasfilename is the name of your Nasal file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you have a modifier button, named ''mymod'', then do this&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;button n=&amp;quot;xxx&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Labled as 1 --&amp;gt;&lt;br /&gt;
    &amp;lt;desc&amp;gt;Whatever it does&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;script&amp;gt;nasfilename.button1(mymod)&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
  &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you use the keyboard Shift, Ctrl or Alt buttons as a modifier, you do this&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;button n=&amp;quot;xxx&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Labled as 1 --&amp;gt;&lt;br /&gt;
    &amp;lt;desc&amp;gt;Whatever it does&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;script&amp;gt;nasfilename.button1(1)&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;mod-shift&amp;gt;&lt;br /&gt;
      &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;script&amp;gt;nasfilename.button1(2)&amp;lt;/script&amp;gt;&lt;br /&gt;
      &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/mod-shift&amp;gt;&lt;br /&gt;
  &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you use 2 keyboard buttons then you would need another &amp;lt;mod-...&amp;gt; section, and pass the value 3. &lt;br /&gt;
To help you remember, add a comment at the top of your Nasal file to remind you what the values mean.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If your button needs a mod-up, then do this&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;button n=&amp;quot;xxx&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Labled as 1 --&amp;gt;&lt;br /&gt;
    &amp;lt;desc&amp;gt;Whatever it does&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;script&amp;gt;nasfilename.button1()&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;mod-up&amp;gt;&lt;br /&gt;
      &amp;lt;binding&amp;gt;&lt;br /&gt;
        &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
        &amp;lt;script&amp;gt;nasfilename.button1Up()&amp;lt;/script&amp;gt;&lt;br /&gt;
      &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
  &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
but this is very seldom needed. Of course, if you use modifiers you need to pass the number of the modifier in the brackets.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You could use 2 modifiers simultaneously. The Saitek Pro Flight Yoke has a Mode Switch, which needs special methods to access it - see [[Using Saitek Pro Flight Yoke Mode Switch]], then could have a case where you have these modes (which simulate using the keyboard Shift, Ctrl and Alt keys) as well as a modifier button on the joystick.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In such a case do this&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;button n=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Labled as C1 --&amp;gt;&lt;br /&gt;
    &amp;lt;desc&amp;gt;Whatever&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;repeatable&amp;gt;true&amp;lt;/repeatable&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;script&amp;gt;saitekyoke.buttonC1(saitekAlter, 1)&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;mod-shift&amp;gt;&lt;br /&gt;
      &amp;lt;binding&amp;gt;&lt;br /&gt;
        &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
        &amp;lt;script&amp;gt;saitekyoke.buttonC2(saitekAlter, 2)&amp;lt;/script&amp;gt;&lt;br /&gt;
      &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/mod-shift&amp;gt;&lt;br /&gt;
    &amp;lt;mod-ctrl&amp;gt;&lt;br /&gt;
      &amp;lt;binding&amp;gt;&lt;br /&gt;
        &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
        &amp;lt;script&amp;gt;saitekyoke.buttonC1(saitekAlter, 3)&amp;lt;/script&amp;gt;&lt;br /&gt;
      &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/mod-ctrl&amp;gt;&lt;br /&gt;
  &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Here, saitekAlter is the value (0 or 1) of the modifier button, and the 1, 2 and 3 represent the position of the Mode Switch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now do this for all the buttons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Contents of the Nasal file  ==&lt;br /&gt;
&lt;br /&gt;
===  The blank file  ===&lt;br /&gt;
For each button you need a function defined. In our simplest example above you need&lt;br /&gt;
&amp;lt;syntaxhighlight lang =&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
  var button1 = func {&lt;br /&gt;
        ... code goes here ...&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you pass the value of a modifier button then it is slightly different. &lt;br /&gt;
&lt;br /&gt;
Assuming that your modifier button is 0 for not pressed and 1 for pressed, we can make use of the fact that in Nasal 0 represents false, and any other value represents true.&lt;br /&gt;
&amp;lt;syntaxhighlight lang =&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
  var button1 = func(mod) {&lt;br /&gt;
    if (mod) {&lt;br /&gt;
      ... code for modifier button pressed goes here ...&lt;br /&gt;
    } else {&lt;br /&gt;
      ... code for modifier not pressed goes here ...&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When have values other than just 0 and 1 then you need specific if clauses&lt;br /&gt;
&amp;lt;syntaxhighlight lang =&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
  var button1 = func(mod) {&lt;br /&gt;
    if (mod == 1) {&lt;br /&gt;
      ... code for modifier value 1 goes here ...&lt;br /&gt;
    } &lt;br /&gt;
    if (mod == 2) {&lt;br /&gt;
      ... code for modifier value 2 goes here ...&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you have 2 modifiers, as in the case of the Saitek Yoke with modes and a modifier button, then you need to nest the if clauses.&lt;br /&gt;
&amp;lt;syntaxhighlight lang =&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
  var button1 = func(alter, mode) {&lt;br /&gt;
    if (mode == 1) {&lt;br /&gt;
       if (alter) {&lt;br /&gt;
         ... Mode 1, mod button pressed ...&lt;br /&gt;
       } else {&lt;br /&gt;
         ... Mode 1, mod button not pressed ...&lt;br /&gt;
       }&lt;br /&gt;
    } &lt;br /&gt;
    if (mode == 2) {&lt;br /&gt;
      if (alter) {&lt;br /&gt;
         ... Mode 2, mod button pressed ...&lt;br /&gt;
      } else {&lt;br /&gt;
         ... Mode 2, mod button not pressed ...&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
    if (mode == 3) {&lt;br /&gt;
      if (alter) {&lt;br /&gt;
         ... Mode 3, mod button pressed ...&lt;br /&gt;
      } else {&lt;br /&gt;
         ... Mode 3, mod button not pressed ...&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===  Populating the Nasal file  ===&lt;br /&gt;
&lt;br /&gt;
Now you need to put in all the code.&lt;br /&gt;
Have the printout of the xml file handy, it is easier than switching between files.&lt;br /&gt;
The equivalent code for most actions is available in numerous places, but some equivalents will be supplied below. And you can always ask on the Hardware forum for the Nasal equivalents of xml code.&lt;br /&gt;
&lt;br /&gt;
Enter all the code.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Testing your code  ===&lt;br /&gt;
&lt;br /&gt;
If you use an editor such as gedit (multi-platform, free) which has line-numbers, it makes the task soooo much easier.&lt;br /&gt;
&lt;br /&gt;
Run FG, keeping an eye on the &amp;quot;black window.&amp;quot; If you don't see Loading myfilename.nas, then there is a mistake in the xml file.&lt;br /&gt;
If you get a parse error when starting FG, then you have a basic mistake in your Nasal file. The first entry after parse error is the line number to look for.&lt;br /&gt;
If you get a parse when pressing a button, then the error is in the code for that button.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Nasal equivalents to xml code ==&lt;br /&gt;
&lt;br /&gt;
If your xml code has&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;script&amp;gt;blah blah&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
then you can use the bit between &amp;lt;script&amp;gt; and &amp;lt;/script&amp;gt; as is.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Elevator Trim&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-scale&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/flight/elevator&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;factor type=&amp;quot;double&amp;quot;&amp;gt;1.0&amp;lt;/factor&amp;gt;&lt;br /&gt;
  &amp;lt;squared type=&amp;quot;bool&amp;quot;&amp;gt;true&amp;lt;/squared&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
becomes&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
  controls.elevatorTrim(1);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The 1 becomes -1 for the other direction. Just substitute ''ruder'' and ''aileron'' for the others.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
View Direction&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-adjust&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/sim/current-view/goal-heading-offset-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;step type=&amp;quot;double&amp;quot;&amp;gt;1.0&amp;lt;/step&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
becomes&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
  controls.slewProp(&amp;quot;/sim/current-view/goal-heading-offset-deg&amp;quot;, 15);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
You can fiddle with the 15 to make it slower or faster. Make it -15 for the other direction. Change ''goal-heading'' to ''goal-pitch'' for up and down.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zoom&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-adjust&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/sim/current-view/field-of-view&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;step type=&amp;quot;double&amp;quot;&amp;gt;0.5&amp;lt;/step&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
becomes&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
  view.increase(0.5);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Use view.decrease to zoom out.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto]]&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Joysticks and Yokes]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Joystick/SimpedGameport&amp;diff=102437</id>
		<title>Joystick/SimpedGameport</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Joystick/SimpedGameport&amp;diff=102437"/>
		<updated>2016-07-29T12:16:00Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: Category:Joysticks and Yokes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
How to setup the &amp;quot;analog&amp;quot; (non-USB) Simped rudder pedals in ubuntu Linux.&lt;br /&gt;
Hardware needed:&lt;br /&gt;
* 2nd hand Simped pedals&lt;br /&gt;
* a PCI Soundblaster Soundcard with DB15 gameport connector&lt;br /&gt;
&lt;br /&gt;
~/.fgfs/Input/Joysticks/simped4.xml&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;name&amp;gt;Analog 4-axis 4-button joystick&amp;lt;/name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;axis n=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;desc&amp;gt;Rudder&amp;lt;/desc&amp;gt;&lt;br /&gt;
  &amp;lt;binding&amp;gt;&lt;br /&gt;
   &amp;lt;command&amp;gt;property-scale&amp;lt;/command&amp;gt;&lt;br /&gt;
   &amp;lt;property&amp;gt;/controls/flight/rudder&amp;lt;/property&amp;gt;&lt;br /&gt;
   &amp;lt;factor type=&amp;quot;double&amp;quot;&amp;gt;1.0&amp;lt;/factor&amp;gt;&lt;br /&gt;
   &amp;lt;squared type=&amp;quot;bool&amp;quot;&amp;gt;true&amp;lt;/squared&amp;gt;&lt;br /&gt;
  &amp;lt;/binding&amp;gt;&lt;br /&gt;
 &amp;lt;/axis&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/modules&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
# /etc/modules: kernel modules to load at boot time.&lt;br /&gt;
#&lt;br /&gt;
# This file contains the names of kernel modules that should be loaded&lt;br /&gt;
# at boot time, one per line. Lines beginning with &amp;quot;#&amp;quot; are ignored.&lt;br /&gt;
&lt;br /&gt;
lp&lt;br /&gt;
rtc&lt;br /&gt;
&lt;br /&gt;
# Generated by sensors-detect on Sun Mar 10 01:48:26 2013&lt;br /&gt;
# Chip drivers&lt;br /&gt;
coretemp&lt;br /&gt;
&lt;br /&gt;
#gameport joystick &amp;amp; Pedal&lt;br /&gt;
analog&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/etc/modprobe.d/alsa-base.conf&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
.&lt;br /&gt;
options snd-ens1371 joystick_port=1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Hardware]]&lt;br /&gt;
[[Category:Joysticks and Yokes]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Category:Joysticks_and_Yokes&amp;diff=102436</id>
		<title>Category:Joysticks and Yokes</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Category:Joysticks_and_Yokes&amp;diff=102436"/>
		<updated>2016-07-29T12:15:23Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: new category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Content related to joysticks, yokes and pedals.&lt;br /&gt;
&lt;br /&gt;
[[Category:FlightGear]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Joystick_autopilot_bindings&amp;diff=102435</id>
		<title>Joystick autopilot bindings</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Joystick_autopilot_bindings&amp;diff=102435"/>
		<updated>2016-07-29T12:12:42Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: Category:Joysticks and Yokes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes joystick bindings, which can be used to control the (simulated) autopilot with a set of joystick buttons.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
Before you start, read [[Input device]] and probably [[Writing Joystick Code: Part 1]].&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Autopilots are often very useful devices, but unfortunately the standard key bindings of Flightgear control the `magic autopilot' rather than the simulated real ones, and the only way to control popular GA autopilots is by clicking the corresponding buttons in the 3D-cockpit. This is awkward if there is a need to change mode or turn off the autopilot quickly (at final stage of ILS landing, or if the autopilot does something silly).&lt;br /&gt;
&lt;br /&gt;
Every type of autopilot is operated quite differently, such that these keys only work for specific models. Here, key bindings are provided for the  [[Bendix/King KAP140 Autopilot]] (in the [[Cessna 172]]) and the [http://www.centuryflight.com/manuals/CENTIII.pdf CENTURY III Autopilot POH] ([[Seneca II]]).&lt;br /&gt;
Those were prioritised, as the more complex autopilots in jets usually have a dedicated GUI and therefore maybe less in need of joystick binding. However, it is planned to provide bindings for at least basic functions like AUTOPILOT OFF for other autopilot types in the future. &lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
The example code provides a setup for six buttons arranged like this:&lt;br /&gt;
&lt;br /&gt;
4 5 6&amp;lt;br /&amp;gt;&lt;br /&gt;
9 8 7  &lt;br /&gt;
&lt;br /&gt;
(this happens to be suitable for the Thrustmaster T16000M but it can be adapted trivially to other button numbers by simply changing the button numbers in the snippets below).&lt;br /&gt;
In the following snippets for each functionality are provided - usually one with the actual binding and some corresponding initialisation code (placed between nasal tags at the beginning of the script). You need to copy/paste both into your joystick bindings xml file.  In the summary the code of all snippets is provided in one code box for convenience but you learn more if you consider each snippet in turn.  Generally, it was attempted to have largely consistent bindings for the different autopilot types, but because they are operated quite differently, this was not entirely possible, and it was attempted to stay close to the mode of operation of the actual instruments.  &lt;br /&gt;
&lt;br /&gt;
=== Generic initialisation code ===&lt;br /&gt;
On startup, we need to figure out whether we are dealing with a Bendix KAP 140 or CENTURY III autopilot.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;nasal&amp;gt;&lt;br /&gt;
    &amp;lt;!-- set autopilot type:&lt;br /&gt;
          1: KAP140     (e.g. c172p)&lt;br /&gt;
          2: CENTURYIII (e.g. senecaII) --&amp;gt;&lt;br /&gt;
   &amp;lt;script&amp;gt;&amp;lt;![CDATA[&lt;br /&gt;
      var autopilottype=0;&lt;br /&gt;
      var horizontalmode=0;&lt;br /&gt;
     if (getprop(&amp;quot;sim/aircraft&amp;quot;)==&amp;quot;c172p&amp;quot;) {&lt;br /&gt;
        print(&amp;quot;JOYSTICK INIT: Found KAP140 autopilot&amp;quot;);&lt;br /&gt;
        autopilottype=1;&lt;br /&gt;
     } elsif (getprop(&amp;quot;autopilot/CENTURYIII/power&amp;quot;)&amp;gt;-1) {&lt;br /&gt;
        print(&amp;quot;JOYSTICK INIT: Found CENTURYIII autopilot&amp;quot;);&lt;br /&gt;
        autopilottype=2; &lt;br /&gt;
     }&lt;br /&gt;
    ....&lt;br /&gt;
   ]]&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/nasal&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
As you can see it assumes only the Cessna 172 has the KAP-140. If there is another plane with this autopilot the condition should be adjusted.&lt;br /&gt;
&lt;br /&gt;
=== Major mode selection ===&lt;br /&gt;
Button 4 turns the autopilot on or off (toggle switch). &lt;br /&gt;
With modifiers:&amp;lt;br /&amp;gt;&lt;br /&gt;
(SHIFT)	HDG mode toggle (the details of this mode are controlled by button 4)&amp;lt;br /&amp;gt;&lt;br /&gt;
(CTRL)  PITCH mode toggle  (CENTURYIII only!)&amp;lt;br /&amp;gt;&lt;br /&gt;
(ALT)   ALT mode toggle (KAP140: switches between VS and ALT vertical modes. CENTURYIII: turns on and off ALT mode) &lt;br /&gt;
&lt;br /&gt;
Button settings:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;button n=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;repeatable type=&amp;quot;bool&amp;quot;&amp;gt;false&amp;lt;/repeatable&amp;gt;&lt;br /&gt;
    &amp;lt;desc&amp;gt;Autopilot Toggle / HDG mode toggle / PITCH mode / ALT mode &amp;lt;/desc&amp;gt;&lt;br /&gt;
   &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;condition&amp;gt;&amp;lt;property&amp;gt;/autopilot/CENTURYIII/controls/roll/button-state&amp;lt;/property&amp;gt;&amp;lt;/condition&amp;gt;&lt;br /&gt;
       &amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;property&amp;gt;autopilot/CENTURYIII/controls/disconnect&amp;lt;/property&amp;gt;&lt;br /&gt;
      &amp;lt;value&amp;gt;1&amp;lt;/value&amp;gt;&lt;br /&gt;
     &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;condition&amp;gt;&amp;lt;not&amp;gt;&amp;lt;property&amp;gt;/autopilot/CENTURYIII/controls/roll/button-state&amp;lt;/property&amp;gt;&amp;lt;/not&amp;gt;&amp;lt;/condition&amp;gt;&lt;br /&gt;
       &amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;property&amp;gt;autopilot/CENTURYIII/controls/roll/button-on&amp;lt;/property&amp;gt;&lt;br /&gt;
      &amp;lt;value&amp;gt;1&amp;lt;/value&amp;gt;&lt;br /&gt;
     &amp;lt;/binding&amp;gt;&lt;br /&gt;
      &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;script&amp;gt;&lt;br /&gt;
       if ( autopilottype == 1 ) { &lt;br /&gt;
         kap140.apButton();&lt;br /&gt;
         if ( getprop(&amp;quot;autopilot/KAP140/locks/roll-mode&amp;quot;) == 0 ) {&lt;br /&gt;
           gui.popupTip(&amp;quot;AP off&amp;quot;);&lt;br /&gt;
         } else {&lt;br /&gt;
           gui.popupTip(&amp;quot;AP on&amp;quot;);&lt;br /&gt;
         }&lt;br /&gt;
       } &lt;br /&gt;
      &amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;mod-up&amp;gt;&lt;br /&gt;
      &amp;lt;binding&amp;gt;&lt;br /&gt;
        &amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;autopilot/CENTURYIII/controls/disconnect&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/binding&amp;gt;&lt;br /&gt;
     &amp;lt;binding&amp;gt;&lt;br /&gt;
        &amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;autopilot/CENTURYIII/controls/roll/button-on&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
        &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&amp;lt;script&amp;gt;&lt;br /&gt;
        if ( autopilottype == 2 ) { &lt;br /&gt;
          &amp;lt;!-- CENTURYIII --&amp;gt;&lt;br /&gt;
          if ( getprop(&amp;quot;autopilot/CENTURYIII/controls/roll/button-state&amp;quot;) ) {&lt;br /&gt;
             gui.popupTip(&amp;quot;AP ROLL on&amp;quot;);&lt;br /&gt;
           } else {&lt;br /&gt;
             gui.popupTip(&amp;quot;AP ROLL off&amp;quot;);&lt;br /&gt;
           } &lt;br /&gt;
         }&lt;br /&gt;
       &amp;lt;/script&amp;gt;&lt;br /&gt;
       &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/mod-up&amp;gt; &lt;br /&gt;
  &amp;lt;mod-shift&amp;gt; &lt;br /&gt;
   &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;condition&amp;gt;&amp;lt;property&amp;gt;/autopilot/CENTURYIII/controls/hdg/button-state&amp;lt;/property&amp;gt;&amp;lt;/condition&amp;gt;&lt;br /&gt;
       &amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;property&amp;gt;autopilot/CENTURYIII/controls/hdg/button-off&amp;lt;/property&amp;gt;&lt;br /&gt;
      &amp;lt;value&amp;gt;1&amp;lt;/value&amp;gt;&lt;br /&gt;
     &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;condition&amp;gt;&amp;lt;not&amp;gt;&amp;lt;property&amp;gt;/autopilot/CENTURYIII/controls/hdg/button-state&amp;lt;/property&amp;gt;&amp;lt;/not&amp;gt;&amp;lt;/condition&amp;gt;&lt;br /&gt;
       &amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;property&amp;gt;autopilot/CENTURYIII/controls/hdg/button-on&amp;lt;/property&amp;gt;&lt;br /&gt;
      &amp;lt;value&amp;gt;1&amp;lt;/value&amp;gt;&lt;br /&gt;
     &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;script&amp;gt;&lt;br /&gt;
       if ( autopilottype == 1 ) { &lt;br /&gt;
         kap140.hdgButton();&lt;br /&gt;
         if ( getprop(&amp;quot;autopilot/KAP140/locks/roll-mode&amp;quot;) == 2 ) {&lt;br /&gt;
           gui.popupTip(&amp;quot;AP HDG&amp;quot;);&lt;br /&gt;
         } elsif ( getprop(&amp;quot;autopilot/KAP140/locks/roll-mode&amp;quot;) == 1 )   {&lt;br /&gt;
           gui.popupTip(&amp;quot;AP ROL&amp;quot;);&lt;br /&gt;
         }&lt;br /&gt;
       } &lt;br /&gt;
      &amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
   &amp;lt;mod-up&amp;gt;&lt;br /&gt;
      &amp;lt;binding&amp;gt;&lt;br /&gt;
        &amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;autopilot/CENTURYIII/controls/hdg/button-off&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/binding&amp;gt;&lt;br /&gt;
     &amp;lt;binding&amp;gt;&lt;br /&gt;
        &amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;autopilot/CENTURYIII/controls/hdg/button-on&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/binding&amp;gt;&lt;br /&gt;
      &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&amp;lt;script&amp;gt;&lt;br /&gt;
       if ( autopilottype == 2 ) { &lt;br /&gt;
          &amp;lt;!-- CENTURYIII --&amp;gt;&lt;br /&gt;
         if ( getprop(&amp;quot;autopilot/CENTURYIII/controls/hdg/button-state&amp;quot;) ) {&lt;br /&gt;
           gui.popupTip(&amp;quot;AP HDG on&amp;quot;);&lt;br /&gt;
         } else {&lt;br /&gt;
           gui.popupTip(&amp;quot;AP HDG off&amp;quot;);&lt;br /&gt;
         }&lt;br /&gt;
        }&lt;br /&gt;
      &amp;lt;/script&amp;gt;&lt;br /&gt;
     &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/mod-up&amp;gt; &lt;br /&gt;
  &amp;lt;/mod-shift&amp;gt;&lt;br /&gt;
  &amp;lt;mod-ctrl&amp;gt; &lt;br /&gt;
   &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;condition&amp;gt;&amp;lt;property&amp;gt;/autopilot/CENTURYIII/controls/pitch/button-state&amp;lt;/property&amp;gt;&amp;lt;/condition&amp;gt;&lt;br /&gt;
       &amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;property&amp;gt;autopilot/CENTURYIII/controls/pitch/button-off&amp;lt;/property&amp;gt;&lt;br /&gt;
      &amp;lt;value&amp;gt;1&amp;lt;/value&amp;gt;&lt;br /&gt;
     &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;condition&amp;gt;&amp;lt;not&amp;gt;&amp;lt;property&amp;gt;/autopilot/CENTURYIII/controls/pitch/button-state&amp;lt;/property&amp;gt;&amp;lt;/not&amp;gt;&amp;lt;/condition&amp;gt;&lt;br /&gt;
       &amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;property&amp;gt;autopilot/CENTURYIII/controls/pitch/button-on&amp;lt;/property&amp;gt;&lt;br /&gt;
      &amp;lt;value&amp;gt;1&amp;lt;/value&amp;gt;&lt;br /&gt;
     &amp;lt;/binding&amp;gt;&lt;br /&gt;
   &amp;lt;mod-up&amp;gt;&lt;br /&gt;
      &amp;lt;binding&amp;gt;&lt;br /&gt;
        &amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;autopilot/CENTURYIII/controls/pitch/button-off&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/binding&amp;gt;&lt;br /&gt;
     &amp;lt;binding&amp;gt;&lt;br /&gt;
        &amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;autopilot/CENTURYIII/controls/pitch/button-on&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
        &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&amp;lt;script&amp;gt;&lt;br /&gt;
        if ( autopilottype == 2 ) { &lt;br /&gt;
          &amp;lt;!-- CENTURYIII --&amp;gt;&lt;br /&gt;
          if ( getprop(&amp;quot;autopilot/CENTURYIII/controls/pitch/button-state&amp;quot;) ) {&lt;br /&gt;
             gui.popupTip(&amp;quot;AP PITCH on&amp;quot;);&lt;br /&gt;
           } else {&lt;br /&gt;
             gui.popupTip(&amp;quot;AP PITCH off&amp;quot;);&lt;br /&gt;
           } &lt;br /&gt;
         }&lt;br /&gt;
        &amp;lt;/script&amp;gt;&lt;br /&gt;
      &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/mod-up&amp;gt; &lt;br /&gt;
  &amp;lt;/mod-ctrl&amp;gt;&lt;br /&gt;
  &amp;lt;mod-alt&amp;gt; &lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;script&amp;gt;if (autopilottype==1 ) {&lt;br /&gt;
       kap140.altButton();&lt;br /&gt;
       if ( getprop(&amp;quot;autopilot/KAP140/locks/pitch-mode&amp;quot;) == 2 ) {&lt;br /&gt;
         gui.popupTip(&amp;quot;AP ALT&amp;quot;);&lt;br /&gt;
       } elsif ( getprop(&amp;quot;autopilot/KAP140/locks/pitch-mode&amp;quot;) == 1 )   {&lt;br /&gt;
         gui.popupTip(&amp;quot;AP VS&amp;quot;);&lt;br /&gt;
       }&lt;br /&gt;
       }&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
   &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;condition&amp;gt;&amp;lt;property&amp;gt;/autopilot/CENTURYIII/controls/alt/button-state&amp;lt;/property&amp;gt;&amp;lt;/condition&amp;gt;&lt;br /&gt;
       &amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;property&amp;gt;autopilot/CENTURYIII/controls/alt/button-off&amp;lt;/property&amp;gt;&lt;br /&gt;
      &amp;lt;value&amp;gt;true&amp;lt;/value&amp;gt;&lt;br /&gt;
     &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;condition&amp;gt;&amp;lt;not&amp;gt;&amp;lt;property&amp;gt;/autopilot/CENTURYIII/controls/alt/button-state&amp;lt;/property&amp;gt;&amp;lt;/not&amp;gt;&amp;lt;/condition&amp;gt;&lt;br /&gt;
       &amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;property&amp;gt;autopilot/CENTURYIII/controls/alt/button-on&amp;lt;/property&amp;gt;&lt;br /&gt;
      &amp;lt;value&amp;gt;true&amp;lt;/value&amp;gt;&lt;br /&gt;
     &amp;lt;/binding&amp;gt;&lt;br /&gt;
   &amp;lt;mod-up&amp;gt;&lt;br /&gt;
      &amp;lt;binding&amp;gt;&lt;br /&gt;
        &amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;autopilot/CENTURYIII/controls/alt/button-off&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;value&amp;gt;false&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/binding&amp;gt;&lt;br /&gt;
     &amp;lt;binding&amp;gt;&lt;br /&gt;
        &amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;autopilot/CENTURYIII/controls/alt/button-on&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;value&amp;gt;false&amp;lt;/value&amp;gt;&lt;br /&gt;
      &amp;lt;/binding&amp;gt;&lt;br /&gt;
      &amp;lt;binding&amp;gt;&lt;br /&gt;
        &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
        &amp;lt;script&amp;gt;&lt;br /&gt;
           if(autopilottype==2) {&lt;br /&gt;
              if ( getprop(&amp;quot;autopilot/CENTURYIII/controls/alt/button-state&amp;quot;)) {&lt;br /&gt;
                  gui.popupTip(&amp;quot;AP ALT on&amp;quot;);&lt;br /&gt;
              } else {&lt;br /&gt;
                  gui.popupTip(&amp;quot;AP ALT off&amp;quot;);&lt;br /&gt;
              }&lt;br /&gt;
           }&lt;br /&gt;
        &amp;lt;/script&amp;gt;&lt;br /&gt;
     &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/mod-up&amp;gt; &lt;br /&gt;
  &amp;lt;/mod-alt&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Horizontal mode selection ===&lt;br /&gt;
Button 5 controls the source of course selection in HDG mode (for the LOC and APR modes, the vertical mode is also affected, of course). It works quite differently in the two autopilots:&lt;br /&gt;
* KAP140: (no modifier) NAV mode: track radial of VOR1 beacon. Press again to go back to follow set heading&amp;lt;br /&amp;gt;&lt;br /&gt;
(SHIFT)	APR mode: track ILS beacon (set radial to runway orientation). If glideslope is approached from below in ALT mode, lock on to localiser &amp;lt;br /&amp;gt;&lt;br /&gt;
(CTRL)  REV mode: track reverse ILS direction&amp;lt;br /&amp;gt;&lt;br /&gt;
* CENTURYIII: Move mode selector button to the right (clockwise) &amp;lt;br /&amp;gt;&lt;br /&gt;
(SHIFT) Move mode selector button to the left (anti-clockwise) &amp;lt;br /&amp;gt;&lt;br /&gt;
Both directions are wrapped, i.e. you can keep pressing the button until you arrive at the selected mode. In turn, the modes selected are: NAV, OMNI, HDG, LOC NORM, LOC REV.  Please refer to the CENTURYIII manual for further explanation. &lt;br /&gt;
&lt;br /&gt;
Initialisation:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
     var showhorizontalmode=func() {&lt;br /&gt;
     if ( autopilottype == 1 ) {&lt;br /&gt;
       if ( getprop(&amp;quot;autopilot/KAP140/locks/roll-arm&amp;quot;) == 1 ) {&lt;br /&gt;
         gui.popupTip(&amp;quot;AP NAV&amp;quot;);&lt;br /&gt;
       } elsif ( getprop(&amp;quot;autopilot/KAP140/locks/roll-arm&amp;quot;) == 2 ) {&lt;br /&gt;
         gui.popupTip(&amp;quot;AP APR&amp;quot;);&lt;br /&gt;
       } elsif ( getprop(&amp;quot;autopilot/KAP140/locks/roll-arm&amp;quot;) == 3 ) {&lt;br /&gt;
         gui.popupTip(&amp;quot;AP REV&amp;quot;);&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
     if (autopilottype == 2) {&lt;br /&gt;
        horizontalmode=getprop(&amp;quot;autopilot/CENTURYIII/controls/mode&amp;quot;);&lt;br /&gt;
        if ( horizontalmode==0) {&lt;br /&gt;
          gui.popupTip(&amp;quot;APmode NAV&amp;quot;);&lt;br /&gt;
        } elsif ( horizontalmode==1) {&lt;br /&gt;
          gui.popupTip(&amp;quot;APmode OMNI&amp;quot;);&lt;br /&gt;
        } elsif ( horizontalmode==2) {&lt;br /&gt;
          gui.popupTip(&amp;quot;APmode HDG&amp;quot;);&lt;br /&gt;
        } elsif ( horizontalmode==3) {&lt;br /&gt;
          gui.popupTip(&amp;quot;APmode LOC&amp;quot;);&lt;br /&gt;
        } elsif ( horizontalmode==4) {&lt;br /&gt;
          gui.popupTip(&amp;quot;APmode REV&amp;quot;);&lt;br /&gt;
        } &lt;br /&gt;
     }&lt;br /&gt;
    }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Button settings:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;button n=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;repeatable type=&amp;quot;bool&amp;quot;&amp;gt;false&amp;lt;/repeatable&amp;gt;&lt;br /&gt;
    &amp;lt;desc&amp;gt;KAP140: NAV / APR / REV ; CENTURYIII:&lt;br /&gt;
Move Hdg select button to the right (wrap)&amp;lt;/desc&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
           &amp;lt;command&amp;gt;property-adjust&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;property&amp;gt;autopilot/CENTURYIII/controls/mode&amp;lt;/property&amp;gt;&lt;br /&gt;
            &amp;lt;step type=&amp;quot;double&amp;quot;&amp;gt;1&amp;lt;/step&amp;gt;&lt;br /&gt;
     &amp;lt;min&amp;gt;0&amp;lt;/min&amp;gt;&lt;br /&gt;
      &amp;lt;max&amp;gt;5&amp;lt;/max&amp;gt;    &lt;br /&gt;
      &amp;lt;wrap&amp;gt;true&amp;lt;/wrap&amp;gt; &lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;script&amp;gt;&lt;br /&gt;
       if (autopilottype==1) { &lt;br /&gt;
         kap140.navButton(); }&lt;br /&gt;
       showhorizontalmode();&lt;br /&gt;
     &amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
  &amp;lt;mod-shift&amp;gt; &lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
           &amp;lt;command&amp;gt;property-adjust&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;property&amp;gt;autopilot/CENTURYIII/controls/mode&amp;lt;/property&amp;gt;&lt;br /&gt;
            &amp;lt;step type=&amp;quot;double&amp;quot;&amp;gt;-1&amp;lt;/step&amp;gt;&lt;br /&gt;
     &amp;lt;min&amp;gt;0&amp;lt;/min&amp;gt;&lt;br /&gt;
      &amp;lt;max&amp;gt;5&amp;lt;/max&amp;gt;    &lt;br /&gt;
      &amp;lt;wrap&amp;gt;true&amp;lt;/wrap&amp;gt; &lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;script&amp;gt;       &lt;br /&gt;
        if (autopilottype==1) { kap140.aprButton();}&lt;br /&gt;
       showhorizontalmode();&lt;br /&gt;
      &amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
  &amp;lt;/mod-shift&amp;gt;&lt;br /&gt;
  &amp;lt;mod-ctrl&amp;gt; &lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;script&amp;gt;        if (autopilottype==1) { kap140.revButton();}&lt;br /&gt;
       showhorizontalmode();&lt;br /&gt;
     &amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
  &amp;lt;/mod-ctrl&amp;gt;&lt;br /&gt;
&amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Vertical mode pitch or vertical speed selector ===&lt;br /&gt;
Control the vertical mode.&lt;br /&gt;
&lt;br /&gt;
* KAP140: Button 6 increases target VS by 100 ft/min, button 7 decreases target VS by 100 ft/min&lt;br /&gt;
* CENTURYIII: Button 6 smoothly lowers pitch (nose down), button 7 increases pitch (nose up)&lt;br /&gt;
&lt;br /&gt;
The opposite way these buttons work for the two types of autopilot arises from the arrangement in the cockpit. For the CENTURYIII, the pitch is controlled by a wheel, which needs to be moved up to lower the nose (similar to elevator trim wheels), whereas for the KAP140 two buttons are arranged such that the top button increases target VS. &lt;br /&gt;
&lt;br /&gt;
Initialisation:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
     var showvertical=func()  {if ( autopilottype==1 ) {&lt;br /&gt;
            if ( getprop(&amp;quot;autopilot/KAP140/locks/pitch-mode&amp;quot;) == 1 )  {&lt;br /&gt;
               gui.popupTip(sprintf(&amp;quot;AP VS&lt;br /&gt;
%d&amp;quot;,getprop(&amp;quot;autopilot/KAP140/settings/target-pressure-rate&amp;quot;)*(-58000)));&lt;br /&gt;
            }&lt;br /&gt;
         } elsif ( autopilottype==2 ) {&lt;br /&gt;
            gui.popupTip(sprintf(&amp;quot;AP Pitch:%4.1f&amp;quot;,getprop(&amp;quot;autopilot/CENTURYIII/settings/pitch-wheel-deg&amp;quot;)));&lt;br /&gt;
         }}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Button settings:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;button n=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;repeatable type=&amp;quot;bool&amp;quot;&amp;gt;false&amp;lt;/repeatable&amp;gt;&lt;br /&gt;
    &amp;lt;desc&amp;gt;AP-VS (KAP140:increase VS, CENTURYII: pitch down&amp;lt;/desc&amp;gt;&lt;br /&gt;
&amp;lt;!-- KAP140 --&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;script&amp;gt;if (autopilottype==1) {&lt;br /&gt;
         kap140.upButton();&lt;br /&gt;
      }&lt;br /&gt;
      showvertical(); &lt;br /&gt;
     &amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;!-- CENTURYIII --&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;property-interpolate&amp;lt;/command&amp;gt;&lt;br /&gt;
       &amp;lt;property&amp;gt;/autopilot/CENTURYIII/settings/pitch-wheel-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
       &amp;lt;value type=&amp;quot;double&amp;quot;&amp;gt;-10&amp;lt;/value&amp;gt;&lt;br /&gt;
       &amp;lt;rate&amp;gt;4&amp;lt;/rate&amp;gt;&lt;br /&gt;
     &amp;lt;/binding&amp;gt;&lt;br /&gt;
     &amp;lt;mod-up&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;property-interpolate&amp;lt;/command&amp;gt;&lt;br /&gt;
       &amp;lt;property&amp;gt;/autopilot/CENTURYIII/settings/pitch-wheel-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
       &amp;lt;property&amp;gt;/autopilot/CENTURYIII/settings/pitch-wheel-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
       &amp;lt;rate&amp;gt;1&amp;lt;/rate&amp;gt;&lt;br /&gt;
     &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;script&amp;gt;&lt;br /&gt;
        if(autopilottype==2) { showvertical(); } &lt;br /&gt;
     &amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
     &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
  &amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  #7: Autopilot VS down&lt;br /&gt;
  &amp;lt;button n=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;repeatable type=&amp;quot;bool&amp;quot;&amp;gt;false&amp;lt;/repeatable&amp;gt;&lt;br /&gt;
    &amp;lt;desc&amp;gt;AP-dn&amp;lt;/desc&amp;gt;&lt;br /&gt;
&amp;lt;!-- KAP140 --&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;script&amp;gt;if (autopilottype==1) {&lt;br /&gt;
         kap140.downButton();&lt;br /&gt;
      }&lt;br /&gt;
      showvertical(); &lt;br /&gt;
     &amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;!-- CENTURYIII --&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;property-interpolate&amp;lt;/command&amp;gt;&lt;br /&gt;
       &amp;lt;property&amp;gt;/autopilot/CENTURYIII/settings/pitch-wheel-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
       &amp;lt;value type=&amp;quot;double&amp;quot;&amp;gt;10&amp;lt;/value&amp;gt;&lt;br /&gt;
       &amp;lt;rate&amp;gt;4&amp;lt;/rate&amp;gt;&lt;br /&gt;
     &amp;lt;/binding&amp;gt;&lt;br /&gt;
     &amp;lt;mod-up&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;property-interpolate&amp;lt;/command&amp;gt;&lt;br /&gt;
       &amp;lt;property&amp;gt;/autopilot/CENTURYIII/settings/pitch-wheel-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
       &amp;lt;property&amp;gt;/autopilot/CENTURYIII/settings/pitch-wheel-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
       &amp;lt;rate&amp;gt;1&amp;lt;/rate&amp;gt;&lt;br /&gt;
     &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;script&amp;gt;&lt;br /&gt;
        if(autopilottype==2) { showvertical(); } &lt;br /&gt;
     &amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
     &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
  &amp;lt;/button&amp;gt;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Horizontal mode direction selector ===&lt;br /&gt;
Adjust heading bug (button 8 clockwise and button 9 anti-clockwise).&lt;br /&gt;
&lt;br /&gt;
With modifiers:&amp;lt;br /&amp;gt;&lt;br /&gt;
(SHIFT)	coarse heading bug adjustment&amp;lt;br /&amp;gt;&lt;br /&gt;
(CTRL)  adjust bank angle  (CENTURY III only!)&amp;lt;br /&amp;gt;&lt;br /&gt;
(ALT)   adjust radial of NAV1  (can also be used without autopilot)&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Initialisation:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot; &amp;gt;&lt;br /&gt;
    var showhdgbug=func() {if ( autopilottype==1 ) {&lt;br /&gt;
                 gui.popupTip(sprintf(&amp;quot;Heading Bug:%3d&amp;quot;,getprop(&amp;quot;autopilot/settings/heading-bug-deg&amp;quot;))); &lt;br /&gt;
              } elsif ( autopilottype==2 ) {&lt;br /&gt;
                gui.popupTip(sprintf(&amp;quot;Hdg Bug:%3d&amp;quot;,getprop(&amp;quot;instrumentation/kcs55/ki525/selected-heading-deg&amp;quot;)));&lt;br /&gt;
              }}&lt;br /&gt;
     var showroll=func() { if ( autopilottype==2 ) {&lt;br /&gt;
                gui.popupTip(sprintf(&amp;quot;AP Roll:%2d&amp;quot;,getprop(&amp;quot;autopilot/CENTURYIII/settings/roll-knob-deg&amp;quot;)));}}&lt;br /&gt;
     var showcourseselect=func() {&lt;br /&gt;
                if ( autopilottype==1 ) {&lt;br /&gt;
                  gui.popupTip(sprintf(&amp;quot;Course select:%2d&amp;quot;,getprop(&amp;quot;instrumentation/nav/radials/selected-deg&amp;quot;)));&lt;br /&gt;
                } elsif ( autopilottype==2 ) {&lt;br /&gt;
                  gui.popupTip(sprintf(&amp;quot;Course select:%2d&amp;quot;,getprop(&amp;quot;instrumentation/kcs55/ki525/selected-course-deg&amp;quot;)));}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Button definition:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot; &amp;gt;&lt;br /&gt;
&amp;lt;button n=&amp;quot;8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;desc&amp;gt;Heading bug CW / Heading bug CW large steps /&lt;br /&gt;
(CENTURYIII:)Roll knob turn right / Course select CW&amp;lt;/desc&amp;gt;&lt;br /&gt;
      &amp;lt;repeatable&amp;gt;true&amp;lt;/repeatable&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;property-adjust&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;property&amp;gt;/autopilot/settings/heading-bug-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
            &amp;lt;step type=&amp;quot;double&amp;quot;&amp;gt;0.25&amp;lt;/step&amp;gt;&lt;br /&gt;
    &amp;lt;min&amp;gt;000&amp;lt;/min&amp;gt;    &amp;lt;!-- the property will never be allowed to go below 0 --&amp;gt;&lt;br /&gt;
      &amp;lt;max&amp;gt;360&amp;lt;/max&amp;gt;    &amp;lt;!-- ...or above 360 --&amp;gt;&lt;br /&gt;
      &amp;lt;wrap&amp;gt;true&amp;lt;/wrap&amp;gt; &amp;lt;!-- when we hit 361, wrap back to 0 and vice-versa --&amp;gt;&lt;br /&gt;
         &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;property-adjust&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;property&amp;gt;instrumentation/kcs55/ki525/selected-heading-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
            &amp;lt;step type=&amp;quot;double&amp;quot;&amp;gt;0.25&amp;lt;/step&amp;gt;&lt;br /&gt;
     &amp;lt;min&amp;gt;000&amp;lt;/min&amp;gt;    &amp;lt;!-- the property will never be allowed to go below 0 --&amp;gt;&lt;br /&gt;
      &amp;lt;max&amp;gt;360&amp;lt;/max&amp;gt;    &amp;lt;!-- ...or above 360 --&amp;gt;&lt;br /&gt;
      &amp;lt;wrap&amp;gt;true&amp;lt;/wrap&amp;gt; &amp;lt;!-- when we hit 361, wrap back to 0 and vice-versa --&amp;gt;&lt;br /&gt;
         &amp;lt;/binding&amp;gt;&lt;br /&gt;
         &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
             &amp;lt;script&amp;gt;&lt;br /&gt;
             showhdgbug();&lt;br /&gt;
          &amp;lt;/script&amp;gt;&lt;br /&gt;
         &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;mod-shift&amp;gt;&lt;br /&gt;
        &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
             &amp;lt;script&amp;gt;&lt;br /&gt;
             showhdgbug();&lt;br /&gt;
             &amp;lt;/script&amp;gt;&lt;br /&gt;
         &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;property-adjust&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;property&amp;gt;/autopilot/settings/heading-bug-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
            &amp;lt;step type=&amp;quot;double&amp;quot;&amp;gt;2.5&amp;lt;/step&amp;gt;&lt;br /&gt;
      &amp;lt;min&amp;gt;000&amp;lt;/min&amp;gt;    &amp;lt;!-- the property will never be allowed to go below 0 --&amp;gt;&lt;br /&gt;
      &amp;lt;max&amp;gt;360&amp;lt;/max&amp;gt;    &amp;lt;!-- ...or above 360 --&amp;gt;&lt;br /&gt;
      &amp;lt;wrap&amp;gt;true&amp;lt;/wrap&amp;gt; &amp;lt;!-- when we hit 361, wrap back to 0 and vice-versa --&amp;gt;&lt;br /&gt;
         &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;property-adjust&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;property&amp;gt;instrumentation/kcs55/ki525/selected-heading-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
            &amp;lt;step type=&amp;quot;double&amp;quot;&amp;gt;2.5&amp;lt;/step&amp;gt;&lt;br /&gt;
     &amp;lt;min&amp;gt;000&amp;lt;/min&amp;gt;    &amp;lt;!-- the property will never be allowed to go below 0 --&amp;gt;&lt;br /&gt;
      &amp;lt;max&amp;gt;360&amp;lt;/max&amp;gt;    &amp;lt;!-- ...or above 360 --&amp;gt;&lt;br /&gt;
      &amp;lt;wrap&amp;gt;true&amp;lt;/wrap&amp;gt; &amp;lt;!-- when we hit 361, wrap back to 0 and vice-versa --&amp;gt;&lt;br /&gt;
         &amp;lt;/binding&amp;gt;&lt;br /&gt;
         &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
             &amp;lt;script&amp;gt;&lt;br /&gt;
              showhdgbug();&lt;br /&gt;
          &amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/mod-shift&amp;gt;&lt;br /&gt;
   &amp;lt;mod-ctrl&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;property-adjust&amp;lt;/command&amp;gt;&lt;br /&gt;
       &amp;lt;property&amp;gt;/autopilot/CENTURYIII/settings/roll-knob-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
       &amp;lt;step type=&amp;quot;double&amp;quot;&amp;gt;0.5&amp;lt;/step&amp;gt;&lt;br /&gt;
       &amp;lt;max&amp;gt;30&amp;lt;/max&amp;gt;&lt;br /&gt;
     &amp;lt;/binding&amp;gt;&lt;br /&gt;
     &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
             &amp;lt;script&amp;gt;&lt;br /&gt;
             showroll();&lt;br /&gt;
          &amp;lt;/script&amp;gt;&lt;br /&gt;
     &amp;lt;/binding&amp;gt;&lt;br /&gt;
   &amp;lt;/mod-ctrl&amp;gt;&lt;br /&gt;
 &amp;lt;mod-alt&amp;gt;&lt;br /&gt;
   &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;property-adjust&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;property&amp;gt;instrumentation/nav/radials/selected-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
            &amp;lt;step type=&amp;quot;double&amp;quot;&amp;gt;0.25&amp;lt;/step&amp;gt;&lt;br /&gt;
     &amp;lt;min&amp;gt;000&amp;lt;/min&amp;gt;    &amp;lt;!-- the property will never be allowed to go below 0 --&amp;gt;&lt;br /&gt;
      &amp;lt;max&amp;gt;360&amp;lt;/max&amp;gt;    &amp;lt;!-- ...or above 360 --&amp;gt;&lt;br /&gt;
      &amp;lt;wrap&amp;gt;true&amp;lt;/wrap&amp;gt; &amp;lt;!-- when we hit 361, wrap back to 0 and vice-versa --&amp;gt;&lt;br /&gt;
         &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;property-adjust&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;property&amp;gt;instrumentation/kcs55/ki525/selected-course-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
            &amp;lt;step type=&amp;quot;double&amp;quot;&amp;gt;0.25&amp;lt;/step&amp;gt;&lt;br /&gt;
     &amp;lt;min&amp;gt;000&amp;lt;/min&amp;gt;    &amp;lt;!-- the property will never be allowed to go below 0 --&amp;gt;&lt;br /&gt;
      &amp;lt;max&amp;gt;360&amp;lt;/max&amp;gt;    &amp;lt;!-- ...or above 360 --&amp;gt;&lt;br /&gt;
      &amp;lt;wrap&amp;gt;true&amp;lt;/wrap&amp;gt; &amp;lt;!-- when we hit 361, wrap back to 0 and vice-versa --&amp;gt;&lt;br /&gt;
         &amp;lt;/binding&amp;gt;&lt;br /&gt;
     &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
             &amp;lt;script&amp;gt;&lt;br /&gt;
             showcourseselect();&lt;br /&gt;
          &amp;lt;/script&amp;gt;&lt;br /&gt;
     &amp;lt;/binding&amp;gt;&lt;br /&gt;
 &amp;lt;/mod-alt&amp;gt;&lt;br /&gt;
  &amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;button n=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;desc&amp;gt;Heading bug CCW / Heading bug CCW large steps&amp;lt;/desc&amp;gt;&lt;br /&gt;
      &amp;lt;repeatable&amp;gt;true&amp;lt;/repeatable&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;property-adjust&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;property&amp;gt;/autopilot/settings/heading-bug-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
            &amp;lt;step type=&amp;quot;double&amp;quot;&amp;gt;-0.25&amp;lt;/step&amp;gt;&lt;br /&gt;
         &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;property-adjust&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;property&amp;gt;instrumentation/kcs55/ki525/selected-heading-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
            &amp;lt;step type=&amp;quot;double&amp;quot;&amp;gt;-0.25&amp;lt;/step&amp;gt;&lt;br /&gt;
     &amp;lt;min&amp;gt;000&amp;lt;/min&amp;gt;    &amp;lt;!-- the property will never be allowed to go below 0 --&amp;gt;&lt;br /&gt;
      &amp;lt;max&amp;gt;360&amp;lt;/max&amp;gt;    &amp;lt;!-- ...or above 360 --&amp;gt;&lt;br /&gt;
      &amp;lt;wrap&amp;gt;true&amp;lt;/wrap&amp;gt; &amp;lt;!-- when we hit 361, wrap back to 0 and vice-versa --&amp;gt;&lt;br /&gt;
         &amp;lt;/binding&amp;gt;&lt;br /&gt;
         &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
             &amp;lt;script&amp;gt;&lt;br /&gt;
                 showhdgbug();&lt;br /&gt;
          &amp;lt;/script&amp;gt;&lt;br /&gt;
         &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;mod-shift&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;property-adjust&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;property&amp;gt;/autopilot/settings/heading-bug-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
            &amp;lt;step type=&amp;quot;double&amp;quot;&amp;gt;-2.5&amp;lt;/step&amp;gt;&lt;br /&gt;
      &amp;lt;min&amp;gt;000&amp;lt;/min&amp;gt;    &amp;lt;!-- the property will never be allowed to go below 0 --&amp;gt;&lt;br /&gt;
      &amp;lt;max&amp;gt;360&amp;lt;/max&amp;gt;    &amp;lt;!-- ...or above 360 --&amp;gt;&lt;br /&gt;
      &amp;lt;wrap&amp;gt;true&amp;lt;/wrap&amp;gt; &amp;lt;!-- when we hit 361, wrap back to 0 and vice-versa --&amp;gt;&lt;br /&gt;
         &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;property-adjust&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;property&amp;gt;instrumentation/kcs55/ki525/selected-heading-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
            &amp;lt;step type=&amp;quot;double&amp;quot;&amp;gt;-2.5&amp;lt;/step&amp;gt;&lt;br /&gt;
     &amp;lt;min&amp;gt;000&amp;lt;/min&amp;gt;    &amp;lt;!-- the property will never be allowed to go below 0 --&amp;gt;&lt;br /&gt;
      &amp;lt;max&amp;gt;360&amp;lt;/max&amp;gt;    &amp;lt;!-- ...or above 360 --&amp;gt;&lt;br /&gt;
      &amp;lt;wrap&amp;gt;true&amp;lt;/wrap&amp;gt; &amp;lt;!-- when we hit 361, wrap back to 0 and vice-versa --&amp;gt;&lt;br /&gt;
         &amp;lt;/binding&amp;gt;&lt;br /&gt;
         &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
             &amp;lt;script&amp;gt;&lt;br /&gt;
              showhdgbug();&lt;br /&gt;
          &amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;/mod-shift&amp;gt;&lt;br /&gt;
   &amp;lt;mod-ctrl&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
      &amp;lt;command&amp;gt;property-adjust&amp;lt;/command&amp;gt;&lt;br /&gt;
       &amp;lt;property&amp;gt;/autopilot/CENTURYIII/settings/roll-knob-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
       &amp;lt;step type=&amp;quot;double&amp;quot;&amp;gt;-0.5&amp;lt;/step&amp;gt;&lt;br /&gt;
       &amp;lt;min&amp;gt;-30&amp;lt;/min&amp;gt;&lt;br /&gt;
     &amp;lt;/binding&amp;gt;&lt;br /&gt;
     &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
             &amp;lt;script&amp;gt;&lt;br /&gt;
                showroll();&lt;br /&gt;
          &amp;lt;/script&amp;gt;&lt;br /&gt;
     &amp;lt;/binding&amp;gt;&lt;br /&gt;
   &amp;lt;/mod-ctrl&amp;gt;&lt;br /&gt;
 &amp;lt;mod-alt&amp;gt;&lt;br /&gt;
   &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;property-adjust&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;property&amp;gt;instrumentation/nav/radials/selected-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
            &amp;lt;step type=&amp;quot;double&amp;quot;&amp;gt;-0.25&amp;lt;/step&amp;gt;&lt;br /&gt;
     &amp;lt;min&amp;gt;000&amp;lt;/min&amp;gt;    &amp;lt;!-- the property will never be allowed to go below 0 --&amp;gt;&lt;br /&gt;
      &amp;lt;max&amp;gt;360&amp;lt;/max&amp;gt;    &amp;lt;!-- ...or above 360 --&amp;gt;&lt;br /&gt;
      &amp;lt;wrap&amp;gt;true&amp;lt;/wrap&amp;gt; &amp;lt;!-- when we hit 361, wrap back to 0 and vice-versa --&amp;gt;&lt;br /&gt;
         &amp;lt;/binding&amp;gt;&lt;br /&gt;
    &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;property-adjust&amp;lt;/command&amp;gt;&lt;br /&gt;
            &amp;lt;property&amp;gt;instrumentation/kcs55/ki525/selected-course-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
            &amp;lt;step type=&amp;quot;double&amp;quot;&amp;gt;-0.25&amp;lt;/step&amp;gt;&lt;br /&gt;
     &amp;lt;min&amp;gt;000&amp;lt;/min&amp;gt;    &amp;lt;!-- the property will never be allowed to go below 0 --&amp;gt;&lt;br /&gt;
      &amp;lt;max&amp;gt;360&amp;lt;/max&amp;gt;    &amp;lt;!-- ...or above 360 --&amp;gt;&lt;br /&gt;
      &amp;lt;wrap&amp;gt;true&amp;lt;/wrap&amp;gt; &amp;lt;!-- when we hit 361, wrap back to 0 and vice-versa --&amp;gt;&lt;br /&gt;
         &amp;lt;/binding&amp;gt;&lt;br /&gt;
     &amp;lt;binding&amp;gt;&lt;br /&gt;
            &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
             &amp;lt;script&amp;gt;&lt;br /&gt;
               showcourseselect();&lt;br /&gt;
          &amp;lt;/script&amp;gt;&lt;br /&gt;
     &amp;lt;/binding&amp;gt;&lt;br /&gt;
 &amp;lt;/mod-alt&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
For convenience all of the above bindings are summarised into one file accessible at [http://pastebin.com/2HM9S1df pastebin] (at the time of writing identical to the combination of the snippets above but of course the pastebin might not always keep up with the Wiki - beware)&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Joysticks and Yokes]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Key_commands_compared_to_other_simulators&amp;diff=102411</id>
		<title>Key commands compared to other simulators</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Key_commands_compared_to_other_simulators&amp;diff=102411"/>
		<updated>2016-07-28T12:05:38Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: Category:FlightGear keyboard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When coming from an other simulator, [[FlightGear]]'s key commands might be confusing at first. To help you get started, some of the essential commands are listed on this page with the respective keys from various simulators.&lt;br /&gt;
&lt;br /&gt;
=== Simulator commands ===&lt;br /&gt;
{| class=&amp;quot;keytable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action&lt;br /&gt;
! FlightGear &lt;br /&gt;
! MSFS X&lt;br /&gt;
! X-Plane&lt;br /&gt;
|-&lt;br /&gt;
| Pause&lt;br /&gt;
| {{key press|p}}&lt;br /&gt;
| {{key press|p}}, {{key press|Break}}&lt;br /&gt;
| {{key press|p}}&lt;br /&gt;
|-&lt;br /&gt;
| Menus display/hide&lt;br /&gt;
| {{key press|F10}}, appears when the mouse pointer is at the top of the window&lt;br /&gt;
| Appears when the mouse pointer is at the top of the window&lt;br /&gt;
| {{key press|Alt}}&lt;br /&gt;
|-&lt;br /&gt;
| Exit Flight Simulator&lt;br /&gt;
| {{key press|Esc}}&lt;br /&gt;
| {{key press|Ctrl|c}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Capture Screenshot&lt;br /&gt;
| {{key press|F3}}&lt;br /&gt;
| {{key press|Shift|V}}&lt;br /&gt;
| {{key press|Ctrl|.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Control surface commands ===&lt;br /&gt;
{| class=&amp;quot;keytable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action&lt;br /&gt;
! FlightGear &lt;br /&gt;
! MSFS X&lt;br /&gt;
! X-Plane&lt;br /&gt;
|-&lt;br /&gt;
|Ailerons (bank left)&lt;br /&gt;
| {{key press|NumPad 4}}, Left arrow key&lt;br /&gt;
| {{key press|NumPad 4}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Ailerons (bank right) &lt;br /&gt;
| {{key press|NumPad 6}}, Right arrow key&lt;br /&gt;
| {{key press|NumPad 6}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Rudder (yaw left) &lt;br /&gt;
| {{key press|NumPad 0}}&lt;br /&gt;
| {{key press|NumPad 0}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Rudder (yaw right)&lt;br /&gt;
| {{key press|NumPad Enter}}&lt;br /&gt;
| {{key press|NumPad Enter}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Center Ailerons and Rudder&lt;br /&gt;
| {{key press|NumPad 5}}&lt;br /&gt;
| {{key press|NumPad 5}}&lt;br /&gt;
| {{key press|9}} (ailerons) and {{key press|6}} (rudder)&lt;br /&gt;
|-&lt;br /&gt;
| Pitch Down (elevator)&lt;br /&gt;
| {{key press|NumPad 8}}, Up arrow key&lt;br /&gt;
| {{key press|NumPad 8}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Pitch Up (elevator)&lt;br /&gt;
| {{key press|NumPad 2}}, Down arrow key&lt;br /&gt;
| {{key press|NumPad 2}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Elevator Trim Down&lt;br /&gt;
| {{key press|NumPad 7}}&lt;br /&gt;
| {{key press|NumPad 7}}&lt;br /&gt;
| {{key press|]}}&lt;br /&gt;
|-&lt;br /&gt;
| Elevator Trim Up&lt;br /&gt;
| {{key press|NumPad 1}}&lt;br /&gt;
| {{key press|NumPad 1}}&lt;br /&gt;
| {{key press|[}}&lt;br /&gt;
|-&lt;br /&gt;
| Flaps (retract incrementally)&lt;br /&gt;
| {{key press|[}}&lt;br /&gt;
| {{key press|F6}}&lt;br /&gt;
| {{key press|1}}&lt;br /&gt;
|-&lt;br /&gt;
| Flaps (extend incrementally)&lt;br /&gt;
| {{key press|]}}&lt;br /&gt;
| {{key press|F7}}&lt;br /&gt;
| {{key press|2}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Engine commands ===&lt;br /&gt;
{| class=&amp;quot;keytable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action&lt;br /&gt;
! FlightGear &lt;br /&gt;
! MSFS X&lt;br /&gt;
! X-Plane&lt;br /&gt;
|-&lt;br /&gt;
| Reverse Thrust (turboprops/jets)&lt;br /&gt;
| {{key press|Delete}} (on/off)&lt;br /&gt;
| {{key press|F2}} (press and hold)&lt;br /&gt;
| {{key press|.}} (on/off)&lt;br /&gt;
|-&lt;br /&gt;
| Throttle (decrease)&lt;br /&gt;
| {{key press|PgDn}}&lt;br /&gt;
| {{key press|F2}} or {{key press|NumPad 3}}&lt;br /&gt;
| {{key press|F1}}&lt;br /&gt;
|-&lt;br /&gt;
| Throttle (increase)&lt;br /&gt;
| {{key press|PgUp}}&lt;br /&gt;
| {{key press|F3}} or {{key press|NumPad 9}}&lt;br /&gt;
| {{key press|F2}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== General aircraft commands ===&lt;br /&gt;
{| class=&amp;quot;keytable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action&lt;br /&gt;
! FlightGear &lt;br /&gt;
! MSFS X&lt;br /&gt;
! X-Plane&lt;br /&gt;
|-&lt;br /&gt;
| Brakes (apply left brake)&lt;br /&gt;
| {{key press|,}}&lt;br /&gt;
| {{key press|Numpad +}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Brakes (apply right brake)&lt;br /&gt;
| {{key press|.}}&lt;br /&gt;
| {{key press|Numpad -}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Landing Gear (extend/retract)&lt;br /&gt;
| {{key press|g}}/{{key press|Shift|g}}&lt;br /&gt;
| {{key press|Shift|g}}&lt;br /&gt;
| {{key press|Shift|g}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== View commands ===&lt;br /&gt;
{| class=&amp;quot;keytable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Action&lt;br /&gt;
! FlightGear &lt;br /&gt;
! MSFS X&lt;br /&gt;
! X-Plane&lt;br /&gt;
|-&lt;br /&gt;
| View (default zoom) &lt;br /&gt;
| {{key press|Ctrl|X}}&lt;br /&gt;
| {{key press|Backspace}}&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|Zoom In&lt;br /&gt;
| {{key press|x}}&lt;br /&gt;
| {{key press|&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
| {{key press|&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;}} (normal), {{key press|Shift|&amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt;}} (fast)&lt;br /&gt;
|-&lt;br /&gt;
|Zoom Out&lt;br /&gt;
| {{key press|Shift|X}}&lt;br /&gt;
| {{key press|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
| {{key press|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;}} (normal), {{key press|Shift|&amp;lt;nowiki&amp;gt;-&amp;lt;/nowiki&amp;gt;}} (fast)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Appendix|all|&lt;br /&gt;
* {{cite web |url=http://www.x-plane.com/files/MSFS_XP_keys.pdf.zip |title=Help for MSFS users |date=2 February 2009 |publisher=X-Plane |accessdate=27 February 2012 }}&lt;br /&gt;
}}&lt;br /&gt;
[[Category:FlightGear keyboard]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Keyboard_shortcuts&amp;diff=102410</id>
		<title>Keyboard shortcuts</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Keyboard_shortcuts&amp;diff=102410"/>
		<updated>2016-07-28T12:03:54Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: Category:FlightGear keyboard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
Cheat sheet for using the most common keyboard shortcuts. Many planes have their own specific shortcuts, so not all of these shortcuts will apply. They're worth a shot though if your aircraft just isn't quite behaving as you would like it.&lt;br /&gt;
{| class=&amp;quot;vatop&amp;quot;&lt;br /&gt;
|width=&amp;quot;500&amp;quot; |&lt;br /&gt;
=== General ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#efefef&amp;quot; | Key combination&lt;br /&gt;
! style=&amp;quot;background:#efefef&amp;quot; | Action&lt;br /&gt;
|-&lt;br /&gt;
|/&lt;br /&gt;
|Show [[property browser]]&lt;br /&gt;
|-&lt;br /&gt;
|?&lt;br /&gt;
|Show current aircraft specific help&lt;br /&gt;
|-&lt;br /&gt;
|:&lt;br /&gt;
|vi-like [[multikey commands]]&lt;br /&gt;
|-&lt;br /&gt;
|,&lt;br /&gt;
|Apply left brakes&lt;br /&gt;
|-&lt;br /&gt;
|.&lt;br /&gt;
|Apply right brakes&lt;br /&gt;
|-&lt;br /&gt;
|M&lt;br /&gt;
|Show map&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl-C&lt;br /&gt;
|Toggle [[Howto: Make a clickable panel|clickable panel hotspots]]&lt;br /&gt;
|-&lt;br /&gt;
|Esc&lt;br /&gt;
|Quit FlightGear&lt;br /&gt;
|-&lt;br /&gt;
|h&lt;br /&gt;
|Cycle through [[HUD]] styles&lt;br /&gt;
|-&lt;br /&gt;
|H&lt;br /&gt;
|Cycle through [[HUD]] brightnesses&lt;br /&gt;
|-&lt;br /&gt;
|F3&lt;br /&gt;
|Print screen&lt;br /&gt;
|-&lt;br /&gt;
|F10&lt;br /&gt;
|Toggle [[menu]]bar visibility&lt;br /&gt;
|-&lt;br /&gt;
|F11&lt;br /&gt;
|Open [[autopilot]] dialog&lt;br /&gt;
|-&lt;br /&gt;
|F12&lt;br /&gt;
|Open radio settings dialog&lt;br /&gt;
|-&lt;br /&gt;
|p&lt;br /&gt;
|Pause/continue sim&lt;br /&gt;
|-&lt;br /&gt;
|P&lt;br /&gt;
|Toggle [[2D panel]]&lt;br /&gt;
|-&lt;br /&gt;
|Shift-Esc&lt;br /&gt;
|Reset FlightGear&lt;br /&gt;
|-&lt;br /&gt;
|Shift-F1&lt;br /&gt;
|Load flight&lt;br /&gt;
|-&lt;br /&gt;
|Shift-F2&lt;br /&gt;
|Save flight&lt;br /&gt;
|-&lt;br /&gt;
|Shift-F5&lt;br /&gt;
|Scroll 2D panel down&lt;br /&gt;
|-&lt;br /&gt;
|Shift-F6&lt;br /&gt;
|Scroll 2D panel up&lt;br /&gt;
|-&lt;br /&gt;
|Shift-F7&lt;br /&gt;
|Scroll 2D panel left&lt;br /&gt;
|-&lt;br /&gt;
|Shift-F8&lt;br /&gt;
|Scroll 2D panel right&lt;br /&gt;
|-&lt;br /&gt;
|Shift-F10&lt;br /&gt;
|Cycle through GUI styles&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== View ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#efefef&amp;quot; | Key combination&lt;br /&gt;
! style=&amp;quot;background:#efefef&amp;quot; | Action&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl-X&lt;br /&gt;
|Reset zoom to default&lt;br /&gt;
|-&lt;br /&gt;
|v&lt;br /&gt;
|Next view&lt;br /&gt;
|-&lt;br /&gt;
|V&lt;br /&gt;
|Previous view&lt;br /&gt;
|-&lt;br /&gt;
|x&lt;br /&gt;
|Zoom in&lt;br /&gt;
|-&lt;br /&gt;
|X&lt;br /&gt;
|Zoom out&lt;br /&gt;
|-&lt;br /&gt;
|z&lt;br /&gt;
|Increase visibility&lt;br /&gt;
|-&lt;br /&gt;
|Z&lt;br /&gt;
|Decrease visibility&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl-R&lt;br /&gt;
|Instant replay&lt;br /&gt;
|}&lt;br /&gt;
|width=&amp;quot;500&amp;quot;|&lt;br /&gt;
=== Flying ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#efefef&amp;quot; | Key combination&lt;br /&gt;
! style=&amp;quot;background:#efefef&amp;quot; | Action&lt;br /&gt;
|-&lt;br /&gt;
|&amp;amp;#125;&amp;amp;#125;&amp;amp;#125; s&lt;br /&gt;
|Start a propeller engine (&amp;quot;&amp;amp;#125;&amp;quot; x3 to set magneto, then hold &amp;quot;s&amp;quot; to start)&lt;br /&gt;
|-&lt;br /&gt;
|/&lt;br /&gt;
|Show [[property browser]]&lt;br /&gt;
|-&lt;br /&gt;
|b&lt;br /&gt;
|Apply all brakes&lt;br /&gt;
|-&lt;br /&gt;
|B&lt;br /&gt;
|Toggle parking brake(s)&lt;br /&gt;
|-&lt;br /&gt;
|g&lt;br /&gt;
|Gear up&lt;br /&gt;
|-&lt;br /&gt;
|G&lt;br /&gt;
|Gear down&lt;br /&gt;
|-&lt;br /&gt;
|j&lt;br /&gt;
|Spoilers/air brake down&lt;br /&gt;
|-&lt;br /&gt;
|k&lt;br /&gt;
|Spoilers/air brake up&lt;br /&gt;
|-&lt;br /&gt;
|[&lt;br /&gt;
|Flaps up&lt;br /&gt;
|-&lt;br /&gt;
|]&lt;br /&gt;
|Flaps down&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Autopilot ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
! style=&amp;quot;background:#efefef&amp;quot; | Key combination&lt;br /&gt;
! style=&amp;quot;background:#efefef&amp;quot; | Action&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl-A&lt;br /&gt;
|Altitude lock&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl-H&lt;br /&gt;
|Heading lock&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl-G&lt;br /&gt;
|Glideslope lock&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl-N &lt;br /&gt;
|NAV1 lock&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl-P&lt;br /&gt;
|Pitch hold&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl-S&lt;br /&gt;
|Autothrottle&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl-T&lt;br /&gt;
|Terrain lock&lt;br /&gt;
|-&lt;br /&gt;
|Ctrl-W&lt;br /&gt;
|Wing level&lt;br /&gt;
|-&lt;br /&gt;
|F6&lt;br /&gt;
|Heading lock&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
[[Category:FlightGear keyboard]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Keyboard_function_priority_list&amp;diff=102409</id>
		<title>Keyboard function priority list</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Keyboard_function_priority_list&amp;diff=102409"/>
		<updated>2016-07-28T12:03:19Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: Category:FlightGear keyboard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:RFC Navigation}}&lt;br /&gt;
&lt;br /&gt;
{{cquote|My point of view is that the current keybindings file is a mess, with many historical bindings, and also it binds in the ASCII space, as opposed to the scan code space, so we can't distinguish keypad vs normal number keys, and various other combinations, even though osgViewer supports that.&lt;br /&gt;
&lt;br /&gt;
My *personal* feeling is that unless it's something the &amp;gt; 50% of users use *each flight*, it shouldn't be a keybinding. So flaps, trim, CDI/HSI heading, &lt;br /&gt;
fine, but things to change view distance or FoV seem unnecessary to me.&lt;br /&gt;
&lt;br /&gt;
The other issue is the keybindings are effectively 'full' (we can't easily add more), because they've been added and added over the years, but rarely removed, so at this point every key 'does something', but often something quite obscure.&lt;br /&gt;
&lt;br /&gt;
What I'd like to see is the entire 'Ctrl' (Command on Mac) space reserved for GUI functions, like a normal application - Ctrl-Q for quit, Ctrl-M for map dialog, Ctrl-A for autopilot dialog, Ctrl-R for replay dialog (or radios dialog :)  - then have a complete discussion about which key-bindings make sense on &lt;br /&gt;
the main keyboard. This is basically a usability discussion, so everyone will have strong opinions :)&amp;lt;ref&amp;gt;{{cite web |url=http://www.mail-archive.com/flightgear-devel@lists.sourceforge.net/msg39648.html |title= Keyboard bindings|author=James Turner |date= Sun, 03 Mar 2013}}&amp;lt;/ref&amp;gt;|James Turner}}&lt;br /&gt;
&lt;br /&gt;
{{cquote|&amp;lt;nowiki&amp;gt;A separate step, much harder to make happen, would be to explicitly reserve the &lt;br /&gt;
Ctrl (Command on Mac) keybinding space for menu/non-aircraft keyboard &lt;br /&gt;
shortcuts. I would really like to do this so we can have user-friendly &lt;br /&gt;
key-bindings for dialogs and standard items, such as Ctrl-Q to quit, Ctrl-A for &lt;br /&gt;
autopilot dialog, Ctrl-P for pause, Ctrl-R for reply, etc. [And the entire &lt;br /&gt;
normal key / key + shift / key+alt ranges available FOR aircraft functions, of &lt;br /&gt;
course) The problem is right now we have aircraft using Ctrl- shortcuts for &lt;br /&gt;
many things (usually because they're the only choice), and I can't decide a &lt;br /&gt;
sane way to migrate to this split without lots of breakage and frustration. Any &lt;br /&gt;
ideas welcome.&amp;lt;/nowiki&amp;gt;&amp;lt;ref&amp;gt;{{cite web |url=http://www.mail-archive.com/flightgear-devel@lists.sourceforge.net/msg40838.html|title=&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;|author=&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;|date=&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;}}&amp;lt;/ref&amp;gt;|&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{cquote|&amp;lt;nowiki&amp;gt;the problem is the OSs have already decreed that Ctrl (Command on Mac) is &lt;br /&gt;
the standard shortcut key, so lots of Ctrl-something have standard meanings &lt;br /&gt;
which FlightGear deviates from. Though we escape the worst of it since we don't &lt;br /&gt;
support file or edit operations.&lt;br /&gt;
&lt;br /&gt;
Keep in mind if the GUI things such as dialogs were moved to Ctrl-blah, that &lt;br /&gt;
frees up lots of normal keys for use, which are currently taken up by simulator &lt;br /&gt;
things. While I agree Ctrl is probably the easiest modifier to access (except &lt;br /&gt;
maybe shift, since there's two, so it's more friendly for left-handed people), &lt;br /&gt;
I think by this logic a shortcut with *no* modifiers is even easier to access, &lt;br /&gt;
and that's an argument in *favour* of such change :)&amp;lt;/nowiki&amp;gt;&amp;lt;ref&amp;gt;{{cite web |url=http://www.mail-archive.com/flightgear-devel@lists.sourceforge.net/msg40853.html|title=&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;|author=&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;|date=&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;}}&amp;lt;/ref&amp;gt;|&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{cquote|&amp;lt;nowiki&amp;gt;this actually shows a larger problem. Obviously it isn't too&lt;br /&gt;
uncommon for aircraft to disable or override specific menu items -&lt;br /&gt;
mainly affects menu items for the radio stack and autopilot.&lt;br /&gt;
Unfortunately all of this is done using fixed menu item positions -&lt;br /&gt;
e.g. 5th menu, 3rd item... So any change of the menu item ordering&lt;br /&gt;
currently breaks lots of planes. And obviously the recent menubar&lt;br /&gt;
overhaul has done just that.&lt;br /&gt;
We'll need to adapt all the aircraft using such hacks to the changed&lt;br /&gt;
menu structure. And might need to think about a better solution to&lt;br /&gt;
avoid future problems of this kind.&amp;lt;/nowiki&amp;gt;&amp;lt;ref&amp;gt;{{cite web |url=http://www.mail-archive.com/flightgear-devel@lists.sourceforge.net/msg30166.html|title=&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;|author=&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;|date=&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;}}&amp;lt;/ref&amp;gt;|&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{cquote|&amp;lt;nowiki&amp;gt;IMO the menu reordering represents a significant usability improvement and is &lt;br /&gt;
something we want to encourage. Furthermore backing it out will also require &lt;br /&gt;
changes to the manual, so isn't quite as straightforward as it might seem at &lt;br /&gt;
first.&lt;br /&gt;
&lt;br /&gt;
I think the number of affected theses aircraft is sufficiently small that they &lt;br /&gt;
can be updated to fix this. Aircraft maintainers have always had to keep up &lt;br /&gt;
with changes in the core code (e.g. The ambient material change) and this is no &lt;br /&gt;
different except that it has only been noticed fairly late in the release &lt;br /&gt;
cycle. &lt;br /&gt;
&lt;br /&gt;
Aircraft outside of the shears repository are not restricted to our release &lt;br /&gt;
cycle and can be updated after the release as and when their maintainers notice &lt;br /&gt;
this issue. I suspect that a number are waiting for the release to test their &lt;br /&gt;
aircraft anyway. &lt;br /&gt;
&lt;br /&gt;
Adding symbolic names along with some helper functions for disabling them in &lt;br /&gt;
Nasal/gui.nas is pretty easy.  I'm happy to take on writing the code etc. &lt;br /&gt;
Probably not today though!&amp;lt;/nowiki&amp;gt;&amp;lt;ref&amp;gt;{{cite web |url=http://www.mail-archive.com/flightgear-devel@lists.sourceforge.net/msg30178.html|title=&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;|author=&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;|date=&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;}}&amp;lt;/ref&amp;gt;|&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{cquote|&amp;lt;nowiki&amp;gt;It turns out that Nasal/gui.nas already had a menuEnable function for&lt;br /&gt;
enabling or disabling entire menus or individual menu items using&lt;br /&gt;
unique names rather than the labels. Names already exist for the&lt;br /&gt;
autopilot menu and the Fuel &amp;amp; Payload dialog.  So, the fix is for the&lt;br /&gt;
aircraft to make use of this e.g.&lt;br /&gt;
&lt;br /&gt;
gui.menuEnable(&amp;quot;fuel-and-payload&amp;quot;, false);&lt;br /&gt;
&lt;br /&gt;
We can add new names for any other menus that we might want to disable&lt;br /&gt;
on a per-aircraft basis, but from a quick skim through the menus I&lt;br /&gt;
couldn't see any other candidates.&amp;lt;/nowiki&amp;gt;&amp;lt;ref&amp;gt;{{cite web |url=http://www.mail-archive.com/flightgear-devel@lists.sourceforge.net/msg30188.html|title=&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;|author=&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;|date=&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;}}&amp;lt;/ref&amp;gt;|&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{cquote|&amp;lt;nowiki&amp;gt;Going through the aircraft highlighted a number of functions that&lt;br /&gt;
aren't covered by the existing enable/disable function in gui.nas&lt;br /&gt;
1) Replacing the autopilot dialog with another.&lt;br /&gt;
2) Adding pushback. Most aircraft add this to the Equipment menu&lt;br /&gt;
&lt;br /&gt;
I'll need to think about how to handle these cases.&amp;lt;/nowiki&amp;gt;&amp;lt;ref&amp;gt;{{cite web |url=http://www.mail-archive.com/flightgear-devel@lists.sourceforge.net/msg30194.html|title=&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;|author=&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;|date=&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;}}&amp;lt;/ref&amp;gt;|&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{cquote|&amp;lt;nowiki&amp;gt;The following aircraft override the radio dialog, which has moved since v2.0.0.&lt;br /&gt;
&lt;br /&gt;
777-200ER&lt;br /&gt;
b1900d&lt;br /&gt;
Citation-Bravo&lt;br /&gt;
&lt;br /&gt;
I've just pushed an enhancement to gui.nas that allows the aircraft developer to&lt;br /&gt;
change the binding for a symbolically named dialog, in the same way&lt;br /&gt;
that they can&lt;br /&gt;
enable/disable dialogs and menus using the existing gui.menuEnable() function.&lt;br /&gt;
&lt;br /&gt;
So, you can now put the following code in your aircraft-specific Nasal files:&lt;br /&gt;
&lt;br /&gt;
gui.menuBind(&amp;quot;radio&amp;quot;, &amp;quot;dialogs.Radio.open()&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
This replaces the binding for the &amp;quot;radio&amp;quot; menu item with a command to open the&lt;br /&gt;
dialogs.Radio dialog box (that you've defined elsewhere).&lt;br /&gt;
&lt;br /&gt;
Note that this searches the menu for the symbolic names (name tag) defined in&lt;br /&gt;
 menubar.xml, (e.g. radio, autopilot-settings, gps, map) rather than&lt;br /&gt;
the label tag,&lt;br /&gt;
which may change over time, so should be a robust long-term solution.&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;ref&amp;gt;{{cite web |url=http://www.mail-archive.com/flightgear-devel@lists.sourceforge.net/msg30208.html|title=&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;|author=&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;|date=&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;}}&amp;lt;/ref&amp;gt;|&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As a first step in the keyboard refactoring, we need to come up with a prioritized list of functions that (a) are general enough to apply to most (or at least many) aircraft, and (b) are important enough to justify a keyboard shortcut rather than just a menu/dialog or a model hotspot.&lt;br /&gt;
&lt;br /&gt;
Feel free to add to the list, but please don't delete anything — just move it to the bottom if you don't think it's important.&lt;br /&gt;
&lt;br /&gt;
As we'll probably not want to change too many existing key-bindings, The current CVS key-binding is also listed in brackets.&lt;br /&gt;
&lt;br /&gt;
* Program&lt;br /&gt;
** Pause {{Key press|P}}&lt;br /&gt;
** Exit {{Key press|Esc}}&lt;br /&gt;
** Show/Hide menu {{Key press|F10}}&lt;br /&gt;
* Primary flight controls&lt;br /&gt;
** ailerons {{Key press|Left}} / {{Key press|Right}}, {{Key press|4}} / {{Key press|6}}&lt;br /&gt;
** elevator {{Key press|Up}} / {{Key press|Down}}, {{Key press|8}} / {{Key press|2}}&lt;br /&gt;
** rudder {{Key press|0}} / {{Key press|Enter}}, {{Key press|Insert}}&lt;br /&gt;
** centre controls {{Key press|5}}&lt;br /&gt;
* Primary powerplant&lt;br /&gt;
** throttle — ''for helicopters, should the same key control the collective?'' {{Key press|3}} / {{Key press|9}}, {{Key press|Page up}} / {{Key press|Page down}}&lt;br /&gt;
** Winch / Aerotow (begin winching, open hitch etc)&lt;br /&gt;
* View controls&lt;br /&gt;
** view reset {{Key press|Ctrl|V}}&lt;br /&gt;
** look left/right {{Key press|Shift|4}} / {{Key press|Shift|6}}&lt;br /&gt;
** look up/down&lt;br /&gt;
** look forward/backwad {{Key press|Shift|8}} / {{Key press|Shift|2}}&lt;br /&gt;
** zoom in/out {{Key press|X}} / {{Key press|Shift|X}}&lt;br /&gt;
** change view type — ''e.g. cockpit, chase plane, tower, etc.'' {{Key press|V}} / {{Key press|Shift|V}}&lt;br /&gt;
* Secondary flight controls&lt;br /&gt;
** flaps extend/retract {{Key press|&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;}} / {{Key press|&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
** landing gear raise/retract {{Key press|G}} / {{Key press|Shift|G}}&lt;br /&gt;
** elevator trim up/down {{Key press|1}} / {{Key press|7}}, {{Key press|Home}} / {{Key press|End}}&lt;br /&gt;
** speed brakes extend/retract {{Key press|Ctrl|B}}&lt;br /&gt;
** spoilers extend/retract {{Key press|J}} / {{Key press|K}}&lt;br /&gt;
** slats extend/retract&lt;br /&gt;
** toggle tailwheel lock {{Key press|1}}&lt;br /&gt;
** differential toe brakes left/right {{Key press|,}} / {{Key press|.}}&lt;br /&gt;
** parking brake {{Key press|Shift|B}}&lt;br /&gt;
** drag chute deploy/jettison&lt;br /&gt;
** aileron trim left/right&lt;br /&gt;
** rudder trim left/right&lt;br /&gt;
* Secondary powerplant&lt;br /&gt;
** mixture — ''piston aircraft only'' {{Key press|Shit|M}} / {{Key press|M}}&lt;br /&gt;
** propeller — ''some piston aircraft only'' {{Key press|Shift|N}} / {{Key press|N}}&lt;br /&gt;
** carburettor heat — ''some piston aircraft only''&lt;br /&gt;
** magneto/ignition selection {{Key press|&amp;lt;nowiki&amp;gt;{&amp;lt;/nowiki&amp;gt;}} / {{Key press|&amp;lt;nowiki&amp;gt;}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
** Select engines {{Key press|~}} / {{Key press|@}} / {{Key press|!}} / {{Key press|#}} / {{Key press|$}} &amp;lt;small&amp;gt;(Note: These keys are problematic on some keyboard layouts, e.g. Swedish where IIRC '~', '@' and'$' are at inconvenient locations. Is there a way to capture number key + shift instead of whatever &amp;quot;strange&amp;quot; symbol the English keyboard layout maps to that key?)&amp;lt;/small&amp;gt;&lt;br /&gt;
* Autopilot&lt;br /&gt;
** engage/disengage&lt;br /&gt;
** toggle heading mode {{Key press|Ctrl|H}}&lt;br /&gt;
** toggle altitude mode {{Key press|Ctrl|A}}&lt;br /&gt;
** toggle wing leveller {{Key press|Ctrl|W}}&lt;br /&gt;
** toggle speed mode (auto-throttle) {{Key press|Ctrl|S}}&lt;br /&gt;
** autotrim engage/disengage&lt;br /&gt;
* Comms&lt;br /&gt;
** open/close text based chat console&lt;br /&gt;
** PTT switch {{Key press|Space}}&lt;br /&gt;
** active/standby com/nav channel swap&lt;br /&gt;
* Weapons&lt;br /&gt;
** fire primary weapon&lt;br /&gt;
** fire secondary weapon&lt;br /&gt;
** select secondary weapon&lt;br /&gt;
** jettison store&lt;br /&gt;
* Miscellaneous&lt;br /&gt;
** hoist deploy (helicopters)&lt;br /&gt;
** hoist up/down&lt;br /&gt;
** hoist jettison&lt;br /&gt;
** water/cargo release &lt;br /&gt;
** carrier launch bar engage&lt;br /&gt;
** carrier catapult release&lt;br /&gt;
** hook up/down (compatible A/C ''all modern jet fighters have a hook'')&lt;br /&gt;
** canopy toggle&lt;br /&gt;
** seat up/down/default&lt;br /&gt;
&lt;br /&gt;
Things that don't require key bindings:&lt;br /&gt;
* throw turkey out of window (Les Nessman only)&lt;br /&gt;
* change viewing styles (dynamic view and g-force based view where supported)&lt;br /&gt;
&lt;br /&gt;
[[Category:RFC]]&lt;br /&gt;
[[Category:FlightGear keyboard]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Reassign_keyboard_bindings&amp;diff=102408</id>
		<title>Howto:Reassign keyboard bindings</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Reassign_keyboard_bindings&amp;diff=102408"/>
		<updated>2016-07-28T12:01:53Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: Category:FlightGear keyboard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{WIP}}&lt;br /&gt;
&lt;br /&gt;
A common request is how to change keys to do different commands. FlightGear makes this as easy as editing an XML file, and possibly adding a parameter to point FG to the new XML file.&lt;br /&gt;
&lt;br /&gt;
In general, the list of keyboard commands is stored in the property tree and is loaded at startup or when the menu option &amp;quot;Debug -&amp;gt; Reload input&amp;quot; is selected. The main list of commands is available in {{fgdata source|path=keyboard.xml|pre=$FG_ROOT}}, but each aircraft can add/change its own bindings through its -set.xml file, and additional [[config file]]s can do the same.&lt;br /&gt;
&lt;br /&gt;
== Adding or modifying key bindings ==&lt;br /&gt;
Keyboard bindings are usually fairly simple. They consist of a &amp;lt;tt&amp;gt;&amp;amp;lt;key&amp;amp;gt;&amp;lt;/tt&amp;gt; node (with a corresponding index), optional &amp;lt;tt&amp;gt;&amp;amp;lt;name&amp;amp;gt;&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;&amp;amp;lt;desc&amp;amp;gt;&amp;lt;/tt&amp;gt; nodes, and one or more &amp;lt;tt&amp;gt;&amp;amp;lt;binding&amp;amp;gt;&amp;lt;/tt&amp;gt;s. A very simple example is the default for {{key press|Ctrl|V}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;key n=&amp;quot;22&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;Ctrl-V&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;desc&amp;gt;Select initial view (view 0)&amp;lt;/desc&amp;gt;&lt;br /&gt;
  &amp;lt;binding&amp;gt;&lt;br /&gt;
   &amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
   &amp;lt;property&amp;gt;/sim/current-view/view-number&amp;lt;/property&amp;gt;&lt;br /&gt;
   &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;/binding&amp;gt;&lt;br /&gt;
 &amp;lt;/key&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The initial tag (&amp;lt;tt&amp;gt;&amp;amp;lt;key n=&amp;quot;22&amp;quot;&amp;amp;gt;&amp;lt;/tt&amp;gt;) is used to identify the keycode; see the next section for how to find it for other keys. If this is not specified, FG won't have an accurate view of which key it is supposed to represent. The next two tags, &amp;lt;tt&amp;gt;&amp;amp;lt;name&amp;amp;gt;&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;&amp;amp;lt;desc&amp;amp;gt;&amp;lt;/tt&amp;gt;, simply are there to describe the key and its function, respectively. They are not required but might be used for showing keyboard help information or other user-display uses. The &amp;lt;tt&amp;gt;&amp;amp;lt;binding&amp;amp;gt;&amp;lt;/tt&amp;gt; tag is the functional aspect that gets executed when the key is pressed. The above example would be equivalent to this Nasal code:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;setprop(&amp;quot;/sim/current-view/view-number&amp;quot;, 0)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
For more on bindings and their different commands see the article about them: [[bindings]].&lt;br /&gt;
&lt;br /&gt;
Here's a more complex binding, also from keyboard.xml, for {{key press|/}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;key n=&amp;quot;47&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;/&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;desc&amp;gt;Open property browser&amp;lt;/desc&amp;gt;&lt;br /&gt;
  &amp;lt;binding&amp;gt;&lt;br /&gt;
   &amp;lt;condition&amp;gt;&lt;br /&gt;
    &amp;lt;not&amp;gt;&lt;br /&gt;
     &amp;lt;property&amp;gt;/sim/input/property-key-handler&amp;lt;/property&amp;gt;&lt;br /&gt;
    &amp;lt;/not&amp;gt;&lt;br /&gt;
   &amp;lt;/condition&amp;gt;&lt;br /&gt;
   &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
   &amp;lt;script&amp;gt;gui.property_browser()&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/binding&amp;gt;&lt;br /&gt;
  &amp;lt;binding&amp;gt;&lt;br /&gt;
   &amp;lt;condition&amp;gt;&lt;br /&gt;
    &amp;lt;property&amp;gt;/sim/input/property-key-handler&amp;lt;/property&amp;gt;&lt;br /&gt;
   &amp;lt;/condition&amp;gt;&lt;br /&gt;
   &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
   &amp;lt;script&amp;gt;prop_key_handler.start()&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/binding&amp;gt;&lt;br /&gt;
 &amp;lt;/key&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This now has two bindings that execute based on a &amp;lt;tt&amp;gt;&amp;amp;lt;condition&amp;amp;gt;&amp;lt;/tt&amp;gt; (see: [[conditions]]). The first executes if the property key handler development extension is ''not'' enabled, the second if it ''is'' enabled. Both execute a Nasal command: one to open the property browser, the other to start capturing keys (which will also open a browser if the user enters and path and hits {{key press|:}}).&lt;br /&gt;
&lt;br /&gt;
Another common element is the &amp;lt;tt&amp;gt;&amp;amp;lt;mod-up&amp;amp;gt;&amp;lt;/tt&amp;gt; event, which happens when the button is released. For example, the {{key press|S}} key fires the starter only as long as it is held down, via complementary commands on press and release:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;key n=&amp;quot;115&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;s&amp;lt;/name&amp;gt;&lt;br /&gt;
  &amp;lt;desc&amp;gt;Fire Starter on Selected Engine(s)&amp;lt;/desc&amp;gt;&lt;br /&gt;
  &amp;lt;binding&amp;gt;&lt;br /&gt;
   &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
   &amp;lt;script&amp;gt;controls.startEngine(1)&amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/binding&amp;gt;&lt;br /&gt;
  &amp;lt;mod-up&amp;gt;&lt;br /&gt;
   &amp;lt;binding&amp;gt;&lt;br /&gt;
    &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;controls.startEngine(0)&amp;lt;/script&amp;gt;&lt;br /&gt;
   &amp;lt;/binding&amp;gt;&lt;br /&gt;
  &amp;lt;/mod-up&amp;gt;&lt;br /&gt;
 &amp;lt;/key&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Other similar modifiers are the following:&lt;br /&gt;
* mod-up: release the key&lt;br /&gt;
* mod-shift: if {{key press|Shift}} is held down during event&lt;br /&gt;
* mod-ctrl: if {{key press|Ctrl}} is held down during event&lt;br /&gt;
* mod-alt: if {{key press|Alt}} is held down (rare)&lt;br /&gt;
* mod-meta: if {{key press|Meta}} is held down (rare)&lt;br /&gt;
* mod-super: if {{key press|Super}} is held down (very rare)&lt;br /&gt;
* mod-hyper: if {{key press|Hyper}} is held down (very rare)&lt;br /&gt;
&lt;br /&gt;
(FIXME: describe more, esp. interaction with the key code...)&lt;br /&gt;
&lt;br /&gt;
== Finding keycodes ==&lt;br /&gt;
As mentioned in keyboard.xml, &amp;quot;regular keycodes go up to 255; special keys start at 256, and can be calculated by adding 256 to the GLUT key value in glut.h.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
For printable/ASCII keys (e.g. any letter of the alphabet, number, or symbol found on a keyboard), this is simply the ASCII value of the key. &lt;br /&gt;
&lt;br /&gt;
=== Using the property browser ===&lt;br /&gt;
{{tip|You may want to press {{key press|p}} to pause the simulation first in order to not mess up something.}}&lt;br /&gt;
&lt;br /&gt;
One of the easier ways to find out the key codes is to open up the [[property browser]] by pressing {{key press|/}} or {{key press|Shift|7}} and go to&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/devices/status/keyboard/event/&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;key= &amp;lt;nowiki&amp;gt;'A'&amp;lt;/nowiki&amp;gt; (int)&amp;lt;/code&amp;gt; – The key code of the currently or last pressed key&lt;br /&gt;
** &amp;lt;code&amp;gt;modifier/&amp;lt;/code&amp;gt; – Key modifiers of the currently or last pressed key&lt;br /&gt;
*** &amp;lt;code&amp;gt;alt= &amp;lt;nowiki&amp;gt;'false'&amp;lt;/nowiki&amp;gt; (bool)&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;ctrl= &amp;lt;nowiki&amp;gt;'false'&amp;lt;/nowiki&amp;gt; (bool)&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;hyper= &amp;lt;nowiki&amp;gt;'false'&amp;lt;/nowiki&amp;gt; (bool)&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;meta= &amp;lt;nowiki&amp;gt;'false'&amp;lt;/nowiki&amp;gt; (bool)&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;shift= &amp;lt;nowiki&amp;gt;'true'&amp;lt;/nowiki&amp;gt; (bool)&amp;lt;/code&amp;gt;&lt;br /&gt;
*** &amp;lt;code&amp;gt;super= &amp;lt;nowiki&amp;gt;'false'&amp;lt;/nowiki&amp;gt; (bool)&amp;lt;/code&amp;gt;&lt;br /&gt;
** &amp;lt;code&amp;gt;pressed= &amp;lt;nowiki&amp;gt;'true'&amp;lt;/nowiki&amp;gt; (bool)&amp;lt;/code&amp;gt; – True if the key is currently pressed down&lt;br /&gt;
&lt;br /&gt;
The above will be the values if you hold down {{key press|Shift|A}}.&lt;br /&gt;
&lt;br /&gt;
=== Using a nasal script ===&lt;br /&gt;
An alternative would be to use Nasal (in the [[Nasal Console]] or [[Interactive Nasal REPL|REPL]]), with a simple script like this that will &amp;quot;pop up&amp;quot; the result:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
gui.popupTip(`a`); # replace with the key you want to test&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
No matter what method you use, for &amp;quot;a&amp;quot; (lowercase), you should get 97; &amp;quot;A&amp;quot; (uppercase) is 67; &amp;quot;0&amp;quot; would be 48.&lt;br /&gt;
&lt;br /&gt;
=== By looking in keyboard.xml ===&lt;br /&gt;
For non-printable characters, the simplest option is to look for the specific key (or control key) in keyboard.xml. For example, {{key press|Ctrl|N}} is found on line 154 in keyboard.xml, which reads:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;key n=&amp;quot;14&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;name&amp;gt;Ctrl-N&amp;lt;/name&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;/key&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thus the key code is 14 (as well as the index of the key binding).&lt;br /&gt;
&lt;br /&gt;
=== By enabling special debugging output ===&lt;br /&gt;
If the key isn't listed in keyboard.xml, the last option is to enable some helpful output to see what the correct keycode is. Uncomment {{fgdata source|path=keyboard.xml|line=39}} and run with the &amp;lt;tt&amp;gt;--console&amp;lt;/tt&amp;gt; option, if on windows, and look at the console to see each keycode for each key. Make sure you can see the output as you press keys, or you won't know which is which! When I press and release {{key press|a}}, I get this output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
{ key: 97, modifier: { meta: 0, shift: 0, alt: 0, super: 0, ctrl: 0, hyper: 0 }, pressed: 1 }&lt;br /&gt;
{ key: 97, modifier: { meta: 0, shift: 0, alt: 0, super: 0, ctrl: 0, hyper: 0 }, pressed: 0 }&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This shows that key 97 was pressed (without any modifiers) and then released. This view can also help with combining modifiers, like mod-meta above.&lt;br /&gt;
&lt;br /&gt;
== Adding custom bindings ==&lt;br /&gt;
The &amp;quot;easiest&amp;quot; option for many is to edit keyboard.xml in place, because it just works. If you do this, make sure to keep a backup of it, in case you need to revert back to the default setup, or simply download it from {{fgdata-old source|view=raw|branch=release/3.0.0|path=keyboard.xml|text=fgdata-old (v3.0)}} or {{fgdata source|path=keyboard.xml|text=fgdata cutting edge}}.&lt;br /&gt;
&lt;br /&gt;
Another option, that ends up cleaner, is using a config file. These are specified on the commandline with '''&amp;lt;tt&amp;gt;--config&amp;lt;/tt&amp;gt;''', like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;fgfs --config=/Users/philosopher/Documents/FlightGear/keyboard-config.xml&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
These can be formatted in the same way as keyboard.xml, with the exception of requiring input and keyboard tags, so it looks like this:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;input&amp;gt;&amp;lt;keyboard&amp;gt;&lt;br /&gt;
    &amp;lt;key n=&amp;quot;....&amp;quot;&amp;gt;...&amp;lt;/key&amp;gt;&lt;br /&gt;
    &amp;lt;!-- etc. --&amp;gt;&lt;br /&gt;
&amp;lt;/keyboard&amp;gt;&amp;lt;/input&amp;gt;&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
This makes sure it writes to the correct place in the tree, viz. /input/keyboard/.&lt;br /&gt;
&lt;br /&gt;
This allows you to more easily keep several different files for different types of setups, without having to rename them before starting FG, you only need to change the filename passed in the &amp;lt;tt&amp;gt;--config=&amp;lt;/tt&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
== Related content ==&lt;br /&gt;
=== Wiki articles ===&lt;br /&gt;
* [[Bindings]]&lt;br /&gt;
* [[Howto:Add multi-key commands to an aircraft]]&lt;br /&gt;
* [[Howto:Make a clickable panel]]&lt;br /&gt;
&lt;br /&gt;
=== Forum topics with layouts ===&lt;br /&gt;
Several users have modified the default keyboard bindings and shared the results.&lt;br /&gt;
&lt;br /&gt;
==== Complete layouts ====&lt;br /&gt;
* [http://forum.flightgear.org/viewtopic.php?f=6&amp;amp;t=10902 New mice.xml and keyboard.xml for mouse and keyboard users]&lt;br /&gt;
&lt;br /&gt;
==== Individual bindings ====&lt;br /&gt;
* [http://forum.flightgear.org/viewtopic.php?f=24&amp;amp;t=20531#p188008 Taxi/Landing Lights]&lt;br /&gt;
* [http://forum.flightgear.org/viewtopic.php?f=25&amp;amp;t=19873#p182779 Reset all trim to neutral]&lt;br /&gt;
* [http://forum.flightgear.org/viewtopic.php?f=24&amp;amp;t=17836#p168079 New rascal bindings] (control rudder/aileron/elevator as &amp;quot;all or nothing&amp;quot;)&lt;br /&gt;
* [http://forum.flightgear.org/viewtopic.php?f=17&amp;amp;t=17312#p164775 Autopilot adjustment]&lt;br /&gt;
* [http://forum.flightgear.org/viewtopic.php?f=25&amp;amp;t=20504#p187879 Concorde rudder keyboard] (rudder on the normal left/right brake keys)&lt;br /&gt;
* [http://forum.flightgear.org/viewtopic.php?f=25&amp;amp;t=14494#p143807 Keyboard &amp;quot;sensitivity&amp;quot;]&lt;br /&gt;
* [http://forum.flightgear.org/viewtopic.php?f=24&amp;amp;t=17862#p168250 Idea for Elevator- and Aileron-trim] (show value of trim in a popupTip)&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto]]&lt;br /&gt;
[[Category:FlightGear]]&lt;br /&gt;
[[Category:FlightGear keyboard]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Bindings&amp;diff=102407</id>
		<title>Bindings</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Bindings&amp;diff=102407"/>
		<updated>2016-07-28T12:01:16Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: Category:FlightGear keyboard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Bindings''' define what happens when a user:&lt;br /&gt;
* [[Howto: Make a clickable panel|Clicks an object]] in the [[scenery]] or in an [[aircraft]].&lt;br /&gt;
* Presses a key/button on the keyboard or [[joystick]].&lt;br /&gt;
* Clicks a [[menu]] item&lt;br /&gt;
* Interacts with a dialog (clicking a button, selecting list entries etc)&lt;br /&gt;
&lt;br /&gt;
In other words, '''bindings''' are simply the term for '''actions''' that are associated with certain '''events''' in FlightGear. &lt;br /&gt;
&lt;br /&gt;
There are different types of events supported by various subsystems, but the resulting action that can be triggered will typically involve either a hard-coded command (a so called fgcommand), or a block of scripted code (using [[Nasal]]). Bindings can be parameterized/customized using properties as arguments that are passed to each binding as a props.Node object.&lt;br /&gt;
And Nasal code can also be registered to become available as a dedicated fgcommand.&lt;br /&gt;
&lt;br /&gt;
You can assign multiple bindings to one object, button or key. Bindings may contain [[conditions]] to make them conditionally executed. Each binding must specify a command node with its particular type, see below.&lt;br /&gt;
&lt;br /&gt;
This article gives a small overview of frequently used bindings. Please refer to {{readme file|commands}} for additional information and refer to $FG_SRC/Main/commands.cxx for a complete list of available bindings.&lt;br /&gt;
&lt;br /&gt;
All given codes are examples, found on various places in the [[FlightGear]] package.&lt;br /&gt;
&lt;br /&gt;
== Commands ==&lt;br /&gt;
Below are a number of useful commands, some also with their equivalent Nasal call. For the complete list, see {{flightgear file|src/Main/fg_commands.cxx|l=1425}}. &lt;br /&gt;
&lt;br /&gt;
To learn more about adding your own custom fgcommands to the source code, see [[Howto:Add new fgcommands to FlightGear]].&lt;br /&gt;
&lt;br /&gt;
=== dialog-close ===&lt;br /&gt;
Closes the active dialog.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;dialog-close&amp;lt;/command&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
fgcommand(&amp;quot;dialog-close&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== dialog-show ===&lt;br /&gt;
Shows a dialog, which should be present in &amp;lt;tt&amp;gt;''[[$FG_ROOT]]/gui/dialogs''&amp;lt;/tt&amp;gt;. In addition, from FlightGear 2.8, dialog files located in &amp;lt;tt&amp;gt;''&amp;lt;aircraft directory&amp;gt;/gui/dialogs''&amp;lt;/tt&amp;gt; are also loaded. This should be used for dialogs specific to a certain aircraft.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;dialog-show&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;dialog-name&amp;gt;location-in-air&amp;lt;/dialog-name&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
fgcommand(&amp;quot;dialog-show&amp;quot;, props.Node.new({&amp;quot;dialog-name&amp;quot;: &amp;quot;location-in-air&amp;quot;}));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; dialog-name : The name of the dialog, as designated in its XML file.&lt;br /&gt;
&lt;br /&gt;
=== nasal ===&lt;br /&gt;
[[Nasal]] is frequently used for complicated systems, because it can execute virtually any function and allows running previously-defined Nasal functions.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;nasal&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;script&amp;gt;b777.afds.input(0,1);&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; script : The Nasal script to execute.&lt;br /&gt;
: {{inote|Make sure that the script does not conflict with the {{wikipedia|List of XML and HTML character entity references#Predefined entities in XML|predefined XML entities}}. If it does, you can either put it in a {{wikipedia|CDATA|CDATA section}} or use a non-interpreted version (e.g., &amp;lt;code&amp;gt;&amp;amp;amp;gt;&amp;lt;/code&amp;gt; in place of &amp;lt;code&amp;gt;&amp;gt;&amp;lt;/code&amp;gt;).}}&lt;br /&gt;
&lt;br /&gt;
The {{func link|cmdarg}} function is often useful in these situations to extract offset values passed to the binding. It returns the specific &amp;lt;tt&amp;gt;&amp;amp;lt;binding&amp;amp;gt;&amp;lt;/tt&amp;gt; node, which contains a &amp;lt;tt&amp;gt;&amp;amp;lt;setting&amp;amp;gt;&amp;lt;/tt&amp;gt; node at runtime if used in a joystick axis that represents the value of that axis.&lt;br /&gt;
&lt;br /&gt;
In joysticks and keyboard keys, the script is run in a specific namespace; please see [[Howto:Understand Namespaces and Methods]] for more information on namespaces.&lt;br /&gt;
&lt;br /&gt;
=== property-adjust ===&lt;br /&gt;
Increases or decreases a property's value with a given step. Maximum and minimum values are optional.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-adjust&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/autopilot/settings/heading-bug-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;step&amp;gt;1&amp;lt;/step&amp;gt;&lt;br /&gt;
  &amp;lt;min&amp;gt;0&amp;lt;/min&amp;gt;&lt;br /&gt;
  &amp;lt;max&amp;gt;360&amp;lt;/max&amp;gt;&lt;br /&gt;
  &amp;lt;wrap&amp;gt;true&amp;lt;/wrap&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
; property : Property that will be changed.&lt;br /&gt;
; step     : Amount to increase or decrease the property's value. Defaults to 0.&lt;br /&gt;
; offset   : Offset from the property's current value. If '''step''' is not given, this is multiplied by '''factor'''.&lt;br /&gt;
; factor   : When '''step''' is not given, '''offset''' is multiplied by this. Defaults to 1.&lt;br /&gt;
; min      : The minimum allowed value. Defaults to &amp;quot;no minimum.&amp;quot;&lt;br /&gt;
; max      : The maximum allowed value. Defaults to &amp;quot;no maximum.&amp;quot;&lt;br /&gt;
; wrap     : If true, the value will be wrapped when it passes min or max; both min and max must be present for this to work. Defaults to false.&lt;br /&gt;
; mask     : This argument accepts three value: &amp;quot;integer,&amp;quot; &amp;quot;decimal&amp;quot; and &amp;quot;all&amp;quot; (default). &amp;quot;integer&amp;quot; means that '''step''' or '''offset * factor''' is applied to the part of the property's current value left of the decimal point first. &amp;quot;decimal&amp;quot; does the same, but applies it to the prt to the right of the decimal point. &amp;quot;all&amp;quot; simply applies it to the whole number. This parameter does not seem to affect the resulting new value of the property, and so is not needed.&lt;br /&gt;
&lt;br /&gt;
=== property-assign ===&lt;br /&gt;
One of the most important commands. It sets a property to a predefined value.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-assign&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/autopilot/settings/target-speed-kt&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;value&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== property-cycle ===&lt;br /&gt;
Cycles between a list of values and assigns one to a property. The value-list can vary in length. If the current value is &amp;quot;value1&amp;quot;, it will change to &amp;quot;value2&amp;quot;; if it is &amp;quot;value2&amp;quot;, it will change to &amp;quot;value3&amp;quot;, and so on, wrapping around the end.  If the current value is not in the list, it will jump to the first one.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-cycle&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/autopilot/autobrake/setting&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;value type=&amp;quot;string&amp;quot;&amp;gt;ARM&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;value type=&amp;quot;string&amp;quot;&amp;gt;DISARM&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;value type=&amp;quot;string&amp;quot;&amp;gt;OFF&amp;lt;/value&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
As of May 2013, the command supports additional behaviours to simplify use with the new [[Knob_/_slider_animation|knob and slider animations]]. The wrapping behaviour can be disabled by setting &amp;lt;wrap&amp;gt;0&amp;lt;/wrap&amp;gt;, and the command uses the 'offset' argument to select a direction of movement. This means a property-cycle bound to a multi-position knob will function as expected for movement in both directions.&lt;br /&gt;
&lt;br /&gt;
=== property-interpolate ===&lt;br /&gt;
Interpolates to a value with a given rate of change (per second).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-interpolate&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/flight/aileron-trim&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;value type=&amp;quot;double&amp;quot;&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;rate&amp;gt;0.5&amp;lt;/rate&amp;gt;&amp;lt;!-- 2 seconds to 0 from 1 or -1 --&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Instead of using &amp;lt;rate&amp;gt;, one could use &amp;lt;time&amp;gt;, to specify the time (in seconds) it takes to go to the new value, independent of the current value.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-interpolate&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/flight/aileron-trim&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;value type=&amp;quot;double&amp;quot;&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;time&amp;gt;2&amp;lt;/time&amp;gt;&amp;lt;!-- 2 seconds to 0 from 1, 0.5, -1 etc. --&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also interpolate to a value given by a property.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-interpolate&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/flight/aileron-trim&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/flight/default-aileron-trim&amp;lt;/property&amp;gt;&amp;lt;!-- the value to interpolate to, is 0 --&amp;gt;&lt;br /&gt;
  &amp;lt;rate&amp;gt;0.5&amp;lt;/rate&amp;gt;&amp;lt;!-- 2 seconds to 0 from 1 or -1 --&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== property-multiply ===&lt;br /&gt;
Multiply the value of a property by a given factor.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-multiply&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/flight/aileron&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;factor&amp;gt;0.5&amp;lt;/factor&amp;gt;&lt;br /&gt;
  &amp;lt;min&amp;gt;-1&amp;lt;/min&amp;gt;&lt;br /&gt;
  &amp;lt;max&amp;gt;1&amp;lt;/max&amp;gt;&lt;br /&gt;
  &amp;lt;mask&amp;gt;all&amp;lt;/mask&amp;gt;&lt;br /&gt;
  &amp;lt;wrap&amp;gt;true&amp;lt;/wrap&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
*'''factor:''' the amount to multiply by.&lt;br /&gt;
*'''min:''' minimum value.&lt;br /&gt;
*'''max:''' maximum value.&lt;br /&gt;
*'''mask:'''&lt;br /&gt;
** '''integer:''' mutiply only left of the decimal point.&lt;br /&gt;
** '''decimal:''' multiply only the right of the decimal point.&lt;br /&gt;
** '''all:''' multiply the entire value.&lt;br /&gt;
*'''wrap:''' true if the value should be wrapped if it passes min/max. It is required to set both min and max in that case.&lt;br /&gt;
&lt;br /&gt;
=== property-randomize ===&lt;br /&gt;
Assigns a random value (between min and max) to a property.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-randomize&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/orientation/pitch-deg&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;min&amp;gt;0&amp;lt;/min&amp;gt;&lt;br /&gt;
  &amp;lt;max&amp;gt;360&amp;lt;/max&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== property-scale ===&lt;br /&gt;
Set the value of a property based on an axis, often used in [[joystick]] configuration files.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-scale&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/flight/aileron&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;offset&amp;gt;0.001&amp;lt;/offset&amp;gt;&lt;br /&gt;
  &amp;lt;factor&amp;gt;-1&amp;lt;/factor&amp;gt;&lt;br /&gt;
  &amp;lt;power&amp;gt;3&amp;lt;/power&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''offset:''' the offset to shift by, before applying the factor.&lt;br /&gt;
* '''factor:''' the factor to multiply by (use negative to reverse).&lt;br /&gt;
* '''squared:''' if true will square the resulting value (same as power=2).&lt;br /&gt;
* '''power:''' the resulting value will be taken to the power of this integer value (overrides squared).&lt;br /&gt;
&lt;br /&gt;
Remember: &amp;lt;tt&amp;gt;((property+offset)*factor)^power=result&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== property-swap ===&lt;br /&gt;
Swaps the values of two properties, useful for radio panels.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-swap&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/instrumentation/comm/frequencies/selected-mhz&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/instrumentation/comm/frequencies/standby-mhz&amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== property-toggle ===&lt;br /&gt;
Toggles the value of a property on each click, between true (1) and false (0).&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-toggle&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/gear/gear-down&amp;lt;/property&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Or - if defined - it toggles between two custom values.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;binding&amp;gt;&lt;br /&gt;
  &amp;lt;command&amp;gt;property-toggle&amp;lt;/command&amp;gt;&lt;br /&gt;
  &amp;lt;property&amp;gt;/controls/gear/gear-down&amp;lt;/property&amp;gt;&lt;br /&gt;
  &amp;lt;value&amp;gt;2&amp;lt;/value&amp;gt;&lt;br /&gt;
  &amp;lt;value&amp;gt;3&amp;lt;/value&amp;gt;&lt;br /&gt;
&amp;lt;/binding&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===request-metar ===&lt;br /&gt;
{{cquote|&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;nasal&amp;quot;&amp;gt;&lt;br /&gt;
fgcommand(&amp;quot;request-metar&amp;quot;, props.Node.new({&amp;quot;path&amp;quot;: &amp;quot;/foo/mymetar&amp;quot;, &amp;quot;station&amp;quot;: &amp;quot;LOWI&amp;quot;}));&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you pass an existing path, the station ID will be updated, and if you pass the same station ID as before, no additional request is made. As usual for metar-properties, there's a time-to-live and valid flags you can check, and the metar refreshes automatically every 900 seconds. You can also write to the station ID directly to change station, update the time-to-live, and wait for the valid signal.&lt;br /&gt;
&lt;br /&gt;
There's also an unregister command ('clear-metar') to cancel the binding into the property tree.&amp;lt;ref&amp;gt;{{cite web |url=http://www.mail-archive.com/flightgear-devel@lists.sourceforge.net/msg38372.html|title=&amp;lt;nowiki&amp;gt;[Flightgear-devel] Requesting arbitrary metar&amp;lt;/nowiki&amp;gt;|author=James Turner|date=Sun, 23 Sep 2012 08:56:48 -0700}}&amp;lt;/ref&amp;gt;|James Turner}}&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Related content ==&lt;br /&gt;
* {{readme file|commands}}&lt;br /&gt;
* [[Howto:Make a clickable panel]]&lt;br /&gt;
* [[Howto:Reassign keyboard bindings]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:XML]]&lt;br /&gt;
[[Category:FlightGear keyboard]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Add_multi-key_commands_to_an_aircraft&amp;diff=102406</id>
		<title>Howto:Add multi-key commands to an aircraft</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Add_multi-key_commands_to_an_aircraft&amp;diff=102406"/>
		<updated>2016-07-28T12:00:22Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: Category:FlightGear keyboard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:FlightGear vi-like commands on-screen help.png|thumb|The on-screen help for the multi-key commands.]]&lt;br /&gt;
This tutorial will guide you through '''how to add multi-key commands to an aircraft''' and how they work.&lt;br /&gt;
&lt;br /&gt;
The [[multi-key commands]] are vi-like key sequences that begin with {{key press|:}} and is followed by other keys. &lt;br /&gt;
&lt;br /&gt;
== Define the multi-key commands ==&lt;br /&gt;
* Begin the aircraft-specific sequences with {{key press|:}}{{key press|A}}.&lt;br /&gt;
&lt;br /&gt;
* If for example an instrument have many bindings, begin its sequences with {{key press|:}}{{key press|A}} and a uppercase letter specific for that instrument followed by the rest of the sequence.&lt;br /&gt;
&lt;br /&gt;
=== The multikey.xml file ===&lt;br /&gt;
The multi-key commands are defined in a [[PropertyList XML files|property-list xml file]], named for example &amp;lt;code&amp;gt;aircraft-multikey.xml&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
    This file defines vi-like key sequences which are started with the ':'-key.&lt;br /&gt;
    It's evaluated by $FG_ROOT/Nasal/multikey.nas.&lt;br /&gt;
&lt;br /&gt;
    - &amp;lt;Esc&amp;gt; always aborts.&lt;br /&gt;
    - &amp;lt;Return&amp;gt;/&amp;lt;Enter&amp;gt; executes and terminates the command mode, given that&lt;br /&gt;
      &amp;lt;binding&amp;gt;s exist (use &amp;quot;null&amp;quot; if there's nothing else to do) and &amp;lt;no-exit/&amp;gt;&lt;br /&gt;
      isn't defined.&lt;br /&gt;
    - Keys with defined &amp;lt;exit/&amp;gt; property execute their bindings immediately,&lt;br /&gt;
      that is: without having to press &amp;lt;Return&amp;gt;/&amp;lt;Enter&amp;gt;.&lt;br /&gt;
    - Format placeholder values are available to Nasal code via arg[].&lt;br /&gt;
    - Nasal code can set the dialog title by assignment to the _ variable.&lt;br /&gt;
    - &amp;lt;key&amp;gt; indices aren't used by the system, but are recommended to allow&lt;br /&gt;
      reliable overwriting by aircraft or user xml files.&lt;br /&gt;
    - Cursor keys are equivalent to characters &amp;lt;, &amp;gt;, ^, _.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;key n=&amp;quot;65&amp;quot;&amp;gt;               &amp;lt;!-- &amp;quot;65&amp;quot; is the key code --&amp;gt;&lt;br /&gt;
        &amp;lt;name&amp;gt;A&amp;lt;/name&amp;gt;&lt;br /&gt;
        &amp;lt;desc&amp;gt;Aircraft&amp;lt;/desc&amp;gt;  &amp;lt;!-- reserved for aircraft extensions --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;!--&lt;br /&gt;
            List of keys.&lt;br /&gt;
&lt;br /&gt;
            - Due to the key sequences, keys can also be nested.&lt;br /&gt;
            - Only the leaf nodes have bindings.&lt;br /&gt;
        --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;/key&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
The syntax builds up like a tree where the leaf nodes have bindings.&lt;br /&gt;
&lt;br /&gt;
==== Non-leaf nodes ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;key n=&amp;quot;n&amp;quot;&amp;gt;         &amp;lt;!-- n is a key code --&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;&amp;lt;name&amp;gt;    &amp;lt;!-- Name of the key --&amp;gt;&lt;br /&gt;
            &amp;lt;desc&amp;gt;&amp;lt;/desc&amp;gt;   &amp;lt;!-- Short description of what the key will do --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;key n=&amp;quot;n&amp;quot;&amp;gt;     &amp;lt;!-- n is a key code --&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ... --&amp;gt;&lt;br /&gt;
            &amp;lt;/key&amp;gt;&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;key n=&amp;quot;n&amp;quot;&amp;gt;     &amp;lt;!-- n is a key code --&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ... --&amp;gt;&lt;br /&gt;
            &amp;lt;/key&amp;gt;&lt;br /&gt;
&lt;br /&gt;
            &amp;lt;!-- ... --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;/key&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Leaf nodes ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;key n=&amp;quot;n&amp;quot;&amp;gt;         &amp;lt;!-- n is a key code --&amp;gt;&lt;br /&gt;
            &amp;lt;name&amp;gt;&amp;lt;name&amp;gt;    &amp;lt;!-- Name of the key --&amp;gt;&lt;br /&gt;
            &amp;lt;desc&amp;gt;&amp;lt;/desc&amp;gt;   &amp;lt;!-- Short description of what the key will do --&amp;gt;&lt;br /&gt;
            &amp;lt;exit/&amp;gt;         &amp;lt;!-- If added the binding will be executed immediately instead of when enter is pressed --&amp;gt;&lt;br /&gt;
            &amp;lt;binding&amp;gt;       &amp;lt;!-- Key bindings --&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ... --&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
            &amp;lt;binding&amp;gt;       &amp;lt;!-- One key can have more than one binding --&amp;gt;&lt;br /&gt;
                &amp;lt;!-- ... --&amp;gt;&lt;br /&gt;
            &amp;lt;/binding&amp;gt;&lt;br /&gt;
        &amp;lt;/key&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Key codes ====&lt;br /&gt;
:''See [[Howto:Reassign keyboard keys#Finding keycodes]].''&lt;br /&gt;
&lt;br /&gt;
==== Name and description  ====&lt;br /&gt;
It is a very good idea to use the key name and a short but meaningful description as those are used by the multi-key command on-screen help dialog (when it is toggled on with {{key press|:}}{{key press|Tab}}).&lt;br /&gt;
&lt;br /&gt;
==== Bindings ====&lt;br /&gt;
The bindings uses the same syntax as described in [[Bindings]] and [[Howto:Reassign keyboard keys#Adding or modifying key assignments]].&lt;br /&gt;
&lt;br /&gt;
== Include the commands into the aircraft-set.xml file ==&lt;br /&gt;
Add this line to the &amp;lt;code&amp;gt;[[aircraft-set.xml]]&amp;lt;/code&amp;gt; file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;!-- ... --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;input&amp;gt;&lt;br /&gt;
    &amp;lt;keyboard n=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;multikey include=&amp;quot;aircraft-multikey.xml&amp;quot;/&amp;gt;  &amp;lt;!-- Does not have to specifically be &amp;quot;aircraft-multikey.xml&amp;quot; --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;!-- ... --&amp;gt;&lt;br /&gt;
    &amp;lt;/keyboard&amp;gt;&lt;br /&gt;
  &amp;lt;input&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;!-- ... --&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Technical details ==&lt;br /&gt;
{{stub|section=1}}&lt;br /&gt;
Among the nasal files in &amp;lt;code&amp;gt;$FGDATA/Nasal&amp;lt;/code&amp;gt; that are loaded when FlightGear starts is &amp;lt;code&amp;gt;multikey.nas&amp;lt;/code&amp;gt; that will load a number of Nasal functions.  The keyboard configuration file &amp;lt;code&amp;gt;$FGDATA/keyboard.xml&amp;lt;/code&amp;gt; will call &amp;lt;code&amp;gt;multikey.start()&amp;lt;/code&amp;gt; when the {{key press|:}} key is used.&lt;br /&gt;
&lt;br /&gt;
== Related content ==&lt;br /&gt;
=== Wiki articles ===&lt;br /&gt;
* [[Aircraft-set.xml]]&lt;br /&gt;
* [[Bindings]]&lt;br /&gt;
* [[Multi-key commands]]&lt;br /&gt;
* [[Howto:Reassign keyboard keys]]&lt;br /&gt;
&lt;br /&gt;
=== Source code ===&lt;br /&gt;
==== fgdata files ====&lt;br /&gt;
* {{fgdata source|path=keyboard.xml|line=634|pre=$FG_ROOT}} Lines 634-641 of the keyboard configuration file delegates handling to multikey.start()&lt;br /&gt;
* {{fgdata source|path=Nasal/multikey.nas|pre=$FG_ROOT}} The global Nasal multi-key handler.&lt;br /&gt;
&lt;br /&gt;
==== F-14B files ====&lt;br /&gt;
These are a good example of how one can do.&lt;br /&gt;
* {{fgaddon source|path=Aircraft/f-14b/f-14-common.xml|line=1367|pre=$FG_AIRCRAFT}} Line 1367 delegates the handling to Systems/instruments-multikey.xml.&lt;br /&gt;
* {{fgaddon source|path=Aircraft/f-14b/Systems/instruments-multikey.xml|pre=$FG_AIRCRAFT}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft enhancement]]&lt;br /&gt;
[[Category:Howto]]&lt;br /&gt;
[[Category:FlightGear keyboard]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Category:FlightGear_keyboard&amp;diff=102405</id>
		<title>Category:FlightGear keyboard</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Category:FlightGear_keyboard&amp;diff=102405"/>
		<updated>2016-07-28T11:59:40Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: new category Category:FlightGear keyboard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Related content about keyboard mapping in Flightgear.&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Multi-key_commands&amp;diff=102404</id>
		<title>Multi-key commands</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Multi-key_commands&amp;diff=102404"/>
		<updated>2016-07-28T11:58:19Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: Category:FlightGear keyboard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:FlightGear vi-like commands on-screen help.png|thumb|The on-screen help for the multi-key commands.]]&lt;br /&gt;
&lt;br /&gt;
FlightGear have a set of useful vi-like '''multi-key commands''' that can be used to change some settings quicker than if going through the menus.&lt;br /&gt;
&lt;br /&gt;
== Basic keys ==&lt;br /&gt;
All multi-key sequence starts with {{Key press|:}}&lt;br /&gt;
&lt;br /&gt;
{{Key press|:}}{{Key press|Tab}} toggles on-screen command help&lt;br /&gt;
&lt;br /&gt;
{{Key press|enter}} sends the command &lt;br /&gt;
&lt;br /&gt;
{{Key press|esc}} cancels the command &lt;br /&gt;
&lt;br /&gt;
== Some useful commands ==&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; &lt;br /&gt;
! Sequence     !! Use&lt;br /&gt;
|-&lt;br /&gt;
| :Da          || Autopilot settings dialog&lt;br /&gt;
|-&lt;br /&gt;
| :Df          || Fuel &amp;amp; weight dialog&lt;br /&gt;
|-&lt;br /&gt;
| :Dm          || Multiplayer pilot list dialog&lt;br /&gt;
|-&lt;br /&gt;
| :Dpa         || Position aircraft in air dialog&lt;br /&gt;
|-&lt;br /&gt;
| :Dr          || Radio settings dialog&lt;br /&gt;
|-&lt;br /&gt;
| :Ds          || Sound settings dialog&lt;br /&gt;
|-&lt;br /&gt;
| :Dt          || Time settings dialog&lt;br /&gt;
|-&lt;br /&gt;
| :Ewsf        || Set fair weather&lt;br /&gt;
|-&lt;br /&gt;
| :Ewsm        || Set METAR (live) weather&lt;br /&gt;
|-&lt;br /&gt;
| :Etc         || Timeofday: clock time&lt;br /&gt;
|-&lt;br /&gt;
| :Etn         || Timeofday: noon&lt;br /&gt;
|-&lt;br /&gt;
| :Pg ''ICAO'' || Position aircraft at airport + optional runway number&lt;br /&gt;
|-&lt;br /&gt;
| :Yf/         || Fog off&lt;br /&gt;
|-&lt;br /&gt;
| :fat0        || Flight controls: aileron trim 0&lt;br /&gt;
|-&lt;br /&gt;
| :fet0        || Flight controls: elevator trim 0&lt;br /&gt;
|-&lt;br /&gt;
| :fia         || Flight controls: reset all 3 trims&lt;br /&gt;
|-&lt;br /&gt;
| :rn1f110.50  || Radio: set nav1 radio to 110.50MHz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Related content ==&lt;br /&gt;
=== Wiki articles ===&lt;br /&gt;
* [[Howto:Add multi-key commands to an aircraft]]&lt;br /&gt;
&lt;br /&gt;
=== Source code ===&lt;br /&gt;
* {{fgdata source|path=Input/Keyboard/multikey.xml|pre=$FG_ROOT}}&lt;br /&gt;
* {{fgdata source|path=Nasal/multikey.nas|pre=$FG_ROOT}}&lt;br /&gt;
&lt;br /&gt;
[[Category:FlightGear]]&lt;br /&gt;
[[Category:FlightGear keyboard]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Cessna_150/info&amp;diff=102184</id>
		<title>Cessna 150/info</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Cessna_150/info&amp;diff=102184"/>
		<updated>2016-07-25T22:03:00Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: added a cockpit image&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{infobox aircraft&lt;br /&gt;
| name           = Cessna 150L&lt;br /&gt;
| hangar         = fgaddon&lt;br /&gt;
| aircraft       = c150&lt;br /&gt;
| image          = C150L.jpg&lt;br /&gt;
| image2         = C150l-cockpit.jpg&lt;br /&gt;
| type           = Civil aircraft/Civil utility aircraft&lt;br /&gt;
| config         = High wing aircraft/Fixed gear aircraft&lt;br /&gt;
| propulsion     = Propeller aircraft/Single-engine aircraft&lt;br /&gt;
| manufacturer   = Cessna&lt;br /&gt;
| authors        = Harald Johnsen&lt;br /&gt;
| fdm            = JSBSim&lt;br /&gt;
| fgname         = c150&lt;br /&gt;
| status         = alpha&lt;br /&gt;
| status-fdm     = 1&lt;br /&gt;
| status-systems = 1&lt;br /&gt;
| status-cockpit = 1&lt;br /&gt;
| status-model   = 1&lt;br /&gt;
| ready          = &lt;br /&gt;
| devel-repo     = {{github url|user=Harald67|repo=c150}}&lt;br /&gt;
| liverydbid     = &lt;br /&gt;
| forumtid       = &lt;br /&gt;
| note           = &lt;br /&gt;
| navbar         = 1&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
This is the aircraft infobox subpage of the [[Cessna 150]].&lt;br /&gt;
[[Category:Aircraft infobox documentation]]&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:C150l-cockpit.jpg&amp;diff=102183</id>
		<title>File:C150l-cockpit.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:C150l-cockpit.jpg&amp;diff=102183"/>
		<updated>2016-07-25T22:01:10Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: User created page with UploadWizard&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=={{int:filedesc}}==&lt;br /&gt;
{{Information&lt;br /&gt;
|description={{en|1=Updated cockpit of the Cessna 150 L}}&lt;br /&gt;
|date=2016-07-26&lt;br /&gt;
|source={{own}}&lt;br /&gt;
|author=[[User:Tipunch|Harald JOHNSEN]]&lt;br /&gt;
|permission=&lt;br /&gt;
|other versions=&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=={{int:license-header}}==&lt;br /&gt;
{{self|cc-by-sa-4.0}}&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Standard_aircraft_structure&amp;diff=102069</id>
		<title>Standard aircraft structure</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Standard_aircraft_structure&amp;diff=102069"/>
		<updated>2016-07-24T14:57:38Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: dialog-show can only find the dialogs in 'gui/dialogs', not in 'Dialogs'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Out of date}}&lt;br /&gt;
&lt;br /&gt;
To help provide a more consistent experience for end users, please use [[Release:Aircraft Selection Criteria]] as a guide to prepare aircraft for inclusion in the base package, especially if you are hoping for your aircraft to become part of the default distribution, such as the c172p for example.&lt;br /&gt;
&lt;br /&gt;
== Standard Aircraft Folder Structure ==&lt;br /&gt;
The majority of cleanly structured [[aircraft]] share (more or less) a pretty similar folder layout. &lt;br /&gt;
&lt;br /&gt;
While the suggested structure may seem overly verbose, using this or a similar structure for your own work ensures that your aircraft is pretty intuitively organized and that key components are kept in distinct places (and can be easily identified), so that future maintenance is simplified because of the self-documenting nature of the underlying file hierarchy. &lt;br /&gt;
&lt;br /&gt;
'''Please note''': While the following folder layout has merely advisory character, it can be considered a product of &amp;quot;convention by evolution&amp;quot;: As aircraft emulations in [[FlightGear]] are getting more and more complex, it is also&lt;br /&gt;
getting more complicated to maintain an overview of aircraft components and their implementation files, including their mutual relationships and purposes. &lt;br /&gt;
&lt;br /&gt;
Furthermore, having aircraft authors organize their aircraft this way, also ensures that future contributors can more easily find, borrow and understand certain code snippets from existing work, so that they don't have to waste time trying to understand the purpose of the various files included.&lt;br /&gt;
&lt;br /&gt;
=== Multiplayer Notes ===&lt;br /&gt;
Only few aircraft have a specific multiplayer model, so the feature only helps with some aircraft.&lt;br /&gt;
There is one thing I'd like to see added to the top-level directory tree for each aircraft. That is an MPModel directory, which would contain a simplified version of the model for AI/MP use. I think the MP version should be made by the original model builder, and it should be included in the original model package.&lt;br /&gt;
&lt;br /&gt;
The reason I'd like to see this is I usually remove all models from my Aircraft directory except the ones I'm working on. This is to prevent periodic freezing of my sim session on MP when someone logs in with a heavy model. I'd like to see their airplane though, but not in its full form, and not replaced with a blue glider (or some other one-off substitue). I used to keep my own stable of MP versions of many models, but it became too unwieldy to maintain. It would be easier if I could set an XML element in preferences.xml to use the MP version of a model rather than the full version, or get a blue glider if no MP version exists.&lt;br /&gt;
&lt;br /&gt;
Note that I don't consider turning some features off on a full model to be sufficient for making an MP model. The really lagging thing is the loading of textures, so I modified the livery exchange for the model (which is needed to send the correct livery over MP) to use a low-res version of the texture. So it's not the full blown 2048x2048 texture but a light weight 512x512 texture.&lt;br /&gt;
&lt;br /&gt;
Many (or most/all?) AI models ignore liveries. They could still support it though - it really depends on what is coded in the AI model's animation code. An AI aircraft could support all the very same features as the real model. But obviously they only make really sense, when they are omitting a few features compared to the full-blown original. But it's up to the author to decide what to omit/simplify for the lightweight version.&lt;br /&gt;
&lt;br /&gt;
An additional AI Model for AI Scenario use is helpful too, especially tail-draggers need some additional animations to work properly (e.g. lift the tail while accelerating).&lt;br /&gt;
&lt;br /&gt;
If you use some low detail impostor for some objects at a distance, make sure you use the same texture as the &amp;quot;original&amp;quot; high poly version. Loading textures is the most expensive operation currently in FG (you need to unpack the png, generate the mipmaps on the fly then upload the uncompressed texture+mipmaps to the gpu.). This texture loading is the cause of the freezes everyone notices when some &amp;quot;detailed&amp;quot; aircraft joins MP.&lt;br /&gt;
&lt;br /&gt;
I think the Model complexity needs to be reduced via the Model itself. E.g put all 3d Cockpit models into a seperate XML File and have a range animation (suggested by Anders) to load it only if sitting in the cockpit. Usable for gears too.&lt;br /&gt;
Livery select over Multiplayer can reduce lag too, by loading a low res texture instead of the hi res default one (see the F4U for an example).&lt;br /&gt;
&lt;br /&gt;
== Structure ==&lt;br /&gt;
&lt;br /&gt;
* '''MPModel''' - for multiplayer models [http://forum.flightgear.org/viewtopic.php?f=4&amp;amp;p=183059#p183057] [http://forum.flightgear.org/viewtopic.php?f=18&amp;amp;t=14814#p146655] [http://forum.flightgear.org/viewtopic.php?f=4&amp;amp;t=15292] &lt;br /&gt;
* &amp;lt;strike&amp;gt;'''Dialogs''' - for aircraft-specific dialog resources&amp;lt;/strike&amp;gt; (if you load your dialogs manually)&lt;br /&gt;
** '''gui/dialogs''' - for aircraft-specific dialog resources (if you use dialog-show for opening your dialogs)&lt;br /&gt;
* '''Docs''' - for aircraft-specific documentation&lt;br /&gt;
* '''Engines''' - for various different engines supported by the FDMs (possibly beneath FDM folder?)&lt;br /&gt;
* '''Huds''' - for aircraft-specific [[HUD]]s&lt;br /&gt;
* '''Models''' - for 3D models &lt;br /&gt;
** '''Instruments''' - for aircraft-specific 3D instruments&lt;br /&gt;
** '''Liveries''' - for aircraft-specific livery textures&lt;br /&gt;
* '''Nasal''' - for aircraft-specific [[Nasal]] scripts&lt;br /&gt;
* '''Panels''' - for 2D cockpit panels&lt;br /&gt;
** '''Instruments''' - for aircraft specific 2D instruments&lt;br /&gt;
* '''Sounds''' - for aircraft-specific sounds&lt;br /&gt;
* '''Splashs''' - for aircraft-specific splash screens&lt;br /&gt;
* '''Systems''' - for aircraft-specific system modelling files (such as the electrical system and [[autopilot]])&lt;br /&gt;
* '''Tutorials''' - aircraft-specific tutorials (i.e. cold startup, approach etc.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Resources''' - for all sorts of aircraft specific development resources that may be required by other developers to continue development of an aircraft (i.e. data, images, artwork etc) but that isn't officially included in any of the other folders because it isn't yet used. That is, such &amp;quot;resource&amp;quot; folders could/should be automatically excluded from the script that is currently used to create the default base package for distribution.&lt;br /&gt;
&lt;br /&gt;
== Recommended set of Standard Files to be provided ==&lt;br /&gt;
Additionally, all aircraft are recommended to have files such as the following included (possibly in a directory named &amp;quot;'''contrib'''&amp;quot;?):&lt;br /&gt;
&lt;br /&gt;
* limits.xml - XML file configuring aircraft specific flight regime limits, i.e. to provide crash detection parameters&lt;br /&gt;
* AUTHORS.txt - list original authors and contributors, including their work&lt;br /&gt;
* CHANGELOG.txt - list recent changes to the aircraft&lt;br /&gt;
* README.txt - general information about aircraft&lt;br /&gt;
* HELP.txt - Help-related information&lt;br /&gt;
* FEATURES.txt - summary of supported features in plaintext&lt;br /&gt;
* TODO.txt - things that yet need to be done&lt;br /&gt;
* FILES.txt - a description of all relevant files and their purposes&lt;br /&gt;
* LICENSE.txt - detailing licensing and distribution &lt;br /&gt;
* LAYOUT.txt - file detailing layout of folder (i.e. contents of this paragraph)&lt;br /&gt;
* thumbnail.jpg - thumbnail image of aircraft for use by GUI/web frontends ([http://www.mail-archive.com/flightgear-devel@lists.sourceforge.net/msg14562.html standard size 171x128 for fgfs thumbnails ])&lt;br /&gt;
* thumbnail.txt - [http://www.mail-archive.com/flightgear-devel@lists.sourceforge.net/msg14653.html optional file containing description being displayed on the web as the thumbnail's caption]&lt;br /&gt;
&lt;br /&gt;
Also, providing such a set of standard files describing your work in detail, makes it possible for arbitrary web and gui frontends to optionally provide very detailed information about the progress of your work, so that automated scripts could be used to compile comprehensive summaries for all base package aircraft providing such files.&lt;br /&gt;
&lt;br /&gt;
== Related content ==&lt;br /&gt;
* [[Release:Aircraft Selection Criteria]]&lt;br /&gt;
* [[Aircraft-set.xml]]&lt;br /&gt;
* [[FlightGear Roadmap]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft enhancement]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Fr/Cessna_172P&amp;diff=102062</id>
		<title>Fr/Cessna 172P</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Fr/Cessna_172P&amp;diff=102062"/>
		<updated>2016-07-24T14:03:22Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: translation from the c172p detailed 4/4&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:{{#titleparts:{{PAGENAME}}||2}}/info}}&lt;br /&gt;
Le '''Cessna 172 Skyhawk'''  est un [[Fr/Avions|avion]] quadriplace, monomoteur à aile haute. Il effectua son premier vol en 1955 et est toujours en production, plus de Cessna 172 ont été construits que tout autres avions.&lt;br /&gt;
&lt;br /&gt;
Le C 172 est l'avion par défaut dans [[FlightGear]] depuis 2000, il a remplacé le [[Navion]]. Il a eu un long développement et il inclut une grande variété de fonctionnalités pour FlightGear.  En 2015, il a été complètement rénové ; cela comprend  de nouvelles options de moteur, de taille de pneus ou de flotteurs, ainsi qu'une refonte complète du cockpit. Cette nouvelle version détaillée de l'avion est devenu l'avion inclus en standard depuis [[Changelog_3.6|FlightGear 3.6]].&lt;br /&gt;
&lt;br /&gt;
== Contenu et variantes ==&lt;br /&gt;
&lt;br /&gt;
Le nouveau C172p a un bien meilleur modèle 3D et est maintenant complètement texturé (y compris à l'intérieur). Tous les&lt;br /&gt;
interrupteurs du cockpit sont cliquables. Il a aussi un meilleur FDM, des procédures plus complexes et des checklist réalistes, de nouveaux effets sonores et une modélisation des dégâts. L'avion peut être endommagé s'il n'est pas utilisé correctement (par example le train d’atterrissage se brise si l’atterrissage est trop brutal).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:C172p-bodensee-panorama.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
L'avion dispose actuellement de cinq variantes qui sont accessibles depuis le menu de l'avion :&lt;br /&gt;
* roues standards&lt;br /&gt;
* roues 26 pouces pour le bush&lt;br /&gt;
* roues 31 pouces pour le bush&lt;br /&gt;
* flotteurs&lt;br /&gt;
* amphibie&lt;br /&gt;
* skis pour la neige&lt;br /&gt;
&lt;br /&gt;
De plus depuis ce même menu l'utilisateur peut choisir entre deux moteurs :&lt;br /&gt;
* 160 HP&lt;br /&gt;
* 180 HP (recommandé si on utilise les variantes flotteurs, amphibie ou skis)&lt;br /&gt;
&lt;br /&gt;
L'avion peut désormais être endommagé suite à des collisions, crash, atterrissage difficiles ou surcharges et la modélisation inclus la destruction des roues ou des ailes, etc. Les dégâts peuvent être désactivés dans le menu, il y a aussi une option pour réparer l'avion.&lt;br /&gt;
&lt;br /&gt;
Les fenêtres peuvent recevoir de la buée ou du givre en fonction de la combinaison des températures intérieures et extérieures. Le pilote doit utiliser les commandes d'arrivée d'air ou de chauffage de la cabine (à droite de la commande de volet). Ou alors il est possible de désactiver cet effet dans les options de l'avion dans le menu &amp;quot;Cessna 172P&amp;quot;. &lt;br /&gt;
Ces effets graphiques nécessitent les nouveaux effets ALS de FG 3.5 ou plus récent et risquent de produire des fenêtres grises sur les version antérieures.&lt;br /&gt;
&lt;br /&gt;
Le FDM a aussi été amélioré. L'avion peut entamer une vrille dans une situation de décrochage asymétrique (une situation particulièrement dangereuse lorsqu'on tourne pour la manœuvre finale et que l'avion vole à une vitesse et une altitude faibles). Le FDM a aussi été ajusté pour inclure les effet hydrodynamiques lorsqu'il décolle ou atterrit sur l'eau. Il sait aussi gérer le moteur de 180 chevaux. &lt;br /&gt;
&lt;br /&gt;
Il y a plusieurs livrées disponibles, certaines ont une meilleure résolution que d'autres et sont marquées avec 'HD' dans le menu des livrées.&lt;br /&gt;
There are several liveries available, some of which have higher resolution than others, which are marked as HD in the liveries menu. Each of the HD liveries also has unique cockpit and interior textures.&lt;br /&gt;
&lt;br /&gt;
L'avion fournit une simulation du [[Bendix/King KAP140 Autopilot]].&lt;br /&gt;
&lt;br /&gt;
Si l'utilisateur a activé [[ALS]] (Atmospheric light scattering) dans la boite de dialogue des options de rendu, alors il est possible d'activer la lampe de poche à partir du menu &amp;quot;Cessna 172P&amp;quot; et en choisissant &amp;quot;Flashlight&amp;quot;.&lt;br /&gt;
Activer le une fois pour la lumière blanche, une deuxième fois pour la lumière rouge et une troisième fois pour l'éteindre.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez désormais effectuer la procédure d'avant-vol : cale pour les roues, attaches au sol et protection du pitot peuvent être mis ou enlevé, il est aussi possible de vérifier l'état de l'huile et la contamination du carburant par l'eau (ces fonctionnalités sont désactivées par défaut mais sont disponible dans le menu de l'avion).&lt;br /&gt;
[[File:c172p-ALS-flashlight2.jpg|500px|center|Lampe de poche du Cessna 172P dans le cockpit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aide de l'avion ==&lt;br /&gt;
&lt;br /&gt;
=== Inspection avant le vol ===&lt;br /&gt;
[[File:C172p-secured-Aosta.jpg|270px||thumb|Cessna 172P sécurisé à l'aéroport d'Aosta]]&lt;br /&gt;
Il est préférable d'utiliser une vue de l’extérieur ou d'utiliser le marcheur (walker) pour ces procédures.&lt;br /&gt;
* Niveau de carburant : cliquer que le bouchon de réservoir de chaque aile pour en ajouter&lt;br /&gt;
* Aile droite : enlever l'attache&lt;br /&gt;
* Aile droite : vérifier la contamination en cliquant sous l'aile pour extraire un échantillon de carburant. Si l’échantillon est bleu pâle alors le carburant n'est pas contaminé et peut être remis dans le réservoir. Si l’échantillon est transparent ou semi-transparent alors vous devez vous en débarrasser et reprendre des échantillons jusqu'à ce que l’échantillon soit complètement bleu pâle.&lt;br /&gt;
* Nez : vérifier la quantité en cliquant sur la trappe d'huile. Le niveau critique d'huile pour les moteurs est de 5.0 quarts.&lt;br /&gt;
* Nez : enlever la cale.&lt;br /&gt;
* Aile gauche : enlever l'attache&lt;br /&gt;
* Aile gauche : enlever la protection du tube de Pitot&lt;br /&gt;
* Aile gauche : vérifier la contamination du carburant&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mise en route (démarrage simple ou complexe) ===&lt;br /&gt;
* Priming: pompez le moteur au moins 3 fois&lt;br /&gt;
* Mixture: Riche (manette rouge poussée à fond)&lt;br /&gt;
* Gaz: 1/8&amp;quot; (1/2 cm)&lt;br /&gt;
* Frein de parking: Serré ({{Key press|Shift|B}})&lt;br /&gt;
* Zone autour de l'hélice: Dégagée&lt;br /&gt;
* Magnétos: les deux ({{Key press|&amp;lt;nowiki&amp;gt;}&amp;lt;/nowiki&amp;gt;}} trois fois)&lt;br /&gt;
* Démarreur ({{Key press|S}})&lt;br /&gt;
&lt;br /&gt;
=== Démarrage moteur (automatique avec l'Autostart) ===&lt;br /&gt;
* Dans le menu &amp;quot;Cessna C172P&amp;quot;, choisissez &amp;quot;Autostart&amp;quot; puis garder la touche {{Key press|S}} appuyée pour démarrer l'avion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Décollage ===&lt;br /&gt;
[[File:c172p-cockpit.jpg|270px||thumb|Cessna 172P prêt au décollage]]&lt;br /&gt;
* Volets rentrés&lt;br /&gt;
* Plein gaz&lt;br /&gt;
* Rotation à 55 KIAS&lt;br /&gt;
&lt;br /&gt;
=== Montée ===&lt;br /&gt;
* Volets rentrés&lt;br /&gt;
* Plein gaz&lt;br /&gt;
* 75 KIAS&lt;br /&gt;
&lt;br /&gt;
=== Croisière ===&lt;br /&gt;
* gaz: 65%&lt;br /&gt;
* mixture: &amp;quot;rich of peak&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Atterrissage ===&lt;br /&gt;
[[File:c172p-landing2.jpg|270px||thumb|Cessna 172P sur le point d'atterrir]]&lt;br /&gt;
* Volets: tout sorti&lt;br /&gt;
* 60 KIAS&lt;br /&gt;
&lt;br /&gt;
=== Vitesses limites ===&lt;br /&gt;
&lt;br /&gt;
: ''Voir aussi [[Aircraft speed#V speeds]]''&lt;br /&gt;
&lt;br /&gt;
Les informations de cette section sont fondées sur des sources externes. &lt;br /&gt;
&amp;lt;ref&amp;gt;[http://www.triangleaviation.com/1982_172r.html Triangle Aviation]{{dead link|2015-10}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://www.otisair.com/c172info.html OtisAir's Airborne Observations]{{dead link|2015-10}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web |url=http://www.airweb.faa.gov/Regulatory_and_Guidance_Library/rgMakeModel.nsf/0/724e90061c5bf3b1862576260063e599/$FILE/3A12.pdf |title=Type Certificate No. 3A12, Revision 79 |date=27 August 2009 |work= |publisher=FAA |format=pdf |accessdate=9 October 2015}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Vitesse (Airspeed) !! Vitesse calibrée (CAS)&lt;br /&gt;
|-&lt;br /&gt;
| Vitesse de décrochage, configuration pour l’atterrissage, V&amp;lt;sub&amp;gt;S&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;&amp;lt;/sub&amp;gt; || 33 kt&lt;br /&gt;
|-&lt;br /&gt;
| Vitesse de décrochage, V&amp;lt;sub&amp;gt;S&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/sub&amp;gt; || 44 kt&lt;br /&gt;
|-&lt;br /&gt;
| Vitesse de rotation, V&amp;lt;sub&amp;gt;R&amp;lt;/sub&amp;gt; || 55 kt&lt;br /&gt;
|-&lt;br /&gt;
| Vitesse avec le meilleur angle of montée, V&amp;lt;sub&amp;gt;X&amp;lt;/sub&amp;gt; || 59 kt&lt;br /&gt;
|-&lt;br /&gt;
| Vitesse avec la montée la plus rapide, V&amp;lt;sub&amp;gt;Y&amp;lt;/sub&amp;gt; || 76 kt&lt;br /&gt;
|-&lt;br /&gt;
| Vitesse maximale avec les volets sortis, V&amp;lt;sub&amp;gt;FE&amp;lt;/sub&amp;gt; || 85 kt&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; valign=&amp;quot;top&amp;quot; | Vitesse de manœuvre, V&amp;lt;sub&amp;gt;A&amp;lt;/sub&amp;gt; || 96 kt (flotteurs)&lt;br /&gt;
|-&lt;br /&gt;
| 99 kt (roues)&lt;br /&gt;
|-&lt;br /&gt;
| Vitesse maximale de croisière pour l’intégrité structurelle, V&amp;lt;sub&amp;gt;NO&amp;lt;/sub&amp;gt; || 127 kt&lt;br /&gt;
|-&lt;br /&gt;
| Vitesse à ne jamais dépasser, V&amp;lt;sub&amp;gt;NE&amp;lt;/sub&amp;gt; || 158 kt&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
Voici quelques questions fréquentes sur cet appareil :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Les fenêtres sont grises...que se passe t'il ?&lt;br /&gt;
&lt;br /&gt;
'''R:''' Si les fenêtres sont grises vous n'avez pas la bonne version de FlightGear. Cet appareil nécessite la version 3.5 ou ultérieure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Pourquoi est-ce que l'avion tourne vers la gauche ?&lt;br /&gt;
&lt;br /&gt;
'''R:''' Cela est normal, voir [[understanding Propeller Torque and P-Factor]]. Si vous utilisez la variante amphibie sur une piste en dur le contrôle se fait par freinage différentiel (la gouverne sera plus efficace à mesure que l'avion gagne de la vitesse).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Pourquoi le moteur ne démarre t'il pas ?&lt;br /&gt;
&lt;br /&gt;
'''R:''' Vous pouvez démarrer le moteur automatiquement via le menu &amp;quot;Cessna C172P&amp;quot; puis le choix &amp;quot;Autostart&amp;quot; ; ensuite il suffit de garder la touche {{Key press|S}} appuyée. Pour un démarrage manuel veuillez suivre les indications de la checklist accessible depuis le menu &amp;quot;Aide&amp;quot; puis &amp;quot;Aircraft Checklists&amp;quot;. Comme vu précédemment, le carburant doit être pompé manuellement avant de lancer le moteur. Si la gestion de l'huile est active alors vous devez avoir un niveau suffisant d'huile (5.0 quarts). Si la contamination du carburant est activée alors le carburant doit être de couleur bleue pâle pour que le moteur fonctionne correctement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Pourquoi le moteur s’arrête t'il immédiatement après le démarrage ?&lt;br /&gt;
&lt;br /&gt;
'''R:''' Probablement parce que la manette des gaz est poussée trop fortement après le démarrage du moteur ; celui-ci a besoin de quelques secondes pour se stabiliser.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Pourquoi ne puis-je pas démarrer la simulation avec le moteur qui tourne ?&lt;br /&gt;
&lt;br /&gt;
'''R:''' Vous pouvez ! Allez dans le menu &amp;quot;Cessna C172P&amp;quot; puis dans &amp;quot;Aircraft Options&amp;quot; et cocher la case &amp;quot;Start with engine running&amp;quot; (Commencer avec le moteur qui tourne).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Pourquoi est-ce que l'avion de bouge pas ?&lt;br /&gt;
&lt;br /&gt;
'''R:''' L'avion ne bougera pas si vous avez activé les freins de parking ou si les ailes sont attachées avec des liens ou si des cales sont en place (vérifier si l'option &amp;quot;allow securing aircraft&amp;quot; est activée dans les options de l'appareil).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Pourquoi l'indicateur de vitesse ne fonctionne t'il pas ?&lt;br /&gt;
&lt;br /&gt;
'''R:''' Si l'option de sécurisation de l'appareil est activée, alors il y a de grandes chances que vous avez oublié d'enlever la protection du pitot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Comment changer de roues / skis / flotteurs ?&lt;br /&gt;
&lt;br /&gt;
'''R:''' Dans le menu &amp;quot;Cessna 172P&amp;quot;, choisissez &amp;quot;Aircraft Options&amp;quot; puis choisissez un type de train d'atterrissage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Comment puis-je passer au moteur de 180 chevaux ?&lt;br /&gt;
&lt;br /&gt;
'''R:''' Cela se fait aussi depuis le menu &amp;quot;Cessna 172P&amp;quot;, puis &amp;quot;Aircraft Options&amp;quot;, puis en choisissant la puissance de moteur voulue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Pourquoi ne puis-je pas décoller depuis un plan d'eau sans crasher l'avion ?&lt;br /&gt;
&lt;br /&gt;
'''R:''' Décoller ou atterrir sur l'eau peut être un peu délicat. Essayer de tirer un peu le manche en accélérant jusqu'à 55 KIAS. Il est aussi recommandé d'utiliser le moteur de 180 chevaux à la place du moteur de 160 chevaux parce que le poids supplémentaire des flotteurs rend très difficile le décollage avec le moteur de base.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Pourquoi le simulateur rame t'il autant ?&lt;br /&gt;
&lt;br /&gt;
'''R:''' Comme avec tout modèle 3D complexe, cette nouvelle version du c172p demande plus de ressource à l'ordinateur que l'ancien modèle. Si vous avez des problèmes de performance essayer de ne pas utiliser les livrée en haute définition ; il y a aussi d'autres choses qui peuvent améliorer les performance (réduire les options graphique, réduire la résolution du programme, etc.).&lt;br /&gt;
&lt;br /&gt;
Une astuce qui peut aider à augmenter les images/seconde est de fermer toutes les boites de dialogue, y compris la barre de menu et le compteur de fps orange au bas de l'écran. Vous pouvez afficher un autre compteur de fps depuis le menu &amp;quot;Debug&amp;quot; puis en choisissant &amp;quot;Cycle On-Screen Statistics&amp;quot;. Veillez à cacher le menu avec {{Key press|F10}} pour voir le compteur fps.&lt;br /&gt;
&lt;br /&gt;
Une autre astuce consiste à désactiver le rendu des nuages si vous n'en avez pas besoin. Démarrer FlightGear avec l'option &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;--prop:/sim/rendering/draw-mask/clouds=0&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Si vous remarquez de gros ralentissements lorsque vous volez au dessus de certain endroits et que vous voyez Flightgear générer beaucoup d'anomalies &amp;quot;Warning:: Picked up error in TriangleIntersect&amp;quot; dans la console ou le fichier de log, vous pouvez désactiver ces message avec le paramètre &amp;lt;code&amp;gt; &amp;quot;--prop:/sim/rendering/osg-notify-level=fatal&amp;quot; &amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Pourquoi les fenêtres sont elles givrées ou embuées ?&lt;br /&gt;
&lt;br /&gt;
'''R:''' Si la température du point de rosée de l'air de la cabine est plus grand que la température du pare-brise, les vitres deviendront givrées ou embuées. Utilisez les commandes de température ou d'arrivée d'air de la cabine (à la droite de la commande de volets). Le point de rosée augmente avec la température de la cabine et il augmente plus vite que la température du pare-brise, résultant dans une buée temporaire. Si l'air est très humide alors le point de rosée sera très proche de la température de la cabin, ce qui le rendra très probablement plus élevé que la température du pare-brise.&lt;br /&gt;
Des passagers en plus génèrent plus d'humidité dans la cabine. Essayer d'augmenter le flux d'air an utilisant la commande d'arrivée d'air ou la ventilation au niveau des ailes pour réduire l'humidité ou la température.&lt;br /&gt;
Une autre possibilité est de désactiver l'effet dans le menu &amp;quot;Cessna 172P&amp;quot;, puis &amp;quot;Aircraft Options&amp;quot; puis &amp;quot;Enable frost and fog&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Comment augmenter la température de la cabine ?&lt;br /&gt;
&lt;br /&gt;
'''R:''' Pour augmenter la température de la cabine il faut utiliser la commande de chauffage de la cabine. &lt;br /&gt;
Pour avoir réellement un air chaud il faut une température de gaz d’échappement moyenne ou haute (EGT -- l'instrument entre le manche et l'ADF), et un flux d'air suffisant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Comment cliquer sur un interrupteur qui est caché par le manche ?&lt;br /&gt;
&lt;br /&gt;
'''R:''' Vous pouvez cacher les manches à partir du menu &amp;quot;Cessna 172P&amp;quot;, puis &amp;quot;Hide/Show Yokes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Etat du development/Problèmes/A faire ==&lt;br /&gt;
&lt;br /&gt;
Cet avion est en développement constant, vous pouvez suivre les avancées sur [https://github.com/Juanvvc/c172p-detailed le repository], il y a aussi une [https://github.com/Juanvvc/c172p-detailed/issues liste des problèmes et améliorations futures].&lt;br /&gt;
&lt;br /&gt;
== Gallérie ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot;&amp;gt;&lt;br /&gt;
c172p-plane5.jpg|Cessna 172P au dessus de Chapada Diamantina au Brésil&lt;br /&gt;
c172p-plane4.jpg|Décollage à Compiegne Margny (LFAD)&lt;br /&gt;
c172p-cockpit2.jpg|Sur le point d'atterrir, demonstration du nouvel effet d'ombre ALS dans le cockpit&lt;br /&gt;
c172p-floats.jpg|Variante avec flotteurs à San Francisco&lt;br /&gt;
c172p-plane3.jpg|Cessna 172P volant à haute altitude au dessus de Lago di Garda en Italie&lt;br /&gt;
c172p-landing.jpg|On final at Aosta Airport (LIMW)&lt;br /&gt;
c172p-cockpit3.jpg|L'intèrieur texturé du nouveau c172p&lt;br /&gt;
c172p-night.jpg|Un vol de nuit, montrant l'illumination des instruments&lt;br /&gt;
c172p-particles.jpg|Décollage sur l'eau, montrant le système de particules&lt;br /&gt;
c172p-plane1.jpg|Au dessus de Serra do Mar au Brésil&lt;br /&gt;
c172p-plane2.jpg|Coucher de soleil&lt;br /&gt;
c172p-winter.jpg|L'hiver en Europe&lt;br /&gt;
c172p-damage.jpg|Gear collapse due to heavy landing&lt;br /&gt;
c172p-frost.jpg|Avec les conditions adéquates du givre ou du brouillard apparaissent sur les vitres&lt;br /&gt;
c172p-taubate.jpg|Vol au dessus de Taubate, Brésil&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Liens externes ===&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Cessna_172 Wikipedia article]&lt;br /&gt;
* [http://www.atlasaviation.com/checklists/cessna-172/cessna_172_checklist.htm Cessna 172 checklists at AtlasAviation.com]&lt;br /&gt;
&lt;br /&gt;
{{Appendix}}&lt;br /&gt;
&lt;br /&gt;
{{Cessna}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft with a cockpit-only autopilot]]&lt;br /&gt;
&lt;br /&gt;
[[de:Cessna 172P]]&lt;br /&gt;
[[en:Cessna 172P]]&lt;br /&gt;
[[es:Cessna 172P]]&lt;br /&gt;
[[zh:Cessna 172P]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Fr/Cessna_172P&amp;diff=102021</id>
		<title>Fr/Cessna 172P</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Fr/Cessna_172P&amp;diff=102021"/>
		<updated>2016-07-24T10:28:05Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: translation from the c172p detailed 3/4&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:{{#titleparts:{{PAGENAME}}||2}}/info}}&lt;br /&gt;
Le '''Cessna 172 Skyhawk'''  est un [[Fr/Avions|avion]] quadriplace, monomoteur à aile haute. Il effectua son premier vol en 1955 et est toujours en production, plus de Cessna 172 ont été construits que tout autres avions.&lt;br /&gt;
&lt;br /&gt;
Le C 172 est l'avion par défaut dans [[FlightGear]] depuis 2000, il a remplacé le [[Navion]]. Il a eu un long développement et il inclut une grande variété de fonctionnalités pour FlightGear.  En 2015, il a été complètement rénové ; cela comprend  de nouvelles options de moteur, de taille de pneus ou de flotteurs, ainsi qu'une refonte complète du cockpit. Cette nouvelle version détaillée de l'avion est devenu l'avion inclus en standard depuis [[Changelog_3.6|FlightGear 3.6]].&lt;br /&gt;
&lt;br /&gt;
== Contenu et variantes ==&lt;br /&gt;
&lt;br /&gt;
Le nouveau C172p a un bien meilleur modèle 3D et est maintenant complètement texturé (y compris à l'intérieur). Tous les&lt;br /&gt;
interrupteurs du cockpit sont cliquables. Il a aussi un meilleur FDM, des procédures plus complexes et des checklist réalistes, de nouveaux effets sonores et une modélisation des dégâts. L'avion peut être endommagé s'il n'est pas utilisé correctement (par example le train d’atterrissage se brise si l’atterrissage est trop brutal).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:C172p-bodensee-panorama.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
L'avion dispose actuellement de cinq variantes qui sont accessibles depuis le menu de l'avion :&lt;br /&gt;
* roues standards&lt;br /&gt;
* roues 26 pouces pour le bush&lt;br /&gt;
* roues 31 pouces pour le bush&lt;br /&gt;
* flotteurs&lt;br /&gt;
* amphibie&lt;br /&gt;
* skis pour la neige&lt;br /&gt;
&lt;br /&gt;
De plus depuis ce même menu l'utilisateur peut choisir entre deux moteurs :&lt;br /&gt;
* 160 HP&lt;br /&gt;
* 180 HP (recommandé si on utilise les variantes flotteurs, amphibie ou skis)&lt;br /&gt;
&lt;br /&gt;
L'avion peut désormais être endommagé suite à des collisions, crash, atterrissage difficiles ou surcharges et la modélisation inclus la destruction des roues ou des ailes, etc. Les dégâts peuvent être désactivés dans le menu, il y a aussi une option pour réparer l'avion.&lt;br /&gt;
&lt;br /&gt;
Les fenêtres peuvent recevoir de la buée ou du givre en fonction de la combinaison des températures intérieures et extérieures. Le pilote doit utiliser les commandes d'arrivée d'air ou de chauffage de la cabine (à droite de la commande de volet). Ou alors il est possible de désactiver cet effet dans les options de l'avion dans le menu &amp;quot;Cessna 172P&amp;quot;. &lt;br /&gt;
Ces effets graphiques nécessitent les nouveaux effets ALS de FG 3.5 ou plus récent et risquent de produire des fenêtres grises sur les version antérieures.&lt;br /&gt;
&lt;br /&gt;
Le FDM a aussi été amélioré. L'avion peut entamer une vrille dans une situation de décrochage asymétrique (une situation particulièrement dangereuse lorsqu'on tourne pour la manœuvre finale et que l'avion vole à une vitesse et une altitude faibles). Le FDM a aussi été ajusté pour inclure les effet hydrodynamiques lorsqu'il décolle ou atterrit sur l'eau. Il sait aussi gérer le moteur de 180 chevaux. &lt;br /&gt;
&lt;br /&gt;
Il y a plusieurs livrées disponibles, certaines ont une meilleure résolution que d'autres et sont marquées avec 'HD' dans le menu des livrées.&lt;br /&gt;
There are several liveries available, some of which have higher resolution than others, which are marked as HD in the liveries menu. Each of the HD liveries also has unique cockpit and interior textures.&lt;br /&gt;
&lt;br /&gt;
L'avion fournit une simulation du [[Bendix/King KAP140 Autopilot]].&lt;br /&gt;
&lt;br /&gt;
Si l'utilisateur a activé [[ALS]] (Atmospheric light scattering) dans la boite de dialogue des options de rendu, alors il est possible d'activer la lampe de poche à partir du menu &amp;quot;Cessna 172P&amp;quot; et en choisissant &amp;quot;Flashlight&amp;quot;.&lt;br /&gt;
Activer le une fois pour la lumière blanche, une deuxième fois pour la lumière rouge et une troisième fois pour l'éteindre.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez désormais effectuer la procédure d'avant-vol : cale pour les roues, attaches au sol et protection du pitot peuvent être mis ou enlevé, il est aussi possible de vérifier l'état de l'huile et la contamination du carburant par l'eau (ces fonctionnalités sont désactivées par défaut mais sont disponible dans le menu de l'avion).&lt;br /&gt;
[[File:c172p-ALS-flashlight2.jpg|500px|center|Lampe de poche du Cessna 172P dans le cockpit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aide de l'avion ==&lt;br /&gt;
&lt;br /&gt;
=== Inspection avant le vol ===&lt;br /&gt;
[[File:C172p-secured-Aosta.jpg|270px||thumb|Cessna 172P sécurisé à l'aéroport d'Aosta]]&lt;br /&gt;
Il est préférable d'utiliser une vue de l’extérieur ou d'utiliser le marcheur (walker) pour ces procédures.&lt;br /&gt;
* Niveau de carburant : cliquer que le bouchon de réservoir de chaque aile pour en ajouter&lt;br /&gt;
* Aile droite : enlever l'attache&lt;br /&gt;
* Aile droite : vérifier la contamination en cliquant sous l'aile pour extraire un échantillon de carburant. Si l’échantillon est bleu pâle alors le carburant n'est pas contaminé et peut être remis dans le réservoir. Si l’échantillon est transparent ou semi-transparent alors vous devez vous en débarrasser et reprendre des échantillons jusqu'à ce que l’échantillon soit complètement bleu pâle.&lt;br /&gt;
* Nez : vérifier la quantité en cliquant sur la trappe d'huile. Le niveau critique d'huile pour les moteurs est de 5.0 quarts.&lt;br /&gt;
* Nez : enlever la cale.&lt;br /&gt;
* Aile gauche : enlever l'attache&lt;br /&gt;
* Aile gauche : enlever la protection du pitot&lt;br /&gt;
* Aile gauche : vérifier la contamination du carburant&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mise en route (démarrage simple ou complexe) ===&lt;br /&gt;
* Priming: pompez le moteur au moins 3 fois&lt;br /&gt;
* Mixture: Riche (manette rouge poussée à fond)&lt;br /&gt;
* Gaz: 1/8&amp;quot; (1/2 cm)&lt;br /&gt;
* Frein de parking: Serré ({{Key press|Shift|B}})&lt;br /&gt;
* Zone autour de l'hélice: Dégagée&lt;br /&gt;
* Magnétos: Both ({{Key press|&amp;lt;nowiki&amp;gt;}&amp;lt;/nowiki&amp;gt;}} trois fois)&lt;br /&gt;
* Démarreur ({{Key press|S}})&lt;br /&gt;
&lt;br /&gt;
=== Démarrage moteur (automatique avec l'Autostart) ===&lt;br /&gt;
* Dans le menu &amp;quot;Cessna C172P&amp;quot;, choisissez &amp;quot;Autostart&amp;quot; puis garder la touche {{Key press|S}} appuyée pour démarrer l'avion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Décollage ===&lt;br /&gt;
[[File:c172p-cockpit.jpg|270px||thumb|Cessna 172P prêt au décollage]]&lt;br /&gt;
* Volets rentrés&lt;br /&gt;
* Plein gaz&lt;br /&gt;
* Rotation à 55 KIAS&lt;br /&gt;
&lt;br /&gt;
=== Montée ===&lt;br /&gt;
* Volets rentrés&lt;br /&gt;
* Plein gaz&lt;br /&gt;
* 75 KIAS&lt;br /&gt;
&lt;br /&gt;
=== Croisière ===&lt;br /&gt;
* gaz: 65%&lt;br /&gt;
* mixture: &amp;quot;rich of peak&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Atterrissage ===&lt;br /&gt;
[[File:c172p-landing2.jpg|270px||thumb|Cessna 172P sur le point d'atterrir]]&lt;br /&gt;
* Volets: tout sorti&lt;br /&gt;
* 60 KIAS&lt;br /&gt;
&lt;br /&gt;
=== Vitesses limites ===&lt;br /&gt;
&lt;br /&gt;
: ''Voir aussi [[Aircraft speed#V speeds]]''&lt;br /&gt;
&lt;br /&gt;
Les informations de cette section sont fondées sur des sources externes. &lt;br /&gt;
&amp;lt;ref&amp;gt;[http://www.triangleaviation.com/1982_172r.html Triangle Aviation]{{dead link|2015-10}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://www.otisair.com/c172info.html OtisAir's Airborne Observations]{{dead link|2015-10}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web |url=http://www.airweb.faa.gov/Regulatory_and_Guidance_Library/rgMakeModel.nsf/0/724e90061c5bf3b1862576260063e599/$FILE/3A12.pdf |title=Type Certificate No. 3A12, Revision 79 |date=27 August 2009 |work= |publisher=FAA |format=pdf |accessdate=9 October 2015}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Vitesse (Airspeed) !! Vitesse calibrée (CAS)&lt;br /&gt;
|-&lt;br /&gt;
| Vitesse de décrochage, configuration pour l’atterrissage, V&amp;lt;sub&amp;gt;S&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;&amp;lt;/sub&amp;gt; || 33 kt&lt;br /&gt;
|-&lt;br /&gt;
| Vitesse de décrochage, V&amp;lt;sub&amp;gt;S&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/sub&amp;gt; || 44 kt&lt;br /&gt;
|-&lt;br /&gt;
| Vitesse de rotation, V&amp;lt;sub&amp;gt;R&amp;lt;/sub&amp;gt; || 55 kt&lt;br /&gt;
|-&lt;br /&gt;
| Vitesse avec le meilleur angle of montée, V&amp;lt;sub&amp;gt;X&amp;lt;/sub&amp;gt; || 59 kt&lt;br /&gt;
|-&lt;br /&gt;
| Vitesse avec la montée la plus rapide, V&amp;lt;sub&amp;gt;Y&amp;lt;/sub&amp;gt; || 76 kt&lt;br /&gt;
|-&lt;br /&gt;
| Vitesse maximale avec les volets sortis, V&amp;lt;sub&amp;gt;FE&amp;lt;/sub&amp;gt; || 85 kt&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; valign=&amp;quot;top&amp;quot; | Vitesse de manœuvre, V&amp;lt;sub&amp;gt;A&amp;lt;/sub&amp;gt; || 96 kt (flotteurs)&lt;br /&gt;
|-&lt;br /&gt;
| 99 kt (roues)&lt;br /&gt;
|-&lt;br /&gt;
| Vitesse maximale de croisière pour l’intégrité structurelle, V&amp;lt;sub&amp;gt;NO&amp;lt;/sub&amp;gt; || 127 kt&lt;br /&gt;
|-&lt;br /&gt;
| Vitesse à ne jamais dépasser, V&amp;lt;sub&amp;gt;NE&amp;lt;/sub&amp;gt; || 158 kt&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
Voici quelques questions fréquentes sur cet appareil :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Les fenêtres sont grises...que se passe t'il ?&lt;br /&gt;
&lt;br /&gt;
'''R:''' Si les fenêtres sont grises vous n'avez pas la bonne version de FlightGear. Cet appareil nécessite la version 3.5 ou ultérieure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Pourquoi est-ce que l'avion tourne vers la gauche ?&lt;br /&gt;
&lt;br /&gt;
'''R:''' Cela est normal, voir [[understanding Propeller Torque and P-Factor]]. Si vous utilisez la variante amphibie sur une piste en dur le contrôle se fait par freinage différentiel (la gouverne sera plus efficace à mesure que l'avion gagne de la vitesse).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Pourquoi le moteur ne démarre t'il pas ?&lt;br /&gt;
&lt;br /&gt;
'''R:''' Vous pouvez démarrer le moteur automatiquement via le menu &amp;quot;Cessna C172P&amp;quot; puis le choix &amp;quot;Autostart&amp;quot; ; ensuite il suffit de garder la touche {{Key press|S}} appuyée. Pour un démarrage manuel veuillez suivre les indications de la checklist accessible depuis le menu &amp;quot;Aide&amp;quot; puis &amp;quot;Aircraft Checklists&amp;quot;. Comme vu précédemment, le carburant doit être pompé manuellement avant de lancer le moteur. Si la gestion de l'huile est active alors vous devez avoir un niveau suffisant d'huile (5.0 quarts). Si la contamination du carburant est activée alors le carburant doit être de couleur bleue pâle pour que le moteur fonctionne correctement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Pourquoi le moteur s’arrête t'il immédiatement après le démarrage ?&lt;br /&gt;
&lt;br /&gt;
'''R:''' Probablement parce que la manette des gaz est poussée trop fortement après le démarrage du moteur ; celui-ci a besoin de quelques secondes pour se stabiliser.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Pourquoi ne puis-je pas démarrer la simulation avec le moteur qui tourne ?&lt;br /&gt;
&lt;br /&gt;
'''R:''' Vous pouvez ! Allez dans le menu &amp;quot;Cessna C172P&amp;quot; puis dans &amp;quot;Aircraft Options&amp;quot; et cocher la case &amp;quot;Start with engine running&amp;quot; (Commencer avec le moteur qui tourne).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Pourquoi est-ce que l'avion de bouge pas ?&lt;br /&gt;
&lt;br /&gt;
'''R:''' L'avion ne bougera pas si vous avez activé les freins de parking ou si les ailes sont attachées avec des liens ou si des cales sont en place (vérifier si l'option &amp;quot;allow securing aircraft&amp;quot; est activée dans les options de l'appareil).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Pourquoi l'indicateur de vitesse ne fonctionne t'il pas ?&lt;br /&gt;
&lt;br /&gt;
'''R:''' Si l'option de sécurisation de l'appareil est activée, alors il y a de grandes chances que vous avez oublié d'enlever la protection du pitot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Comment changer de roues / skis / flotteurs ?&lt;br /&gt;
&lt;br /&gt;
'''R:''' Dans le menu &amp;quot;Cessna 172P&amp;quot;, choisissez &amp;quot;Aircraft Options&amp;quot; puis choisissez un type de train d'atterrissage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Comment puis-je passer au moteur de 180 chevaux ?&lt;br /&gt;
&lt;br /&gt;
'''R:''' Cela se fait aussi depuis le menu &amp;quot;Cessna 172P&amp;quot;, puis &amp;quot;Aircraft Options&amp;quot;, puis en choisissant la puissance de moteur voulue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Pourquoi ne puis-je pas décoller depuis un plan d'eau sans crasher l'avion ?&lt;br /&gt;
&lt;br /&gt;
'''R:''' Décoller ou atterrir sur l'eau peut être un peu délicat. Essayer de tirer un peu le manche en accélérant jusqu'à 55 KIAS. Il est aussi recommandé d'utiliser le moteur de 180 chevaux à la place du moteur de 160 chevaux parce que le poids supplémentaire des flotteurs rend très difficile le décollage avec le moteur de base.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Pourquoi le simulateur rame t'il autant ?&lt;br /&gt;
&lt;br /&gt;
'''R:''' Comme avec tout modèle 3D complexe, cette nouvelle version du c172p demande plus de ressource à l'ordinateur que l'ancien modèle. Si vous avez des problèmes de performance essayer de ne pas utiliser les livrée en haute définition ; il y a aussi d'autres choses qui peuvent améliorer les performance (réduire les options graphique, réduire la résolution du programme, etc.).&lt;br /&gt;
&lt;br /&gt;
Une astuce qui peut aider à augmenter les images/seconde est de fermer toutes les boites de dialogue, y compris la barre de menu et le compteur de fps orange au bas de l'écran. Vous pouvez afficher un autre compteur de fps depuis le menu &amp;quot;Debug&amp;quot; puis en choisissant &amp;quot;Cycle On-Screen Statistics&amp;quot;. Veillez à cacher le menu avec {{Key press|F10}} pour voir le compteur fps.&lt;br /&gt;
&lt;br /&gt;
Une autre astuce consiste à désactiver le rendu des nuages si vous n'en avez pas besoin. Démarrer FlightGear avec l'option &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;--prop:/sim/rendering/draw-mask/clouds=0&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you notice heavy slowdowns when flying over certain scenery and you see FlightGear generating many &amp;quot;Warning:: Picked up error in TriangleIntersect&amp;quot; messages in the terminal or log file, you can disable this by starting FlightGear with &amp;quot;--prop:/sim/rendering/osg-notify-level=fatal&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Why are the windows getting foggy/frosty?&lt;br /&gt;
&lt;br /&gt;
'''R:''' If the dew point of the cabin air temperature is higher than the surface temperature of the windshield, the windows will get either foggy or frosty. Use the Cabin Heat and Cabin Air levers (on the right of the flaps) to control it. The dew point rises with the temperature in the cabin, and it rises faster than the windshield temperature can adjust, resulting in temporary fog. If the air is very humid, the dew point is going to be very close to the cabin temperature, which makes it likely that it will be higher than the windshield temperature. Extra passengers will create a more humid atmosphere in the cabin. Try to increase air flow using the Cabin Air lever or overhead air vents in order to decrease the humidity or temperature. Alternatively, disable the effect by going to the menu &amp;quot;Cessna 172P&amp;quot;, selecting &amp;quot;Aircraft Options&amp;quot; and disable the option &amp;quot;Enable frost and fog&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' How do I increase the cabin air temperature?&lt;br /&gt;
&lt;br /&gt;
'''R:''' Increase the cabin air temperature by opening the Cabin Heat lever. In order to actually get a heated air flow, you need a medium or high EGT (Exhaust Gas Temperature -- the instrument between the yoke and the ADF instrument), and airspeed and/or sufficient propeller RPM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' How can I click on a switch which is being covered by the yoke?&lt;br /&gt;
&lt;br /&gt;
'''R:''' You can hide the yokes by clicking on them or by going to the menu &amp;quot;Cessna 172P&amp;quot;, selecting &amp;quot;Hide/Show Yokes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Etat du development/Problèmes/A faire ==&lt;br /&gt;
&lt;br /&gt;
Cet avion est en développement constant, vous pouvez suivre les avancées sur [https://github.com/Juanvvc/c172p-detailed le repository], il y a aussi une [https://github.com/Juanvvc/c172p-detailed/issues liste des problèmes et améliorations futures].&lt;br /&gt;
&lt;br /&gt;
== Gallérie ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot;&amp;gt;&lt;br /&gt;
c172p-plane5.jpg|Cessna 172P au dessus de Chapada Diamantina au Brésil&lt;br /&gt;
c172p-plane4.jpg|Décollage à Compiegne Margny (LFAD)&lt;br /&gt;
c172p-cockpit2.jpg|Sur le point d'attérir, demonstration du nouvel effet d'ombre ALS dans le cockpit&lt;br /&gt;
c172p-floats.jpg|Variante avec flotteurs à San Francisco&lt;br /&gt;
c172p-plane3.jpg|Cessna 172P volant à haute altitude au dessus de Lago di Garda en Italie&lt;br /&gt;
c172p-landing.jpg|On final at Aosta Airport (LIMW)&lt;br /&gt;
c172p-cockpit3.jpg|L'interrieur texturé du nouveau c172p&lt;br /&gt;
c172p-night.jpg|Un vol de nuit, montrant l'illumination des instruments&lt;br /&gt;
c172p-particles.jpg|Décollage sur l'eau, montrant le système de particules&lt;br /&gt;
c172p-plane1.jpg|Au dessus de Serra do Mar au Brésil&lt;br /&gt;
c172p-plane2.jpg|Coucher de soleil&lt;br /&gt;
c172p-winter.jpg|L'hiver en Europe&lt;br /&gt;
c172p-damage.jpg|Gear collapse due to heavy landing&lt;br /&gt;
c172p-frost.jpg|Avec les conditions adéquates du givre ou du brouillard apparaissent sur les vitres&lt;br /&gt;
c172p-taubate.jpg|Vol au dessus de Taubate, Brésil&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Liens externes ===&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Cessna_172 Wikipedia article]&lt;br /&gt;
* [http://www.atlasaviation.com/checklists/cessna-172/cessna_172_checklist.htm Cessna 172 checklists at AtlasAviation.com]&lt;br /&gt;
&lt;br /&gt;
{{Appendix}}&lt;br /&gt;
&lt;br /&gt;
{{Cessna}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft with a cockpit-only autopilot]]&lt;br /&gt;
&lt;br /&gt;
[[de:Cessna 172P]]&lt;br /&gt;
[[en:Cessna 172P]]&lt;br /&gt;
[[es:Cessna 172P]]&lt;br /&gt;
[[zh:Cessna 172P]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Fr/Cessna_172P&amp;diff=101927</id>
		<title>Fr/Cessna 172P</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Fr/Cessna_172P&amp;diff=101927"/>
		<updated>2016-07-23T10:35:32Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: translation from the c172p detailed 2/3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:{{#titleparts:{{PAGENAME}}||2}}/info}}&lt;br /&gt;
Le '''Cessna 172 Skyhawk'''  est un [[Fr/Avions|avion]] quadriplace, monomoteur à aile haute. Il effectua son premier vol en 1955 et est toujours en production, plus de Cessna 172 ont été construits que tout autres avions.&lt;br /&gt;
&lt;br /&gt;
Le C 172 est l'avion par défaut dans [[FlightGear]] depuis 2000, il a remplacé le [[Navion]]. Il a eu un long développement et il inclut une grande variété de fonctionnalités pour FlightGear.  En 2015, il a été complètement rénové ; cela comprend  de nouvelles options de moteur, de taille de pneus ou de flotteurs, ainsi qu'une refonte complète du cockpit. Cette nouvelle version détaillée de l'avion est devenu l'avion inclus en standard depuis [[Changelog_3.6|FlightGear 3.6]].&lt;br /&gt;
&lt;br /&gt;
== Contenu et variantes ==&lt;br /&gt;
&lt;br /&gt;
Le nouveau C172p a un bien meilleur modèle 3D et est maintenant complètement texturé (y compris à l'intérieur). Tous les&lt;br /&gt;
interrupteurs du cockpit sont cliquables. Il a aussi un meilleur FDM, des procédures plus complexes et des checklist réalistes, de nouveaux effets sonores et une modélisation des dégâts. L'avion peut être endommagé s'il n'est pas utilisé correctement (par example le train d’atterrissage se brise si l’atterrissage est trop brutal).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:C172p-bodensee-panorama.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
L'avion dispose actuellement de cinq variantes qui sont accessibles depuis le menu de l'avion :&lt;br /&gt;
* roues standards&lt;br /&gt;
* roues 26 pouces pour le bush&lt;br /&gt;
* roues 31 pouces pour le bush&lt;br /&gt;
* flotteurs&lt;br /&gt;
* amphibie&lt;br /&gt;
* skis pour la neige&lt;br /&gt;
&lt;br /&gt;
De plus depuis ce même menu l'utilisateur peut choisir entre deux moteurs :&lt;br /&gt;
* 160 HP&lt;br /&gt;
* 180 HP (recommandé si on utilise les variantes flotteurs, amphibie ou skis)&lt;br /&gt;
&lt;br /&gt;
L'avion peut désormais être endommagé suite à des collisions, crash, atterrissage difficiles ou surcharges et la modélisation inclus la destruction des roues ou des ailes, etc. Les dégâts peuvent être désactivés dans le menu, il y a aussi une option pour réparer l'avion.&lt;br /&gt;
&lt;br /&gt;
Les fenêtres peuvent recevoir de la buée ou du givre en fonction de la combinaison des températures intérieures et extérieures. Le pilote doit utiliser les commandes d'arrivée d'air ou de chauffage de la cabine (à droite de la commande de volet). Ou alors il est possible de désactiver cet effet dans les options de l'avion dans le menu &amp;quot;Cessna 172P&amp;quot;. &lt;br /&gt;
Ces effets graphiques nécessitent les nouveaux effets ALS de FG 3.5 ou plus récent et risquent de produire des fenêtres grises sur les version antérieures.&lt;br /&gt;
&lt;br /&gt;
Le FDM a aussi été amélioré. L'avion peut entamer une vrille dans une situation de décrochage asymétrique (une situation particulièrement dangereuse lorsqu'on tourne pour la manœuvre finale et que l'avion vole à une vitesse et une altitude faibles). Le FDM a aussi été ajusté pour inclure les effet hydrodynamiques lorsqu'il décolle ou atterrit sur l'eau. Il sait aussi gérer le moteur de 180 chevaux. &lt;br /&gt;
&lt;br /&gt;
Il y a plusieurs livrées disponibles, certaines ont une meilleure résolution que d'autres et sont marquées avec 'HD' dans le menu des livrées.&lt;br /&gt;
There are several liveries available, some of which have higher resolution than others, which are marked as HD in the liveries menu. Each of the HD liveries also has unique cockpit and interior textures.&lt;br /&gt;
&lt;br /&gt;
L'avion fournit une simulation du [[Bendix/King KAP140 Autopilot]].&lt;br /&gt;
&lt;br /&gt;
Si l'utilisateur a activé [[ALS]] (Atmospheric light scattering) dans la boite de dialogue des options de rendu, alors il est possible d'activer la lampe de poche à partir du menu &amp;quot;Cessna 172P&amp;quot; et en choisissant &amp;quot;Flashlight&amp;quot;.&lt;br /&gt;
Activer le une fois pour la lumière blanche, une deuxième fois pour la lumière rouge et une troisième fois pour l'éteindre.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez désormais effectuer la procédure d'avant-vol : cale pour les roues, attaches au sol et protection du pitot peuvent être mis ou enlevé, il est aussi possible de vérifier l'état de l'huile et la contamination du carburant par l'eau (ces fonctionnalités sont désactivées par défaut mais sont disponible dans le menu de l'avion).&lt;br /&gt;
[[File:c172p-ALS-flashlight2.jpg|500px|center|Lampe de poche du Cessna 172P dans le cockpit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aide de l'avion ==&lt;br /&gt;
&lt;br /&gt;
=== Inspection avant le vol ===&lt;br /&gt;
[[File:C172p-secured-Aosta.jpg|270px||thumb|Cessna 172P sécurisé à l'aéroport d'Aosta]]&lt;br /&gt;
Il est préférable d'utiliser une vue de l’extérieur ou d'utiliser le marcheur (walker) pour ces procédures.&lt;br /&gt;
* Niveau de carburant : cliquer que le bouchon de réservoir de chaque aile pour en ajouter&lt;br /&gt;
* Aile droite : enlever l'attache&lt;br /&gt;
* Aile droite : vérifier la contamination en cliquant sous l'aile pour extraire un échantillon de carburant. Si l’échantillon est bleu pâle alors le carburant n'est pas contaminé et peut être remis dans le réservoir. Si l’échantillon est transparent ou semi-transparent alors vous devez vous en débarrasser et reprendre des échantillons jusqu'à ce que l’échantillon soit complètement bleu pâle.&lt;br /&gt;
* Nez : vérifier la quantité en cliquant sur la trappe d'huile. Le niveau critique d'huile pour les moteurs est de 5.0 quarts.&lt;br /&gt;
* Nez : enlever la cale.&lt;br /&gt;
* Aile gauche : enlever l'attache&lt;br /&gt;
* Aile gauche : enlever la protection du pitot&lt;br /&gt;
* Aile gauche : vérifier la contamination du carburant&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mise en route (démarrage simple ou complexe) ===&lt;br /&gt;
* Priming: pompez le moteur au moins 3 fois&lt;br /&gt;
* Mixture: Riche (manette rouge poussée à fond)&lt;br /&gt;
* Gaz: 1/8&amp;quot; (1/2 cm)&lt;br /&gt;
* Frein de parking: Serré ({{Key press|Shift|B}})&lt;br /&gt;
* Zone autour de l'hélice: Dégagée&lt;br /&gt;
* Magnétos: Both ({{Key press|&amp;lt;nowiki&amp;gt;}&amp;lt;/nowiki&amp;gt;}} trois fois)&lt;br /&gt;
* Démarreur ({{Key press|S}})&lt;br /&gt;
&lt;br /&gt;
=== Démarrage moteur (automatique avec l'Autostart) ===&lt;br /&gt;
* Dans le menu &amp;quot;Cessna C172P&amp;quot;, choisissez &amp;quot;Autostart&amp;quot; puis garder la touche {{Key press|S}} appuyée pour démarrer l'avion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Décollage ===&lt;br /&gt;
[[File:c172p-cockpit.jpg|270px||thumb|Cessna 172P prêt au décollage]]&lt;br /&gt;
* Volets rentrés&lt;br /&gt;
* Plein gaz&lt;br /&gt;
* Rotation à 55 KIAS&lt;br /&gt;
&lt;br /&gt;
=== Montée ===&lt;br /&gt;
* Volets rentrés&lt;br /&gt;
* Plein gaz&lt;br /&gt;
* 75 KIAS&lt;br /&gt;
&lt;br /&gt;
=== Croisière ===&lt;br /&gt;
* gaz: 65%&lt;br /&gt;
* mixture: &amp;quot;rich of peak&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Atterrissage ===&lt;br /&gt;
[[File:c172p-landing2.jpg|270px||thumb|Cessna 172P sur le point d'atterrir]]&lt;br /&gt;
* Volets: tout sorti&lt;br /&gt;
* 60 KIAS&lt;br /&gt;
&lt;br /&gt;
=== Vitesses limites ===&lt;br /&gt;
&lt;br /&gt;
: ''Voir aussi [[Aircraft speed#V speeds]]''&lt;br /&gt;
&lt;br /&gt;
Les informations de cette section sont fondées sur des sources externes. &lt;br /&gt;
&amp;lt;ref&amp;gt;[http://www.triangleaviation.com/1982_172r.html Triangle Aviation]{{dead link|2015-10}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://www.otisair.com/c172info.html OtisAir's Airborne Observations]{{dead link|2015-10}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web |url=http://www.airweb.faa.gov/Regulatory_and_Guidance_Library/rgMakeModel.nsf/0/724e90061c5bf3b1862576260063e599/$FILE/3A12.pdf |title=Type Certificate No. 3A12, Revision 79 |date=27 August 2009 |work= |publisher=FAA |format=pdf |accessdate=9 October 2015}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Vitesse (Airspeed) !! Vitesse calibrée (CAS)&lt;br /&gt;
|-&lt;br /&gt;
| Vitesse de décrochage, configuration pour l’atterrissage, V&amp;lt;sub&amp;gt;S&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;&amp;lt;/sub&amp;gt; || 33 kt&lt;br /&gt;
|-&lt;br /&gt;
| Vitesse de décrochage, V&amp;lt;sub&amp;gt;S&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/sub&amp;gt; || 44 kt&lt;br /&gt;
|-&lt;br /&gt;
| Vitesse de rotation, V&amp;lt;sub&amp;gt;R&amp;lt;/sub&amp;gt; || 55 kt&lt;br /&gt;
|-&lt;br /&gt;
| Vitesse avec le meilleur angle of montée, V&amp;lt;sub&amp;gt;X&amp;lt;/sub&amp;gt; || 59 kt&lt;br /&gt;
|-&lt;br /&gt;
| Vitesse avec la montée la plus rapide, V&amp;lt;sub&amp;gt;Y&amp;lt;/sub&amp;gt; || 76 kt&lt;br /&gt;
|-&lt;br /&gt;
| Vitesse maximale avec les volets sortis, V&amp;lt;sub&amp;gt;FE&amp;lt;/sub&amp;gt; || 85 kt&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; valign=&amp;quot;top&amp;quot; | Vitesse de manœuvre, V&amp;lt;sub&amp;gt;A&amp;lt;/sub&amp;gt; || 96 kt (flotteurs)&lt;br /&gt;
|-&lt;br /&gt;
| 99 kt (roues)&lt;br /&gt;
|-&lt;br /&gt;
| Vitesse maximale de croisière pour l’intégrité structurelle, V&amp;lt;sub&amp;gt;NO&amp;lt;/sub&amp;gt; || 127 kt&lt;br /&gt;
|-&lt;br /&gt;
| Vitesse à ne jamais dépasser, V&amp;lt;sub&amp;gt;NE&amp;lt;/sub&amp;gt; || 158 kt&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
Here are some of the frequently asked questions about this aircraft:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' I am experiencing grey windows, what is happening?&lt;br /&gt;
&lt;br /&gt;
'''A:''' If you experience grey windows, you do not have the correct FlightGear version. This aircraft requires 3.5 or above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Why does the aircraft keep turning left?&lt;br /&gt;
&lt;br /&gt;
'''A:''' Please see [[understanding Propeller Torque and P-Factor]]. If using the amphibian model on a solid runway, note that at the taxiing is done by differential braking (the rudder becomes more and more effective as the plane gains speed).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Why will the engine not start?&lt;br /&gt;
&lt;br /&gt;
'''A:''' You can start the engine automatically by clicking on the menu &amp;quot;Cessna C172P&amp;quot;, selecting &amp;quot;Autostart&amp;quot; and then simply holding the key {{Key press|S}}. For a manual start, please follow the checklists available by clicking on the menu &amp;quot;Help&amp;quot; followed by &amp;quot;Aircraft Checklists&amp;quot;. As seen above, the engine must by &amp;quot;primed&amp;quot; before starting. If oil management is activated, you must have enough oil for the engine to work (more than 5.0 quarts). If fuel contamination is activated, the fuel must be light blue in order for the engine to properly work.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Why does the engine die immediately after startup?&lt;br /&gt;
&lt;br /&gt;
'''A:''' Probably because the throttle is being incremented too fast after startup as the engine needs a few seconds to stabilize itself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Why can't I start the sim with the engine running?&lt;br /&gt;
&lt;br /&gt;
'''A:''' You can! Go to the menu &amp;quot;Cessna C172P&amp;quot;, select &amp;quot;Aircraft Options&amp;quot; and tick the option &amp;quot;Start with engine running&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Why the aircraft doesn't move?&lt;br /&gt;
&lt;br /&gt;
'''A:''' The aircraft won't move if you have the parking brakes set, or if either of the wing tie-downs, the tail tie-down or wheel chocks are in place (if the option &amp;quot;allow securing aircraft&amp;quot; is enabled in the aircraft menu).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Why the airspeed indicator doesn't work?&lt;br /&gt;
&lt;br /&gt;
'''A:''' If the option &amp;quot;allow securing aircraft&amp;quot; is enabled in the aircraft menu, then very likely you forgot to remove the pitot tube cover.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' How can I switch to the bush tires/pontoons/amphibian?&lt;br /&gt;
&lt;br /&gt;
'''A:''' By clicking in menu &amp;quot;Cessna 172P&amp;quot;, selecting &amp;quot;Aircraft Options&amp;quot; and then selecting the other landing gear options.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' How can I switch to the 180 HP engine?&lt;br /&gt;
&lt;br /&gt;
'''A:''' This is also done by clicking in menu &amp;quot;Cessna 172P&amp;quot;, selecting &amp;quot;Aircraft Options&amp;quot; and then selecting the engine power option.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Why can't I take off from the water without crashing the plane?&lt;br /&gt;
&lt;br /&gt;
'''A:''' Taking off and landing on water can be quite tricky. Try applying a little bit of back pressure on the yoke while accelerating to 55 KIAS. It's also recommended to use the 180 HP engine instead of the default 160 HP, as the extra weight of the pontoons make it really hard to climb with the default engine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Why is the simulator lagging so much?&lt;br /&gt;
&lt;br /&gt;
'''A:''' As with any complex 3D model, this new version of the c172p is a bit more demanding on the computers than the older one. If you are having troubles with performance, try using non-HD liveries which use textures with lower resolutions, as well as other solutions that can improve performance (disabling certain graphical options in the Rendering Options, lowering the resolution of FlightGear, etc.).&lt;br /&gt;
&lt;br /&gt;
Some tricks that help to increase fps is by disabling all GUI windows, including the menu bar and the orange fps counters at the bottom of the screen. You can display an alternative fps counter in the top left corner via the &amp;quot;Debug&amp;quot; menu and then selecting &amp;quot;Cycle On-Screen Statistics&amp;quot;. Make sure to hide the menu bar by pressing F10 to see the counter.&lt;br /&gt;
&lt;br /&gt;
A second trick is to simply disable the rendering of all clouds if you don't mind. Start FlightGear with &amp;quot;--prop:/sim/rendering/draw-mask/clouds=0&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If you notice heavy slowdowns when flying over certain scenery and you see FlightGear generating many &amp;quot;Warning:: Picked up error in TriangleIntersect&amp;quot; messages in the terminal or log file, you can disable this by starting FlightGear with &amp;quot;--prop:/sim/rendering/osg-notify-level=fatal&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Why are the windows getting foggy/frosty?&lt;br /&gt;
&lt;br /&gt;
'''A:''' If the dew point of the cabin air temperature is higher than the surface temperature of the windshield, the windows will get either foggy or frosty. Use the Cabin Heat and Cabin Air levers (on the right of the flaps) to control it. The dew point rises with the temperature in the cabin, and it rises faster than the windshield temperature can adjust, resulting in temporary fog. If the air is very humid, the dew point is going to be very close to the cabin temperature, which makes it likely that it will be higher than the windshield temperature. Extra passengers will create a more humid atmosphere in the cabin. Try to increase air flow using the Cabin Air lever or overhead air vents in order to decrease the humidity or temperature. Alternatively, disable the effect by going to the menu &amp;quot;Cessna 172P&amp;quot;, selecting &amp;quot;Aircraft Options&amp;quot; and disable the option &amp;quot;Enable frost and fog&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' How do I increase the cabin air temperature?&lt;br /&gt;
&lt;br /&gt;
'''A:''' Increase the cabin air temperature by opening the Cabin Heat lever. In order to actually get a heated air flow, you need a medium or high EGT (Exhaust Gas Temperature -- the instrument between the yoke and the ADF instrument), and airspeed and/or sufficient propeller RPM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' How can I click on a switch which is being covered by the yoke?&lt;br /&gt;
&lt;br /&gt;
'''A:''' You can hide the yokes by clicking on them or by going to the menu &amp;quot;Cessna 172P&amp;quot;, selecting &amp;quot;Hide/Show Yokes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Etat du development/Problèmes/A faire ==&lt;br /&gt;
&lt;br /&gt;
Cet avion est en développement constant, vous pouvez suivre les avancées sur [https://github.com/Juanvvc/c172p-detailed le repository], il y a aussi une [https://github.com/Juanvvc/c172p-detailed/issues liste des problèmes et améliorations futures].&lt;br /&gt;
&lt;br /&gt;
== Gallérie ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot;&amp;gt;&lt;br /&gt;
c172p-plane5.jpg|Cessna 172P au dessus de Chapada Diamantina au Brésil&lt;br /&gt;
c172p-plane4.jpg|Décollage à Compiegne Margny (LFAD)&lt;br /&gt;
c172p-cockpit2.jpg|Sur le point d'attérir, demonstration du nouvel effet d'ombre ALS dans le cockpit&lt;br /&gt;
c172p-floats.jpg|Variante avec flotteurs à San Francisco&lt;br /&gt;
c172p-plane3.jpg|Cessna 172P volant à haute altitude au dessus de Lago di Garda en Italie&lt;br /&gt;
c172p-landing.jpg|On final at Aosta Airport (LIMW)&lt;br /&gt;
c172p-cockpit3.jpg|L'interrieur texturé du nouveau c172p&lt;br /&gt;
c172p-night.jpg|Un vol de nuit, montrant l'illumination des instruments&lt;br /&gt;
c172p-particles.jpg|Décollage sur l'eau, montrant le système de particules&lt;br /&gt;
c172p-plane1.jpg|Au dessus de Serra do Mar au Brésil&lt;br /&gt;
c172p-plane2.jpg|Coucher de soleil&lt;br /&gt;
c172p-winter.jpg|L'hiver en Europe&lt;br /&gt;
c172p-damage.jpg|Gear collapse due to heavy landing&lt;br /&gt;
c172p-frost.jpg|If the conditions are just right, frost or fog will appear in the windows&lt;br /&gt;
c172p-taubate.jpg|Vol au dessus de Taubate, Brésil&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Liens externes ===&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Cessna_172 Wikipedia article]&lt;br /&gt;
* [http://www.atlasaviation.com/checklists/cessna-172/cessna_172_checklist.htm Cessna 172 checklists at AtlasAviation.com]&lt;br /&gt;
&lt;br /&gt;
{{Appendix}}&lt;br /&gt;
&lt;br /&gt;
{{Cessna}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft with a cockpit-only autopilot]]&lt;br /&gt;
&lt;br /&gt;
[[de:Cessna 172P]]&lt;br /&gt;
[[en:Cessna 172P]]&lt;br /&gt;
[[es:Cessna 172P]]&lt;br /&gt;
[[zh:Cessna 172P]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Fr/Cessna_172P&amp;diff=101926</id>
		<title>Fr/Cessna 172P</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Fr/Cessna_172P&amp;diff=101926"/>
		<updated>2016-07-23T08:57:55Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: translation from the c172p detailed 1/2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{BeingTranslated}}&lt;br /&gt;
&lt;br /&gt;
{{:{{#titleparts:{{PAGENAME}}||2}}/info}}&lt;br /&gt;
Le '''Cessna 172 Skyhawk'''  est un [[Fr/Avions|avion]] quadriplace, monomoteur à aile haute. Il effectua son premier vol en 1955 et est toujours en production, plus de Cessna 172 ont été construits que tout autres avions.&lt;br /&gt;
&lt;br /&gt;
Le C 172 est l'avion par défaut dans [[FlightGear]] depuis 2000, il a remplacé le [[Navion]]. Il a eu un long développement et il inclut une grande variété de fonctionnalités pour FlightGear.  En 2015, il a été complètement rénové ; cela comprend  de nouvelles options de moteur, de taille de pneus ou de flotteurs, ainsi qu'une refonte complète du cockpit. Cette nouvelle version détaillée de l'avion est devenu l'avion inclus en standard depuis [[Changelog_3.6|FlightGear 3.6]].&lt;br /&gt;
&lt;br /&gt;
== Contenu et variantes ==&lt;br /&gt;
&lt;br /&gt;
The new C172p has a much better 3D model and is now fully textured (including the interior). All the switches in the cockpit are clickable. It also has an improved FDM, more complex procedures and new realistic checklists, new sound effects, and damage modelling. The aircraft can get damaged if mishandled (e.g. gear collapse after a hard landing).&lt;br /&gt;
&lt;br /&gt;
[[File:C172p-bodensee-panorama.jpg|center|800px]]&lt;br /&gt;
&lt;br /&gt;
The aircraft currently has five variants, all available from the aircraft menu:&lt;br /&gt;
* regular wheels&lt;br /&gt;
* 26&amp;quot; bush tires&lt;br /&gt;
* 31&amp;quot; bush tires&lt;br /&gt;
* pontoons&lt;br /&gt;
* amphibian&lt;br /&gt;
* snow skis&lt;br /&gt;
&lt;br /&gt;
Also, from the same menu, the user can select two different engines:&lt;br /&gt;
* 160 HP&lt;br /&gt;
* 180 HP (recommended when using pontoons, amphibian and skis variants)&lt;br /&gt;
&lt;br /&gt;
The aircraft now can get damaged from collisions, crashes, hard landings or overload while in-flight, and the modelling includes wheel collapse, wings breaking, etc. The damage can be turned off in the aircraft menu, which also contains an option for repairing the aircraft.&lt;br /&gt;
&lt;br /&gt;
The windows now can get foggy or frosty, depending on the combination of interior and exterior temperatures. The pilot must then use the Cabin Heat and Cabin Air levers (on the right of the flaps) to control it. Alternatively, it's possible to disable the effect in the &amp;quot;Aircraft Options&amp;quot; in the &amp;quot;Cessna 172P&amp;quot; menu. This effect depends on the new ALS effects found in 3.5 and above, and will also have the side effect of producing grey windows in versions prior to 3.5.&lt;br /&gt;
&lt;br /&gt;
The FDM has also been modified. The aircraft may enter into a spin in case of an asymmetric stall (a particularly dangerous situation when turning to final, in which case the aircraft is at low speed and low height). The FDM has also been tweaked to include hydrodynamics effects while taking off or landing on water, as well as adding a new 180 HP engine.&lt;br /&gt;
&lt;br /&gt;
There are several liveries available, some of which have higher resolution than others, which are marked as HD in the liveries menu. Each of the HD liveries also has unique cockpit and interior textures.&lt;br /&gt;
&lt;br /&gt;
The aircraft has a simulation of the [[Bendix/King KAP140 Autopilot]].&lt;br /&gt;
&lt;br /&gt;
Also, if the user has enabled ALS (Atmospheric light scattering) in the Rendering Options, then it's possible to activate the flashlight by clicking on the &amp;quot;Cessna 172P&amp;quot; menu and selecting &amp;quot;Flashlight&amp;quot;. Select it once for the white flashlight, select it again for a red one and select it one more time to turn it off.&lt;br /&gt;
&lt;br /&gt;
The aircraft can now go through a pre-flight: wheel chocks, tie-downs and the pitot tube cover can now be added or removed, oil management and fuel contamination by water have been implemented (both of which are not activated by default, but are available in the aircraft menu).&lt;br /&gt;
[[File:c172p-ALS-flashlight2.jpg|500px|center|Lampe de poche du Cessna 172P's dans le cockpit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aide de l'avion ==&lt;br /&gt;
&lt;br /&gt;
=== Inspection avant le vol ===&lt;br /&gt;
[[File:C172p-secured-Aosta.jpg|270px||thumb|Cessna 172P sécurisé à l'aéroport d'Aosta]]&lt;br /&gt;
It's recommended to use any exterior view or activate the walker for these procedures.&lt;br /&gt;
* Fuel quantity: add by clicking on the fuel tank caps above each wing&lt;br /&gt;
* Right wing: remove tie-downs&lt;br /&gt;
* Right wing: check for fuel contamination by clicking under the wing and take a fuel sample. If the sample is light blue, the fuel is not contaminated and can be returned to the tank. If the sample is transparent or partially transparent, you must discard it and take new samples until they are completely light blue&lt;br /&gt;
* Nose: check for oil quantity by clicking on the oil door in the nose. Critical oil level for either engine is 5.0 quarts.&lt;br /&gt;
* Nose: remove wheel chocks&lt;br /&gt;
* Left wing: remove tie-downs&lt;br /&gt;
* Left wing: remove pitot tube cover&lt;br /&gt;
* Left wing: check for fuel contamination&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Mise en route (démarrage simple ou complexe) ===&lt;br /&gt;
* Priming: pompez le moteur au moins 3 fois&lt;br /&gt;
* Mixture: Riche (manette rouge poussée à fond)&lt;br /&gt;
* Gaz: 1/8&amp;quot; (1/2 cm)&lt;br /&gt;
* Frein de parking: Serré ({{Key press|Shift|B}})&lt;br /&gt;
* Zone autour de l'hélice: Dégagée&lt;br /&gt;
* Magnétos: Both ({{Key press|&amp;lt;nowiki&amp;gt;}&amp;lt;/nowiki&amp;gt;}} trois fois)&lt;br /&gt;
* Démarreur ({{Key press|S}})&lt;br /&gt;
&lt;br /&gt;
=== Démarrage moteur (automatique avec l'Autostart) ===&lt;br /&gt;
* Dans le menu &amp;quot;Cessna C172P&amp;quot;, choisissez &amp;quot;Autostart&amp;quot; puis garder la touche {{Key press|S}} appuyée pour démarrer l'avion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Décollage ===&lt;br /&gt;
[[File:c172p-cockpit.jpg|270px||thumb|Cessna 172P prêt au décollage]]&lt;br /&gt;
* Volets rentrés&lt;br /&gt;
* Plein gaz&lt;br /&gt;
* Rotation à 55 KIAS&lt;br /&gt;
&lt;br /&gt;
=== Montée ===&lt;br /&gt;
* Volets rentrés&lt;br /&gt;
* Plein gaz&lt;br /&gt;
* 75 KIAS&lt;br /&gt;
&lt;br /&gt;
=== Croisière ===&lt;br /&gt;
* gaz: 65%&lt;br /&gt;
* mixture: &amp;quot;rich of peak&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Atterrissage ===&lt;br /&gt;
[[File:c172p-landing2.jpg|270px||thumb|Cessna 172P sur le point d'atterrir]]&lt;br /&gt;
* Volets: tout sorti&lt;br /&gt;
* 60 KIAS&lt;br /&gt;
&lt;br /&gt;
=== Vitesses limites ===&lt;br /&gt;
&lt;br /&gt;
: ''Voir aussi [[Aircraft speed#V speeds]]''&lt;br /&gt;
&lt;br /&gt;
The information in this section is based on external resources.&amp;lt;ref&amp;gt;[http://www.triangleaviation.com/1982_172r.html Triangle Aviation]{{dead link|2015-10}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[http://www.otisair.com/c172info.html OtisAir's Airborne Observations]{{dead link|2015-10}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web |url=http://www.airweb.faa.gov/Regulatory_and_Guidance_Library/rgMakeModel.nsf/0/724e90061c5bf3b1862576260063e599/$FILE/3A12.pdf |title=Type Certificate No. 3A12, Revision 79 |date=27 August 2009 |work= |publisher=FAA |format=pdf |accessdate=9 October 2015}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Vitesse(Airspeed) !! Vitesse calibrée (CAS)&lt;br /&gt;
|-&lt;br /&gt;
| Vitesse de décrochage, configuration pour l’atterrissage, V&amp;lt;sub&amp;gt;S&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt;&amp;lt;/sub&amp;gt; || 33 kt&lt;br /&gt;
|-&lt;br /&gt;
| Vitesse de décrochage, V&amp;lt;sub&amp;gt;S&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt;&amp;lt;/sub&amp;gt; || 44 kt&lt;br /&gt;
|-&lt;br /&gt;
| Vitesse de rotation, V&amp;lt;sub&amp;gt;R&amp;lt;/sub&amp;gt; || 55 kt&lt;br /&gt;
|-&lt;br /&gt;
| Vitesse avec le meilleur angle of montée, V&amp;lt;sub&amp;gt;X&amp;lt;/sub&amp;gt; || 59 kt&lt;br /&gt;
|-&lt;br /&gt;
| Vitesse avec la montée la plus rapide, V&amp;lt;sub&amp;gt;Y&amp;lt;/sub&amp;gt; || 76 kt&lt;br /&gt;
|-&lt;br /&gt;
| Vitesse maximale avec les volets sortis, V&amp;lt;sub&amp;gt;FE&amp;lt;/sub&amp;gt; || 85 kt&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; valign=&amp;quot;top&amp;quot; | Vitesse de manœuvre, V&amp;lt;sub&amp;gt;A&amp;lt;/sub&amp;gt; || 96 kt (flotteurs)&lt;br /&gt;
|-&lt;br /&gt;
| 99 kt (roues)&lt;br /&gt;
|-&lt;br /&gt;
| Vitesse maximale de croisière pour l’intégrité structurelle, V&amp;lt;sub&amp;gt;NO&amp;lt;/sub&amp;gt; || 127 kt&lt;br /&gt;
|-&lt;br /&gt;
| Vitesse à ne jamais dépasser, V&amp;lt;sub&amp;gt;NE&amp;lt;/sub&amp;gt; || 158 kt&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
Here are some of the frequently asked questions about this aircraft:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' I am experiencing grey windows, what is happening?&lt;br /&gt;
&lt;br /&gt;
'''A:''' If you experience grey windows, you do not have the correct FlightGear version. This aircraft requires 3.5 or above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Why does the aircraft keep turning left?&lt;br /&gt;
&lt;br /&gt;
'''A:''' Please see [[understanding Propeller Torque and P-Factor]]. If using the amphibian model on a solid runway, note that at the taxiing is done by differential braking (the rudder becomes more and more effective as the plane gains speed).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Why will the engine not start?&lt;br /&gt;
&lt;br /&gt;
'''A:''' You can start the engine automatically by clicking on the menu &amp;quot;Cessna C172P&amp;quot;, selecting &amp;quot;Autostart&amp;quot; and then simply holding the key {{Key press|S}}. For a manual start, please follow the checklists available by clicking on the menu &amp;quot;Help&amp;quot; followed by &amp;quot;Aircraft Checklists&amp;quot;. As seen above, the engine must by &amp;quot;primed&amp;quot; before starting. If oil management is activated, you must have enough oil for the engine to work (more than 5.0 quarts). If fuel contamination is activated, the fuel must be light blue in order for the engine to properly work.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Why does the engine die immediately after startup?&lt;br /&gt;
&lt;br /&gt;
'''A:''' Probably because the throttle is being incremented too fast after startup as the engine needs a few seconds to stabilize itself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Why can't I start the sim with the engine running?&lt;br /&gt;
&lt;br /&gt;
'''A:''' You can! Go to the menu &amp;quot;Cessna C172P&amp;quot;, select &amp;quot;Aircraft Options&amp;quot; and tick the option &amp;quot;Start with engine running&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Why the aircraft doesn't move?&lt;br /&gt;
&lt;br /&gt;
'''A:''' The aircraft won't move if you have the parking brakes set, or if either of the wing tie-downs, the tail tie-down or wheel chocks are in place (if the option &amp;quot;allow securing aircraft&amp;quot; is enabled in the aircraft menu).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Why the airspeed indicator doesn't work?&lt;br /&gt;
&lt;br /&gt;
'''A:''' If the option &amp;quot;allow securing aircraft&amp;quot; is enabled in the aircraft menu, then very likely you forgot to remove the pitot tube cover.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' How can I switch to the bush tires/pontoons/amphibian?&lt;br /&gt;
&lt;br /&gt;
'''A:''' By clicking in menu &amp;quot;Cessna 172P&amp;quot;, selecting &amp;quot;Aircraft Options&amp;quot; and then selecting the other landing gear options.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' How can I switch to the 180 HP engine?&lt;br /&gt;
&lt;br /&gt;
'''A:''' This is also done by clicking in menu &amp;quot;Cessna 172P&amp;quot;, selecting &amp;quot;Aircraft Options&amp;quot; and then selecting the engine power option.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Why can't I take off from the water without crashing the plane?&lt;br /&gt;
&lt;br /&gt;
'''A:''' Taking off and landing on water can be quite tricky. Try applying a little bit of back pressure on the yoke while accelerating to 55 KIAS. It's also recommended to use the 180 HP engine instead of the default 160 HP, as the extra weight of the pontoons make it really hard to climb with the default engine.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Why is the simulator lagging so much?&lt;br /&gt;
&lt;br /&gt;
'''A:''' As with any complex 3D model, this new version of the c172p is a bit more demanding on the computers than the older one. If you are having troubles with performance, try using non-HD liveries which use textures with lower resolutions, as well as other solutions that can improve performance (disabling certain graphical options in the Rendering Options, lowering the resolution of FlightGear, etc.).&lt;br /&gt;
&lt;br /&gt;
Some tricks that help to increase fps is by disabling all GUI windows, including the menu bar and the orange fps counters at the bottom of the screen. You can display an alternative fps counter in the top left corner via the &amp;quot;Debug&amp;quot; menu and then selecting &amp;quot;Cycle On-Screen Statistics&amp;quot;. Make sure to hide the menu bar by pressing F10 to see the counter.&lt;br /&gt;
&lt;br /&gt;
A second trick is to simply disable the rendering of all clouds if you don't mind. Start FlightGear with &amp;quot;--prop:/sim/rendering/draw-mask/clouds=0&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
If you notice heavy slowdowns when flying over certain scenery and you see FlightGear generating many &amp;quot;Warning:: Picked up error in TriangleIntersect&amp;quot; messages in the terminal or log file, you can disable this by starting FlightGear with &amp;quot;--prop:/sim/rendering/osg-notify-level=fatal&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' Why are the windows getting foggy/frosty?&lt;br /&gt;
&lt;br /&gt;
'''A:''' If the dew point of the cabin air temperature is higher than the surface temperature of the windshield, the windows will get either foggy or frosty. Use the Cabin Heat and Cabin Air levers (on the right of the flaps) to control it. The dew point rises with the temperature in the cabin, and it rises faster than the windshield temperature can adjust, resulting in temporary fog. If the air is very humid, the dew point is going to be very close to the cabin temperature, which makes it likely that it will be higher than the windshield temperature. Extra passengers will create a more humid atmosphere in the cabin. Try to increase air flow using the Cabin Air lever or overhead air vents in order to decrease the humidity or temperature. Alternatively, disable the effect by going to the menu &amp;quot;Cessna 172P&amp;quot;, selecting &amp;quot;Aircraft Options&amp;quot; and disable the option &amp;quot;Enable frost and fog&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' How do I increase the cabin air temperature?&lt;br /&gt;
&lt;br /&gt;
'''A:''' Increase the cabin air temperature by opening the Cabin Heat lever. In order to actually get a heated air flow, you need a medium or high EGT (Exhaust Gas Temperature -- the instrument between the yoke and the ADF instrument), and airspeed and/or sufficient propeller RPM.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Q:''' How can I click on a switch which is being covered by the yoke?&lt;br /&gt;
&lt;br /&gt;
'''A:''' You can hide the yokes by clicking on them or by going to the menu &amp;quot;Cessna 172P&amp;quot;, selecting &amp;quot;Hide/Show Yokes&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Development status/Issues/TODO ==&lt;br /&gt;
&lt;br /&gt;
This aircraft is undergoing a constant development, which can be followed on its [https://github.com/Juanvvc/c172p-detailed repository], where a [https://github.com/Juanvvc/c172p-detailed/issues list of issues and future enhancements] can also be found.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;packed&amp;quot;&amp;gt;&lt;br /&gt;
c172p-plane5.jpg|Cessna 172P au dessus de Chapada Diamantina au Brésil&lt;br /&gt;
c172p-plane4.jpg|Décollage à Compiegne Margny (LFAD)&lt;br /&gt;
c172p-cockpit2.jpg|Sur le point d'attérir, demonstration du nouvel effet d'ombre ALS dans le cockpit&lt;br /&gt;
c172p-floats.jpg|Variante avec flotteurs à San Francisco&lt;br /&gt;
c172p-plane3.jpg|Cessna 172P at high altitude flying over Lago di Garda in Italy&lt;br /&gt;
c172p-landing.jpg|On final at Aosta Airport (LIMW)&lt;br /&gt;
c172p-cockpit3.jpg|The fully textured interiors of the new c172p&lt;br /&gt;
c172p-night.jpg|A night flight, showing the instrument illumination&lt;br /&gt;
c172p-particles.jpg|Taking off on water, showing the particle system&lt;br /&gt;
c172p-plane1.jpg|Above Serra do Mar in Brazil&lt;br /&gt;
c172p-plane2.jpg|Flying at sunset&lt;br /&gt;
c172p-winter.jpg|European winter&lt;br /&gt;
c172p-damage.jpg|Gear collapse due to heavy landing&lt;br /&gt;
c172p-frost.jpg|If the conditions are just right, frost or fog will appear in the windows&lt;br /&gt;
c172p-taubate.jpg|Flying above Taubate, Brazil&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Liens externes ===&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Cessna_172 Wikipedia article]&lt;br /&gt;
* [http://www.atlasaviation.com/checklists/cessna-172/cessna_172_checklist.htm Cessna 172 checklists at AtlasAviation.com]&lt;br /&gt;
&lt;br /&gt;
{{Appendix}}&lt;br /&gt;
&lt;br /&gt;
{{Cessna}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft with a cockpit-only autopilot]]&lt;br /&gt;
&lt;br /&gt;
[[de:Cessna 172P]]&lt;br /&gt;
[[en:Cessna 172P]]&lt;br /&gt;
[[es:Cessna 172P]]&lt;br /&gt;
[[zh:Cessna 172P]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Fr/Portal:Utilisateur&amp;diff=101925</id>
		<title>Fr/Portal:Utilisateur</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Fr/Portal:Utilisateur&amp;diff=101925"/>
		<updated>2016-07-23T07:45:19Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: added help section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Main page/Header&lt;br /&gt;
  |title=Bienvenue sur le portail des utilisateurs&lt;br /&gt;
  |subtitle=''Volez librement!''&lt;br /&gt;
  |introduction= Si vous ne trouvez pas ce que vous recherchez, vous pouvez visiter le [http://forum.flightgear.org forum anglophone] ou  [http://fr.flightgear.tuxfamily.org/forum/index.php le forum francophone]&lt;br /&gt;
  |rightbox=&lt;br /&gt;
&amp;lt;!-------------------------------------------------------------&lt;br /&gt;
                    Vue générale du portail&lt;br /&gt;
--------------------------------------------------------------&amp;gt;&lt;br /&gt;
  |rightcolumn1= &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:105%; font-weight:bold&amp;quot;&amp;gt;Vous débutez?&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-style:italic;&amp;quot;&amp;gt;&lt;br /&gt;
[[Fr/Nouveau_sur_flightgear|Nouveau sur Flightgear]] · [[Fr/FlightGear_Manual|Manuel de Flightgear]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Fr/Foire_aux_questions|Foire Aux Questions]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Fr/Volontaires|Participer]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Fr/Glossaire|Glossaire]]&amp;lt;/span&amp;gt;&lt;br /&gt;
  |rightcolumn2= [[File:Portal helpcenter.png|40px]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:105%; font-weight:bold&amp;quot;&amp;gt;[[Troubleshooting_problems|Problème / amélioration]]&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-style:italic;&amp;quot;&amp;gt;&lt;br /&gt;
[[Fr/Howto: Débarrassez-vous des erreurs les plus fréquentes|Erreurs fréquentes]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Troubleshooting performance issues|Augmenter le nombre d'images par seconde]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Fr/Anti-aliasing|Anti-aliasing]]&amp;lt;/span&amp;gt;&lt;br /&gt;
  |rightcolumn3= [[File:Portal aircraft.png|40px]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:105%; font-weight:bold&amp;quot;&amp;gt;Voler&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-style:italic;&amp;quot;&amp;gt;&lt;br /&gt;
[[Fr/Avions|Les avions]] · [[Fr/Helicoptere|Les hélicoptères]] · [[Fr/Vehicules|Les véhicules]]&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Fr/Piloter_les_warbirds|Piloter les warbirds]] · [[Fr/Piloter l'hélicoptère|Piloter des hélicoptères]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Fr/Ravitaillement_en_vol|Ravitaillement en vol]] · [[Howto: Carrier|Appontage sur porte-avion]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Soaring|Vol à voile]] · [[Howto: Be a controller|Devenir contrôleur aérien]]&amp;lt;br/&amp;gt; &lt;br /&gt;
[[Fr/Howto:_Multijoueur|Mode multijoueur]]· [[Dual control|Multi-équipage]]· [[Weather|Météo]]&amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Avionics and instruments|Avionique et instruments]] · [[Aircraft lighting|éclairages de l'avion]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Fr/Altitude|Altitude]] · [[Fr/Vitesse de l'avion|Vitesse]] · [[Understanding Propeller Torque and P-Factor|Comprendre l'effet de couple et le Facteur P]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Understanding Navigation|Navigation]] · [[Howto:Create a flightplan|Créer un plan de vol]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[[List of abbreviations|Liste des abréviations]]&amp;lt;/span&amp;gt;&lt;br /&gt;
  |rightcolumn4= [[File:Portal hardware.png|40px]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:105%; font-weight:bold&amp;quot;&amp;gt;Matériel&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-style:italic;&amp;quot;&amp;gt;&lt;br /&gt;
[[Joystick|Joystick, manche et palonnier]] · [[Howto: Configure camera view windows|Affichage multiple]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Fr/Hardware_Recommendations|Matériel prérequis]]&amp;lt;/span&amp;gt;&lt;br /&gt;
  |rightcolumn5= [[File:Portal star.png|40px]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:105%; font-weight:bold&amp;quot;&amp;gt;Articles conseillés&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-style:italic;&amp;quot;&amp;gt;&lt;br /&gt;
[[Suggested Aircraft|Avions suggérés]] · [[Suggested Airports/Scenery| Aéroports et scenes suggérés]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Suggested Flights|Vols suggérés]] · [[Challenging Airports|Aéroports difficiles]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Suggested Software|Logiciels]] &amp;lt;/span&amp;gt;&lt;br /&gt;
  |rightcolumn6= [[File:Portal tools.png|40px]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:105%; font-weight:bold&amp;quot;&amp;gt;Outils supplémentaires&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-style:italic;&amp;quot;&amp;gt;&lt;br /&gt;
[[FGo!]] · [[Fr/FlightGear_Launch_Control|FGRun]] · [[KFreeFlight]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[[FGCOM]] · [[OpenRadar]] · [[ATC-pie]]&amp;lt;br/&amp;gt; &lt;br /&gt;
[[Fr/TerraSync|TerraSync]] · [[TerraMaster]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Fr/Atlas|Atlas]] · [[Airport Diagram Generator]]&amp;lt;/span&amp;gt;&lt;br /&gt;
  |rightcolumn7= [[File:Portal promotion.png|40px]] &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size:105%; font-weight:bold&amp;quot;&amp;gt;Promotion&amp;lt;/span&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;font-style:italic;&amp;quot;&amp;gt;&lt;br /&gt;
[[Unique Features|Fonctionnalités uniques]] · [[FlightGear Reviews|Avis]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[[FlightGear Videos|Vidéos]] · [[FlightGear logos|Logos]] · [[Howto:Make nice screenshots|Faire de belles captures d'écran]]&amp;lt;br/&amp;gt;&lt;br /&gt;
[[Presentation Recipe|Presentation recipe]] · [[FlightGear Expo Checklist|Expo checklist]]&amp;lt;/span&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
&amp;lt;!-------------------------------------------------------------&lt;br /&gt;
                    Sections principales&lt;br /&gt;
--------------------------------------------------------------&amp;gt;&lt;br /&gt;
  |sections=&lt;br /&gt;
{{Main page/Leftbox|title=Installation&lt;br /&gt;
  |logo=Nuvola apps download manager.png&lt;br /&gt;
  |contents= &lt;br /&gt;
{{{!}}&lt;br /&gt;
{{!}} valign=&amp;quot;top&amp;quot; {{!}}&lt;br /&gt;
* [[Fr/Howto_Installer_un_avion|Ajouter des avions]]&lt;br /&gt;
* [[Fr/Installer_une_scène|Ajouter des scènes (aéroports,etc..)]]&lt;br /&gt;
{{!}} valign=&amp;quot;top&amp;quot; {{!}}&lt;br /&gt;
* [[FlightGear hangars|Les hangars de Flightgear]]&lt;br /&gt;
{{!}}}&lt;br /&gt;
}}&lt;br /&gt;
{{Main page/Leftbox|title=Obtenir de l'aide&lt;br /&gt;
  |contents=&lt;br /&gt;
* Chercher et demander de l'aide :&lt;br /&gt;
# Vous obtiendrez plus d'aide si vous vous êtes informé au préalable et que vous posez une question pertinente, donc :&lt;br /&gt;
#* Parcourez les liens sur cette page.&lt;br /&gt;
#* [[Special:Search|Chercher dans le wiki]].&lt;br /&gt;
#* [http://forum.flightgear.org/search.php Chercher dans le forum]. Si vous ne trouvez pas grand chose essayer la recherche Google ci-dessous.&lt;br /&gt;
#* [http://google.com Chercher avec Google] Plus utile qu'on ne le pense si vous ajouter le site Flightgear à la fin de la recherche &amp;quot;site:forum.flightgear.org&amp;quot;.&lt;br /&gt;
# [http://forum.flightgear.org/viewforum.php?f=17 Demandez sur le forum de support] ou de préférence dans un des sous-forum en donnant le maximum d'information.&lt;br /&gt;
&lt;br /&gt;
* Pour des problèmes simples, essayer le 'chat' dans le simulateur si d'autres pilotes sont à proximité, ou sur le canal IRC de FlightGear irc://#flightgear@irc.flightgear.org''&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Main page/Leftbox|title=Liens externe&lt;br /&gt;
  |contents= &lt;br /&gt;
* [http://freechecklists.net/ Checklists]&lt;br /&gt;
* [http://www.faa.gov/library/manuals/ FAA Handbooks &amp;amp; Manuals]&lt;br /&gt;
* [http://fr.flightgear.tuxfamily.org/forum/index.php Forum FlightGear France]&lt;br /&gt;
* [http://www.gcmap.com/ Great Circle Mapper]&lt;br /&gt;
* [http://www.smartcockpit.com SmartCockpit.com]&lt;br /&gt;
* [http://www.worldaerodata.com/ World Aeronautical Database]&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Portals]]&lt;br /&gt;
&lt;br /&gt;
[[de:Portal:Benutzer]]&lt;br /&gt;
[[es:Portal:User]]&lt;br /&gt;
[[en:Portal:User]]&lt;br /&gt;
[[it:Portal:Utente]]&lt;br /&gt;
[[pl:Portal:Dla użytkowników]]&lt;br /&gt;
[[zh:Portal:用户]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Canary_Islands_Custom_Scenery&amp;diff=101924</id>
		<title>Canary Islands Custom Scenery</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Canary_Islands_Custom_Scenery&amp;diff=101924"/>
		<updated>2016-07-23T07:05:20Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: Category:Scenery enhancement projects&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Las-Palmas-Apron.png|thumb|The fully modeled Las Palmas de Gran Canaria airport at dusk]]&lt;br /&gt;
The Canary Islands Custom Scenery project is an ambitious project of pilots, developers and supporters of the Canary Islands region. Its aim is to provide the region in a scenery quality as high and as detailed as possible. Other branches of this project take care about a more realistic local AI traffic, multiplayer events and local airlines.&lt;br /&gt;
&lt;br /&gt;
The project is currently under development, with an increasing number of contributors and steady updated contents.&lt;br /&gt;
  &lt;br /&gt;
== History ==&lt;br /&gt;
The whole project started in June 2016, when passionate developers and former residents of the archipelago started several threads in the FlightGear-Forum. Scenery and model developers started to work on the textures, as well as on the terrain, the objects, the sea traffic and obviously on the airports. Within hours and days, a whole re-texturing of all seven major islands took place. Soon after that, the first 3D models for local urban areas were published and shared, and airports had been developed. Developers who had worked on one or two islands before, now shared their experiences and work with others. By now, the development is going on, already having several islands and airports modeled, but there is still a lot of work to do...&lt;br /&gt;
&lt;br /&gt;
== Area description ==&lt;br /&gt;
The Canary Islands are an archipelago in the east Atlantic, off the coast of Morocco. While geographically belonging to Africa, their political status is that of an autonomous region of Spain.&lt;br /&gt;
&lt;br /&gt;
Being called the &amp;quot;Islands of eternal spring&amp;quot;, their climate is mostly warm, with an average temperature of 25°C. This makes all seven Islands perfect for tourism, so that this is the region's main income. Because of this very high tourist level, there are airports on all islands. Except for the airport of El Hierro (GCHI), every island has an international airport. &lt;br /&gt;
The weather is excellent for flying nearly all the time, some winds could make it a challenge, especially in smaller planes.&lt;br /&gt;
Aside from general air traffic, there are many touristic flights from central Europe, mostly from the Uk and Germany. Connections to the spanish mainland are provided by Vueling and Iberia.&lt;br /&gt;
&lt;br /&gt;
Very interesting is the regional carrier sector, operated by the Canarian regional airline Binter Canarias. &lt;br /&gt;
&lt;br /&gt;
== Why fly to the Canary Islands? ==&lt;br /&gt;
Having eight regional and international airports in such a small region is a very big advantage. This makes it very easy for pilots to improve their skills, especially takeoffs, approaches and landings.&lt;br /&gt;
&lt;br /&gt;
The nicely-modeled scenery is worth a special look, so you really can enjoy your flight. A whole lot of people had visited the Islands for their holiday, so now you are able to really get that holiday feeling, when touching down at one of the nicely modeled airports.&lt;br /&gt;
The airports themselves are very different in style, conception, use and their level of difficulty. From the international airport of Las Palmas de Gran Canaria, where you can easily perform a landing with a 747 or A380 to the small one of El Hierro, where it can be difficult to have a touch down even with small regional turboprops, or the notorious Tenerife Norte - Los Rodeos, there are sites for every kind of aviator.&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
This custom scenery is currently under development. We are still working on the project, making it better and more realistic. It's not planned to publish it via [[TerraSync]] by now, maybe we are going to do that later. Actual and updated versions are accessible via {{github url|user=D-ECHO|repo=Canarys}}&lt;br /&gt;
&lt;br /&gt;
== Status of the Project ==&lt;br /&gt;
The whole region is re-textured according to the actual vegetation and look. &lt;br /&gt;
&lt;br /&gt;
You can see the airport development in the list below:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Airport !! Airport layout !! Airport buildings and furniture&lt;br /&gt;
|-&lt;br /&gt;
| GCRR || YES || NOT YET&lt;br /&gt;
|-&lt;br /&gt;
| CGFV || YES || NOT YET&lt;br /&gt;
|-&lt;br /&gt;
| GCLP || YES || YES&lt;br /&gt;
|-&lt;br /&gt;
| GCTS || YES || NOT YET&lt;br /&gt;
|-&lt;br /&gt;
| GCXO || YES || YES&lt;br /&gt;
|-&lt;br /&gt;
| GCGM || YES || YES&lt;br /&gt;
|-&lt;br /&gt;
| GCLA || YES || YES&lt;br /&gt;
|-&lt;br /&gt;
| GCHI || YES || YES&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Things to contribute to ==&lt;br /&gt;
The following things need to be added or improved. Your help is appreciated! If you want to take care of one of the listed topics below, please leave a comment in the forum: https://forum.flightgear.org/viewtopic.php?f=5&amp;amp;t=29773&lt;br /&gt;
&lt;br /&gt;
This avoids double processing, and gives us a notice what we can expect in the near term.&lt;br /&gt;
&lt;br /&gt;
* Airport buildings and furniture for GCFV (Fuerteventura)&lt;br /&gt;
* Airport buildings and furniture for GCRR (Lanzarote)&lt;br /&gt;
* Airport buildings and furniture for GCTS (Tenerife Sur)&lt;br /&gt;
* regional AI Traffic (Binter Canarias Airline)&lt;br /&gt;
* Contributors to multiplayer events&lt;br /&gt;
&lt;br /&gt;
[[Category:Scenery enhancement projects]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=OpenRadar&amp;diff=101923</id>
		<title>OpenRadar</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=OpenRadar&amp;diff=101923"/>
		<updated>2016-07-23T06:57:27Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: Category:ATC clients&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox Software&lt;br /&gt;
| title                  = OpenRadar&lt;br /&gt;
| logo                   = &lt;br /&gt;
| image                  = OpenRadar Prototype.png&lt;br /&gt;
| alt                    = Frankfurt Airport (EDDF)&lt;br /&gt;
| developedby            = Wolfram Wagner (Ralf Gerlich)&lt;br /&gt;
| initialrelease         = Nov, 18th 2012&lt;br /&gt;
| latestrelease          = May, 10th 2015&lt;br /&gt;
| writtenin              = Java&lt;br /&gt;
| os                     = Linux, Windows, Mac&lt;br /&gt;
| platform               = Java&lt;br /&gt;
| developmentstatus      = active&lt;br /&gt;
| type                   = &lt;br /&gt;
| license                = &lt;br /&gt;
| website                = https://sourceforge.net/projects/openradar/&lt;br /&gt;
}}&lt;br /&gt;
[[File:OpenRadar_KSFO_large.png|thumb|270px|San Francisco bay area(historical)]]&lt;br /&gt;
[[File:OpenRadar_KSFO_closeup.png|thumb|270px|[[San Francisco International Airport]](historical)]]&lt;br /&gt;
&lt;br /&gt;
'''OpenRadar''' is a standalone radar screen which connects to the [[FlightGear]] [[Howto: Multiplayer|multiplayer]] servers. Coastlines, lakes, airfield layouts and airspaces (at least the 2D part) are being read from shapefiles.&lt;br /&gt;
It supports Multiplayer Chat and multiple FGCom frequencies.&lt;br /&gt;
&lt;br /&gt;
Please read the [[OpenRadarGuide| Guide to OpenRadar]]!&lt;br /&gt;
&lt;br /&gt;
== Main Features ==&lt;br /&gt;
* ''Radar:''&lt;br /&gt;
:* Display of radar contacts&lt;br /&gt;
:* Highlighting of the selected contact, controlled and interesting contacts&lt;br /&gt;
:* Contacts can be neglected&lt;br /&gt;
:* Display of radar contact base data on screen&lt;br /&gt;
:* Airports including runway numbers, alignment lines, extended center lines, vectoring help and baselines&lt;br /&gt;
:* Navaids (FIX, NDB, VOR) toggle&lt;br /&gt;
:* Navaid search&lt;br /&gt;
:* Possibility to convert/define STARs and SIDs&lt;br /&gt;
:* Distance circles around airport&lt;br /&gt;
:* Ground net including parking positions&lt;br /&gt;
:* Free definable zoom levels (Ground, Tower, App, Sector), mouse wheel works additional (zoom level and centers is saved)&lt;br /&gt;
:* Zoom depending detail visibility (runway numbers close to ground, airways visible from further away)&lt;br /&gt;
* ''Multiplayer Chat''&lt;br /&gt;
:* Filter on selection and visibility&lt;br /&gt;
:* ''Automated multilanguage text handling like ATC-ML'' (The same texts are available, Live data is included into messages): Click on flight strip, choose message, add details and send the message in English and in one additional language, defined on per contact base&lt;br /&gt;
* ''FGCom'' Integration (multiple radios in parallel), PTT Button, FGCom started by OpenRadar in background&lt;br /&gt;
* ''Weather'' (Metar) Download and display (wind, air pressure, visibility)&lt;br /&gt;
* ''Runway display'' is using Metar information (magn. heading,length, width, cross wind stength, ILS frequency)&lt;br /&gt;
* Compensation of wind and magnetic declination&lt;br /&gt;
* Radar contacts displayed on ''Flight Strips''&lt;br /&gt;
:* Flight Strips can be ordered manual in sequence and arranged in list (3 columns)&lt;br /&gt;
:* Automatic ordering available&lt;br /&gt;
:* Comment editor to make notes on Flight Strips&lt;br /&gt;
* ''Transponder/Squawking''&lt;br /&gt;
:* Compatible to FGFS Git implementation (generic transponder in radio dialog)&lt;br /&gt;
:* Optional usable&lt;br /&gt;
:* Define a squawk code range&lt;br /&gt;
:* Assign a squawk code to a contact&lt;br /&gt;
:* Revoke a squawk code from a contact to release the contact out of control&lt;br /&gt;
* ''SetupDialog''&lt;br /&gt;
:* Search airports&lt;br /&gt;
:* Download new airport shape files from scenery database&lt;br /&gt;
:* Edit settings&lt;br /&gt;
:* Main switches to tweak OR (available inside OR via map menu&lt;br /&gt;
&lt;br /&gt;
== Current state ==&lt;br /&gt;
[[OpenRadarDownload| Latest binary release download]]&lt;br /&gt;
&lt;br /&gt;
== System requirements ==&lt;br /&gt;
OpenRadar is no application for a small, a weak computer without graphic acceleration. We need to handle a lot of data, perform permanent Geo to Map projections and display them on the screen, while you&lt;br /&gt;
are shifting the map.&lt;br /&gt;
And believe me, a small screen is bad for the eyes and your neck muscles :-)&lt;br /&gt;
&lt;br /&gt;
* a screen wide enough to display everything (22'' can show about 20 radar contacts, with two radios and two runways active, if you control a small airport with less runways, 18'' should be minimum)&lt;br /&gt;
* a Java Runtime Environment 1.7.0 e.g. OpenJDK&lt;br /&gt;
* [[FGCom]] really recommended&lt;br /&gt;
* a rather good network connection (FGCom is a VoIP application and FG transmits data as UDP packages, they can get lost over a weak connection)&lt;br /&gt;
&lt;br /&gt;
== Related content ==&lt;br /&gt;
* [[OpenRadarGuide|A guide to OpenRadar]]&lt;br /&gt;
* [[OpenRadar: Chat aliases|Chat Aliases]] Use aliases instead of the chat menu...&lt;br /&gt;
* [[OpenRadar: Transponder|Transponder support]] How to use squawk codes (requires contacts with a recent fgfs)&lt;br /&gt;
* [[OpenRadar: Editing routes|Editing STAR/SID routes]]&lt;br /&gt;
* [[OpenRadar_FGFS_ORCAM|ORCAM: Your window to the the airport]]&lt;br /&gt;
&lt;br /&gt;
* [[OpenRadarDownload|'''Download'''! I want to try it!]], [[OpenRadar Change Log|Change Log]]&lt;br /&gt;
* [[OpenRadarKnownIssues|'''FAQ''' / Known Issues]]&lt;br /&gt;
* Please add your feature proposals to [[OpenRadarFeatureWishlist|this page]]!&lt;br /&gt;
&lt;br /&gt;
[[Category:OpenRadar| ]]&lt;br /&gt;
[[Category:ATC clients]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Build_your_own_Panel_or_Cockpit_-_Communicating_with_the_Simulator&amp;diff=101922</id>
		<title>Howto:Build your own Panel or Cockpit - Communicating with the Simulator</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Build_your_own_Panel_or_Cockpit_-_Communicating_with_the_Simulator&amp;diff=101922"/>
		<updated>2016-07-23T06:53:43Z</updated>

		<summary type="html">&lt;p&gt;Tipunch: Category:Cockpit building&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The panel consists of a number of physical switches, rotary encoders, meter movements, numeric and alphanumeric displays, led indicators, rotation sensors.  Even a small plane such as the C172P contains over 100 distinct items that must communicate with the simulator.&lt;br /&gt;
&lt;br /&gt;
A way is needed to communicate changes for each of these elements to the appropriate item in the property tree in the running simulator.&lt;br /&gt;
&lt;br /&gt;
From the hardware perspective this communication involves &lt;br /&gt;
&lt;br /&gt;
# Physical cockpit hardware: switches, encoders, instrument movements etc.&lt;br /&gt;
# Low level interfaces to gather or distribute raw data for the cockpit hardware&lt;br /&gt;
# A Master Client to &lt;br /&gt;
## interpret between raw and simulator data &lt;br /&gt;
## handle communication between the cockpit and the simulator software&lt;br /&gt;
&lt;br /&gt;
For the complete C172p there are:&lt;br /&gt;
&lt;br /&gt;
* 12 volume controls&lt;br /&gt;
* 9 multi position switches&lt;br /&gt;
* 17 meter movements&lt;br /&gt;
* 50 spst switches&lt;br /&gt;
* 9 spdt switches&lt;br /&gt;
* 17 rotary encoders&lt;br /&gt;
* 7 instruments with rotational movement &lt;br /&gt;
* 12 3 to 6 digit numbers&lt;br /&gt;
* 4 3 letter Alpha displays&lt;br /&gt;
* 23 on/off indications on radios and instruments&lt;br /&gt;
&lt;br /&gt;
The simplest implementation would about 300 gpio pins to drive every hardware element.  We can reduce this number greatly by thinking carefully about how to &lt;br /&gt;
&lt;br /&gt;
Some low level interfaces can use an ATMega processor of some type, probably an ATMEGA8535 or ATMEGA8515.  Each of these can handle inputs and outputs for specific controls, switches, instruments and radios.  Because the number of pins on the microprocessors is limited, there will be several of them.  Other interfaces such as the display of 7 and 16 segment Numbers and letters can be handled using a driver chip such as the Max7221.  Another approach is to use I2c or SPI to aggregate data from multiple cockpit elements into a single message.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
From a software perspective, we'll need programming for:&lt;br /&gt;
&lt;br /&gt;
# a telnet client handling communicating between a raspberry pi and Flightgear&lt;br /&gt;
# managing communication between the raspberry pi and lower level interfaces&lt;br /&gt;
# interpreting various types of simulator properties&lt;br /&gt;
# handling raw data for&lt;br /&gt;
## single and multi position switch data&lt;br /&gt;
## data from rotary encoders&lt;br /&gt;
## data going to numeric displays&lt;br /&gt;
## rotation and rotational position sensing for certain instruments&lt;br /&gt;
&lt;br /&gt;
[[Category:Cockpit building]]&lt;/div&gt;</summary>
		<author><name>Tipunch</name></author>
	</entry>
</feed>