{"action":"created","comment":{"url":"https://api.github.com/repos/FRC125/FRamework/pulls/comments/100894796","pull_request_review_id":21608598,"id":100894796,"diff_hunk":"@@ -0,0 +1,171 @@\n+package com.nutrons.framework.inputs;\n+\n+import io.reactivex.Flowable;\n+\n+public class CommonController extends WpiGamepad {\n+  private final int leftStickX;\n+  private final int rightStickX;\n+  private final int leftStickY;\n+  private final int rightStickY;\n+  private final int leftTrigger;\n+  private final int rightTrigger;\n+  private final int buttonX;\n+  private final int buttonA;\n+  private final int buttonB;\n+  private final int buttonY;\n+  private final int startButton;\n+  private final int rightBumper;\n+  private final int leftBumper;\n+  private final int selectButton;\n+  private final int stickButtonLeft;\n+  private final int stickButtonRight;\n+\n+  private CommonController(int port,\n+                           int leftStickX,\n+                           int leftStickY,\n+                           int rightStickX,\n+                           int rightStickY,\n+                           int leftTrigger,\n+                           int rightTrigger,\n+                           int buttonX,\n+                           int buttonY,\n+                           int buttonB,\n+                           int buttonA,\n+                           int buttonStart,\n+                           int buttonSelect,\n+                           int rightBumper,\n+                           int leftBumper,\n+                           int stickButtonLeft,\n+                           int stickButtonRight) {\n+    super(port);\n+    this.leftStickX = leftStickX;\n+    this.leftStickY = leftStickY;\n+    this.rightStickX = rightStickX;\n+    this.rightStickY = rightStickY;\n+    this.leftTrigger = leftTrigger;\n+    this.rightTrigger = rightTrigger;\n+    this.buttonX = buttonX;\n+    this.buttonY = buttonY;\n+    this.buttonB = buttonB;\n+    this.buttonA = buttonA;\n+    this.startButton = buttonStart;\n+    this.selectButton = buttonSelect;\n+    this.rightBumper = rightBumper;\n+    this.leftBumper = leftBumper;\n+    this.stickButtonLeft = stickButtonLeft;\n+    this.stickButtonRight = stickButtonRight;\n+  }\n+\n+  /**\n+   * Create a CommonController with bindings for the Logitech F310 in D-mode.\n+   */\n+  public static CommonController logitechDf310(int port) {\n+    return new CommonController(\n+        port,\n+        InputMap.LOGITECH_X_1,\n+        InputMap.LOGITECH_Y_1,\n+        InputMap.LOGITECH_X_2,\n+        InputMap.LOGITECH_Y_2,\n+        InputMap.LOGITECH_LEFT_TRIGGER,\n+        InputMap.LOGITECH_RIGHT_TRIGGER,\n+        InputMap.LOGITECH_X,\n+        InputMap.LOGITECH_Y,\n+        InputMap.LOGITECH_B,\n+        InputMap.LOGITECH_A,\n+        InputMap.LOGITECH_START,\n+        InputMap.LOGITECH_SELECT,\n+        InputMap.LOGITECH_RIGHT_BUMPER,\n+        InputMap.LOGITECH_LEFT_BUMPER,\n+        InputMap.LOGITECH_L3,\n+        InputMap.LOGITECH_R3);\n+  }\n+\n+  /**\n+   * Create a CommonController with bindings for the Xbox 360.\n+   */\n+  public static CommonController xbox360(int port) {\n+    return new CommonController(port,\n+        InputMap.XBOX_X_1,\n+        InputMap.XBOX_Y_1,\n+        InputMap.XBOX_X_2,\n+        InputMap.XBOX_Y_2,\n+        InputMap.XBOX_LEFT_TRIGGER,\n+        InputMap.XBOX_RIGHT_TRIGGER,\n+        InputMap.XBOX_X,\n+        InputMap.XBOX_Y,\n+        InputMap.XBOX_B,\n+        InputMap.XBOX_A,\n+        InputMap.XBOX_START,\n+        InputMap.XBOX_SELECT,\n+        InputMap.XBOX_RIGHT_BUMPER,\n+        InputMap.XBOX_LEFT_BUMPER,\n+        InputMap.XBOX_L3,\n+        InputMap.XBOX_R3);\n+  }\n+\n+  public Flowable<Double> leftStickX() {\n+    return axis(leftStickX);\n+  }\n+\n+  public Flowable<Double> leftStickY() {\n+    return axis(leftStickY);\n+  }\n+\n+  public Flowable<Double> rightStickX() {\n+    return axis(rightStickX);\n+  }\n+\n+  public Flowable<Double> rightStickY() {\n+    return axis(rightStickY);\n+  }\n+\n+  public Flowable<Boolean> buttonX() {\n+    return button(buttonX);\n+  }\n+\n+  public Flowable<Boolean> buttonA() {\n+    return button(buttonA);\n+  }\n+\n+  public Flowable<Boolean> buttonY() {\n+    return button(buttonY);\n+  }\n+\n+  public Flowable<Boolean> buttonB() {\n+    return button(buttonB);\n+  }\n+\n+  public Flowable<Boolean> startButton() {\n+    return button(startButton);\n+  }\n+\n+  public Flowable<Boolean> selectButton() {\n+    return button(selectButton);\n+  }\n+\n+  public Flowable<Boolean> rightBumper() {\n+    return button(rightBumper);\n+  }\n+\n+  public Flowable<Boolean> leftBumper() {\n+    return button(leftBumper);\n+  }\n+\n+  public Flowable<Double> leftTrigger() {\n+    return axis(leftTrigger);\n+  }\n+\n+  public Flowable<Double> rightTrigger() {\n+    return axis(rightTrigger);\n+  }\n+\n+  public Flowable<Boolean> stickButtonLeft() {\n+    return button(stickButtonLeft);\n+  }\n+\n+  public Flowable<Boolean> stickButtonRight() {\n+    return button(stickButtonRight);\n+  }\n+","path":"src/com/nutrons/framework/inputs/CommonController.java","position":169,"original_position":169,"commit_id":"45fed7f33e44bccd4d3f1992aad2d59ba573df5e","original_commit_id":"45fed7f33e44bccd4d3f1992aad2d59ba573df5e","user":{"login":"MiloDavis","id":4009368,"avatar_url":"https://avatars.githubusercontent.com/u/4009368?v=3","gravatar_id":"","url":"https://api.github.com/users/MiloDavis","html_url":"https://github.com/MiloDavis","followers_url":"https://api.github.com/users/MiloDavis/followers","following_url":"https://api.github.com/users/MiloDavis/following{/other_user}","gists_url":"https://api.github.com/users/MiloDavis/gists{/gist_id}","starred_url":"https://api.github.com/users/MiloDavis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MiloDavis/subscriptions","organizations_url":"https://api.github.com/users/MiloDavis/orgs","repos_url":"https://api.github.com/users/MiloDavis/repos","events_url":"https://api.github.com/users/MiloDavis/events{/privacy}","received_events_url":"https://api.github.com/users/MiloDavis/received_events","type":"User","site_admin":false},"body":"Extra linebreak","created_at":"2017-02-13T20:51:24Z","updated_at":"2017-02-13T20:51:47Z","html_url":"https://github.com/FRC125/FRamework/pull/62#discussion_r100894796","pull_request_url":"https://api.github.com/repos/FRC125/FRamework/pulls/62","_links":{"self":{"href":"https://api.github.com/repos/FRC125/FRamework/pulls/comments/100894796"},"html":{"href":"https://github.com/FRC125/FRamework/pull/62#discussion_r100894796"},"pull_request":{"href":"https://api.github.com/repos/FRC125/FRamework/pulls/62"}}},"pull_request":{"url":"https://api.github.com/repos/FRC125/FRamework/pulls/62","id":105799739,"html_url":"https://github.com/FRC125/FRamework/pull/62","diff_url":"https://github.com/FRC125/FRamework/pull/62.diff","patch_url":"https://github.com/FRC125/FRamework/pull/62.patch","issue_url":"https://api.github.com/repos/FRC125/FRamework/issues/62","number":62,"state":"open","locked":false,"title":"CommonController","user":{"login":"AndreasLc1103","id":16628631,"avatar_url":"https://avatars.githubusercontent.com/u/16628631?v=3","gravatar_id":"","url":"https://api.github.com/users/AndreasLc1103","html_url":"https://github.com/AndreasLc1103","followers_url":"https://api.github.com/users/AndreasLc1103/followers","following_url":"https://api.github.com/users/AndreasLc1103/following{/other_user}","gists_url":"https://api.github.com/users/AndreasLc1103/gists{/gist_id}","starred_url":"https://api.github.com/users/AndreasLc1103/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AndreasLc1103/subscriptions","organizations_url":"https://api.github.com/users/AndreasLc1103/orgs","repos_url":"https://api.github.com/users/AndreasLc1103/repos","events_url":"https://api.github.com/users/AndreasLc1103/events{/privacy}","received_events_url":"https://api.github.com/users/AndreasLc1103/received_events","type":"User","site_admin":false},"body":"A class that eliminates having to Re-Map controller inputs for different controllers","created_at":"2017-02-12T17:56:58Z","updated_at":"2017-02-13T20:51:47Z","closed_at":null,"merged_at":null,"merge_commit_sha":"ba1688c9495b8b151206ffa425cae6275fd083f3","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/FRC125/FRamework/pulls/62/commits","review_comments_url":"https://api.github.com/repos/FRC125/FRamework/pulls/62/comments","review_comment_url":"https://api.github.com/repos/FRC125/FRamework/pulls/comments{/number}","comments_url":"https://api.github.com/repos/FRC125/FRamework/issues/62/comments","statuses_url":"https://api.github.com/repos/FRC125/FRamework/statuses/45fed7f33e44bccd4d3f1992aad2d59ba573df5e","head":{"label":"FRC125:Commoncontroller","ref":"Commoncontroller","sha":"45fed7f33e44bccd4d3f1992aad2d59ba573df5e","user":{"login":"FRC125","id":6336328,"avatar_url":"https://avatars.githubusercontent.com/u/6336328?v=3","gravatar_id":"","url":"https://api.github.com/users/FRC125","html_url":"https://github.com/FRC125","followers_url":"https://api.github.com/users/FRC125/followers","following_url":"https://api.github.com/users/FRC125/following{/other_user}","gists_url":"https://api.github.com/users/FRC125/gists{/gist_id}","starred_url":"https://api.github.com/users/FRC125/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/FRC125/subscriptions","organizations_url":"https://api.github.com/users/FRC125/orgs","repos_url":"https://api.github.com/users/FRC125/repos","events_url":"https://api.github.com/users/FRC125/events{/privacy}","received_events_url":"https://api.github.com/users/FRC125/received_events","type":"Organization","site_admin":false},"repo":{"id":78313873,"name":"FRamework","full_name":"FRC125/FRamework","owner":{"login":"FRC125","id":6336328,"avatar_url":"https://avatars.githubusercontent.com/u/6336328?v=3","gravatar_id":"","url":"https://api.github.com/users/FRC125","html_url":"https://github.com/FRC125","followers_url":"https://api.github.com/users/FRC125/followers","following_url":"https://api.github.com/users/FRC125/following{/other_user}","gists_url":"https://api.github.com/users/FRC125/gists{/gist_id}","starred_url":"https://api.github.com/users/FRC125/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/FRC125/subscriptions","organizations_url":"https://api.github.com/users/FRC125/orgs","repos_url":"https://api.github.com/users/FRC125/repos","events_url":"https://api.github.com/users/FRC125/events{/privacy}","received_events_url":"https://api.github.com/users/FRC125/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/FRC125/FRamework","description":"Framework for a better robot for great good","fork":false,"url":"https://api.github.com/repos/FRC125/FRamework","forks_url":"https://api.github.com/repos/FRC125/FRamework/forks","keys_url":"https://api.github.com/repos/FRC125/FRamework/keys{/key_id}","collaborators_url":"https://api.github.com/repos/FRC125/FRamework/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/FRC125/FRamework/teams","hooks_url":"https://api.github.com/repos/FRC125/FRamework/hooks","issue_events_url":"https://api.github.com/repos/FRC125/FRamework/issues/events{/number}","events_url":"https://api.github.com/repos/FRC125/FRamework/events","assignees_url":"https://api.github.com/repos/FRC125/FRamework/assignees{/user}","branches_url":"https://api.github.com/repos/FRC125/FRamework/branches{/branch}","tags_url":"https://api.github.com/repos/FRC125/FRamework/tags","blobs_url":"https://api.github.com/repos/FRC125/FRamework/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/FRC125/FRamework/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/FRC125/FRamework/git/refs{/sha}","trees_url":"https://api.github.com/repos/FRC125/FRamework/git/trees{/sha}","statuses_url":"https://api.github.com/repos/FRC125/FRamework/statuses/{sha}","languages_url":"https://api.github.com/repos/FRC125/FRamework/languages","stargazers_url":"https://api.github.com/repos/FRC125/FRamework/stargazers","contributors_url":"https://api.github.com/repos/FRC125/FRamework/contributors","subscribers_url":"https://api.github.com/repos/FRC125/FRamework/subscribers","subscription_url":"https://api.github.com/repos/FRC125/FRamework/subscription","commits_url":"https://api.github.com/repos/FRC125/FRamework/commits{/sha}","git_commits_url":"https://api.github.com/repos/FRC125/FRamework/git/commits{/sha}","comments_url":"https://api.github.com/repos/FRC125/FRamework/comments{/number}","issue_comment_url":"https://api.github.com/repos/FRC125/FRamework/issues/comments{/number}","contents_url":"https://api.github.com/repos/FRC125/FRamework/contents/{+path}","compare_url":"https://api.github.com/repos/FRC125/FRamework/compare/{base}...{head}","merges_url":"https://api.github.com/repos/FRC125/FRamework/merges","archive_url":"https://api.github.com/repos/FRC125/FRamework/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/FRC125/FRamework/downloads","issues_url":"https://api.github.com/repos/FRC125/FRamework/issues{/number}","pulls_url":"https://api.github.com/repos/FRC125/FRamework/pulls{/number}","milestones_url":"https://api.github.com/repos/FRC125/FRamework/milestones{/number}","notifications_url":"https://api.github.com/repos/FRC125/FRamework/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/FRC125/FRamework/labels{/name}","releases_url":"https://api.github.com/repos/FRC125/FRamework/releases{/id}","deployments_url":"https://api.github.com/repos/FRC125/FRamework/deployments","created_at":"2017-01-08T01:11:12Z","updated_at":"2017-01-13T01:08:25Z","pushed_at":"2017-02-13T20:46:41Z","git_url":"git://github.com/FRC125/FRamework.git","ssh_url":"git@github.com:FRC125/FRamework.git","clone_url":"https://github.com/FRC125/FRamework.git","svn_url":"https://github.com/FRC125/FRamework","homepage":null,"size":248,"stargazers_count":1,"watchers_count":1,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":14,"forks":1,"open_issues":14,"watchers":1,"default_branch":"master"}},"base":{"label":"FRC125:master","ref":"master","sha":"9d227968d7be37e11547e87cfdd98cc0318ade62","user":{"login":"FRC125","id":6336328,"avatar_url":"https://avatars.githubusercontent.com/u/6336328?v=3","gravatar_id":"","url":"https://api.github.com/users/FRC125","html_url":"https://github.com/FRC125","followers_url":"https://api.github.com/users/FRC125/followers","following_url":"https://api.github.com/users/FRC125/following{/other_user}","gists_url":"https://api.github.com/users/FRC125/gists{/gist_id}","starred_url":"https://api.github.com/users/FRC125/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/FRC125/subscriptions","organizations_url":"https://api.github.com/users/FRC125/orgs","repos_url":"https://api.github.com/users/FRC125/repos","events_url":"https://api.github.com/users/FRC125/events{/privacy}","received_events_url":"https://api.github.com/users/FRC125/received_events","type":"Organization","site_admin":false},"repo":{"id":78313873,"name":"FRamework","full_name":"FRC125/FRamework","owner":{"login":"FRC125","id":6336328,"avatar_url":"https://avatars.githubusercontent.com/u/6336328?v=3","gravatar_id":"","url":"https://api.github.com/users/FRC125","html_url":"https://github.com/FRC125","followers_url":"https://api.github.com/users/FRC125/followers","following_url":"https://api.github.com/users/FRC125/following{/other_user}","gists_url":"https://api.github.com/users/FRC125/gists{/gist_id}","starred_url":"https://api.github.com/users/FRC125/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/FRC125/subscriptions","organizations_url":"https://api.github.com/users/FRC125/orgs","repos_url":"https://api.github.com/users/FRC125/repos","events_url":"https://api.github.com/users/FRC125/events{/privacy}","received_events_url":"https://api.github.com/users/FRC125/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/FRC125/FRamework","description":"Framework for a better robot for great good","fork":false,"url":"https://api.github.com/repos/FRC125/FRamework","forks_url":"https://api.github.com/repos/FRC125/FRamework/forks","keys_url":"https://api.github.com/repos/FRC125/FRamework/keys{/key_id}","collaborators_url":"https://api.github.com/repos/FRC125/FRamework/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/FRC125/FRamework/teams","hooks_url":"https://api.github.com/repos/FRC125/FRamework/hooks","issue_events_url":"https://api.github.com/repos/FRC125/FRamework/issues/events{/number}","events_url":"https://api.github.com/repos/FRC125/FRamework/events","assignees_url":"https://api.github.com/repos/FRC125/FRamework/assignees{/user}","branches_url":"https://api.github.com/repos/FRC125/FRamework/branches{/branch}","tags_url":"https://api.github.com/repos/FRC125/FRamework/tags","blobs_url":"https://api.github.com/repos/FRC125/FRamework/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/FRC125/FRamework/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/FRC125/FRamework/git/refs{/sha}","trees_url":"https://api.github.com/repos/FRC125/FRamework/git/trees{/sha}","statuses_url":"https://api.github.com/repos/FRC125/FRamework/statuses/{sha}","languages_url":"https://api.github.com/repos/FRC125/FRamework/languages","stargazers_url":"https://api.github.com/repos/FRC125/FRamework/stargazers","contributors_url":"https://api.github.com/repos/FRC125/FRamework/contributors","subscribers_url":"https://api.github.com/repos/FRC125/FRamework/subscribers","subscription_url":"https://api.github.com/repos/FRC125/FRamework/subscription","commits_url":"https://api.github.com/repos/FRC125/FRamework/commits{/sha}","git_commits_url":"https://api.github.com/repos/FRC125/FRamework/git/commits{/sha}","comments_url":"https://api.github.com/repos/FRC125/FRamework/comments{/number}","issue_comment_url":"https://api.github.com/repos/FRC125/FRamework/issues/comments{/number}","contents_url":"https://api.github.com/repos/FRC125/FRamework/contents/{+path}","compare_url":"https://api.github.com/repos/FRC125/FRamework/compare/{base}...{head}","merges_url":"https://api.github.com/repos/FRC125/FRamework/merges","archive_url":"https://api.github.com/repos/FRC125/FRamework/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/FRC125/FRamework/downloads","issues_url":"https://api.github.com/repos/FRC125/FRamework/issues{/number}","pulls_url":"https://api.github.com/repos/FRC125/FRamework/pulls{/number}","milestones_url":"https://api.github.com/repos/FRC125/FRamework/milestones{/number}","notifications_url":"https://api.github.com/repos/FRC125/FRamework/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/FRC125/FRamework/labels{/name}","releases_url":"https://api.github.com/repos/FRC125/FRamework/releases{/id}","deployments_url":"https://api.github.com/repos/FRC125/FRamework/deployments","created_at":"2017-01-08T01:11:12Z","updated_at":"2017-01-13T01:08:25Z","pushed_at":"2017-02-13T20:46:41Z","git_url":"git://github.com/FRC125/FRamework.git","ssh_url":"git@github.com:FRC125/FRamework.git","clone_url":"https://github.com/FRC125/FRamework.git","svn_url":"https://github.com/FRC125/FRamework","homepage":null,"size":248,"stargazers_count":1,"watchers_count":1,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":14,"forks":1,"open_issues":14,"watchers":1,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/FRC125/FRamework/pulls/62"},"html":{"href":"https://github.com/FRC125/FRamework/pull/62"},"issue":{"href":"https://api.github.com/repos/FRC125/FRamework/issues/62"},"comments":{"href":"https://api.github.com/repos/FRC125/FRamework/issues/62/comments"},"review_comments":{"href":"https://api.github.com/repos/FRC125/FRamework/pulls/62/comments"},"review_comment":{"href":"https://api.github.com/repos/FRC125/FRamework/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/FRC125/FRamework/pulls/62/commits"},"statuses":{"href":"https://api.github.com/repos/FRC125/FRamework/statuses/45fed7f33e44bccd4d3f1992aad2d59ba573df5e"}}}}
{"actor":{"display_login":"MiloDavis"}}