Towards inlining KeyMod

This commit is contained in:
Alex Dima 2016-09-12 22:32:52 +02:00
parent c291a21367
commit 262c0afaac
4 changed files with 33 additions and 23 deletions

View file

@ -39,8 +39,7 @@ declare module monaco {
#include(vs/base/common/winjs.base.d.ts): TValueCallback, ProgressCallback, TPromise
#include(vs/base/common/cancellation): CancellationTokenSource, CancellationToken
#include(vs/base/common/uri): URI
#include(vs/editor/common/standalone/standaloneBase): KeyCode
#include(vs/base/common/keyCodes): KeyMod
#include(vs/editor/common/standalone/standaloneBase): KeyCode, KeyMod
#include(vs/base/common/htmlContent): MarkedString
#include(vs/base/browser/keyboardEvent): IKeyboardEvent
#include(vs/base/browser/mouseEvent): IMouseEvent

View file

@ -419,12 +419,13 @@ export namespace KeyCodeUtils {
// 13: 1 bit for alt
// 12: 1 bit for winCtrl
// 0: 12 bits for keyCode (up to a maximum keyCode of 4096. Given we have 83 at this point thats good enough)
const BIN_CTRLCMD_MASK = 1 << 15;
const BIN_SHIFT_MASK = 1 << 14;
const BIN_ALT_MASK = 1 << 13;
const BIN_WINCTRL_MASK = 1 << 12;
const BIN_KEYCODE_MASK = 0x00000fff;
const enum BinaryKeybindingsMask {
CtrlCmd = 1 << 15,
Shift = 1 << 14,
Alt = 1 << 13,
WinCtrl = 1 << 12,
KeyCode = 0x00000fff
}
export class BinaryKeybindings {
@ -441,37 +442,33 @@ export class BinaryKeybindings {
}
public static hasCtrlCmd(keybinding:number): boolean {
return (keybinding & BIN_CTRLCMD_MASK ? true : false);
return (keybinding & BinaryKeybindingsMask.CtrlCmd ? true : false);
}
public static hasShift(keybinding:number): boolean {
return (keybinding & BIN_SHIFT_MASK ? true : false);
return (keybinding & BinaryKeybindingsMask.Shift ? true : false);
}
public static hasAlt(keybinding:number): boolean {
return (keybinding & BIN_ALT_MASK ? true : false);
return (keybinding & BinaryKeybindingsMask.Alt ? true : false);
}
public static hasWinCtrl(keybinding:number): boolean {
return (keybinding & BIN_WINCTRL_MASK ? true : false);
return (keybinding & BinaryKeybindingsMask.WinCtrl ? true : false);
}
public static extractKeyCode(keybinding:number): KeyCode {
return (keybinding & BIN_KEYCODE_MASK);
return (keybinding & BinaryKeybindingsMask.KeyCode);
}
}
export class KeyMod {
public static CtrlCmd = BIN_CTRLCMD_MASK;
public static Shift = BIN_SHIFT_MASK;
public static Alt = BIN_ALT_MASK;
public static WinCtrl = BIN_WINCTRL_MASK;
public static chord(firstPart:number, secondPart:number): number {
return KeyChord(firstPart, secondPart);
}
public static CtrlCmd:number = BinaryKeybindingsMask.CtrlCmd;
public static Shift:number = BinaryKeybindingsMask.Shift;
public static Alt:number = BinaryKeybindingsMask.Alt;
public static WinCtrl:number = BinaryKeybindingsMask.WinCtrl;
}
export function KeyChord(firstPart:number, secondPart:number): number {

View file

@ -5,7 +5,7 @@
'use strict';
import {Emitter} from 'vs/base/common/event';
import {KeyMod} from 'vs/base/common/keyCodes';
import {KeyMod as ConstKeyMod, KeyChord} from 'vs/base/common/keyCodes';
import {Position} from 'vs/editor/common/core/position';
import {Range} from 'vs/editor/common/core/range';
import {Selection, SelectionDirection} from 'vs/editor/common/core/selection';
@ -14,6 +14,20 @@ import {CancellationTokenSource} from 'vs/base/common/cancellation';
import Severity from 'vs/base/common/severity';
import URI from 'vs/base/common/uri';
// --------------------------------------------
// This is repeated here so it can be exported
// --------------------------------------------
export class KeyMod {
public static CtrlCmd:number = ConstKeyMod.CtrlCmd;
public static Shift:number = ConstKeyMod.Shift;
public static Alt:number = ConstKeyMod.Alt;
public static WinCtrl:number = ConstKeyMod.WinCtrl;
public static chord(firstPart:number, secondPart:number): number {
return KeyChord(firstPart, secondPart);
}
}
// --------------------------------------------
// This is repeated here so it can be exported
// --------------------------------------------

2
src/vs/monaco.d.ts vendored
View file

@ -170,6 +170,7 @@ declare module monaco {
toJSON(): any;
static revive(data: any): Uri;
}
/**
* Virtual Key Codes, the value does not hold any inherent meaning.
* Inspired somewhat from https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx
@ -344,7 +345,6 @@ declare module monaco {
*/
MAX_VALUE = 109,
}
export class KeyMod {
static CtrlCmd: number;
static Shift: number;