1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
//! 键名常量 [`Keys`] 与按键序列输入 [`KeyInput`](对标 DrissionPage 的 `Keys` 与 `ele.input` 序列)。
//!
//! - [`Keys`][]:常用特殊键名常量,值即 Juggler/DOM 的 `key` 名;普通字符直接用字符串即可。
//! 用于 [`Tab::press_key`](crate::browser::Tab::press_key) / [`KeyInput::key`]。
//! - [`KeyInput`][]:把"文本 + 特殊键"混排成一个序列,交给
//! [`Element::input_keys`](crate::browser::Element::input_keys)(对应 DP `ele.input(['abc', Keys.ENTER])`)。
//!
//! ```ignore
//! use drission::prelude::*;
//! tab.press_key(Keys::ENTER).await?;
//! ele.input_keys(&[KeyInput::text("hello"), KeyInput::key(Keys::ENTER)]).await?;
//! ```
//!
//! **平台限制**:Camoufox 当前的 Juggler `dispatchKeyEvent` **没有 `modifiers` 字段**,也不会跨调用
//! 跟踪"修饰键按下态"(合成的主键事件 `e.ctrlKey` 仍为 false)→ **修饰组合键(Ctrl+A / Ctrl+C 等)
//! 的原生效果无法合成**(非库缺陷)。需要"全选"等可用 JS:如 `ele.run_js("node.select()")`(输入框)
//! 或 `tab.run_js("document.execCommand('selectAll')")`。
/// 常用特殊键名常量(值即 Juggler/DOM 的 `key` 名)。
;
/// 按键序列的一项:文本 或 特殊键(对应 DP `ele.input(['abc', Keys.ENTER])`)。