Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
2e65c0b4
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
2e65c0b4
编写于
6月 20, 2019
作者:
P
Peng Lyu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
better score for layout
上级
1b78a886
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
42 addition
and
74 deletion
+42
-74
src/vs/workbench/services/keybinding/browser/keymapService.ts
...vs/workbench/services/keybinding/browser/keymapService.ts
+20
-74
src/vs/workbench/services/keybinding/common/keymapInfo.ts
src/vs/workbench/services/keybinding/common/keymapInfo.ts
+22
-0
未找到文件。
src/vs/workbench/services/keybinding/browser/keymapService.ts
浏览文件 @
2e65c0b4
...
...
@@ -113,6 +113,22 @@ export class BrowserKeyboardMapperFactory {
return
null
;
}
let
usStandard
=
this
.
getUSStandardLayout
();
if
(
usStandard
)
{
let
maxScore
=
usStandard
.
getScore
(
keyMapping
);
let
result
=
usStandard
;
for
(
let
i
=
0
;
i
<
this
.
_mru
.
length
;
i
++
)
{
let
score
=
this
.
_mru
[
i
].
getScore
(
keyMapping
);
if
(
score
>
maxScore
)
{
maxScore
=
score
;
result
=
this
.
_mru
[
i
];
}
}
return
result
;
}
for
(
let
i
=
0
;
i
<
this
.
_mru
.
length
;
i
++
)
{
if
(
this
.
_mru
[
i
].
fuzzyEqual
(
keyMapping
))
{
return
this
.
_mru
[
i
];
...
...
@@ -234,26 +250,13 @@ export class BrowserKeyboardMapperFactory {
private
_setKeyboardData
(
keymapInfo
:
KeymapInfo
):
void
{
this
.
_initialized
=
true
;
this
.
_keyboardMapper
=
new
CachedKeyboardMapper
(
BrowserKeyboardMapperFactory
.
_createKeyboardMapper
(
keymapInfo
.
mapping
));
this
.
_keyboardMapper
=
new
CachedKeyboardMapper
(
BrowserKeyboardMapperFactory
.
_createKeyboardMapper
(
keymapInfo
));
this
.
_onDidChangeKeyboardMapper
.
fire
();
}
private
static
_isUSStandard
(
rawMapping
:
IKeyboardMapping
):
boolean
{
for
(
let
key
in
rawMapping
)
{
let
str
=
rawMapping
[
key
].
value
;
let
keyCode
=
KeyCodeUtils
.
fromString
(
str
);
let
usKeyCode
=
US_SCANCODE_MAP
[
key
];
if
(
keyCode
!==
usKeyCode
)
{
return
false
;
}
}
return
true
;
}
private
static
_createKeyboardMapper
(
rawMapping
:
IKeyboardMapping
):
IKeyboardMapper
{
const
isUSStandard
=
BrowserKeyboardMapperFactory
.
_isUSStandard
(
rawMapping
);
private
static
_createKeyboardMapper
(
keymapInfo
:
KeymapInfo
):
IKeyboardMapper
{
let
rawMapping
=
keymapInfo
.
mapping
;
const
isUSStandard
=
!!
keymapInfo
.
layout
.
isUSStandard
;
if
(
OS
===
OperatingSystem
.
Windows
)
{
return
new
WindowsKeyboardMapper
(
isUSStandard
,
<
IWindowsKeyboardMapping
>
rawMapping
);
}
...
...
@@ -353,63 +356,6 @@ export class BrowserKeyboardMapperFactory {
//#endregion
}
export
const
US_SCANCODE_MAP
:
{
[
str
:
string
]:
KeyCode
;
}
=
{};
(
function
()
{
function
define
(
scanCode
:
string
,
keyCode
:
KeyCode
):
void
{
US_SCANCODE_MAP
[
scanCode
]
=
keyCode
;
}
define
(
'
Backquote
'
,
KeyCode
.
US_BACKTICK
);
define
(
'
Backslash
'
,
KeyCode
.
US_BACKSLASH
);
define
(
'
BracketLeft
'
,
KeyCode
.
US_OPEN_SQUARE_BRACKET
);
define
(
'
BracketRight
'
,
KeyCode
.
US_CLOSE_SQUARE_BRACKET
);
define
(
'
Comma
'
,
KeyCode
.
US_COMMA
);
define
(
'
Digit0
'
,
KeyCode
.
KEY_0
);
define
(
'
Digit1
'
,
KeyCode
.
KEY_1
);
define
(
'
Digit2
'
,
KeyCode
.
KEY_2
);
define
(
'
Digit3
'
,
KeyCode
.
KEY_3
);
define
(
'
Digit4
'
,
KeyCode
.
KEY_4
);
define
(
'
Digit5
'
,
KeyCode
.
KEY_5
);
define
(
'
Digit6
'
,
KeyCode
.
KEY_6
);
define
(
'
Digit7
'
,
KeyCode
.
KEY_7
);
define
(
'
Digit8
'
,
KeyCode
.
KEY_8
);
define
(
'
Digit9
'
,
KeyCode
.
KEY_9
);
define
(
'
Equal
'
,
KeyCode
.
US_EQUAL
);
define
(
'
IntlBackslash
'
,
KeyCode
.
Unknown
);
define
(
'
KeyA
'
,
KeyCode
.
KEY_A
);
define
(
'
KeyB
'
,
KeyCode
.
KEY_B
);
define
(
'
KeyC
'
,
KeyCode
.
KEY_C
);
define
(
'
KeyD
'
,
KeyCode
.
KEY_D
);
define
(
'
KeyE
'
,
KeyCode
.
KEY_E
);
define
(
'
KeyF
'
,
KeyCode
.
KEY_F
);
define
(
'
KeyG
'
,
KeyCode
.
KEY_G
);
define
(
'
KeyH
'
,
KeyCode
.
KEY_H
);
define
(
'
KeyI
'
,
KeyCode
.
KEY_I
);
define
(
'
KeyJ
'
,
KeyCode
.
KEY_J
);
define
(
'
KeyK
'
,
KeyCode
.
KEY_K
);
define
(
'
KeyL
'
,
KeyCode
.
KEY_L
);
define
(
'
KeyM
'
,
KeyCode
.
KEY_M
);
define
(
'
KeyN
'
,
KeyCode
.
KEY_N
);
define
(
'
KeyO
'
,
KeyCode
.
KEY_O
);
define
(
'
KeyP
'
,
KeyCode
.
KEY_P
);
define
(
'
KeyQ
'
,
KeyCode
.
KEY_Q
);
define
(
'
KeyR
'
,
KeyCode
.
KEY_R
);
define
(
'
KeyS
'
,
KeyCode
.
KEY_S
);
define
(
'
KeyT
'
,
KeyCode
.
KEY_T
);
define
(
'
KeyU
'
,
KeyCode
.
KEY_U
);
define
(
'
KeyV
'
,
KeyCode
.
KEY_V
);
define
(
'
KeyW
'
,
KeyCode
.
KEY_W
);
define
(
'
KeyX
'
,
KeyCode
.
KEY_X
);
define
(
'
KeyY
'
,
KeyCode
.
KEY_Y
);
define
(
'
KeyZ
'
,
KeyCode
.
KEY_Z
);
define
(
'
Minus
'
,
KeyCode
.
US_MINUS
);
define
(
'
Period
'
,
KeyCode
.
US_DOT
);
define
(
'
Quote
'
,
KeyCode
.
US_QUOTE
);
define
(
'
Semicolon
'
,
KeyCode
.
US_SEMICOLON
);
define
(
'
Slash
'
,
KeyCode
.
US_SLASH
);
})();
class
UserKeyboardLayout
extends
Disposable
{
private
readonly
reloadConfigurationScheduler
:
RunOnceScheduler
;
protected
readonly
_onDidChange
:
Emitter
<
void
>
=
this
.
_register
(
new
Emitter
<
void
>
());
...
...
src/vs/workbench/services/keybinding/common/keymapInfo.ts
浏览文件 @
2e65c0b4
...
...
@@ -260,6 +260,28 @@ export class KeymapInfo {
this
.
layout
.
isUserKeyboardLayout
=
other
.
isUserKeyboardLayout
;
}
getScore
(
other
:
IRawMixedKeyboardMapping
):
number
{
let
score
=
0
;
for
(
let
key
in
other
)
{
if
(
isWindows
&&
(
key
===
'
Backslash
'
||
key
===
'
KeyQ
'
))
{
// keymap from Chromium is probably wrong.
continue
;
}
if
(
this
.
mapping
[
key
]
===
undefined
)
{
score
-=
1
;
}
let
currentMapping
=
this
.
mapping
[
key
];
let
otherMapping
=
other
[
key
];
if
(
currentMapping
.
value
!==
otherMapping
.
value
)
{
score
-=
1
;
}
}
return
score
;
}
fuzzyEqual
(
other
:
IRawMixedKeyboardMapping
):
boolean
{
for
(
let
key
in
other
)
{
if
(
isWindows
&&
(
key
===
'
Backslash
'
||
key
===
'
KeyQ
'
))
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录