{"action":"created","issue":{"url":"https://api.github.com/repos/synergy/synergy/issues/4269","labels_url":"https://api.github.com/repos/synergy/synergy/issues/4269/labels{/name}","comments_url":"https://api.github.com/repos/synergy/synergy/issues/4269/comments","events_url":"https://api.github.com/repos/synergy/synergy/issues/4269/events","html_url":"https://github.com/synergy/synergy/issues/4269","id":51342693,"number":4269,"title":"Implement UDP for mouse move messages","user":{"login":"the-wes","id":1994203,"avatar_url":"https://avatars.githubusercontent.com/u/1994203?v=3","gravatar_id":"","url":"https://api.github.com/users/the-wes","html_url":"https://github.com/the-wes","followers_url":"https://api.github.com/users/the-wes/followers","following_url":"https://api.github.com/users/the-wes/following{/other_user}","gists_url":"https://api.github.com/users/the-wes/gists{/gist_id}","starred_url":"https://api.github.com/users/the-wes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/the-wes/subscriptions","organizations_url":"https://api.github.com/users/the-wes/orgs","repos_url":"https://api.github.com/users/the-wes/repos","events_url":"https://api.github.com/users/the-wes/events{/privacy}","received_events_url":"https://api.github.com/users/the-wes/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/synergy/synergy/labels/enhancement","name":"enhancement","color":"009800"},{"url":"https://api.github.com/repos/synergy/synergy/labels/priority-next","name":"priority-next","color":"bfe5bf"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":8,"created_at":"2014-12-08T19:38:56Z","updated_at":"2015-09-10T14:49:06Z","closed_at":null,"body":"Problem: Some users experience laggy mouse movements on slow networks\r\n\r\nSolution: Use UDP for mouse messages instead of TCP\r\n\r\nUDP is faster than TCP. It does this by gutting the parts of TCP which make TCP more reliable: delivery assurance, stateful connections. UDP would be ideal for mouse movements, since the next movement always overrides the previous one, making dropped packets irrelevant. However it would be less ideal for keyboard events, as a dropped packet here would mean losing keystrokes.\r\n\r\nIn short, we want keyboard events to be queued up, while mouse events not so much."},"comment":{"url":"https://api.github.com/repos/synergy/synergy/issues/comments/139269627","html_url":"https://github.com/synergy/synergy/issues/4269#issuecomment-139269627","issue_url":"https://api.github.com/repos/synergy/synergy/issues/4269","id":139269627,"user":{"login":"DiThi","id":1127198,"avatar_url":"https://avatars.githubusercontent.com/u/1127198?v=3","gravatar_id":"","url":"https://api.github.com/users/DiThi","html_url":"https://github.com/DiThi","followers_url":"https://api.github.com/users/DiThi/followers","following_url":"https://api.github.com/users/DiThi/following{/other_user}","gists_url":"https://api.github.com/users/DiThi/gists{/gist_id}","starred_url":"https://api.github.com/users/DiThi/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DiThi/subscriptions","organizations_url":"https://api.github.com/users/DiThi/orgs","repos_url":"https://api.github.com/users/DiThi/repos","events_url":"https://api.github.com/users/DiThi/events{/privacy}","received_events_url":"https://api.github.com/users/DiThi/received_events","type":"User","site_admin":false},"created_at":"2015-09-10T14:49:06Z","updated_at":"2015-09-10T14:49:06Z","body":"In my case, TCP is super laggy sometimes, losing some mouse movement messages shouold just skip a bit instead of making it laggy for a couple of seconds. Switched from wifi to bluetooth and there's no occasional congestion but more uniform packet loss so it's always laggy.\r\n\r\nIf we use UDP for mouse move only, it should also send one mouse move via TCP before every key and button event, in case the equivalent UDP packet didn't arrive and the user doesn't click where they predict. It's important for keys too, as there's places sensitive to mouse position (e.g. X-Window style focus, Blender areas).\r\n\r\nOf course all this only would work well for absolute mouse positioning. For when relative is needed, the host should send \"absolute-like\" coordinates that are converted to relative by the client."}}