Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
49fb2f88
V
vscode
项目概览
掘金者说
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
49fb2f88
编写于
10月 25, 2016
作者:
A
Alex Dima
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fixes #14431: Render combining marks with other representative chars
上级
d8743b53
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
255 addition
and
14 deletion
+255
-14
src/vs/base/common/charCode.ts
src/vs/base/common/charCode.ts
+185
-0
src/vs/workbench/services/keybinding/electron-browser/nativeKeymap.ts
...ench/services/keybinding/electron-browser/nativeKeymap.ts
+70
-14
未找到文件。
src/vs/base/common/charCode.ts
浏览文件 @
49fb2f88
...
...
@@ -222,12 +222,197 @@ export const enum CharCode {
*/
Tilde
=
126
,
U_Combining_Grave_Accent
=
0x0300
,
// U+0300 Combining Grave Accent
U_Combining_Acute_Accent
=
0x0301
,
// U+0301 Combining Acute Accent
U_Combining_Circumflex_Accent
=
0x0302
,
// U+0302 Combining Circumflex Accent
U_Combining_Tilde
=
0x0303
,
// U+0303 Combining Tilde
U_Combining_Macron
=
0x0304
,
// U+0304 Combining Macron
U_Combining_Overline
=
0x0305
,
// U+0305 Combining Overline
U_Combining_Breve
=
0x0306
,
// U+0306 Combining Breve
U_Combining_Dot_Above
=
0x0307
,
// U+0307 Combining Dot Above
U_Combining_Diaeresis
=
0x0308
,
// U+0308 Combining Diaeresis
U_Combining_Hook_Above
=
0x0309
,
// U+0309 Combining Hook Above
U_Combining_Ring_Above
=
0x030A
,
// U+030A Combining Ring Above
U_Combining_Double_Acute_Accent
=
0x030B
,
// U+030B Combining Double Acute Accent
U_Combining_Caron
=
0x030C
,
// U+030C Combining Caron
U_Combining_Vertical_Line_Above
=
0x030D
,
// U+030D Combining Vertical Line Above
U_Combining_Double_Vertical_Line_Above
=
0x030E
,
// U+030E Combining Double Vertical Line Above
U_Combining_Double_Grave_Accent
=
0x030F
,
// U+030F Combining Double Grave Accent
U_Combining_Candrabindu
=
0x0310
,
// U+0310 Combining Candrabindu
U_Combining_Inverted_Breve
=
0x0311
,
// U+0311 Combining Inverted Breve
U_Combining_Turned_Comma_Above
=
0x0312
,
// U+0312 Combining Turned Comma Above
U_Combining_Comma_Above
=
0x0313
,
// U+0313 Combining Comma Above
U_Combining_Reversed_Comma_Above
=
0x0314
,
// U+0314 Combining Reversed Comma Above
U_Combining_Comma_Above_Right
=
0x0315
,
// U+0315 Combining Comma Above Right
U_Combining_Grave_Accent_Below
=
0x0316
,
// U+0316 Combining Grave Accent Below
U_Combining_Acute_Accent_Below
=
0x0317
,
// U+0317 Combining Acute Accent Below
U_Combining_Left_Tack_Below
=
0x0318
,
// U+0318 Combining Left Tack Below
U_Combining_Right_Tack_Below
=
0x0319
,
// U+0319 Combining Right Tack Below
U_Combining_Left_Angle_Above
=
0x031A
,
// U+031A Combining Left Angle Above
U_Combining_Horn
=
0x031B
,
// U+031B Combining Horn
U_Combining_Left_Half_Ring_Below
=
0x031C
,
// U+031C Combining Left Half Ring Below
U_Combining_Up_Tack_Below
=
0x031D
,
// U+031D Combining Up Tack Below
U_Combining_Down_Tack_Below
=
0x031E
,
// U+031E Combining Down Tack Below
U_Combining_Plus_Sign_Below
=
0x031F
,
// U+031F Combining Plus Sign Below
U_Combining_Minus_Sign_Below
=
0x0320
,
// U+0320 Combining Minus Sign Below
U_Combining_Palatalized_Hook_Below
=
0x0321
,
// U+0321 Combining Palatalized Hook Below
U_Combining_Retroflex_Hook_Below
=
0x0322
,
// U+0322 Combining Retroflex Hook Below
U_Combining_Dot_Below
=
0x0323
,
// U+0323 Combining Dot Below
U_Combining_Diaeresis_Below
=
0x0324
,
// U+0324 Combining Diaeresis Below
U_Combining_Ring_Below
=
0x0325
,
// U+0325 Combining Ring Below
U_Combining_Comma_Below
=
0x0326
,
// U+0326 Combining Comma Below
U_Combining_Cedilla
=
0x0327
,
// U+0327 Combining Cedilla
U_Combining_Ogonek
=
0x0328
,
// U+0328 Combining Ogonek
U_Combining_Vertical_Line_Below
=
0x0329
,
// U+0329 Combining Vertical Line Below
U_Combining_Bridge_Below
=
0x032A
,
// U+032A Combining Bridge Below
U_Combining_Inverted_Double_Arch_Below
=
0x032B
,
// U+032B Combining Inverted Double Arch Below
U_Combining_Caron_Below
=
0x032C
,
// U+032C Combining Caron Below
U_Combining_Circumflex_Accent_Below
=
0x032D
,
// U+032D Combining Circumflex Accent Below
U_Combining_Breve_Below
=
0x032E
,
// U+032E Combining Breve Below
U_Combining_Inverted_Breve_Below
=
0x032F
,
// U+032F Combining Inverted Breve Below
U_Combining_Tilde_Below
=
0x0330
,
// U+0330 Combining Tilde Below
U_Combining_Macron_Below
=
0x0331
,
// U+0331 Combining Macron Below
U_Combining_Low_Line
=
0x0332
,
// U+0332 Combining Low Line
U_Combining_Double_Low_Line
=
0x0333
,
// U+0333 Combining Double Low Line
U_Combining_Tilde_Overlay
=
0x0334
,
// U+0334 Combining Tilde Overlay
U_Combining_Short_Stroke_Overlay
=
0x0335
,
// U+0335 Combining Short Stroke Overlay
U_Combining_Long_Stroke_Overlay
=
0x0336
,
// U+0336 Combining Long Stroke Overlay
U_Combining_Short_Solidus_Overlay
=
0x0337
,
// U+0337 Combining Short Solidus Overlay
U_Combining_Long_Solidus_Overlay
=
0x0338
,
// U+0338 Combining Long Solidus Overlay
U_Combining_Right_Half_Ring_Below
=
0x0339
,
// U+0339 Combining Right Half Ring Below
U_Combining_Inverted_Bridge_Below
=
0x033A
,
// U+033A Combining Inverted Bridge Below
U_Combining_Square_Below
=
0x033B
,
// U+033B Combining Square Below
U_Combining_Seagull_Below
=
0x033C
,
// U+033C Combining Seagull Below
U_Combining_X_Above
=
0x033D
,
// U+033D Combining X Above
U_Combining_Vertical_Tilde
=
0x033E
,
// U+033E Combining Vertical Tilde
U_Combining_Double_Overline
=
0x033F
,
// U+033F Combining Double Overline
U_Combining_Grave_Tone_Mark
=
0x0340
,
// U+0340 Combining Grave Tone Mark
U_Combining_Acute_Tone_Mark
=
0x0341
,
// U+0341 Combining Acute Tone Mark
U_Combining_Greek_Perispomeni
=
0x0342
,
// U+0342 Combining Greek Perispomeni
U_Combining_Greek_Koronis
=
0x0343
,
// U+0343 Combining Greek Koronis
U_Combining_Greek_Dialytika_Tonos
=
0x0344
,
// U+0344 Combining Greek Dialytika Tonos
U_Combining_Greek_Ypogegrammeni
=
0x0345
,
// U+0345 Combining Greek Ypogegrammeni
U_Combining_Bridge_Above
=
0x0346
,
// U+0346 Combining Bridge Above
U_Combining_Equals_Sign_Below
=
0x0347
,
// U+0347 Combining Equals Sign Below
U_Combining_Double_Vertical_Line_Below
=
0x0348
,
// U+0348 Combining Double Vertical Line Below
U_Combining_Left_Angle_Below
=
0x0349
,
// U+0349 Combining Left Angle Below
U_Combining_Not_Tilde_Above
=
0x034A
,
// U+034A Combining Not Tilde Above
U_Combining_Homothetic_Above
=
0x034B
,
// U+034B Combining Homothetic Above
U_Combining_Almost_Equal_To_Above
=
0x034C
,
// U+034C Combining Almost Equal To Above
U_Combining_Left_Right_Arrow_Below
=
0x034D
,
// U+034D Combining Left Right Arrow Below
U_Combining_Upwards_Arrow_Below
=
0x034E
,
// U+034E Combining Upwards Arrow Below
U_Combining_Grapheme_Joiner
=
0x034F
,
// U+034F Combining Grapheme Joiner
U_Combining_Right_Arrowhead_Above
=
0x0350
,
// U+0350 Combining Right Arrowhead Above
U_Combining_Left_Half_Ring_Above
=
0x0351
,
// U+0351 Combining Left Half Ring Above
U_Combining_Fermata
=
0x0352
,
// U+0352 Combining Fermata
U_Combining_X_Below
=
0x0353
,
// U+0353 Combining X Below
U_Combining_Left_Arrowhead_Below
=
0x0354
,
// U+0354 Combining Left Arrowhead Below
U_Combining_Right_Arrowhead_Below
=
0x0355
,
// U+0355 Combining Right Arrowhead Below
U_Combining_Right_Arrowhead_And_Up_Arrowhead_Below
=
0x0356
,
// U+0356 Combining Right Arrowhead And Up Arrowhead Below
U_Combining_Right_Half_Ring_Above
=
0x0357
,
// U+0357 Combining Right Half Ring Above
U_Combining_Dot_Above_Right
=
0x0358
,
// U+0358 Combining Dot Above Right
U_Combining_Asterisk_Below
=
0x0359
,
// U+0359 Combining Asterisk Below
U_Combining_Double_Ring_Below
=
0x035A
,
// U+035A Combining Double Ring Below
U_Combining_Zigzag_Above
=
0x035B
,
// U+035B Combining Zigzag Above
U_Combining_Double_Breve_Below
=
0x035C
,
// U+035C Combining Double Breve Below
U_Combining_Double_Breve
=
0x035D
,
// U+035D Combining Double Breve
U_Combining_Double_Macron
=
0x035E
,
// U+035E Combining Double Macron
U_Combining_Double_Macron_Below
=
0x035F
,
// U+035F Combining Double Macron Below
U_Combining_Double_Tilde
=
0x0360
,
// U+0360 Combining Double Tilde
U_Combining_Double_Inverted_Breve
=
0x0361
,
// U+0361 Combining Double Inverted Breve
U_Combining_Double_Rightwards_Arrow_Below
=
0x0362
,
// U+0362 Combining Double Rightwards Arrow Below
U_Combining_Latin_Small_Letter_A
=
0x0363
,
// U+0363 Combining Latin Small Letter A
U_Combining_Latin_Small_Letter_E
=
0x0364
,
// U+0364 Combining Latin Small Letter E
U_Combining_Latin_Small_Letter_I
=
0x0365
,
// U+0365 Combining Latin Small Letter I
U_Combining_Latin_Small_Letter_O
=
0x0366
,
// U+0366 Combining Latin Small Letter O
U_Combining_Latin_Small_Letter_U
=
0x0367
,
// U+0367 Combining Latin Small Letter U
U_Combining_Latin_Small_Letter_C
=
0x0368
,
// U+0368 Combining Latin Small Letter C
U_Combining_Latin_Small_Letter_D
=
0x0369
,
// U+0369 Combining Latin Small Letter D
U_Combining_Latin_Small_Letter_H
=
0x036A
,
// U+036A Combining Latin Small Letter H
U_Combining_Latin_Small_Letter_M
=
0x036B
,
// U+036B Combining Latin Small Letter M
U_Combining_Latin_Small_Letter_R
=
0x036C
,
// U+036C Combining Latin Small Letter R
U_Combining_Latin_Small_Letter_T
=
0x036D
,
// U+036D Combining Latin Small Letter T
U_Combining_Latin_Small_Letter_V
=
0x036E
,
// U+036E Combining Latin Small Letter V
U_Combining_Latin_Small_Letter_X
=
0x036F
,
// U+036F Combining Latin Small Letter X
/**
* Unicode Character 'LINE SEPARATOR' (U+2028)
* http://www.fileformat.info/info/unicode/char/2028/index.htm
*/
LINE_SEPARATOR_2028
=
8232
,
// http://www.fileformat.info/info/unicode/category/Sk/list.htm
U_CIRCUMFLEX
=
0x005E
,
// U+005E CIRCUMFLEX
U_GRAVE_ACCENT
=
0x0060
,
// U+0060 GRAVE ACCENT
U_DIAERESIS
=
0x00A8
,
// U+00A8 DIAERESIS
U_MACRON
=
0x00AF
,
// U+00AF MACRON
U_ACUTE_ACCENT
=
0x00B4
,
// U+00B4 ACUTE ACCENT
U_CEDILLA
=
0x00B8
,
// U+00B8 CEDILLA
U_MODIFIER_LETTER_LEFT_ARROWHEAD
=
0x02C2
,
// U+02C2 MODIFIER LETTER LEFT ARROWHEAD
U_MODIFIER_LETTER_RIGHT_ARROWHEAD
=
0x02C3
,
// U+02C3 MODIFIER LETTER RIGHT ARROWHEAD
U_MODIFIER_LETTER_UP_ARROWHEAD
=
0x02C4
,
// U+02C4 MODIFIER LETTER UP ARROWHEAD
U_MODIFIER_LETTER_DOWN_ARROWHEAD
=
0x02C5
,
// U+02C5 MODIFIER LETTER DOWN ARROWHEAD
U_MODIFIER_LETTER_CENTRED_RIGHT_HALF_RING
=
0x02D2
,
// U+02D2 MODIFIER LETTER CENTRED RIGHT HALF RING
U_MODIFIER_LETTER_CENTRED_LEFT_HALF_RING
=
0x02D3
,
// U+02D3 MODIFIER LETTER CENTRED LEFT HALF RING
U_MODIFIER_LETTER_UP_TACK
=
0x02D4
,
// U+02D4 MODIFIER LETTER UP TACK
U_MODIFIER_LETTER_DOWN_TACK
=
0x02D5
,
// U+02D5 MODIFIER LETTER DOWN TACK
U_MODIFIER_LETTER_PLUS_SIGN
=
0x02D6
,
// U+02D6 MODIFIER LETTER PLUS SIGN
U_MODIFIER_LETTER_MINUS_SIGN
=
0x02D7
,
// U+02D7 MODIFIER LETTER MINUS SIGN
U_BREVE
=
0x02D8
,
// U+02D8 BREVE
U_DOT_ABOVE
=
0x02D9
,
// U+02D9 DOT ABOVE
U_RING_ABOVE
=
0x02DA
,
// U+02DA RING ABOVE
U_OGONEK
=
0x02DB
,
// U+02DB OGONEK
U_SMALL_TILDE
=
0x02DC
,
// U+02DC SMALL TILDE
U_DOUBLE_ACUTE_ACCENT
=
0x02DD
,
// U+02DD DOUBLE ACUTE ACCENT
U_MODIFIER_LETTER_RHOTIC_HOOK
=
0x02DE
,
// U+02DE MODIFIER LETTER RHOTIC HOOK
U_MODIFIER_LETTER_CROSS_ACCENT
=
0x02DF
,
// U+02DF MODIFIER LETTER CROSS ACCENT
U_MODIFIER_LETTER_EXTRA_HIGH_TONE_BAR
=
0x02E5
,
// U+02E5 MODIFIER LETTER EXTRA-HIGH TONE BAR
U_MODIFIER_LETTER_HIGH_TONE_BAR
=
0x02E6
,
// U+02E6 MODIFIER LETTER HIGH TONE BAR
U_MODIFIER_LETTER_MID_TONE_BAR
=
0x02E7
,
// U+02E7 MODIFIER LETTER MID TONE BAR
U_MODIFIER_LETTER_LOW_TONE_BAR
=
0x02E8
,
// U+02E8 MODIFIER LETTER LOW TONE BAR
U_MODIFIER_LETTER_EXTRA_LOW_TONE_BAR
=
0x02E9
,
// U+02E9 MODIFIER LETTER EXTRA-LOW TONE BAR
U_MODIFIER_LETTER_YIN_DEPARTING_TONE_MARK
=
0x02EA
,
// U+02EA MODIFIER LETTER YIN DEPARTING TONE MARK
U_MODIFIER_LETTER_YANG_DEPARTING_TONE_MARK
=
0x02EB
,
// U+02EB MODIFIER LETTER YANG DEPARTING TONE MARK
U_MODIFIER_LETTER_UNASPIRATED
=
0x02ED
,
// U+02ED MODIFIER LETTER UNASPIRATED
U_MODIFIER_LETTER_LOW_DOWN_ARROWHEAD
=
0x02EF
,
// U+02EF MODIFIER LETTER LOW DOWN ARROWHEAD
U_MODIFIER_LETTER_LOW_UP_ARROWHEAD
=
0x02F0
,
// U+02F0 MODIFIER LETTER LOW UP ARROWHEAD
U_MODIFIER_LETTER_LOW_LEFT_ARROWHEAD
=
0x02F1
,
// U+02F1 MODIFIER LETTER LOW LEFT ARROWHEAD
U_MODIFIER_LETTER_LOW_RIGHT_ARROWHEAD
=
0x02F2
,
// U+02F2 MODIFIER LETTER LOW RIGHT ARROWHEAD
U_MODIFIER_LETTER_LOW_RING
=
0x02F3
,
// U+02F3 MODIFIER LETTER LOW RING
U_MODIFIER_LETTER_MIDDLE_GRAVE_ACCENT
=
0x02F4
,
// U+02F4 MODIFIER LETTER MIDDLE GRAVE ACCENT
U_MODIFIER_LETTER_MIDDLE_DOUBLE_GRAVE_ACCENT
=
0x02F5
,
// U+02F5 MODIFIER LETTER MIDDLE DOUBLE GRAVE ACCENT
U_MODIFIER_LETTER_MIDDLE_DOUBLE_ACUTE_ACCENT
=
0x02F6
,
// U+02F6 MODIFIER LETTER MIDDLE DOUBLE ACUTE ACCENT
U_MODIFIER_LETTER_LOW_TILDE
=
0x02F7
,
// U+02F7 MODIFIER LETTER LOW TILDE
U_MODIFIER_LETTER_RAISED_COLON
=
0x02F8
,
// U+02F8 MODIFIER LETTER RAISED COLON
U_MODIFIER_LETTER_BEGIN_HIGH_TONE
=
0x02F9
,
// U+02F9 MODIFIER LETTER BEGIN HIGH TONE
U_MODIFIER_LETTER_END_HIGH_TONE
=
0x02FA
,
// U+02FA MODIFIER LETTER END HIGH TONE
U_MODIFIER_LETTER_BEGIN_LOW_TONE
=
0x02FB
,
// U+02FB MODIFIER LETTER BEGIN LOW TONE
U_MODIFIER_LETTER_END_LOW_TONE
=
0x02FC
,
// U+02FC MODIFIER LETTER END LOW TONE
U_MODIFIER_LETTER_SHELF
=
0x02FD
,
// U+02FD MODIFIER LETTER SHELF
U_MODIFIER_LETTER_OPEN_SHELF
=
0x02FE
,
// U+02FE MODIFIER LETTER OPEN SHELF
U_MODIFIER_LETTER_LOW_LEFT_ARROW
=
0x02FF
,
// U+02FF MODIFIER LETTER LOW LEFT ARROW
U_GREEK_LOWER_NUMERAL_SIGN
=
0x0375
,
// U+0375 GREEK LOWER NUMERAL SIGN
U_GREEK_TONOS
=
0x0384
,
// U+0384 GREEK TONOS
U_GREEK_DIALYTIKA_TONOS
=
0x0385
,
// U+0385 GREEK DIALYTIKA TONOS
U_GREEK_KORONIS
=
0x1FBD
,
// U+1FBD GREEK KORONIS
U_GREEK_PSILI
=
0x1FBF
,
// U+1FBF GREEK PSILI
U_GREEK_PERISPOMENI
=
0x1FC0
,
// U+1FC0 GREEK PERISPOMENI
U_GREEK_DIALYTIKA_AND_PERISPOMENI
=
0x1FC1
,
// U+1FC1 GREEK DIALYTIKA AND PERISPOMENI
U_GREEK_PSILI_AND_VARIA
=
0x1FCD
,
// U+1FCD GREEK PSILI AND VARIA
U_GREEK_PSILI_AND_OXIA
=
0x1FCE
,
// U+1FCE GREEK PSILI AND OXIA
U_GREEK_PSILI_AND_PERISPOMENI
=
0x1FCF
,
// U+1FCF GREEK PSILI AND PERISPOMENI
U_GREEK_DASIA_AND_VARIA
=
0x1FDD
,
// U+1FDD GREEK DASIA AND VARIA
U_GREEK_DASIA_AND_OXIA
=
0x1FDE
,
// U+1FDE GREEK DASIA AND OXIA
U_GREEK_DASIA_AND_PERISPOMENI
=
0x1FDF
,
// U+1FDF GREEK DASIA AND PERISPOMENI
U_GREEK_DIALYTIKA_AND_VARIA
=
0x1FED
,
// U+1FED GREEK DIALYTIKA AND VARIA
U_GREEK_DIALYTIKA_AND_OXIA
=
0x1FEE
,
// U+1FEE GREEK DIALYTIKA AND OXIA
U_GREEK_VARIA
=
0x1FEF
,
// U+1FEF GREEK VARIA
U_GREEK_OXIA
=
0x1FFD
,
// U+1FFD GREEK OXIA
U_GREEK_DASIA
=
0x1FFE
,
// U+1FFE GREEK DASIA
U_OVERLINE
=
0x203E
,
// Unicode Character 'OVERLINE'
/**
* UTF-8 BOM
* Unicode Character 'ZERO WIDTH NO-BREAK SPACE' (U+FEFF)
...
...
src/vs/workbench/services/keybinding/electron-browser/nativeKeymap.ts
浏览文件 @
49fb2f88
...
...
@@ -6,6 +6,7 @@
import
*
as
nativeKeymap
from
'
native-keymap
'
;
import
{
KeyCode
,
KeyCodeUtils
}
from
'
vs/base/common/keyCodes
'
;
import
{
CharCode
}
from
'
vs/base/common/charCode
'
;
import
{
IKeyBindingLabelProvider
,
MacUIKeyLabelProvider
,
ClassicUIKeyLabelProvider
,
AriaKeyLabelProvider
}
from
'
vs/base/common/keybinding
'
;
import
{
lookupKeyCode
,
setExtractKeyCode
}
from
'
vs/base/browser/keyboardEvent
'
;
import
Platform
=
require
(
'
vs/base/common/platform
'
);
...
...
@@ -355,8 +356,61 @@ export function getNativeLabelProvider(): IKeyBindingLabelProvider {
return
nativeLabelProvider
;
}
let
nativeLabelRemaps
:
string
[]
=
null
;
function
getNativeLabelProviderRemaps
():
string
[]
{
class
NativeLabel
{
public
static
Empty
=
new
NativeLabel
(
''
,
''
,
''
,
''
);
private
readonly
_rendered
:
string
;
constructor
(
value
:
string
,
withShift
:
string
,
withAltGr
:
string
,
withShiftAltGr
:
string
)
{
this
.
_rendered
=
value
||
withShift
;
this
.
_rendered
=
NativeLabel
.
_massageRenderedKey
(
this
.
_rendered
);
}
/**
* Very often, keyboards generate combining diacritical marks
* They reside in the range 0300..036F
* See ftp://ftp.unicode.org/Public/UNIDATA/Blocks.txt
* See https://en.wikipedia.org/wiki/Combining_Diacritical_Marks
*/
private
static
_massageRenderedKey
(
str
:
string
):
string
{
if
(
str
.
length
!==
1
)
{
return
str
;
}
return
String
.
fromCharCode
(
this
.
_combiningToRegular
(
str
.
charCodeAt
(
0
)));
}
/**
* Attempt to map a combining character to a regular one that renders the same way.
*
* To the brave person following me: Good Luck!
* https://www.compart.com/en/unicode/bidiclass/NSM
*/
private
static
_combiningToRegular
(
charCode
:
number
):
number
{
switch
(
charCode
)
{
case
CharCode
.
U_Combining_Grave_Accent
:
return
CharCode
.
U_GRAVE_ACCENT
;
case
CharCode
.
U_Combining_Acute_Accent
:
return
CharCode
.
U_ACUTE_ACCENT
;
case
CharCode
.
U_Combining_Circumflex_Accent
:
return
CharCode
.
U_CIRCUMFLEX
;
case
CharCode
.
U_Combining_Tilde
:
return
CharCode
.
U_SMALL_TILDE
;
case
CharCode
.
U_Combining_Macron
:
return
CharCode
.
U_MACRON
;
case
CharCode
.
U_Combining_Overline
:
return
CharCode
.
U_OVERLINE
;
case
CharCode
.
U_Combining_Breve
:
return
CharCode
.
U_BREVE
;
case
CharCode
.
U_Combining_Dot_Above
:
return
CharCode
.
U_DOT_ABOVE
;
case
CharCode
.
U_Combining_Diaeresis
:
return
CharCode
.
U_DIAERESIS
;
case
CharCode
.
U_Combining_Ring_Above
:
return
CharCode
.
U_RING_ABOVE
;
case
CharCode
.
U_Combining_Double_Acute_Accent
:
return
CharCode
.
U_DOUBLE_ACUTE_ACCENT
;
}
return
charCode
;
}
public
render
():
string
{
return
this
.
_rendered
;
}
}
let
nativeLabelRemaps
:
NativeLabel
[]
=
null
;
function
getNativeLabelProviderRemaps
():
NativeLabel
[]
{
if
(
!
nativeLabelRemaps
)
{
// See https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
// See https://github.com/Microsoft/node-native-keymap/blob/master/deps/chromium/keyboard_codes_win.h
...
...
@@ -387,12 +441,14 @@ function getNativeLabelProviderRemaps(): string[] {
let
nativeMapping
=
nativeMappings
[
i
];
if
(
interestingKeyCodes
[
nativeMapping
.
key_code
])
{
let
newValue
=
nativeMapping
.
value
||
nativeMapping
.
withShift
;
if
(
newValue
.
length
>
0
)
{
if
(
nativeMapping
.
value
.
length
>
0
||
nativeMapping
.
withShift
.
length
>
0
)
{
hadRemap
=
true
;
nativeLabelRemaps
[
NATIVE_KEY_CODE_TO_KEY_CODE
[
nativeMapping
.
key_code
]]
=
newValue
;
}
else
{
// console.warn('invalid remap for ', nativeMapping);
nativeLabelRemaps
[
NATIVE_KEY_CODE_TO_KEY_CODE
[
nativeMapping
.
key_code
]]
=
new
NativeLabel
(
nativeMapping
.
value
,
nativeMapping
.
withShift
,
nativeMapping
.
withAltGr
,
nativeMapping
.
withShiftAltGr
);
}
}
}
...
...
@@ -401,7 +457,7 @@ function getNativeLabelProviderRemaps(): string[] {
for
(
let
interestingKeyCode
in
interestingKeyCodes
)
{
if
(
interestingKeyCodes
.
hasOwnProperty
(
interestingKeyCode
))
{
let
keyCode
=
NATIVE_KEY_CODE_TO_KEY_CODE
[
interestingKeyCode
];
nativeLabelRemaps
[
keyCode
]
=
nativeLabelRemaps
[
keyCode
]
||
''
;
nativeLabelRemaps
[
keyCode
]
=
nativeLabelRemaps
[
keyCode
]
||
NativeLabel
.
Empty
;
}
}
}
...
...
@@ -411,39 +467,39 @@ function getNativeLabelProviderRemaps(): string[] {
}
class
NativeMacUIKeyLabelProvider
extends
MacUIKeyLabelProvider
{
constructor
(
private
remaps
:
string
[])
{
constructor
(
private
remaps
:
NativeLabel
[])
{
super
();
}
public
getLabelForKey
(
keyCode
:
KeyCode
):
string
{
if
(
this
.
remaps
[
keyCode
]
!==
null
)
{
return
this
.
remaps
[
keyCode
];
return
this
.
remaps
[
keyCode
]
.
render
()
;
}
return
super
.
getLabelForKey
(
keyCode
);
}
}
class
NativeClassicUIKeyLabelProvider
extends
ClassicUIKeyLabelProvider
{
constructor
(
private
remaps
:
string
[])
{
constructor
(
private
remaps
:
NativeLabel
[])
{
super
();
}
public
getLabelForKey
(
keyCode
:
KeyCode
):
string
{
if
(
this
.
remaps
[
keyCode
]
!==
null
)
{
return
this
.
remaps
[
keyCode
];
return
this
.
remaps
[
keyCode
]
.
render
()
;
}
return
super
.
getLabelForKey
(
keyCode
);
}
}
class
NativeAriaKeyLabelProvider
extends
AriaKeyLabelProvider
{
constructor
(
private
remaps
:
string
[])
{
constructor
(
private
remaps
:
NativeLabel
[])
{
super
();
}
public
getLabelForKey
(
keyCode
:
KeyCode
):
string
{
if
(
this
.
remaps
[
keyCode
]
!==
null
)
{
return
this
.
remaps
[
keyCode
];
return
this
.
remaps
[
keyCode
]
.
render
()
;
}
return
super
.
getLabelForKey
(
keyCode
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录