{"id":1413,"date":"2025-03-15T03:56:24","date_gmt":"2025-03-15T03:56:24","guid":{"rendered":"https:\/\/www.ippd.ufl.edu\/blogs\/ay2425team05\/?p=1413"},"modified":"2025-03-15T03:56:25","modified_gmt":"2025-03-15T03:56:25","slug":"week-23-mobile-gestures-and-keyboard-pressers","status":"publish","type":"post","link":"https:\/\/www.ippd.ufl.edu\/blogs\/ay2425team05\/2025\/03\/15\/week-23-mobile-gestures-and-keyboard-pressers\/","title":{"rendered":"Week 23: Mobile gestures and keyboard pressers"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"654\" src=\"https:\/\/www.ippd.ufl.edu\/blogs\/ay2425team05\/wp-content\/uploads\/sites\/181\/2025\/03\/picture-1024x654.jpg\" alt=\"\" class=\"wp-image-1423\" srcset=\"https:\/\/www.ippd.ufl.edu\/blogs\/ay2425team05\/wp-content\/uploads\/sites\/181\/2025\/03\/picture-1024x654.jpg 1024w, https:\/\/www.ippd.ufl.edu\/blogs\/ay2425team05\/wp-content\/uploads\/sites\/181\/2025\/03\/picture-300x192.jpg 300w, https:\/\/www.ippd.ufl.edu\/blogs\/ay2425team05\/wp-content\/uploads\/sites\/181\/2025\/03\/picture-768x491.jpg 768w, https:\/\/www.ippd.ufl.edu\/blogs\/ay2425team05\/wp-content\/uploads\/sites\/181\/2025\/03\/picture-1536x982.jpg 1536w, https:\/\/www.ippd.ufl.edu\/blogs\/ay2425team05\/wp-content\/uploads\/sites\/181\/2025\/03\/picture-329x210.jpg 329w, https:\/\/www.ippd.ufl.edu\/blogs\/ay2425team05\/wp-content\/uploads\/sites\/181\/2025\/03\/picture.jpg 2000w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">SyncAssist coding on our free work day!<\/figcaption><\/figure>\n\n\n\n<p>This week for SyncAssist has been all about mobile remote control! Based on our discussion with our liaison engineers on how mobile remote control should work, we&#8217;ve since worked on two main modes of control: gesture control, and keyboard control.<\/p>\n\n\n\n<p>In order to be able to navigate a remote desktop using only touch gestures, we decided that we would at minimum need to simulate the Tab, Shift + Tab, and Enter key combinations so that the user could focus on elements and select them. Thus, we mapped these shortcuts to the &#8216;swipe right&#8217;, &#8216;swipe left&#8217;, and &#8216;tap&#8217; gestures, respectively. We are in the process of to simulating additional shortcuts like Alt + Tab for switching applications by using more complex gestures such as a swipe up and hold, then swipe right and release, but we also recognize that there&#8217;s a fine line between an additional gesture being useful or being too complex to use.<\/p>\n\n\n\n<p>On the keyboard side, we&#8217;ve been able to map all the keys from external keyboards to be properly handled by the controller and sent to the host! Unfortunately, we&#8217;ve encountered a similar issue as we have with desktop remote control \u2014 we&#8217;ll have to write native code to block any keyboard inputs received by the controller from being simulated because certain shortcuts \u2014 like Alt + Tab \u2014 are protected. And though this will be probably be pretty straightforward on Android, we&#8217;re doubtful that we&#8217;ll be able to block any system-level shortcuts on iOS in typical Apple fashion. If this really is the case, then we might only be able to allow full remote control on Android devices, and gesture-based control on iOS.<\/p>\n\n\n\n<p>Regardless, we&#8217;ve made a ton of progress in the past few weeks and will be enjoying our well-deserved spring break! Until next time!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This week for SyncAssist has been all about mobile remote control! Based on our discussion with our liaison engineers on how mobile remote control should work, we&#8217;ve since worked on two main modes of control: gesture control, and keyboard control.&hellip; <a href=\"https:\/\/www.ippd.ufl.edu\/blogs\/ay2425team05\/2025\/03\/15\/week-23-mobile-gestures-and-keyboard-pressers\/\" aria-label=\"Read \\\"Week 23: Mobile gestures and keyboard pressers\\\" class=\"read-more\">Read&nbsp;More<\/a><\/p>\n","protected":false},"author":619,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":"","_links_to":"","_links_to_target":""},"categories":[12],"tags":[],"class_list":["post-1413","post","type-post","status-publish","format-standard","hentry","category-springsemester"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.ippd.ufl.edu\/blogs\/ay2425team05\/wp-json\/wp\/v2\/posts\/1413"}],"collection":[{"href":"https:\/\/www.ippd.ufl.edu\/blogs\/ay2425team05\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ippd.ufl.edu\/blogs\/ay2425team05\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ippd.ufl.edu\/blogs\/ay2425team05\/wp-json\/wp\/v2\/users\/619"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ippd.ufl.edu\/blogs\/ay2425team05\/wp-json\/wp\/v2\/comments?post=1413"}],"version-history":[{"count":5,"href":"https:\/\/www.ippd.ufl.edu\/blogs\/ay2425team05\/wp-json\/wp\/v2\/posts\/1413\/revisions"}],"predecessor-version":[{"id":1433,"href":"https:\/\/www.ippd.ufl.edu\/blogs\/ay2425team05\/wp-json\/wp\/v2\/posts\/1413\/revisions\/1433"}],"wp:attachment":[{"href":"https:\/\/www.ippd.ufl.edu\/blogs\/ay2425team05\/wp-json\/wp\/v2\/media?parent=1413"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ippd.ufl.edu\/blogs\/ay2425team05\/wp-json\/wp\/v2\/categories?post=1413"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ippd.ufl.edu\/blogs\/ay2425team05\/wp-json\/wp\/v2\/tags?post=1413"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}