{"action":"opened","number":5024,"pull_request":{"url":"https://api.github.com/repos/openframeworks/openFrameworks/pulls/5024","id":64595177,"html_url":"https://github.com/openframeworks/openFrameworks/pull/5024","diff_url":"https://github.com/openframeworks/openFrameworks/pull/5024.diff","patch_url":"https://github.com/openframeworks/openFrameworks/pull/5024.patch","issue_url":"https://api.github.com/repos/openframeworks/openFrameworks/issues/5024","number":5024,"state":"open","locked":false,"title":"add keyboard hot plug support","user":{"login":"DeqingSun","id":1385273,"avatar_url":"https://avatars.githubusercontent.com/u/1385273?v=3","gravatar_id":"","url":"https://api.github.com/users/DeqingSun","html_url":"https://github.com/DeqingSun","followers_url":"https://api.github.com/users/DeqingSun/followers","following_url":"https://api.github.com/users/DeqingSun/following{/other_user}","gists_url":"https://api.github.com/users/DeqingSun/gists{/gist_id}","starred_url":"https://api.github.com/users/DeqingSun/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DeqingSun/subscriptions","organizations_url":"https://api.github.com/users/DeqingSun/orgs","repos_url":"https://api.github.com/users/DeqingSun/repos","events_url":"https://api.github.com/users/DeqingSun/events{/privacy}","received_events_url":"https://api.github.com/users/DeqingSun/received_events","type":"User","site_admin":false},"body":"I used Arduino as Keyboard on RPi with magsafe connection.\r\nSo I added multiple keyboard support and hotplug support. Based on V0.9.2\r\n\r\nBasically I changed keyboard_fd to an array. And another array keeps path of each device.\r\nsetupNativeKeyboard() will first check if any device disappears, and then add new device.\r\nreadNativeUDevEvents() will call setupNativeKeyboard to config new keyboard settings.\r\n\r\n\r\n","created_at":"2016-03-30T09:18:14Z","updated_at":"2016-03-30T09:18:14Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/openframeworks/openFrameworks/pulls/5024/commits","review_comments_url":"https://api.github.com/repos/openframeworks/openFrameworks/pulls/5024/comments","review_comment_url":"https://api.github.com/repos/openframeworks/openFrameworks/pulls/comments{/number}","comments_url":"https://api.github.com/repos/openframeworks/openFrameworks/issues/5024/comments","statuses_url":"https://api.github.com/repos/openframeworks/openFrameworks/statuses/8990e446e4fff5fc0eea61a3e32acb9cb0ec7245","head":{"label":"DeqingSun:keyboard-hotplug","ref":"keyboard-hotplug","sha":"8990e446e4fff5fc0eea61a3e32acb9cb0ec7245","user":{"login":"DeqingSun","id":1385273,"avatar_url":"https://avatars.githubusercontent.com/u/1385273?v=3","gravatar_id":"","url":"https://api.github.com/users/DeqingSun","html_url":"https://github.com/DeqingSun","followers_url":"https://api.github.com/users/DeqingSun/followers","following_url":"https://api.github.com/users/DeqingSun/following{/other_user}","gists_url":"https://api.github.com/users/DeqingSun/gists{/gist_id}","starred_url":"https://api.github.com/users/DeqingSun/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DeqingSun/subscriptions","organizations_url":"https://api.github.com/users/DeqingSun/orgs","repos_url":"https://api.github.com/users/DeqingSun/repos","events_url":"https://api.github.com/users/DeqingSun/events{/privacy}","received_events_url":"https://api.github.com/users/DeqingSun/received_events","type":"User","site_admin":false},"repo":{"id":55048107,"name":"openFrameworks","full_name":"DeqingSun/openFrameworks","owner":{"login":"DeqingSun","id":1385273,"avatar_url":"https://avatars.githubusercontent.com/u/1385273?v=3","gravatar_id":"","url":"https://api.github.com/users/DeqingSun","html_url":"https://github.com/DeqingSun","followers_url":"https://api.github.com/users/DeqingSun/followers","following_url":"https://api.github.com/users/DeqingSun/following{/other_user}","gists_url":"https://api.github.com/users/DeqingSun/gists{/gist_id}","starred_url":"https://api.github.com/users/DeqingSun/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DeqingSun/subscriptions","organizations_url":"https://api.github.com/users/DeqingSun/orgs","repos_url":"https://api.github.com/users/DeqingSun/repos","events_url":"https://api.github.com/users/DeqingSun/events{/privacy}","received_events_url":"https://api.github.com/users/DeqingSun/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/DeqingSun/openFrameworks","description":"openFrameworks is a community-developed cross platform toolkit for creative coding in C++.","fork":true,"url":"https://api.github.com/repos/DeqingSun/openFrameworks","forks_url":"https://api.github.com/repos/DeqingSun/openFrameworks/forks","keys_url":"https://api.github.com/repos/DeqingSun/openFrameworks/keys{/key_id}","collaborators_url":"https://api.github.com/repos/DeqingSun/openFrameworks/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/DeqingSun/openFrameworks/teams","hooks_url":"https://api.github.com/repos/DeqingSun/openFrameworks/hooks","issue_events_url":"https://api.github.com/repos/DeqingSun/openFrameworks/issues/events{/number}","events_url":"https://api.github.com/repos/DeqingSun/openFrameworks/events","assignees_url":"https://api.github.com/repos/DeqingSun/openFrameworks/assignees{/user}","branches_url":"https://api.github.com/repos/DeqingSun/openFrameworks/branches{/branch}","tags_url":"https://api.github.com/repos/DeqingSun/openFrameworks/tags","blobs_url":"https://api.github.com/repos/DeqingSun/openFrameworks/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/DeqingSun/openFrameworks/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/DeqingSun/openFrameworks/git/refs{/sha}","trees_url":"https://api.github.com/repos/DeqingSun/openFrameworks/git/trees{/sha}","statuses_url":"https://api.github.com/repos/DeqingSun/openFrameworks/statuses/{sha}","languages_url":"https://api.github.com/repos/DeqingSun/openFrameworks/languages","stargazers_url":"https://api.github.com/repos/DeqingSun/openFrameworks/stargazers","contributors_url":"https://api.github.com/repos/DeqingSun/openFrameworks/contributors","subscribers_url":"https://api.github.com/repos/DeqingSun/openFrameworks/subscribers","subscription_url":"https://api.github.com/repos/DeqingSun/openFrameworks/subscription","commits_url":"https://api.github.com/repos/DeqingSun/openFrameworks/commits{/sha}","git_commits_url":"https://api.github.com/repos/DeqingSun/openFrameworks/git/commits{/sha}","comments_url":"https://api.github.com/repos/DeqingSun/openFrameworks/comments{/number}","issue_comment_url":"https://api.github.com/repos/DeqingSun/openFrameworks/issues/comments{/number}","contents_url":"https://api.github.com/repos/DeqingSun/openFrameworks/contents/{+path}","compare_url":"https://api.github.com/repos/DeqingSun/openFrameworks/compare/{base}...{head}","merges_url":"https://api.github.com/repos/DeqingSun/openFrameworks/merges","archive_url":"https://api.github.com/repos/DeqingSun/openFrameworks/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/DeqingSun/openFrameworks/downloads","issues_url":"https://api.github.com/repos/DeqingSun/openFrameworks/issues{/number}","pulls_url":"https://api.github.com/repos/DeqingSun/openFrameworks/pulls{/number}","milestones_url":"https://api.github.com/repos/DeqingSun/openFrameworks/milestones{/number}","notifications_url":"https://api.github.com/repos/DeqingSun/openFrameworks/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/DeqingSun/openFrameworks/labels{/name}","releases_url":"https://api.github.com/repos/DeqingSun/openFrameworks/releases{/id}","deployments_url":"https://api.github.com/repos/DeqingSun/openFrameworks/deployments","created_at":"2016-03-30T08:57:21Z","updated_at":"2016-03-30T08:57:58Z","pushed_at":"2016-03-30T09:13:33Z","git_url":"git://github.com/DeqingSun/openFrameworks.git","ssh_url":"git@github.com:DeqingSun/openFrameworks.git","clone_url":"https://github.com/DeqingSun/openFrameworks.git","svn_url":"https://github.com/DeqingSun/openFrameworks","homepage":"http://openframeworks.cc","size":1834897,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"openframeworks:master","ref":"master","sha":"7a3fbce28320c0b421b98f803012e9805730287a","user":{"login":"openframeworks","id":142866,"avatar_url":"https://avatars.githubusercontent.com/u/142866?v=3","gravatar_id":"","url":"https://api.github.com/users/openframeworks","html_url":"https://github.com/openframeworks","followers_url":"https://api.github.com/users/openframeworks/followers","following_url":"https://api.github.com/users/openframeworks/following{/other_user}","gists_url":"https://api.github.com/users/openframeworks/gists{/gist_id}","starred_url":"https://api.github.com/users/openframeworks/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/openframeworks/subscriptions","organizations_url":"https://api.github.com/users/openframeworks/orgs","repos_url":"https://api.github.com/users/openframeworks/repos","events_url":"https://api.github.com/users/openframeworks/events{/privacy}","received_events_url":"https://api.github.com/users/openframeworks/received_events","type":"Organization","site_admin":false},"repo":{"id":345337,"name":"openFrameworks","full_name":"openframeworks/openFrameworks","owner":{"login":"openframeworks","id":142866,"avatar_url":"https://avatars.githubusercontent.com/u/142866?v=3","gravatar_id":"","url":"https://api.github.com/users/openframeworks","html_url":"https://github.com/openframeworks","followers_url":"https://api.github.com/users/openframeworks/followers","following_url":"https://api.github.com/users/openframeworks/following{/other_user}","gists_url":"https://api.github.com/users/openframeworks/gists{/gist_id}","starred_url":"https://api.github.com/users/openframeworks/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/openframeworks/subscriptions","organizations_url":"https://api.github.com/users/openframeworks/orgs","repos_url":"https://api.github.com/users/openframeworks/repos","events_url":"https://api.github.com/users/openframeworks/events{/privacy}","received_events_url":"https://api.github.com/users/openframeworks/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/openframeworks/openFrameworks","description":"openFrameworks is a community-developed cross platform toolkit for creative coding in C++.","fork":false,"url":"https://api.github.com/repos/openframeworks/openFrameworks","forks_url":"https://api.github.com/repos/openframeworks/openFrameworks/forks","keys_url":"https://api.github.com/repos/openframeworks/openFrameworks/keys{/key_id}","collaborators_url":"https://api.github.com/repos/openframeworks/openFrameworks/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/openframeworks/openFrameworks/teams","hooks_url":"https://api.github.com/repos/openframeworks/openFrameworks/hooks","issue_events_url":"https://api.github.com/repos/openframeworks/openFrameworks/issues/events{/number}","events_url":"https://api.github.com/repos/openframeworks/openFrameworks/events","assignees_url":"https://api.github.com/repos/openframeworks/openFrameworks/assignees{/user}","branches_url":"https://api.github.com/repos/openframeworks/openFrameworks/branches{/branch}","tags_url":"https://api.github.com/repos/openframeworks/openFrameworks/tags","blobs_url":"https://api.github.com/repos/openframeworks/openFrameworks/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/openframeworks/openFrameworks/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/openframeworks/openFrameworks/git/refs{/sha}","trees_url":"https://api.github.com/repos/openframeworks/openFrameworks/git/trees{/sha}","statuses_url":"https://api.github.com/repos/openframeworks/openFrameworks/statuses/{sha}","languages_url":"https://api.github.com/repos/openframeworks/openFrameworks/languages","stargazers_url":"https://api.github.com/repos/openframeworks/openFrameworks/stargazers","contributors_url":"https://api.github.com/repos/openframeworks/openFrameworks/contributors","subscribers_url":"https://api.github.com/repos/openframeworks/openFrameworks/subscribers","subscription_url":"https://api.github.com/repos/openframeworks/openFrameworks/subscription","commits_url":"https://api.github.com/repos/openframeworks/openFrameworks/commits{/sha}","git_commits_url":"https://api.github.com/repos/openframeworks/openFrameworks/git/commits{/sha}","comments_url":"https://api.github.com/repos/openframeworks/openFrameworks/comments{/number}","issue_comment_url":"https://api.github.com/repos/openframeworks/openFrameworks/issues/comments{/number}","contents_url":"https://api.github.com/repos/openframeworks/openFrameworks/contents/{+path}","compare_url":"https://api.github.com/repos/openframeworks/openFrameworks/compare/{base}...{head}","merges_url":"https://api.github.com/repos/openframeworks/openFrameworks/merges","archive_url":"https://api.github.com/repos/openframeworks/openFrameworks/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/openframeworks/openFrameworks/downloads","issues_url":"https://api.github.com/repos/openframeworks/openFrameworks/issues{/number}","pulls_url":"https://api.github.com/repos/openframeworks/openFrameworks/pulls{/number}","milestones_url":"https://api.github.com/repos/openframeworks/openFrameworks/milestones{/number}","notifications_url":"https://api.github.com/repos/openframeworks/openFrameworks/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/openframeworks/openFrameworks/labels{/name}","releases_url":"https://api.github.com/repos/openframeworks/openFrameworks/releases{/id}","deployments_url":"https://api.github.com/repos/openframeworks/openFrameworks/deployments","created_at":"2009-10-21T21:55:54Z","updated_at":"2016-03-30T05:49:07Z","pushed_at":"2016-03-29T17:44:42Z","git_url":"git://github.com/openframeworks/openFrameworks.git","ssh_url":"git@github.com:openframeworks/openFrameworks.git","clone_url":"https://github.com/openframeworks/openFrameworks.git","svn_url":"https://github.com/openframeworks/openFrameworks","homepage":"http://openframeworks.cc","size":2235946,"stargazers_count":4241,"watchers_count":4241,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1543,"mirror_url":null,"open_issues_count":646,"forks":1543,"open_issues":646,"watchers":4241,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/openframeworks/openFrameworks/pulls/5024"},"html":{"href":"https://github.com/openframeworks/openFrameworks/pull/5024"},"issue":{"href":"https://api.github.com/repos/openframeworks/openFrameworks/issues/5024"},"comments":{"href":"https://api.github.com/repos/openframeworks/openFrameworks/issues/5024/comments"},"review_comments":{"href":"https://api.github.com/repos/openframeworks/openFrameworks/pulls/5024/comments"},"review_comment":{"href":"https://api.github.com/repos/openframeworks/openFrameworks/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/openframeworks/openFrameworks/pulls/5024/commits"},"statuses":{"href":"https://api.github.com/repos/openframeworks/openFrameworks/statuses/8990e446e4fff5fc0eea61a3e32acb9cb0ec7245"}},"merged":false,"mergeable":null,"mergeable_state":"unknown","merged_by":null,"comments":0,"review_comments":0,"commits":1,"additions":88,"deletions":41,"changed_files":2}}