mirror of
https://github.com/SteamFramelyHomebrew/framely.git
synced 2026-10-18 12:01:48 +02:00
34 lines
2.2 KiB
C++
34 lines
2.2 KiB
C++
#include "gamepad_mapping.h"
|
|
#include <cassert>
|
|
#include <fstream>
|
|
#include <sstream>
|
|
#include <map>
|
|
#include <string>
|
|
int main(){
|
|
// Android Vendor_045e_Product_028e.kl scan codes, independent of Linux aliases.
|
|
const int androidXbox[]={304,305,307,308,310,311,314,315,317,318};
|
|
static_assert(sizeof(keys)==sizeof(androidXbox));
|
|
for(int i=0;i<10;i++)assert(keys[i]==androidXbox[i]);
|
|
// The custom host identity must retain Android's expected ABXY/axis layout.
|
|
std::ifstream file("native/input/gamepad/Vendor_0001_Product_f001.kl");assert(file);std::map<int,std::string> entries;std::string line;
|
|
while(std::getline(file,line)){std::istringstream row(line);std::string kind,name;int code;if(row>>kind>>code>>name&&kind=="key")entries[code]=name;}
|
|
const char* names[]={"BUTTON_A","BUTTON_B","BUTTON_X","BUTTON_Y","BUTTON_L1","BUTTON_R1","BUTTON_SELECT","BUTTON_START","BUTTON_THUMBL","BUTTON_THUMBR"};
|
|
for(int i=0;i<10;i++)assert(entries[keys[i]]==names[i]);
|
|
assert(trigger_keys[0]==312&&trigger_keys[1]==313);
|
|
assert(entries[trigger_keys[0]]=="BUTTON_L2"&&entries[trigger_keys[1]]=="BUTTON_R2");
|
|
GamepadTriggers triggers;
|
|
assert(!triggers.update(0,0));assert(!triggers.update(0,203));
|
|
assert(triggers.update(0,204));assert(triggers.update(0,192));
|
|
assert(!triggers.down[1]);assert(triggers.update(1,255));
|
|
assert(!triggers.update(0,191));assert(triggers.down[1]);
|
|
assert(!triggers.update(1,0));assert(!triggers.down[0]&&!triggers.down[1]);
|
|
assert(triggers.configure(50));assert(!triggers.update(0,127));assert(triggers.update(0,128));
|
|
assert(triggers.update(0,115));assert(!triggers.update(0,114));
|
|
// Changing the setting recalculates a held trigger without axis movement.
|
|
assert(triggers.update(0,180));assert(triggers.configure(80));assert(!triggers.update(0,180));
|
|
assert(triggers.configure(60));assert(triggers.update(0,180));assert(!triggers.update(0,0));
|
|
assert(triggers.configure(1));assert(!triggers.update(0,2));assert(triggers.update(0,3));assert(!triggers.update(0,0));
|
|
assert(triggers.configure(100));assert(!triggers.update(1,254));assert(triggers.update(1,255));assert(!triggers.update(1,242));
|
|
assert(!triggers.configure(0));assert(!triggers.configure(101));assert(triggers.press==255);
|
|
}
|