UNPKG

@launchmenu/core

Version:

An environment for visual keyboard controlled applets

204 lines 19.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createFieldControlsSettingsFolder = exports.getFieldControlsFolderCategories = void 0; const createStandardCategory_1 = require("../../../../menus/categories/createStandardCategory"); const KeyPattern_1 = require("../../../../keyHandler/KeyPattern"); const createKeyPatternSetting_1 = require("../../../../settings/inputs/createKeyPatternSetting"); const createSettingsFolder_1 = require("../../../../settings/inputs/createSettingsFolder"); const constGetter_1 = require("../../../../utils/constGetter"); const cmdModifier_1 = require("../../../../utils/platform/cmdModifier"); const wordJumpModifier_1 = require("../../../../utils/platform/wordJumpModifier"); /** * The categories used for the field folder */ exports.getFieldControlsFolderCategories = constGetter_1.constGetter(() => ({ jumps: createStandardCategory_1.createStandardCategory({ name: "Cursor jumps" }), clipboard: createStandardCategory_1.createStandardCategory({ name: "Clipboard interaction" }), textNavigation: createStandardCategory_1.createStandardCategory({ name: "Text navigation" }), insertDelete: createStandardCategory_1.createStandardCategory({ name: "Text insertion and deletion" }), meta: createStandardCategory_1.createStandardCategory({ name: "Meta controls" }), })); /** * Creates a new settings folder with field controls settings * @returns The created field controls folder */ function createFieldControlsSettingsFolder() { return createSettingsFolder_1.createSettingsFolder({ name: "Field controls", children: { // clipboard copy: createKeyPatternSetting_1.createKeyPatternSetting({ name: "Copy text", init: new KeyPattern_1.KeyPattern(`${cmdModifier_1.cmdModifier}+c`), category: exports.getFieldControlsFolderCategories().clipboard, tags: ["text", "input"], }), paste: createKeyPatternSetting_1.createKeyPatternSetting({ name: "Paste text", init: new KeyPattern_1.KeyPattern(`${cmdModifier_1.cmdModifier}+v`), category: exports.getFieldControlsFolderCategories().clipboard, tags: ["text", "input"], }), cut: createKeyPatternSetting_1.createKeyPatternSetting({ name: "Cut text", init: new KeyPattern_1.KeyPattern(`${cmdModifier_1.cmdModifier}+x`), category: exports.getFieldControlsFolderCategories().clipboard, tags: ["text", "input"], }), // Jumps home: createKeyPatternSetting_1.createKeyPatternSetting({ name: "Move caret to start of line", init: new KeyPattern_1.KeyPattern([ { pattern: "home", type: "down", allowExtra: ["shift"] }, ]), category: exports.getFieldControlsFolderCategories().jumps, tags: ["text", "input", "caret", "cursor"], }), end: createKeyPatternSetting_1.createKeyPatternSetting({ name: "Move caret to end of line", init: new KeyPattern_1.KeyPattern([ { pattern: "end", type: "down", allowExtra: ["shift"] }, ]), category: exports.getFieldControlsFolderCategories().jumps, tags: ["text", "input", "caret", "cursor"], }), selectAll: createKeyPatternSetting_1.createKeyPatternSetting({ name: "Select all text", init: new KeyPattern_1.KeyPattern(`${cmdModifier_1.cmdModifier}+a`), category: exports.getFieldControlsFolderCategories().jumps, tags: ["text", "input"], }), jumpWordLeft: createKeyPatternSetting_1.createKeyPatternSetting({ name: "Move caret a word left", init: new KeyPattern_1.KeyPattern([ { pattern: `${wordJumpModifier_1.wordJumpModifier}+left`, type: "down or repeat", allowExtra: ["shift"], }, ]), category: exports.getFieldControlsFolderCategories().jumps, tags: ["text", "input", "caret", "cursor"], }), jumpWordRight: createKeyPatternSetting_1.createKeyPatternSetting({ name: "Move caret a word right", init: new KeyPattern_1.KeyPattern([ { pattern: `${wordJumpModifier_1.wordJumpModifier}+right`, type: "down or repeat", allowExtra: ["shift"], }, ]), category: exports.getFieldControlsFolderCategories().jumps, tags: ["text", "input", "caret", "cursor"], }), // Text navigation left: createKeyPatternSetting_1.createKeyPatternSetting({ name: "Move caret left", init: new KeyPattern_1.KeyPattern([ { pattern: ["left"], type: "down or repeat", allowExtra: ["shift"] }, ]), category: exports.getFieldControlsFolderCategories().textNavigation, tags: ["text", "input", "caret", "cursor"], }), right: createKeyPatternSetting_1.createKeyPatternSetting({ name: "Move caret right", init: new KeyPattern_1.KeyPattern([ { pattern: ["right"], type: "down or repeat", allowExtra: ["shift"] }, ]), category: exports.getFieldControlsFolderCategories().textNavigation, tags: ["text", "input", "caret", "cursor"], }), up: createKeyPatternSetting_1.createKeyPatternSetting({ name: "Move caret up", description: "Unused in single line text fields", init: new KeyPattern_1.KeyPattern([ { pattern: ["up"], type: "down or repeat", allowExtra: ["shift"] }, ]), category: exports.getFieldControlsFolderCategories().textNavigation, tags: ["text", "input", "caret", "cursor"], }), down: createKeyPatternSetting_1.createKeyPatternSetting({ name: "Move caret down", description: "Unused in single line text fields", init: new KeyPattern_1.KeyPattern([ { pattern: ["down"], type: "down or repeat", allowExtra: ["shift"] }, ]), category: exports.getFieldControlsFolderCategories().textNavigation, tags: ["text", "input", "caret", "cursor"], }), expandSelection: createKeyPatternSetting_1.createKeyPatternSetting({ name: "Expand selection", description: "Only the pattern is used, not the event type", init: new KeyPattern_1.KeyPattern("shift"), category: exports.getFieldControlsFolderCategories().textNavigation, tags: ["text", "input"], }), // Text insertion and deletion backspace: createKeyPatternSetting_1.createKeyPatternSetting({ name: "Remove character before caret", init: new KeyPattern_1.KeyPattern([ { pattern: ["backspace"], type: "down or repeat", allowExtra: ["shift"], }, ]), category: exports.getFieldControlsFolderCategories().insertDelete, tags: ["text", "input"], }), delete: createKeyPatternSetting_1.createKeyPatternSetting({ name: "Remove character after caret", init: new KeyPattern_1.KeyPattern([ { pattern: ["delete"], type: "down or repeat", allowExtra: ["shift"] }, ]), category: exports.getFieldControlsFolderCategories().insertDelete, tags: ["text", "input"], }), insertLine: createKeyPatternSetting_1.createKeyPatternSetting({ name: "Insert a new line", description: "Unused in single line text fields", init: new KeyPattern_1.KeyPattern([ { pattern: ["enter"], type: "down or repeat", allowExtra: ["shift"] }, ]), category: exports.getFieldControlsFolderCategories().insertDelete, tags: ["text", "input"], }), indent: createKeyPatternSetting_1.createKeyPatternSetting({ name: "Inserts an indentation", description: "Unused in single line text fields", init: new KeyPattern_1.KeyPattern([{ pattern: ["tab"], type: "down or repeat" }]), category: exports.getFieldControlsFolderCategories().insertDelete, tags: ["text", "input"], }), dedent: createKeyPatternSetting_1.createKeyPatternSetting({ name: "Removes an indentation", description: "Unused in single line text fields", init: new KeyPattern_1.KeyPattern([ { pattern: ["shift", "tab"], type: "down or repeat" }, ]), category: exports.getFieldControlsFolderCategories().insertDelete, tags: ["text", "input"], }), // Meta controls undo: createKeyPatternSetting_1.createKeyPatternSetting({ name: "Undo text", init: new KeyPattern_1.KeyPattern([ { pattern: [cmdModifier_1.cmdModifier, "z"], type: "down or repeat" }, ]), category: exports.getFieldControlsFolderCategories().meta, tags: ["text", "input"], }), redo: createKeyPatternSetting_1.createKeyPatternSetting({ name: "Redo text", init: new KeyPattern_1.KeyPattern([ { pattern: [cmdModifier_1.cmdModifier, "y"], type: "down or repeat" }, ]), category: exports.getFieldControlsFolderCategories().meta, tags: ["text", "input"], }), }, }); } exports.createFieldControlsSettingsFolder = createFieldControlsSettingsFolder; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlRmllbGRDb250cm9sc1NldHRpbmdzRm9sZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL3NldHRpbmdzL2Jhc2VTZXR0aW5ncy9jb250cm9scy9jcmVhdGVGaWVsZENvbnRyb2xzU2V0dGluZ3NGb2xkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0dBQTJGO0FBQzNGLGtFQUE2RDtBQUM3RCxpR0FBNEY7QUFDNUYsMkZBQXNGO0FBQ3RGLCtEQUEwRDtBQUMxRCx3RUFBbUU7QUFDbkUsa0ZBQTZFO0FBRTdFOztHQUVHO0FBQ1UsUUFBQSxnQ0FBZ0MsR0FBRyx5QkFBVyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDL0QsS0FBSyxFQUFFLCtDQUFzQixDQUFDLEVBQUMsSUFBSSxFQUFFLGNBQWMsRUFBQyxDQUFDO0lBQ3JELFNBQVMsRUFBRSwrQ0FBc0IsQ0FBQyxFQUFDLElBQUksRUFBRSx1QkFBdUIsRUFBQyxDQUFDO0lBQ2xFLGNBQWMsRUFBRSwrQ0FBc0IsQ0FBQyxFQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBQyxDQUFDO0lBQ2pFLFlBQVksRUFBRSwrQ0FBc0IsQ0FBQyxFQUFDLElBQUksRUFBRSw2QkFBNkIsRUFBQyxDQUFDO0lBQzNFLElBQUksRUFBRSwrQ0FBc0IsQ0FBQyxFQUFDLElBQUksRUFBRSxlQUFlLEVBQUMsQ0FBQztDQUN4RCxDQUFDLENBQUMsQ0FBQztBQUVKOzs7R0FHRztBQUNILFNBQWdCLGlDQUFpQztJQUM3QyxPQUFPLDJDQUFvQixDQUFDO1FBQ3hCLElBQUksRUFBRSxnQkFBZ0I7UUFDdEIsUUFBUSxFQUFFO1lBQ04sWUFBWTtZQUNaLElBQUksRUFBRSxpREFBdUIsQ0FBQztnQkFDMUIsSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLElBQUksRUFBRSxJQUFJLHVCQUFVLENBQUMsR0FBRyx5QkFBVyxJQUFJLENBQUM7Z0JBQ3hDLFFB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