A cross platform solution for controlling your PC from a mobile device (This is a university project for the course CSE-2216 (Application Development Lab) at the Department of Computer Science and Engineering, University of Dhaka.)
This application is in essence an all in one solution to control your desktop computer from a mobile device. This app aims to be a simple, minimalistic and easy to use way to control your desktop when you are unable to physically do it yourself. Not only does it provide the conventional mouse and keyboard support, it also provides easy interfaces for directly controlling presentation software, pdf readers, media players and much much more.
- Client application repository: hotkey-client
- Server (desktop client) application repository: hotkey-server
Head on over to the release pages of hotkey-client and hotkey-server to download the latest release.
hotkey-client (Android app)
hotkey-server (Desktop client)
For the server (desktop client) you need to have JRE 11.0 or higher to run the application.
For client application the minimum supported android version is Android 4.0.3 Ice Cream Sandwich (API 15)
After downloading install/run the respective applications. Note that both server and client should be compatible (If downloading the latest release of both or their major versions are same then you should be safe).
If you don't know how to install third party apks see this.
Once installed, run the desktop client exe or jar and press Start
and then QR code
button (this will show a QR code on the screen). Then with the app press WiFI/LAN
(or Bluetooth
depending on how you wish to connect) and scan the QR code. And voila the devices are connected.
An exhaustive list of all currently available features and components in our application are as follows:
There are 2 main modes of connecting the mobile and desktop (server) applications.
- WiFi/LAN: If both devices are under the same Local Area Network (LAN) via WiFi or ethernet, this connection mode is available.
- Bluetooth: If the mobile device as well as the desktop device supports bluetooth, this connection mode is available. Both methods use QR code for doing the authentication and handshake (so that the user does not have to manually enter any address).
- Keyboard emulation: Emulate keyboard
- Mouse/touchpad emulation: Emulated mouse via touchpad like interface
- Live screen feed: See a live feed of the desktop screen while controlling. You can also interact (move and click the cursor) while using this mode.
- Presentation/Powerpoint assistant: This has facilities such as enter/exit slide show, goto next/previous slide, etc. It even has the feature of using a virtual laser pointer which can be moved by the app.
- PDF reader: Next/previous page, fullscreen, layout fit width/height, goto page, etc.
- Gamepad: Has a gamepad layout like layout with configurable buttons (mappable to keyboard keys).
- Custom macros: One can save certain key combinations for faster use in certain situations.
- Media keys: contains buttons for invoking the hardware buttons for play, pause, skip next, skip previous, volume up, volume down, etc.
The repository consists of two git submodules for the client and server (desktop client) respectively. Each repository is a self sufficient project. The client module is an Android Studio project and the server module is a Java gradle project (IntelliJ IDEA).
You will find instructions on how to build from source by yourself in the corresponding repositories.
The git workflow follows the Git Flow Workflow by Vincent Driessen. It is based in two main branches with infinite lifetime.
master
— this branch contains production code. All development code is merged into master in sometime.develop
— this branch contains pre-production code. When the features are finished then they are merged into develop.
During the development cycle, a variety of supporting branches are used:
feature-*
— feature branches are used to develop new features for the upcoming releases. May branch off from develop and must merge into develop.hotfix-*
— hotfix branches are necessary to act immediately upon an undesired status of master. May branch off from master and must merge into master anddevelop.release-*
— release branches support preparation of a new production release. They allow many minor bug to be fixed and preparation of meta-data for a release. May branch off from develop and must merge into master and develop.
If you wish to support or collaborate on this project please contact one of the members of the team.