diff --git a/index.md b/index.md index ecc9c4f..057b027 100644 --- a/index.md +++ b/index.md @@ -13,19 +13,19 @@ carousels: - image: https://raw.githubusercontent.com/bwRavencl/ControllerBuddy/master/screenshot_5.png accordion: - - title: What is the pupose of this FAQ? + - title: What is the purpose of this FAQ? content: | - Firstly, it will present to you a way to control all aspects of modern flight simulators solely via a gamepad in an intuitive fashion. This means no joystick, keyboard or even mouse will be strictly necessary anymore to control your virtual aircraft and the simulator's user interface. - The presented method is applicable to most desktop flight simulators and types of airplanes and helicopters. + Firstly, it will show you how to intuitively control all aspects of modern flight simulators using only a gamepad. This means that a joystick, keyboard or even a mouse are no longer strictly necessary to control your virtual aircraft and the simulator's user interface. + This method is applicable to all flight simulators and all types of aircraft and helicopters. - Secondly, it shall serve as a guide for **ControllerBuddy**, an advanced open-source game controller mapping software developed by the author of this document. + Secondly, it is intended as a guide to **ControllerBuddy**, an advanced open-source game controller mapping software developed by the author of this document. - title: What is ControllerBuddy? content: | - ControllerBuddy is a highly advanced gamepad mapping software, which supports the creation of input profiles for complex target applications such as flight simulators. + ControllerBuddy is a highly advanced gamepad mapping software that supports the creation of input profiles for complex target applications such as flight simulators. - In addition to the simplistic mapping of buttons and axes of a physical game-controller to keyboard and mouse input, ControllerBuddy also supports the feeding of input commands to a virtual joystick, provided by the awesome vJoy device driver created by Shaul Eizikovich. + In addition to simply mapping the buttons and axes of a physical game controller to keyboard and mouse input, ControllerBuddy also supports sending input commands to a virtual joystick, which for Windows is provided by the awesome vJoy device driver created by Shaul Eizikovich. - ControllerBuddy's goal is to enable the user to control target applications solely via a gamepad and not having to reach for a keyboard or mouse at any point in time. + ControllerBuddy's goal is to allow the user to control target applications using only a gamepad, without ever having to reach for a keyboard or mouse. - title: What exactly do you mean by the term 'gamepad'? content: | A game controller as used by current generation gaming consoles, with two analog sticks, a D-Pad, a number of face buttons, two triggers and two shoulder buttons. @@ -55,55 +55,59 @@ accordion: - Lastly als already mentioned above, a gamepad will certainly never be able to offer the same realism than a well-made joystick or yoke. - title: How can we get around these drawbacks? content: | - Instead of binding axes and buttons directly to our gamepad we use a *virtual* joystick provided by the excellent **vJoy**. Created by Shaul Eizikovich as open-source software, vJoy is a device driver that provides virtual joysticks that can be controlled from other applications (in our case ControllerBuddy). + Instead of binding axes and buttons directly to our gamepad we use a *virtual* joystick. + On Windows, this virtual joystick is provided by the excellent **vJoy**. Created by Shaul Eizikovich as open-source software, vJoy is a device driver that provides virtual joysticks that can be controlled from other applications (in our case ControllerBuddy). + Under Linux, ControllerBuddy dynamically creates its own virtual joystick device using the uinput kernel module. In **ControllerBuddy** we can create **profiles** that define a mapping of the physical axes and buttons of our gamepad to so called **actions**. Among other things, actions can manipulate the axes of the vJoy device or simulate mouse and keyboard inputs. This allows us for example to work around the above mentioned issue of missing relative axes on our gamepad. Due to the limited number of axes and buttons of a gamepad, a single axis or button usually must serve multiple purposes. This can be handled by so called **modes**. For example an axis normally assigned to the throttle can become the axis controlling for controlling the view (i.e. looking up and down), while swiching to view-mode. - Another function of ControllerBuddy is the so called **overlay**. The overlay is a transparent window that is displayed on top of the simulator to show the currently active mode and the state of the axes of the virtual axes. This is especially useful for relative axes, for example it is very hard to tell the current throttle setting without such an indication. The overlay can be freely moved around the screen and configured to include only indicators for certain axes of interest. - ControllerBuddy also provides a special mode in which an **on-screen-keyboard** is displayed that can be controlled via specialized actions. This is helpful when you want to type in chat messages without having to rely on a physical keyboard. This can be especially interesting to people who would like to use ControllerBuddy in combination with VR. + Another function of ControllerBuddy is the so called **overlay**. The overlay is a transparent window that is displayed on top of the simulator to show the currently active mode and the state of the axes of the virtual axes. This is especially useful for relative axes, for example it is very hard to tell the current throttle setting without such an indication. The overlay can be freely moved around the screen and configured to include only indicators for certain axes of interest. + + ControllerBuddy also provides a special mode in which an **on-screen-keyboard** is displayed that can be controlled via specialized actions. This is helpful when you want to type in chat messages without having to rely on a physical keyboard. This can be especially interesting to people who would like to use ControllerBuddy in combination with VR. Since the required inputs vary greatly from simulator to simulator and even from aircraft to aircraft, a custom tailored profile for each simulator, and in case of complex titles such as DCS for each aircraft, is necessary. These profiles can be edited within ControllerBuddy and be permanently stored as files on your computer. [![Overlay](https://raw.githubusercontent.com/bwRavencl/ControllerBuddy/master/screenshot_7.png)](https://raw.githubusercontent.com/bwRavencl/ControllerBuddy/master/screenshot_7.png) - title: How do modes (shift-states) work? content: | - **Switching between modes** is done via a specialized type of action for mode-switching that can be assigned to a button of your gamepad. A mode-swichting action can be configured to either temporarily switch to a mode, for as long as the corresponding button is depressed or to permanently toggle a mode on and off by a single press of the button. Depending on the concrete usage scenario one or the other configuration may be preferable. + **Switching between modes** is done via a specialized type of action for mode-switching that can be assigned to a button of your gamepad. A mode-swichting action can be configured to either temporarily switch to a mode, for as long as the corresponding button is depressed or to permanently toggle a mode on and off by a single press of the button. Depending on the concrete usage scenario one or the other configuration may be preferable. + All axes and buttons that do not have a different actions assigned by the currently active mode retain the actions of the mode one level below. - title: What does a basic profile look like? content: | - Usually you will want to create a custom profile at least for each simulator and in many cases even for each simulated aircraft. Yet most profiles will have a common foundation which can look as follows: + Usually you will want to create an individual profile for each simulator and in many cases for each aircraft simulated. However, most profiles will have a common base, which may look like this: - For the **primary controls**, the basic idea behind the control scheme is based on the way radio-controlled aircraft are steered with a radio transmitter: - The right stick controls pitch and roll, just like a typical joystick. - The left stick's vertical axis is mapped to a relative vJoy axis that controls the throttle, while the horizontal axis of the stick controls the yaw. - Due to the small range of the physical axes of a gamepad, you will want to configure at least a small dead zone and some expo (i.e. *curves*) in-game for the vJoy axes that control pitch, yaw and roll. - Note that the right stick should never be mapped to anything else in other modes, since having control over the pitch and yaw of the aircraft is vital in all situations, however the left stick can be reused for other functions in other modes, because manipulating the throttle and yaw is usually not required at all times. + Due to the small range of a gamepad's physical axes, you will want to configure at least a small dead zone and some expo (i.e. *curves*) in-game for the vJoy axes that control pitch, yaw and roll. + Note that the right stick should never be mapped to anything else in other modes, as control of the pitch and roll of the aircraft is essential in all situations, but the left stick can be reused for other functions in other modes, as throttle and yaw control is not usually required at all times. - **Secondary controls**, such as flaps, landing gear and air brake can be mapped to the D-Pad. - Note that the gear mapped to the lower part of the D-Pad, sice it is physically located on the lower side of the aircraft, while the air brake is usually located on-top of the fuselage or wings and thus mapped to the upper part of the D-Pad. Following this logic it only makes sense to use the horizontal segement of the D-Pad for the flaps. Mapping the controls in such a way makes profiles a lot more intuitive and natural to use. + Note that the gear mapped to the lower part of the D-Pad, sice it is physically located on the lower side of the aircraft, while the air brake is usually located on-top of the fuselage or wings and is therefore mapped to the upper part of the D-Pad. Following this logic, it only makes sense to use the horizontal segement of the D-Pad for the flaps. Mapping the controls in such a way makes profiles a lot more intuitive and natural to use. - - **Looking around** is done by pressing and holding the right shoulder button, which activates the *Look Mode*: - - In *Look Mode* the left stick controls the view and is used for looking around. Usually you will want to use two relative vJoy axes for mapping these controls. + - **Looking around** is done by pressing and holding the right shoulder button to activate *Look Mode*: + - In *Look Mode* the left stick controls the view and is used for looking around. You will normally want to use two relative vJoy axes for mapping these controls. - The D-Pad shifts the head up and down and left and right. - - The Y and A buttons shift the head forward and back. + - The Y and A buttons shift the head forward and backward. - Pressing the right stick down zooms the view in, pressing the left stick down zooms out. - **Changing and centering the view** is done with the X button: - As soon as the X button gets pressed the view is centered and the zoom level gets reset. In order to achieve this, usually multiple actions must be performed: - The relative vJoy axes that are mapped to looking around must be centered - this can be done via configuring two specialized actions called *Reset vJoy Axis* that target the respective vJoy axes. - - The in-game commad(s) for centering the view in all view axes must be fired. - - The in-game command for resetting the zoom level must be fired. - - Additionally, while holding the X button the *View Mode* gets activated: - In *View Mode* the D-Pad is used to switch between the most important views, such as cockpit view, external views or map view. + - The in-game commad(s) to center the view in all view axes must be fired. + - The in-game command to reset the zoom level must be fired. + - In addition, while holding the X button the *View Mode* gets activated: + In *View Mode*, the D-Pad is used to switch between the most important views, such as the cockpit view, external views or map view. - **Triming the aircraft** can be done while activating *Trim Mode* by pressing and holding the left shoulder button: - - In *Trim Mode* the D-Pad is used to change the pitch and roll trim, while the X and B buttons change the yaw trim. - - For some aircraft a *Center Trim* command may be available and can for example be mapped to the A button. + - In *Trim Mode* the D-Pad is used to change the pitch and roll trim, while the X and B buttons are used to change yaw trim. + - Some aircraft may have a *Center Trim* command which can be assigned to the A Button. - For most helicopters no dedicated Mode is necessary, instead the left shoulder button should simply be mapped to a *Force Trim* command if available. - - The *Mouse Mode* allows controlling basic mouse functions via your gamepad. It is activated by pressing down the left stick. + - The *Mouse Mode* allows you to control basic mouse functions via your gamepad. It is activated by pressing down the left stick. In this case the Mode-switching is configured to toggle between *Default Mode* and *Mouse Mode*, this means that pressing down the left stick once activates the *Mouse Mode* and pressing it again toggles it off again. When *Mouse Mode* is active you can perform mouse inputs as follows: - The left stick controls the mouse cursor @@ -121,8 +125,8 @@ accordion: By locking down multiple keys it is possible to perform key-strokes that consist of multiple keys pressed simultaneously. When the *On-Screen Keyboard Mode* is toggled off by pressing down the right stick, all locked keys are automatically released. - This concludes the foundation on which a profile can expand upon. It is important to note, that you should keep these basics of all your profiles as similar as possible, this will make it a lot easier when switching between different aircraft models and simulators! - As you may have noticed we practically have already covered all the typical controls required for flying a virtual aircraft and controlling the most important aspects of the simulator. And most importantly we now still have quite a few buttons available for mapping some of the more specialized controls of an aircraft. + This completes the base upon which a real profile can be built. It is important to note, that you should keep these basics of all your profiles as similar as possible, this will make it much easier when switching between different aircraft models and simulators! + As you may have noticed we practically have already covered all the typical controls required for flying a virtual aircraft and controlling the most important aspects of the simulator. Most importantly, we still have quite a few buttons available for mapping some of the more specialized controls of an aircraft. ##### Default Mode: [![Basic Profile Default Mode](assets/svg/basic_profile_default_mode.svg)](assets/svg/basic_profile_default_mode.svg) @@ -143,24 +147,22 @@ accordion: [![Basic Profile On-Screen Keyboard Mode](assets/svg/basic_profile_on_screen_keyboard_mode.svg)](assets/svg/basic_profile_on_screen_keyboard_mode.svg) - title: What about more complex profiles? content: | - The more complex the simulated aircraft is, the more time it will take to create a profile and to figure out what is most intuitive. However nothing is impossible and in the author's experience even the most complex systems can be mapped to the limited amount of buttons a gamepad offers. + The more complex the simulated aircraft is, the more time it will take to create a profile and to figure out what is most intuitive. However nothing is impossible and in the author's experience even the most complex systems can be mapped to the limited number of buttons a gamepad offers. Here are just a few general guidelines on how to approach this task: - 1. Start out with binding everything found on the stick and throttle of the real aircraft. For aircraft that follow the [HOTAS](https://en.wikipedia.org/wiki/HOTAS){:target="_blank"} concept, this will already include almost everything required for operating the aircraft and its systems. - 2. Now you can concentrate on bindings that offer additional bindings for convenience, e.g.: + 1. Start by mapping everything you can find on the stick of the real aircraft. For aircraft that follow the [HOTAS](https://en.wikipedia.org/wiki/HOTAS){:target="_blank"} concept, this will already include almost everything needed to operate the aircraft and its systems. + 2. Now you can focus on additional bindings for convenience, such as: - Propeller and Mixture levers - Sensor controls (e.g. Radar and [FLIR](https://en.wikipedia.org/wiki/Forward-looking_infrared){:target="_blank"}) - Countermeasure controls (Chaff, Flare and [ECM](https://en.wikipedia.org/wiki/Electronic_countermeasure){:target="_blank"}) - title: How do I create such profiles? content: | - A profile can never exist on its own, it always targets a specific game. This game must be configured in such a way that the inputs ControllerBuddy simulates map to the actual actions. - For example if ControllerBuddy is configured to simulate a press of the *G*-Key to raise and lower the landing gear, the game must be configured in such a way that the *G*-Key is actually mapped to the landing gear function. - Most games come with certain default mappings, it is recommended to stick with these mappings and build ControllerBuddy profiles in such a way that they target the default mappings. If a certain function does not have a mapping by default, it should be mapped to a button of the vJoy device - this must be done in ControllerBuddy as well as in the game. The same applies to all axis functions. - For example if you want to map the elevator, the following two steps are required: - 1. Map an axis (or button) of your gamepad to a vJoy axis inside ControllerBuddy - 2. Map the vJoy axis to the function in the game - - The following steps shall help you to decide on how to proceed when mapping a game function to your controller: + A profile always targets a specific game. The game must be configured so that the inputs that ControllerBuddy simulates are bound to actual actions in the game. + For example, if a ControllerBuddy profile contains an action that should perform a *G*-Key press to raise and lower the landing gear, the *G*-Key must be mapped to the landing gear function in the game. + + Most games come with certain default mappings, it is recommended to stick to these mappings and create ControllerBuddy profiles that target the default mappings. If a function does not have a default mapping, it should be mapped to a button of the vJoy device, both in ControllerBuddy and in the game. The same goes for all Axis functions. + + The following steps will help you decide how to map a game function to your controller: - Mapping an axis function: In the game | map the axis function to an unused axis of the vJoy device @@ -174,21 +176,22 @@ accordion: In the game | map the function to an unused button of the vJoy device In ControllerBuddy | create a matching mapping a button / axis of your gamepad to the button of the vJoy device - **Important:** it is suggested to export or backup your game configuration and keep it alongside your ControllerBuddy profile. + **Important:** It is recommended that you export or backup your game configuration and keep it with your ControllerBuddy profile. What follows are some general guidelines on how to proceed when creating a new profile from scratch: 1. In the game remove all existing default mappings (axes and buttons) to your gamepad, otherwise they will interfere with the mappings done via ControllerBuddy and the vJoy device. - (This step is not required if you are using a DualShock 4 or DualSense gamepad!) + (This step is not necessary if you are using a DualShock 4 or DualSense gamepad!) 2. Start by mapping the main control axes (elevator, ailerons, rudder, throttle) as part of the *Default Mode* 3. Add a *Look Mode* and a *View Mode* as described above - 4. Add mappings for basic functions such as: landing gear, flaps, brakes. Usually these mappings should be part of the *Default Mode*. However exceptions can be made: in more modern aircraft such as the F/A-18 Hornet, the flaps are only used during takeoff and landing and in addition other functions such as the tailhook fall into the same category. Since we only have a finite amount of gamepad buttons available it makes sense to put all of these functions only used during takeoff and landing into a dedicated mode. + 4. Add mappings for basic functions such as: landing gear, flaps, brakes. Normally these mappings should be part of the *Default Mode*. However, exceptions can be made: in modern aircraft such as the F/A-18 Hornet, the flaps are only used during take-off and landing and in addition other functions such as the tailhook fall into the same category. Since we only have a limited number of gamepad buttons available it makes sense to put all of these functions only used during take-off and landing into a dedicated mode. 5. Add dedicated modes for special functions, e.g. sensor controls. - When asigning a button of your gamepad to enable / disable a mode, you have to options: - - Enabled toggling: this means that a single press of the button toggles the mode on, pressing it again toggles it off - - Disabled toggling: this means that the mode is only active for as long as you keep the button pressed down - In general, toggling is more useful for modes that should stay active for a longer amount of time, e.g. a mode dedicated to operating sensor controls. - 6. In rare cases it may make sense to double bind certain axes or buttons within a mode even for unrelated functions. For example, in my profiles I often double bind the triggers of the gamepad to the left and right brake and at the same time for dropping ordanance and firing the gun. This can be be done because while sitting on the ground (when it makes sense to use the brakes), the weapon systems are turned off, so pulling the trigger has no effect at that point. Vice verse, when in combat and the weapon safety is off, pulling the trigger will also activate the corresponding brake, however since you are in the air and the landing gear is retracted, braking will have no effect. - 7. Experiment around! After some time you can come up with input profiles quite fast, but only actual usage of a profile will show up its weaknesses. In that case ControllerBuddy's interface makes it easy for you to make some quick alterations, try them out, and only keep them if you like how they feel. + When assigning a gamepad button to a mode action, you have two options: + - Toggle checked: this means that a single press of the button toggles the mode on, pressing it again toggles it off + - Toggle unchecked: this means that the mode is only active for as long as you keep the button pressed down + In general, toggling is more useful for modes that should stay active for a longer period of time, e.g. for a mode dedicated to operating sensor controls. + 6. In rare cases it may be useful to have certain axes or buttons double-bound within a mode, even for unrelated functions. For example, in my profiles I often double-bind the gamepad triggers for left and right braking, as well as for dropping weapons and firing the gun. + This is possible because when you are on the ground (when it makes sense to use the brakes), the weapon systems are turned off, so pulling the trigger has no effect at that point. Conversely, if you are in combat and the weapon safety is off, pulling the trigger will also activate the corresponding brake, but since you are in the air and the landing gear is retracted, braking will have no effect. + 7. Experiment! After a while you can quickly come up with input profiles, but it is only when you actually use a profile that its weaknesses become apparent. In this case, ControllerBuddy's interface makes it easy for you to make some quick changes, try them out, and only keep them if you like how they feel in action. - title: What are the hardware and software requirements? content: | - A gamepad supported by the [SDL_GameControllerDB](https://github.com/gabomdq/SDL_GameControllerDB){:target="_blank"} project (e.g. Xbox Controller, DualShock 4 or DualSense) @@ -200,16 +203,17 @@ accordion: - title: How much does it cost? content: | It's all free! - - title: How do I set the software up and how does the ControllerBuddy user-interface work? - content: | - Please check out the [Getting Started section](#getting-started). - Linux users should refer to the [README.md](https://github.com/bwRavencl/ControllerBuddy#linux){:target="_blank"} for setup instructions. - title: Where can I get premade profiles? content: | - ControllerBuddy's author is maintaining an exhaustive list of profiles for almost all current flight simulators. All of these profiles, along with matching game configurations can be found in a special GitHub repository called [ControllerBuddy-Profiles](https://github.com/bwRavencl/ControllerBuddy-Profiles){:target="_blank"}. - To download the a ZIP-package containing the latest versions of all profiles and configurations [click here](https://github.com/bwRavencl/ControllerBuddy-Profiles/archive/refs/heads/master.zip){:target="_blank"}. + ControllerBuddy's author is maintaining an exhaustive list of profiles for almost all current flight simulators. All of these profiles, along with matching game configurations can be found in a special GitHub repository called [ControllerBuddy-Profiles](https://github.com/bwRavencl/ControllerBuddy-Profiles){:target="_blank"}. + + To download the a ZIP-package containing the latest versions of all profiles and configurations [click here](https://github.com/bwRavencl/ControllerBuddy-Profiles/archive/refs/heads/master.zip){:target="_blank"}. + + If you have installed ControllerBuddy via the [ControllerBuddy-Install-Script](https://github.com/bwRavencl/ControllerBuddy-Install-Script){:target="_blank"}, you do not need to download the profiles separately, because the script has already placed a copy into your *Documents* folder. + **Note:** When the script is launched via the *Update ControllerBuddy* shortcut, it will not only update ControllerBuddy, but attempt to update the profiles to the latest available version, that's why it is recommended to save your personal profiles or modified profiles to a different folder. + Please follow the instructions listed in the repository's [README.md](https://github.com/bwRavencl/ControllerBuddy-Profiles#instructions){:target="_blank"} to get you started. - Additionally is is recommended to check out the visualization for each profile either inside ControllerBuddy's visualization tab, after loading the profile, or [below](#profiles) on this website. + Additionally, it is recommended to check out the visualization for each profile, either in ControllerBuddy's visualization tab after loading the profile, or [below](#profiles) on this website. - title: Why is the overlay not displayed? content: | Please try the following solutions: @@ -231,11 +235,13 @@ accordion: Yes! Go to the global settings tab and enable the 'Swap Left and Right Sticks' option. - title: What is haptic feedback? content: | - Haptic feedback is a special feature, which can be enabled for relative axis mappings. It will cause the controller to vibrate slightly, when either end of a relative axis, or a user defined axis position (dentent), is reached. - Support for this feature is implemented for the most common controllers on both Windows and Linux. + Haptic feedback is a special feature that can be enabled for relative axis mappings. It causes the controller to vibrate slightly when either end of a relative axis, or a user defined axis position (dentent), is reached. + + Haptic feedback support is implemented for the most popular controllers on both Windows and Linux. - title: Which controller do you recommend? content: | - The author either recommends a Microsoft Xbox Series X\|S Controller or a Sony DualSense or DualShock 4 controller. + The author either recommends a Microsoft Xbox Series X\|S Controller or a Sony DualSense or DualShock 4 controller. + Both Sony controllers feature a touchpad, which is supported by ControllerBuddy to function like the typical touchpad of a laptop computer. - title: Why is my Xbox Controller not recognized by ControllerBuddy? content: | @@ -245,35 +251,39 @@ accordion: [![Xbox Extended Feature Support Driver](https://steamuserimages-a.akamaihd.net/ugc/2012593630419989216/C1FE814A0D119E67EF7736BD0DC90E34773E0833/)](https://steamuserimages-a.akamaihd.net/ugc/2012593630419989216/C1FE814A0D119E67EF7736BD0DC90E34773E0833/) - title: How can I keep track of the battery status of wireless controllers? content: | - When using a Sony DualSense or DualShock 4 controller or a XInput controller on Windows, ControllerBuddy reads the battery state of the device and displays it in the tooltip of the tray icon. For both Sony controllers, ControllerBuddy also adjusts the lighting to keep the user aware of the battery state at a glance. + When using a Sony DualSense or DualShock 4 controller or a XInput controller on Windows, ControllerBuddy reads the battery state of the device and displays it in the tooltip of the tray icon. + For both Sony controllers, ControllerBuddy also adjusts the lighting to keep the user aware of the battery state at a glance. - title: Can I use ControllerBuddy in VR? content: | - ControllerBuddy allows the user to fully control all input aspects (game controls and the UI) solely via a gamepad. Hence, the user never has to put his gamepad aside in order to reach for a mouse or keyboard. This makes ControllerBuddy predestined for a VR environment, in which the user cannot see any peripherials. + ControllerBuddy allows the user to fully control all input aspects (game controls and the UI) solely via a gamepad. Hence, the user never has to put his gamepad aside in order to reach for a mouse or keyboard. This makes ControllerBuddy predestined for a VR environment, in which the user cannot see any peripherials. + Both the overlay and the on-screen-keyboard of ControllerBuddy are available as overlays inside OpenVR applications, just as they are in a regular non-VR application. - title: Is there a way to automate launching ControllerBuddy and loading profiles from within simulators? content: | - ControllerBuddy supports multiple command line parameters which are listed [here](https://github.com/bwRavencl/ControllerBuddy/blob/master/README.md#command-line-parameters){:target="_blank"}. + ControllerBuddy supports multiple command line parameters which are listed [here](https://github.com/bwRavencl/ControllerBuddy/blob/master/README.md#command-line-parameters){:target="_blank"}. + ControllerBuddy is a single-instance application, this means that if an instance of ControllerBuddy is already running, and the user launches a second instance, any supplied command line parameters are passed on to the first instance and the second instance terminates immediately. This behavior can be useful in automation scripts to integrate ControllerBuddy tightly with other applications. For more information check out [ControllerBuddy-DCS-Integration](https://github.com/bwRavencl/ControllerBuddy-DCS-Integration){:target="_blank"}, an exemplary integration of ControllerBuddy into [DCS World](https://www.digitalcombatsimulator.com){:target="_blank"}. - title: Is there a way to automatically install and update ControllerBuddy? content: | - The easiest way to setup ControllerBuddy is via the [ControllerBuddy-Install-Script](https://github.com/bwRavencl/ControllerBuddy-Install-Script){:target="_blank"}. - The script streamlines the installation and updating of ControllerBuddy itself and of the profiles available as part of the [ControllerBuddy-Profiles](https://github.com/bwRavencl/ControllerBuddy-Profiles) repository. - Please note, on Windows it is mandatory that you install [Git for Windows](https://git-scm.com/download/win){:target="_blank"} first, in order to run the script. - - title: What else should I be aware of as a user of ControllerBuddy? - content: | - ControllerBuddy is in permanent active development and has a very small userbase as of this writing. This means that new versions are released very frequently and sometimes stuff might break. As there is currently no update functionality included a user should regularly check the latest release page for updates. - Please note, that with major updates the profile file-format might change which can lead to incompatibilities. If that happens ControllerBuddy will notify the user when loading an incompatible profile. + The easiest way to setup ControllerBuddy is via the [ControllerBuddy-Install-Script](https://github.com/bwRavencl/ControllerBuddy-Install-Script){:target="_blank"}. + + The script streamlines the installation and updating of ControllerBuddy itself and of the profiles available as part of the [ControllerBuddy-Profiles](https://github.com/bwRavencl/ControllerBuddy-Profiles) repository. + + **Note:** on Windows it is mandatory that you install [Git for Windows](https://git-scm.com/download/win){:target="_blank"} first, in order to run the script. - title: How can I report bugs? content: | - Should you encounter any bugs, please use the GitHub issue system to report them to the author. - Always include information about your system, including the operating system version and the controller hardware you use. - Also please take the time to provide exact steps on how to reproduce the encoutered issue. + If you encounter any bugs, please use the [GitHub issue system](https://github.com/bwRavencl/ControllerBuddy/issues){:target="_blank"} to report them to the author. + Always include information about your system, including the operating system version and controller hardware you are using. + Also, please take the time to provide exact steps on how to reproduce the problem you encountered. - title: How can I contribute? content: | - ControllerBuddy is free and open-source software, licensed under the [GNU General Public License v2.0](https://github.com/bwRavencl/ControllerBuddy/blob/master/LICENSE){:target="_blank"}. - This principally enables anyone to take part in its development. - If you feel a useful feature is missing feel free to implement it and open a create a pull-request on GitHub. Please be aware that the author will only accept features that he personally finds useful and adhere to his standards for code quality. + The easiest way everybody can contribute to ControllerBuddy is simply by spreading the word: + Online, people new to flight simulation are regularly asking how they can enjoy this hobby without a joystick, so the next time you see one of these posts, help them out and let them know about ControllerBuddy! + + If you are a developer and would like to contribute to ControllerBuddy by implementing a feature or fixing a bug feel free to do so and open a pull-request on GitHub. + ControllerBuddy is free and open-source software, licensed under the [GNU General Public License v2.0](https://github.com/bwRavencl/ControllerBuddy/blob/master/LICENSE){:target="_blank"}, this allows everyone to participate in its development. + Please note that the author will only accept features that he personally finds useful and that meet his standards for code quality. - title: How can I get in touch with you? content: | Please refer to the [ControllerBuddy Discord](https://discord.gg/2Sg9ggZrAp){:target="_blank"} if you have any additional questions that were not covered here.