kdeconnect-kde/plugins/mousepad
Prajna Sariputra f059491b95 [plugins/mousepad]: Add support for the persistence feature of the RemoteDesktop portal
This allows us to avoid asking the user for permission for remote control on Wayland every time kdeconnectd is restarted for whatever reason (for example logging out or rebooting), at least in theory. The idea is that the SelectDevices call now also accepts a restore token, and if the user grants permission to persist a restore token will be returned in the response of the Start call.

Currently https://invent.kde.org/plasma/xdg-desktop-portal-kde/-/merge_requests/265 is required for this to work at all with Plasma 6, and even then persistence only works in the same session (for example if I restart kdeconnectd then I only get the notification instead of the permissions prompt), if I reboot the system then the token gets invalidated and the permissions dialog appears again, not sure if the issue is with what I'm doing here or if that's a bug in the portal.

Things that need to be checked:
- What happens if the portal implementation only has v1 of the protocol and not v2 (the one with persistence)?
  - In particular what happens for the SelectDevices call if a restore token is given despite the portal not supporting it
    - Seems fine with xdg-desktop-portal 1.14.4 at least
  - For the Start call we'll need to handle the case of the user denying the persistence request anyway
- Where and how should the restore token be stored?
  - ~~I used KConfig just so I have something to test, but the restore token isn't really a setting~~
    - Updated to use `KSharedConfig::openStateConfig`
  - Most of KDE Connect's settings and data appear to be for each connected device
  - The device name is a global setting, but it's implemented using QSettings rather than KConfig, and currently only setName and getName is exposed in `core/kdeconnectconfig.h`

BUG: 479013
(cherry picked from commit 383ad27b59)
2024-01-28 15:00:33 +01:00
..
abstractremoteinput.cpp kdeconnect_add_plugin: Autogenerate logging category 2023-08-07 19:47:41 +02:00
abstractremoteinput.h kdeconnect_add_plugin: Autogenerate logging category 2023-08-07 19:47:41 +02:00
CMakeLists.txt Cleanup all occurences of QT_MAJOR_VERSION in cmake 2023-12-28 17:49:07 +01:00
config-mousepad.h.cmake Reduce number of optional dependencies 2023-07-19 17:08:03 +00:00
kdeconnect_mousepad.json SVN_SILENT made messages (.desktop file) - always resolve ours 2024-01-14 03:36:56 +00:00
macosremoteinput.h Use pragma once in plugins 2023-07-22 20:51:19 +00:00
macosremoteinput.mm Add explicit moc includes to cpp files 2023-07-30 07:27:45 +00:00
mousepadplugin.cpp Simplify KDEConnectPlugin::recievePacket 2023-08-03 20:49:44 +02:00
mousepadplugin.h Simplify KDEConnectPlugin::recievePacket 2023-08-03 20:49:44 +02:00
README Implementation of mousepad plugin 2014-06-27 15:43:34 +02:00
waylandremoteinput.cpp [plugins/mousepad]: Add support for the persistence feature of the RemoteDesktop portal 2024-01-28 15:00:33 +01:00
waylandremoteinput.h [plugins/mousepad]: Add support for the persistence feature of the RemoteDesktop portal 2024-01-28 15:00:33 +01:00
windowsremoteinput.cpp Add explicit moc includes to cpp files 2023-07-30 07:27:45 +00:00
windowsremoteinput.h Use pragma once in plugins 2023-07-22 20:51:19 +00:00
x11remoteinput.cpp Drop obsolete QT_VERSION_CHECK ifdefs from code 2023-12-28 19:18:02 +01:00
x11remoteinput.h Use pragma once in plugins 2023-07-22 20:51:19 +00:00

When the user moves his on the phone, dx and dy (The difference between the last movement and the current movement of the X and Y Axis respectively)
is sent inside a NetworkPackage QCursor is used to move mouse cursor according to its relative position.

When the user tap or double taps his phone, a mouse key button is simulated using XTestFakeButtonEvent