You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

gamepad_input.pde 3.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. public static int L1 = 0;
  2. public static int L2 = 1;
  3. public static int L3 = 2;
  4. public static int R1 = 3;
  5. public static int R2 = 4;
  6. public static int R3 = 5;
  7. public static int SELECT = 6;
  8. public static int START = 7;
  9. public static int A = 8;
  10. public static int B = 9;
  11. public static int X = 10;
  12. public static int Y = 11;
  13. public static int XBOX = 12;
  14. public static int DPAD_UP = 13;
  15. public static int DPAD_DOWN = 14;
  16. public static int DPAD_LEFT = 15;
  17. public static int DPAD_RIGHT = 16;
  18. import org.gamecontrolplus.gui.*;
  19. import org.gamecontrolplus.*;
  20. import net.java.games.input.*;
  21. ControlIO controlIO;
  22. Configuration gpad_config;
  23. ControlDevice gpad;
  24. boolean gamePadAvailable = false;
  25. boolean[] gpadButtonPresses = new boolean[17];
  26. boolean[] dpadButtons = new boolean[4];
  27. String[] buttonNames = {"L1", "L2", "L3", "R1", "R2", "R3", "SELECT", "START", "A", "B", "X", "Y", "XBOX", "DPAD_UP", "DPAD_DOWN", "DPAD_LEFT", "DPAD_RIGHT"};
  28. PVector LSTICK, RSTICK;
  29. void initGamepad() {
  30. controlIO = ControlIO.getInstance(this);
  31. //gpad = controlIO.filter(GCP.GAMEPAD).getMatchedDevice("WIRELESS");
  32. if (gpad == null) {
  33. println("No suitable device configured");
  34. } else {
  35. gamePadAvailable = true;
  36. }
  37. LSTICK = new PVector(0, 0);
  38. RSTICK = new PVector(0, 0);
  39. }
  40. public void getUserInput() {
  41. if (gamePadAvailable) {
  42. dpadButtons[0] = gpad.getHat("DPAD").up();
  43. dpadButtons[1] = gpad.getHat("DPAD").down();
  44. dpadButtons[2] = gpad.getHat("DPAD").left();
  45. dpadButtons[3] = gpad.getHat("DPAD").right();
  46. for (int i = 0; i < 17; i++) {
  47. boolean thisButton = (i < 13) ? gpad.getButton(buttonNames[i]).pressed() : dpadButtons[i-13];
  48. if (gpadButtonPresses[i] != thisButton) {
  49. if (gpadButtonPresses[i]) buttonReleased(i);
  50. else buttonPressed(i);
  51. }
  52. gpadButtonPresses[i] = thisButton;
  53. }
  54. LSTICK.set(roundFloat(gpad.getSlider("LSTICK_X").getValue(), 2), roundFloat(gpad.getSlider("LSTICK_Y").getValue(), 2));
  55. RSTICK.set(roundFloat(gpad.getSlider("RSTICK_X").getValue(), 2), roundFloat(gpad.getSlider("RSTICK_Y").getValue(), 2));
  56. }
  57. }
  58. void buttonPressed(int btn) {
  59. println("Pressed " + buttonNames[btn]);
  60. }
  61. void buttonReleased(int btn) {
  62. println("Released " + buttonNames[btn]);
  63. }
  64. void keyPressed() {
  65. switch(key) {
  66. case('w'):
  67. LSTICK.y = 1.0;
  68. break;
  69. case('a'):
  70. LSTICK.x = -1.0;
  71. break;
  72. case('s'):
  73. LSTICK.y = -1.0;
  74. break;
  75. case('d'):
  76. LSTICK.x = 1.0;
  77. break;
  78. case('Q'):
  79. buttonPressed(0);
  80. break;
  81. case('E'):
  82. buttonPressed(0);
  83. break;
  84. case(' '):
  85. buttonPressed(0);
  86. break;
  87. case(RETURN):
  88. buttonPressed(0);
  89. break;
  90. case(SHIFT):
  91. buttonPressed(0);
  92. break;
  93. case(CONTROL):
  94. buttonPressed(0);
  95. break;
  96. case(ALT):
  97. buttonPressed(0);
  98. break;
  99. case(UP):
  100. buttonPressed(0);
  101. break;
  102. case(DOWN):
  103. buttonPressed(0);
  104. break;
  105. case(LEFT):
  106. buttonPressed(0);
  107. break;
  108. case(RIGHT):
  109. buttonPressed(0);
  110. break;
  111. default:
  112. break;
  113. }
  114. }
  115. void keyReleased() {
  116. switch(key) {
  117. case('w'):
  118. LSTICK.y = 0;
  119. break;
  120. case('a'):
  121. LSTICK.x = 0;
  122. break;
  123. case('s'):
  124. LSTICK.y = 0;
  125. break;
  126. case('d'):
  127. LSTICK.x = 0;
  128. break;
  129. case('Q'):
  130. buttonPressed(0);
  131. break;
  132. case('E'):
  133. buttonPressed(0);
  134. break;
  135. case(' '):
  136. buttonPressed(0);
  137. break;
  138. case(RETURN):
  139. buttonPressed(0);
  140. break;
  141. case(SHIFT):
  142. buttonPressed(0);
  143. break;
  144. case(CONTROL):
  145. buttonPressed(0);
  146. break;
  147. case(ALT):
  148. buttonPressed(0);
  149. break;
  150. case(UP):
  151. buttonPressed(0);
  152. break;
  153. case(DOWN):
  154. buttonPressed(0);
  155. break;
  156. case(LEFT):
  157. buttonPressed(0);
  158. break;
  159. case(RIGHT):
  160. buttonPressed(0);
  161. break;
  162. default:
  163. break;
  164. }
  165. }