A cross-platform, object-oriented input library for handling keyboard, mouse, and joystick devices in C++ applications.
OIS (Object Oriented Input System) is a cross-platform C++ library that provides an object-oriented abstraction for handling input devices like keyboards, mice, and joysticks. It solves the problem of managing platform-specific input APIs by offering a unified interface, simplifying development for games, simulations, and interactive applications.
C++ developers building cross-platform applications that require input handling, particularly in game development, simulation software, or interactive tools where consistent input management across Linux, Windows, and macOS is critical.
Developers choose OIS for its proven robustness, straightforward object-oriented API, and seamless cross-platform compatibility without the overhead of larger frameworks. Its permissive license and lightweight design make it a reliable choice for both open-source and commercial projects.
Official OIS repository. Object oriented Input System
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides a unified API for keyboard, mouse, and joystick inputs across Linux (X11), Windows (DirectX), and macOS (Cocoa), abstracting away platform-specific details as highlighted in the README.
Encapsulates input devices as separate objects (e.g., Keyboard, Mouse), enabling clean, maintainable code design that simplifies event handling and state management.
Supports CMake for straightforward compilation and installation on all platforms, with clear examples in the README for Linux, Windows, and macOS build processes.
Released under the zlib/libpng license, allowing free use, modification, and distribution in both open-source and commercial projects without restrictive terms.
Requires external SDKs like X11 on Linux or DirectX SDK on Windows, which can complicate setup and increase the learning curve, as noted in the build instructions.
Focuses only on traditional keyboard, mouse, and joystick devices, lacking native support for touchscreens, advanced gamepads, or newer technologies like gyroscopes.
The README indicates manual steps like setting PKG_CONFIG_PATH on Linux, adding unnecessary friction to integration compared to more automated alternatives.