Advertisement
eliasdaler

Untitled

Dec 10th, 2018
308
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.22 KB | None | 0 0
  1. #include <SFMLGamepad.h>
  2.  
  3. #include <SFML/Graphics/RenderWindow.hpp>
  4. #include <SFML/Window/Event.hpp>
  5.  
  6. #include <iostream>
  7.  
  8. const char* getButtonString(sfg::Button button)
  9. {
  10.     switch (button) {
  11.         case sfg::Button::A:
  12.             return "A";
  13.         case sfg::Button::B:
  14.             return "B";
  15.         case sfg::Button::X:
  16.             return "X";
  17.         case sfg::Button::Y:
  18.             return "Y";
  19.         case sfg::Button::LeftShoulder:
  20.             return "Left shoulder";
  21.         case sfg::Button::RightShoulder:
  22.             return "Right shoulder";
  23.         case sfg::Button::LeftTrigger:
  24.             return "Left trigger";
  25.         case sfg::Button::RightTrigger:
  26.             return "Right trigger";
  27.         case sfg::Button::LeftStick:
  28.             return "Left stick";
  29.         case sfg::Button::RightStick:
  30.             return "Right stick";
  31.         case sfg::Button::Back:
  32.             return "Back";
  33.         case sfg::Button::Start:
  34.             return "Start";
  35.         case sfg::Button::Guide:
  36.             return "Guide";
  37.         default:
  38.             return "";
  39.     }
  40. }
  41.  
  42. const char* getAxisString(sfg::Axis axis)
  43. {
  44.     switch (axis) {
  45.         case sfg::Axis::DPadX:
  46.             return "D-pad X";
  47.         case sfg::Axis::DPadY:
  48.             return "D-pad Y";
  49.         case sfg::Axis::LeftX:
  50.             return "Left stick X";
  51.         case sfg::Axis::LeftY:
  52.             return "Left stick Y";
  53.         case sfg::Axis::RightX:
  54.             return "Right stick X";
  55.         case sfg::Axis::RightY:
  56.             return "Right stick Y";
  57.         case sfg::Axis::LeftTrigger:
  58.             return "Left trigger";
  59.         case sfg::Axis::RightTrigger:
  60.             return "Right trigger";
  61.         default:
  62.             return "";
  63.     }
  64. }
  65.  
  66. void printGamepadEvent(const sfg::Event& event)
  67. {
  68.     switch (event.type) {
  69.         case sfg::Event::Type::ButtonPressed:
  70.             std::cout << "Gamepad button pressed: " << getButtonString(event.button) << std::endl;
  71.             break;
  72.         case sfg::Event::Type::ButtonReleased:
  73.             std::cout << "Gamepad button released: " << getButtonString(event.button) << std::endl;
  74.             break;
  75.         case sfg::Event::Type::AxisMoved:
  76.             std::cout << "Gamepad axis moved: " << getAxisString(event.axis) << ", pos: " << event.axisPosition <<  std::endl;;
  77.             break;
  78.         default:
  79.             break;
  80.     }
  81. }
  82.  
  83. int main()
  84. {
  85.     // Create the window of the application
  86.     sf::RenderWindow window(sf::VideoMode(400, 680), "Joystick", sf::Style::Close);
  87.     window.setVerticalSyncEnabled(true);
  88.  
  89.     auto test = sf::Keyboard::localize(sf::Keyboard::ScanNum2);
  90.  
  91.     sfg::loadMappings();
  92.     auto id = sf::Joystick::getIdentification(0);
  93.     const auto& mapping = sfg::getMapping(id);
  94.  
  95.  
  96.     while (window.isOpen()) {
  97.         sf::Event event;
  98.         while (window.pollEvent(event)) {
  99.             if (event.type == sf::Event::Closed)
  100.                 window.close();
  101.  
  102.             if (sfg::isGamepadEvent(event)) {
  103.                 sfg::Event sfgEvent = sfg::fromSfmlEvent(mapping, event);
  104.                 printGamepadEvent(sfgEvent);
  105.             }
  106.         }
  107.  
  108.         window.clear();
  109.         window.display();
  110.     }
  111.  
  112.     return 0;
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement