@opensumi/ide-core-browser 2.21.8-rc-1670567192.0 → 2.21.8

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 (317) hide show
  1. package/lib/components/actions/index.d.ts.map +1 -1
  2. package/lib/components/actions/index.js +22 -2
  3. package/lib/components/actions/index.js.map +1 -1
  4. package/lib/components/tree/tree.module.less +0 -1
  5. package/lib/contextkey/testing.d.ts +0 -1
  6. package/lib/contextkey/testing.d.ts.map +1 -1
  7. package/lib/contextkey/testing.js +1 -2
  8. package/lib/contextkey/testing.js.map +1 -1
  9. package/lib/menu/next/menu.contrib.interface.d.ts +2 -3
  10. package/lib/menu/next/menu.contrib.interface.d.ts.map +1 -1
  11. package/lib/menu/next/menu.contrib.interface.js.map +1 -1
  12. package/lib/preferences/preference-configurations.js +1 -1
  13. package/lib/preferences/preference-configurations.js.map +1 -1
  14. package/lib/react-providers/config-provider.d.ts +0 -4
  15. package/lib/react-providers/config-provider.d.ts.map +1 -1
  16. package/lib/react-providers/config-provider.js.map +1 -1
  17. package/lib/services/storage-service.d.ts.map +1 -1
  18. package/lib/services/storage-service.js +1 -7
  19. package/lib/services/storage-service.js.map +1 -1
  20. package/lib/utils/label.d.ts.map +1 -1
  21. package/lib/utils/label.js +9 -16
  22. package/lib/utils/label.js.map +1 -1
  23. package/package.json +6 -7
  24. package/src/application/application-state-service.ts +0 -54
  25. package/src/application/application.service.ts +0 -51
  26. package/src/application/index.ts +0 -2
  27. package/src/authentication/authentication.contribution.ts +0 -35
  28. package/src/authentication/authentication.service.ts +0 -517
  29. package/src/bootstrap/app.ts +0 -745
  30. package/src/bootstrap/app.view.tsx +0 -88
  31. package/src/bootstrap/connection.ts +0 -116
  32. package/src/bootstrap/index.ts +0 -3
  33. package/src/bootstrap/inner-providers.ts +0 -297
  34. package/src/bootstrap/lifecycle.service.ts +0 -19
  35. package/src/browser-module.ts +0 -24
  36. package/src/common/common.command.ts +0 -977
  37. package/src/common/common.contribution.ts +0 -343
  38. package/src/common/common.define.ts +0 -55
  39. package/src/common/common.module.ts +0 -33
  40. package/src/common/common.storage.ts +0 -22
  41. package/src/common/container-id.ts +0 -12
  42. package/src/common/index.ts +0 -4
  43. package/src/components/actions/index.tsx +0 -486
  44. package/src/components/actions/placements.ts +0 -47
  45. package/src/components/actions/styles.module.less +0 -144
  46. package/src/components/badge/index.tsx +0 -1
  47. package/src/components/index.ts +0 -26
  48. package/src/components/layout/box-panel.tsx +0 -88
  49. package/src/components/layout/default-layout.tsx +0 -61
  50. package/src/components/layout/index.ts +0 -4
  51. package/src/components/layout/layout.ts +0 -80
  52. package/src/components/layout/split-panel.service.ts +0 -56
  53. package/src/components/layout/split-panel.tsx +0 -296
  54. package/src/components/layout/styles.module.less +0 -21
  55. package/src/components/loading/index.ts +0 -1
  56. package/src/components/loading/loading.less +0 -14
  57. package/src/components/loading/loading.view.tsx +0 -7
  58. package/src/components/loading/media/loading-dark.svg +0 -52
  59. package/src/components/loading/media/loading-hc.svg +0 -52
  60. package/src/components/loading/media/loading.svg +0 -52
  61. package/src/components/popover/styles.module.less +0 -81
  62. package/src/components/portal/index.tsx +0 -13
  63. package/src/components/progressbar/index.tsx +0 -16
  64. package/src/components/progressbar/styles.module.less +0 -31
  65. package/src/components/recycle-tree/index.ts +0 -1
  66. package/src/components/recycle-tree/recycle-tree.view.tsx +0 -368
  67. package/src/components/resize/resize.module.less +0 -78
  68. package/src/components/resize/resize.tsx +0 -663
  69. package/src/components/scroll/index.tsx +0 -386
  70. package/src/components/scroll/scroll.module.less +0 -108
  71. package/src/components/scrollbar/index.ts +0 -1
  72. package/src/components/scrollbar/scrollbar.less +0 -36
  73. package/src/components/scrollbar/scrollbar.view.ts +0 -8
  74. package/src/components/select/index.tsx +0 -12
  75. package/src/components/select/styles.less +0 -6
  76. package/src/components/tree/index.ts +0 -3
  77. package/src/components/tree/tree-node.view.tsx +0 -546
  78. package/src/components/tree/tree.module.less +0 -297
  79. package/src/components/tree/tree.view.tsx +0 -486
  80. package/src/context-key.ts +0 -48
  81. package/src/contextkey/dialog.ts +0 -3
  82. package/src/contextkey/explorer.ts +0 -26
  83. package/src/contextkey/index.ts +0 -6
  84. package/src/contextkey/outline.ts +0 -4
  85. package/src/contextkey/resource.ts +0 -61
  86. package/src/contextkey/terminal.ts +0 -7
  87. package/src/contextkey/testing.ts +0 -9
  88. package/src/contextkey/workspace.ts +0 -7
  89. package/src/core-preferences.ts +0 -318
  90. package/src/dom/index.ts +0 -176
  91. package/src/encoding-registry.ts +0 -83
  92. package/src/extensions/extensions-point.service.ts +0 -78
  93. package/src/extensions/index.ts +0 -3
  94. package/src/extensions/schema/browserViews.ts +0 -96
  95. package/src/extensions/schema/menu.ts +0 -245
  96. package/src/extensions/schema/opensumiExtensionPackageSchema.ts +0 -12
  97. package/src/extensions/schema/toolbar.ts +0 -338
  98. package/src/extensions/schema/vscodeExtensionPackageSchema.ts +0 -330
  99. package/src/fs/index.ts +0 -12
  100. package/src/hash-calculate/hash-calculate.contribution.ts +0 -19
  101. package/src/index.ts +0 -42
  102. package/src/keybinding/index.ts +0 -1
  103. package/src/keybinding/keybinding.ts +0 -908
  104. package/src/keyboard/index.ts +0 -3
  105. package/src/keyboard/keyboard-layout-provider.ts +0 -412
  106. package/src/keyboard/keyboard-layout-service.ts +0 -449
  107. package/src/keyboard/keys.ts +0 -748
  108. package/src/keyboard/layouts/_.contribution.ts +0 -24
  109. package/src/keyboard/layouts/cz.win.ts +0 -168
  110. package/src/keyboard/layouts/de-swiss.win.ts +0 -168
  111. package/src/keyboard/layouts/de.darwin.ts +0 -131
  112. package/src/keyboard/layouts/de.linux.ts +0 -186
  113. package/src/keyboard/layouts/de.win.ts +0 -168
  114. package/src/keyboard/layouts/dk.win.ts +0 -168
  115. package/src/keyboard/layouts/dvorak.darwin.ts +0 -131
  116. package/src/keyboard/layouts/en-belgian.win.ts +0 -168
  117. package/src/keyboard/layouts/en-ext.darwin.ts +0 -131
  118. package/src/keyboard/layouts/en-in.win.ts +0 -168
  119. package/src/keyboard/layouts/en-intl.darwin.ts +0 -131
  120. package/src/keyboard/layouts/en-intl.win.ts +0 -168
  121. package/src/keyboard/layouts/en-uk.darwin.ts +0 -131
  122. package/src/keyboard/layouts/en-uk.win.ts +0 -168
  123. package/src/keyboard/layouts/en.darwin.ts +0 -139
  124. package/src/keyboard/layouts/en.linux.ts +0 -186
  125. package/src/keyboard/layouts/en.win.ts +0 -173
  126. package/src/keyboard/layouts/es-latin.win.ts +0 -168
  127. package/src/keyboard/layouts/es.darwin.ts +0 -131
  128. package/src/keyboard/layouts/es.linux.ts +0 -186
  129. package/src/keyboard/layouts/es.win.ts +0 -168
  130. package/src/keyboard/layouts/fr.darwin.ts +0 -131
  131. package/src/keyboard/layouts/fr.linux.ts +0 -186
  132. package/src/keyboard/layouts/fr.win.ts +0 -168
  133. package/src/keyboard/layouts/hu.win.ts +0 -168
  134. package/src/keyboard/layouts/it.darwin.ts +0 -131
  135. package/src/keyboard/layouts/it.win.ts +0 -168
  136. package/src/keyboard/layouts/jp-roman.darwin.ts +0 -131
  137. package/src/keyboard/layouts/jp.darwin.ts +0 -131
  138. package/src/keyboard/layouts/ko.darwin.ts +0 -131
  139. package/src/keyboard/layouts/layout.contribution.darwin.ts +0 -23
  140. package/src/keyboard/layouts/layout.contribution.linux.ts +0 -12
  141. package/src/keyboard/layouts/layout.contribution.ts +0 -9
  142. package/src/keyboard/layouts/layout.contribution.win.ts +0 -29
  143. package/src/keyboard/layouts/no.win.ts +0 -168
  144. package/src/keyboard/layouts/pl.darwin.ts +0 -131
  145. package/src/keyboard/layouts/pl.win.ts +0 -168
  146. package/src/keyboard/layouts/pt-br.win.ts +0 -169
  147. package/src/keyboard/layouts/pt.darwin.ts +0 -131
  148. package/src/keyboard/layouts/pt.win.ts +0 -168
  149. package/src/keyboard/layouts/ru.darwin.ts +0 -131
  150. package/src/keyboard/layouts/ru.linux.ts +0 -186
  151. package/src/keyboard/layouts/ru.win.ts +0 -168
  152. package/src/keyboard/layouts/sv.darwin.ts +0 -131
  153. package/src/keyboard/layouts/sv.win.ts +0 -168
  154. package/src/keyboard/layouts/thai.win.ts +0 -168
  155. package/src/keyboard/layouts/tr.win.ts +0 -168
  156. package/src/keyboard/layouts/zh-hans.darwin.ts +0 -131
  157. package/src/layout/accordion/tab-bar-toolbar.tsx +0 -59
  158. package/src/layout/accordion/view-context-key.registry.ts +0 -34
  159. package/src/layout/constants.ts +0 -7
  160. package/src/layout/index.ts +0 -5
  161. package/src/layout/layout-hooks.ts +0 -68
  162. package/src/layout/layout-state.ts +0 -107
  163. package/src/layout/layout.interface.ts +0 -101
  164. package/src/layout/layout.ts +0 -80
  165. package/src/layout/view-id.ts +0 -18
  166. package/src/logger/browser-logger.ts +0 -51
  167. package/src/logger/index.ts +0 -1
  168. package/src/markdown/index.tsx +0 -62
  169. package/src/menu/next/base.ts +0 -513
  170. package/src/menu/next/ctxmenu-service.ts +0 -188
  171. package/src/menu/next/index.ts +0 -10
  172. package/src/menu/next/menu-id.ts +0 -86
  173. package/src/menu/next/menu-service.ts +0 -252
  174. package/src/menu/next/menu-util.ts +0 -77
  175. package/src/menu/next/menu.contrib.interface.ts +0 -79
  176. package/src/menu/next/menu.interface.ts +0 -253
  177. package/src/menu/next/menubar-service.ts +0 -211
  178. package/src/menu/next/renderer/ctxmenu/base.ts +0 -18
  179. package/src/menu/next/renderer/ctxmenu/browser.ts +0 -45
  180. package/src/menu/next/renderer/ctxmenu/electron.ts +0 -207
  181. package/src/menu/next/toolbar-action.service.ts +0 -132
  182. package/src/monaco/index.ts +0 -128
  183. package/src/opener/command-opener.ts +0 -42
  184. package/src/opener/default-opener.ts +0 -31
  185. package/src/opener/http-opener.ts +0 -25
  186. package/src/opener/index.ts +0 -19
  187. package/src/opener/opener.contribution.ts +0 -57
  188. package/src/opener/opener.service.ts +0 -66
  189. package/src/preferences/early-preferences.ts +0 -117
  190. package/src/preferences/index.ts +0 -9
  191. package/src/preferences/preference-configurations.ts +0 -77
  192. package/src/preferences/preference-contribution.ts +0 -401
  193. package/src/preferences/preference-provider.ts +0 -414
  194. package/src/preferences/preference-proxy.ts +0 -292
  195. package/src/preferences/preference-scope.ts +0 -3
  196. package/src/preferences/preference-service.ts +0 -571
  197. package/src/preferences/settings.ts +0 -53
  198. package/src/preferences/types.ts +0 -111
  199. package/src/progress/index.ts +0 -58
  200. package/src/progress/progress-bar.tsx +0 -22
  201. package/src/progress/progress-indicator.ts +0 -90
  202. package/src/progress/progress.module.less +0 -46
  203. package/src/progress/progress.service.tsx +0 -429
  204. package/src/quick-open/index.ts +0 -655
  205. package/src/quick-open/recent-files.ts +0 -68
  206. package/src/raw-context-key.ts +0 -116
  207. package/src/react-hooks/event.tsx +0 -80
  208. package/src/react-hooks/hot-key.tsx +0 -58
  209. package/src/react-hooks/index.ts +0 -3
  210. package/src/react-hooks/injectable-hooks.tsx +0 -35
  211. package/src/react-hooks/portal-hooks.tsx +0 -38
  212. package/src/react-providers/config-provider.tsx +0 -263
  213. package/src/react-providers/index.tsx +0 -2
  214. package/src/react-providers/slot.module.less +0 -19
  215. package/src/react-providers/slot.tsx +0 -242
  216. package/src/services/clipboard.service.ts +0 -97
  217. package/src/services/credentials-service.ts +0 -91
  218. package/src/services/crypto-service.ts +0 -23
  219. package/src/services/external-uri.service.ts +0 -68
  220. package/src/services/index.ts +0 -7
  221. package/src/services/label-service.ts +0 -386
  222. package/src/services/status-bar-service.ts +0 -108
  223. package/src/services/storage-service.ts +0 -197
  224. package/src/style/codicons/README.md +0 -22
  225. package/src/style/codicons/codicon-animations.css +0 -15
  226. package/src/style/codicons/generator.js +0 -15
  227. package/src/style/entry.less +0 -25
  228. package/src/style/icon/fileicons/file-default.svg +0 -1
  229. package/src/style/icon/fileicons/folder-default.svg +0 -1
  230. package/src/style/icon/fileicons.less +0 -20
  231. package/src/style/icon/icon.ts +0 -543
  232. package/src/style/icon/ide-iconfont.ts +0 -13
  233. package/src/style/icon/index.less +0 -54
  234. package/src/style/icon/seti.woff +0 -0
  235. package/src/style/icon/symbol-icons/boolean-dark.svg +0 -3
  236. package/src/style/icon/symbol-icons/boolean-light.svg +0 -3
  237. package/src/style/icon/symbol-icons/class-dark.svg +0 -3
  238. package/src/style/icon/symbol-icons/class-light.svg +0 -3
  239. package/src/style/icon/symbol-icons/constant-dark.svg +0 -4
  240. package/src/style/icon/symbol-icons/constant-light.svg +0 -4
  241. package/src/style/icon/symbol-icons/enumerator-dark.svg +0 -3
  242. package/src/style/icon/symbol-icons/enumerator-item-dark.svg +0 -3
  243. package/src/style/icon/symbol-icons/enumerator-item-light.svg +0 -3
  244. package/src/style/icon/symbol-icons/enumerator-light.svg +0 -3
  245. package/src/style/icon/symbol-icons/event-dark.svg +0 -3
  246. package/src/style/icon/symbol-icons/event-light.svg +0 -3
  247. package/src/style/icon/symbol-icons/field-dark.svg +0 -3
  248. package/src/style/icon/symbol-icons/field-light.svg +0 -3
  249. package/src/style/icon/symbol-icons/file-dark.svg +0 -3
  250. package/src/style/icon/symbol-icons/file-light.svg +0 -3
  251. package/src/style/icon/symbol-icons/indexer-dark.svg +0 -3
  252. package/src/style/icon/symbol-icons/indexer-light.svg +0 -3
  253. package/src/style/icon/symbol-icons/interface-dark.svg +0 -3
  254. package/src/style/icon/symbol-icons/interface-light.svg +0 -3
  255. package/src/style/icon/symbol-icons/keyword-dark.svg +0 -3
  256. package/src/style/icon/symbol-icons/keyword-light.svg +0 -3
  257. package/src/style/icon/symbol-icons/method-dark.svg +0 -3
  258. package/src/style/icon/symbol-icons/method-light.svg +0 -3
  259. package/src/style/icon/symbol-icons/namespace-dark.svg +0 -3
  260. package/src/style/icon/symbol-icons/namespace-light.svg +0 -3
  261. package/src/style/icon/symbol-icons/numeric-dark.svg +0 -3
  262. package/src/style/icon/symbol-icons/numeric-light.svg +0 -3
  263. package/src/style/icon/symbol-icons/operator-dark.svg +0 -3
  264. package/src/style/icon/symbol-icons/operator-light.svg +0 -3
  265. package/src/style/icon/symbol-icons/property-dark.svg +0 -3
  266. package/src/style/icon/symbol-icons/property-light.svg +0 -3
  267. package/src/style/icon/symbol-icons/snippet-dark.svg +0 -3
  268. package/src/style/icon/symbol-icons/snippet-light.svg +0 -3
  269. package/src/style/icon/symbol-icons/string-dark.svg +0 -3
  270. package/src/style/icon/symbol-icons/string-light.svg +0 -3
  271. package/src/style/icon/symbol-icons/structure-dark.svg +0 -3
  272. package/src/style/icon/symbol-icons/structure-light.svg +0 -3
  273. package/src/style/icon/symbol-icons/symbol-icons.css +0 -284
  274. package/src/style/icon/symbol-icons/template-dark.svg +0 -3
  275. package/src/style/icon/symbol-icons/template-light.svg +0 -3
  276. package/src/style/icon/symbol-icons/variable-dark.svg +0 -3
  277. package/src/style/icon/symbol-icons/variable-light.svg +0 -3
  278. package/src/style/icon.less +0 -8
  279. package/src/style/index.less +0 -14
  280. package/src/style/monaco-override.less +0 -116
  281. package/src/style/normalize.less +0 -92
  282. package/src/style/octicons/octicons-cdn.css +0 -720
  283. package/src/style/octicons/octicons.css +0 -714
  284. package/src/style/octicons/octicons.html +0 -1882
  285. package/src/style/octicons/octicons.svg +0 -582
  286. package/src/style/octicons/octicons.ttf +0 -0
  287. package/src/style/override.less +0 -97
  288. package/src/style/toolbar.less +0 -199
  289. package/src/style/utilities.less +0 -8
  290. package/src/style/variable.less +0 -8
  291. package/src/terminal/index.ts +0 -7
  292. package/src/toolbar/components/auto-complete.tsx +0 -0
  293. package/src/toolbar/components/button.tsx +0 -440
  294. package/src/toolbar/components/index.ts +0 -2
  295. package/src/toolbar/components/select.tsx +0 -189
  296. package/src/toolbar/index.ts +0 -3
  297. package/src/toolbar/toolbar.popover.registry.ts +0 -32
  298. package/src/toolbar/toolbar.registry.ts +0 -352
  299. package/src/toolbar/toolbar.tsx +0 -710
  300. package/src/toolbar/types.ts +0 -383
  301. package/src/tree/index.ts +0 -3
  302. package/src/tree/tree-expansion.ts +0 -25
  303. package/src/tree/tree-selection.ts +0 -89
  304. package/src/tree/tree.ts +0 -294
  305. package/src/utils/create-overlay.tsx +0 -53
  306. package/src/utils/electron.ts +0 -92
  307. package/src/utils/env.ts +0 -26
  308. package/src/utils/icon.ts +0 -13
  309. package/src/utils/index.ts +0 -7
  310. package/src/utils/json.ts +0 -251
  311. package/src/utils/label.tsx +0 -36
  312. package/src/utils/parse.ts +0 -72
  313. package/src/utils/react-hooks.ts +0 -118
  314. package/src/variable/index.ts +0 -1
  315. package/src/variable/variable.ts +0 -84
  316. package/src/window/index.ts +0 -34
  317. package/src/window/window.service.ts +0 -100
@@ -1,449 +0,0 @@
1
- /** ******************************************************************************
2
- * Copyright (C) 2018 Red Hat, Inc. and others.
3
- *
4
- * This program and the accompanying materials are made available under the
5
- * terms of the Eclipse Public License v. 2.0 which is available at
6
- * http://www.eclipse.org/legal/epl-2.0.
7
- *
8
- * This Source Code may also be made available under the following Secondary
9
- * Licenses when the conditions for such availability set forth in the Eclipse
10
- * Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
- * with the GNU Classpath Exception which is available at
12
- * https://www.gnu.org/software/classpath/license.html.
13
- *
14
- * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
- ********************************************************************************/
16
- // Some code copied and modified from https://github.com/eclipse-theia/theia/tree/v1.14.0/packages/core/src/browser/keyboard/keyboard-layout-service.ts
17
-
18
- import { Injectable, Autowired } from '@opensumi/di';
19
- import { isWindows, Emitter, Event } from '@opensumi/ide-core-common';
20
- import {
21
- KeyboardNativeLayoutService,
22
- KeyboardLayoutChangeNotifierService,
23
- KeymapInfo,
24
- IWindowsKeyMapping,
25
- } from '@opensumi/ide-core-common/lib/keyboard';
26
-
27
- import { KeyValidator } from './keyboard-layout-provider';
28
- import { KeyCode, Key } from './keys';
29
-
30
- export interface KeyboardLayout {
31
- /**
32
- * 映射美国标准键盘值到实际的KeyCode
33
- * 对应KeyboardLayoutService.getCharacterIndex中使用
34
- */
35
- readonly key2KeyCode: KeyCode[];
36
- /**
37
- * 映射键盘事件键值到用户可视化的字符
38
- */
39
- readonly code2Character: { [code: string]: string };
40
- }
41
-
42
- @Injectable()
43
- export class KeyboardLayoutService {
44
- @Autowired(KeyboardNativeLayoutService)
45
- protected readonly layoutProvider: KeyboardNativeLayoutService;
46
-
47
- @Autowired(KeyboardLayoutChangeNotifierService)
48
- protected readonly layoutChangeNotifier: KeyboardLayoutChangeNotifierService;
49
-
50
- @Autowired(KeyValidator)
51
- protected readonly keyValidator: KeyValidator;
52
-
53
- private currentLayout?: KeyboardLayout;
54
-
55
- protected updateLayout(newLayout: KeymapInfo): KeyboardLayout {
56
- const transformed = this.transformNativeLayout(newLayout);
57
- this.currentLayout = transformed;
58
- this.keyboardLayoutChanged.fire(transformed);
59
- return transformed;
60
- }
61
-
62
- protected keyboardLayoutChanged = new Emitter<KeyboardLayout>();
63
-
64
- get onKeyboardLayoutChanged(): Event<KeyboardLayout> {
65
- return this.keyboardLayoutChanged.event;
66
- }
67
-
68
- public async initialize(): Promise<void> {
69
- this.layoutChangeNotifier.onDidChangeNativeLayout((newLayout) => this.updateLayout(newLayout));
70
- const initialLayout = await this.layoutProvider.getNativeLayout();
71
- if (initialLayout) {
72
- this.updateLayout(initialLayout);
73
- }
74
- }
75
-
76
- /**
77
- * 使用当前的键盘布局信息解析快捷键 KeyCode
78
- * 如果当前没有监测到布局信息或当前布局信息不包含当前 KeyCode,直接返回入参的 KeyCode
79
- * @param inCode
80
- */
81
- public resolveKeyCode(inCode: KeyCode): KeyCode {
82
- const layout = this.currentLayout;
83
- if (layout && inCode.key) {
84
- for (let shift = 0; shift <= 1; shift++) {
85
- const index = this.getCharacterIndex(inCode.key, !!shift);
86
- const mappedCode = layout.key2KeyCode[index];
87
- if (mappedCode) {
88
- const transformed = this.transformKeyCode(inCode, mappedCode, !!shift);
89
- if (transformed) {
90
- return transformed;
91
- }
92
- }
93
- }
94
- }
95
- return inCode;
96
- }
97
-
98
- /**
99
- * 根据键盘键值返回对应字符串,主要用于UI展示
100
- * 如 shift 展示为 ⇧
101
- */
102
- public getKeyboardCharacter(key: Key): string {
103
- const layout = this.currentLayout;
104
- if (layout) {
105
- const value = layout.code2Character[key.code];
106
- if (value) {
107
- return value;
108
- }
109
- }
110
- return key.easyString;
111
- }
112
-
113
- /**
114
- * 当 KeybindingRegistry 处理 KeyboardEvent 时调用。
115
- * 用于对制定了 autodetect 模式下的键盘布局逻辑进行布局信息判断
116
- */
117
- public validateKeyCode(keyCode: KeyCode): void {
118
- this.keyValidator.validateKeyCode(keyCode);
119
- }
120
-
121
- protected transformKeyCode(inCode: KeyCode, mappedCode: KeyCode, keyNeedsShift: boolean): KeyCode | undefined {
122
- if (!inCode.shift && keyNeedsShift) {
123
- return undefined;
124
- }
125
- if (mappedCode.alt && (inCode.alt || inCode.ctrl || (inCode.shift && !keyNeedsShift))) {
126
- return undefined;
127
- }
128
- return new KeyCode({
129
- key: mappedCode.key,
130
- meta: inCode.meta,
131
- ctrl: inCode.ctrl || mappedCode.alt,
132
- shift: (inCode.shift && !keyNeedsShift) || mappedCode.shift,
133
- alt: inCode.alt || mappedCode.alt,
134
- });
135
- }
136
-
137
- protected transformNativeLayout(nativeLayout: KeymapInfo): KeyboardLayout {
138
- const key2KeyCode: KeyCode[] = new Array(2 * (Key.MAX_KEY_CODE + 1));
139
- const code2Character: { [code: string]: string } = {};
140
- const mapping = nativeLayout.mapping;
141
- for (const code in mapping) {
142
- if (mapping.hasOwnProperty(code)) {
143
- const keyMapping = mapping[code];
144
- const mappedKey = Key.getKey(code);
145
- if (mappedKey && this.shouldIncludeKey(code)) {
146
- if (isWindows) {
147
- this.addWindowsKeyMapping(
148
- key2KeyCode,
149
- mappedKey,
150
- (keyMapping as IWindowsKeyMapping).vkey,
151
- keyMapping.value,
152
- );
153
- } else {
154
- if (keyMapping.value) {
155
- this.addKeyMapping(key2KeyCode, mappedKey, keyMapping.value, false, false);
156
- }
157
- if (keyMapping.withShift) {
158
- this.addKeyMapping(key2KeyCode, mappedKey, keyMapping.withShift, true, false);
159
- }
160
- if (keyMapping.withAltGr) {
161
- this.addKeyMapping(key2KeyCode, mappedKey, keyMapping.withAltGr, false, true);
162
- }
163
- if (keyMapping.withShiftAltGr) {
164
- this.addKeyMapping(key2KeyCode, mappedKey, keyMapping.withShiftAltGr, true, true);
165
- }
166
- }
167
- }
168
- if (keyMapping.value) {
169
- code2Character[code] = keyMapping.value;
170
- }
171
- }
172
- }
173
- return { key2KeyCode, code2Character };
174
- }
175
-
176
- private shouldIncludeKey(code: string): boolean {
177
- /**
178
- * FIXME: 这里没有很好的考虑到 `NumLock` 影响下的交互
179
- * 如果 `NumLock` 为关闭状态,部分用户在 Windows 下的一些交互可能存在疑惑
180
- * 如,`Numpad3` 本身在 `NumLock` 关闭状态下指向 `PageDown`
181
- * 当在此处的逻辑处理下,`Numpad3` 只会被处理为 `Key.DIGIT3`
182
- * 该行为在 Mac 下无影响,因为 Mac 会把所有小键盘按键均作为输出值使用
183
- * 参考:https://github.com/microsoft/vscode/blob/436725c584e4422e6764a3c19970f7d1d7f6971c/src/vs/workbench/services/keybinding/browser/keybindingService.ts#L622
184
- */
185
- return !code.startsWith('Numpad');
186
- }
187
-
188
- private addKeyMapping(key2KeyCode: KeyCode[], mappedKey: Key, value: string, shift: boolean, alt: boolean): void {
189
- const key = VALUE_TO_KEY[value];
190
- if (key) {
191
- const index = this.getCharacterIndex(key.key, key.shift);
192
- if (key2KeyCode[index] === undefined) {
193
- key2KeyCode[index] = new KeyCode({
194
- key: mappedKey,
195
- shift,
196
- alt,
197
- character: value,
198
- });
199
- }
200
- }
201
- }
202
-
203
- private addWindowsKeyMapping(key2KeyCode: KeyCode[], mappedKey: Key, vkey: string, value: string) {
204
- const key = VKEY_TO_KEY[vkey];
205
- if (key) {
206
- const index = this.getCharacterIndex(key);
207
- if (key2KeyCode[index] === undefined) {
208
- key2KeyCode[index] = new KeyCode({
209
- key: mappedKey,
210
- character: value,
211
- });
212
- }
213
- }
214
- }
215
-
216
- protected getCharacterIndex(key: Key, shift?: boolean): number {
217
- if (shift) {
218
- return Key.MAX_KEY_CODE + key.keyCode + 1;
219
- } else {
220
- return key.keyCode;
221
- }
222
- }
223
- }
224
-
225
- /**
226
- * 字符值与标准美国键盘布局上的相应键的映射关系。
227
- */
228
- const VALUE_TO_KEY: { [value: string]: { key: Key; shift?: boolean } } = {
229
- '`': { key: Key.BACKQUOTE },
230
- '~': { key: Key.BACKQUOTE, shift: true },
231
- '1': { key: Key.DIGIT1 },
232
- '!': { key: Key.DIGIT1, shift: true },
233
- '2': { key: Key.DIGIT2 },
234
- '@': { key: Key.DIGIT2, shift: true },
235
- '3': { key: Key.DIGIT3 },
236
- '#': { key: Key.DIGIT3, shift: true },
237
- '4': { key: Key.DIGIT4 },
238
- $: { key: Key.DIGIT4, shift: true },
239
- '5': { key: Key.DIGIT5 },
240
- '%': { key: Key.DIGIT5, shift: true },
241
- '6': { key: Key.DIGIT6 },
242
- '^': { key: Key.DIGIT6, shift: true },
243
- '7': { key: Key.DIGIT7 },
244
- '&': { key: Key.DIGIT7, shift: true },
245
- '8': { key: Key.DIGIT8 },
246
- '*': { key: Key.DIGIT8, shift: true },
247
- '9': { key: Key.DIGIT9 },
248
- '(': { key: Key.DIGIT9, shift: true },
249
- '0': { key: Key.DIGIT0 },
250
- ')': { key: Key.DIGIT0, shift: true },
251
- '-': { key: Key.MINUS },
252
- _: { key: Key.MINUS, shift: true },
253
- '=': { key: Key.EQUAL },
254
- '+': { key: Key.EQUAL, shift: true },
255
-
256
- a: { key: Key.KEY_A },
257
- A: { key: Key.KEY_A, shift: true },
258
- b: { key: Key.KEY_B },
259
- B: { key: Key.KEY_B, shift: true },
260
- c: { key: Key.KEY_C },
261
- C: { key: Key.KEY_C, shift: true },
262
- d: { key: Key.KEY_D },
263
- D: { key: Key.KEY_D, shift: true },
264
- e: { key: Key.KEY_E },
265
- E: { key: Key.KEY_E, shift: true },
266
- f: { key: Key.KEY_F },
267
- F: { key: Key.KEY_F, shift: true },
268
- g: { key: Key.KEY_G },
269
- G: { key: Key.KEY_G, shift: true },
270
- h: { key: Key.KEY_H },
271
- H: { key: Key.KEY_H, shift: true },
272
- i: { key: Key.KEY_I },
273
- I: { key: Key.KEY_I, shift: true },
274
- j: { key: Key.KEY_J },
275
- J: { key: Key.KEY_J, shift: true },
276
- k: { key: Key.KEY_K },
277
- K: { key: Key.KEY_K, shift: true },
278
- l: { key: Key.KEY_L },
279
- L: { key: Key.KEY_L, shift: true },
280
- m: { key: Key.KEY_M },
281
- M: { key: Key.KEY_M, shift: true },
282
- n: { key: Key.KEY_N },
283
- N: { key: Key.KEY_N, shift: true },
284
- o: { key: Key.KEY_O },
285
- O: { key: Key.KEY_O, shift: true },
286
- p: { key: Key.KEY_P },
287
- P: { key: Key.KEY_P, shift: true },
288
- q: { key: Key.KEY_Q },
289
- Q: { key: Key.KEY_Q, shift: true },
290
- r: { key: Key.KEY_R },
291
- R: { key: Key.KEY_R, shift: true },
292
- s: { key: Key.KEY_S },
293
- S: { key: Key.KEY_S, shift: true },
294
- t: { key: Key.KEY_T },
295
- T: { key: Key.KEY_T, shift: true },
296
- u: { key: Key.KEY_U },
297
- U: { key: Key.KEY_U, shift: true },
298
- v: { key: Key.KEY_V },
299
- V: { key: Key.KEY_V, shift: true },
300
- w: { key: Key.KEY_W },
301
- W: { key: Key.KEY_W, shift: true },
302
- x: { key: Key.KEY_X },
303
- X: { key: Key.KEY_X, shift: true },
304
- y: { key: Key.KEY_Y },
305
- Y: { key: Key.KEY_Y, shift: true },
306
- z: { key: Key.KEY_Z },
307
- Z: { key: Key.KEY_Z, shift: true },
308
-
309
- '[': { key: Key.BRACKET_LEFT },
310
- '{': { key: Key.BRACKET_LEFT, shift: true },
311
- ']': { key: Key.BRACKET_RIGHT },
312
- '}': { key: Key.BRACKET_RIGHT, shift: true },
313
- ';': { key: Key.SEMICOLON },
314
- ':': { key: Key.SEMICOLON, shift: true },
315
- "'": { key: Key.QUOTE },
316
- '"': { key: Key.QUOTE, shift: true },
317
- ',': { key: Key.COMMA },
318
- '<': { key: Key.COMMA, shift: true },
319
- '.': { key: Key.PERIOD },
320
- '>': { key: Key.PERIOD, shift: true },
321
- '/': { key: Key.SLASH },
322
- '?': { key: Key.SLASH, shift: true },
323
- '\\': { key: Key.BACKSLASH },
324
- '|': { key: Key.BACKSLASH, shift: true },
325
-
326
- '\t': { key: Key.TAB },
327
- '\r': { key: Key.ENTER },
328
- '\n': { key: Key.ENTER },
329
- ' ': { key: Key.SPACE },
330
- };
331
-
332
- /**
333
- * Windows虚拟键与标准美国键盘布局上的相应键的映射关系。
334
- */
335
- const VKEY_TO_KEY: { [value: string]: Key } = {
336
- VK_SHIFT: Key.SHIFT_LEFT,
337
- VK_LSHIFT: Key.SHIFT_LEFT,
338
- VK_RSHIFT: Key.SHIFT_RIGHT,
339
- VK_CONTROL: Key.CONTROL_LEFT,
340
- VK_LCONTROL: Key.CONTROL_LEFT,
341
- VK_RCONTROL: Key.CONTROL_RIGHT,
342
- VK_MENU: Key.ALT_LEFT,
343
- VK_COMMAND: Key.OS_LEFT,
344
- VK_LWIN: Key.OS_LEFT,
345
- VK_RWIN: Key.OS_RIGHT,
346
-
347
- VK_0: Key.DIGIT0,
348
- VK_1: Key.DIGIT1,
349
- VK_2: Key.DIGIT2,
350
- VK_3: Key.DIGIT3,
351
- VK_4: Key.DIGIT4,
352
- VK_5: Key.DIGIT5,
353
- VK_6: Key.DIGIT6,
354
- VK_7: Key.DIGIT7,
355
- VK_8: Key.DIGIT8,
356
- VK_9: Key.DIGIT9,
357
- VK_A: Key.KEY_A,
358
- VK_B: Key.KEY_B,
359
- VK_C: Key.KEY_C,
360
- VK_D: Key.KEY_D,
361
- VK_E: Key.KEY_E,
362
- VK_F: Key.KEY_F,
363
- VK_G: Key.KEY_G,
364
- VK_H: Key.KEY_H,
365
- VK_I: Key.KEY_I,
366
- VK_J: Key.KEY_J,
367
- VK_K: Key.KEY_K,
368
- VK_L: Key.KEY_L,
369
- VK_M: Key.KEY_M,
370
- VK_N: Key.KEY_N,
371
- VK_O: Key.KEY_O,
372
- VK_P: Key.KEY_P,
373
- VK_Q: Key.KEY_Q,
374
- VK_R: Key.KEY_R,
375
- VK_S: Key.KEY_S,
376
- VK_T: Key.KEY_T,
377
- VK_U: Key.KEY_U,
378
- VK_V: Key.KEY_V,
379
- VK_W: Key.KEY_W,
380
- VK_X: Key.KEY_X,
381
- VK_Y: Key.KEY_Y,
382
- VK_Z: Key.KEY_Z,
383
-
384
- VK_OEM_1: Key.SEMICOLON,
385
- VK_OEM_2: Key.SLASH,
386
- VK_OEM_3: Key.BACKQUOTE,
387
- VK_OEM_4: Key.BRACKET_LEFT,
388
- VK_OEM_5: Key.BACKSLASH,
389
- VK_OEM_6: Key.BRACKET_RIGHT,
390
- VK_OEM_7: Key.QUOTE,
391
- VK_OEM_PLUS: Key.EQUAL,
392
- VK_OEM_COMMA: Key.COMMA,
393
- VK_OEM_MINUS: Key.MINUS,
394
- VK_OEM_PERIOD: Key.PERIOD,
395
-
396
- VK_F1: Key.F1,
397
- VK_F2: Key.F2,
398
- VK_F3: Key.F3,
399
- VK_F4: Key.F4,
400
- VK_F5: Key.F5,
401
- VK_F6: Key.F6,
402
- VK_F7: Key.F7,
403
- VK_F8: Key.F8,
404
- VK_F9: Key.F9,
405
- VK_F10: Key.F10,
406
- VK_F11: Key.F11,
407
- VK_F12: Key.F12,
408
- VK_F13: Key.F13,
409
- VK_F14: Key.F14,
410
- VK_F15: Key.F15,
411
- VK_F16: Key.F16,
412
- VK_F17: Key.F17,
413
- VK_F18: Key.F18,
414
- VK_F19: Key.F19,
415
-
416
- VK_BACK: Key.BACKSPACE,
417
- VK_TAB: Key.TAB,
418
- VK_RETURN: Key.ENTER,
419
- VK_CAPITAL: Key.CAPS_LOCK,
420
- VK_ESCAPE: Key.ESCAPE,
421
- VK_SPACE: Key.SPACE,
422
- VK_PRIOR: Key.PAGE_UP,
423
- VK_NEXT: Key.PAGE_DOWN,
424
- VK_END: Key.END,
425
- VK_HOME: Key.HOME,
426
- VK_INSERT: Key.INSERT,
427
- VK_DELETE: Key.DELETE,
428
- VK_LEFT: Key.ARROW_LEFT,
429
- VK_UP: Key.ARROW_UP,
430
- VK_RIGHT: Key.ARROW_RIGHT,
431
- VK_DOWN: Key.ARROW_DOWN,
432
-
433
- VK_NUMLOCK: Key.NUM_LOCK,
434
- VK_NUMPAD0: Key.DIGIT0,
435
- VK_NUMPAD1: Key.DIGIT1,
436
- VK_NUMPAD2: Key.DIGIT2,
437
- VK_NUMPAD3: Key.DIGIT3,
438
- VK_NUMPAD4: Key.DIGIT4,
439
- VK_NUMPAD5: Key.DIGIT5,
440
- VK_NUMPAD6: Key.DIGIT6,
441
- VK_NUMPAD7: Key.DIGIT7,
442
- VK_NUMPAD8: Key.DIGIT8,
443
- VK_NUMPAD9: Key.DIGIT9,
444
- VK_MULTIPLY: Key.NUMPAD_MULTIPLY,
445
- VK_ADD: Key.NUMPAD_ADD,
446
- VK_SUBTRACT: Key.NUMPAD_SUBTRACT,
447
- VK_DECIMAL: Key.NUMPAD_DECIMAL,
448
- VK_DIVIDE: Key.NUMPAD_DIVIDE,
449
- };