diff --git a/README.md b/README.md
index c9080861..8d80cb1f 100644
--- a/README.md
+++ b/README.md
@@ -955,7 +955,7 @@ This README is available in other languages:
- [한국어 (Korean, `ko`) - v1.11](README.ko.md)
- [Português Brasileiro (Brazilian Portuguese, `pt-BR`) - v1.19](README.pt-br.md)
- [Español (Spanish, `sp`) - v1.17](README.sp.md)
-- [简体中文 (Simplified Chinese, `zh-Hans`) - v1.17](README.zh-Hans.md)
+- [简体中文 (Simplified Chinese, `zh-Hans`) - v1.20](README.zh-Hans.md)
- [繁體中文 (Traditional Chinese, `zh-Hant`) - v1.15](README.zh-Hant.md)
- [Turkish (Turkish, `tr`) - v1.18](README.tr.md)
diff --git a/README.zh-Hans.md b/README.zh-Hans.md
index bdd8023c..b96d6d5a 100644
--- a/README.zh-Hans.md
+++ b/README.zh-Hans.md
@@ -2,27 +2,41 @@ _Only the original [README](README.md) is guaranteed to be up-to-date._
只有原版的[README](README.md)会保持最新。
-本文根据[ed130e05]进行翻译。
+Current version is based on [65b023a]
-[ed130e05]: https://github.com/Genymobile/scrcpy/blob/ed130e05d55615d6014d93f15cfcb92ad62b01d8/README.md
+本文根据[65b023a]进行翻译。
-# scrcpy (v1.17)
+[65b023a]: https://github.com/Genymobile/scrcpy/blob/65b023ac6d586593193fd5290f65e25603b68e02/README.md
+
+# scrcpy (v1.20)
+
+
本应用程序可以显示并控制通过 USB (或 [TCP/IP][article-tcpip]) 连接的安卓设备,且不需要任何 _root_ 权限。本程序支持 _GNU/Linux_, _Windows_ 和 _macOS_。
![screenshot](assets/screenshot-debian-600.jpg)
-它专注于:
+本应用专注于:
- - **轻量** (原生,仅显示设备屏幕)
- - **性能** (30~60fps)
- - **质量** (分辨率可达 1920×1080 或更高)
- - **低延迟** ([35~70ms][lowlatency])
- - **快速启动** (最快 1 秒内即可显示第一帧)
- - **无侵入性** (不会在设备上遗留任何程序)
+ - **轻量**: 原生,仅显示设备屏幕
+ - **性能**: 30~120fps,取决于设备
+ - **质量**: 分辨率可达 1920×1080 或更高
+ - **低延迟**: [35~70ms][lowlatency]
+ - **快速启动**: 最快 1 秒内即可显示第一帧
+ - **无侵入性**: 不会在设备上遗留任何程序
+ - **用户利益**: 无需帐号,无广告,无需联网
+ - **自由**: 自由和开源软件
[lowlatency]: https://github.com/Genymobile/scrcpy/pull/646
+功能:
+ - [屏幕录制](#屏幕录制)
+ - 镜像时[关闭设备屏幕](#关闭设备屏幕)
+ - 双向[复制粘贴](#复制粘贴)
+ - [可配置显示质量](#采集设置)
+ - 以设备屏幕[作为摄像头(V4L2)](#v4l2loopback) (仅限 Linux)
+ - [模拟物理键盘 (HID)](#物理键盘模拟-hid) (仅限 Linux)
+ - 更多 ……
## 系统要求
@@ -41,6 +55,17 @@ _Only the original [README](README.md) is guaranteed to be up-to-date._
+### 概要
+
+ - Linux: `apt install scrcpy`
+ - Windows: [下载][direct-win64]
+ - macOS: `brew install scrcpy`
+
+从源代码编译: [构建][BUILD] ([简化过程][BUILD_simple])
+
+[BUILD]: BUILD.md
+[BUILD_simple]: BUILD.md#simple
+
### Linux
在 Debian (目前仅支持 _testing_ 和 _sid_ 分支) 和Ubuntu (20.04) 上:
@@ -70,13 +95,12 @@ apt install scrcpy
[Ebuild]: https://wiki.gentoo.org/wiki/Ebuild
[ebuild-link]: https://github.com/maggu2810/maggu2810-overlay/tree/master/app-mobilephone/scrcpy
-您也可以[自行构建][BUILD] (不必担心,这并不困难)。
-
+您也可以[自行构建][BUILD] ([简化过程][BUILD_simple])。
### Windows
-在 Windows 上,简便起见,我们提供包含了所有依赖 (包括 `adb`) 的预编译包。
+在 Windows 上,为简便起见,我们提供包含了所有依赖 (包括 `adb`) 的预编译包。
- [README](README.md#windows)
@@ -114,13 +138,17 @@ brew install scrcpy
你还需要在 `PATH` 内有 `adb`。如果还没有:
```bash
-# Homebrew >= 2.6.0
-brew install --cask android-platform-tools
-
-# Homebrew < 2.6.0
-brew cask install android-platform-tools
+brew install android-platform-tools
```
+或者通过 [MacPorts],该方法同时设置好 adb:
+
+```bash
+sudo port install scrcpy
+```
+
+[MacPorts]: https://www.macports.org/
+
您也可以[自行构建][BUILD]。
@@ -140,7 +168,7 @@ scrcpy --help
## 功能介绍
-### 捕获设置
+### 采集设置
#### 降低分辨率
@@ -158,7 +186,7 @@ scrcpy -m 1024 # 简写
#### 修改码率
-默认码率是 8Mbps。要改变视频的码率 (例如改为 2Mbps):
+默认码率是 8 Mbps。改变视频码率 (例如改为 2 Mbps):
```bash
scrcpy --bit-rate 2M
@@ -167,7 +195,7 @@ scrcpy -b 2M # 简写
#### 限制帧率
-要限制捕获的帧率:
+要限制采集的帧率:
```bash
scrcpy --max-fps 15
@@ -194,10 +222,11 @@ scrcpy --crop 1224:1440:0:0 # 以 (0,0) 为原点的 1224x1440 像素
要锁定镜像画面的方向:
```bash
-scrcpy --lock-video-orientation 0 # 自然方向
-scrcpy --lock-video-orientation 1 # 逆时针旋转 90°
-scrcpy --lock-video-orientation 2 # 180°
-scrcpy --lock-video-orientation 3 # 顺时针旋转 90°
+scrcpy --lock-video-orientation # 初始(目前)方向
+scrcpy --lock-video-orientation=0 # 自然方向
+scrcpy --lock-video-orientation=1 # 逆时针旋转 90°
+scrcpy --lock-video-orientation=2 # 180°
+scrcpy --lock-video-orientation=3 # 顺时针旋转 90°
```
只影响录制的方向。
@@ -219,7 +248,9 @@ scrcpy --encoder OMX.qcom.video.encoder.avc
scrcpy --encoder _
```
-### 屏幕录制
+### 采集
+
+#### 屏幕录制
可以在镜像的同时录制视频:
@@ -241,6 +272,75 @@ scrcpy -Nr file.mkv
[packet delay variation]: https://en.wikipedia.org/wiki/Packet_delay_variation
+#### v4l2loopback
+
+在 Linux 上,可以将视频流发送至 v4l2 回环 (loopback) 设备,因此可以使用任何 v4l2 工具像摄像头一样打开安卓设备。
+
+需安装 `v4l2loopback` 模块:
+
+```bash
+sudo apt install v4l2loopback-dkms
+```
+
+创建一个 v4l2 设备:
+
+```bash
+sudo modprobe v4l2loopback
+```
+
+这样会在 `/dev/videoN` 创建一个新的视频设备,其中 `N` 是整数。 ([更多选项](https://github.com/umlaeute/v4l2loopback#options) 可以用来创建多个设备或者特定 ID 的设备)。
+
+列出已启用的设备:
+
+```bash
+# 需要 v4l-utils 包
+v4l2-ctl --list-devices
+
+# 简单但或许足够
+ls /dev/video*
+```
+
+使用一个 v4l2 漏开启 scrcpy:
+
+```bash
+scrcpy --v4l2-sink=/dev/videoN
+scrcpy --v4l2-sink=/dev/videoN --no-display # 禁用窗口镜像
+scrcpy --v4l2-sink=/dev/videoN -N # 简写
+```
+
+(将 `N` 替换为设备 ID,使用 `ls /dev/video*` 命令查看)
+
+启用之后,可以使用 v4l2 工具打开视频流:
+
+```bash
+ffplay -i /dev/videoN
+vlc v4l2:///dev/videoN # VLC 可能存在一些缓冲延迟
+```
+
+例如,可以在 [OBS] 中采集视频。
+
+[OBS]: https://obsproject.com/
+
+
+#### 缓冲
+
+可以加入缓冲,会增加延迟,但可以减少抖动 (见 [#2464])。
+
+[#2464]: https://github.com/Genymobile/scrcpy/issues/2464
+
+对于显示缓冲:
+
+```bash
+scrcpy --display-buffer=50 # 为显示增加 50 毫秒的缓冲
+```
+
+对于 V4L2 漏:
+
+```bash
+scrcpy --v4l2-buffer=500 # 为 v4l2 漏增加 500 毫秒的缓冲
+```
+
+
### 连接
#### 无线
@@ -249,16 +349,17 @@ _Scrcpy_ 使用 `adb` 与设备通信,并且 `adb` 支持通过 TCP/IP [连接
1. 将设备和电脑连接至同一 Wi-Fi。
2. 打开 设置 → 关于手机 → 状态信息,获取设备的 IP 地址,也可以执行以下的命令:
+
```bash
adb shell ip route | awk '{print $9}'
```
-3. 启用设备的网络 adb 功能 `adb tcpip 5555`。
+3. 启用设备的网络 adb 功能: `adb tcpip 5555`。
4. 断开设备的 USB 连接。
-5. 连接到您的设备:`adb connect DEVICE_IP:5555` _(将 `DEVICE_IP` 替换为设备 IP)_.
+5. 连接到您的设备:`adb connect DEVICE_IP:5555` _(将 `DEVICE_IP` 替换为设备 IP)_。
6. 正常运行 `scrcpy`。
-可能需要降低码率和分辨率:
+可能降低码率和分辨率会更好一些:
```bash
scrcpy --bit-rate 2M --max-size 800
@@ -327,7 +428,7 @@ scrcpy --force-adb-forward
```
-类似无线网络连接,可能需要降低画面质量:
+类似地,对于无线连接,可能需要降低画面质量:
```
scrcpy -b2M -m800 --max-fps 15
@@ -353,7 +454,7 @@ scrcpy --window-x 100 --window-y 100 --window-width 800 --window-height 600
#### 无边框
-关闭边框:
+禁用窗口边框:
```bash
scrcpy --window-borderless
@@ -369,7 +470,7 @@ scrcpy --always-on-top
#### 全屏
-您可以通过如下命令直接全屏启动scrcpy:
+您可以通过如下命令直接全屏启动 scrcpy:
```bash
scrcpy --fullscreen
@@ -394,7 +495,7 @@ scrcpy --rotation 1
也可以使用 MOD+← _(左箭头)_ 和 MOD+→ _(右箭头)_ 随时更改。
-需要注意的是, _scrcpy_ 有三个不同的方向:
+需要注意的是, _scrcpy_ 中有三类旋转方向:
- MOD+r 请求设备在竖屏和横屏之间切换 (如果前台应用程序不支持请求的朝向,可能会拒绝该请求)。
- [`--lock-video-orientation`](#锁定屏幕方向) 改变镜像的朝向 (设备传输到电脑的画面的朝向)。这会影响录制。
- `--rotation` (或 MOD+←/MOD+→) 只旋转窗口的内容。这只影响显示,不影响录制。
@@ -404,7 +505,7 @@ scrcpy --rotation 1
#### 只读
-禁用电脑对设备的控制 (如键盘输入、鼠标事件和文件拖放):
+禁用电脑对设备的控制 (任何可与设备交互的方式:如键盘输入、鼠标事件和文件拖放):
```bash
scrcpy --no-control
@@ -430,14 +531,14 @@ adb shell dumpsys display # 在输出中搜索 “mDisplayId=”
#### 保持常亮
-阻止设备在连接时休眠:
+阻止设备在连接时一段时间后休眠:
```bash
scrcpy --stay-awake
scrcpy -w
```
-程序关闭时会恢复设备原来的设置。
+scrcpy 关闭时会恢复设备原来的设置。
#### 关闭设备屏幕
@@ -451,7 +552,7 @@ scrcpy -S
或者在任何时候按 MOD+o。
-要重新打开屏幕,按下 MOD+Shift+o.
+要重新打开屏幕,按下 MOD+Shift+o。
在Android上,`电源` 按钮始终能把屏幕打开。为了方便,对于在 _scrcpy_ 中发出的 `电源` 事件 (通过鼠标右键或 MOD+p),会 (尽最大的努力) 在短暂的延迟后将屏幕关闭。设备上的 `电源` 按钮仍然能打开设备屏幕。
@@ -462,20 +563,17 @@ scrcpy --turn-screen-off --stay-awake
scrcpy -Sw
```
+#### 退出时息屏
-#### 渲染过期帧
-
-默认状态下,为了降低延迟, _scrcpy_ 永远渲染解码成功的最近一帧,并跳过前面任意帧。
-
-强制渲染所有帧 (可能导致延迟变高):
+scrcpy 退出时关闭设备屏幕:
```bash
-scrcpy --render-expired-frames
+scrcpy --power-off-on-close
```
#### 显示触摸
-在演示时,可能会需要显示物理触摸点 (在物理设备上的触摸点)。
+在演示时,可能会需要显示 (在物理设备上的) 物理触摸点。
Android 在 _开发者选项_ 中提供了这项功能。
@@ -538,10 +636,32 @@ scrcpy --disable-screensaver
更准确的说,在按住鼠标左键时按住 Ctrl。直到松开鼠标左键,所有鼠标移动将以屏幕中心为原点,缩放或旋转内容 (如果应用支持)。
-实际上,_scrcpy_ 会在以屏幕中心对称的位置上生成由“虚拟手指”发出的额外触摸事件。
+实际上,_scrcpy_ 会在关于屏幕中心对称的位置上用“虚拟手指”发出触摸事件。
+#### 物理键盘模拟 (HID)
-#### 文字注入偏好
+默认情况下,scrcpy 使用安卓按键或文本注入,这在任何情况都可以使用,但仅限于ASCII字符。
+
+在 Linux 上,scrcpy 可以模拟为 Android 上的物理 USB 键盘,以提供更好地输入体验 (使用 [USB HID over AOAv2][hid-aoav2]):禁用虚拟键盘,并适用于任何字符和输入法。
+
+[hid-aoav2]: https://source.android.com/devices/accessories/aoa2#hid-support
+
+不过,这种方法仅支持 USB 连接以及 Linux平台。
+
+启用 HID 模式:
+
+```bash
+scrcpy --hid-keyboard
+scrcpy -K # 简写
+```
+
+如果失败了 (如设备未通过 USB 连接),则自动回退至默认模式 (终端中会输出日志)。这即允许通过 USB 和 TCP/IP 连接时使用相同的命令行参数。
+
+在这种模式下,原始按键事件 (扫描码) 被发送给设备,而与宿主机按键映射无关。因此,若键盘布局不匹配,需要在 Android 设备上进行配置,具体为 设置 → 系统 → 语言和输入法 → [实体键盘]。
+
+[Physical keyboard]: https://github.com/Genymobile/scrcpy/pull/2632#issuecomment-923756915
+
+#### 文本注入偏好
打字的时候,系统会产生两种[事件][textevents]:
- _按键事件_ ,代表一个按键被按下或松开。
@@ -557,13 +677,15 @@ scrcpy --prefer-text
(这会导致键盘在游戏中工作不正常)
+该选项不影响 HID 键盘 (该模式下,所有按键都发送为扫描码)。
+
[textevents]: https://blog.rom1v.com/2018/03/introducing-scrcpy/#handle-text-input
[prefertext]: https://github.com/Genymobile/scrcpy/issues/650#issuecomment-512945343
#### 按键重复
-默认状态下,按住一个按键不放会生成多个重复按键事件。在某些游戏中这可能会导致性能问题。
+默认状态下,按住一个按键不放会生成多个重复按键事件。在某些游戏中这通常没有实际用途,且可能会导致性能问题。
避免转发重复按键事件:
@@ -571,10 +693,11 @@ scrcpy --prefer-text
scrcpy --no-key-repeat
```
+该选项不影响 HID 键盘 (该模式下,按键重复由 Android 直接管理)。
#### 右键和中键
-默认状态下,右键会触发返回键 (或电源键),中键会触发 HOME 键。要禁用这些快捷键并把所有点击转发到设备:
+默认状态下,右键会触发返回键 (或电源键开启),中键会触发 HOME 键。要禁用这些快捷键并把所有点击转发到设备:
```bash
scrcpy --forward-all-clicks
@@ -587,27 +710,27 @@ scrcpy --forward-all-clicks
将 APK 文件 (文件名以 `.apk` 结尾) 拖放到 _scrcpy_ 窗口来安装。
-该操作在屏幕上不会出现任何变化,而会在控制台输出一条日志。
+不会有视觉反馈,终端会输出一条日志。
#### 将文件推送至设备
-要推送文件到设备的 `/sdcard/`,将 (非 APK) 文件拖放至 _scrcpy_ 窗口。
+要推送文件到设备的 `/sdcard/Download/`,将 (非 APK) 文件拖放至 _scrcpy_ 窗口。
-该操作没有可见的响应,只会在控制台输出日志。
+不会有视觉反馈,终端会输出一条日志。
在启动时可以修改目标目录:
```bash
-scrcpy --push-target /sdcard/foo/bar/
+scrcpy --push-target=/sdcard/Movies/
```
### 音频转发
-_Scrcpy_ 不支持音频。请使用 [sndcpy].
+_Scrcpy_ 不支持音频。请使用 [sndcpy]。
-另外请阅读 [issue #14]。
+另见 [issue #14]。
[sndcpy]: https://github.com/rom1v/sndcpy
[issue #14]: https://github.com/Genymobile/scrcpy/issues/14
@@ -632,36 +755,46 @@ _[Super] 键通常是指 Windows 或 Cmd 键。
[Super]: https://en.wikipedia.org/wiki/Super_key_(keyboard_button)
- | 操作 | 快捷键 |
- | --------------------------------- | :------------------------------------------- |
- | 全屏 | MOD+f |
- | 向左旋转屏幕 | MOD+← _(左箭头)_ |
- | 向右旋转屏幕 | MOD+→ _(右箭头)_ |
- | 将窗口大小重置为1:1 (匹配像素) | MOD+g |
- | 将窗口大小重置为消除黑边 | MOD+w \| _双击¹_ |
- | 点按 `主屏幕` | MOD+h \| _鼠标中键_ |
- | 点按 `返回` | MOD+b \| _鼠标右键²_ |
- | 点按 `切换应用` | MOD+s |
- | 点按 `菜单` (解锁屏幕) | MOD+m |
- | 点按 `音量+` | MOD+↑ _(上箭头)_ |
- | 点按 `音量-` | MOD+↓ _(下箭头)_ |
- | 点按 `电源` | 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+_按住并移动鼠标_ |
+ | 操作 | 快捷键
+ | --------------------------------- | :-------------------------------------------
+ | 全屏 | MOD+f
+ | 向左旋转屏幕 | MOD+← _(左箭头)_
+ | 向右旋转屏幕 | MOD+→ _(右箭头)_
+ | 将窗口大小重置为1:1 (匹配像素) | MOD+g
+ | 将窗口大小重置为消除黑边 | MOD+w \| _双击左键¹_
+ | 点按 `主屏幕` | MOD+h \| _中键_
+ | 点按 `返回` | MOD+b \| _右键²_
+ | 点按 `切换应用` | MOD+s \| _第4键³_
+ | 点按 `菜单` (解锁屏幕) | MOD+m
+ | 点按 `音量+` | MOD+↑ _(上箭头)_
+ | 点按 `音量-` | MOD+↓ _(下箭头)_
+ | 点按 `电源` | MOD+p
+ | 打开屏幕 | _鼠标右键²_
+ | 关闭设备屏幕 (但继续在电脑上显示) | MOD+o
+ | 打开设备屏幕 | MOD+Shift+o
+ | 旋转设备屏幕 | MOD+r
+ | 展开通知面板 | MOD+n \| _第5键³_
+ | 展开设置面板 | MOD+n+n \| _双击第5键³_
+ | 收起通知面板 | MOD+Shift+n
+ | 复制到剪贴板⁴ | MOD+c
+ | 剪切到剪贴板⁴ | MOD+x
+ | 同步剪贴板并粘贴⁴ | MOD+v
+ | 注入电脑剪贴板文本 | MOD+Shift+v
+ | 打开/关闭FPS显示 (至标准输出) | MOD+i
+ | 捏拉缩放 | Ctrl+_按住并移动鼠标_
+ | 拖放 APK 文件 | 从电脑安装 APK 文件
+ | 拖放非 APK 文件 | [将文件推送至设备](#push-file-to-device)
-_¹双击黑边可以去除黑边_
-_²点击鼠标右键将在屏幕熄灭时点亮屏幕,其余情况则视为按下返回键 。_
-_³需要安卓版本 Android >= 7。_
+_¹双击黑边可以去除黑边。_
+_²点击鼠标右键将在屏幕熄灭时点亮屏幕,其余情况则视为按下返回键 。_
+_³鼠标的第4键和第5键。_
+_⁴需要安卓版本 Android >= 7。_
+
+有重复按键的快捷键通过松开再按下一个按键来进行,如“展开设置面板”:
+
+ 1. 按下 MOD 不放。
+ 2. 双击 n。
+ 3. 松开 MOD。
所有的 Ctrl+_按键_ 的快捷键都会被转发到设备,所以会由当前应用程序进行处理。
@@ -670,18 +803,20 @@ _³需要安卓版本 Android >= 7。_
要使用指定的 _adb_ 二进制文件,可以设置环境变量 `ADB`:
- ADB=/path/to/adb scrcpy
+```bash
+ADB=/path/to/adb scrcpy
+```
要覆盖 `scrcpy-server` 的路径,可以设置 `SCRCPY_SERVER_PATH`。
-[useful]: https://github.com/Genymobile/scrcpy/issues/278#issuecomment-429330345
+要覆盖图标,可以设置其路径至 `SCRCPY_ICON_PATH`。
## 为什么叫 _scrcpy_ ?
一个同事让我找出一个和 [gnirehtet] 一样难以发音的名字。
-[`strcpy`] 复制一个 **str**ing; `scrcpy` 复制一个 **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
@@ -689,14 +824,12 @@ _³需要安卓版本 Android >= 7。_
## 如何构建?
-请查看[BUILD]。
-
-[BUILD]: BUILD.md
+请查看 [BUILD]。
## 常见问题
-请查看[FAQ](FAQ.md)。
+请查看 [FAQ](FAQ.md)。
## 开发者