@vnejs/docs 0.2.65 → 0.2.66

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (261) hide show
  1. package/README.md +35 -35
  2. package/architecture/backends.md +18 -0
  3. package/architecture/build.md +37 -0
  4. package/architecture/bundles.md +20 -0
  5. package/architecture/cli.md +25 -0
  6. package/architecture/compatibility.md +22 -0
  7. package/architecture/configs.md +19 -0
  8. package/architecture/contracts.md +30 -0
  9. package/architecture/dependencies.md +55 -0
  10. package/architecture/editor.md +7 -0
  11. package/architecture/games.md +38 -0
  12. package/architecture/helpers.md +14 -0
  13. package/architecture/model.md +43 -0
  14. package/architecture/modules.md +87 -0
  15. package/architecture/packages.md +43 -0
  16. package/architecture/plugins.md +36 -0
  17. package/architecture/uis.md +23 -0
  18. package/changelog/0.2.18.md +7 -0
  19. package/changelog/0.2.19.md +14 -0
  20. package/changelog/0.2.20.md +10 -0
  21. package/changelog/0.2.21.md +5 -0
  22. package/changelog/0.2.22.md +11 -0
  23. package/changelog/0.2.23.md +4 -0
  24. package/changelog/0.2.25.md +6 -0
  25. package/changelog/0.2.26.md +12 -0
  26. package/changelog/0.2.29.md +10 -0
  27. package/changelog/0.2.31.md +5 -0
  28. package/changelog/0.2.32.md +3 -0
  29. package/changelog/0.2.33.md +5 -0
  30. package/changelog/0.2.34.md +8 -0
  31. package/changelog/0.2.35.md +33 -0
  32. package/changelog/0.2.36.md +10 -0
  33. package/changelog/0.2.38.md +19 -0
  34. package/changelog/0.2.39.md +16 -0
  35. package/changelog/0.2.40.md +9 -0
  36. package/changelog/0.2.42.md +3 -0
  37. package/changelog/0.2.43.md +10 -0
  38. package/changelog/0.2.46.md +3 -0
  39. package/changelog/0.2.47.md +25 -0
  40. package/changelog/0.2.49.md +3 -0
  41. package/changelog/0.2.50.md +6 -0
  42. package/changelog/0.2.51.md +6 -0
  43. package/changelog/0.2.52.md +5 -0
  44. package/changelog/0.2.53.md +12 -0
  45. package/changelog/0.2.55.md +19 -0
  46. package/changelog/0.2.56.md +11 -0
  47. package/changelog/0.2.57.md +7 -0
  48. package/changelog/0.2.58.md +8 -0
  49. package/changelog/0.2.59.md +6 -0
  50. package/changelog/0.2.60.md +5 -0
  51. package/changelog/0.2.61.md +11 -0
  52. package/changelog/0.2.62.md +8 -0
  53. package/changelog/0.2.63.md +4 -0
  54. package/changelog/0.2.64.md +4 -0
  55. package/changelog/0.2.65.md +3 -0
  56. package/changelog/0.2.66.md +5 -0
  57. package/changelog/README.md +43 -0
  58. package/manifest.json +66 -5
  59. package/package.json +6 -4
  60. package/plugins/ai/ai.md +29 -29
  61. package/plugins/ai/checkers.md +26 -26
  62. package/plugins/audio/ambient.md +20 -20
  63. package/plugins/audio/audio.md +40 -40
  64. package/plugins/audio/music.md +20 -20
  65. package/plugins/audio/sound.md +20 -20
  66. package/plugins/audio/voice.md +23 -23
  67. package/plugins/canvas/bg.md +44 -44
  68. package/plugins/canvas/bg.speak.md +34 -34
  69. package/plugins/canvas/fill.md +33 -33
  70. package/plugins/canvas/layer.md +35 -35
  71. package/plugins/canvas/sprite.md +46 -46
  72. package/plugins/canvas/sprite.speak.md +33 -33
  73. package/plugins/canvas/text.md +37 -37
  74. package/plugins/canvas/video.md +37 -37
  75. package/plugins/canvas.layers/bl.md +33 -33
  76. package/plugins/canvas.layers/fl.md +33 -33
  77. package/plugins/canvas.layers/ml.md +33 -33
  78. package/plugins/canvas.layers/ul.md +32 -32
  79. package/plugins/canvas.props/animation.md +25 -25
  80. package/plugins/canvas.props/clip.md +22 -22
  81. package/plugins/canvas.props/filters.md +20 -20
  82. package/plugins/canvas.props/mask.md +23 -23
  83. package/plugins/canvas.props/scale.md +20 -20
  84. package/plugins/common/grid.md +23 -23
  85. package/plugins/common/turn.md +18 -18
  86. package/plugins/controls/controls.md +31 -31
  87. package/plugins/controls/cursor.md +54 -54
  88. package/plugins/controls/gamepad.md +56 -56
  89. package/plugins/controls/keyboard.md +17 -17
  90. package/plugins/core/components.md +28 -28
  91. package/plugins/core/interact.md +26 -26
  92. package/plugins/core/logs.md +28 -28
  93. package/plugins/core/media.md +38 -38
  94. package/plugins/core/memory.md +28 -28
  95. package/plugins/core/platforms.md +19 -19
  96. package/plugins/core/scenario.md +48 -48
  97. package/plugins/core/settings.md +24 -24
  98. package/plugins/core/stack.md +39 -39
  99. package/plugins/core/state.md +30 -30
  100. package/plugins/core/storage.md +56 -56
  101. package/plugins/core/system.md +37 -37
  102. package/plugins/core/vendors.md +19 -19
  103. package/plugins/entities/entities.md +16 -16
  104. package/plugins/entities/wallet.md +27 -27
  105. package/plugins/font/montserrat.md +16 -16
  106. package/plugins/game/checkers.md +38 -38
  107. package/plugins/platform/android.md +17 -17
  108. package/plugins/platform/electron.md +21 -21
  109. package/plugins/platform/metric.md +23 -23
  110. package/plugins/rpg/damage.md +22 -22
  111. package/plugins/rpg/hit.md +24 -24
  112. package/plugins/rpg/skills.md +26 -26
  113. package/plugins/save/auto.md +26 -26
  114. package/plugins/save/continue.md +23 -23
  115. package/plugins/save/quick.md +24 -24
  116. package/plugins/save/save.md +37 -37
  117. package/plugins/scales/health.md +17 -17
  118. package/plugins/scales/mana.md +17 -17
  119. package/plugins/scales/scales.md +31 -31
  120. package/plugins/scenario/autoread.md +36 -36
  121. package/plugins/scenario/choose.md +74 -65
  122. package/plugins/scenario/fastforward.md +46 -46
  123. package/plugins/scenario/history.md +41 -41
  124. package/plugins/scenario/pause.md +27 -27
  125. package/plugins/scenario/point_and_click.md +51 -51
  126. package/plugins/scenario/qte.md +54 -54
  127. package/plugins/scenario/random.md +17 -17
  128. package/plugins/settings/filter.md +19 -19
  129. package/plugins/settings/potato.md +22 -22
  130. package/plugins/settings/ratio.md +19 -19
  131. package/plugins/settings/textsize.md +19 -19
  132. package/plugins/settings/volume.md +21 -21
  133. package/plugins/text/inject.md +22 -22
  134. package/plugins/text/locs.md +36 -36
  135. package/plugins/text/meet.md +19 -19
  136. package/plugins/text/smooth.md +33 -33
  137. package/plugins/text/text.md +76 -69
  138. package/plugins/text/wall.md +20 -20
  139. package/plugins/time/date.md +22 -22
  140. package/plugins/time/time.md +23 -23
  141. package/plugins/vars/counters.md +28 -28
  142. package/plugins/vars/flags.md +24 -24
  143. package/plugins/vars/vars.md +29 -29
  144. package/plugins/views/achievement.md +44 -44
  145. package/plugins/views/comment.md +31 -31
  146. package/plugins/views/controls.hints.md +34 -34
  147. package/plugins/views/cursor.md +19 -19
  148. package/plugins/views/fps.md +33 -33
  149. package/plugins/views/gamepad.debug.md +32 -32
  150. package/plugins/views/settings.md +39 -39
  151. package/plugins/views/video.md +37 -37
  152. package/plugins/views.scenario/choose.md +41 -41
  153. package/plugins/views.scenario/interface.controls.md +31 -31
  154. package/plugins/views.scenario/interface.fastforward.md +29 -29
  155. package/plugins/views.scenario/interface.md +74 -74
  156. package/plugins/views.scenario/point_and_click.md +39 -39
  157. package/plugins/views.scenario/qte.md +51 -51
  158. package/plugins/views.screens/checkers.md +35 -35
  159. package/plugins/views.screens/confirm.md +35 -35
  160. package/plugins/views.screens/credits.md +31 -31
  161. package/plugins/views.screens/disclaimer.md +42 -42
  162. package/plugins/views.screens/eula.md +37 -37
  163. package/plugins/views.screens/gallery.full.md +41 -41
  164. package/plugins/views.screens/gallery.md +75 -75
  165. package/plugins/views.screens/gamemenu.md +41 -41
  166. package/plugins/views.screens/history.md +39 -39
  167. package/plugins/views.screens/intro.md +32 -32
  168. package/plugins/views.screens/loading.md +30 -30
  169. package/plugins/views.screens/mainmenu.md +49 -49
  170. package/plugins/views.screens/mainmenu.socials.md +25 -25
  171. package/plugins/views.screens/save.md +66 -66
  172. package/plugins/views.screens/settings.defaults.md +37 -37
  173. package/plugins/views.screens/settings.md +40 -40
  174. package/scenario.catalog/README.md +13 -13
  175. package/scenario.catalog/index.md +35 -35
  176. package/scenario.catalog/stubs/achievement.md +4 -4
  177. package/scenario.catalog/stubs/audio.ambient.md +4 -4
  178. package/scenario.catalog/stubs/audio.music.md +4 -4
  179. package/scenario.catalog/stubs/audio.sound.md +4 -4
  180. package/scenario.catalog/stubs/audio.voice.md +4 -4
  181. package/scenario.catalog/stubs/bl.animation.md +5 -5
  182. package/scenario.catalog/stubs/bl.bg.md +5 -5
  183. package/scenario.catalog/stubs/bl.clip.md +5 -5
  184. package/scenario.catalog/stubs/bl.fill.md +5 -5
  185. package/scenario.catalog/stubs/bl.filter.md +5 -5
  186. package/scenario.catalog/stubs/bl.mask.md +5 -5
  187. package/scenario.catalog/stubs/bl.scale.md +5 -5
  188. package/scenario.catalog/stubs/bl.sprite.md +5 -5
  189. package/scenario.catalog/stubs/bl.text.md +5 -5
  190. package/scenario.catalog/stubs/bl.video.md +5 -5
  191. package/scenario.catalog/stubs/choose.block.md +7 -7
  192. package/scenario.catalog/stubs/choose.md +4 -4
  193. package/scenario.catalog/stubs/choose.option.md +7 -7
  194. package/scenario.catalog/stubs/comment.md +5 -5
  195. package/scenario.catalog/stubs/counter.md +5 -5
  196. package/scenario.catalog/stubs/credits.md +4 -4
  197. package/scenario.catalog/stubs/date.md +4 -4
  198. package/scenario.catalog/stubs/disclaimer.md +5 -5
  199. package/scenario.catalog/stubs/fl.animation.md +5 -5
  200. package/scenario.catalog/stubs/fl.bg.md +5 -5
  201. package/scenario.catalog/stubs/fl.clip.md +5 -5
  202. package/scenario.catalog/stubs/fl.fill.md +5 -5
  203. package/scenario.catalog/stubs/fl.filter.md +5 -5
  204. package/scenario.catalog/stubs/fl.mask.md +5 -5
  205. package/scenario.catalog/stubs/fl.scale.md +5 -5
  206. package/scenario.catalog/stubs/fl.sprite.md +5 -5
  207. package/scenario.catalog/stubs/fl.text.md +5 -5
  208. package/scenario.catalog/stubs/fl.video.md +5 -5
  209. package/scenario.catalog/stubs/flag.md +13 -13
  210. package/scenario.catalog/stubs/interface.md +4 -4
  211. package/scenario.catalog/stubs/intro.md +4 -4
  212. package/scenario.catalog/stubs/mainmenu.md +4 -4
  213. package/scenario.catalog/stubs/ml.animation.md +5 -5
  214. package/scenario.catalog/stubs/ml.bg.md +5 -5
  215. package/scenario.catalog/stubs/ml.clip.md +5 -5
  216. package/scenario.catalog/stubs/ml.fill.md +5 -5
  217. package/scenario.catalog/stubs/ml.filter.md +5 -5
  218. package/scenario.catalog/stubs/ml.mask.md +5 -5
  219. package/scenario.catalog/stubs/ml.scale.md +5 -5
  220. package/scenario.catalog/stubs/ml.sprite.md +5 -5
  221. package/scenario.catalog/stubs/ml.text.md +5 -5
  222. package/scenario.catalog/stubs/ml.video.md +5 -5
  223. package/scenario.catalog/stubs/other.md +6 -6
  224. package/scenario.catalog/stubs/pause.md +5 -5
  225. package/scenario.catalog/stubs/point-and-click.block.md +4 -4
  226. package/scenario.catalog/stubs/point-and-click.md +4 -4
  227. package/scenario.catalog/stubs/point-and-click.option.md +4 -4
  228. package/scenario.catalog/stubs/qte.md +4 -4
  229. package/scenario.catalog/stubs/random.md +4 -4
  230. package/scenario.catalog/stubs/random.option.md +4 -4
  231. package/scenario.catalog/stubs/save.auto.md +4 -4
  232. package/scenario.catalog/stubs/save.md +5 -5
  233. package/scenario.catalog/stubs/scenario.md +4 -4
  234. package/scenario.catalog/stubs/settings.defaults.md +4 -4
  235. package/scenario.catalog/stubs/stack.md +4 -4
  236. package/scenario.catalog/stubs/text.meet.md +4 -4
  237. package/scenario.catalog/stubs/text.wall.md +4 -4
  238. package/scenario.catalog/stubs/time.md +4 -4
  239. package/scenario.catalog/stubs/ul.animation.md +5 -5
  240. package/scenario.catalog/stubs/ul.bg.md +5 -5
  241. package/scenario.catalog/stubs/ul.clip.md +5 -5
  242. package/scenario.catalog/stubs/ul.fill.md +5 -5
  243. package/scenario.catalog/stubs/ul.filter.md +5 -5
  244. package/scenario.catalog/stubs/ul.mask.md +5 -5
  245. package/scenario.catalog/stubs/ul.scale.md +5 -5
  246. package/scenario.catalog/stubs/ul.sprite.md +5 -5
  247. package/scenario.catalog/stubs/ul.text.md +5 -5
  248. package/scenario.catalog/stubs/video.md +4 -4
  249. package/scenario.catalog/stubs/wallet.md +4 -4
  250. package/scenario.guide/README.md +38 -38
  251. package/scenario.guide/audio.md +11 -11
  252. package/scenario.guide/canvas.md +23 -23
  253. package/scenario.guide/choose.md +28 -28
  254. package/scenario.guide/dialogue.md +23 -23
  255. package/scenario.guide/flow.md +21 -21
  256. package/scenario.guide/point-and-click.md +12 -12
  257. package/scenario.guide/qte-random.md +20 -20
  258. package/scenario.guide/vars.md +19 -19
  259. package/scenario.guide/views.md +20 -20
  260. package/CHANGELOG.md +0 -387
  261. package/architecture.md +0 -566
@@ -1,41 +1,41 @@
1
1
  # plugins/common/grid/
2
2
 
3
- Пакет: `@vnejs/plugins.common.grid` · namespace: `GRID`
3
+ Package: `@vnejs/plugins.common.grid` · namespace: `GRID`
4
4
 
5
- Хранит квадратные сетки по строковому `id` (несколько параллельных досок). Элемент клетки — любой объект с обязательным `id: string`; в одной сетке `id` уникален. Пустая клетка — `null`. Матрица — плотная `(item | null)[][]`.
5
+ Stores square grids by string `id` (several parallel boards). A cell item is any object with required `id: string`; in one grid `id` is unique. Empty cell — `null`. Matrix is dense `(item | null)[][]`.
6
6
 
7
- Не путать с UI-навигацией `*.GRID_*` из `@vnejs/module.controller.arrows.grid` (фокус стрелками на экране).
7
+ Do not confuse with UI navigation `*.GRID_*` from `@vnejs/module.controller.arrows.grid` (arrow focus on screen).
8
8
 
9
- ## События
9
+ ## Events
10
10
 
11
- Payloads и результаты хендлеров типизированы через module augmentation контракта (`VneEventPayloadMap` / `VneEventResultMap`); типы — в `@vnejs/contracts.common.grid`.
11
+ Handler payloads and results are typed through module augmentation of the contract (`VneEventPayloadMap` / `VneEventResultMap`). The types live in `@vnejs/contracts.common.grid`.
12
12
 
13
- | Ключ | Строка | Смысл |
14
- | --------- | ------------------ | ------------------------------------------------------------------------------------------------- |
15
- | `SET` | `vne:grid:set` | Создать/заменить `{ id, rows, columns, cells? }`. Без `cells` — пустая матрица. Затем `CHANGED`. |
16
- | `GET` | `vne:grid:get` | `emitOne({ id })` → `{ id, rows, columns, cells } \| undefined`. |
17
- | `UNSET` | `vne:grid:unset` | Удалить по `{ id }`. Без `CHANGED`. |
18
- | `CHANGED` | `vne:grid:changed` | Полный снимок после `SET` / `PUT` / `MOVE` / `REMOVE`. |
19
- | `PUT` | `vne:grid:put` | `{ id, row, column, item }` — положить item; тот же `item.id` сначала снимается со старой клетки. |
20
- | `MOVE` | `vne:grid:move` | `{ id, from, to }` — перенос; занятый `to` — замена. |
21
- | `REMOVE` | `vne:grid:remove` | `{ id, row?, column?, itemId? }` — очистить по позиции или по `itemId`. |
13
+ | Key | String | Meaning |
14
+ | --------- | ------------------ | ----------------------------------------------------------------------------------------------- |
15
+ | `SET` | `vne:grid:set` | Create/replace `{ id, rows, columns, cells? }`. Without `cells` — empty matrix. Then `CHANGED`. |
16
+ | `GET` | `vne:grid:get` | `emitOne({ id })` → `{ id, rows, columns, cells } \| undefined`. |
17
+ | `UNSET` | `vne:grid:unset` | Remove by `{ id }`. No `CHANGED`. |
18
+ | `CHANGED` | `vne:grid:changed` | Full snapshot after `SET` / `PUT` / `MOVE` / `REMOVE`. |
19
+ | `PUT` | `vne:grid:put` | `{ id, row, column, item }` — place item; same `item.id` is cleared from the old cell first. |
20
+ | `MOVE` | `vne:grid:move` | `{ id, from, to }` — move; occupied `to` — swap. |
21
+ | `REMOVE` | `vne:grid:remove` | `{ id, row?, column?, itemId? }` — clear by position or by `itemId`. |
22
22
 
23
23
  State: map `id → { rows, columns, cells }`.
24
24
 
25
- `STATE.SET` / `STATE.CLEAR` не пишут map напрямую: отсутствующие id — `UNSET`, присутствующие — `SET`.
25
+ `STATE.SET` / `STATE.CLEAR` do not write the map directly: missing ids — `UNSET`, present ids — `SET`.
26
26
 
27
- ## Константы / Params / Settings
27
+ ## Constants / Params / Settings
28
28
 
29
- Нет.
29
+ None.
30
30
 
31
- ## Модули
31
+ ## Modules
32
32
 
33
- | Модуль | Зона ответственности |
33
+ | Module | Role |
34
34
  | ------ | ---------------------------------------------------------------- |
35
35
  | `grid` | `SET` / `GET` / `UNSET` / `CHANGED` / `PUT` / `MOVE` / `REMOVE`. |
36
36
 
37
- ## Близкие плагины
37
+ ## Related plugins
38
38
 
39
- - [game/checkers.md](../game/checkers.md) — пишет `GRID.SET` с `CONST.CHECKERS.GRID_ID`, читает через `GET`
40
- - [views.screens/checkers.md](../views.screens/checkers.md) / [ai/checkers.md](../ai/checkers.md) — зеркало через `CHANGED` / `UNSET`
41
- - [common/turn.md](./turn.md) — ход стороны (отдельный map)
39
+ - [game/checkers.md](../game/checkers.md) — writes `GRID.SET` with `CONST.CHECKERS.GRID_ID`, reads via `GET`
40
+ - [views.screens/checkers.md](../views.screens/checkers.md) / [ai/checkers.md](../ai/checkers.md) — mirror via `CHANGED` / `UNSET`
41
+ - [common/turn.md](./turn.md) — side to move (separate map)
@@ -1,35 +1,35 @@
1
1
  # plugins/common/turn/
2
2
 
3
- Пакет: `@vnejs/plugins.common.turn` · namespace: `TURNS`
3
+ Package: `@vnejs/plugins.common.turn` · namespace: `TURNS`
4
4
 
5
- Хранит текущий ход по строковому `id` (несколько параллельных партий) и `owner` (кто ходит — произвольная строка).
5
+ Stores the current turn by string `id` (several parallel games) and `owner` (who moves — arbitrary string).
6
6
 
7
- ## События
7
+ ## Events
8
8
 
9
- Payloads и результаты хендлеров типизированы через module augmentation контракта (`VneEventPayloadMap` / `VneEventResultMap`); типы — в `@vnejs/contracts.common.turn`.
9
+ Handler payloads and results are typed through module augmentation of the contract (`VneEventPayloadMap` / `VneEventResultMap`). The types live in `@vnejs/contracts.common.turn`.
10
10
 
11
- | Ключ | Строка | Смысл |
12
- | --------- | ------------------- | ----------------------------------------------------------- |
13
- | `SET` | `vne:turns:set` | Записать `{ id, owner }`. Без `id` или без `owner` — no-op. |
14
- | `GET` | `vne:turns:get` | `emitOne({ id })` → `owner` (`string \| undefined`). |
15
- | `UNSET` | `vne:turns:unset` | Удалить запись по `{ id }`. |
16
- | `CHANGED` | `vne:turns:changed` | После успешного `SET`: `{ id, owner }`. |
11
+ | Key | String | Meaning |
12
+ | --------- | ------------------- | --------------------------------------------------------------- |
13
+ | `SET` | `vne:turns:set` | Write `{ id, owner }`. Without `id` or without `owner` — no-op. |
14
+ | `GET` | `vne:turns:get` | `emitOne({ id })` → `owner` (`string \| undefined`). |
15
+ | `UNSET` | `vne:turns:unset` | Remove the entry by `{ id }`. |
16
+ | `CHANGED` | `vne:turns:changed` | After a successful `SET`: `{ id, owner }`. |
17
17
 
18
18
  State: map `id → owner`.
19
19
 
20
- `STATE.SET` / `STATE.CLEAR` не пишут map напрямую: для новых и изменённых id — `TURNS.SET`, для удалённых — `TURNS.UNSET`.
20
+ `STATE.SET` / `STATE.CLEAR` do not write the map directly: for new and changed ids — `TURNS.SET`, for removed — `TURNS.UNSET`.
21
21
 
22
- ## Константы / Params / Settings
22
+ ## Constants / Params / Settings
23
23
 
24
- Нет.
24
+ None.
25
25
 
26
- ## Модули
26
+ ## Modules
27
27
 
28
- | Модуль | Зона ответственности |
28
+ | Module | Role |
29
29
  | ------- | ------------------------------------ |
30
30
  | `turns` | `SET` / `GET` / `UNSET` / `CHANGED`. |
31
31
 
32
- ## Близкие плагины
32
+ ## Related plugins
33
33
 
34
- - [game/checkers.md](../game/checkers.md) — пишет `TURNS.SET` с `CONST.CHECKERS.TURN_ID`, читает через `GET`; доска — через [`common/grid`](./grid.md)
35
- - [views.screens/checkers.md](../views.screens/checkers.md) / [ai/checkers.md](../ai/checkers.md) — зеркало через `CHANGED` / `UNSET`
34
+ - [game/checkers.md](../game/checkers.md) — writes `TURNS.SET` with `CONST.CHECKERS.TURN_ID`, reads via `GET`; board — via [`common/grid`](./grid.md)
35
+ - [views.screens/checkers.md](../views.screens/checkers.md) / [ai/checkers.md](../ai/checkers.md) — mirror via `CHANGED` / `UNSET`
@@ -1,54 +1,54 @@
1
1
  # plugins/controls/controls/
2
2
 
3
- Пакет: `@vnejs/plugins.controls.controls` · namespace: `CONTROLS`
3
+ Package: `@vnejs/plugins.controls.controls` · namespace: `CONTROLS`
4
4
 
5
- Стек обработчиков абстрактных control-кнопок (push/pop/emit) и текущий тип устройства ввода (keyboard / xbox / playstation).
5
+ Stack of abstract control-button handlers (push/pop/emit) and the current input device type (keyboard / xbox / playstation).
6
6
 
7
- ## События
7
+ ## Events
8
8
 
9
- Payloads и результаты хендлеров типизированы через module augmentation контракта (`VneEventPayloadMap` / `VneEventResultMap`); типы — в `@vnejs/contracts.controls`.
9
+ Handler payloads and results are typed through module augmentation of the contract (`VneEventPayloadMap` / `VneEventResultMap`). The types live in `@vnejs/contracts.controls`.
10
10
 
11
- | Ключ | Строка | Смысл |
12
- | ---------------- | ----------------------------- | ----------------------------------------------------------- |
13
- | `EMIT` | `vne:controls:emit` | Инициировать действие или цикл. |
14
- | `PUSH` | `vne:controls:push` | Добавить элемент в очередь или стек. |
15
- | `POP` | `vne:controls:pop` | Извлечь элемент из очереди или стека. |
16
- | `DEVICE_SET` | `vne:controls:device_set` | Запросить смену типа устройства (`{ device }`). |
17
- | `DEVICE_CHANGED` | `vne:controls:device_changed` | Тип устройства реально сменился (`{ device, prevDevice }`). |
11
+ | Key | String | Meaning |
12
+ | ---------------- | ----------------------------- | -------------------------------------------------------- |
13
+ | `EMIT` | `vne:controls:emit` | Start an action or cycle. |
14
+ | `PUSH` | `vne:controls:push` | Push onto the queue or stack. |
15
+ | `POP` | `vne:controls:pop` | Pop from the queue or stack. |
16
+ | `DEVICE_SET` | `vne:controls:device_set` | Request a device type change (`{ device }`). |
17
+ | `DEVICE_CHANGED` | `vne:controls:device_changed` | Device type actually changed (`{ device, prevDevice }`). |
18
18
 
19
- ## Константы
19
+ ## Constants
20
20
 
21
- | Ключ | Смысл |
22
- | --------------------- | ------------------------------------------------- |
23
- | `BUTTONS` | Абстрактные control-кнопки (`ACCEPT`, `BACK`, …). |
24
- | `DEVICES.KEYBOARD` | `"keyboard"` |
25
- | `DEVICES.XBOX` | `"xbox"` |
26
- | `DEVICES.PLAYSTATION` | `"playstation"` |
21
+ | Key | Meaning |
22
+ | --------------------- | ----------------------------------------------- |
23
+ | `BUTTONS` | Abstract control buttons (`ACCEPT`, `BACK`, …). |
24
+ | `DEVICES.KEYBOARD` | `"keyboard"` |
25
+ | `DEVICES.XBOX` | `"xbox"` |
26
+ | `DEVICES.PLAYSTATION` | `"playstation"` |
27
27
 
28
- ## Параметры
28
+ ## Parameters
29
29
 
30
- Нет.
30
+ None.
31
31
 
32
- ## Настройки
32
+ ## Settings
33
33
 
34
- Нет.
34
+ None.
35
35
 
36
- ## Модули
36
+ ## Modules
37
37
 
38
- | Модуль | Зона ответственности |
39
- | ----------------- | --------------------------------------------------------------------------------------------------- |
40
- | `controls` | Обрабатывает EMIT, PUSH, POP; во время async-обработчика EMIT выставляет `shared.isControlsLocked`. |
41
- | `controls.device` | Хранит `currentDevice`; на `DEVICE_SET` эмитит `DEVICE_CHANGED` только при реальной смене. |
38
+ | Module | Role |
39
+ | ----------------- | ------------------------------------------------------------------------------------------------ |
40
+ | `controls` | Handles EMIT, PUSH, POP; sets `shared.isControlsLocked` while an async EMIT handler runs. |
41
+ | `controls.device` | Holds `currentDevice`; on `DEVICE_SET` emits `DEVICE_CHANGED` only when the type really changes. |
42
42
 
43
- Источники `DEVICE_SET`: keyboard (keydown) → keyboard; `controls.gamepad.device` (button_press / axis_move) → xbox|playstation по `gamepad.id`; cursor (`mousemove`) → keyboard.
43
+ Sources of `DEVICE_SET`: keyboard (keydown) → keyboard; `controls.gamepad.device` (button_press / axis_move) → xbox|playstation by `gamepad.id`; cursor (`mousemove`) → keyboard.
44
44
 
45
- ## Близкие плагины
45
+ ## Related plugins
46
46
 
47
47
  ### plugins/core/
48
48
 
49
- — нет
49
+ — None
50
50
 
51
- ### Остальные
51
+ ### Other
52
52
 
53
53
  - [keyboard.md](./keyboard.md) — `KEYBOARD`
54
54
  - [gamepad.md](./gamepad.md) — `GAMEPAD`
@@ -1,66 +1,66 @@
1
1
  # plugins/controls/cursor/
2
2
 
3
- Пакет: `@vnejs/plugins.controls.cursor` · namespace: `CURSOR`
3
+ Package: `@vnejs/plugins.controls.cursor` · namespace: `CURSOR`
4
4
 
5
- Кастомный курсор: позиция, сдвиг, скролл под курсором, view и программный клик. DOM-клик с тача эмитит `HIDE`: у события `pointerType === "touch"`, перед кликом был `pointerdown` с тача, либо у клика `sourceCapabilities.firesTouchEvents`.
5
+ Custom cursor: position, shift, scroll under cursor, view, and programmatic click. A DOM click from touch emits `HIDE`: the event has `pointerType === "touch"`, there was a touch `pointerdown` before the click, or the click has `sourceCapabilities.firesTouchEvents`.
6
6
 
7
- ## События
7
+ ## Events
8
8
 
9
- Payloads и результаты хендлеров типизированы через module augmentation контракта (`VneEventPayloadMap` / `VneEventResultMap`); типы — в `@vnejs/contracts.controls.cursor`.
9
+ Handler payloads and results are typed through module augmentation of the contract (`VneEventPayloadMap` / `VneEventResultMap`). The types live in `@vnejs/contracts.controls.cursor`.
10
10
 
11
- | Ключ | Строка | Смысл |
11
+ | Key | String | Meaning |
12
12
  | -------------- | ------------------------- | ------------------------------------------------------------ |
13
- | `SHOW` | `vne:cursor:show` | Показать UI или слой. |
14
- | `HIDE` | `vne:cursor:hide` | Скрыть UI или слой. |
15
- | `UPDATE` | `vne:cursor:update` | Обновить состояние или отображение. |
16
- | `UPDATE_FAST` | `vne:cursor:update_fast` | Быстрое обновление отображения. |
17
- | `UPDATE_FORCE` | `vne:cursor:update_force` | Перерисовать view с `isForce`, стейт не меняет. |
18
- | `UPDATE_STATE` | `vne:cursor:update_state` | Слить partial в стейт контроллера (`CursorUpdatePayload`). |
19
- | `CLICK` | `vne:cursor:click` | Событие `CLICK` namespace плагина. |
20
- | `VIEW_SET` | `vne:cursor:view_set` | Записать или обновить значение. |
21
- | `MOVE` | `vne:cursor:move` | Событие `MOVE` namespace плагина. |
22
- | `MOVED` | `vne:cursor:moved` | Событие `MOVED` namespace плагина. |
23
- | `SET_X_Y` | `vne:cursor:set_x_y` | Установить позицию курсора (`{ x?, y? }`) с clamp и `MOVED`. |
24
- | `SHIFT` | `vne:cursor:shift` | Сдвиг позиции курсора (`{ x?, y? }`). |
25
- | `SCROLL` | `vne:cursor:scroll` | Скролл ближайшего scrollable под курсором (`{ x?, y? }`). |
26
-
27
- ## Константы
28
-
29
- Нет.
30
-
31
- ## Параметры
32
-
33
- | Ключ | Тип | Смысл |
34
- | ------------------------- | --------- | --------------------------------- |
35
- | `DEFAULT_VIEW` | `string` | Значение по умолчанию: "default". |
36
- | `DEFAULT_SHIFT_SPEED` | `number` | Значение по умолчанию: 1. |
37
- | `DEFAULT_SHIFT_REVERSE_X` | `boolean` | Значение по умолчанию: false. |
38
- | `DEFAULT_SHIFT_REVERSE_Y` | `boolean` | Значение по умолчанию: false. |
39
- | `BASE_SHIFT_SPEED` | `number` | Значение по умолчанию: 16. |
40
- | `DEFAULT_SCROLL_SPEED` | `number` | Значение по умолчанию: 1. |
41
- | `BASE_SCROLL_SPEED` | `number` | Значение по умолчанию: 16. |
42
-
43
- ## Настройки
44
-
45
- | Ключ | Тип | Смысл |
13
+ | `SHOW` | `vne:cursor:show` | Show UI or layer. |
14
+ | `HIDE` | `vne:cursor:hide` | Hide UI or layer. |
15
+ | `UPDATE` | `vne:cursor:update` | Update state or display. |
16
+ | `UPDATE_FAST` | `vne:cursor:update_fast` | Fast display update. |
17
+ | `UPDATE_FORCE` | `vne:cursor:update_force` | Redraw view with `isForce`; does not change state. |
18
+ | `UPDATE_STATE` | `vne:cursor:update_state` | Merge partial into controller state (`CursorUpdatePayload`). |
19
+ | `CLICK` | `vne:cursor:click` | Plugin namespace event `CLICK`. |
20
+ | `VIEW_SET` | `vne:cursor:view_set` | Write or update a value. |
21
+ | `MOVE` | `vne:cursor:move` | Plugin namespace event `MOVE`. |
22
+ | `MOVED` | `vne:cursor:moved` | Plugin namespace event `MOVED`. |
23
+ | `SET_X_Y` | `vne:cursor:set_x_y` | Set cursor position (`{ x?, y? }`) with clamp and `MOVED`. |
24
+ | `SHIFT` | `vne:cursor:shift` | Shift cursor position (`{ x?, y? }`). |
25
+ | `SCROLL` | `vne:cursor:scroll` | Scroll nearest scrollable under cursor (`{ x?, y? }`). |
26
+
27
+ ## Constants
28
+
29
+ None.
30
+
31
+ ## Parameters
32
+
33
+ | Key | Type | Meaning |
34
+ | ------------------------- | --------- | --------------------- |
35
+ | `DEFAULT_VIEW` | `string` | Default: `"default"`. |
36
+ | `DEFAULT_SHIFT_SPEED` | `number` | Default: `1`. |
37
+ | `DEFAULT_SHIFT_REVERSE_X` | `boolean` | Default: `false`. |
38
+ | `DEFAULT_SHIFT_REVERSE_Y` | `boolean` | Default: `false`. |
39
+ | `BASE_SHIFT_SPEED` | `number` | Default: `16`. |
40
+ | `DEFAULT_SCROLL_SPEED` | `number` | Default: `1`. |
41
+ | `BASE_SCROLL_SPEED` | `number` | Default: `16`. |
42
+
43
+ ## Settings
44
+
45
+ | Key | Type | Meaning |
46
46
  | ------------------------------------------------ | --------- | ---------------------------------------- |
47
- | `SHIFT_SPEED` (`vne:cursor:shift_speed`) | `number` | Множитель скорости сдвига курсора. |
48
- | `SHIFT_REVERSE_Y` (`vne:cursor:shift_reverse_y`) | `boolean` | Инверсия оси Y при `SHIFT`. |
49
- | `SHIFT_REVERSE_X` (`vne:cursor:shift_reverse_x`) | `boolean` | Инверсия оси X при `SHIFT`. |
50
- | `SCROLL_SPEED` (`vne:cursor:scroll_speed`) | `number` | Множитель скорости скролла при `SCROLL`. |
47
+ | `SHIFT_SPEED` (`vne:cursor:shift_speed`) | `number` | Multiplier for cursor shift speed. |
48
+ | `SHIFT_REVERSE_Y` (`vne:cursor:shift_reverse_y`) | `boolean` | Invert Y axis on `SHIFT`. |
49
+ | `SHIFT_REVERSE_X` (`vne:cursor:shift_reverse_x`) | `boolean` | Invert X axis on `SHIFT`. |
50
+ | `SCROLL_SPEED` (`vne:cursor:scroll_speed`) | `number` | Multiplier for scroll speed on `SCROLL`. |
51
51
 
52
- ## Модули
52
+ ## Modules
53
53
 
54
- | Модуль | Зона ответственности |
55
- | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
56
- | `cursor` (`Cursor`) | SET_X_Y, resize; владеет `globalState.cursor` (x/y). |
57
- | `cursor.view.set` (`CursorViewSet`) | VIEW_SET + STATE/STARTED для проставления `view`. Имя `view.set`, чтобы не пересечься с `plugins/views/cursor` (`cursor.view`). |
58
- | `cursor.move` (`CursorMove`) | MOVE (мышь) → `CONTROLS.DEVICE_SET` (keyboard) + SHOW + SET_X_Y; скрывает системный курсор. |
59
- | `cursor.shift` (`CursorShift`) | SHIFT + INIT `SHIFT_SPEED` / `SHIFT_REVERSE_*`. |
60
- | `cursor.click` (`CursorClick`) | CLICK по координатам курсора. DOM-клик с тача эмитит `HIDE`. |
61
- | `cursor.scroll` (`CursorScroll`) | SCROLL + INIT `SCROLL_SPEED`. |
54
+ | Module | Role |
55
+ | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
56
+ | `cursor` (`Cursor`) | SET_X_Y, resize; owns `globalState.cursor` (x/y). |
57
+ | `cursor.view.set` (`CursorViewSet`) | VIEW_SET + STATE/STARTED to set `view`. Name `view.set` to avoid clash with `plugins/views/cursor` (`cursor.view`). |
58
+ | `cursor.move` (`CursorMove`) | MOVE (mouse) → `CONTROLS.DEVICE_SET` (keyboard) + SHOW + SET_X_Y; hides system cursor. |
59
+ | `cursor.shift` (`CursorShift`) | SHIFT + INIT `SHIFT_SPEED` / `SHIFT_REVERSE_*`. |
60
+ | `cursor.click` (`CursorClick`) | CLICK at cursor coordinates. DOM click from touch emits `HIDE`. |
61
+ | `cursor.scroll` (`CursorScroll`) | SCROLL + INIT `SCROLL_SPEED`. |
62
62
 
63
- ## Близкие плагины
63
+ ## Related plugins
64
64
 
65
65
  ### plugins/core/
66
66
 
@@ -68,7 +68,7 @@ Payloads и результаты хендлеров типизированы ч
68
68
  - [state.md](../core/state.md) — `STATE`: EVENTS.SET, EVENTS.CLEAR
69
69
  - [system.md](../core/system.md) — `SYSTEM`: EVENTS.STARTED, EVENTS.RESIZE
70
70
 
71
- ### Остальные
71
+ ### Other
72
72
 
73
73
  - [controls.md](./controls.md) — `CONTROLS`: EVENTS.DEVICE_SET (mousemove → keyboard)
74
- - [gamepad.md](./gamepad.md) — стики через `compatibility.controls.gamepad-with-controls.cursor`: left → `SHIFT`, right → `SCROLL`; тип устройства (xbox|ps) — `controls.gamepad.device`
74
+ - [gamepad.md](./gamepad.md) — sticks via `compatibility.controls.gamepad-with-controls.cursor`: left → `SHIFT`, right → `SCROLL`; device type (xbox|ps) — `controls.gamepad.device`
@@ -1,72 +1,72 @@
1
1
  # plugins/controls/gamepad/
2
2
 
3
- Пакет: `@vnejs/plugins.controls.gamepad` · namespace: `GAMEPAD`
3
+ Package: `@vnejs/plugins.controls.gamepad` · namespace: `GAMEPAD`
4
4
 
5
- Геймпад → абстрактные control-события через joypad.js.
5
+ Gamepad → abstract control events via joypad.js.
6
6
 
7
- ## События
7
+ ## Events
8
8
 
9
- Payloads и результаты хендлеров типизированы через module augmentation контракта (`VneEventPayloadMap` / `VneEventResultMap`); типы — в `@vnejs/contracts.controls.gamepad`.
9
+ Handler payloads and results are typed through module augmentation of the contract (`VneEventPayloadMap` / `VneEventResultMap`). The types live in `@vnejs/contracts.controls.gamepad`.
10
10
 
11
- | Ключ | Строка | Смысл |
12
- | ------ | ------------------ | ----------------------------------------------------------------------- |
13
- | `EMIT` | `vne:gamepad:emit` | Проксировать нажатие в `CONTROLS.EMIT` (`{ keys }`) с lock `inProcess`. |
11
+ | Key | String | Meaning |
12
+ | ------ | ------------------ | -------------------------------------------------------------------- |
13
+ | `EMIT` | `vne:gamepad:emit` | Proxy a press to `CONTROLS.EMIT` (`{ keys }`) with lock `inProcess`. |
14
14
 
15
- ## Константы
15
+ ## Constants
16
16
 
17
- Нет.
17
+ None.
18
18
 
19
- ## Параметры
19
+ ## Parameters
20
20
 
21
- Нет.
21
+ None.
22
22
 
23
- ## Настройки
23
+ ## Settings
24
24
 
25
- Нет.
25
+ None.
26
26
 
27
- ## Маппинг кнопок (W3C / Xbox standard)
27
+ ## Button mapping (W3C / Xbox standard)
28
28
 
29
- После того как joypad выдаёт логическое имя `button_N`, модули кнопок и триггеров эмитят `GAMEPAD.EMIT`, а `controls.gamepad` проксирует ключи в `CONTROLS.EMIT`:
29
+ After joypad yields logical name `button_N`, button and trigger modules emit `GAMEPAD.EMIT`, and `controls.gamepad` proxies keys to `CONTROLS.EMIT`:
30
30
 
31
- | joypad | Физическая (standard) | Абстрактный control |
32
- | ---------------- | --------------------- | ------------------------------------------ |
33
- | `button_0` | A / Cross (низ) | `ACCEPT` |
34
- | `button_1` | B / Circle (право) | `BACK` |
35
- | `button_2` | X / Square (лево) | `INTERACT` |
36
- | `button_3` | Y / Triangle (верх) | `MENU` |
37
- | `button_4` | LB / L1 | `TAB_PREV` |
38
- | `button_5` | RB / R1 | `TAB_NEXT` |
39
- | `button_6` | LT / L2 | `FASTFORWARD_START` / `FASTFORWARD_FINISH` |
40
- | `button_7` | RT / R2 | (cursor click через compatibility) |
41
- | `button_8` | View / Select | `GAMEMENU` |
42
- | `button_9` | Menu / Start | `MENU` |
43
- | `button_12`…`15` | D-pad | `ARROW_*` |
31
+ | joypad | Physical (standard) | Abstract control |
32
+ | ---------------- | ------------------- | ------------------------------------------ |
33
+ | `button_0` | A / Cross (bottom) | `ACCEPT` |
34
+ | `button_1` | B / Circle (right) | `BACK` |
35
+ | `button_2` | X / Square (left) | `INTERACT` |
36
+ | `button_3` | Y / Triangle (top) | `MENU` |
37
+ | `button_4` | LB / L1 | `TAB_PREV` |
38
+ | `button_5` | RB / R1 | `TAB_NEXT` |
39
+ | `button_6` | LT / L2 | `FASTFORWARD_START` / `FASTFORWARD_FINISH` |
40
+ | `button_7` | RT / R2 | (cursor click via compatibility) |
41
+ | `button_8` | View / Select | `GAMEMENU` |
42
+ | `button_9` | Menu / Start | `MENU` |
43
+ | `button_12`…`15` | D-pad | `ARROW_*` |
44
44
 
45
- ## Профили и активный пад
45
+ ## Profiles and active pad
46
46
 
47
- joypad.js применяет **один** `customButtonMapping` ко всем устройствам. На Steam Deck часто видны сразу два пада (raw HID + Steam Input Xbox virtual); «тихий» virtual pad нельзя выбирать заранее.
47
+ joypad.js applies **one** `customButtonMapping` to all devices. On Steam Deck you often see two pads at once (raw HID + Steam Input Xbox virtual); you cannot pick the quiet virtual pad ahead of time.
48
48
 
49
- Поэтому плагин:
49
+ So the plugin:
50
50
 
51
- 1. Если пад один — сразу его профиль.
52
- 2. Если падов несколько — ждёт **первое реальное нажатие** и lock на тот `gamepad.index`, который его прислал (не на ghost Steam Input).
53
- 3. Дальше игнорирует события с других index; mapping только для locked-пада.
51
+ 1. If there is one pad — use its profile at once.
52
+ 2. If there are several pads — wait for the **first real press** and lock to the `gamepad.index` that sent it (not ghost Steam Input).
53
+ 3. Then ignore events from other indexes; mapping only for the locked pad.
54
54
 
55
- Приоритет профиля: `steam-deck` → `playstation` → `nintendo` → `firefox` → `standard`.
55
+ Profile priority: `steam-deck` → `playstation` → `nintendo` → `firefox` → `standard`.
56
56
 
57
- Сырой дамп кнопок для отладки — отдельный view-плагин [gamepad.debug](../views/gamepad.debug.md) (toggle в Extra).
57
+ Raw button dump for debugging — separate view plugin [gamepad.debug](../views/gamepad.debug.md) (toggle in Extra).
58
58
 
59
- | Профиль | Когда | Что делает |
60
- | ------------- | -------------------------------------------------------------------------------- | ------------------------------ |
61
- | `standard` | по умолчанию; preferred с `mapping: "standard"` | identity |
62
- | `steam-deck` | preferred без standard + id Deck/Steam (`28de` / `valve` / …) или `?steamDeck=1` | raw HID Deck → W3C |
63
- | `playstation` | `mapping !== "standard"` и id PS | raw Square-first → W3C |
64
- | `nintendo` | id Nintendo/Switch, в т.ч. при `standard` | A/B и X/Y под Nintendo confirm |
65
- | `firefox` | Firefox UA и не сработал device-профиль | индексы из доки joypad.js |
59
+ | Profile | When | What it does |
60
+ | ------------- | ----------------------------------------------------------------------------------- | -------------------------------- |
61
+ | `standard` | default; preferred with `mapping: "standard"` | identity |
62
+ | `steam-deck` | preferred without standard + Deck/Steam id (`28de` / `valve` / …) or `?steamDeck=1` | raw HID Deck → W3C |
63
+ | `playstation` | `mapping !== "standard"` and PS id | raw Square-first → W3C |
64
+ | `nintendo` | Nintendo/Switch id, including with `standard` | A/B and X/Y for Nintendo confirm |
65
+ | `firefox` | Firefox UA and no device profile matched | indexes from joypad.js docs |
66
66
 
67
- Electron при `STEAM_DECK=1` добавляет `?steamDeck=1`.
67
+ Electron with `STEAM_DECK=1` adds `?steamDeck=1`.
68
68
 
69
- Все маппинги — объект `CUSTOM_BUTTON_MAPPING` в `plugins/controls/gamepad/src/profiles/custom-button-mapping.ts`:
69
+ All mappings — object `CUSTOM_BUTTON_MAPPING` in `plugins/controls/gamepad/src/profiles/custom-button-mapping.ts`:
70
70
 
71
71
  - `CUSTOM_BUTTON_MAPPING.STANDARD` — `null` (identity)
72
72
  - `CUSTOM_BUTTON_MAPPING.STEAM_DECK` — A→7, B→5, X→6, Y→4, LB→3, RB→2, LT→1, RT→0, Select→12, Start→14, D-pad → 8/11/10/9
@@ -74,21 +74,21 @@ Electron при `STEAM_DECK=1` добавляет `?steamDeck=1`.
74
74
  - `CUSTOM_BUTTON_MAPPING.NINTENDO` — ACCEPT←1 (A), BACK←0 (B), INTERACT←3 (X), MENU←2 (Y)
75
75
  - `CUSTOM_BUTTON_MAPPING.FIREFOX` — `button_0`←1, `button_7`←11, `button_8`←12
76
76
 
77
- ## Модули
77
+ ## Modules
78
78
 
79
- | Модуль | Зона ответственности |
80
- | -------------------------- | ---------------------------------------------------------------------------------------------------------------- |
81
- | `controls.gamepad` | `connect` / `disconnect` → sync профиля; `GAMEPAD.EMIT` → `CONTROLS.EMIT` с lock `inProcess`. |
82
- | `controls.gamepad.buttons` | `button_press` / `button_release` → `GAMEPAD.EMIT`; lock активного пада. |
83
- | `controls.gamepad.device` | `button_press` / `axis_move` → `CONTROLS.DEVICE_SET` (`DEVICES.XBOX` или `DEVICES.PLAYSTATION` по `gamepad.id`). |
79
+ | Module | Role |
80
+ | -------------------------- | --------------------------------------------------------------------------------------------------------------- |
81
+ | `controls.gamepad` | `connect` / `disconnect` → sync profile; `GAMEPAD.EMIT` → `CONTROLS.EMIT` with lock `inProcess`. |
82
+ | `controls.gamepad.buttons` | `button_press` / `button_release` → `GAMEPAD.EMIT`; lock active pad. |
83
+ | `controls.gamepad.device` | `button_press` / `axis_move` → `CONTROLS.DEVICE_SET` (`DEVICES.XBOX` or `DEVICES.PLAYSTATION` by `gamepad.id`). |
84
84
 
85
- ## Близкие плагины
85
+ ## Related plugins
86
86
 
87
87
  ### plugins/core/
88
88
 
89
- — нет
89
+ — None
90
90
 
91
- ### Остальные
91
+ ### Other
92
92
 
93
- - [controls.md](./controls.md) — `CONTROLS`: EVENTS.EMIT, EVENTS.DEVICE_SET (через `controls.gamepad.device` → xbox|playstation), CONST.BUTTONS, CONST.DEVICES
94
- - [cursor.md](./cursor.md) — через `compatibility.controls.gamepad-with-controls.cursor`: left stick (оси 0–1) → `CURSOR.SHIFT`, right stick (оси 2–3) → `CURSOR.SCROLL`; RT → `CURSOR.CLICK`
93
+ - [controls.md](./controls.md) — `CONTROLS`: EVENTS.EMIT, EVENTS.DEVICE_SET (via `controls.gamepad.device` → xbox|playstation), CONST.BUTTONS, CONST.DEVICES
94
+ - [cursor.md](./cursor.md) — via `compatibility.controls.gamepad-with-controls.cursor`: left stick (axes 0–1) → `CURSOR.SHIFT`, right stick (axes 2–3) → `CURSOR.SCROLL`; RT → `CURSOR.CLICK`
@@ -1,37 +1,37 @@
1
1
  # plugins/controls/keyboard/
2
2
 
3
- Пакет: `@vnejs/plugins.controls.keyboard` · namespace: `KEYBOARD`
3
+ Package: `@vnejs/plugins.controls.keyboard` · namespace: `KEYBOARD`
4
4
 
5
- Клавиатура → абстрактные control-события.
5
+ Keyboard → abstract control events.
6
6
 
7
- ## События
7
+ ## Events
8
8
 
9
- Нет.
9
+ None.
10
10
 
11
- ## Константы
11
+ ## Constants
12
12
 
13
- Нет.
13
+ None.
14
14
 
15
- ## Параметры
15
+ ## Parameters
16
16
 
17
- Нет.
17
+ None.
18
18
 
19
- ## Настройки
19
+ ## Settings
20
20
 
21
- Нет.
21
+ None.
22
22
 
23
- ## Модули
23
+ ## Modules
24
24
 
25
- | Модуль | Зона ответственности |
26
- | ------------------- | ----------------------------- |
27
- | `controls.keyboard` | Подмодуль `keyboard` плагина. |
25
+ | Module | Role |
26
+ | ------------------- | ---------------------------- |
27
+ | `controls.keyboard` | Plugin `keyboard` submodule. |
28
28
 
29
- ## Близкие плагины
29
+ ## Related plugins
30
30
 
31
31
  ### plugins/core/
32
32
 
33
- — нет
33
+ — None
34
34
 
35
- ### Остальные
35
+ ### Other
36
36
 
37
37
  - [controls.md](./controls.md) — `CONTROLS`: EVENTS.EMIT, EVENTS.DEVICE_SET, CONST.BUTTONS, CONST.DEVICES