{"action":"created","issue":{"url":"https://api.github.com/repos/nvaccess/nvda/issues/7784","repository_url":"https://api.github.com/repos/nvaccess/nvda","labels_url":"https://api.github.com/repos/nvaccess/nvda/issues/7784/labels{/name}","comments_url":"https://api.github.com/repos/nvaccess/nvda/issues/7784/comments","events_url":"https://api.github.com/repos/nvaccess/nvda/issues/7784/events","html_url":"https://github.com/nvaccess/nvda/pull/7784","id":275336917,"number":7784,"title":"Allow adding emulated system keyboard keys in the Input Gestures GUI","user":{"login":"leonardder","id":3049216,"avatar_url":"https://avatars1.githubusercontent.com/u/3049216?v=4","gravatar_id":"","url":"https://api.github.com/users/leonardder","html_url":"https://github.com/leonardder","followers_url":"https://api.github.com/users/leonardder/followers","following_url":"https://api.github.com/users/leonardder/following{/other_user}","gists_url":"https://api.github.com/users/leonardder/gists{/gist_id}","starred_url":"https://api.github.com/users/leonardder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/leonardder/subscriptions","organizations_url":"https://api.github.com/users/leonardder/orgs","repos_url":"https://api.github.com/users/leonardder/repos","events_url":"https://api.github.com/users/leonardder/events{/privacy}","received_events_url":"https://api.github.com/users/leonardder/received_events","type":"User","site_admin":false},"labels":[{"id":284594394,"url":"https://api.github.com/repos/nvaccess/nvda/labels/NVDA%20GUI","name":"NVDA GUI","color":"ffffff","default":false},{"id":284597214,"url":"https://api.github.com/repos/nvaccess/nvda/labels/incubating","name":"incubating","color":"ffffff","default":false}],"state":"open","locked":false,"assignee":{"login":"feerrenrut","id":3491346,"avatar_url":"https://avatars2.githubusercontent.com/u/3491346?v=4","gravatar_id":"","url":"https://api.github.com/users/feerrenrut","html_url":"https://github.com/feerrenrut","followers_url":"https://api.github.com/users/feerrenrut/followers","following_url":"https://api.github.com/users/feerrenrut/following{/other_user}","gists_url":"https://api.github.com/users/feerrenrut/gists{/gist_id}","starred_url":"https://api.github.com/users/feerrenrut/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/feerrenrut/subscriptions","organizations_url":"https://api.github.com/users/feerrenrut/orgs","repos_url":"https://api.github.com/users/feerrenrut/repos","events_url":"https://api.github.com/users/feerrenrut/events{/privacy}","received_events_url":"https://api.github.com/users/feerrenrut/received_events","type":"User","site_admin":false},"assignees":[{"login":"feerrenrut","id":3491346,"avatar_url":"https://avatars2.githubusercontent.com/u/3491346?v=4","gravatar_id":"","url":"https://api.github.com/users/feerrenrut","html_url":"https://github.com/feerrenrut","followers_url":"https://api.github.com/users/feerrenrut/followers","following_url":"https://api.github.com/users/feerrenrut/following{/other_user}","gists_url":"https://api.github.com/users/feerrenrut/gists{/gist_id}","starred_url":"https://api.github.com/users/feerrenrut/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/feerrenrut/subscriptions","organizations_url":"https://api.github.com/users/feerrenrut/orgs","repos_url":"https://api.github.com/users/feerrenrut/repos","events_url":"https://api.github.com/users/feerrenrut/events{/privacy}","received_events_url":"https://api.github.com/users/feerrenrut/received_events","type":"User","site_admin":false}],"milestone":null,"comments":15,"created_at":"2017-11-20T12:20:14Z","updated_at":"2018-03-07T06:59:00Z","closed_at":null,"author_association":"COLLABORATOR","pull_request":{"url":"https://api.github.com/repos/nvaccess/nvda/pulls/7784","html_url":"https://github.com/nvaccess/nvda/pull/7784","diff_url":"https://github.com/nvaccess/nvda/pull/7784.diff","patch_url":"https://github.com/nvaccess/nvda/pull/7784.patch"},"body":"### Link to issue number:\r\nCloses #6060.\r\n\r\n### Summary of the issue:\r\nIn the current situation, emulated system keyboard key scripts can only be added in gestures.ini or by updating a gesture map programmatically.\r\n\r\n### Description of how this pull request fixes the issue:\r\nAllows adding custom emulated system keyboard keys from the input gestures gui, by selecting the category root tree view item and pressing add. An user will be able to enter a gesture to emulate, the entered gesture will be added to the tree view as a regular script and can be assigned as normal.\r\n\r\n### Testing performed:\r\nAdded and removed several gestures from the gui.\r\n\r\n### Known issues with pull request:\r\nSome minor UX problems regarding adding and removing custom emulated keys:\r\n\r\n1. When adding an emulated key without assigning it, an user can also press the remove button, in which case the emulated script disappears.\r\n2. Same is the case when adding a new emulated key, assigning it and then unassigning it.\r\n3. When you add a custom emulated key and then close the dialog, the custom emulated key is lost. This is documented in the user guide.\r\n4. When you add an emulated key and assign it, then save, the remove the assignment, you can't remove the emulated script. After saving again, the emulated script will be removed anyway.\r\n\r\nThese issues have to do with the fact that we can't reliably check from the input gestures dialog whether a custom emulation script is part of the user gesture map or another map. IN the latter case, removal should be unsupported. Thus, explicit removal of an emulated script is only possible when it has been added during that instance of the input gestures dialog.\r\n\r\nHonestly, I think these are trivial issues, so I'm filing this pr to let initial review take place and discuss the limitations in the current implementation.\r\n\r\n### Change log entry:\r\n* New features\r\n    + New emulated system keyboard keys can be added from NVDA's Input gestures dialog. (#6060)\r\n        - To do this, press the add button after you selected the Emulated system keyboard keys category."},"comment":{"url":"https://api.github.com/repos/nvaccess/nvda/issues/comments/371042851","html_url":"https://github.com/nvaccess/nvda/pull/7784#issuecomment-371042851","issue_url":"https://api.github.com/repos/nvaccess/nvda/issues/7784","id":371042851,"user":{"login":"leonardder","id":3049216,"avatar_url":"https://avatars1.githubusercontent.com/u/3049216?v=4","gravatar_id":"","url":"https://api.github.com/users/leonardder","html_url":"https://github.com/leonardder","followers_url":"https://api.github.com/users/leonardder/followers","following_url":"https://api.github.com/users/leonardder/following{/other_user}","gists_url":"https://api.github.com/users/leonardder/gists{/gist_id}","starred_url":"https://api.github.com/users/leonardder/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/leonardder/subscriptions","organizations_url":"https://api.github.com/users/leonardder/orgs","repos_url":"https://api.github.com/users/leonardder/repos","events_url":"https://api.github.com/users/leonardder/events{/privacy}","received_events_url":"https://api.github.com/users/leonardder/received_events","type":"User","site_admin":false},"created_at":"2018-03-07T06:59:00Z","updated_at":"2018-03-07T06:59:00Z","author_association":"COLLABORATOR","body":"I belief there are still some UX issues that need to be discussed here:\r\n\r\n1. When you add a custom emulated key and then close the dialog, the custom emulated key is lost. This is documented in the user guide.\r\n2. When you add an emulated key and assign it, then save, the remove the assignment, you can't remove the emulated script. After saving again, the emulated script will be removed anyway.\r\n\r\nAs for the latter point, this is because from the input gestures dialog, we can't distinguish between the several gesture maps, built-in or user. Of course, someone shouldn't be allowed to remove an emulation script that is part of a built-in map, such as a braille display map."}}
{"actor":{"display_login":"leonardder"}}