{"action":"created","issue":{"url":"https://api.github.com/repos/symless/synergy-core/issues/5287","repository_url":"https://api.github.com/repos/symless/synergy-core","labels_url":"https://api.github.com/repos/symless/synergy-core/issues/5287/labels{/name}","comments_url":"https://api.github.com/repos/symless/synergy-core/issues/5287/comments","events_url":"https://api.github.com/repos/symless/synergy-core/issues/5287/events","html_url":"https://github.com/symless/synergy-core/issues/5287","id":149835303,"node_id":"MDU6SXNzdWUxNDk4MzUzMDM=","number":5287,"title":"Non-identity Coordinate Transformation Matrix confuses pointer warping on X11","user":{"login":"jigpu","id":600734,"node_id":"MDQ6VXNlcjYwMDczNA==","avatar_url":"https://avatars0.githubusercontent.com/u/600734?v=4","gravatar_id":"","url":"https://api.github.com/users/jigpu","html_url":"https://github.com/jigpu","followers_url":"https://api.github.com/users/jigpu/followers","following_url":"https://api.github.com/users/jigpu/following{/other_user}","gists_url":"https://api.github.com/users/jigpu/gists{/gist_id}","starred_url":"https://api.github.com/users/jigpu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jigpu/subscriptions","organizations_url":"https://api.github.com/users/jigpu/orgs","repos_url":"https://api.github.com/users/jigpu/repos","events_url":"https://api.github.com/users/jigpu/events{/privacy}","received_events_url":"https://api.github.com/users/jigpu/received_events","type":"User","site_admin":false},"labels":[{"id":137227003,"node_id":"MDU6TGFiZWwxMzcyMjcwMDM=","url":"https://api.github.com/repos/symless/synergy-core/labels/bug","name":"bug","color":"b60205","default":true}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":14,"created_at":"2016-04-20T17:32:05Z","updated_at":"2018-11-19T12:56:50Z","closed_at":null,"author_association":"NONE","body":"Under X11, devices have a \"Coordinate Transformation Matrix\" property that is often used by applications to restrict devices with absolute input (e.g. a touchscreen or Wacom tablet) to a single monitor. Coordinates reported by the device are multiplied by the transformation matrix as a final step before the X server actually moves the cursor in response to device movement.\n\nIt appears that Synergy's pointer warping code does not work as expected when this property is set. Specifically, it appears that when using my Wacom tablet \"puck\" in relative mode with a transformation matrix of \"0.5, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0\" (as set by the GNOME Control Center after mapping the tablet to one of my displays) a series of events like the following will be produced:\n\n```\n# Move puck to the left on the server\n[2016-04-20T08:45:44] DEBUG2: event: MotionNotify 26,426\n        /build/synergy/src/synergy-1.7.6-stable/src/lib/platform/XWindowsScreen.cpp,1592\n[2016-04-20T08:45:44] DEBUG2: event: MotionNotify 19,428\n        /build/synergy/src/synergy-1.7.6-stable/src/lib/platform/XWindowsScreen.cpp,1592\n[2016-04-20T08:45:44] DEBUG2: event: MotionNotify 12,431\n        /build/synergy/src/synergy-1.7.6-stable/src/lib/platform/XWindowsScreen.cpp,1592\n[2016-04-20T08:45:45] DEBUG2: event: MotionNotify 6,434\n        /build/synergy/src/synergy-1.7.6-stable/src/lib/platform/XWindowsScreen.cpp,1592\n[2016-04-20T08:45:45] DEBUG2: event: MotionNotify 0,436\n        /build/synergy/src/synergy-1.7.6-stable/src/lib/platform/XWindowsScreen.cpp,1592\n[2016-04-20T08:45:45] DEBUG2: find neighbor on left of \"linux-server\"\n        /build/synergy/src/synergy-1.7.6-stable/src/lib/server/Server.cpp,612\n[2016-04-20T08:45:45] DEBUG2: \"linux-client\" is on left of \"linux-server\" at 0.363750\n        /build/synergy/src/synergy-1.7.6-stable/src/lib/server/Server.cpp,635\n[2016-04-20T08:45:45] DEBUG1: try to leave \"linux-server\" on left\n        /build/synergy/src/synergy-1.7.6-stable/src/lib/server/Server.cpp,809\n...\n# Warps cursor to center of monitor and enters client from right\n[2016-04-20T08:45:45] DEBUG2: warped to 960,600\n        /build/synergy/src/synergy-1.7.6-stable/src/lib/platform/XWindowsScreen.cpp,1947\n[2016-04-20T08:45:45] DEBUG1: send enter to \"linux-client\", 1599,327 1 2000\n        /build/synergy/src/synergy-1.7.6-stable/src/lib/server/ClientProxy1_0.cpp,260\n...\n# Motion events and warps occur as I continue moving puck left\n[2016-04-20T08:45:45] DEBUG2: event: MotionNotify 433,608\n        /build/synergy/src/synergy-1.7.6-stable/src/lib/platform/XWindowsScreen.cpp,1592\n[2016-04-20T08:45:45] DEBUG2: warped to 960,600\n        /build/synergy/src/synergy-1.7.6-stable/src/lib/platform/XWindowsScreen.cpp,1947\n[2016-04-20T08:45:45] DEBUG2: event: MotionNotify 474,600\n        /build/synergy/src/synergy-1.7.6-stable/src/lib/platform/XWindowsScreen.cpp,1592\n[2016-04-20T08:45:45] DEBUG2: warped to 960,600\n        /build/synergy/src/synergy-1.7.6-stable/src/lib/platform/XWindowsScreen.cpp,1947\n[2016-04-20T08:45:45] DEBUG2: event: MotionNotify 960,600\n        /build/synergy/src/synergy-1.7.6-stable/src/lib/platform/XWindowsScreen.cpp,1592\n[2016-04-20T08:45:45] DEBUG2: event: MotionNotify 470,601\n        /build/synergy/src/synergy-1.7.6-stable/src/lib/platform/XWindowsScreen.cpp,1592\n[2016-04-20T08:45:45] DEBUG2: warped to 960,600\n        /build/synergy/src/synergy-1.7.6-stable/src/lib/platform/XWindowsScreen.cpp,1947\n[2016-04-20T08:45:45] DEBUG2: event: MotionNotify 960,600\n        /build/synergy/src/synergy-1.7.6-stable/src/lib/platform/XWindowsScreen.cpp,1592\n[2016-04-20T08:45:45] DEBUG2: event: MotionNotify 465,602\n        /build/synergy/src/synergy-1.7.6-stable/src/lib/platform/XWindowsScreen.cpp,1592\n[2016-04-20T08:45:45] DEBUG2: warped to 960,600\n        /build/synergy/src/synergy-1.7.6-stable/src/lib/platform/XWindowsScreen.cpp,1947\n[2016-04-20T08:45:45] DEBUG2: event: MotionNotify 960,600\n        /build/synergy/src/synergy-1.7.6-stable/src/lib/platform/XWindowsScreen.cpp,1592\n...\n# Server sends events off to the client\n[2016-04-20T08:45:45] DEBUG2: onMouseMoveSecondary -527,+8\n        /build/synergy/src/synergy-1.7.6-stable/src/lib/server/Server.cpp,1873\n[2016-04-20T08:45:45] DEBUG2: onMouseMoveSecondary +41,-8\n        /build/synergy/src/synergy-1.7.6-stable/src/lib/server/Server.cpp,1873\n[2016-04-20T08:45:45] DEBUG2: onMouseMoveSecondary +486,+0\n        /build/synergy/src/synergy-1.7.6-stable/src/lib/server/Server.cpp,1873\n[2016-04-20T08:45:45] DEBUG2: onMouseMoveSecondary -490,+1\n        /build/synergy/src/synergy-1.7.6-stable/src/lib/server/Server.cpp,1873\n[2016-04-20T08:45:45] DEBUG2: onMouseMoveSecondary +490,-1\n        /build/synergy/src/synergy-1.7.6-stable/src/lib/server/Server.cpp,1873\n[2016-04-20T08:45:45] DEBUG2: onMouseMoveSecondary -495,+2\n        /build/synergy/src/synergy-1.7.6-stable/src/lib/server/Server.cpp,1873\n[2016-04-20T08:45:45] DEBUG2: onMouseMoveSecondary +495,-2\n        /build/synergy/src/synergy-1.7.6-stable/src/lib/server/Server.cpp,1873\n```\n\nIt appears that the X server passes the warped coordinate (960,600) through the transformation matrix, causing it to \"think\" the pointer is actually at (480,600). When a relative motion occurs, the next event is reported based on that assumption, but the Synergy server still believes it to be at (960,600). The result is that massive deltas are sent to the Synergy client, and often (though it cannot be seen in the trace above) ends up causing the pointer to become pinned to the left-hand side of the client.\n\nI'm not sure if Synergy should be taking the transformation matrix into account when warping the pointer, or if the X server should /not/ be taking it into account, but either way setting the matrix back to identity \"1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0\" prevents the bug from being triggered.\n"},"comment":{"url":"https://api.github.com/repos/symless/synergy-core/issues/comments/439883889","html_url":"https://github.com/symless/synergy-core/issues/5287#issuecomment-439883889","issue_url":"https://api.github.com/repos/symless/synergy-core/issues/5287","id":439883889,"node_id":"MDEyOklzc3VlQ29tbWVudDQzOTg4Mzg4OQ==","user":{"login":"IvanVolosyuk","id":7278365,"node_id":"MDQ6VXNlcjcyNzgzNjU=","avatar_url":"https://avatars1.githubusercontent.com/u/7278365?v=4","gravatar_id":"","url":"https://api.github.com/users/IvanVolosyuk","html_url":"https://github.com/IvanVolosyuk","followers_url":"https://api.github.com/users/IvanVolosyuk/followers","following_url":"https://api.github.com/users/IvanVolosyuk/following{/other_user}","gists_url":"https://api.github.com/users/IvanVolosyuk/gists{/gist_id}","starred_url":"https://api.github.com/users/IvanVolosyuk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/IvanVolosyuk/subscriptions","organizations_url":"https://api.github.com/users/IvanVolosyuk/orgs","repos_url":"https://api.github.com/users/IvanVolosyuk/repos","events_url":"https://api.github.com/users/IvanVolosyuk/events{/privacy}","received_events_url":"https://api.github.com/users/IvanVolosyuk/received_events","type":"User","site_admin":false},"created_at":"2018-11-19T12:56:50Z","updated_at":"2018-11-19T12:56:50Z","author_association":"NONE","body":"That's the problem in xorg which causes this effects as was mentioned here.\n\nOn Mon, Nov 19, 2018, 12:12 Anatoly <notifications@github.com> wrote:\n\n> Having the same issue both on Ubuntu 16.04 and Ubuntu 18.04 fresh images.\n> At Ubuntu 18.04 when cursor position is being wrapped and then unwrapped\n> again by some application (for example - Minecraft game) cursor jumps to\n> some random position on the screen.\n> At Ubuntu 16.04 occurs both previously described behavior while also when\n> dragging files on the desktop or in the file manager (nautilus) cursor\n> randomly jumps to some position near bottom-right corner of the screen.\n>\n> I am using custom CTM (xinput --set-prop <my_mouse_id> Coordinate\n> Transformation Matrix 1 0 0 0 1 0 0 0 0.7), my mouse is Logitech G502,\n> also tested with some Razor mouse my roommate has, the same bug occurs.\n>\n> This bug is fixed simply by setting transformation matrix values to\n> default ones, but that does not satisfies me because I am using it to\n> increase my mouse sensitivity. Spent days already trying out different\n> fixes, checking different solutions, nothing works.\n>\n> I have to say though that this behaviour started appearing first about 6\n> month ago, so my best guess is that some driver \\ kernel part got updated\n> which causes this issue. I am going to be trying to install older versions\n> of Ubuntu in the near future and trying out dragging items & minecraft\n> without connecting to the internet so I wouldn't get any updated software\n> or drivers installed (planning on taking 1 year old .iso image of Ubuntu).\n>\n> If anyone could help me out with this problem though you can either\n> contact me via email (in profile) or post here.\n>\n> —\n> You are receiving this because you commented.\n> Reply to this email directly, view it on GitHub\n> <https://github.com/symless/synergy-core/issues/5287#issuecomment-439744086>,\n> or mute the thread\n> <https://github.com/notifications/unsubscribe-auth/AG8PHcuojARUfbdA9mc0wBmUjC9FKU5Bks5uwgWYgaJpZM4IL7t1>\n> .\n>\n"}}
{"actor":{"display_login":"IvanVolosyuk"}}