From 2f03d7ab81fe5efc6f90c15560cac010dbbda1bd Mon Sep 17 00:00:00 2001 From: Win7GM Date: Thu, 20 Aug 2020 02:19:39 +0800 Subject: [PATCH 1/3] Create README_zh.md --- README_zh.md | 754 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 754 insertions(+) create mode 100644 README_zh.md diff --git a/README_zh.md b/README_zh.md new file mode 100644 index 00000000..adf1faab --- /dev/null +++ b/README_zh.md @@ -0,0 +1,754 @@ +# scrcpy (v1.16) + +本应用程序可以让你实现在电脑上对安卓设备的查看和操作。 +该程序不要求 _root_ 权限,它只需要您的手机和电脑通过USB(或通过TCP/IP)连接。 +该应用程序可以在 _GNU/Linux_, _Windows_ and _macOS_ 环境下运行 + +![screenshot](assets/screenshot-debian-600.jpg) + +它专注于: + + - **轻量** (原生,仅显示设备屏幕) + - **性能** (30~60fps) + - **质量** (分辨率可达1920x1080或更高) + - **低延迟** (35-70ms) + - **快速启动** (数秒内即能开始显示) + - **无侵入性** (不需要在安卓设备上安装任何程序) + + +## 使用要求 + +安卓设备系统版本需要在Android 5.0(API 21)或以上。 + +确保您在设备上开启了[adb调试]。 + +[adb调试]: https://developer.android.com/studio/command-line/adb.html#Enabling + +在某些设备上,你还需要开启[额外的选项]以用鼠标和键盘进行控制。 + +[额外的选项]: https://github.com/Genymobile/scrcpy/issues/70#issuecomment-373286323 + + +## 获取应用程序 + +Packaging status + +### Linux + +在Debian (_testing_ and _sid_ for now) 和Ubuntu (20.04)上: + +``` +apt install scrcpy +``` + +[Snap]包也是可用的: [`scrcpy`][snap-link]. + +[snap-link]: https://snapstats.org/snaps/scrcpy + +[snap]: https://en.wikipedia.org/wiki/Snappy_(package_manager) + +对于Fedora用户,我们提供[COPR]包: [`scrcpy`][copr-link]. + +[COPR]: https://fedoraproject.org/wiki/Category:Copr +[copr-link]: https://copr.fedorainfracloud.org/coprs/zeno/scrcpy/ + +对于Arch Linux用户,我们提供[AUR]包: [`scrcpy`][aur-link]. + +[AUR]: https://wiki.archlinux.org/index.php/Arch_User_Repository +[aur-link]: https://aur.archlinux.org/packages/scrcpy/ + +对于Gentoo用户,我们提供[Ebuild]包:[`scrcpy/`][ebuild-link]. + +[Ebuild]: https://wiki.gentoo.org/wiki/Ebuild +[ebuild-link]: https://github.com/maggu2810/maggu2810-overlay/tree/master/app-mobilephone/scrcpy + +您也可以[自行编译][BUILD](不必担心,这并不困难)。 + + + +### Windows + +在Windows上,简便起见,我们准备了包含所有依赖项(包括adb)的程序。 + + - [`scrcpy-win64-v1.16.zip`][direct-win64] + _(SHA-256: 3f30dc5db1a2f95c2b40a0f5de91ec1642d9f53799250a8c529bc882bc0918f0)_ + +[direct-win64]: https://github.com/Genymobile/scrcpy/releases/download/v1.16/scrcpy-win64-v1.16.zip + +您也可以在[Chocolatey]下载: + +[Chocolatey]: https://chocolatey.org/ + +```bash +choco install scrcpy +choco install adb # 如果你没有adb +``` + +也可以使用 [Scoop]: + +```bash +scoop install scrcpy +scoop install adb # 如果你没有adb +``` + +[Scoop]: https://scoop.sh + +您也可以[自行编译][BUILD]。 + + +### macOS + +本应用程序可以使用[Homebrew]下载。直接安装就可以了: + +[Homebrew]: https://brew.sh/ + +```bash +brew install scrcpy +``` + +您需要 `adb`,并且它应该可以通过 `PATH`被访问。如果您没有: + +```bash +brew cask install android-platform-tools +``` + +您也可以[自行编译][BUILD]。 + + +## 运行程序 + +用USB链接电脑和安卓设备,并执行: + +```bash +scrcpy +``` + +本程序接受命令行输入,可以通过如下命令查看帮助: + +```bash +scrcpy --help +``` + +## 功能介绍 + +### 画面设置 + +#### 缩小分辨率 + +有时候,将设备输出分辨率降低可以有效地提升性能。 + +我们可以将高度和宽度都限制在一定大小内(如 1024): + +```bash +scrcpy --max-size 1024 +scrcpy -m 1024 # short version +``` + +The other dimension is computed to that the device aspect ratio is preserved. +That way, a device in 1920×1080 will be mirrored at 1024×576. + + +#### 修改画面比特率 + +The default bit-rate is 8 Mbps. To change the video bitrate (e.g. to 2 Mbps): + +```bash +scrcpy --bit-rate 2M +scrcpy -b 2M # short version +``` + +#### Limit frame rate + +The capture frame rate can be limited: + +```bash +scrcpy --max-fps 15 +``` + +This is officially supported since Android 10, but may work on earlier versions. + +#### Crop + +The device screen may be cropped to mirror only part of the screen. + +This is useful for example to mirror only one eye of the Oculus Go: + +```bash +scrcpy --crop 1224:1440:0:0 # 1224x1440 at offset (0,0) +``` + +If `--max-size` is also specified, resizing is applied after cropping. + + +#### Lock video orientation + + +To lock the orientation of the mirroring: + +```bash +scrcpy --lock-video-orientation 0 # natural orientation +scrcpy --lock-video-orientation 1 # 90° counterclockwise +scrcpy --lock-video-orientation 2 # 180° +scrcpy --lock-video-orientation 3 # 90° clockwise +``` + +This affects recording orientation. + + +### Recording + +It is possible to record the screen while mirroring: + +```bash +scrcpy --record file.mp4 +scrcpy -r file.mkv +``` + +To disable mirroring while recording: + +```bash +scrcpy --no-display --record file.mp4 +scrcpy -Nr file.mkv +# interrupt recording with Ctrl+C +``` + +"Skipped frames" are recorded, even if they are not displayed in real time (for +performance reasons). Frames are _timestamped_ on the device, so [packet delay +variation] does not impact the recorded file. + +[packet delay variation]: https://en.wikipedia.org/wiki/Packet_delay_variation + + +### Connection + +#### Wireless + +_Scrcpy_ uses `adb` to communicate with the device, and `adb` can [connect] to a +device over TCP/IP: + +1. Connect the device to the same Wi-Fi as your computer. +2. Get your device IP address (in Settings → About phone → Status). +3. Enable adb over TCP/IP on your device: `adb tcpip 5555`. +4. Unplug your device. +5. Connect to your device: `adb connect DEVICE_IP:5555` _(replace `DEVICE_IP`)_. +6. Run `scrcpy` as usual. + +It may be useful to decrease the bit-rate and the definition: + +```bash +scrcpy --bit-rate 2M --max-size 800 +scrcpy -b2M -m800 # short version +``` + +[connect]: https://developer.android.com/studio/command-line/adb.html#wireless + + +#### Multi-devices + +If several devices are listed in `adb devices`, you must specify the _serial_: + +```bash +scrcpy --serial 0123456789abcdef +scrcpy -s 0123456789abcdef # short version +``` + +If the device is connected over TCP/IP: + +```bash +scrcpy --serial 192.168.0.1:5555 +scrcpy -s 192.168.0.1:5555 # short version +``` + +You can start several instances of _scrcpy_ for several devices. + +#### Autostart on device connection + +You could use [AutoAdb]: + +```bash +autoadb scrcpy -s '{}' +``` + +[AutoAdb]: https://github.com/rom1v/autoadb + +#### SSH tunnel + +To connect to a remote device, it is possible to connect a local `adb` client to +a remote `adb` server (provided they use the same version of the _adb_ +protocol): + +```bash +adb kill-server # kill the local adb server on 5037 +ssh -CN -L5037:localhost:5037 -R27183:localhost:27183 your_remote_computer +# keep this open +``` + +From another terminal: + +```bash +scrcpy +``` + +To avoid enabling remote port forwarding, you could force a forward connection +instead (notice the `-L` instead of `-R`): + +```bash +adb kill-server # kill the local adb server on 5037 +ssh -CN -L5037:localhost:5037 -L27183:localhost:27183 your_remote_computer +# keep this open +``` + +From another terminal: + +```bash +scrcpy --force-adb-forward +``` + + +Like for wireless connections, it may be useful to reduce quality: + +``` +scrcpy -b2M -m800 --max-fps 15 +``` + +### Window configuration + +#### Title + +By default, the window title is the device model. It can be changed: + +```bash +scrcpy --window-title 'My device' +``` + +#### Position and size + +The initial window position and size may be specified: + +```bash +scrcpy --window-x 100 --window-y 100 --window-width 800 --window-height 600 +``` + +#### Borderless + +To disable window decorations: + +```bash +scrcpy --window-borderless +``` + +#### Always on top + +To keep the scrcpy window always on top: + +```bash +scrcpy --always-on-top +``` + +#### Fullscreen + +The app may be started directly in fullscreen: + +```bash +scrcpy --fullscreen +scrcpy -f # short version +``` + +Fullscreen can then be toggled dynamically with MOD+f. + +#### Rotation + +The window may be rotated: + +```bash +scrcpy --rotation 1 +``` + +Possibles values are: + - `0`: no rotation + - `1`: 90 degrees counterclockwise + - `2`: 180 degrees + - `3`: 90 degrees clockwise + +The rotation can also be changed dynamically with MOD+ +_(left)_ and MOD+ _(right)_. + +Note that _scrcpy_ manages 3 different rotations: +- MOD+r requests the device to switch between portrait and + landscape (the current running app may refuse, if it does support the + requested orientation). + - `--lock-video-orientation` changes the mirroring orientation (the orientation + of the video sent from the device to the computer). This affects the + recording. + - `--rotation` (or MOD+/MOD+) + rotates only the window content. This affects only the display, not the + recording. + + +### Other mirroring options + +#### Read-only + +To disable controls (everything which can interact with the device: input keys, +mouse events, drag&drop files): + +```bash +scrcpy --no-control +scrcpy -n +``` + +#### Display + +If several displays are available, it is possible to select the display to +mirror: + +```bash +scrcpy --display 1 +``` + +The list of display ids can be retrieved by: + +``` +adb shell dumpsys display # search "mDisplayId=" in the output +``` + +The secondary display may only be controlled if the device runs at least Android +10 (otherwise it is mirrored in read-only). + + +#### Stay awake + +To prevent the device to sleep after some delay when the device is plugged in: + +```bash +scrcpy --stay-awake +scrcpy -w +``` + +The initial state is restored when scrcpy is closed. + + +#### Turn screen off + +It is possible to turn the device screen off while mirroring on start with a +command-line option: + +```bash +scrcpy --turn-screen-off +scrcpy -S +``` + +Or by pressing MOD+o at any time. + +To turn it back on, press MOD+Shift+o. + +On Android, the `POWER` button always turns the screen on. For convenience, if +`POWER` is sent via scrcpy (via right-click or MOD+p), it +will force to turn the screen off after a small delay (on a best effort basis). +The physical `POWER` button will still cause the screen to be turned on. + +It can also be useful to prevent the device from sleeping: + +```bash +scrcpy --turn-screen-off --stay-awake +scrcpy -Sw +``` + + +#### Render expired frames + +By default, to minimize latency, _scrcpy_ always renders the last decoded frame +available, and drops any previous one. + +To force the rendering of all frames (at a cost of a possible increased +latency), use: + +```bash +scrcpy --render-expired-frames +``` + +#### Show touches + +For presentations, it may be useful to show physical touches (on the physical +device). + +Android provides this feature in _Developers options_. + +_Scrcpy_ provides an option to enable this feature on start and restore the +initial value on exit: + +```bash +scrcpy --show-touches +scrcpy -t +``` + +Note that it only shows _physical_ touches (with the finger on the device). + + +#### Disable screensaver + +By default, scrcpy does not prevent the screensaver to run on the computer. + +To disable it: + +```bash +scrcpy --disable-screensaver +``` + + +### Input control + +#### Rotate device screen + +Press MOD+r to switch between portrait and landscape +modes. + +Note that it rotates only if the application in foreground supports the +requested orientation. + +#### Copy-paste + +Any time the Android clipboard changes, it is automatically synchronized to the +computer clipboard. + +Any Ctrl shortcut is forwarded to the device. In particular: + - Ctrl+c typically copies + - Ctrl+x typically cuts + - Ctrl+v typically pastes (after computer-to-device + clipboard synchronization) + +This typically works as you expect. + +The actual behavior depends on the active application though. For example, +_Termux_ sends SIGINT on Ctrl+c instead, and _K-9 Mail_ +composes a new message. + +To copy, cut and paste in such cases (but only supported on Android >= 7): + - MOD+c injects `COPY` + - MOD+x injects `CUT` + - MOD+v injects `PASTE` (after computer-to-device + clipboard synchronization) + +In addition, MOD+Shift+v allows to inject the +computer clipboard text as a sequence of key events. This is useful when the +component does not accept text pasting (for example in _Termux_), but it can +break non-ASCII content. + +**WARNING:** Pasting the computer clipboard to the device (either via +Ctrl+v or MOD+v) copies the content +into the device clipboard. As a consequence, any Android application could read +its content. You should avoid to paste sensitive content (like passwords) that +way. + + +#### Pinch-to-zoom + +To simulate "pinch-to-zoom": Ctrl+_click-and-move_. + +More precisely, hold Ctrl while pressing the left-click button. Until +the left-click button is released, all mouse movements scale and rotate the +content (if supported by the app) relative to the center of the screen. + +Concretely, scrcpy generates additional touch events from a "virtual finger" at +a location inverted through the center of the screen. + + +#### Text injection preference + +There are two kinds of [events][textevents] generated when typing text: + - _key events_, signaling that a key is pressed or released; + - _text events_, signaling that a text has been entered. + +By default, letters are injected using key events, so that the keyboard behaves +as expected in games (typically for WASD keys). + +But this may [cause issues][prefertext]. If you encounter such a problem, you +can avoid it by: + +```bash +scrcpy --prefer-text +``` + +(but this will break keyboard behavior in games) + +[textevents]: https://blog.rom1v.com/2018/03/introducing-scrcpy/#handle-text-input +[prefertext]: https://github.com/Genymobile/scrcpy/issues/650#issuecomment-512945343 + + +#### Key repeat + +By default, holding a key down generates repeated key events. This can cause +performance problems in some games, where these events are useless anyway. + +To avoid forwarding repeated key events: + +```bash +scrcpy --no-key-repeat +``` + + +### File drop + +#### Install APK + +To install an APK, drag & drop an APK file (ending with `.apk`) to the _scrcpy_ +window. + +There is no visual feedback, a log is printed to the console. + + +#### Push file to device + +To push a file to `/sdcard/` on the device, drag & drop a (non-APK) file to the +_scrcpy_ window. + +There is no visual feedback, a log is printed to the console. + +The target directory can be changed on start: + +```bash +scrcpy --push-target /sdcard/foo/bar/ +``` + + +### Audio forwarding + +Audio is not forwarded by _scrcpy_. Use [sndcpy]. + +Also see [issue #14]. + +[sndcpy]: https://github.com/rom1v/sndcpy +[issue #14]: https://github.com/Genymobile/scrcpy/issues/14 + + +## Shortcuts + +In the following list, MOD is the shortcut modifier. By default, it's +(left) Alt or (left) Super. + +It can be changed using `--shortcut-mod`. Possible keys are `lctrl`, `rctrl`, +`lalt`, `ralt`, `lsuper` and `rsuper`. For example: + +```bash +# use RCtrl for shortcuts +scrcpy --shortcut-mod=rctrl + +# use either LCtrl+LAlt or LSuper for shortcuts +scrcpy --shortcut-mod=lctrl+lalt,lsuper +``` + +_[Super] is typically the Windows or Cmd key._ + +[Super]: https://en.wikipedia.org/wiki/Super_key_(keyboard_button) + + | Action | Shortcut + | ------------------------------------------- |:----------------------------- + | Switch fullscreen mode | MOD+f + | Rotate display left | MOD+ _(left)_ + | Rotate display right | MOD+ _(right)_ + | Resize window to 1:1 (pixel-perfect) | MOD+g + | Resize window to remove black borders | MOD+w \| _Double-click¹_ + | Click on `HOME` | MOD+h \| _Middle-click_ + | Click on `BACK` | MOD+b \| _Right-click²_ + | Click on `APP_SWITCH` | MOD+s + | Click on `MENU` (unlock screen) | MOD+m + | Click on `VOLUME_UP` | MOD+ _(up)_ + | Click on `VOLUME_DOWN` | MOD+ _(down)_ + | Click on `POWER` | MOD+p + | Power on | _Right-click²_ + | Turn device screen off (keep mirroring) | MOD+o + | Turn device screen on | MOD+Shift+o + | Rotate device screen | MOD+r + | Expand notification panel | MOD+n + | Collapse notification panel | MOD+Shift+n + | Copy to clipboard³ | MOD+c + | Cut to clipboard³ | MOD+x + | Synchronize clipboards and paste³ | MOD+v + | Inject computer clipboard text | MOD+Shift+v + | Enable/disable FPS counter (on stdout) | MOD+i + | Pinch-to-zoom | Ctrl+_click-and-move_ + +_¹Double-click on black borders to remove them._ +_²Right-click turns the screen on if it was off, presses BACK otherwise._ +_³Only on Android >= 7._ + +All Ctrl+_key_ shortcuts are forwarded to the device, so they are +handled by the active application. + + +## Custom paths + +To use a specific _adb_ binary, configure its path in the environment variable +`ADB`: + + ADB=/path/to/adb scrcpy + +To override the path of the `scrcpy-server` file, configure its path in +`SCRCPY_SERVER_PATH`. + +[useful]: https://github.com/Genymobile/scrcpy/issues/278#issuecomment-429330345 + + +## Why _scrcpy_? + +A colleague challenged me to find a name as unpronounceable as [gnirehtet]. + +[`strcpy`] copies a **str**ing; `scrcpy` copies a **scr**een. + +[gnirehtet]: https://github.com/Genymobile/gnirehtet +[`strcpy`]: http://man7.org/linux/man-pages/man3/strcpy.3.html + + +## How to build? + +See [BUILD]. + +[BUILD]: BUILD.md + + +## Common issues + +See the [FAQ](FAQ.md). + + +## Developers + +Read the [developers page]. + +[developers page]: DEVELOP.md + + +## Licence + + Copyright (C) 2018 Genymobile + Copyright (C) 2018-2020 Romain Vimont + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +## Articles + +- [Introducing scrcpy][article-intro] +- [Scrcpy now works wirelessly][article-tcpip] + +[article-intro]: https://blog.rom1v.com/2018/03/introducing-scrcpy/ +[article-tcpip]: https://www.genymotion.com/blog/open-source-project-scrcpy-now-works-wirelessly/ + +## Translations + +This README is available in other languages: + +- [繁體中文 (Traditional Chinese, `zh-Hant`) - v1.15](README.zh-Hant.md) +- [한국어 (Korean, `ko`) - v1.11](README.ko.md) +- [português brasileiro (Brazilian Portuguese, `pt-BR`) - v1.12.1](README.pt-br.md) + +Only this README file is guaranteed to be up-to-date. From a09ac0b90ca08cce215be6d99c3c38b64d36e8f7 Mon Sep 17 00:00:00 2001 From: Win7GM Date: Thu, 20 Aug 2020 12:57:59 +0800 Subject: [PATCH 2/3] Update README_zh.md --- README_zh.md | 162 ++++++++++++++++++++++++--------------------------- 1 file changed, 75 insertions(+), 87 deletions(-) diff --git a/README_zh.md b/README_zh.md index adf1faab..e6e06fdf 100644 --- a/README_zh.md +++ b/README_zh.md @@ -144,122 +144,120 @@ scrcpy --max-size 1024 scrcpy -m 1024 # short version ``` -The other dimension is computed to that the device aspect ratio is preserved. -That way, a device in 1920×1080 will be mirrored at 1024×576. +较短的一边会被按比例缩小以保持设备的显示比例。 +这样,1920x1080的设备会以1020x576的分辨率显示。 #### 修改画面比特率 -The default bit-rate is 8 Mbps. To change the video bitrate (e.g. to 2 Mbps): +默认的比特率是8Mbps。如果要改变画面的比特率 (比如说改成2Mbps): ```bash scrcpy --bit-rate 2M scrcpy -b 2M # short version ``` -#### Limit frame rate +#### 限制画面帧率 -The capture frame rate can be limited: +画面的帧率可以通过下面的命令被限制: ```bash scrcpy --max-fps 15 ``` -This is officially supported since Android 10, but may work on earlier versions. +这个功能仅在Android 10和以后的版本被Android官方支持,但也有可能在更早的版本可用。 -#### Crop +#### 画面裁剪 -The device screen may be cropped to mirror only part of the screen. +设备画面可在输出到电脑时被裁切,以仅显示屏幕的一部分。 -This is useful for example to mirror only one eye of the Oculus Go: +这项功能可以用于,例如,只显示Oculus Go的一只眼睛。 ```bash scrcpy --crop 1224:1440:0:0 # 1224x1440 at offset (0,0) ``` -If `--max-size` is also specified, resizing is applied after cropping. +如果`--max-size`在同时被指定,分辨率的改变将在画面裁切后进行。 -#### Lock video orientation +#### 锁定屏幕朝向 -To lock the orientation of the mirroring: +可以使用如下命令锁定屏幕朝向: ```bash -scrcpy --lock-video-orientation 0 # natural orientation -scrcpy --lock-video-orientation 1 # 90° counterclockwise +scrcpy --lock-video-orientation 0 # 自然朝向 +scrcpy --lock-video-orientation 1 # 90° 逆时针旋转 scrcpy --lock-video-orientation 2 # 180° -scrcpy --lock-video-orientation 3 # 90° clockwise +scrcpy --lock-video-orientation 3 # 90° 顺时针旋转 ``` -This affects recording orientation. +该设定影响录制。 -### Recording +### 屏幕录制 -It is possible to record the screen while mirroring: +可以在传输的同时录制视频: ```bash scrcpy --record file.mp4 scrcpy -r file.mkv ``` -To disable mirroring while recording: +在不开启屏幕共享的同时录制: ```bash scrcpy --no-display --record file.mp4 scrcpy -Nr file.mkv -# interrupt recording with Ctrl+C +# 按Ctrl+C以停止录制 ``` -"Skipped frames" are recorded, even if they are not displayed in real time (for -performance reasons). Frames are _timestamped_ on the device, so [packet delay -variation] does not impact the recorded file. +在显示中“被跳过的帧”会被录制,虽然它们由于性能原因没有实时显示。 +在传输中每一帧都有 _时间戳_ ,所以 [包时延变化] 并不影响录制的文件。 -[packet delay variation]: https://en.wikipedia.org/wiki/Packet_delay_variation +[包时延变化]: https://en.wikipedia.org/wiki/Packet_delay_variation -### Connection +### 连接方式 -#### Wireless +#### 无线 -_Scrcpy_ uses `adb` to communicate with the device, and `adb` can [connect] to a -device over TCP/IP: +_Scrcpy_ 使用`adb`来与安卓设备连接。同时,`adb`能够通过TCP/IP[连接]到安卓设备: -1. Connect the device to the same Wi-Fi as your computer. -2. Get your device IP address (in Settings → About phone → Status). -3. Enable adb over TCP/IP on your device: `adb tcpip 5555`. -4. Unplug your device. -5. Connect to your device: `adb connect DEVICE_IP:5555` _(replace `DEVICE_IP`)_. -6. Run `scrcpy` as usual. +1. 将您的安卓设备和电脑连接至同一Wi-Fi。 +2. 获取安卓设备的IP地址(在设置-关于手机-状态信息)。 +3. 打开安卓设备的网络adb功能`adb tcpip 5555`。 +4. 将您的设备与电脑断开连接。 +5. 连接到您的设备:`adb connect DEVICE_IP:5555` _(用设备IP替换 `DEVICE_IP`)_. +6. 运行`scrcpy`。 -It may be useful to decrease the bit-rate and the definition: +降低比特率和分辨率可能有助于性能: ```bash scrcpy --bit-rate 2M --max-size 800 scrcpy -b2M -m800 # short version ``` -[connect]: https://developer.android.com/studio/command-line/adb.html#wireless +[连接]: https://developer.android.com/studio/command-line/adb.html#wireless -#### Multi-devices +#### 多设备 -If several devices are listed in `adb devices`, you must specify the _serial_: +如果多个设备在执行`adb devices`后被列出,您必须指定设备的 _序列号_ : ```bash scrcpy --serial 0123456789abcdef scrcpy -s 0123456789abcdef # short version ``` -If the device is connected over TCP/IP: +如果设备是通过TCP/IP方式连接到电脑的: ```bash scrcpy --serial 192.168.0.1:5555 scrcpy -s 192.168.0.1:5555 # short version ``` -You can start several instances of _scrcpy_ for several devices. +您可以同时启动多个 _scrcpy_ 实例以同时显示多个设备的画面。 #### Autostart on device connection @@ -311,67 +309,67 @@ Like for wireless connections, it may be useful to reduce quality: scrcpy -b2M -m800 --max-fps 15 ``` -### Window configuration +### 窗口设置 -#### Title +#### 标题 -By default, the window title is the device model. It can be changed: +窗口的标题默认为设备型号。您可以通过如下命令修改它: ```bash scrcpy --window-title 'My device' ``` -#### Position and size +#### 位置和大小 -The initial window position and size may be specified: +您可以指定初始的窗口位置和大小: ```bash scrcpy --window-x 100 --window-y 100 --window-width 800 --window-height 600 ``` -#### Borderless +#### 无边框 -To disable window decorations: +关闭边框: ```bash scrcpy --window-borderless ``` -#### Always on top +#### 保持窗口在最前 -To keep the scrcpy window always on top: +您可以通过如下命令保持窗口在最前面: ```bash scrcpy --always-on-top ``` -#### Fullscreen +#### 全屏 -The app may be started directly in fullscreen: +您可以通过如下命令直接全屏打开共享: ```bash scrcpy --fullscreen scrcpy -f # short version ``` -Fullscreen can then be toggled dynamically with MOD+f. +全屏状态可以通过MOD+f实时改变。 -#### Rotation +#### 旋转 -The window may be rotated: +通过如下命令,窗口可以旋转: ```bash scrcpy --rotation 1 ``` -Possibles values are: - - `0`: no rotation - - `1`: 90 degrees counterclockwise - - `2`: 180 degrees - - `3`: 90 degrees clockwise +可选的值有: + - `0`: 无旋转 + - `1`: 逆时针旋转90° + - `2`: 旋转180° + - `3`: 顺时针旋转90° -The rotation can also be changed dynamically with MOD+ -_(left)_ and MOD+ _(right)_. +这同样可以使用MOD+ +_(left)_ and MOD+ _(right)_ 的快捷键实时更改。 Note that _scrcpy_ manages 3 different rotations: - MOD+r requests the device to switch between portrait and @@ -676,46 +674,46 @@ All Ctrl+_key_ shortcuts are forwarded to the device, so they are handled by the active application. -## Custom paths +## 自定义路径 -To use a specific _adb_ binary, configure its path in the environment variable -`ADB`: +为了使用您想使用的 _adb_ ,您可以在环境变量 +`ADB`中设置它的路径: ADB=/path/to/adb scrcpy -To override the path of the `scrcpy-server` file, configure its path in -`SCRCPY_SERVER_PATH`. +如果需要覆盖`scrcpy-server`的路径,您可以在 +`SCRCPY_SERVER_PATH`中设置它。 [useful]: https://github.com/Genymobile/scrcpy/issues/278#issuecomment-429330345 -## Why _scrcpy_? +## 为什么叫 _scrcpy_ ? -A colleague challenged me to find a name as unpronounceable as [gnirehtet]. +一个同事让我找出一个和[gnirehtet]一样难以发音的名字。 -[`strcpy`] copies a **str**ing; `scrcpy` copies a **scr**een. +[`strcpy`] 可以复制**str**ing; `scrcpy` 可以“复制”**scr**een。 [gnirehtet]: https://github.com/Genymobile/gnirehtet [`strcpy`]: http://man7.org/linux/man-pages/man3/strcpy.3.html -## How to build? +## 如何编译? -See [BUILD]. +请查看[编译]。 -[BUILD]: BUILD.md +[编译]: BUILD.md -## Common issues +## 常见问题 -See the [FAQ](FAQ.md). +请查看[FAQ](FAQ.md). -## Developers +## 开发者 -Read the [developers page]. +请查看[开发者页面]。 -[developers page]: DEVELOP.md +[开发者]: DEVELOP.md ## Licence @@ -742,13 +740,3 @@ Read the [developers page]. [article-intro]: https://blog.rom1v.com/2018/03/introducing-scrcpy/ [article-tcpip]: https://www.genymotion.com/blog/open-source-project-scrcpy-now-works-wirelessly/ - -## Translations - -This README is available in other languages: - -- [繁體中文 (Traditional Chinese, `zh-Hant`) - v1.15](README.zh-Hant.md) -- [한국어 (Korean, `ko`) - v1.11](README.ko.md) -- [português brasileiro (Brazilian Portuguese, `pt-BR`) - v1.12.1](README.pt-br.md) - -Only this README file is guaranteed to be up-to-date. From 3b8e254ca9776b64f2b4f4f162bc4e91026d9714 Mon Sep 17 00:00:00 2001 From: Win7GM Date: Mon, 31 Aug 2020 00:20:00 +0800 Subject: [PATCH 3/3] Update README_zh.md --- README_zh.md | 307 ++++++++++++++++++++++++--------------------------- 1 file changed, 142 insertions(+), 165 deletions(-) diff --git a/README_zh.md b/README_zh.md index e6e06fdf..11224012 100644 --- a/README_zh.md +++ b/README_zh.md @@ -1,8 +1,10 @@ # scrcpy (v1.16) 本应用程序可以让你实现在电脑上对安卓设备的查看和操作。 + 该程序不要求 _root_ 权限,它只需要您的手机和电脑通过USB(或通过TCP/IP)连接。 -该应用程序可以在 _GNU/Linux_, _Windows_ and _macOS_ 环境下运行 + +该应用程序可以在 _GNU/Linux_, _Windows_ and _macOS_ 环境下运行。 ![screenshot](assets/screenshot-debian-600.jpg) @@ -35,7 +37,7 @@ ### Linux -在Debian (_testing_ and _sid_ for now) 和Ubuntu (20.04)上: +在Debian (目前 _测试中_ 且 _sid_)(译者注:这个不懂) 和Ubuntu (20.04)上: ``` apt install scrcpy @@ -62,7 +64,7 @@ apt install scrcpy [Ebuild]: https://wiki.gentoo.org/wiki/Ebuild [ebuild-link]: https://github.com/maggu2810/maggu2810-overlay/tree/master/app-mobilephone/scrcpy -您也可以[自行编译][BUILD](不必担心,这并不困难)。 +您也可以[自行编译][编译](不必担心,这并不困难)。 @@ -93,7 +95,7 @@ scoop install adb # 如果你没有adb [Scoop]: https://scoop.sh -您也可以[自行编译][BUILD]。 +您也可以[自行编译][编译]。 ### macOS @@ -106,13 +108,13 @@ scoop install adb # 如果你没有adb brew install scrcpy ``` -您需要 `adb`,并且它应该可以通过 `PATH`被访问。如果您没有: +您需要 `adb`以使用本应用程序,并且它需要可以通过 `PATH`被访问。如果您没有: ```bash brew cask install android-platform-tools ``` -您也可以[自行编译][BUILD]。 +您也可以[自行编译][编译]。 ## 运行程序 @@ -259,9 +261,9 @@ scrcpy -s 192.168.0.1:5555 # short version 您可以同时启动多个 _scrcpy_ 实例以同时显示多个设备的画面。 -#### Autostart on device connection +#### 在设备连接时自动启动 -You could use [AutoAdb]: +您可以使用 [AutoAdb]: ```bash autoadb scrcpy -s '{}' @@ -269,7 +271,7 @@ autoadb scrcpy -s '{}' [AutoAdb]: https://github.com/rom1v/autoadb -#### SSH tunnel +#### SSH 连接 To connect to a remote device, it is possible to connect a local `adb` client to a remote `adb` server (provided they use the same version of the _adb_ @@ -369,83 +371,77 @@ scrcpy --rotation 1 - `3`: 顺时针旋转90° 这同样可以使用MOD+ -_(left)_ and MOD+ _(right)_ 的快捷键实时更改。 +_(左)_ 和 MOD+ _(右)_ 的快捷键实时更改。 -Note that _scrcpy_ manages 3 different rotations: -- MOD+r requests the device to switch between portrait and - landscape (the current running app may refuse, if it does support the - requested orientation). - - `--lock-video-orientation` changes the mirroring orientation (the orientation - of the video sent from the device to the computer). This affects the - recording. - - `--rotation` (or MOD+/MOD+) - rotates only the window content. This affects only the display, not the - recording. +需要注意的是, _scrcpy_ 控制三个不同的朝向: + - MOD+r 要求设备在竖屏和横屏之间切换(前台应用可能会拒绝该请求,如果它不支持) + + - `--lock-video-orientation` 改变共享的朝向(设备输出到电脑的画面的朝向)。这会影响录制。 + + - `--rotation` (或MOD+/MOD+) + 只旋转窗口的画面。这只影响显示,不影响录制。 -### Other mirroring options +### 其他共享设置 -#### Read-only +#### 只读 -To disable controls (everything which can interact with the device: input keys, -mouse events, drag&drop files): +关闭电脑对设备的控制(如键盘输入、鼠标移动和文件传输): ```bash scrcpy --no-control scrcpy -n ``` -#### Display +#### 显示屏 -If several displays are available, it is possible to select the display to -mirror: +如果有多个显示屏可用,您可以选择共享哪个屏幕到电脑上: ```bash scrcpy --display 1 ``` -The list of display ids can be retrieved by: +您可以通过如下命令找到显示屏的id: ``` -adb shell dumpsys display # search "mDisplayId=" in the output +adb shell dumpsys display # 在回显中搜索“mDisplayId=” ``` -The secondary display may only be controlled if the device runs at least Android -10 (otherwise it is mirrored in read-only). +第二显示屏可能只能在设备运行Android 10或以上的情况下被控制(它可能会在电脑上显示,但无法通过电脑操作)。 -#### Stay awake +#### 防止设备休眠 -To prevent the device to sleep after some delay when the device is plugged in: +防止设备在已连接的状态下休眠: ```bash scrcpy --stay-awake scrcpy -w ``` -The initial state is restored when scrcpy is closed. +程序关闭后,设备设置会恢复原样。 -#### Turn screen off +#### 关闭设备屏幕 -It is possible to turn the device screen off while mirroring on start with a -command-line option: +在启动屏幕共享时,可以通过如下命令关闭设备的屏幕: ```bash scrcpy --turn-screen-off scrcpy -S ``` -Or by pressing MOD+o at any time. +或者在需要的时候按MOD+o。 -To turn it back on, press MOD+Shift+o. +要重新打开屏幕的话,需要按MOD+Shift+o. -On Android, the `POWER` button always turns the screen on. For convenience, if -`POWER` is sent via scrcpy (via right-click or MOD+p), it -will force to turn the screen off after a small delay (on a best effort basis). -The physical `POWER` button will still cause the screen to be turned on. +在Android上,`电源`按钮始终能把屏幕打开。 -It can also be useful to prevent the device from sleeping: +为了方便,如果按下`电源`按钮的事件是通过 _scrcpy_ 发出的(通过点按鼠标右键或MOD+p),它会在短暂的延迟后将屏幕关闭。 + +物理的`电源`按钮仍然能打开设备屏幕。 + +同时,这项功能还能被用于防止设备休眠: ```bash scrcpy --turn-screen-off --stay-awake @@ -453,225 +449,206 @@ scrcpy -Sw ``` -#### Render expired frames +#### 渲染超时帧 -By default, to minimize latency, _scrcpy_ always renders the last decoded frame -available, and drops any previous one. +为了降低延迟 _scrcpy_ 默认渲染解码成功的最近一帧,并跳过前面任意帧。 -To force the rendering of all frames (at a cost of a possible increased -latency), use: +强制渲染所有帧(可能导致延迟变高): ```bash scrcpy --render-expired-frames ``` -#### Show touches +#### 显示触摸 -For presentations, it may be useful to show physical touches (on the physical -device). +在展示时,有些时候可能会用到显示触摸点这项功能(在设备上显示)。 -Android provides this feature in _Developers options_. +Android在 _开发者设置_ 中提供了这项功能。 -_Scrcpy_ provides an option to enable this feature on start and restore the -initial value on exit: +_Scrcpy_ 可以在启动时开启这项功能并在停止共享后关闭这项功能。 ```bash scrcpy --show-touches scrcpy -t ``` -Note that it only shows _physical_ touches (with the finger on the device). +请注意这项功能只能显示 _物理_ 触摸(要用手在屏幕上触摸)。 -#### Disable screensaver +#### 关闭熄屏定时器 -By default, scrcpy does not prevent the screensaver to run on the computer. +_scrcpy_ 不会默认关闭熄屏定时器。 -To disable it: +关闭熄屏定时器: ```bash scrcpy --disable-screensaver ``` -### Input control +### 输入控制 -#### Rotate device screen +#### 旋转设备屏幕 -Press MOD+r to switch between portrait and landscape -modes. +使用MOD+r以在竖屏和横屏模式之间切换。 -Note that it rotates only if the application in foreground supports the -requested orientation. +需要注意的是,只有在前台应用程序支持所要求的模式时,才会进行切换。 -#### Copy-paste +#### 复制黏贴 -Any time the Android clipboard changes, it is automatically synchronized to the -computer clipboard. +每次Android的剪贴板变化的时候,它都会被自动同步到电脑的剪贴板上。 -Any Ctrl shortcut is forwarded to the device. In particular: - - Ctrl+c typically copies - - Ctrl+x typically cuts - - Ctrl+v typically pastes (after computer-to-device - clipboard synchronization) +所有的 Ctrl 快捷键都会被转发至设备。其中: + - Ctrl+c 复制 + - Ctrl+x 剪切 + - Ctrl+v 黏贴 (在电脑到设备的剪贴板同步完成之后) -This typically works as you expect. +这通常如您所期望的那样运作。 -The actual behavior depends on the active application though. For example, -_Termux_ sends SIGINT on Ctrl+c instead, and _K-9 Mail_ -composes a new message. +但实际的行为取决于设备上的前台程序。 +例如 _Termux_ 在Ctrl+c被按下时发送 SIGINT, +又如 _K-9 Mail_ 会新建一封新邮件。 -To copy, cut and paste in such cases (but only supported on Android >= 7): - - MOD+c injects `COPY` - - MOD+x injects `CUT` - - MOD+v injects `PASTE` (after computer-to-device - clipboard synchronization) +在这种情况下剪切复制黏贴(仅在Android >= 7时可用): + - MOD+c 注入 `COPY`(复制) + - MOD+x 注入 `CUT`(剪切) + - MOD+v 注入 `PASTE`(黏贴)(在电脑到设备的剪贴板同步完成之后) -In addition, MOD+Shift+v allows to inject the -computer clipboard text as a sequence of key events. This is useful when the -component does not accept text pasting (for example in _Termux_), but it can -break non-ASCII content. +另外,MOD+Shift+v可以将电脑的剪贴板内容转换为一串按键事件输入到设备。 +在应用程序不接受黏贴时(比如 _Termux_ ),这项功能可以排上一定的用场。 +需要注意的是,这项功能可能会导致非ASCII编码的内容出现错误。 -**WARNING:** Pasting the computer clipboard to the device (either via -Ctrl+v or MOD+v) copies the content -into the device clipboard. As a consequence, any Android application could read -its content. You should avoid to paste sensitive content (like passwords) that -way. +**警告:** 将电脑剪贴板的内容黏贴至设备(无论是通过Ctrl+v还是MOD+v) +都需要将内容保存至设备的剪贴板。如此,任何一个应用程序都可以读取它。 +您应当避免将敏感内容通过这种方式传输(如密码)。 -#### Pinch-to-zoom +#### 捏拉缩放 -To simulate "pinch-to-zoom": Ctrl+_click-and-move_. +模拟 “捏拉缩放”:Ctrl+_按住并移动鼠标_。 -More precisely, hold Ctrl while pressing the left-click button. Until -the left-click button is released, all mouse movements scale and rotate the -content (if supported by the app) relative to the center of the screen. +更准确的说,您需要在按住Ctrl的同时按住并移动鼠标。 +在鼠标左键松开之后,光标的任何操作都会相对于屏幕的中央进行。 -Concretely, scrcpy generates additional touch events from a "virtual finger" at -a location inverted through the center of the screen. +具体来说, _scrcpy_ 使用“虚拟手指”以在相对于屏幕中央相反的位置产生触摸事件。 -#### Text injection preference +#### 文字注入偏好 -There are two kinds of [events][textevents] generated when typing text: - - _key events_, signaling that a key is pressed or released; - - _text events_, signaling that a text has been entered. +打字的时候,系统会产生两种[事件][textevents]: + - _按键事件_ ,代表一个按键被按下/松开。 + - _文本事件_ ,代表一个文本被输入。 -By default, letters are injected using key events, so that the keyboard behaves -as expected in games (typically for WASD keys). +程序默认使用按键事件来输入字母。只有这样,键盘才会在游戏中正常运作(尤其WASD键)。 -But this may [cause issues][prefertext]. If you encounter such a problem, you -can avoid it by: +但这也有可能[造成问题][prefertext]。如果您遇到了这样的问题,您可以通过下列操作避免它: ```bash scrcpy --prefer-text ``` -(but this will break keyboard behavior in games) +(这会导致键盘在游戏中工作不正常) [textevents]: https://blog.rom1v.com/2018/03/introducing-scrcpy/#handle-text-input [prefertext]: https://github.com/Genymobile/scrcpy/issues/650#issuecomment-512945343 -#### Key repeat +#### 按键重复 -By default, holding a key down generates repeated key events. This can cause -performance problems in some games, where these events are useless anyway. +当你一直按着一个按键不放时,程序默认产生多个按键事件。 +在某些游戏中这可能会导致性能问题。 -To avoid forwarding repeated key events: +关闭此功能: ```bash scrcpy --no-key-repeat ``` -### File drop +### 文件传输 -#### Install APK +#### 安装APK -To install an APK, drag & drop an APK file (ending with `.apk`) to the _scrcpy_ -window. +如果您要要安装APK,请拖放APK文件(文件名以`.apk`结尾)到 _scrcpy_ 窗口。 -There is no visual feedback, a log is printed to the console. +该操作没有可见的响应,只会在控制台输出日志。 -#### Push file to device +#### 将文件推送至设备 -To push a file to `/sdcard/` on the device, drag & drop a (non-APK) file to the -_scrcpy_ window. +如果您要推送文件到设备的 `/sdcard/`,请拖放文件至(不能是APK文件)_scrcpy_ 窗口。 -There is no visual feedback, a log is printed to the console. +该操作没有可见的响应,只会在控制台输出日志。 -The target directory can be changed on start: +在启动时可以修改目标目录: ```bash scrcpy --push-target /sdcard/foo/bar/ ``` -### Audio forwarding +### 音频转发 -Audio is not forwarded by _scrcpy_. Use [sndcpy]. +_scrcpy_ 不支持音频。请使用 [sndcpy]. -Also see [issue #14]. +另外请阅读 [issue #14]。 [sndcpy]: https://github.com/rom1v/sndcpy [issue #14]: https://github.com/Genymobile/scrcpy/issues/14 -## Shortcuts +## 热键 -In the following list, MOD is the shortcut modifier. By default, it's -(left) Alt or (left) Super. +在下列表格中, MOD 是热键的修饰键。 +默认是(左)Alt或者(左)Super。 -It can be changed using `--shortcut-mod`. Possible keys are `lctrl`, `rctrl`, -`lalt`, `ralt`, `lsuper` and `rsuper`. For example: +您可以使用 `--shortcut-mod`后缀来修改它。可选的按键有`lctrl`、`rctrl`、 +`lalt`、`ralt`、`lsuper`和`rsuper`。如下例: ```bash -# use RCtrl for shortcuts +# 使用右侧的Ctrl键 scrcpy --shortcut-mod=rctrl -# use either LCtrl+LAlt or LSuper for shortcuts +# 使用左侧的Ctrl键、Alt键或Super键 scrcpy --shortcut-mod=lctrl+lalt,lsuper ``` -_[Super] is typically the Windows or Cmd key._ +_一般来说,[Super]就是Windows或者Cmd。_ [Super]: https://en.wikipedia.org/wiki/Super_key_(keyboard_button) - | Action | Shortcut + | 操作 | 快捷键 | ------------------------------------------- |:----------------------------- - | Switch fullscreen mode | MOD+f - | Rotate display left | MOD+ _(left)_ - | Rotate display right | MOD+ _(right)_ - | Resize window to 1:1 (pixel-perfect) | MOD+g - | Resize window to remove black borders | MOD+w \| _Double-click¹_ - | Click on `HOME` | MOD+h \| _Middle-click_ - | Click on `BACK` | MOD+b \| _Right-click²_ - | Click on `APP_SWITCH` | MOD+s - | Click on `MENU` (unlock screen) | MOD+m - | Click on `VOLUME_UP` | MOD+ _(up)_ - | Click on `VOLUME_DOWN` | MOD+ _(down)_ - | Click on `POWER` | MOD+p - | Power on | _Right-click²_ - | Turn device screen off (keep mirroring) | MOD+o - | Turn device screen on | MOD+Shift+o - | Rotate device screen | MOD+r - | Expand notification panel | MOD+n - | Collapse notification panel | MOD+Shift+n - | Copy to clipboard³ | MOD+c - | Cut to clipboard³ | MOD+x - | Synchronize clipboards and paste³ | MOD+v - | Inject computer clipboard text | MOD+Shift+v - | Enable/disable FPS counter (on stdout) | MOD+i - | Pinch-to-zoom | Ctrl+_click-and-move_ + | 全屏 | MOD+f + | 向左旋转屏幕 | MOD+ _(左)_ + | 向右旋转屏幕 | MOD+ _(右)_ + | 将窗口大小重置为1:1 (像素优先) | MOD+g + | 将窗口大小重置为消除黑边 | MOD+w \| _双击¹_ + | 点按 `主屏幕` | MOD+h \| _点击鼠标中键_ + | 点按 `返回` | MOD+b \| _点击鼠标右键²_ + | 点按 `切换应用` | MOD+s + | 点按 `菜单` (解锁屏幕) | MOD+m + | 点按 `音量+` | MOD+ _(up)_ + | 点按 `音量-` | MOD+ _(down)_ + | 点按 `电源` | MOD+p + | 打开屏幕 | _点击鼠标右键²_ + | 关闭设备屏幕(但继续在电脑上显示) | MOD+o + | 打开设备屏幕 | MOD+Shift+o + | 旋转设备屏幕 | MOD+r + | 展开通知面板 | MOD+n + | 展开快捷操作 | MOD+Shift+n + | 复制到剪贴板³ | MOD+c + | 剪切到剪贴板³ | MOD+x + | 同步剪贴板并黏贴³ | MOD+v + | 导入电脑剪贴板文本 | MOD+Shift+v + | 打开/关闭FPS显示(在 stdout) | MOD+i + | 捏拉缩放 | Ctrl+_点按并移动鼠标_ -_¹Double-click on black borders to remove them._ -_²Right-click turns the screen on if it was off, presses BACK otherwise._ -_³Only on Android >= 7._ +_¹双击黑色边界以关闭黑色边界_ +_²点击鼠标右键将在屏幕熄灭时点亮屏幕,其余情况则视为按下 返回键 。_ +_³需要安卓版本 Android >= 7。_ -All Ctrl+_key_ shortcuts are forwarded to the device, so they are -handled by the active application. +所有的 Ctrl+_按键_ 的热键都是被转发到设备进行处理的,所以实际上会由当前应用程序对其做出响应。 ## 自定义路径 @@ -713,10 +690,10 @@ handled by the active application. 请查看[开发者页面]。 -[开发者]: DEVELOP.md +[开发者页面]: DEVELOP.md -## Licence +## 许可证明 Copyright (C) 2018 Genymobile Copyright (C) 2018-2020 Romain Vimont @@ -733,7 +710,7 @@ handled by the active application. See the License for the specific language governing permissions and limitations under the License. -## Articles +## 相关文章 - [Introducing scrcpy][article-intro] - [Scrcpy now works wirelessly][article-tcpip]