هذا المشروع أرشفة. لم يعد الحفاظ عليها ولا تطور.
Gainput
Gainput هي مكتبة إدخال C ++ الرائعة للعائلة الخاصة بك:
- يعالج احتياجات الإدخال الخاصة بك من قراءة الجهاز منخفض المستوى إلى رسم الخرائط عالية المستوى للأزرار المعرفة من قبل المستخدم
- موثقة جيدًا ونظيفة وخفيفة الوزن وسهلة الاستخدام
- واجهة موحدة على جميع الأنظمة الأساسية المدعومة: Android NDK ، iOS/TVOS ، Linux ، MacOs ، Windows
- الأجهزة المدعوم
- المصدر المفتوح (ترخيص معهد ماساتشوستس للتكنولوجيا)
- قائمة كاملة من الميزات
- وثائق API
الاستخدام
# include < gainput/gainput.h >
enum Button
{
ButtonConfirm
};
gainput::InputManager manager;
manager.SetDisplaySize(displayWidth, displayHeight);
const gainput::DeviceId keyboardId = manager.CreateDevice<gainput::InputDeviceKeyboard>();
const gainput::DeviceId mouseId = manager.CreateDevice<gainput::InputDeviceMouse>();
const gainput::DeviceId padId = manager.CreateDevice<gainput::InputDevicePad>();
const gainput::DeviceId touchId = manager.CreateDevice<gainput::InputDeviceTouch>();
gainput::InputMap map (manager);
map.MapBool(ButtonConfirm, keyboardId, gainput::KeyReturn);
map.MapBool(ButtonConfirm, mouseId, gainput::MouseButtonLeft);
map.MapBool(ButtonConfirm, padId, gainput::PadButtonA);
map.MapBool(ButtonConfirm, touchId, gainput::Touch0Down);
while (running)
{
manager. Update ();
// May need some platform-specific message handling here
if (map. GetBoolWasDown (ButtonConfirm))
{
// Confirmed!
}
}سمات
- يقدم واجهة موحدة على جميع المنصات المدعومة. (بعض التغييرات البسيطة ضرورية لإعداد المكتبة.)
- يوفر واجهة منخفضة المستوى وعالية المستوى: استعد عن حالة أزرار أجهزة الإدخال مباشرة أو أزرار الجهاز إلى زر المستخدم. وبهذه الطريقة ، من السهل دعم المدخلات البديلة أو تغيير تعيينات الإدخال في وقت لاحق.
- يدعم تسجيل وتشغيل تسلسل الإدخال.
- يتميز بخادم شبكة للحصول على معلومات عن الأجهزة والتعيينات من.
- يمكن لحالات كسبتين مزامنة حالات الجهاز عبر الشبكة . من الممكن أيضًا تلقي مدخلات متعددة اللمس من متصفح الهاتف الذكي العادي.
- مكتوب تماما في C ++ المحمول.
- لا يتم استخدام STL . لا يتم طرح استثناءات . لا يتم استخدام RTTI . لا C ++ 11 ، ولا دفعة .
- لا يتم استخدام التبعيات الخارجية الغريبة . يعتمد على النظام الأساسي الحالي SDKs.
- قم بإعداد وبناء بسهولة باستخدام أداة IDE/Build المفضلة لديك.
- يمكن تثبيت المستمعين على حد سواء لأزرار الأجهزة وكذلك أزرار المستخدم. وبهذه الطريقة يتم إخطارك عندما تتغير حالة الزر.
- تسمح الإيماءات باكتشاف أنماط إدخال أكثر تعقيدًا ، على سبيل المثال النقر المزدوج ، إيماءات قرصة/دوران ، أو عقد عدة أزرار في وقت واحد.
- يمكن توفير مخصص خارجي للمكتبة بحيث تتم جميع إدارة الذاكرة بالطريقة التي تريدها.
- يدعم المدخلات الخام على Linux و Windows.
- يتم دعم Gamepad Retmbling عند توفره.
- من السهل التحقق من جميع الأزرار المضغوطة بحيث يكون من السهل تنفيذ طريقة للاعبين لإعادة تنفيذ أزرارهم. وبالمثل ، من السهل حفظ التعيينات وتحميلها.
- ربما يتم تعطيل الميزات غير الضرورية ، مثل الإيماءات أو خادم الشبكة ، بسهولة.
- يمكن إعداد المناطق الميتة لأي زر قيمة تعويم.
- تغييرات الحالة ، أي إذا كان الزر قد انخفض حديثًا أو تم إصداره للتو ، يمكن التحقق منه.
مبنى
بشكل افتراضي ، تم تصميم Gainput باستخدام Cmake.
- تشغيل
mkdir build - تشغيل
cmake .. - تشغيل
make - يمكن العثور على المكتبة في
lib/ ، والمكتبة في samples/ .
المساهمة
الجميع مرحب بهم للمساهمة في المكتبة. إذا وجدت أي مشاكل ، فيمكنك إرسالها باستخدام نظام مشكلات Github. إذا كنت ترغب في المساهمة في رمز ، فيجب عليك أن تتفوق على المشروع ثم إرسال طلب سحب.
التبعيات
Gainput لديه الحد الأدنى من التبعيات الخارجية لجعلها قائمة بذاتها قدر الإمكان. يستخدم الطرق الافتراضية للمنصات للحصول على مدخلات ولا يستخدم STL.
الاختبار
بشكل عام ، يجب إجراء الاختبار عن طريق بناء وتشغيل Gainput على جميع المنصات المدعومة. يجب استخدام العينات في samples/ المجلد من أجل تحديد ما إذا كانت المكتبة وظيفية.
تم تصميم اختبارات الوحدة في test/ المجلد بواسطة بناء CMAKE العادي. يمكن العثور على القابلة للتنفيذ في test/ المجلد. يتم بناء جميع تكوينات البناء واختبارات الوحدة بواسطة Travis CI كلما تم دفع شيء ما إلى المستودع.
بدائل