Skip to content

6639835/X-Plane-KeyboardInput

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

29 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Universal FMC Keyboard Input Plugin

Version License Platform macOS

Universal FMC Keyboard Input is a high-performance native C++ X-Plane plugin that revolutionizes flight management computer and GPS interaction across multiple aircraft types. This plugin eliminates the tedious point-and-click operation by enabling direct keyboard input, allowing pilots to type flight plans, waypoints, and navigation data directly into FMC/GPS systems using their physical keyboard.

The plugin features intelligent multi-aircraft detection, dual FMC support for both pilot positions, real-time visual feedback, and seamless integration with X-Plane's command system. Built from the ground up in C++ for optimal performance and stability, it provides a more realistic and efficient flight simulation experience across a wide range of aircraft.

โœจ Features

๐Ÿ›ฉ๏ธ Multi-Aircraft Support

  • ZIBO 737: Full dual FMC support with intelligent +/- state management
  • Default 737: Native dual FMS support (FMS/FMS2 systems)
  • Default A330: Complete dual FMS integration
  • Default SR22: GPS GCU keyboard input support

โŒจ๏ธ Advanced Input System

  • Direct Keyboard Input: Type directly into FMC/GPS systems using your keyboard
  • Intelligent Key Mapping: Automatic adaptation to each aircraft's command structure
  • Smart Character Handling: Proper +/- support where available, automatic key filtering
  • Multi-System Support: FMC, FMS, and GPS systems all supported

๐Ÿ‘จโ€โœˆ๏ธ Professional Flight Operations

  • Dual FMC/FMS Support: Switch between Captain and First Officer positions
  • Aircraft Auto-Detection: Automatically detects and adapts to current aircraft type
  • Visual Indicators: Real-time display showing active system and position
  • Seamless Switching: Hot-swap between different aircraft without restart

๐Ÿš€ Technical Excellence

  • Native Performance: C++ implementation for optimal performance and stability
  • Cross-Platform: Universal support for macOS (Intel + Apple Silicon), Windows, and Linux
  • Modern SDK: X-Plane 11/12 compatible with XPLM 300+ features
  • Custom Commands: X-Plane commands for easy key binding and joystick integration

๐ŸŽฏ How It Works

The plugin seamlessly integrates with X-Plane's input system to provide natural keyboard interaction across multiple aircraft:

๐Ÿ” Intelligent Aircraft Detection

  1. Automatic Recognition: Monitors aircraft ICAO codes and command availability
  2. System Identification: Distinguishes between ZIBO vs default aircraft automatically
  3. Real-time Adaptation: Switches command mappings when you change aircraft

โšก Universal Input Processing

  1. Smart Key Mapping: Automatically adapts key names for each aircraft type
  2. System-Specific Commands: Routes input to correct FMC/FMS/GPS system
  3. Position Awareness: Handles Captain/FO distinction where applicable

๐ŸŽฎ User Experience Flow

  1. Load Any Supported Aircraft: ZIBO 737, Default 737/A330, or SR22
  2. Toggle Activation: Use keyboard shortcuts for Captain or First Officer position
  3. Direct Input: Type naturally - characters appear in the active system
  4. Visual Feedback: Status indicator shows current aircraft and position
  5. Seamless Operation: Switch between aircraft without plugin restart

This universal approach eliminates tedious mouse clicking across all supported aircraft types, making flight planning faster and more realistic regardless of your aircraft choice.

๐Ÿ› ๏ธ System Requirements

  • Operating System: macOS 10.15 or higher, Windows 10+, or Linux
  • X-Plane: X-Plane 11 or X-Plane 12 (supports XPLM 410+ SDK)
  • Supported Aircraft:
    • ZIBO 737 (ICAO: B738) - Full dual FMC support
    • Default Boeing 737 (ICAO: B738) - Dual FMS support
    • Default Airbus A330 (ICAO: A330) - Dual FMS support
    • Default Cirrus SR22 (ICAO: SR22) - GPS GCU support
  • Development Tools (for building from source):
    • Xcode Command Line Tools (macOS)
    • CMake 3.16 or higher

๐Ÿš€ Quick Start

1. Install Dependencies

# Install Xcode Command Line Tools (macOS)
xcode-select --install

# Install CMake (using Homebrew)
brew install cmake

2. Build Plugin

# Clone or download this project
cd ZIBOKeyboardInput

# Build plugin
./build.sh

# Or clean and rebuild
./build.sh clean

3. Install Plugin

# Auto-install to X-Plane directory
./install.sh

# Or manually specify X-Plane path
./install.sh "/Applications/X-Plane 12"

After successful build, the plugin file mac.xpl will be installed to:

X-Plane/Resources/plugins/ZIBOKeyboardInput/mac.xpl

๐Ÿ“– Detailed Documentation

Key Mappings

The plugin automatically adapts key mappings based on the detected aircraft:

Keyboard Key ZIBO 737 Default 737/A330 SR22 GPS Description
0-9 Numbers 0-9 numbers 0-9 Numbers 0-9 Numeric input
A-Z Letters A-Z letters a-z Letters A-Z Alphabetic input
Backspace clr clear clr Clear last character
Space SP space spc Space character
Delete del delete bksp Delete/Backspace function
Enter ent enter ent Enter/Execute
/ (main or numpad) slash slash Not supported Forward slash
. period period dot Decimal point
- (main or numpad) minus* minus* Not supported Minus sign
Shift + = plus* plus* Not supported Plus sign
Numpad + plus* plus* Not supported Plus sign

Key Mapping Notes:

  • Plus/Minus: ZIBO and default aircraft support intelligent +/- state management
  • SR22 Limitations: GPS systems don't support slash or +/- operations
  • Case Sensitivity: Automatically handled per aircraft (ZIBO/SR22: uppercase, Default: lowercase)
  • Command Routing: Automatically routes to correct FMC/FMS/GPS system based on aircraft

Custom Commands

The plugin provides universal X-Plane commands that work across all supported aircraft:

  • Universal/FMC_Keyboard/Toggle_Keyboard_Input_Captain - Toggle Captain FMC/FMS/GPS keyboard input
  • Universal/FMC_Keyboard/Toggle_Keyboard_Input_FO - Toggle First Officer FMC/FMS keyboard input

Command Behavior by Aircraft:

  • Dual System Aircraft (ZIBO 737, Default 737/A330): Commands toggle Captain vs First Officer systems independently
  • Single System Aircraft (SR22): Both commands control the same GPS system for convenience

Visual Indicators

The plugin provides intelligent visual feedback that adapts to each aircraft:

Status Window Display:

  • Dual FMC Aircraft (ZIBO 737): Shows "KB:CAP" or "KB:FO" indicating active FMC position
  • Dual FMS Aircraft (Default 737/A330): Shows "KB:CAP" or "KB:FO" indicating active FMS position
  • Single GPS Aircraft (SR22): Shows "KB:SR22" indicating GPS system is active

Visual Features:

  • Bottom-right corner: Floating status window with bright green text
  • Real-time feedback: Appears only when input is enabled, automatically hides when disabled
  • Aircraft-adaptive: Only displays when a supported aircraft is loaded and plugin is active
  • Position-aware: Clear indication of which pilot position or system is currently active

Usage Instructions

  1. Load Any Supported Aircraft: ZIBO 737, Default 737, Default A330, or SR22
  2. Configure Keybindings: Assign keyboard shortcuts to the plugin commands in X-Plane Settings > Keyboard:
    • Search for commands starting with "Universal/FMC_Keyboard/"
  3. Activate Input: Press your assigned key to toggle keyboard input
    • Captain command: Activates Captain-side system
    • FO command: Activates First Officer system (or same system for SR22)
  4. Type Naturally: When enabled, characters appear directly in the active FMC/FMS/GPS
  5. Monitor Status: Check the green status indicator to confirm active position
  6. Toggle Control: Switch between positions or turn off input as needed

Multi-Aircraft Workflow:

  • Load different aircraft without restarting X-Plane
  • Plugin automatically adapts to each aircraft's system
  • Keybindings remain consistent across all aircraft types

๐Ÿ“ Project Structure

ZIBOKeyboardInput/
โ”œโ”€โ”€ README.md                     # Project documentation
โ”œโ”€โ”€ BUILD_INSTRUCTIONS.md        # Detailed build instructions
โ”œโ”€โ”€ LICENSE                      # License file
โ”œโ”€โ”€ CMakeLists.txt              # CMake configuration file
โ”œโ”€โ”€ build.sh                    # Build script
โ”œโ”€โ”€ install.sh                  # Installation script
โ”œโ”€โ”€ mac_exports.txt             # macOS symbol export list
โ”œโ”€โ”€ win_exports.def             # Windows symbol export list
โ”œโ”€โ”€ linux_exports.txt           # Linux symbol export list
โ”œโ”€โ”€ .gitignore                  # Git ignore file list
โ”œโ”€โ”€ src/                        # Source code directory
โ”‚   โ””โ”€โ”€ main.cpp # Main plugin code
โ””โ”€โ”€ XPLM-SDK/                   # X-Plane SDK
    โ”œโ”€โ”€ CHeaders/               # C/C++ header files
    โ””โ”€โ”€ Libraries/              # Platform-specific library files

๐Ÿ”ง Development Notes

Manual Build

If you prefer to manually build using CMake:

mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build . --config Release

Architecture Support

The plugin supports the following architectures:

  • macOS: Universal Binary (Intel x86_64 + Apple Silicon arm64)
  • Windows: x64 architecture
  • Linux: x64 architecture

Setting up X-Plane SDK

  1. Download the X-Plane SDK from developer.x-plane.com
  2. Extract the SDK to the project directory as XPLM-SDK/
  3. Ensure the directory structure matches:
    XPLM-SDK/
    โ”œโ”€โ”€ CHeaders/
    โ”‚   โ”œโ”€โ”€ XPLM/
    โ”‚   โ””โ”€โ”€ Widgets/
    โ””โ”€โ”€ Libraries/
        โ”œโ”€โ”€ Mac/
        โ”œโ”€โ”€ Win/
        โ””โ”€โ”€ Lin/
    

๐ŸŽฎ Usage Tips

Best Practices

  • Use the plugin only when actively entering data into the FMC
  • Toggle off keyboard input when not needed to avoid interference
  • Bind commands to easily accessible keys for quick toggling

Troubleshooting

Plugin Not Loading

  • Verify the plugin is in the correct directory: X-Plane/Resources/plugins/ZIBOKeyboardInput/
  • Check X-Plane's Log.txt for error messages
  • Ensure the plugin file has the correct extension (.xpl)

Keyboard Input Not Working

  • Confirm you're using the ZIBO 737 (other 737s are not supported)
  • Verify keyboard input is enabled (look for the red indicator)
  • Check that the FMC is powered and operational
  • Try toggling the input off and on again

Commands Not Appearing

  • Restart X-Plane after installing the plugin
  • Search for commands starting with "Zibo" in Settings > Keyboard

๐Ÿค Contributing

We welcome contributions from the community! Please see our Contributing Guidelines for detailed information on:

  • Setting up the development environment
  • Code style and standards
  • Submitting bug reports and feature requests
  • Pull request process and testing requirements
  • Platform-specific development considerations

Quick Start for Contributors:

  1. Fork this repository
  2. Follow the setup instructions in CONTRIBUTING.md
  3. Make your changes and test thoroughly
  4. Submit a pull request with a clear description

For questions or discussions, please create an issue or use GitHub Discussions.

Code of Conduct: This project follows our Code of Conduct to ensure a welcoming environment for all contributors.

Security: For security-related concerns, please review our Security Policy and follow the responsible disclosure process outlined there.

๐Ÿ”ง Technical Overview

This plugin operates through a sophisticated multi-aircraft architecture:

๐Ÿ” Multi-Aircraft Detection System

  1. ICAO Monitoring: Monitors sim/aircraft/view/acf_ICAO dataref for aircraft identification
  2. Command Probing: Tests for aircraft-specific commands to distinguish variants (ZIBO vs Default)
  3. Configuration Mapping: Automatically selects appropriate command sets and key mappings
  4. Real-time Updates: Continuously adapts when aircraft changes

โšก Universal Command Translation

Aircraft Type Command Format Example
ZIBO 737 laminar/B738/button/fmc%d_%s laminar/B738/button/fmc1_A
Default 737 sim/FMS/key_%s / sim/FMS2/key_%s sim/FMS/key_a
Default A330 sim/FMS/key_%s / sim/FMS2/key_%s sim/FMS2/key_a
SR22 GPS sim/GPS/gcu478/%s sim/GPS/gcu478/A

๐ŸŽฏ Intelligent Key Processing

  1. Key Interception: Registers a key sniffer callback to capture keyboard input
  2. Aircraft-Specific Mapping: Dynamically converts key names based on detected aircraft
  3. System Routing: Routes commands to correct FMC/FMS/GPS based on pilot position
  4. Smart Filtering: Ignores modifier combinations and unsupported keys per aircraft

๐ŸŽจ Adaptive Visual Feedback

  • Position-Aware Display: Shows CAP/FO for dual systems, aircraft type for single systems
  • Aircraft-Specific Indicators: Displays relevant information based on detected aircraft
  • Real-time Updates: Status changes immediately when switching aircraft or positions

๐Ÿ”ง Special Features

  • Plus/Minus State Management: Intelligent +/- handling for ZIBO and default aircraft
  • Case Sensitivity Handling: Automatic uppercase/lowercase conversion per aircraft requirements
  • Dual Input Support: Both main keyboard and numpad keys supported
  • Modifier Key Safety: Prevents interference with X-Plane shortcuts

๐Ÿ“ Changelog

v2.0.0 (Current) - Universal Multi-Aircraft Support

  • ๐Ÿ›ฉ๏ธ MAJOR UPDATE: Multi-aircraft support across 4 aircraft types
  • โœˆ๏ธ ZIBO 737: Full dual FMC support with intelligent +/- state management
  • โœˆ๏ธ Default 737: Native dual FMS support (FMS/FMS2 systems)
  • โœˆ๏ธ Default A330: Complete dual FMS integration
  • โœˆ๏ธ SR22: GPS GCU keyboard input support
  • ๐Ÿ” Intelligent Detection: Automatic aircraft type recognition and adaptation
  • ๐ŸŽฏ Universal Commands: New universal command structure works across all aircraft
  • ๐Ÿ”ง Smart Key Mapping: Automatic key conversion based on aircraft requirements
  • ๐Ÿ“Š Adaptive UI: Status indicators show relevant information per aircraft type
  • ๐Ÿš€ Seamless Operation: Switch between aircraft without plugin restart

v1.0.8 (Previous)

  • ๐Ÿš€ Stable C++ implementation with enhanced reliability
  • ๐ŸŽฏ Advanced visual feedback system with floating status indicators
  • ๐Ÿ”ง Comprehensive cross-platform support (macOS Universal, Windows x64, Linux x64)
  • ๐ŸŽ›๏ธ Intelligent key mapping with special character support
  • ๐Ÿ“ฑ Modern X-Plane SDK integration (XPLM 300+)

v1.0.0 (Original Lua)

  • ๐ŸŽฎ Initial Lua script implementation
  • โŒจ๏ธ Basic keyboard input functionality for ZIBO 737 only
  • ๐Ÿ‘ฅ Support for Captain and FO positions

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

๐Ÿ™ Acknowledgments

  • ZIBO 737: Outstanding work by the Zibo aircraft development team
  • Laminar Research: X-Plane simulator and comprehensive SDK development tools
  • Default Aircraft: High-quality default 737, A330, and SR22 implementations
  • X-Plane Community: Beta testers, contributors, and feedback providers
  • Multi-Aircraft Testing: Pilots who helped test across different aircraft types

๐Ÿ’ฌ Support

For issues, suggestions, or questions:

  1. Check Compatibility: Ensure you're using a supported aircraft (ZIBO 737, Default 737/A330/SR22)
  2. Review Documentation: Check the troubleshooting section and key mappings above
  3. Check Logs: Review X-Plane's Log.txt for error messages starting with "Universal FMC Keyboard"
  4. Report Issues: Create an issue on the project repository with:
    • X-Plane version and operating system
    • Aircraft type and ICAO code
    • Detailed description of the problem
    • Relevant log file entries

Getting Help:

  • Search existing issues for similar problems
  • Include system specifications and aircraft details
  • Describe expected vs actual behavior clearly

๐ŸŽฏ Multi-Aircraft Compatibility

โœ… Fully Supported Aircraft:

  • ZIBO 737 (ICAO: B738) - Complete dual FMC functionality with +/- support
  • Default Boeing 737 (ICAO: B738) - Dual FMS support with +/- functionality
  • Default Airbus A330 (ICAO: A330) - Full dual FMS integration
  • Default Cirrus SR22 (ICAO: SR22) - GPS GCU input (no +/- or slash)

๐Ÿ”„ Automatic Detection: The plugin automatically detects your aircraft and adapts its functionality accordingly. Simply load any supported aircraft and the plugin will configure itself for optimal compatibility.

About

A tool for inputting FMC using the keyboard.

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors