305 lines
16 KiB
JavaScript
305 lines
16 KiB
JavaScript
/*
|
|
* (c) Copyright Ascensio System SIA 2010-2024
|
|
*
|
|
* This program is a free software product. You can redistribute it and/or
|
|
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
|
* version 3 as published by the Free Software Foundation. In accordance with
|
|
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
|
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
|
* of any third-party rights.
|
|
*
|
|
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
|
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
|
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
|
*
|
|
* You can contact Ascensio System SIA at 20A-6 Ernesta Birznieka-Upish
|
|
* street, Riga, Latvia, EU, LV-1050.
|
|
*
|
|
* The interactive user interfaces in modified source and object code versions
|
|
* of the Program must display Appropriate Legal Notices, as required under
|
|
* Section 5 of the GNU AGPL version 3.
|
|
*
|
|
* Pursuant to Section 7(b) of the License you must retain the original Product
|
|
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
|
* grant you any rights under trademark law for use of our trademarks.
|
|
*
|
|
* All the Product's GUI elements, including illustrations and icon sets, as
|
|
* well as technical writing content are licensed under the terms of the
|
|
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
|
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
|
*
|
|
*/
|
|
|
|
(function (window)
|
|
{
|
|
window.AscTestShortcut = {};
|
|
const testFlags = {
|
|
nothing: 0x0000,
|
|
macOs: 0x0001
|
|
};
|
|
const testHotkeyActions = {
|
|
removeBackSymbol : 0,
|
|
removeBackWord : 1,
|
|
removeShape : 2,
|
|
removeForm : 3,
|
|
moveToNextForm : 4,
|
|
moveToPreviousForm : 5,
|
|
handleTab : 6,
|
|
moveToNextCell : 7,
|
|
moveToPreviousCell : 8,
|
|
selectNextObject : 9,
|
|
selectPreviousObject : 10,
|
|
BeginIndent : 11,
|
|
BeginUnIndent : 12,
|
|
addTabToParagraph : 13,
|
|
visitHyperlink : 14,
|
|
addBreakLineInlineLvlSdt : 15,
|
|
createTextBoxContent : 16,
|
|
createTextBody : 17,
|
|
addNewLineToMath : 18,
|
|
moveCursorToStartPositionShapeEnter: 19,
|
|
selectAllShapeEnter : 20,
|
|
selectAllInChartTitle : 22,
|
|
addNewParagraphContent : 23,
|
|
addNewParagraphMath : 24,
|
|
closeAllWindowsPopups : 25,
|
|
resetShapeSelection : 26,
|
|
resetStartAddShape : 27,
|
|
resetFormattingByExample : 28,
|
|
resetMarkerFormat : 29,
|
|
resetDragNDrop : 30,
|
|
endEditing : 31,
|
|
toggleCheckBox : 32,
|
|
pageUp : 33,
|
|
pageDown : 34,
|
|
moveToEndDocument : 35,
|
|
moveToEndLine : 36,
|
|
selectToEndDocument : 37,
|
|
selectToEndLine : 38,
|
|
selectToStartLine : 39,
|
|
selectToStartDocument : 40,
|
|
moveToStartLine : 41,
|
|
moveToStartDocument : 42,
|
|
selectLeftWord : 43,
|
|
moveToLeftWord : 44,
|
|
selectLeftChar : 45,
|
|
moveToLeftChar : 46,
|
|
moveToRightChar : 47,
|
|
selectRightChar : 48,
|
|
moveToRightWord : 49,
|
|
selectRightWord : 50,
|
|
moveUp : 51,
|
|
selectUp : 52,
|
|
previousOptionComboBox : 53,
|
|
moveDown : 54,
|
|
selectDown : 55,
|
|
nextOptionComboBox : 56,
|
|
removeFrontSymbol : 57,
|
|
removeFrontWord : 58,
|
|
unicodeToChar : 59,
|
|
showContextMenu : 60,
|
|
disableNumLock : 61,
|
|
disableScrollLock : 62,
|
|
addSJKSpace : 63,
|
|
bigMoveGraphicObjectLeft : 64,
|
|
littleMoveGraphicObjectLeft : 65,
|
|
bigMoveGraphicObjectRight : 66,
|
|
littleMoveGraphicObjectRight : 67,
|
|
bigMoveGraphicObjectDown : 68,
|
|
littleMoveGraphicObjectDown : 69,
|
|
bigMoveGraphicObjectUp : 70,
|
|
littleMoveGraphicObjectUp : 71,
|
|
moveToPreviousPage : 72,
|
|
selectToPreviousPage : 73,
|
|
moveToStartPreviousPage : 74,
|
|
selectToStartPreviousPage : 75,
|
|
moveToPreviousHeaderFooter : 76,
|
|
moveToPreviousHeader : 77,
|
|
moveToNextPage : 78,
|
|
selectToNextPage : 79,
|
|
moveToStartNextPage : 80,
|
|
selectToStartNextPage : 81,
|
|
moveToNextHeaderFooter : 82,
|
|
moveToNextHeader : 83,
|
|
disableBrowserZoomIn : 84,
|
|
};
|
|
|
|
const testHotkeyEvents = {};
|
|
testHotkeyEvents[testHotkeyActions.bigMoveGraphicObjectLeft] = [CreateTestEvent(37, false, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.littleMoveGraphicObjectLeft] = [CreateTestEvent(37, true, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.bigMoveGraphicObjectRight] = [CreateTestEvent(39, false, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.littleMoveGraphicObjectRight] = [CreateTestEvent(39, true, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.bigMoveGraphicObjectDown] = [CreateTestEvent(40, false, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.littleMoveGraphicObjectDown] = [CreateTestEvent(40, true, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.bigMoveGraphicObjectUp] = [CreateTestEvent(38, false, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.littleMoveGraphicObjectUp] = [CreateTestEvent(38, true, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.removeBackSymbol] = [CreateTestEvent(8, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.removeBackWord] = [
|
|
CreateTestEvent(8, true, false, false, false),
|
|
CreateTestEvent(8, false, false, true, false, testFlags.macOs),
|
|
];
|
|
testHotkeyEvents[testHotkeyActions.removeShape] = [
|
|
CreateTestEvent(8, false, false, false, false, false),
|
|
CreateTestEvent(46, false, false, false, false, false)
|
|
];
|
|
testHotkeyEvents[testHotkeyActions.removeForm] = [
|
|
CreateTestEvent(8, false, false, false, false, false),
|
|
CreateTestEvent(46, false, false, false, false, false)
|
|
];
|
|
testHotkeyEvents[testHotkeyActions.moveToNextForm] = [CreateTestEvent(9, false, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.moveToPreviousForm] = [CreateTestEvent(9, false, true, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.handleTab] = [CreateTestEvent(9, false, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.moveToNextCell] = [CreateTestEvent(9, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.moveToPreviousCell] = [CreateTestEvent(9, false, true, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.selectNextObject] = [CreateTestEvent(9, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.selectPreviousObject] = [CreateTestEvent(9, false, true, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.BeginIndent] = [CreateTestEvent(9, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.BeginUnIndent] = [CreateTestEvent(9, false, true, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.addTabToParagraph] = [CreateTestEvent(9, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.visitHyperlink] = [CreateTestEvent(13, false, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.addBreakLineInlineLvlSdt] = [CreateTestEvent(13, false, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.createTextBoxContent] = [CreateTestEvent(13, false, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.createTextBody] = [CreateTestEvent(13, false, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.addNewLineToMath] = [CreateTestEvent(13, false, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.moveCursorToStartPositionShapeEnter] = [CreateTestEvent(13, false, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.selectAllShapeEnter] = [CreateTestEvent(13, false, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.selectAllInChartTitle] = [CreateTestEvent(13, false, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.addNewParagraphContent] = [CreateTestEvent(13, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.addNewParagraphMath] = [CreateTestEvent(13, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.closeAllWindowsPopups] = [CreateTestEvent(27, false, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.resetShapeSelection] = [CreateTestEvent(27, false, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.resetStartAddShape] = [CreateTestEvent(27, false, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.resetFormattingByExample] = [CreateTestEvent(27, false, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.resetMarkerFormat] = [CreateTestEvent(27, false, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.resetDragNDrop] = [CreateTestEvent(27, false, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.endEditing] = [CreateTestEvent(27, false, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.toggleCheckBox] = [CreateTestEvent(32, false, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.moveToEndDocument] = [CreateTestEvent(35, true, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.moveToEndLine] = [
|
|
CreateTestEvent(35, false, false, false, false),
|
|
CreateTestEvent(39, true, false, false, false, testFlags.macOs),
|
|
];
|
|
testHotkeyEvents[testHotkeyActions.selectToEndDocument] = [CreateTestEvent(35, true, true, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.selectToEndLine] = [
|
|
CreateTestEvent(35, false, true, false, false),
|
|
CreateTestEvent(39, true, true, false, false, testFlags.macOs),
|
|
];
|
|
testHotkeyEvents[testHotkeyActions.selectToStartLine] = [
|
|
CreateTestEvent(36, false, true, false, false),
|
|
CreateTestEvent(37, true, true, false, false, testFlags.macOs),
|
|
];
|
|
testHotkeyEvents[testHotkeyActions.selectToStartDocument] = [CreateTestEvent(36, true, true, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.moveToStartLine] = [
|
|
CreateTestEvent(36, false, false, false, false),
|
|
CreateTestEvent(37, true, false, false, false, testFlags.macOs),
|
|
];
|
|
testHotkeyEvents[testHotkeyActions.moveToStartDocument] = [CreateTestEvent(36, true, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.selectLeftWord] = [
|
|
CreateTestEvent(37, true, true, false, false),
|
|
CreateTestEvent(37, false, true, true, false, testFlags.macOs),
|
|
];
|
|
testHotkeyEvents[testHotkeyActions.moveToLeftWord] = [
|
|
CreateTestEvent(37, true, false, false, false),
|
|
CreateTestEvent(37, false, false, true, false, testFlags.macOs),
|
|
];
|
|
testHotkeyEvents[testHotkeyActions.selectLeftChar] = [CreateTestEvent(37, false, true, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.moveToLeftChar] = [CreateTestEvent(37, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.moveToRightChar] = [CreateTestEvent(39, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.selectRightChar] = [CreateTestEvent(39, false, true, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.moveToRightWord] = [
|
|
CreateTestEvent(39, true, false, false, false),
|
|
CreateTestEvent(39, false, false, true, false, testFlags.macOs)
|
|
];
|
|
testHotkeyEvents[testHotkeyActions.selectRightWord] = [
|
|
CreateTestEvent(39, true, true, false, false),
|
|
CreateTestEvent(39, false, true, true, false, testFlags.macOs),
|
|
];
|
|
testHotkeyEvents[testHotkeyActions.moveUp] = [CreateTestEvent(38, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.selectUp] = [CreateTestEvent(38, false, true, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.previousOptionComboBox] = [CreateTestEvent(38, false, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.moveDown] = [CreateTestEvent(40, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.selectDown] = [CreateTestEvent(40, false, true, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.nextOptionComboBox] = [CreateTestEvent(40, false, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.removeFrontSymbol] = [CreateTestEvent(46, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.removeFrontWord] = [
|
|
CreateTestEvent(46, true, false, false, false),
|
|
CreateTestEvent(46, false, false, true, false, testFlags.macOs),
|
|
];
|
|
testHotkeyEvents[testHotkeyActions.unicodeToChar] = [
|
|
CreateTestEvent(88, false, false, true, false),
|
|
CreateTestEvent(88, true, false, true, false, testFlags.macOs)
|
|
];
|
|
testHotkeyEvents[testHotkeyActions.showContextMenu] = [
|
|
CreateTestEvent(93, false, false, false, false),
|
|
CreateTestEvent(57351, false, false, false, false),
|
|
CreateTestEvent(121, false, true, false, false)
|
|
];
|
|
testHotkeyEvents[testHotkeyActions.disableNumLock] = [CreateTestEvent(144, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.disableScrollLock] = [CreateTestEvent(145, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.addSJKSpace] = [CreateTestEvent(12288, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.moveToStartPreviousPage] = [CreateTestEvent(33, true, false, true, false)];
|
|
testHotkeyEvents[testHotkeyActions.moveToPreviousPage] = [CreateTestEvent(33, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.moveToPreviousHeaderFooter] = [CreateTestEvent(33, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.moveToPreviousHeader] = [
|
|
CreateTestEvent(33, true, false, true, false),
|
|
CreateTestEvent(33, false, false, true, false)
|
|
];
|
|
testHotkeyEvents[testHotkeyActions.selectToStartPreviousPage] = [CreateTestEvent(33, true, true, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.selectToPreviousPage] = [CreateTestEvent(33, false, true, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.moveToStartNextPage] = [CreateTestEvent(34, true, false, true, false)];
|
|
testHotkeyEvents[testHotkeyActions.moveToNextPage] = [CreateTestEvent(34, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.moveToNextHeaderFooter] = [CreateTestEvent(34, false, false, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.moveToNextHeader] = [
|
|
CreateTestEvent(34, true, false, true, false),
|
|
CreateTestEvent(34, false, false, true, false)
|
|
];
|
|
testHotkeyEvents[testHotkeyActions.selectToStartNextPage] = [CreateTestEvent(34, true, true, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.selectToNextPage] = [CreateTestEvent(34, false, true, false, false)];
|
|
testHotkeyEvents[testHotkeyActions.disableBrowserZoomIn] = [CreateTestEvent(187, true, true, false, false)];
|
|
|
|
function CreateTestEvent(nKeyCode, bIsCtrl, bIsShift, bIsAlt, bIsMetaKey, flags)
|
|
{
|
|
flags = flags || testFlags.nothing;
|
|
const event = new AscCommon.CKeyboardEvent();
|
|
event.KeyCode = nKeyCode;
|
|
event.CtrlKey = !!bIsCtrl;
|
|
event.ShiftKey = !!bIsShift;
|
|
event.AltKey = !!bIsAlt;
|
|
event.MacCmdKey = !!bIsMetaKey;
|
|
event.enableFlags = function ()
|
|
{
|
|
if (flags & testFlags.macOs)
|
|
{
|
|
AscCommon.AscBrowser.isMacOs = true;
|
|
}
|
|
}
|
|
event.disableFlags = function ()
|
|
{
|
|
if (flags & testFlags.macOs)
|
|
{
|
|
AscCommon.AscBrowser.isMacOs = false;
|
|
}
|
|
}
|
|
return event;
|
|
}
|
|
|
|
function ExecuteShortcut(e)
|
|
{
|
|
e.enableFlags && e.enableFlags();
|
|
const res = editor.WordControl.m_oLogicDocument.OnKeyDown(e);
|
|
e.disableFlags && e.disableFlags();
|
|
return res;
|
|
}
|
|
|
|
function ExecuteHotkey(type, eventIndex)
|
|
{
|
|
const event = testHotkeyEvents[type][eventIndex || 0];
|
|
return ExecuteShortcut(event);
|
|
}
|
|
|
|
AscTestShortcut.testHotkeyActions = testHotkeyActions;
|
|
AscTestShortcut.testHotkeyEvents = testHotkeyEvents;
|
|
AscTestShortcut.ExecuteShortcut = ExecuteShortcut;
|
|
AscTestShortcut.ExecuteHotkey = ExecuteHotkey;
|
|
})(window);
|