Romain Vimont
3da95b52bd
Rename scrcpy-server.jar to scrcpy-server
...
The server name ending with .jar has several drawbacks:
- meson requires the jar executable to attempt to modify it:
<https://github.com/Genymobile/scrcpy/issues/404#issuecomment-456065923 >
<https://github.com/mesonbuild/meson/issues/4844 >
- meson warns during "ninja install"
<https://github.com/Genymobile/scrcpy/issues/458 >
- some users try to execute it on the computer as a java executable
Removing the extension solves all these problems.
2019-10-31 10:54:29 +01:00
Romain Vimont
f9938dbf88
Inject button state for touch/mouse events
...
The buttons state was forwarded, but ignored by the server.
2019-10-25 11:04:04 +02:00
Romain Vimont
c33a147fd0
Fix "turn screen off" on Android Q
...
Call getInternalDisplayToken(), which retrieve the id of the first
physical display (which is not necessarily 0 anymore).
Fixes <https://github.com/Genymobile/scrcpy/issues/835 >
2019-10-17 23:25:00 +02:00
Romain Vimont
8b33c6c108
Adapt copy-paste methods for Android 10
...
The methods getPrimaryClip() and setPrimaryClip() expect an additional
parameter since Android 10.
Fixes <https://github.com/Genymobile/scrcpy/issues/796 >.
2019-10-17 22:21:47 +02:00
Romain Vimont
5b7a0cd8e9
Extract String literal to static constant
2019-10-17 22:11:39 +02:00
Romain Vimont
bab9361948
Do not crash on control error
...
Some devices do not have some methods that we invoke via reflection, or
their call do not return the expected value. In that case, do not crash
the whole controller.
2019-10-17 22:09:54 +02:00
Romain Vimont
6220456def
Merge mouse and touch events
...
Both are handled the very same way on the device.
2019-10-03 20:37:49 +02:00
Romain Vimont
7e1d52c119
Rename "touch pointer" to "pointer"
...
There are only touch pointers now, mouse pointers have been removed.
2019-10-03 20:27:28 +02:00
Romain Vimont
280d5b718c
Use common pointers for mouse and touch
...
The mouse is a pointer like any other.
2019-10-03 20:05:29 +02:00
Romain Vimont
f765aae352
Inject touch events on the server
...
On receiving an "inject touch" control message, update the local
pointers state and inject touches.
2019-10-03 20:05:29 +02:00
Romain Vimont
77f876e29c
Add "inject touch" control message
...
Add a control message type in the protocol to forward touch events to
the device.
2019-10-03 20:05:27 +02:00
Romain Vimont
d90549d1e6
Rename "pointer" to "mouse pointer"
...
This will help to distinguish them from "touch pointers".
2019-10-02 21:40:26 +02:00
Romain Vimont
7d1932b907
Fix gradle warnings in tests
2019-09-28 12:23:54 +02:00
Romain Vimont
6e38e0cbfe
Rename variable names "event" to "msg"
...
Some variable names had not been renamed when "event" was renamed to
"message" (28980bbc90
).
2019-09-15 17:29:03 +02:00
Romain Vimont
7040e8abc4
Fix control message reader test
...
The mouse event test actually tested a key event control message.
2019-09-15 17:29:03 +02:00
toddsierens
27eacc3c11
Update WindowManager.java
2019-08-08 17:17:48 -04:00
Romain Vimont
6b3d9e3eab
Add unit test for device message serialization
...
There was a test for the deserialization, but not for the serialization.
2019-07-30 12:17:33 +02:00
Romain Vimont
056e47e752
Replace "cannot" by "could not"
2019-06-23 20:52:03 +02:00
Romain Vimont
439b009a79
Fix expected parameters count in error message
2019-06-23 20:47:21 +02:00
Romain Vimont
4940746bcb
Remove useless else
...
The if-block ends with a return.
2019-06-14 10:15:53 +02:00
Romain Vimont
fe758e6e15
Improve comment
...
Rephrase to simplify and add a link to the issue.
2019-06-14 10:11:15 +02:00
Arne Schwabe
b769083a5b
Use getPhysicalDisplayToken on Anroid Q+ instead of getBuiltInDisplay
...
This makes the -S (screen off) parameter work on Android Q beta 4
Closes #586
2019-06-13 13:30:54 +02:00
Romain Vimont
1afe9ce2ee
Fix deprecation warning in Java unit test
2019-06-11 21:48:58 +02:00
Romain Vimont
273cec8a92
Fix typo in test name
2019-06-11 21:47:31 +02:00
Romain Vimont
8604f16b30
Truncate device name at UTF-8 code point boundary
...
Just in case.
2019-06-07 17:45:03 +02:00
Romain Vimont
8e66b33000
Add option to turn device screen off
...
In addition to the shortcut (Ctrl+o) to turn the device screen off, add
a command-line argument to turn it off on start.
2019-06-05 00:55:46 +02:00
Romain Vimont
acc4dcd520
Disable server controller if --no-control
...
If --no-control is disabled, there is no need for a controller.
It also avoids to power on the device on start if control is disabled.
2019-06-05 00:25:57 +02:00
Romain Vimont
e572d81fa2
Rename function to "power on"
...
This will reduce confusion between "power on" when the device is off and
"turn device screen off" while mirroring.
2019-06-02 20:34:52 +02:00
Romain Vimont
0792998cc2
Remove unused import
...
Introduced by the previous commit.
2019-05-31 23:31:53 +02:00
Romain Vimont
12a3bb25d3
Implement device screen off while mirroring
...
Add two shortcuts:
- Ctrl+o to turn the device screen off while mirroring
- Ctrl+Shift+o to turn it back on
On power on (either via the POWER key or BACK while screen is off), both
the device screen and the mirror are turned on.
<https://github.com/Genymobile/scrcpy/issues/175 >
2019-05-31 23:07:23 +02:00
Romain Vimont
6537c2ef01
Add clipboard logs
...
Synchronizing local and device clipboards in invisible. Add INFO logs
on success.
2019-05-31 16:18:00 +02:00
Romain Vimont
ad55a9addc
Prefix server logs
...
Sometimes, it is not obvious whether a log is generated by the server or
by the client. Prefix server logs for clarity.
2019-05-31 16:18:00 +02:00
Romain Vimont
28980bbc90
Rename "event" to "message"
...
After the recent refactorings, a "control event" is not necessarily an
"event" (it may be a "command"). Similarly, the unique "device event"
used to send the device clipboard content is more a "reponse" to the
request from the client than an "event".
Rename both to "message", and rename the message types to better
describe their intent.
2019-05-31 16:18:00 +02:00
Romain Vimont
c13a24389c
Implement computer-to-device clipboard copy
...
It was already possible to _paste_ (with Ctrl+v) the content of the
computer clipboard on the device. Technically, it injects a sequence of
events to generate the text.
Add a new feature (Ctrl+Shift+v) to copy to the device clipboard
instead, without injecting the content. Contrary to events injection,
this preserves the UTF-8 content exactly, so the text is not broken by
special characters.
<https://github.com/Genymobile/scrcpy/issues/413 >
2019-05-30 22:46:52 +02:00
Romain Vimont
2322069656
Extract control event String parsing
...
Parsing a String from a serialized control event, encoded as length (2
bytes) + data, will be necessary in several events.
Extract it to a separate method.
2019-05-30 22:46:52 +02:00
Romain Vimont
61f5f96b42
Fix control event String parsing
...
At least 2 bytes must be available to read the length of the String.
2019-05-30 22:46:52 +02:00
Romain Vimont
63c078ee6c
Implement device-to-computer clipboard copy
...
On Ctrl+C:
- the client sends a GET_CLIPBOARD command to the device;
- the device retrieve its current clipboard text and sends it in a
GET_CLIPBOARD device event;
- the client sets this text as the system clipboard text, so that it
can be pasted in another application.
Fixes <https://github.com/Genymobile/scrcpy/issues/145 >
2019-05-30 22:46:52 +02:00
Romain Vimont
3149e2cf4a
Add device event sender
...
Create a separate component to send device events, managed by the
controller.
2019-05-30 22:46:52 +02:00
Romain Vimont
f9d2d99166
Add GET_CLIPBOARD device event
...
Add the first device event, used to forward the device clipboard to the
computer.
2019-05-30 22:36:22 +02:00
Romain Vimont
ec71a3f66a
Use two sockets for video and control
...
The socket used the device-to-computer direction to stream the video and
the computer-to-device direction to send control events.
Some features, like copy-paste from device to computer, require to send
non-video data from the device to the computer.
To make them possible, use two sockets:
- one for streaming the video from the device to the client;
- one for control/events in both directions.
2019-05-30 22:35:41 +02:00
Romain Vimont
0a7fe7ad57
Add helpers to truncate UTF-8 at code points
...
This will help to avoid truncating a UTF-8 string in the middle of a
code point, producing an invalid UTF-8 result.
2019-05-30 22:30:18 +02:00
Romain Vimont
3aa5426cad
Add unit tests for control events serialization
...
Add missing tests for serialization and deserialization of control
events.
2019-05-30 22:30:18 +02:00
Romain Vimont
ad4c061cd2
Use custom class Point
...
The framework class android.graphics.Point cannot be used in unit tests.
Implement our own Point.
2019-05-30 22:30:18 +02:00
Romain Vimont
63909fd10d
Merge commands with other control events
...
Several commands were grouped under the same event type "command", with
a separate field to indicate the actual command.
Move these commands at the same level as other control events. It will
allow to implement commands with arguments.
2019-05-30 22:30:18 +02:00
Romain Vimont
7ed976967f
Fix checkstyle warning
...
Checkstyle wants a specific order of imports.
2019-05-30 00:22:05 +02:00
Romain Vimont
3068457b90
Log characters failed to be injected
...
Some characters may not be injected (e.g. '\r`). Log them instead of
ignoring them silently.
2019-05-20 08:40:10 +02:00
Yu-Chen Lin
1630f923ef
Return success count in injectText
...
It will insert as many text as possible now.
Fix #509 , tested on Windows 10 and Arch Linux.
Signed-off-by: Yu-Chen Lin <npes87184@gmail.com>
2019-05-20 08:36:32 +02:00
Romain Vimont
c8338b2918
Recover if expand/collapse panels is not available
...
Some devices don't have the required method. Recover gracefully without
crashing the server.
Fixes <https://github.com/Genymobile/scrcpy/issues/506 >.
2019-05-04 14:49:48 +02:00
Romain Vimont
2837c6eaab
Add method to log error without throwable
...
Add Ln.e(message) in addition to Ln.e(message, error).
2019-05-04 14:49:04 +02:00
Romain Vimont
01664777c8
Merge branch 'master' into dev
2019-05-04 14:48:54 +02:00