├── .gitignore ├── .gitattributes ├── src ├── assets │ ├── icon16.png │ ├── icon32.png │ ├── icon64.png │ ├── icon128.png │ └── crystal-ball.png ├── fonts │ └── Segoe-UI.ttf ├── data │ ├── template.js │ ├── data.js │ └── sources │ │ ├── reddit.js │ │ ├── twitch.js │ │ ├── spotify.js │ │ ├── twitter.js │ │ ├── youtube.js │ │ ├── discord.js │ │ ├── notion.js │ │ ├── chrome.js │ │ ├── github.js │ │ ├── adobe-xd.js │ │ ├── figma.js │ │ ├── vs-code.js │ │ └── adobe-photoshop.js ├── content.html ├── manifest.json ├── background.js ├── content.js └── content.css ├── package.json ├── .prettierrc ├── LICENSE ├── changelog.config.js └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | /.figma 3 | *.rar 4 | *.zip -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /src/assets/icon16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raphaelsalaja/paths/HEAD/src/assets/icon16.png -------------------------------------------------------------------------------- /src/assets/icon32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raphaelsalaja/paths/HEAD/src/assets/icon32.png -------------------------------------------------------------------------------- /src/assets/icon64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raphaelsalaja/paths/HEAD/src/assets/icon64.png -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "config": { 3 | "commitizen": { 4 | "path": "git-cz" 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/assets/icon128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raphaelsalaja/paths/HEAD/src/assets/icon128.png -------------------------------------------------------------------------------- /src/fonts/Segoe-UI.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raphaelsalaja/paths/HEAD/src/fonts/Segoe-UI.ttf -------------------------------------------------------------------------------- /src/assets/crystal-ball.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raphaelsalaja/paths/HEAD/src/assets/crystal-ball.png -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "arrowParens": "always", 3 | "bracketSameLine": false, 4 | "bracketSpacing": false, 5 | "embeddedLanguageFormatting": "auto", 6 | "htmlWhitespaceSensitivity": "css", 7 | "insertPragma": false, 8 | "jsxSingleQuote": true, 9 | "printWidth": 200, 10 | "quoteProps": "consistent", 11 | "requirePragma": false, 12 | "semi": false, 13 | "singleQuote": true, 14 | "tabWidth": 4, 15 | "trailingComma": "es5", 16 | "useTabs": true, 17 | "vueIndentScriptAndStyle": false 18 | } 19 | -------------------------------------------------------------------------------- /src/data/template.js: -------------------------------------------------------------------------------- 1 | export const template = { 2 | title: 'Title', 3 | icon: '', // use a favicon, such as https://www.youtube.com/favicon.ico 4 | sections: [ 5 | { 6 | name: 'Name1', 7 | shortcuts: [ 8 | { 9 | description: 'Description 1', 10 | keys: ['Key1', 'Key2'], 11 | }, 12 | ], 13 | }, 14 | { 15 | name: 'Name2', 16 | shortcuts: [ 17 | { 18 | description: 'Description 1', 19 | keys: ['Key1', 'Key2'], 20 | }, 21 | ], 22 | }, 23 | ], 24 | } 25 | -------------------------------------------------------------------------------- /src/content.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 |
6 |
7 |
8 | 11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | 22 | 23 | -------------------------------------------------------------------------------- /src/data/data.js: -------------------------------------------------------------------------------- 1 | import {adobe_photoshop} from './sources/adobe-photoshop.js' 2 | import {adobe_xd} from './sources/adobe-xd.js' 3 | import {chrome} from './sources/chrome.js' 4 | import {discord} from './sources/discord.js' 5 | import {figma} from './sources/figma.js' 6 | import {github} from './sources/github.js' 7 | import {notion} from './sources/notion.js' 8 | import {reddit} from './sources/reddit.js' 9 | import {spotify} from './sources/spotify.js' 10 | import {twitter} from './sources/twitter.js' 11 | import {vs_code} from './sources/vs-code.js' 12 | import {youtube} from './sources/youtube.js' 13 | 14 | export const data = [ 15 | adobe_photoshop, 16 | adobe_xd, 17 | chrome, 18 | discord, 19 | figma, 20 | github, 21 | notion, 22 | reddit, 23 | spotify, 24 | twitter, 25 | vs_code, 26 | youtube, 27 | ] 28 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 raf-underscore 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /src/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "manifest_version": 3, 3 | "name": "Paths", 4 | "version": "0.0.1", 5 | "offline_enabled": true, 6 | "author": "Raphael S.", 7 | "description": "Find shortcuts for popular apps and websites", 8 | "background": { 9 | "service_worker": "background.js", 10 | "type": "module" 11 | }, 12 | "action": { 13 | "icons": { 14 | "16": "assets/icon16.png", 15 | "48": "assets/icon32.png", 16 | "128": "assets/icon128.png" 17 | }, 18 | "default_title": "Open Paths" 19 | }, 20 | "icons": { 21 | "16": "assets/icon16.png", 22 | "48": "assets/icon32.png", 23 | "128": "assets/icon128.png" 24 | }, 25 | "commands": { 26 | "open-paths": { 27 | "suggested_key": "Ctrl+Shift+Y", 28 | "description": "The command to open the Paths extension" 29 | } 30 | }, 31 | "content_scripts": [ 32 | { 33 | "matches": [""], 34 | "run_at": "document_end", 35 | "js": ["libs/jquery.js", "libs/jquery-ui.js", "content.js"], 36 | "css": ["content.css"] 37 | } 38 | ], 39 | "web_accessible_resources": [ 40 | { 41 | "resources": ["assets/*", "data/*", "fonts/*", "content.html", "*.ttf"], 42 | "matches": [""] 43 | } 44 | ], 45 | 46 | "permissions": ["tabs"] 47 | } 48 | -------------------------------------------------------------------------------- /src/data/sources/reddit.js: -------------------------------------------------------------------------------- 1 | export const reddit = { 2 | title: 'Reddit', 3 | icon: 'https://www.redditstatic.com/desktop2x/img/favicon/favicon-32x32.png', 4 | sections: [ 5 | { 6 | name: 'Navigation', 7 | shortcuts: [ 8 | { 9 | description: 'Show shortcuts', 10 | keys: ['Shift', '?'], 11 | }, 12 | { 13 | description: 'Next post or comment', 14 | keys: ['J'], 15 | }, 16 | { 17 | description: 'Previous post or comment', 18 | keys: ['K'], 19 | }, 20 | { 21 | description: 'Next post in lightbox', 22 | keys: ['N'], 23 | }, 24 | { 25 | description: 'Previous post in lightbox', 26 | keys: ['P'], 27 | }, 28 | { 29 | description: 'Open post', 30 | keys: ['Enter'], 31 | }, 32 | { 33 | description: 'Open or close expando', 34 | keys: ['X'], 35 | }, 36 | { 37 | description: 'Go to post link', 38 | keys: ['L'], 39 | }, 40 | ], 41 | }, 42 | { 43 | name: 'Action', 44 | shortcuts: [ 45 | { 46 | description: 'Upvote', 47 | keys: ['A'], 48 | }, 49 | { 50 | description: 'Downvote', 51 | keys: ['Z'], 52 | }, 53 | { 54 | description: 'New post', 55 | keys: ['C'], 56 | }, 57 | { 58 | description: 'Reply to comments', 59 | keys: ['R'], 60 | }, 61 | { 62 | description: 'Submit comment or post', 63 | keys: ['Ctrl', 'Enter'], 64 | }, 65 | { 66 | description: 'Save', 67 | keys: ['S'], 68 | }, 69 | { 70 | description: 'Hide', 71 | keys: ['H'], 72 | }, 73 | { 74 | description: 'Open navigation', 75 | keys: ['Q'], 76 | }, 77 | { 78 | description: 'Collapse or expand comment', 79 | keys: ['Enter'], 80 | }, 81 | ], 82 | }, 83 | ], 84 | } 85 | -------------------------------------------------------------------------------- /src/data/sources/twitch.js: -------------------------------------------------------------------------------- 1 | export const twitch = { 2 | title: 'Twitch', 3 | icon: 'https://static.twitchcdn.net/assets/favicon-32-e29e246c157142c94346.png', 4 | sections: [ 5 | { 6 | name: 'Clip / Video Controls', 7 | shortcuts: [ 8 | { 9 | description: 'Pauses/plays a clip or live broadcast.', 10 | keys: ['Space'], 11 | }, 12 | { 13 | description: 'Pauses/plays a clip or live broadcast.', 14 | keys: ['F'], 15 | }, 16 | { 17 | description: 'Pauses/plays a clip or live broadcast.', 18 | keys: ['Left Arrow'], 19 | }, 20 | { 21 | description: 'Pauses/plays a clip or live broadcast.', 22 | keys: ['Right Arrow'], 23 | }, 24 | { 25 | description: 'Pauses/plays a clip or live broadcast.', 26 | keys: ['Alt', 'k'], 27 | }, 28 | { 29 | description: 'Pauses/plays a clip or live broadcast.', 30 | keys: ['M'], 31 | }, 32 | { 33 | description: 'Pauses/plays a clip or live broadcast.', 34 | keys: ['Space'], 35 | }, 36 | ], 37 | }, 38 | { 39 | name: 'Live Broadcast ', 40 | shortcuts: [ 41 | { 42 | description: 'Pauses/plays a clip or live broadcast.', 43 | keys: ['Space'], 44 | }, 45 | { 46 | description: 'Pauses/plays a clip or live broadcast.', 47 | keys: ['F'], 48 | }, 49 | { 50 | description: 'Pauses/plays a clip or live broadcast.', 51 | keys: ['Left Arrow'], 52 | }, 53 | { 54 | description: 'Pauses/plays a clip or live broadcast.', 55 | keys: ['Right Arrow'], 56 | }, 57 | { 58 | description: 'Pauses/plays a clip or live broadcast.', 59 | keys: ['Alt', 'k'], 60 | }, 61 | { 62 | description: 'Pauses/plays a clip or live broadcast.', 63 | keys: ['M'], 64 | }, 65 | { 66 | description: 'Pauses/plays a clip or live broadcast.', 67 | keys: ['Space'], 68 | }, 69 | ], 70 | }, 71 | ], 72 | } 73 | -------------------------------------------------------------------------------- /changelog.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | disableEmoji: true, 3 | format: '{type}{scope}: {emoji}{subject}', 4 | list: ['test', 'feat', 'fix', 'chore', 'docs', 'refactor', 'style', 'ci', 'perf'], 5 | maxMessageLength: 64, 6 | minMessageLength: 3, 7 | questions: ['type', 'scope', 'subject', 'body', 'breaking', 'issues', 'lerna'], 8 | scopes: [], 9 | types: { 10 | chore: { 11 | description: 'Build process or auxiliary tool changes', 12 | emoji: '🧹', 13 | value: 'chore', 14 | }, 15 | ci: { 16 | description: 'CI related changes', 17 | emoji: '🎡', 18 | value: 'ci', 19 | }, 20 | docs: { 21 | description: 'Documentation only changes', 22 | emoji: '✏️', 23 | value: 'docs', 24 | }, 25 | feat: { 26 | description: 'A new feature', 27 | emoji: '🔥', 28 | value: 'feat', 29 | }, 30 | fix: { 31 | description: 'A bug fix', 32 | emoji: '🐛', 33 | value: 'fix', 34 | }, 35 | perf: { 36 | description: 'A code change that improves performance', 37 | emoji: '⚡️', 38 | value: 'perf', 39 | }, 40 | refactor: { 41 | description: 'A code change that neither fixes a bug or adds a feature', 42 | emoji: '💡', 43 | value: 'refactor', 44 | }, 45 | release: { 46 | description: 'Create a release commit', 47 | emoji: '🏹', 48 | value: 'release', 49 | }, 50 | style: { 51 | description: 'Markup, white-space, formatting, missing semi-colons...', 52 | emoji: '🎨', 53 | value: 'style', 54 | }, 55 | test: { 56 | description: 'Adding missing tests', 57 | emoji: '🧪', 58 | value: 'test', 59 | }, 60 | messages: { 61 | type: "Select the type of change that you're committing:", 62 | customScope: 'Select the scope this component affects:', 63 | subject: 'Write a short, imperative mood description of the change:\n', 64 | body: 'Provide a longer description of the change:\n ', 65 | breaking: 'List any breaking changes:\n', 66 | footer: 'Issues this commit closes, e.g #123:', 67 | confirmCommit: 'The packages that this commit has affected\n', 68 | }, 69 | }, 70 | } 71 | -------------------------------------------------------------------------------- /src/background.js: -------------------------------------------------------------------------------- 1 | import {data} from './data/data.js' 2 | 3 | let dailyQuote 4 | let sources = [] 5 | sources = data 6 | 7 | chrome.runtime.onInstalled.addListener(function () { 8 | console.clear() 9 | chrome.tabs.create({url: 'https://rafunderscore.vercel.app/paths/'}) 10 | }) 11 | chrome.runtime.onMessage.addListener((message, sender, sendResponse) => { 12 | switch (message.request) { 13 | case 'get-shortcuts': 14 | reorderData() 15 | sendResponse({shortcuts: sources}) 16 | break 17 | case 'get-quote': 18 | setQuote() 19 | let quote = dailyQuote.content + ' - ' + dailyQuote.author 20 | sendResponse({quote: quote}) 21 | break 22 | } 23 | }) 24 | chrome.action.onClicked.addListener((tab) => { 25 | chrome.tabs.sendMessage(tab.id, {message: 'open-paths'}, function (response) {}) 26 | }) 27 | chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => { 28 | reorderData() 29 | if (changeInfo.status === 'complete') { 30 | setQuote() 31 | } 32 | }) 33 | chrome.commands.onCommand.addListener((command) => { 34 | if (command == 'open-paths') { 35 | chrome.tabs.query({active: true, currentWindow: true}, function (tabs) { 36 | var url = tabs[0].url 37 | if (url.includes('chrome://') && url.includes('chrome.google.com')) { 38 | } else { 39 | chrome.tabs.sendMessage(tabs[0].id, {message: 'open-paths'}, function (response) {}) 40 | } 41 | }) 42 | } 43 | }) 44 | 45 | function setQuote() { 46 | fetch('https://api.quotable.io/random?tags=technology') 47 | .then((response) => response.json()) 48 | .then((quote) => { 49 | dailyQuote = quote 50 | }) 51 | .then(() => { 52 | chrome.tabs.query({active: true, currentWindow: true}, function (tabs) { 53 | chrome.tabs.sendMessage(tabs[0].id, {quote: dailyQuote}, function (response) {}) 54 | }) 55 | }) 56 | } 57 | const getCurrentTab = async () => { 58 | return await chrome.tabs.query({active: true, currentWindow: true}) 59 | } 60 | function reorderData() { 61 | getCurrentTab().then((response) => { 62 | for (let i = 0; i < sources.length; i++) { 63 | let source = sources[i] 64 | let title = source.title 65 | let index = response[0].title.indexOf(title) 66 | if (index > -1) { 67 | sources.splice(i, 1) 68 | sources.unshift(source) 69 | } 70 | } 71 | }) 72 | } 73 | -------------------------------------------------------------------------------- /src/data/sources/spotify.js: -------------------------------------------------------------------------------- 1 | export const spotify = { 2 | title: 'Spotify', 3 | icon: 'https://www.freepnglogos.com/uploads/spotify-logo-png/file-spotify-logo-png-4.png', 4 | sections: [ 5 | { 6 | name: 'General', 7 | shortcuts: [ 8 | { 9 | description: 'Create a new playlist', 10 | keys: ['Ctrl', 'N'], 11 | }, 12 | { 13 | description: 'Cut', 14 | keys: ['Ctrl', 'X'], 15 | }, 16 | { 17 | description: 'Copy', 18 | keys: ['Ctrl', 'C'], 19 | }, 20 | { 21 | description: 'Delete', 22 | keys: ['Del'], 23 | }, 24 | { 25 | description: 'Copy (alternative link)', 26 | keys: ['Ctrl', 'Alt', 'C'], 27 | }, 28 | { 29 | description: 'Paste', 30 | keys: ['Ctrl', 'V'], 31 | }, 32 | { 33 | description: 'Select all', 34 | keys: ['Ctrl', 'A'], 35 | }, 36 | { 37 | description: 'Play/pause', 38 | keys: ['Space'], 39 | }, 40 | { 41 | description: 'Next track', 42 | keys: ['Ctrl', 'Right'], 43 | }, 44 | { 45 | description: 'Previous track', 46 | keys: ['Ctrl', 'Left'], 47 | }, 48 | { 49 | description: 'Volume up', 50 | keys: ['Ctrl', 'Up'], 51 | }, 52 | { 53 | description: 'Volume down', 54 | keys: ['Ctrl', 'Down'], 55 | }, 56 | { 57 | description: 'Mute', 58 | keys: ['Ctrl', 'Shift', 'Down'], 59 | }, 60 | { 61 | description: 'Max volume', 62 | keys: ['Ctrl', 'Shift', 'Up'], 63 | }, 64 | { 65 | description: 'Show help', 66 | keys: ['F1'], 67 | }, 68 | { 69 | description: 'Filter (in Songs and Playlists)', 70 | keys: ['Ctrl', 'F'], 71 | }, 72 | { 73 | description: 'Give focus to search field', 74 | keys: ['Ctrl', 'L'], 75 | }, 76 | { 77 | description: 'Go back', 78 | keys: ['Alt', 'Left'], 79 | }, 80 | { 81 | description: 'Go forward', 82 | keys: ['Alt', 'Right'], 83 | }, 84 | { 85 | description: 'Play selected row', 86 | keys: ['Enter'], 87 | }, 88 | { 89 | description: 'Preferences', 90 | keys: ['Ctrl', 'P'], 91 | }, 92 | { 93 | description: 'Logout active user', 94 | keys: ['Ctrl', 'Shift', 'W'], 95 | }, 96 | { 97 | description: 'Quit', 98 | keys: ['Alt', 'F4'], 99 | }, 100 | ], 101 | }, 102 | ], 103 | } 104 | -------------------------------------------------------------------------------- /src/data/sources/twitter.js: -------------------------------------------------------------------------------- 1 | export const twitter = { 2 | title: 'Twitter', 3 | icon: 'https://abs.twimg.com/favicons/twitter.2.ico', 4 | sections: [ 5 | { 6 | name: 'Actions', 7 | shortcuts: [ 8 | { 9 | description: 'New tweet', 10 | keys: ['N'], 11 | }, 12 | { 13 | description: 'Like tweet', 14 | keys: ['L'], 15 | }, 16 | { 17 | description: 'Reply to tweet', 18 | keys: ['R'], 19 | }, 20 | { 21 | description: 'Retweet', 22 | keys: ['T'], 23 | }, 24 | { 25 | description: 'Direct message', 26 | keys: ['M'], 27 | }, 28 | { 29 | description: 'Mute account', 30 | keys: ['U'], 31 | }, 32 | { 33 | description: 'Block account', 34 | keys: ['B'], 35 | }, 36 | { 37 | description: 'Open tweet details', 38 | keys: ['Enter'], 39 | }, 40 | { 41 | description: 'Expand photos', 42 | keys: ['O'], 43 | }, 44 | { 45 | description: 'Search', 46 | keys: ['/'], 47 | }, 48 | { 49 | description: 'Send tweet', 50 | keys: ['Ctrl', 'Enter'], 51 | }, 52 | ], 53 | }, 54 | { 55 | name: 'Navigation', 56 | shortcuts: [ 57 | { 58 | description: 'Full keyboard menu', 59 | keys: ['?'], 60 | }, 61 | { 62 | description: 'Next tweet', 63 | keys: ['J'], 64 | }, 65 | { 66 | description: 'Previous tweet', 67 | keys: ['K'], 68 | }, 69 | { 70 | description: 'Page down', 71 | keys: ['Space'], 72 | }, 73 | { 74 | description: 'Load new tweets', 75 | keys: ['.'], 76 | }, 77 | ], 78 | }, 79 | { 80 | name: 'Timelines', 81 | shortcuts: [ 82 | { 83 | description: 'Home timeline', 84 | keys: ['G', 'N'], 85 | }, 86 | { 87 | description: 'Moments', 88 | keys: ['G', 'O'], 89 | }, 90 | { 91 | description: 'Notifications tab', 92 | keys: ['G', 'N'], 93 | }, 94 | { 95 | description: 'Mentions', 96 | keys: ['G', 'R'], 97 | }, 98 | { 99 | description: 'Profile', 100 | keys: ['G', 'P'], 101 | }, 102 | { 103 | description: 'Likes tab', 104 | keys: ['G', 'L'], 105 | }, 106 | { 107 | description: 'Lists tab', 108 | keys: ['G', 'I'], 109 | }, 110 | { 111 | description: 'Direct messages', 112 | keys: ['G', 'M'], 113 | }, 114 | { 115 | description: 'Settings and privacy', 116 | keys: ['G', 'S'], 117 | }, 118 | { 119 | description: "Go to someone's profile", 120 | keys: ['G', 'U'], 121 | }, 122 | ], 123 | }, 124 | ], 125 | } 126 | -------------------------------------------------------------------------------- /src/data/sources/youtube.js: -------------------------------------------------------------------------------- 1 | export const youtube = { 2 | title: 'YouTube', 3 | icon: 'https://www.youtube.com/favicon.ico', 4 | sections: [ 5 | { 6 | name: 'Playback', 7 | shortcuts: [ 8 | { 9 | description: 'Toggle play/pause', 10 | keys: ['k'], 11 | }, 12 | { 13 | description: 'Rewind 10 seconds', 14 | keys: ['j'], 15 | }, 16 | { 17 | description: 'Fast forward 10 seconds', 18 | keys: ['l'], 19 | }, 20 | { 21 | description: 'Previous video', 22 | keys: ['P'], 23 | }, 24 | { 25 | description: 'Next video', 26 | keys: ['N'], 27 | }, 28 | { 29 | description: 'Previous frame (while paused)', 30 | keys: [','], 31 | }, 32 | { 33 | description: 'Next frame (while paused)', 34 | keys: ['.'], 35 | }, 36 | { 37 | description: 'Decrease playback rate', 38 | keys: ['<'], 39 | }, 40 | { 41 | description: 'Increase playback rate', 42 | keys: ['>'], 43 | }, 44 | { 45 | description: 'Seek to a point e.g 7 = 70%', 46 | keys: ['Numpad'], 47 | }, 48 | { 49 | description: 'Seek to previous chapter', 50 | keys: ['Ctrl', '←'], 51 | }, 52 | { 53 | description: 'Seek to next chapter', 54 | keys: ['Ctrl', '→'], 55 | }, 56 | ], 57 | }, 58 | { 59 | name: 'General', 60 | shortcuts: [ 61 | { 62 | description: 'Toggle full screen', 63 | keys: ['f'], 64 | }, 65 | { 66 | description: 'Toggle theater mode', 67 | keys: ['t'], 68 | }, 69 | { 70 | description: 'Toggle miniplayer', 71 | keys: ['i'], 72 | }, 73 | { 74 | description: 'Close miniplayer or current dialog', 75 | keys: ['Esc'], 76 | }, 77 | { 78 | description: 'Toggle mute', 79 | keys: ['m'], 80 | }, 81 | ], 82 | }, 83 | { 84 | name: 'Subtitles and Closed Captions', 85 | shortcuts: [ 86 | { 87 | description: 'If the video supports captions, toggle captions ON/OFF', 88 | keys: ['c'], 89 | }, 90 | { 91 | description: 'Rotate through different text opacity levels', 92 | keys: ['o'], 93 | }, 94 | { 95 | description: 'Rotate through different window opacity levels', 96 | keys: ['w'], 97 | }, 98 | { 99 | description: 'Increase font size', 100 | keys: [','], 101 | }, 102 | { 103 | description: 'Decrease font size', 104 | keys: ['-'], 105 | }, 106 | ], 107 | }, 108 | { 109 | name: 'Spherical Videos', 110 | shortcuts: [ 111 | { 112 | description: 'Pan up', 113 | keys: ['w'], 114 | }, 115 | { 116 | description: 'Pan left', 117 | keys: ['a'], 118 | }, 119 | { 120 | description: 'Pan down', 121 | keys: ['s'], 122 | }, 123 | { 124 | description: 'Pan right', 125 | keys: ['d'], 126 | }, 127 | { 128 | description: 'Zoom in', 129 | keys: [',', ' ]'], 130 | }, 131 | { 132 | description: 'Zoom out', 133 | keys: ['- ', ' ['], 134 | }, 135 | ], 136 | }, 137 | ], 138 | } 139 | -------------------------------------------------------------------------------- /src/data/sources/discord.js: -------------------------------------------------------------------------------- 1 | export const discord = { 2 | title: 'Discord', 3 | icon: 'https://www.freepnglogos.com/uploads/discord-logo-png/concours-discord-cartes-voeux-fortnite-france-6.png', 4 | sections: [ 5 | { 6 | name: 'General', 7 | shortcuts: [ 8 | { 9 | description: 'Navigate between servers', 10 | keys: ['Ctrl', 'Alt', 'Up/Down'], 11 | }, 12 | { 13 | description: 'Navigate between channels', 14 | keys: ['Alt', 'Up/Down'], 15 | }, 16 | { 17 | description: 'Navigate between unread channels', 18 | keys: ['Alt', 'Shift', 'Up/Down'], 19 | }, 20 | { 21 | description: 'Navigate between unread channels with mentions', 22 | keys: ['Ctrl', 'Shift', 'Alt', 'Up/Down'], 23 | }, 24 | { 25 | description: 'Mark channel as read', 26 | keys: ['Esc'], 27 | }, 28 | { 29 | description: 'Mark server read', 30 | keys: ['Shift', 'Esc'], 31 | }, 32 | { 33 | description: 'Toggle hotkeys', 34 | keys: ['Ctrl', '/'], 35 | }, 36 | { 37 | description: 'Return to previous text channel', 38 | keys: ['Ctrl', 'B'], 39 | }, 40 | { 41 | description: 'Return to active audio channel', 42 | keys: ['Ctrl', 'Alt', 'A'], 43 | }, 44 | { 45 | description: 'Toggle pins popout', 46 | keys: ['Ctrl', 'P'], 47 | }, 48 | { 49 | description: 'Toggle mentions popout', 50 | keys: ['Ctrl', 'Shift', '2'], 51 | }, 52 | { 53 | description: 'Toggle channel member list', 54 | keys: ['Ctrl', 'U'], 55 | }, 56 | { 57 | description: 'Toggle emoji picker', 58 | keys: ['Ctrl', 'E'], 59 | }, 60 | { 61 | description: 'Scroll chat up or down', 62 | keys: ['PgUp/PgDn'], 63 | }, 64 | { 65 | description: 'Jump to oldest unread message', 66 | keys: ['Shift', 'PgUp'], 67 | }, 68 | { 69 | description: 'Create or join a server', 70 | keys: ['Ctrl', 'Shift', 'N'], 71 | }, 72 | { 73 | description: 'Answer incoming call', 74 | keys: ['Ctrl', 'Enter'], 75 | }, 76 | { 77 | description: 'Find or start a direct message', 78 | keys: ['Ctrl', 'K'], 79 | }, 80 | { 81 | description: 'Decline incoming call', 82 | keys: ['Esc'], 83 | }, 84 | { 85 | description: 'Create a private group', 86 | keys: ['Ctrl', 'Shift', 'T'], 87 | }, 88 | { 89 | description: 'Start call in private message or group', 90 | keys: ['Ctrl', '['], 91 | }, 92 | { 93 | description: 'Focus text area', 94 | keys: ['Tab'], 95 | }, 96 | { 97 | description: 'Return to connected audio channel', 98 | keys: ['Alt', 'Left'], 99 | }, 100 | { 101 | description: 'Return to previous text channel', 102 | keys: ['Alt', 'Right'], 103 | }, 104 | { 105 | description: 'Toggle mute', 106 | keys: ['Ctrl', 'Shift', 'M'], 107 | }, 108 | { 109 | description: 'Toggle deafen', 110 | keys: ['Ctrl', 'Shift', 'D'], 111 | }, 112 | { 113 | description: 'Get help', 114 | keys: ['Ctrl', 'Shift', 'H'], 115 | }, 116 | { 117 | description: 'Upload a file', 118 | keys: ['Ctrl', 'Shift', 'U'], 119 | }, 120 | ], 121 | }, 122 | ], 123 | } 124 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | ![Product Hunt _ Screenshot _ asdfasdfdsaf](https://user-images.githubusercontent.com/52125687/178572560-088dd244-f242-4536-8d4b-3f3294e35674.png) 3 | Paths - Find shortcuts for apps and websites in your browser | Product Hunt 4 | 5 | ## Why would you use this? 🔎 6 | 7 | Learning shortcuts and quick commands can almost double your productivity. Paths shows you the all the available shortcuts and commands for the most popular websites and apps that you use on a daily basis. 8 | 9 | ## What can you expect 🤔 10 | 11 | Using this you will be able to search for a shortcut or command and see what it does. You will also be able to run the command by clicking on the shortcut. 12 | 13 | ## Contributions 🔮 14 | 15 | If you would like to contribute to this project, please open an issue or pull request. 16 | 17 | If you would like to add a shortcut or command you can do so by following these steps: 18 | 19 | 1. Create a new .js file in the source folder. You can use the template file provided as a starting point. 20 | 21 | ``` 22 | . 23 | └── src 24 | └── data 25 | └── sources 26 | ``` 27 | 28 | ```js 29 | export const template = { 30 | title: 'Title', 31 | icon: '', // use a favicon, such as https://www.youtube.com/favicon.ico 32 | sections: [ 33 | { 34 | name: 'Name1', 35 | shortcuts: [ 36 | { 37 | description: 'Description 1', 38 | keys: ['Key1', 'Key2'], 39 | }, 40 | ], 41 | }, 42 | { 43 | name: 'Name2', 44 | shortcuts: [ 45 | { 46 | description: 'Description 1', 47 | keys: ['Key1', 'Key2'], 48 | }, 49 | ], 50 | }, 51 | ], 52 | } 53 | ``` 54 | 2. Add the new file import to the data.js file in the source folder. 55 | 56 | ```js 57 | import {adobe_photoshop} from './sources/adobe-photoshop.js' 58 | ... 59 | import {YOUR_CONTRIBUTION_HERE} from './sources/YOUR_CONTRIBUTION,.js' 60 | 61 | export const data = [ 62 | adobe_photoshop, 63 | ... 64 | YOUR_CONTRIBUTION_HERE, 65 | ] 66 | ``` 67 | 68 | 69 | ## Local Installation 🏠 70 | 71 | - Download and extract the contents 72 | - In Chrome, open chrome://extensions/ 73 | - Click + Developer mode 74 | - Click Load unpacked extension… 75 | - Navigate to the src folder and click OK 76 | - Enable The Extension 77 | 78 | ## Using The Application 🔥 79 | 80 | Opening Paths can be done by pressing ⌘ Command+Shift+Y on Mac or Ctrl+Shift+Y on Windows. You can change the shortcut by going to chrome://extensions/shortcuts in Chrome. Also, if you cannnot use the command for some reason, you can also open it by pressing the app button on the top bar. 81 | 82 | Closing the app can be done by either clicking on the background, pressing Esc or by pressing the icon on the topbar. 83 | 84 | ## Support 💌 85 | 86 | If you find the app useful and want to support me, you can do so by support me on Product Hunt, giving the repo a star on Github, or by following me on twitter. The links to all can be found below: 87 | 88 |

89 | ENJOY THE APP! 😄 90 |

91 | -------------------------------------------------------------------------------- /src/data/sources/notion.js: -------------------------------------------------------------------------------- 1 | export const notion = { 2 | title: 'Notion', 3 | icon: 'https://www.notion.so/front-static/favicon.ico', 4 | sections: [ 5 | { 6 | name: 'Main', 7 | shortcuts: [ 8 | { 9 | description: 'Create a new page', 10 | keys: ['Ctrl', 'N'], 11 | }, 12 | { 13 | description: 'Open a new window', 14 | keys: ['Ctrl', 'Shift', 'N'], 15 | }, 16 | { 17 | description: 'Quick Find', 18 | keys: ['Ctrl', 'P'], 19 | }, 20 | { 21 | description: 'Go back', 22 | keys: ['Ctrl', '['], 23 | }, 24 | { 25 | description: 'Go forward', 26 | keys: ['Ctrl', ']'], 27 | }, 28 | { 29 | description: 'Go up to the parent page', 30 | keys: ['Ctrl', 'Shift', 'U'], 31 | }, 32 | { 33 | description: 'Toggle dark mode', 34 | keys: ['Ctrl', 'Shift', 'L'], 35 | }, 36 | { 37 | description: 'Toggle the sidebar', 38 | keys: ['Ctrl', '\\'], 39 | }, 40 | ], 41 | }, 42 | { 43 | name: 'Content Creation & Editing', 44 | shortcuts: [ 45 | { 46 | description: 'Insert text', 47 | keys: ['Enter'], 48 | }, 49 | { 50 | description: 'Create a comment', 51 | keys: ['Ctrl', 'Shift', 'M'], 52 | }, 53 | { 54 | description: 'Create a divider', 55 | keys: ['---'], 56 | }, 57 | { 58 | description: 'Bold selected text', 59 | keys: ['Ctrl', 'B'], 60 | }, 61 | { 62 | description: 'Italicize selected text', 63 | keys: ['Ctrl', 'I'], 64 | }, 65 | { 66 | description: 'Strike-through selected text', 67 | keys: ['Ctrl', 'Shift', 'S'], 68 | }, 69 | { 70 | description: 'Create a link with the selected text', 71 | keys: ['Ctrl', 'K'], 72 | }, 73 | { 74 | description: 'Create inline code with the selected text', 75 | keys: ['Ctrl', 'E'], 76 | }, 77 | { 78 | description: 'Create text', 79 | keys: ['Ctrl', 'Shift', '0'], 80 | mac_keys: ['Cmd', 'Opt', '0'], 81 | }, 82 | { 83 | description: 'Create a heading 1', 84 | keys: ['Ctrl', 'Shift', '1'], 85 | mac_keys: ['Cmd', 'Opt', '1'], 86 | }, 87 | { 88 | description: 'Create a heading 2', 89 | keys: ['Ctrl', 'Shift', '2'], 90 | mac_keys: ['Cmd', 'Opt', '2'], 91 | }, 92 | { 93 | description: 'Create a heading 3', 94 | keys: ['Ctrl', 'Shift', '3'], 95 | mac_keys: ['Cmd', 'Opt', '3'], 96 | }, 97 | { 98 | description: 'Create a to-do', 99 | keys: ['Ctrl', 'Shift', '4'], 100 | mac_keys: ['Cmd', 'Opt', '4'], 101 | }, 102 | { 103 | description: 'Create a bulleted list', 104 | keys: ['Ctrl', 'Shift', '5'], 105 | mac_keys: ['Cmd', 'Opt', '5'], 106 | }, 107 | { 108 | description: 'Create a numbered list', 109 | keys: ['Ctrl', 'Shift', '6'], 110 | mac_keys: ['Cmd', 'Opt', '6'], 111 | }, 112 | { 113 | description: 'Create a toggle list', 114 | keys: ['Ctrl', 'Shift', '7'], 115 | mac_keys: ['Cmd', 'Opt', '7'], 116 | }, 117 | { 118 | description: 'Create a code block', 119 | keys: ['Ctrl', 'Shift', '8'], 120 | mac_keys: ['Cmd', 'Opt', '8'], 121 | }, 122 | { 123 | description: 'Create a page block', 124 | keys: ['Ctrl', 'Shift', '9'], 125 | mac_keys: ['Cmd', 'Opt', '9'], 126 | }, 127 | ], 128 | }, 129 | { 130 | name: 'While Dragging', 131 | shortcuts: [ 132 | { 133 | description: 'Hold down these keys to duplicate', 134 | keys: ['Alt'], 135 | }, 136 | ], 137 | }, 138 | { 139 | name: 'While Typing', 140 | shortcuts: [ 141 | { 142 | description: 'Select the block you are editing', 143 | keys: ['Esc'], 144 | }, 145 | { 146 | description: 'Indent This will insert the block into the previous block', 147 | keys: ['Tab'], 148 | }, 149 | { 150 | description: 'Un-indent', 151 | keys: ['Shift', 'Tab'], 152 | }, 153 | ], 154 | }, 155 | { 156 | name: 'While Blocks are Selected', 157 | shortcuts: [ 158 | { 159 | description: 'Activate buttons/pages and checks/un-check checkboxes, toggle to-dos, or enter full screen on embeds/images', 160 | keys: ['Ctrl', 'Enter'], 161 | }, 162 | { 163 | description: 'Expand the selection up or down', 164 | keys: ['Ctrl', 'Shift', 'Left/Right'], 165 | }, 166 | { 167 | description: 'Open a page in a new tab', 168 | keys: ['Ctrl', 'Shift', 'Enter'], 169 | }, 170 | { 171 | description: 'Rename the current selection', 172 | keys: ['Ctrl', 'Shift', 'R'], 173 | }, 174 | { 175 | description: 'Enter fullscreen (while on an image)', 176 | keys: ['Space'], 177 | }, 178 | { 179 | description: 'Change the selection', 180 | keys: ['Arrows'], 181 | }, 182 | { 183 | description: 'Expand the selection up or down by one block', 184 | keys: ['Shift', 'Up/Down'], 185 | }, 186 | { 187 | description: 'Select all blocks in the page', 188 | keys: ['Ctrl', 'A'], 189 | }, 190 | { 191 | description: 'Toggle selection of a block', 192 | keys: ['Ctrl', 'Shift', '(click)'], 193 | }, 194 | { 195 | description: 'Select another block and all blocks in-between', 196 | keys: ['Shift', '(click)'], 197 | }, 198 | { 199 | description: 'Clear the selected blocks', 200 | keys: ['Esc'], 201 | }, 202 | { 203 | description: 'Delete the selected blocks', 204 | keys: ['Del/Bksp'], 205 | }, 206 | { 207 | description: 'Duplicate the blocks you have selected', 208 | keys: ['Ctrl', 'D'], 209 | }, 210 | { 211 | description: 'Edit the block you have selected If the block has no text, something else might happen', 212 | keys: ['Enter'], 213 | }, 214 | { 215 | description: 'Copy the link to the Notion page you are on (desktop apps only)', 216 | keys: ['Ctrl', 'L'], 217 | }, 218 | { 219 | description: 'Select a few blocks, then edit blocks all at once', 220 | keys: ['Ctrl', '/'], 221 | }, 222 | { 223 | description: 'Select multiple cards in a board view, then move or edit them all at once', 224 | keys: ['Ctrl', '/'], 225 | }, 226 | { 227 | description: 'Hold, then use the arrow keys to change the position of a block', 228 | keys: ['Ctrl', 'Shift'], 229 | }, 230 | { 231 | description: 'Expand/close all toggles', 232 | keys: ['Ctrl', 'Alt', 'T'], 233 | }, 234 | ], 235 | }, 236 | ], 237 | } 238 | -------------------------------------------------------------------------------- /src/data/sources/chrome.js: -------------------------------------------------------------------------------- 1 | export const chrome = { 2 | title: 'Chrome', 3 | icon: 'https://www.google.com/chrome/static/images/favicons/favicon-16x16.png', 4 | sections: [ 5 | { 6 | name: 'Tab and window', 7 | shortcuts: [ 8 | { 9 | description: 'Open a new window', 10 | keys: ['Ctrl', 'N'], 11 | }, 12 | { 13 | description: 'Open a new window in Incognito mode', 14 | keys: ['Ctrl', 'Shift', 'N'], 15 | }, 16 | { 17 | description: 'Open a new tab, and jump to it', 18 | keys: ['Ctrl', 'T'], 19 | }, 20 | { 21 | description: 'Reopen the last closed tab, and jump to it', 22 | keys: ['Ctrl', 'Shift', 'T'], 23 | }, 24 | { 25 | description: 'Jump to the next open tab', 26 | keys: ['Ctrl', 'Tab'], 27 | }, 28 | { 29 | description: 'Jump to the previous open tab', 30 | keys: ['Ctrl', 'Shift', 'Tab'], 31 | }, 32 | { 33 | description: 'Jump to a specific tab', 34 | keys: ['Ctrl', '1-8'], 35 | }, 36 | { 37 | description: 'Jump to the last tab', 38 | keys: ['Ctrl', '9'], 39 | }, 40 | { 41 | description: 'Open your home page in the current tab', 42 | keys: ['Alt', 'Home'], 43 | }, 44 | { 45 | description: 'Open the previous page from your history in the current tab', 46 | keys: ['Alt', 'Left'], 47 | }, 48 | { 49 | description: 'Open the next page from your history in the current tab', 50 | keys: ['Alt', 'Right'], 51 | }, 52 | { 53 | description: 'Close the current tab', 54 | keys: ['Ctrl', 'W'], 55 | }, 56 | { 57 | description: 'Close the current window', 58 | keys: ['Ctrl', 'Shift', 'W'], 59 | }, 60 | { 61 | description: 'Minimize the current window', 62 | keys: ['Alt', 'Space', 'N'], 63 | }, 64 | { 65 | description: 'Maximize the current window', 66 | keys: ['Alt', 'Space', 'X'], 67 | }, 68 | { 69 | description: 'Close the current window', 70 | keys: ['Alt', 'F4'], 71 | }, 72 | { 73 | description: 'Quite Google Chrome', 74 | keys: ['Ctrl', 'Shift', 'Q'], 75 | }, 76 | ], 77 | }, 78 | { 79 | name: 'Google Chrome features', 80 | shortcuts: [ 81 | { 82 | description: 'Open the Chrome menu', 83 | keys: ['Alt', 'F'], 84 | }, 85 | { 86 | description: 'Show or hide the Bookmarks bar', 87 | keys: ['Ctrl', 'Shift', 'B'], 88 | }, 89 | { 90 | description: 'Open the Bookmarks manager', 91 | keys: ['Ctrl', 'Shift', 'O'], 92 | }, 93 | { 94 | description: 'Open the History page in a new tab', 95 | keys: ['Ctrl', 'H'], 96 | }, 97 | { 98 | description: 'Open the Downloads page in a new tab', 99 | keys: ['Ctrl', 'J'], 100 | }, 101 | { 102 | description: 'Open the Chrome Task Manager', 103 | keys: ['Shift', 'Esc'], 104 | }, 105 | { 106 | description: 'Set focus on the first item in the Chrome toolbar', 107 | keys: ['Shift', 'Alt', 'T'], 108 | }, 109 | { 110 | description: 'Set focus on the last item in the Chrome toolbar', 111 | keys: ['F10'], 112 | }, 113 | { 114 | description: 'Switch focus to unfocused dialog (if showing)', 115 | keys: ['F6'], 116 | }, 117 | { 118 | description: 'Open the Find Bar to search the current page', 119 | keys: ['Ctrl', 'F'], 120 | }, 121 | { 122 | description: 'Jump to the next match to your Find Bar search', 123 | keys: ['Ctrl', 'G'], 124 | }, 125 | { 126 | description: 'Jump to the previous match to your Find Bar search', 127 | keys: ['Ctrl', 'Shift', 'G'], 128 | }, 129 | { 130 | description: 'Open Developer Tools', 131 | keys: ['F12'], 132 | }, 133 | { 134 | description: 'Open the Clear Browsing Data options', 135 | keys: ['Ctrl', 'Shift', 'Delete'], 136 | }, 137 | { 138 | description: 'Open the Chrome Help Center in a new tab', 139 | keys: ['F1'], 140 | }, 141 | { 142 | description: 'Log in a different user or browse as a Guest', 143 | keys: ['Ctrl', 'Shift', 'M'], 144 | }, 145 | { 146 | description: 'Open a feedback form', 147 | keys: ['Alt', 'Shift', 'I'], 148 | }, 149 | ], 150 | }, 151 | { 152 | name: 'Address bar', 153 | shortcuts: [ 154 | { 155 | description: 'Search with your default search engine', 156 | keys: ['(type)', 'Enter'], 157 | }, 158 | { 159 | description: 'Search using a different search engine', 160 | keys: ['(type)', 'Tab'], 161 | }, 162 | { 163 | description: 'Add www. and .com to a site name, and open in the current tab', 164 | keys: ['Ctrl', 'Enter'], 165 | }, 166 | { 167 | description: 'Open a new tab and perform a Google search', 168 | keys: ['Alt', 'Enter'], 169 | }, 170 | { 171 | description: 'Jump to the address bar', 172 | keys: ['Ctrl', 'L'], 173 | }, 174 | { 175 | description: 'Search from anywhere on the page', 176 | keys: ['Ctrl', 'K'], 177 | }, 178 | { 179 | description: 'Remove predictions from your address bar', 180 | keys: ['Shift', 'Delete'], 181 | }, 182 | ], 183 | }, 184 | { 185 | name: 'Webpage shortcuts', 186 | shortcuts: [ 187 | { 188 | description: 'Open options to print the current page', 189 | keys: ['Ctrl', 'P'], 190 | }, 191 | { 192 | description: 'Open options to save the current page', 193 | keys: ['Ctrl', 'S'], 194 | }, 195 | { 196 | description: 'Reload the current page', 197 | keys: ['Ctrl', 'R'], 198 | }, 199 | { 200 | description: 'Reload the current page, ignoring cached content', 201 | keys: ['Ctrl', 'Shift', 'R'], 202 | }, 203 | { 204 | description: 'Stop the page loading', 205 | keys: ['Esc'], 206 | }, 207 | { 208 | description: 'Browse clickable items moving forward', 209 | keys: ['Tab'], 210 | }, 211 | { 212 | description: 'Browse clickable items moving backward', 213 | keys: ['Shift', 'Tab'], 214 | }, 215 | { 216 | description: 'Open a file from your computer in Chrome', 217 | keys: ['Ctrl', 'O'], 218 | }, 219 | { 220 | description: 'Display non-editable HTML source code for the current page', 221 | keys: ['Ctrl', 'U'], 222 | }, 223 | { 224 | description: 'Save your current webpage as a bookmark', 225 | keys: ['Ctrl', 'D'], 226 | }, 227 | { 228 | description: 'Save all open tabs as bookmarks in a new folder', 229 | keys: ['Ctrl', 'Shift', 'D'], 230 | }, 231 | { 232 | description: 'Turn full-screen mode on or off', 233 | keys: ['F11'], 234 | }, 235 | { 236 | description: 'Make everything on the page bigger', 237 | keys: ['Ctrl', '+'], 238 | }, 239 | { 240 | description: 'Make everything on the page smaller', 241 | keys: ['Ctrl', '-'], 242 | }, 243 | { 244 | description: 'Return everything on the page to default size', 245 | keys: ['Ctrl', '0'], 246 | }, 247 | { 248 | description: 'Scroll down a webpage, a screen at a time', 249 | keys: ['Space'], 250 | }, 251 | { 252 | description: 'Scroll up a webpage, a screen at a time', 253 | keys: ['Shift', 'Space'], 254 | }, 255 | { 256 | description: 'Go to the top of the page', 257 | keys: ['Home'], 258 | }, 259 | { 260 | description: 'Go to the bottom of the page', 261 | keys: ['End'], 262 | }, 263 | { 264 | description: 'Scroll horizontally on the page', 265 | keys: ['Shift', '(scroll mouse)'], 266 | }, 267 | { 268 | description: 269 | 'Move your cursor to the front of the previous word in a text field', 270 | keys: ['Ctrl', 'Left'], 271 | }, 272 | { 273 | description: 'Move your cursor to the back of the next word in a text field', 274 | keys: ['Ctrl', 'Right'], 275 | }, 276 | { 277 | description: 'Delete the previous word in a text field', 278 | keys: ['Ctrl', 'Backspace'], 279 | }, 280 | { 281 | description: 'Open the Home page in the current tab', 282 | keys: ['Alt', 'Home'], 283 | }, 284 | ], 285 | }, 286 | ], 287 | } 288 | -------------------------------------------------------------------------------- /src/data/sources/github.js: -------------------------------------------------------------------------------- 1 | export const github = { 2 | title: 'Github', 3 | icon: 'https://github.com/fluidicon.png', 4 | sections: [ 5 | { 6 | name: 'Site wide shortcuts', 7 | shortcuts: [ 8 | { 9 | description: 'Focus the search bar', 10 | keys: ['S'], 11 | }, 12 | { 13 | description: 'Go to your notifications', 14 | keys: ['G', 'N'], 15 | }, 16 | { 17 | description: 'Opens and focuses on a user, issue, or pull request hovercard', 18 | keys: ['H'], 19 | }, 20 | { 21 | description: 'When focused on above, closes hovercard', 22 | keys: ['Esc'], 23 | }, 24 | ], 25 | }, 26 | { 27 | name: 'Repositories', 28 | shortcuts: [ 29 | { 30 | description: 'Go to the Code tab', 31 | keys: ['G', 'C'], 32 | }, 33 | { 34 | description: 'Go to the Issues tab', 35 | keys: ['G', 'I'], 36 | }, 37 | { 38 | description: 'Go to the Pull requests tab', 39 | keys: ['G', 'P'], 40 | }, 41 | { 42 | description: 'Go to the Projects tab', 43 | keys: ['G', 'B'], 44 | }, 45 | { 46 | description: 'Go to the Wiki tab', 47 | keys: ['G', 'W'], 48 | }, 49 | ], 50 | }, 51 | { 52 | name: 'Source code editing', 53 | shortcuts: [ 54 | { 55 | description: 'Start searching in file editor', 56 | keys: ['Ctrl', 'F'], 57 | }, 58 | { 59 | description: 'Find next', 60 | keys: ['Ctrl', 'G'], 61 | }, 62 | { 63 | description: 'Find previous', 64 | keys: ['Ctrl', 'Shift', 'G'], 65 | }, 66 | { 67 | description: 'Replace', 68 | keys: ['Ctrl', 'Shift', 'F'], 69 | }, 70 | { 71 | description: 'Replace all', 72 | keys: ['Ctrl', 'Shift', 'R'], 73 | }, 74 | { 75 | description: 'Jump to line', 76 | keys: ['Alt', 'G'], 77 | }, 78 | { 79 | description: 'Undo', 80 | keys: ['Ctrl', 'Z'], 81 | }, 82 | { 83 | description: 'Redo', 84 | keys: ['Ctrl', 'Y'], 85 | }, 86 | ], 87 | }, 88 | { 89 | name: 'Source code browsing', 90 | shortcuts: [ 91 | { 92 | description: 'Activates the file finder', 93 | keys: ['T'], 94 | }, 95 | { 96 | description: 'Jump to a line in your code', 97 | keys: ['L'], 98 | }, 99 | { 100 | description: 'Switch to a new branch or tag', 101 | keys: ['W'], 102 | }, 103 | { 104 | description: 'Expand a URL to its canonical form', 105 | keys: ['Y'], 106 | }, 107 | { 108 | description: 'Show or hide comments on diffs', 109 | keys: ['I'], 110 | }, 111 | { 112 | description: 'Open blame view', 113 | keys: ['B'], 114 | }, 115 | ], 116 | }, 117 | { 118 | name: 'Comments', 119 | shortcuts: [ 120 | { 121 | description: 'Inserts Markdown formatting for bolding text', 122 | keys: ['Ctrl', 'B'], 123 | }, 124 | { 125 | description: 'Inserts Markdown formatting for italicizing text', 126 | keys: ['Ctrl', 'I'], 127 | }, 128 | { 129 | description: 'Inserts Markdown formatting for creating a link', 130 | keys: ['Ctrl', 'K'], 131 | }, 132 | { 133 | description: 'Toggles between the Write and Preview comment tabs', 134 | keys: ['Ctrl', 'Shift', 'P'], 135 | }, 136 | { 137 | description: 'Submits a comment', 138 | keys: ['Ctrl', 'Enter'], 139 | }, 140 | { 141 | description: 142 | 'Opens saved replies menu and then autofills comment field with a saved reply', 143 | keys: ['Ctrl', '.'], 144 | }, 145 | { 146 | description: 'Inserts a suggestions', 147 | keys: ['Ctrl', 'G'], 148 | }, 149 | { 150 | description: 'Quote the selected text in your reply', 151 | keys: ['R'], 152 | }, 153 | ], 154 | }, 155 | { 156 | name: 'Issue and pull request lists', 157 | shortcuts: [ 158 | { 159 | description: 'Create an issue', 160 | keys: ['C'], 161 | }, 162 | { 163 | description: 'Focus your cursor on the issues or pull requests search bar', 164 | keys: ['Ctrl', '/'], 165 | }, 166 | { 167 | description: 'Filter by author', 168 | keys: ['U'], 169 | }, 170 | { 171 | description: 'Filter by or edit labels', 172 | keys: ['L'], 173 | }, 174 | { 175 | description: 'Filter by or edit milestones', 176 | keys: ['M'], 177 | }, 178 | { 179 | description: 'Filter by or edit assignee', 180 | keys: ['A'], 181 | }, 182 | { 183 | description: 'Open issue', 184 | keys: ['O'], 185 | }, 186 | ], 187 | }, 188 | { 189 | name: 'Issues and pull requests', 190 | shortcuts: [ 191 | { 192 | description: 'Request a reviewer', 193 | keys: ['Q'], 194 | }, 195 | { 196 | description: 'Set a milestone', 197 | keys: ['M'], 198 | }, 199 | { 200 | description: 'Apply a label', 201 | keys: ['L'], 202 | }, 203 | { 204 | description: 'Set an assignee', 205 | keys: ['A'], 206 | }, 207 | ], 208 | }, 209 | { 210 | name: 'Changes in pull requests', 211 | shortcuts: [ 212 | { 213 | description: 'Open the list of commits in the pull request', 214 | keys: ['C'], 215 | }, 216 | { 217 | description: 'Open the list of changed files in the pull request', 218 | keys: ['T'], 219 | }, 220 | { 221 | description: 'Move selection down in the list', 222 | keys: ['J'], 223 | }, 224 | { 225 | description: 'Move selection up in the list', 226 | keys: ['K'], 227 | }, 228 | { 229 | description: 'Add a single comment on a pull request diff', 230 | keys: ['Ctrl', 'Shift', 'Enter'], 231 | }, 232 | { 233 | description: 234 | 'Toggle between collapsing and expanding all outdated review comments in a pull request', 235 | keys: ['Alt', '(click)'], 236 | }, 237 | ], 238 | }, 239 | { 240 | name: 'Project boards', 241 | shortcuts: [ 242 | { 243 | description: 'Start moving the focused column', 244 | keys: ['Enter/Space'], 245 | }, 246 | { 247 | description: 'Cancel the move in progress', 248 | keys: ['Esc'], 249 | }, 250 | { 251 | description: 'Complete the move in progress', 252 | keys: ['Enter'], 253 | }, 254 | { 255 | description: 'Move column to the left', 256 | keys: ['Left/H'], 257 | }, 258 | { 259 | description: 'Move column to the leftmost position', 260 | keys: ['Ctrl', 'Left/H'], 261 | }, 262 | { 263 | description: 'Move column to the right', 264 | keys: ['Right/L'], 265 | }, 266 | { 267 | description: 'Move column to the rightmost position', 268 | keys: ['Ctrl', 'Right/L'], 269 | }, 270 | { 271 | description: 'Start moving the focused card', 272 | keys: ['Enter/Space'], 273 | }, 274 | { 275 | description: 'Cancel the move in progress', 276 | keys: ['Esc'], 277 | }, 278 | { 279 | description: 'Complete the move in progress', 280 | keys: ['Enter'], 281 | }, 282 | { 283 | description: 'Move card down', 284 | keys: ['Down/J'], 285 | }, 286 | { 287 | description: 'Move card to the bottom of the column', 288 | keys: ['Ctrl', 'Down/J'], 289 | }, 290 | { 291 | description: 'Move card up', 292 | keys: ['Up/K'], 293 | }, 294 | { 295 | description: 'Move card to the top of the column', 296 | keys: ['Ctrl', 'Up/K'], 297 | }, 298 | { 299 | description: 'Move card to the bottom of the column on the left', 300 | keys: ['Left/H'], 301 | }, 302 | { 303 | description: 'Move card to the top of the column on the left', 304 | keys: ['Shift', 'Left/H'], 305 | }, 306 | { 307 | description: 'Move card to the bottom of the leftmost column', 308 | keys: ['Ctrl', 'Left/H'], 309 | }, 310 | { 311 | description: 'Move card to the top of the leftmost column', 312 | keys: ['Ctrl', 'Shift', 'Left/H'], 313 | }, 314 | { 315 | description: 'Move card to the bottom of the column on the right', 316 | keys: ['Right'], 317 | }, 318 | { 319 | description: 'Move card to the top of the column on the right', 320 | keys: ['Shift', 'Right/L'], 321 | }, 322 | { 323 | description: 'Move card to the bottom of the rightmost column', 324 | keys: ['Ctrl', 'Right/L'], 325 | }, 326 | { 327 | description: 'Move card to the top of the rightmost column', 328 | keys: ['Ctrl', 'Shift', 'Right/L'], 329 | }, 330 | ], 331 | }, 332 | { 333 | name: 'Notifications', 334 | shortcuts: [ 335 | { 336 | description: 'Mark as read', 337 | keys: ['E/L/Y'], 338 | }, 339 | { 340 | description: 'Mute thread', 341 | keys: ['Shift', 'M'], 342 | }, 343 | ], 344 | }, 345 | { 346 | name: 'Network graph', 347 | shortcuts: [ 348 | { 349 | description: 'Scroll left', 350 | keys: ['Left/H'], 351 | }, 352 | { 353 | description: 'Scroll right', 354 | keys: ['Right/L'], 355 | }, 356 | { 357 | description: 'Scroll up', 358 | keys: ['Up/K'], 359 | }, 360 | { 361 | description: 'Scroll down', 362 | keys: ['Down/J'], 363 | }, 364 | { 365 | description: 'Scroll all the way left', 366 | keys: ['Shift', 'Left/H'], 367 | }, 368 | { 369 | description: 'Scroll all the way right', 370 | keys: ['Shift', 'Right/L'], 371 | }, 372 | { 373 | description: 'Scroll all the way up', 374 | keys: ['Shift', 'Up/K'], 375 | }, 376 | { 377 | description: 'Scroll all the way down', 378 | keys: ['Shift', 'Down/J'], 379 | }, 380 | ], 381 | }, 382 | ], 383 | } 384 | -------------------------------------------------------------------------------- /src/data/sources/adobe-xd.js: -------------------------------------------------------------------------------- 1 | export const adobe_xd = { 2 | title: 'Adobe XD', 3 | icon: 'https://www.adobe.com/content/dam/acom/one-console/icons_rebrand/xd_appicon.svg', 4 | sections: [ 5 | { 6 | name: 'Keys for Edit menu', 7 | shortcuts: [ 8 | { 9 | description: 'Undo', 10 | keys: ['Ctrl', 'Z'], 11 | }, 12 | { 13 | description: 'Redo', 14 | keys: ['Ctrl', 'Shift', 'Z'], 15 | }, 16 | { 17 | description: 'Cut', 18 | keys: ['Ctrl', 'X'], 19 | }, 20 | { 21 | description: 'Copy', 22 | keys: ['Ctrl', 'C'], 23 | }, 24 | { 25 | description: 'Paste', 26 | keys: ['Ctrl', 'V'], 27 | }, 28 | { 29 | description: 'Paste Appearance (Design mode) or Paste Interaction (Prototype mode)', 30 | keys: ['Ctrl', 'Alt', 'V'], 31 | }, 32 | { 33 | description: 'Duplicate', 34 | keys: ['Ctrl', 'D'], 35 | }, 36 | { 37 | description: 'Delete', 38 | keys: ['Del'], 39 | }, 40 | { 41 | description: 'Select All', 42 | keys: ['Ctrl', 'A'], 43 | }, 44 | { 45 | description: 'Deselect All', 46 | keys: ['Ctrl', 'Shift', 'A'], 47 | }, 48 | ], 49 | }, 50 | { 51 | name: 'Keys for File menu', 52 | shortcuts: [ 53 | { 54 | description: 'New', 55 | keys: ['Ctrl', 'N'], 56 | }, 57 | { 58 | description: 'Open...', 59 | keys: ['Ctrl', 'Shift', 'O'], 60 | }, 61 | { 62 | description: 'Close', 63 | keys: ['Alt', 'F4'], 64 | }, 65 | { 66 | description: 'Save...', 67 | keys: ['Ctrl', 'S'], 68 | }, 69 | { 70 | description: 'Save As...', 71 | keys: ['Ctrl', 'Shift', 'S'], 72 | }, 73 | { 74 | description: 'Export Batch', 75 | keys: ['Ctrl', 'Shift', 'E'], 76 | }, 77 | { 78 | description: 'Export Selected', 79 | keys: ['Ctrl', 'E'], 80 | }, 81 | { 82 | description: 'Import', 83 | keys: ['Ctrl', 'Shift', 'I'], 84 | }, 85 | ], 86 | }, 87 | { 88 | name: 'Keys for Pen/Path', 89 | shortcuts: [ 90 | { 91 | description: 'Switch to Pen tool', 92 | keys: ['P'], 93 | }, 94 | { 95 | description: 'Asymmetric control point', 96 | keys: ['Alt'], 97 | }, 98 | { 99 | description: 'Snap control point angle', 100 | keys: ['Shift'], 101 | }, 102 | { 103 | description: 'Snap anchor point angle', 104 | keys: ['Shift'], 105 | }, 106 | { 107 | description: 'Add', 108 | keys: ['Ctrl', 'Alt', 'U'], 109 | }, 110 | { 111 | description: 'Subtract', 112 | keys: ['Ctrl', 'Alt', 'S'], 113 | }, 114 | { 115 | description: 'Intersect', 116 | keys: ['Ctrl', 'Alt', 'I'], 117 | }, 118 | { 119 | description: 'Exclude overlap', 120 | keys: ['Ctrl', 'Alt', 'X'], 121 | }, 122 | { 123 | description: 'Convert to path', 124 | keys: ['Ctrl', '8'], 125 | }, 126 | ], 127 | }, 128 | { 129 | name: 'Keys for Layers (Objects), Groups, and Artboards', 130 | shortcuts: [ 131 | { 132 | description: 'Group layers', 133 | keys: ['Ctrl', 'G'], 134 | }, 135 | { 136 | description: 'Ungroup layers', 137 | keys: ['Ctrl', 'Shift', 'G'], 138 | }, 139 | { 140 | description: 'Make component', 141 | keys: ['Ctrl', 'K'], 142 | }, 143 | { 144 | description: 'Lock/Unlock layer', 145 | keys: ['Ctrl', 'L'], 146 | }, 147 | { 148 | description: 'Hide/Show layer', 149 | keys: ['Ctrl', ','], 150 | }, 151 | { 152 | description: 'Mask with shape', 153 | keys: ['Ctrl', 'Shift', 'M'], 154 | }, 155 | { 156 | description: 'Make repeat grid', 157 | keys: ['Ctrl', 'R'], 158 | }, 159 | { 160 | description: 'Change layer opacity', 161 | keys: ['1-9'], 162 | }, 163 | { 164 | description: 'Show/Hide artboard guides', 165 | keys: ['Ctrl', ';'], 166 | }, 167 | { 168 | description: 'Lock artboard guides', 169 | keys: ['Ctrl', 'Shift', ';'], 170 | }, 171 | ], 172 | }, 173 | { 174 | name: 'Keys for Align', 175 | shortcuts: [ 176 | { 177 | description: 'Left', 178 | keys: ['Ctrl', 'Shift', 'Left'], 179 | }, 180 | { 181 | description: 'Center (horizontally)', 182 | keys: ['Shift', 'C'], 183 | }, 184 | { 185 | description: 'Right', 186 | keys: ['Ctrl', 'Shift', 'Right'], 187 | }, 188 | { 189 | description: 'Top', 190 | keys: ['Ctrl', 'Shift', 'Up'], 191 | }, 192 | { 193 | description: 'Middle (vertically)', 194 | keys: ['Shift', 'M'], 195 | }, 196 | { 197 | description: 'Bottom', 198 | keys: ['Ctrl', 'Shift', 'Down'], 199 | }, 200 | ], 201 | }, 202 | { 203 | name: 'Keys for Arrange', 204 | shortcuts: [ 205 | { 206 | description: 'Bring to front', 207 | keys: ['Ctrl', 'Shift', ']'], 208 | }, 209 | { 210 | description: 'Bring forward', 211 | keys: ['Ctrl', ']'], 212 | }, 213 | { 214 | description: 'Send backward', 215 | keys: ['Ctrl', '['], 216 | }, 217 | { 218 | description: 'Send to back', 219 | keys: ['Ctrl', 'Shift', '['], 220 | }, 221 | ], 222 | }, 223 | { 224 | name: 'Keys for Distribute', 225 | shortcuts: [ 226 | { 227 | description: 'Horizontal', 228 | keys: ['Ctrl', 'Shift', 'H'], 229 | }, 230 | { 231 | description: 'Vertical', 232 | keys: ['Ctrl', 'Shift', 'V'], 233 | }, 234 | ], 235 | }, 236 | { 237 | name: 'Keys for Text', 238 | shortcuts: [ 239 | { 240 | description: 'Bold', 241 | keys: ['Ctrl', 'B'], 242 | }, 243 | { 244 | description: 'Italic', 245 | keys: ['Ctrl', 'I'], 246 | }, 247 | { 248 | description: 'Increase font size', 249 | keys: ['Ctrl', 'Shift', '.'], 250 | }, 251 | { 252 | description: 'Decrease font size', 253 | keys: ['Ctrl', 'Shift', ','], 254 | }, 255 | ], 256 | }, 257 | { 258 | name: 'Keys for Operations menu', 259 | shortcuts: [ 260 | { 261 | description: 'From center', 262 | keys: ['Alt'], 263 | }, 264 | { 265 | description: 'Constrain', 266 | keys: ['Shift'], 267 | }, 268 | { 269 | description: 'Edit text', 270 | keys: ['Enter'], 271 | }, 272 | { 273 | description: 'Constrain rotate (15 deg)', 274 | keys: ['Shift'], 275 | }, 276 | { 277 | description: 'Line constrain rotate (45 deg)', 278 | keys: ['Shift'], 279 | }, 280 | { 281 | description: 'Constrain from center', 282 | keys: ['Shift', 'Alt'], 283 | }, 284 | { 285 | description: 'Direct select', 286 | keys: ['Ctrl'], 287 | }, 288 | { 289 | description: 'Switch between Design and Prototype mode', 290 | keys: ['Ctrl', 'Tab'], 291 | }, 292 | ], 293 | }, 294 | { 295 | name: 'Keys for Tools menu', 296 | shortcuts: [ 297 | { 298 | description: 'Select', 299 | keys: ['V'], 300 | }, 301 | { 302 | description: 'Rectangle', 303 | keys: ['R'], 304 | }, 305 | { 306 | description: 'Ellipse', 307 | keys: ['E'], 308 | }, 309 | { 310 | description: 'Polygon', 311 | keys: ['Y'], 312 | }, 313 | { 314 | description: 'Line', 315 | keys: ['L'], 316 | }, 317 | { 318 | description: 'Pen', 319 | keys: ['P'], 320 | }, 321 | { 322 | description: 'Text', 323 | keys: ['T'], 324 | }, 325 | { 326 | description: 'Artboard', 327 | keys: ['A'], 328 | }, 329 | { 330 | description: 'Zoom', 331 | keys: ['Z'], 332 | }, 333 | { 334 | description: 'Zoom to selection', 335 | keys: ['Ctrl', '3'], 336 | }, 337 | { 338 | description: 'Eyedropper', 339 | keys: ['I'], 340 | }, 341 | ], 342 | }, 343 | { 344 | name: 'Keys for Interface and Viewing Options', 345 | shortcuts: [ 346 | { 347 | description: 'Zoom in', 348 | keys: ['Ctrl', '+'], 349 | }, 350 | { 351 | description: 'Zoom out', 352 | keys: ['Ctrl', '-'], 353 | }, 354 | { 355 | description: 'Zoom to fit', 356 | keys: ['Ctrl', '0'], 357 | }, 358 | { 359 | description: 'Zoom to 100%', 360 | keys: ['Ctrl', '1'], 361 | }, 362 | { 363 | description: 'Zoom to 200%', 364 | keys: ['Ctrl', '2'], 365 | }, 366 | { 367 | description: 'Pan', 368 | keys: ['Space'], 369 | }, 370 | { 371 | description: 'Assets', 372 | keys: ['Ctrl', 'Shift', 'Y'], 373 | }, 374 | { 375 | description: 'Layers', 376 | keys: ['Ctrl', 'Y'], 377 | }, 378 | { 379 | description: 'Show layout grid', 380 | keys: ['Ctrl', 'Shift', "'"], 381 | }, 382 | { 383 | description: 'Show square grid', 384 | keys: ['Ctrl', "'"], 385 | }, 386 | { 387 | description: 'Switch between Design and Prototype mode', 388 | keys: ['Ctrl', 'Tab'], 389 | }, 390 | { 391 | description: 'Increase or decrease a value in a field by 1', 392 | keys: ['Up/Down'], 393 | }, 394 | { 395 | description: 'Increase or decrease a value in a field by 10', 396 | keys: ['Shift', 'Up/Down'], 397 | }, 398 | ], 399 | }, 400 | { 401 | name: 'Keys for Design Specs', 402 | shortcuts: [ 403 | { 404 | description: 'Zoom', 405 | keys: ['Ctrl', '+/-'], 406 | }, 407 | { 408 | description: 'Reset zoom', 409 | keys: ['Ctrl', '0'], 410 | }, 411 | { 412 | description: 'Pan', 413 | keys: ['(arrows)'], 414 | }, 415 | { 416 | description: 'Faster pan', 417 | keys: ['Shift', '(arrows)'], 418 | }, 419 | { 420 | description: 'Go from Spec view to UX flow view', 421 | keys: ['Esc'], 422 | }, 423 | { 424 | description: 'Remove focus from artboard in UX flow view', 425 | keys: ['Esc'], 426 | }, 427 | ], 428 | }, 429 | { 430 | name: 'Keys for Vector Editing', 431 | shortcuts: [ 432 | { 433 | description: 'Start editing selected vector object', 434 | keys: ['Enter'], 435 | }, 436 | { 437 | description: 'Stop editing selected vector object', 438 | keys: ['Esc'], 439 | }, 440 | ], 441 | }, 442 | { 443 | name: 'Keys for Prototyping', 444 | shortcuts: [ 445 | { 446 | description: 'See all connections in prototype mode', 447 | keys: ['Ctrl', 'A'], 448 | }, 449 | { 450 | description: 'Preview', 451 | keys: ['Ctrl', 'Enter'], 452 | }, 453 | { 454 | description: 'Share prototype online', 455 | keys: ['Ctrl', 'Shift', 'E'], 456 | }, 457 | { 458 | description: 'Navigate artboards in preview or shared prototype', 459 | keys: ['Left/Right'], 460 | }, 461 | ], 462 | }, 463 | ], 464 | } 465 | -------------------------------------------------------------------------------- /src/content.js: -------------------------------------------------------------------------------- 1 | var paths_open = false 2 | $(document).ready(() => { 3 | $.get(chrome.runtime.getURL('/content.html'), (data) => { 4 | $(data).appendTo('body') 5 | }) 6 | function open_paths() { 7 | paths_open = true 8 | set_shortcuts() 9 | set_fact() 10 | $('#paths-extension').removeClass('paths-hidden') 11 | $('#paths-extension #paths-search-box').focus() 12 | $('#paths-extension #paths-search-box').attr('autocomplete', 'off') 13 | } 14 | function close_paths() { 15 | paths_open = false 16 | $('#paths-extension').addClass('paths-hidden') 17 | clear_shortcuts() 18 | } 19 | function clear_shortcuts() { 20 | $('#paths-extension #paths-list').empty() 21 | } 22 | function set_shortcuts() { 23 | chrome.runtime.sendMessage({request: 'get-shortcuts'}, (response) => { 24 | for (let i = 0; i < response.shortcuts.length; i++) { 25 | let $paths_shortcut_section = $('
', { 26 | id: 'paths-shortcuts-section', 27 | }) 28 | let $paths_shortcuts_section_title = $('
', { 29 | id: 'paths-shortcuts-section-title', 30 | }) 31 | let $paths_shortcuts_section_title_container = $('
', { 32 | id: 'paths-shortcuts-section-title-container', 33 | }) 34 | let $paths_shortcuts_section_title_icon = $('', { 35 | id: 'paths-shortcuts-section-title-icon', 36 | src: response.shortcuts[i].icon, 37 | }) 38 | let $paths_shortcuts_section_title_text = $('
', { 39 | id: 'paths-shortcuts-section-title-text', 40 | text: response.shortcuts[i].title, 41 | }) 42 | $paths_shortcuts_section_title_container.append($paths_shortcuts_section_title_icon) 43 | $paths_shortcuts_section_title_container.append($paths_shortcuts_section_title_text) 44 | $paths_shortcuts_section_title.append($paths_shortcuts_section_title_container) 45 | $paths_shortcut_section.append($paths_shortcuts_section_title) 46 | 47 | for (let j = 0; j < response.shortcuts[i].sections.length; j++) { 48 | let $paths_shortcuts_section_results_group = $('
', { 49 | id: 'paths-shortcuts-section-results-group', 50 | }) 51 | let $paths_shortcuts_section_results_group_heading = $('
', { 52 | id: 'paths-shortcuts-section-results-group-heading', 53 | }) 54 | let $paths_shortcuts_section_results_group_heading_container = $('
', { 55 | id: 'paths-shortcuts-section-results-group-heading-container', 56 | }) 57 | let $paths_shortcuts_section_results_group_heading_text = $('', { 58 | id: 'paths-shortcuts-section-results-group-heading-text', 59 | text: response.shortcuts[i].sections[j].name, 60 | }) 61 | let $paths_shortcuts_section_results_group_columns_container = $('
', { 62 | id: 'paths-shortcuts-section-results-group-columns-container', 63 | }) 64 | let $paths_shortcuts_section_results_group_column_1 = $('
', { 65 | 'id': 'paths-shortcuts-section-results-group-column-1', 66 | 'data-column': 1, 67 | }) 68 | let $paths_shortcuts_section_results_group_column_2 = $('
', { 69 | 'id': 'paths-shortcuts-section-results-group-column-2', 70 | 'data-column': 2, 71 | }) 72 | let $paths_shortcuts_section_results_group_column_3 = $('
', { 73 | 'id': 'paths-shortcuts-section-results-group-column-3', 74 | 'data-column': 3, 75 | }) 76 | for (let k = 0; k < response.shortcuts[i].sections[j].shortcuts.length; k++) { 77 | let $paths_shortcut = $('
', { 78 | id: 'paths-shortcut', 79 | }) 80 | let $paths_result_left = $('
', { 81 | id: 'paths-result-left', 82 | }) 83 | let $paths_action = $('
', { 84 | id: 'paths-action', 85 | }) 86 | let $paths_action_text = $('', { 87 | 'id': 'paths-action-text', 88 | 'text': response.shortcuts[i].sections[j].shortcuts[k].description, 89 | 'data-action': response.shortcuts[i].sections[j].shortcuts[k].description, 90 | }) 91 | let $paths_result_right = $('
', { 92 | id: 'paths-result-right', 93 | }) 94 | let $paths_combination = $('
', { 95 | id: 'paths-combination', 96 | }) 97 | 98 | for (let l = 0; l < response.shortcuts[i].sections[j].shortcuts[k].keys.length; l++) { 99 | let $paths_combination_key = $('
', { 100 | id: 'paths-combination-key', 101 | }) 102 | let $paths_combination_key_text 103 | if (response.shortcuts[i].sections[j].shortcuts[k].keys[l].length === 1) { 104 | $paths_combination_key_text = $('', { 105 | text: response.shortcuts[i].sections[j].shortcuts[k].keys[l].toUpperCase(), 106 | }) 107 | } else { 108 | $paths_combination_key_text = $('', { 109 | 'text': response.shortcuts[i].sections[j].shortcuts[k].keys[l].toUpperCase(), 110 | 'data-action': response.shortcuts[i].sections[j].shortcuts[k].keys[l].toUpperCase(), 111 | }) 112 | } 113 | 114 | $paths_combination_key.append($paths_combination_key_text) 115 | $paths_combination.append($paths_combination_key) 116 | } 117 | $paths_result_right.append($paths_combination) 118 | $paths_result_right.append($paths_action) 119 | $paths_action.append($paths_action_text) 120 | $paths_result_left.append($paths_action) 121 | 122 | $paths_shortcut.append($paths_result_left) 123 | $paths_shortcut.append($paths_result_right) 124 | 125 | if (k % 3 == 0) { 126 | $paths_shortcuts_section_results_group_column_1.append($paths_shortcut) 127 | } else if (k % 3 == 1) { 128 | $paths_shortcuts_section_results_group_column_2.append($paths_shortcut) 129 | } else if (k % 3 == 2) { 130 | $paths_shortcuts_section_results_group_column_3.append($paths_shortcut) 131 | } 132 | } 133 | $paths_shortcuts_section_results_group_columns_container.append($paths_shortcuts_section_results_group_column_1) 134 | $paths_shortcuts_section_results_group_columns_container.append($paths_shortcuts_section_results_group_column_2) 135 | $paths_shortcuts_section_results_group_columns_container.append($paths_shortcuts_section_results_group_column_3) 136 | $paths_shortcuts_section_results_group_heading_container.append($paths_shortcuts_section_results_group_heading_text) 137 | $paths_shortcuts_section_results_group_heading.append($paths_shortcuts_section_results_group_heading_container) 138 | $paths_shortcuts_section_results_group.append($paths_shortcuts_section_results_group_heading) 139 | $paths_shortcuts_section_results_group.append($paths_shortcuts_section_results_group_columns_container) 140 | 141 | $paths_shortcut_section.append($paths_shortcuts_section_results_group) 142 | $('#paths-list').append($paths_shortcut_section) 143 | } 144 | } 145 | }) 146 | } 147 | function search_shortcuts() { 148 | let search_box_value = $('#paths-search-box').val().toLowerCase() 149 | $('#paths-list').scrollTop(0) 150 | if (search_box_value == '' || search_box_value.length == 0) { 151 | $('div[id="paths-shortcut"]').each(function () { 152 | $(this).show() 153 | }) 154 | $('div[id="paths-shortcuts-section"]').each(function () { 155 | $(this).show() 156 | }) 157 | $('div[id="paths-shortcuts-section-results-group"]').each(function () { 158 | $(this).show() 159 | }) 160 | $('div[id="paths-shortcuts-section-results-group-column-1"]').each(function () { 161 | $(this).show() 162 | }) 163 | $('div[id="paths-shortcuts-section-results-group-column-2"]').each(function () { 164 | $(this).show() 165 | }) 166 | $('div[id="paths-shortcuts-section-results-group-column-3"]').each(function () { 167 | $(this).show() 168 | }) 169 | } else if (search_box_value.length > 0) { 170 | let search_box_value = $('#paths-search-box').val().toLowerCase() 171 | $('div[id="paths-shortcuts-section-title-text"]').each(function () { 172 | let text = $(this).text().toLowerCase() 173 | if (text.includes(search_box_value)) { 174 | $(this).parent().parent().parent().show() 175 | } else { 176 | $(this).parent().parent().parent().hide() 177 | } 178 | }) 179 | } else { 180 | $('div[id="paths-shortcut"]').each(function () { 181 | let shortcut_action_text_lowercase = $(this).find('#paths-action-text').attr('data-action').toLowerCase() 182 | if (shortcut_action_text_lowercase.includes(search_box_value)) { 183 | $(this).show() 184 | } else { 185 | $(this).hide() 186 | } 187 | }) 188 | $('div[id="paths-shortcuts-section"]').each(function () { 189 | let shortcuts_visible = false 190 | $(this) 191 | .find('div[id="paths-shortcut"]') 192 | .each(function () { 193 | if ($(this).css('display') != 'none') { 194 | shortcuts_visible = true 195 | } 196 | }) 197 | if (shortcuts_visible) { 198 | $(this).show() 199 | } else { 200 | $(this).hide() 201 | } 202 | }) 203 | $('div[id="paths-shortcuts-section-results-group"]').each(function () { 204 | let shortcuts_visible = false 205 | $(this) 206 | .find('div[id="paths-shortcut"]') 207 | .each(function () { 208 | if ($(this).css('display') != 'none') { 209 | shortcuts_visible = true 210 | } 211 | }) 212 | if (shortcuts_visible) { 213 | $(this).show() 214 | } else { 215 | $(this).hide() 216 | } 217 | }) 218 | $('div[id="paths-shortcuts-section-results-group-column-3"]').each(function () { 219 | let shortcuts_visible = false 220 | $(this) 221 | .find('div[id="paths-shortcut"]') 222 | .each(function () { 223 | if ($(this).css('display') != 'none') { 224 | shortcuts_visible = true 225 | } 226 | }) 227 | if (shortcuts_visible) { 228 | $(this).show() 229 | } else { 230 | $(this).hide() 231 | } 232 | }) 233 | $('div[id="paths-shortcuts-section-results-group-column-2"]').each(function () { 234 | let shortcuts_visible = false 235 | $(this) 236 | .find('div[id="paths-shortcut"]') 237 | .each(function () { 238 | if ($(this).css('display') != 'none') { 239 | shortcuts_visible = true 240 | } 241 | }) 242 | if (shortcuts_visible) { 243 | $(this).show() 244 | } else { 245 | $(this).hide() 246 | } 247 | }) 248 | $('div[id="paths-shortcuts-section-results-group-column-1"]').each(function () { 249 | let shortcuts_visible = false 250 | $(this) 251 | .find('div[id="paths-shortcut"]') 252 | .each(function () { 253 | if ($(this).css('display') != 'none') { 254 | shortcuts_visible = true 255 | } 256 | }) 257 | if (shortcuts_visible) { 258 | $(this).show() 259 | } else { 260 | $(this).hide() 261 | } 262 | }) 263 | } 264 | } 265 | function set_fact() { 266 | chrome.runtime.sendMessage({request: 'get-quote'}, (response) => { 267 | $('#paths-quotes-text').text(response.quote) 268 | }) 269 | } 270 | $(document).on('input', '#paths-search-box', search_shortcuts) 271 | chrome.runtime.onMessage.addListener((request, sender, sendResponse) => { 272 | switch (request.message) { 273 | case 'open-paths': 274 | paths_open ? close_paths() : open_paths() 275 | sendResponse({return: 'paths opened'}) 276 | return true 277 | break 278 | case 'close-paths': 279 | closepaths() 280 | sendResponse({return: 'paths closed'}) 281 | return true 282 | break 283 | } 284 | return true 285 | }) 286 | $(document).on('click', '#paths-overlay', function (e) { 287 | if (e.target.id == 'paths-overlay') { 288 | close_paths() 289 | } 290 | }) 291 | $(document).keyup(function (e) { 292 | if (e.keyCode == 27) { 293 | close_paths() 294 | } 295 | }) 296 | }) 297 | -------------------------------------------------------------------------------- /src/content.css: -------------------------------------------------------------------------------- 1 | @media (prefers-color-scheme: light) { 2 | :root { 3 | --color-background: var(--color-light-background); 4 | --color-border: var(--color-light-border); 5 | } 6 | } 7 | @media (prefers-color-scheme: dark) { 8 | :root { 9 | --color-background: var(--color-dark-background); 10 | --color-border: var(--color-dark-border); 11 | } 12 | } 13 | :root { 14 | --overlay-color: rgba(0, 0, 0, 0.75); 15 | --transparent: rgba(0, 0, 0, 0); 16 | } 17 | 18 | @font-face { 19 | font-family: 'Segoe UI Light'; 20 | font-style: normal; 21 | font-weight: 300; 22 | src: url('chrome-extension://__MSG_@@extension_id__/fonts/Segoe-UI.ttf'); 23 | } 24 | @font-face { 25 | font-family: 'Segoe UI Regular'; 26 | font-style: normal; 27 | font-weight: 400; 28 | src: url('chrome-extension://__MSG_@@extension_id__/fonts/Segoe-UI.ttf'); 29 | } 30 | @font-face { 31 | font-family: 'Segoe UI Medium'; 32 | font-style: normal; 33 | font-weight: 500; 34 | src: url('chrome-extension://__MSG_@@extension_id__/fonts/Segoe-UI.ttf'); 35 | } 36 | @font-face { 37 | font-family: 'Segoe UI Bold'; 38 | font-style: normal; 39 | font-weight: 600; 40 | src: url('chrome-extension://__MSG_@@extension_id__/fonts/Segoe-UI.ttf'); 41 | } 42 | 43 | .paths-extension * { 44 | display: block; 45 | width: unset; 46 | box-shadow: unset; 47 | padding: unset; 48 | margin: unset; 49 | font-family: unset; 50 | background-color: unset; 51 | border-radius: unset; 52 | } 53 | .paths-extension { 54 | position: fixed; 55 | top: 0; 56 | left: 0; 57 | width: 100%; 58 | height: 100%; 59 | z-index: 9999; 60 | } 61 | .paths-hidden { 62 | display: none; 63 | } 64 | .paths-extension ::-webkit-scrollbar { 65 | width: 8px; 66 | } 67 | .paths-extension ::-webkit-scrollbar-track { 68 | background-color: var(--transparent); 69 | } 70 | .paths-extension ::-webkit-scrollbar-thumb { 71 | background-color: var(--color-border); 72 | border-radius: '8px'; 73 | } 74 | .paths-extension ::-webkit-scrollbar-thumb:hover { 75 | background-color: var(--color-hover); 76 | border-radius: '4px'; 77 | } 78 | .paths-extension ::-webkit-input-placeholder { 79 | font-family: 'Segoe UI Medium'; 80 | font-size: 12px; 81 | line-height: normal; 82 | color: rgba(255, 255, 255, 0.786); 83 | } 84 | .paths-extension input { 85 | width: 100%; 86 | height: 100%; 87 | border: 0px; 88 | outline: 0px; 89 | color: rgba(255, 255, 255, 0.786); 90 | } 91 | .paths-extension input:focus { 92 | outline: none; 93 | border: none; 94 | } 95 | .paths-extension #paths-overlay { 96 | position: absolute; 97 | width: 100%; 98 | height: 100%; 99 | top: 0; 100 | left: 0; 101 | background: var(--overlay-color); 102 | z-index: var(--z-index-back); 103 | } 104 | .paths-extension #paths-container { 105 | box-sizing: border-box; 106 | display: flex; 107 | flex-direction: column; 108 | align-items: flex-start; 109 | padding: 0px; 110 | position: absolute; 111 | width: 1200px; 112 | height: 724px; 113 | left: calc(50% - 1200px / 2); 114 | top: calc(50% - 724px / 2); 115 | background: linear-gradient(0deg, rgba(32, 32, 32, 1), rgba(32, 32, 32, 1)), rgba(32, 32, 32, 1); 116 | background-blend-mode: normal, color, luminosity; 117 | border: 1px solid rgba(117, 117, 117, 0.4); 118 | box-shadow: 0px 32px 64px rgba(0, 0, 0, 0.37), 0px 2px 21px rgba(0, 0, 0, 0.37); 119 | border-radius: 8px; 120 | } 121 | .paths-extension #paths { 122 | display: flex; 123 | flex-direction: column; 124 | align-items: center; 125 | margin: 32px; 126 | gap: 24px; 127 | width: auto; 128 | height: -webkit-fill-available; 129 | flex: none; 130 | order: 0; 131 | align-self: stretch; 132 | flex-grow: 0; 133 | overflow-y: hidden; 134 | overflow-x: hidden; 135 | } 136 | .paths-extension #paths-search { 137 | box-sizing: border-box; 138 | display: flex; 139 | flex-direction: column; 140 | justify-content: center; 141 | align-items: flex-start; 142 | padding: 8px; 143 | width: auto; 144 | background: rgba(255, 255, 255, 0.0605); 145 | border: 1px solid rgba(255, 255, 255, 0.093); 146 | border-radius: 8px; 147 | flex: none; 148 | order: 0; 149 | align-self: stretch; 150 | flex-grow: 0; 151 | } 152 | .paths-extension #paths-quotes { 153 | box-sizing: border-box; 154 | display: flex; 155 | flex-direction: column; 156 | justify-content: center; 157 | align-items: flex-start; 158 | padding: 8px; 159 | width: auto; 160 | height: auto; 161 | background: rgba(43, 114, 255, 0.25); 162 | border: 1px solid rgba(255, 255, 255, 0.093); 163 | border-radius: 8px; 164 | flex: none; 165 | order: 1; 166 | align-self: stretch; 167 | flex-grow: 0; 168 | } 169 | .paths-extension #paths-quotes-container { 170 | display: flex; 171 | flex-direction: row; 172 | align-items: center; 173 | padding: 0px; 174 | gap: 10px; 175 | width: 832px; 176 | height: 32px; 177 | flex: none; 178 | order: 0; 179 | align-self: stretch; 180 | flex-grow: 0; 181 | } 182 | .paths-extension #paths-quotes-emoji { 183 | min-width: 32px; 184 | min-height: 32px; 185 | max-width: 32px; 186 | max-height: 32px; 187 | background: url('chrome-extension://__MSG_@@extension_id__/assets/crystal-ball.png'); 188 | background-size: 32px; 189 | flex: none; 190 | order: 0; 191 | flex-grow: 0; 192 | } 193 | .paths-extension #paths-quotes-text { 194 | width: fit-content; 195 | height: auto; 196 | font-family: 'Segoe UI Regular' !important; 197 | font-style: normal; 198 | font-size: 12px; 199 | line-height: 12px; 200 | color: rgba(255, 255, 255, 0.786); 201 | flex: none; 202 | order: 1; 203 | flex-grow: 1; 204 | } 205 | .paths-extension #paths-list { 206 | display: flex; 207 | flex-direction: column; 208 | align-items: center; 209 | gap: 24px; 210 | width: auto; 211 | height: 516px; 212 | flex: none; 213 | order: 2; 214 | align-self: stretch; 215 | flex-grow: 0; 216 | padding-right: 24px; 217 | overflow-y: overlay; 218 | overflow-x: hidden; 219 | } 220 | .paths-extension #paths-search-box { 221 | display: flex; 222 | flex-direction: row; 223 | align-items: center; 224 | padding: 0px; 225 | margin: 0px; 226 | background-color: var(--transparent); 227 | border-color: var(--transparent); 228 | width: 100%; 229 | height: auto; 230 | flex: none; 231 | order: 0; 232 | flex-grow: 0; 233 | font-family: 'Segoe UI Medium' !important; 234 | font-size: 12px !important; 235 | line-height: normal !important; 236 | color: rgba(255, 255, 255, 0.786) !important; 237 | } 238 | .paths-extension #paths-shortcuts-section { 239 | display: flex; 240 | flex-direction: column; 241 | align-items: flex-start; 242 | padding: 0px; 243 | gap: 12px; 244 | width: auto; 245 | flex: none; 246 | order: 4; 247 | align-self: stretch; 248 | flex-grow: 0; 249 | } 250 | .paths-extension #paths-shortcuts-section-title { 251 | display: flex; 252 | flex-direction: column; 253 | align-items: flex-start; 254 | padding: 0px; 255 | flex: none; 256 | order: 0; 257 | align-self: stretch; 258 | flex-grow: 0; 259 | } 260 | .paths-extension #paths-shortcuts-section-title-container { 261 | display: flex; 262 | flex-direction: row; 263 | align-items: center; 264 | padding: 0px; 265 | gap: 16px; 266 | width: auto; 267 | height: 16px; 268 | flex: none; 269 | order: 0; 270 | flex-grow: 0; 271 | } 272 | .paths-extension #paths-shortcuts-section-title-icon { 273 | display: flex; 274 | flex-direction: row; 275 | align-items: flex-start; 276 | padding: 0px; 277 | gap: 16px; 278 | width: 16px; 279 | height: 16px; 280 | flex: none; 281 | order: 0; 282 | flex-grow: 0; 283 | } 284 | .paths-extension #paths-shortcuts-section-title-text { 285 | font-family: 'Segoe UI Bold'; 286 | line-height: 14px; 287 | font-size: 14px; 288 | color: #ffffff; 289 | flex: none; 290 | order: 1; 291 | flex-grow: 0; 292 | } 293 | .paths-extension #paths-shortcuts-section-results-group { 294 | display: flex; 295 | flex-direction: column; 296 | align-items: flex-start; 297 | padding: 0px; 298 | gap: 16px; 299 | width: -webkit-fill-available; 300 | flex: none; 301 | order: 1; 302 | flex-grow: 0; 303 | } 304 | .paths-extension #paths-shortcuts-section-results-group-heading { 305 | box-sizing: border-box; 306 | display: flex; 307 | flex-direction: column; 308 | align-items: flex-start; 309 | padding: 16px 0px 8px 0px; 310 | gap: 8px; 311 | width: auto; 312 | border-bottom: 1px solid rgba(255, 255, 255, 0.0837); 313 | flex: none; 314 | order: 0; 315 | align-self: stretch; 316 | flex-grow: 0; 317 | } 318 | .paths-extension #paths-shortcuts-section-results-group-heading-container { 319 | display: flex; 320 | flex-direction: row; 321 | align-items: center; 322 | padding: 0px; 323 | width: 100%; 324 | flex: none; 325 | order: 0; 326 | flex-grow: 0; 327 | } 328 | .paths-extension #paths-shortcuts-section-results-group-heading-container span { 329 | width: auto; 330 | height: auto; 331 | font-family: 'Segoe UI Regular'; 332 | font-size: 14px; 333 | line-height: 17px; 334 | color: rgba(255, 255, 255, 0.786); 335 | flex: none; 336 | order: 0; 337 | flex-grow: 0; 338 | } 339 | .paths-extension #paths-shortcuts-section-results-group-columns-container { 340 | display: flex; 341 | flex-direction: row; 342 | align-items: flex-start; 343 | justify-content: flex-start; 344 | padding: 0px; 345 | gap: 32px; 346 | width: 100%; 347 | flex: none; 348 | order: 1; 349 | flex-grow: 0; 350 | } 351 | .paths-extension #paths-shortcuts-section-results-group-column-1 { 352 | display: flex; 353 | flex-direction: column; 354 | align-items: flex-start; 355 | padding: 0px; 356 | gap: 16px; 357 | max-width: 340px; 358 | flex: none; 359 | order: 0; 360 | flex-grow: 1; 361 | } 362 | .paths-extension #paths-shortcuts-section-results-group-column-2 { 363 | display: flex; 364 | flex-direction: column; 365 | align-items: flex-start; 366 | padding: 0px; 367 | gap: 16px; 368 | max-width: 340px; 369 | flex: none; 370 | order: 1; 371 | flex-grow: 1; 372 | } 373 | .paths-extension #paths-shortcuts-section-results-group-column-3 { 374 | display: flex; 375 | flex-direction: column; 376 | align-items: flex-start; 377 | padding: 0px; 378 | gap: 16px; 379 | max-width: 340px; 380 | flex: none; 381 | order: 2; 382 | flex-grow: 1; 383 | } 384 | .paths-extension #paths-shortcut { 385 | display: flex; 386 | flex-direction: row; 387 | align-items: center; 388 | padding: 0px; 389 | width: 100%; 390 | height: 32px; 391 | flex: none; 392 | order: 0; 393 | align-self: stretch; 394 | flex-grow: 0; 395 | } 396 | .paths-extension #paths-result-left { 397 | display: flex; 398 | flex-direction: column; 399 | justify-content: center; 400 | align-items: flex-start; 401 | padding: 0px; 402 | flex: none; 403 | order: 0; 404 | flex-grow: 1; 405 | } 406 | .paths-extension #paths-action { 407 | flex: none; 408 | order: 0; 409 | flex-grow: 0; 410 | } 411 | .paths-extension #paths-action span { 412 | font-family: 'Segoe UI Light'; 413 | font-size: 12px; 414 | line-height: normal; 415 | color: rgba(255, 255, 255, 0.786); 416 | overflow: hidden; 417 | text-overflow: ellipsis; 418 | white-space: nowrap; 419 | max-width: 180px; 420 | } 421 | .paths-extension #paths-result-right { 422 | display: flex; 423 | flex-direction: row; 424 | justify-content: flex-end; 425 | align-items: flex-start; 426 | padding: 0px; 427 | gap: 4px; 428 | flex: none; 429 | order: 1; 430 | flex-grow: 0; 431 | } 432 | .paths-extension #paths-combination { 433 | display: flex; 434 | flex-direction: row; 435 | align-items: center; 436 | padding: 0px; 437 | gap: 2px; 438 | width: auto; 439 | height: 22px; 440 | flex: none; 441 | order: 0; 442 | flex-grow: 0; 443 | } 444 | .paths-extension #paths-combination-key { 445 | display: flex; 446 | flex-direction: column; 447 | justify-content: center; 448 | align-items: center; 449 | padding: 4px 6px; 450 | min-width: 24px; 451 | min-height: 24px; 452 | background: rgba(255, 255, 255, 0.0605); 453 | border-radius: 2px; 454 | flex: none; 455 | order: 0; 456 | flex-grow: 0; 457 | } 458 | .paths-extension #paths-combination-key span { 459 | width: auto; 460 | height: 14px; 461 | font-family: 'Segoe UI Light'; 462 | font-size: 12px; 463 | line-height: 12px; 464 | text-align: center; 465 | color: rgba(255, 255, 255, 0.786); 466 | flex: none; 467 | order: 0; 468 | flex-grow: 0; 469 | } 470 | -------------------------------------------------------------------------------- /src/data/sources/figma.js: -------------------------------------------------------------------------------- 1 | export const figma = { 2 | title: 'Figma', 3 | icon: 'https://static.figma.com/app/icon/1/favicon.ico', 4 | sections: [ 5 | { 6 | name: 'Essential', 7 | shortcuts: [ 8 | { 9 | description: 'Show/Hide UI', 10 | keys: ['Ctrl', '\\'], 11 | }, 12 | { 13 | description: 'Pick Color', 14 | keys: ['Ctrl', 'C'], 15 | mac_keys: ['Ctrl', 'C'], 16 | }, 17 | { 18 | description: 'Search Menu', 19 | keys: ['Ctrl', '/'], 20 | }, 21 | ], 22 | }, 23 | { 24 | name: 'Tools', 25 | shortcuts: [ 26 | { 27 | description: 'Move Tool', 28 | keys: ['V'], 29 | }, 30 | { 31 | description: 'Frame Tool', 32 | keys: ['F'], 33 | }, 34 | { 35 | description: 'Pen Tool', 36 | keys: ['P'], 37 | }, 38 | { 39 | description: 'Pencil Tool', 40 | keys: ['Shift', 'P'], 41 | }, 42 | { 43 | description: 'Text Tool', 44 | keys: ['T'], 45 | }, 46 | { 47 | description: 'Rectangle Tool', 48 | keys: ['R'], 49 | }, 50 | { 51 | description: 'Ellipse Tool', 52 | keys: ['O'], 53 | }, 54 | { 55 | description: 'Line Tool', 56 | keys: ['L'], 57 | }, 58 | { 59 | description: 'Arrow Tool', 60 | keys: ['Shift', 'L'], 61 | }, 62 | { 63 | description: 'Add/Show Comments', 64 | keys: ['C'], 65 | }, 66 | { 67 | description: 'Pick Color', 68 | keys: ['Ctrl', 'C'], 69 | }, 70 | { 71 | description: 'Slice Tool', 72 | keys: ['S'], 73 | }, 74 | ], 75 | }, 76 | { 77 | name: 'View', 78 | shortcuts: [ 79 | { 80 | description: 'Toggle Rulers', 81 | keys: ['Shift', 'R'], 82 | }, 83 | { 84 | description: 'Show Outlines', 85 | keys: ['Ctrl', 'Y'], 86 | }, 87 | { 88 | description: 'Pixel Preview', 89 | keys: ['Ctrl', 'P'], 90 | }, 91 | { 92 | description: 'Layout Grids', 93 | keys: ['Ctrl', 'G'], 94 | }, 95 | { 96 | description: 'Pixel Grid', 97 | keys: ['Ctrl', "'"], 98 | }, 99 | { 100 | description: 'Show/Hide UI', 101 | keys: ['Ctrl', '\\'], 102 | }, 103 | { 104 | description: 'Show Multiplayer Cursors', 105 | keys: ['Ctrl', 'Alt', '\\'], 106 | }, 107 | { 108 | description: 'Show Layers', 109 | keys: ['Alt', '1'], 110 | }, 111 | { 112 | description: 'Show Components', 113 | keys: ['Alt', '2'], 114 | }, 115 | { 116 | description: 'Show Team Library', 117 | keys: ['Alt', '3'], 118 | }, 119 | ], 120 | }, 121 | { 122 | name: 'Zoom', 123 | shortcuts: [ 124 | { 125 | description: 'Pan', 126 | keys: ['Space', '(drag)'], 127 | }, 128 | { 129 | description: 'Zoom In', 130 | keys: ['+'], 131 | }, 132 | { 133 | description: 'Zoom Out', 134 | keys: ['-'], 135 | }, 136 | { 137 | description: 'Zoom to 100%', 138 | keys: ['Shift', '0'], 139 | }, 140 | { 141 | description: 'Zoom to Fit', 142 | keys: ['Shift', '1'], 143 | }, 144 | { 145 | description: 'Zoom to Selection', 146 | keys: ['Shift', '2'], 147 | }, 148 | { 149 | description: 'Zoom to Previous Frame', 150 | keys: ['Shift', 'N'], 151 | }, 152 | { 153 | description: 'Zoom to Next Frame', 154 | keys: ['N'], 155 | }, 156 | { 157 | description: 'Previous Page', 158 | keys: ['PgUp'], 159 | }, 160 | { 161 | description: 'Next Page', 162 | keys: ['PgDown'], 163 | }, 164 | { 165 | description: 'Find Previous Frame', 166 | keys: ['Home'], 167 | }, 168 | { 169 | description: 'Find Next Frame', 170 | keys: ['End'], 171 | }, 172 | ], 173 | }, 174 | { 175 | name: 'Text', 176 | shortcuts: [ 177 | { 178 | description: 'Bold', 179 | keys: ['Ctrl', 'B'], 180 | }, 181 | { 182 | description: 'Italic', 183 | keys: ['Ctrl', 'I'], 184 | }, 185 | { 186 | description: 'Underline', 187 | keys: ['Ctrl', 'U'], 188 | }, 189 | { 190 | description: 'Paste and Match Style', 191 | keys: ['Ctrl', 'Shift', 'V'], 192 | }, 193 | { 194 | description: 'Text Alight Left', 195 | keys: ['Ctrl', 'Alt', 'L'], 196 | }, 197 | { 198 | description: 'Text Align Center', 199 | keys: ['Ctrl', 'Alt', 'T'], 200 | }, 201 | { 202 | description: 'Text Align Right', 203 | keys: ['Ctrl', 'Alt', 'R'], 204 | }, 205 | { 206 | description: 'Text Align Justified', 207 | keys: ['Ctrl', 'Alt', 'J'], 208 | }, 209 | { 210 | description: 'Adjust Font Size', 211 | keys: ['Ctrl', 'Shift', ''], 212 | }, 213 | { 214 | description: 'Adjust Letter Spacing', 215 | keys: ['Alt', ',/.'], 216 | }, 217 | { 218 | description: 'Adjust Line Height', 219 | keys: ['Alt', 'Shift', ''], 220 | }, 221 | ], 222 | }, 223 | { 224 | name: 'Shape', 225 | shortcuts: [ 226 | { 227 | description: 'Pen', 228 | keys: ['P'], 229 | }, 230 | { 231 | description: 'Pencil', 232 | keys: ['Shift', 'P'], 233 | }, 234 | { 235 | description: 'Paint Bucket (while editing shape)', 236 | keys: ['B'], 237 | }, 238 | { 239 | description: 'Bend Tool (while editing shape)', 240 | keys: ['Ctrl'], 241 | }, 242 | { 243 | description: 'Remove Fill', 244 | keys: ['Alt', '/'], 245 | }, 246 | { 247 | description: 'Remove Stroke', 248 | keys: ['/'], 249 | }, 250 | { 251 | description: 'Swap Fill and Stroke', 252 | keys: ['Shift', 'X'], 253 | }, 254 | { 255 | description: 'Outline Stroke', 256 | keys: ['Ctrl', 'Shift', 'O'], 257 | }, 258 | { 259 | description: 'Flatten Selection', 260 | keys: ['Ctrl', 'E'], 261 | }, 262 | { 263 | description: 'Join Selection (after selecting points)', 264 | keys: ['Ctrl', 'J'], 265 | }, 266 | { 267 | description: 'Smooth Join Selection (after selecting points)', 268 | keys: ['Ctrl', 'Shift', 'J'], 269 | }, 270 | { 271 | description: 'Delete and Heal Selection (after selecting points)', 272 | keys: ['Shift', 'Backspace'], 273 | }, 274 | ], 275 | }, 276 | { 277 | name: 'Selection', 278 | shortcuts: [ 279 | { 280 | description: 'Select All', 281 | keys: ['Ctrl', 'A'], 282 | }, 283 | { 284 | description: 'Select Inverse', 285 | keys: ['Ctrl', 'Shift', 'A'], 286 | }, 287 | { 288 | description: 'Select None', 289 | keys: ['Esc'], 290 | }, 291 | { 292 | description: 'Deep Select', 293 | keys: ['Ctrl', '(click)'], 294 | }, 295 | { 296 | description: 'Select Layer Menu', 297 | keys: ['Ctrl', '(right click)'], 298 | }, 299 | { 300 | description: 'Select Child', 301 | keys: ['Enter'], 302 | }, 303 | { 304 | description: 'Select Parents', 305 | keys: ['Shift', 'Enter'], 306 | }, 307 | { 308 | description: 'Select Next Sibling', 309 | keys: ['Tab'], 310 | }, 311 | { 312 | description: 'Select Previous Sibling', 313 | keys: ['Shift', 'Tab'], 314 | }, 315 | { 316 | description: 'Group Selection', 317 | keys: ['Ctrl', 'G'], 318 | }, 319 | { 320 | description: 'Ungroup Selection', 321 | keys: ['Ctrl', 'Shift', 'G'], 322 | }, 323 | { 324 | description: 'Frame Selection', 325 | keys: ['Ctrl', 'Alt', 'G'], 326 | }, 327 | { 328 | description: 'Show/Hide Selection', 329 | keys: ['Ctrl', 'Shift', 'H'], 330 | }, 331 | { 332 | description: 'Lock/Unlock Selection', 333 | keys: ['Ctrl', 'Shift', 'L'], 334 | }, 335 | ], 336 | }, 337 | { 338 | name: 'Cursor', 339 | shortcuts: [ 340 | { 341 | description: 'Measure to Selection (while pointing)', 342 | keys: ['Alt'], 343 | }, 344 | { 345 | description: 'Duplicate Selection (while moving)', 346 | keys: ['Alt'], 347 | }, 348 | { 349 | description: 'Deep Select (while clicking)', 350 | keys: ['Ctrl', '(click)'], 351 | }, 352 | { 353 | description: 'Select Layer Menu (while clicking)', 354 | keys: ['Ctrl', '(right click)'], 355 | }, 356 | { 357 | description: 'Deep Select Within Rectangle (while dragging to select)', 358 | keys: ['Ctrl', '(drag)'], 359 | }, 360 | { 361 | description: 'Resize from Center (while resizing)', 362 | keys: ['Alt'], 363 | }, 364 | { 365 | description: 'Resize Proportionally (while resizing)', 366 | keys: ['Shift'], 367 | }, 368 | { 369 | description: 'Move While Resizing', 370 | keys: ['Space'], 371 | }, 372 | { 373 | description: 'Ignore Constraints (Frames Only)', 374 | keys: ['Ctrl'], 375 | }, 376 | ], 377 | }, 378 | { 379 | name: 'Edit', 380 | shortcuts: [ 381 | { 382 | description: 'Copy', 383 | keys: ['Ctrl', 'C'], 384 | }, 385 | { 386 | description: 'Cut', 387 | keys: ['Ctrl', 'X'], 388 | }, 389 | { 390 | description: 'Paste', 391 | keys: ['Ctrl', 'V'], 392 | }, 393 | { 394 | description: 'Paste Over Selection', 395 | keys: ['Ctrl', 'Shift', 'V'], 396 | }, 397 | { 398 | description: 'Duplicate Selection in Place', 399 | keys: ['Ctrl', 'D'], 400 | }, 401 | { 402 | description: 'Rename Selection', 403 | keys: ['Ctrl', 'R'], 404 | }, 405 | { 406 | description: 'Export', 407 | keys: ['Ctrl', 'Shift', 'E'], 408 | }, 409 | { 410 | description: 'Copy Properties', 411 | keys: ['Ctrl', 'Alt', 'C'], 412 | }, 413 | { 414 | description: 'Paste Properties', 415 | keys: ['Ctrl', 'Alt', 'V'], 416 | }, 417 | ], 418 | }, 419 | { 420 | name: 'Transform', 421 | shortcuts: [ 422 | { 423 | description: 'Flip Horizontal', 424 | keys: ['Shift', 'H'], 425 | }, 426 | { 427 | description: 'Flip Vertical', 428 | keys: ['Shift', 'V'], 429 | }, 430 | { 431 | description: 'Use as Mask', 432 | keys: ['Ctrl', 'M'], 433 | }, 434 | { 435 | description: 'Edit Shape or Image', 436 | keys: ['Enter'], 437 | }, 438 | { 439 | description: 'Place Image', 440 | keys: ['Ctrl', 'Shift', 'K'], 441 | }, 442 | { 443 | description: 'Crop Image', 444 | keys: ['Alt', '(click x2)'], 445 | }, 446 | { 447 | description: 'Set Opacity to 10%', 448 | keys: ['1'], 449 | }, 450 | { 451 | description: 'Set Opacity to 50%', 452 | keys: ['5'], 453 | }, 454 | { 455 | description: 'Set Opacity to 100%', 456 | keys: ['0'], 457 | }, 458 | ], 459 | }, 460 | { 461 | name: 'Arrange', 462 | shortcuts: [ 463 | { 464 | description: 'Bring Forward', 465 | keys: ['Ctrl', ']'], 466 | }, 467 | { 468 | description: 'Send Backward', 469 | keys: ['Ctrl', '['], 470 | }, 471 | { 472 | description: 'Bring to Front', 473 | keys: ['Ctrl', 'Alt', ']'], 474 | }, 475 | { 476 | description: 'Send to Back', 477 | keys: ['Ctrl', 'Alt', '['], 478 | }, 479 | { 480 | description: 'Align Left', 481 | keys: ['Alt', 'A'], 482 | }, 483 | { 484 | description: 'Align Right', 485 | keys: ['Alt', 'D'], 486 | }, 487 | { 488 | description: 'Align Top', 489 | keys: ['Alt', 'W'], 490 | }, 491 | { 492 | description: 'Align Bottom', 493 | keys: ['Alt', 'S'], 494 | }, 495 | { 496 | description: 'Align Horizontal Centers', 497 | keys: ['Alt', 'H'], 498 | }, 499 | { 500 | description: 'Align Vertical Centers', 501 | keys: ['Alt', 'V'], 502 | }, 503 | { 504 | description: 'Tidy Up', 505 | keys: ['Ctrl', 'Alt', 'T'], 506 | }, 507 | { 508 | description: 'Distribute Horizontal Spacing', 509 | keys: ['Ctrl', 'Alt', 'H'], 510 | }, 511 | { 512 | description: 'Distribute Vertical Spacing', 513 | keys: ['Ctrl', 'Alt', 'V'], 514 | }, 515 | ], 516 | }, 517 | { 518 | name: 'Components', 519 | shortcuts: [ 520 | { 521 | description: 'Show Components', 522 | keys: ['Alt', '2'], 523 | }, 524 | { 525 | description: 'Team Library', 526 | keys: ['Ctrl', 'Shift', 'O'], 527 | }, 528 | { 529 | description: 'Create Component', 530 | keys: ['Ctrl', 'Shift', 'K'], 531 | }, 532 | { 533 | description: 'Detach Instance', 534 | keys: ['Ctrl', 'Shift', 'B'], 535 | }, 536 | { 537 | description: 'Swap Component Instance (while dragging from Assets)', 538 | keys: ['Alt'], 539 | }, 540 | ], 541 | }, 542 | ], 543 | } 544 | -------------------------------------------------------------------------------- /src/data/sources/vs-code.js: -------------------------------------------------------------------------------- 1 | export const vs_code = { 2 | title: 'Visual Studio Code', 3 | icon: 'https://code.visualstudio.com/favicon.ico', 4 | sections: [ 5 | { 6 | name: 'General', 7 | shortcuts: [ 8 | { 9 | description: 'Show Command Palette', 10 | keys: ['Ctrl', 'Shift', 'P'], 11 | }, 12 | { 13 | description: 'Quick Open, Go to File', 14 | keys: ['Ctrl', 'P'], 15 | }, 16 | { 17 | description: 'New window/instance', 18 | keys: ['Ctrl', 'Shift', 'N'], 19 | }, 20 | { 21 | description: 'Close window/instance', 22 | keys: ['Ctrl', 'Shift', 'W'], 23 | }, 24 | { 25 | description: 'User Settings', 26 | keys: ['Ctrl', ','], 27 | }, 28 | { 29 | description: 'Keyboard Shortcuts', 30 | keys: ['Ctrl', 'K', 'Ctrl', 'S'], 31 | }, 32 | ], 33 | }, 34 | { 35 | name: 'Basic Editing', 36 | shortcuts: [ 37 | { 38 | description: 'Cut line (empty selection)', 39 | keys: ['Ctrl', 'X'], 40 | }, 41 | { 42 | description: 'Copy line (empty selection)', 43 | keys: ['Ctrl', 'C'], 44 | }, 45 | { 46 | description: 'Move line up/down', 47 | keys: ['Alt', 'Up/Down'], 48 | }, 49 | { 50 | description: 'Copy line up/down', 51 | keys: ['Shift', 'Alt', 'Up/Down'], 52 | }, 53 | { 54 | description: 'Delete line', 55 | keys: ['Ctrl', 'Shift', 'K'], 56 | }, 57 | { 58 | description: 'Insert line below', 59 | keys: ['Ctrl', 'Enter'], 60 | }, 61 | { 62 | description: 'Insert line above', 63 | keys: ['Ctrl', 'Shift', 'Enter'], 64 | }, 65 | { 66 | description: 'Jump to matching bracket', 67 | keys: ['Ctrl', 'Shift', '\\'], 68 | }, 69 | { 70 | description: 'Indent/outdent line', 71 | keys: ['Ctrl', ']/['], 72 | }, 73 | { 74 | description: 'Go to beginning/end of line', 75 | keys: ['Home/End'], 76 | }, 77 | { 78 | description: 'Go to beginning of file', 79 | keys: ['Ctrl', 'Home'], 80 | }, 81 | { 82 | description: 'Go to end of file', 83 | keys: ['Ctrl', 'End'], 84 | }, 85 | { 86 | description: 'Scroll line up/down', 87 | keys: ['Ctrl', 'Up/Down'], 88 | }, 89 | { 90 | description: 'Scroll page up/down', 91 | keys: ['Alt', 'PgUp/PgDown'], 92 | }, 93 | { 94 | description: 'Fold (collapse) region', 95 | keys: ['Ctrl', 'Shift', '['], 96 | }, 97 | { 98 | description: 'Unfold (uncollapse) region', 99 | keys: ['Ctrl', 'Shift', ']'], 100 | }, 101 | { 102 | description: 'Fold (collapse) all subregions', 103 | keys: ['Ctrl', 'K', 'Ctrl', '['], 104 | }, 105 | { 106 | description: 'Unfold (uncollapse) all subregions', 107 | keys: ['Ctrl', 'K', 'Ctrl', ']'], 108 | }, 109 | { 110 | description: 'Fold (collapse) all regions', 111 | keys: ['Ctrl', 'K', 'Ctrl', '0'], 112 | }, 113 | { 114 | description: 'Unfold (uncollapse) all regions', 115 | keys: ['Ctrl', 'K', 'Ctrl', 'J'], 116 | }, 117 | { 118 | description: 'Add line comment', 119 | keys: ['Ctrl', 'K', 'Ctrl', 'C'], 120 | }, 121 | { 122 | description: 'Remove line comment', 123 | keys: ['Ctrl', 'K', 'Ctrl', 'U'], 124 | }, 125 | { 126 | description: 'Toggle line comment', 127 | keys: ['Ctrl', '/'], 128 | }, 129 | { 130 | description: 'Toggle block comment', 131 | keys: ['Shift', 'Alt', 'A'], 132 | }, 133 | { 134 | description: 'Toggle word wrap', 135 | keys: ['Alt', 'Z'], 136 | }, 137 | ], 138 | }, 139 | { 140 | name: 'Navigation', 141 | shortcuts: [ 142 | { 143 | description: 'Show all Symbols', 144 | keys: ['Ctrl', 'T'], 145 | }, 146 | { 147 | description: 'Go to Line', 148 | keys: ['Ctrl', 'G'], 149 | }, 150 | { 151 | description: 'Go to File', 152 | keys: ['Ctrl', 'P'], 153 | }, 154 | { 155 | description: 'Go to Symbol', 156 | keys: ['Ctrl', 'Shift', 'O'], 157 | }, 158 | { 159 | description: 'Show Problems panel', 160 | keys: ['Ctrl', 'Shift', 'M'], 161 | }, 162 | { 163 | description: 'Go to next error or warning', 164 | keys: ['F8'], 165 | }, 166 | { 167 | description: 'Go to previous error or warning', 168 | keys: ['Shift', 'F8'], 169 | }, 170 | { 171 | description: 'Navigate editor group history', 172 | keys: ['Ctrl', 'Shift', 'Tab'], 173 | }, 174 | { 175 | description: 'Go forward', 176 | keys: ['Alt', '→'], 177 | }, 178 | { 179 | description: 'Go back', 180 | keys: ['Alt', '←'], 181 | }, 182 | { 183 | description: 'Toggle Tab moves focus', 184 | keys: ['Ctrl', 'M'], 185 | }, 186 | ], 187 | }, 188 | { 189 | name: 'Search and replace', 190 | shortcuts: [ 191 | { 192 | description: 'Find', 193 | keys: ['Ctrl', 'F'], 194 | }, 195 | { 196 | description: 'Replace', 197 | keys: ['Ctrl', 'H'], 198 | }, 199 | { 200 | description: 'Find next', 201 | keys: ['F3'], 202 | }, 203 | { 204 | description: 'Find previous', 205 | keys: ['Shift', 'F3'], 206 | }, 207 | { 208 | description: 'Select all occurences of Find match', 209 | keys: ['Alt', 'Enter'], 210 | }, 211 | { 212 | description: 'Add selection to next Find match', 213 | keys: ['Ctrl', 'D'], 214 | }, 215 | { 216 | description: 'Move last selection to next Find match', 217 | keys: ['Ctrl', 'K', 'Ctrl', 'D'], 218 | }, 219 | { 220 | description: 'Toggle case-sensitive/regex/whole word', 221 | keys: ['Alt', 'C/R/W'], 222 | }, 223 | ], 224 | }, 225 | { 226 | name: 'Multi-cursor and selection', 227 | shortcuts: [ 228 | { 229 | description: 'Insert cursor', 230 | keys: ['Alt', 'Click'], 231 | }, 232 | { 233 | description: 'Insert cursor above/below', 234 | keys: ['Ctrl', 'Alt', 'Up/Down'], 235 | }, 236 | { 237 | description: 'Undo last cursor operation', 238 | keys: ['Ctrl', 'U'], 239 | }, 240 | { 241 | description: 'Insert cursor at end of each line selected', 242 | keys: ['Shift', 'Alt', 'I'], 243 | }, 244 | { 245 | description: 'Select current line', 246 | keys: ['Ctrl', 'I'], 247 | }, 248 | { 249 | description: 'Select all occurrences of current selection', 250 | keys: ['Ctrl', 'Shift', 'L'], 251 | }, 252 | { 253 | description: 'Select all occurrences of current word', 254 | keys: ['Ctrl', 'F2'], 255 | }, 256 | { 257 | description: 'Expand selection', 258 | keys: ['Shift', 'Alt', '→'], 259 | }, 260 | { 261 | description: 'Shrink selection', 262 | keys: ['Shift', 'Alt', '←'], 263 | }, 264 | { 265 | description: 'Column (box) selection', 266 | keys: ['Shift', 'Alt', '(drag mouse)'], 267 | }, 268 | { 269 | description: 'Column (box) selection', 270 | keys: ['Ctrl', 'Shift', 'Alt', '(arrow key)'], 271 | }, 272 | { 273 | description: 'Column (box) selection page up/down', 274 | keys: ['Ctrl', 'Shift', 'Alt', 'PgUp/PgDown'], 275 | }, 276 | ], 277 | }, 278 | { 279 | name: 'Rich languages editing', 280 | shortcuts: [ 281 | { 282 | description: 'Trigger suggestion', 283 | keys: ['Ctrl', 'Space'], 284 | }, 285 | { 286 | description: 'Trigger parameter hints', 287 | keys: ['Ctrl', 'Shift', 'Space'], 288 | }, 289 | { 290 | description: 'Format document', 291 | keys: ['Shift', 'Alt', 'F'], 292 | }, 293 | { 294 | description: 'Format selection', 295 | keys: ['Ctrl', 'K', 'Ctrl', 'F'], 296 | }, 297 | { 298 | description: 'Go to Definition', 299 | keys: ['F12'], 300 | }, 301 | { 302 | description: 'Peek Definition', 303 | keys: ['Alt', 'F12'], 304 | }, 305 | { 306 | description: 'Open Definition to the side', 307 | keys: ['Ctrl', 'K', 'F12'], 308 | }, 309 | { 310 | description: 'Quick Fix', 311 | keys: ['Ctrl', '.'], 312 | }, 313 | { 314 | description: 'Show References', 315 | keys: ['Shift', 'F12'], 316 | }, 317 | { 318 | description: 'Rename Symbol', 319 | keys: ['F2'], 320 | }, 321 | { 322 | description: 'Trim trailing whitespace', 323 | keys: ['Ctrl', 'K', 'Ctrl', 'X'], 324 | }, 325 | { 326 | description: 'Change file language', 327 | keys: ['Ctrl', 'K', 'M'], 328 | }, 329 | ], 330 | }, 331 | { 332 | name: 'Editor management', 333 | shortcuts: [ 334 | { 335 | description: 'Close editor', 336 | keys: ['Ctrl', 'F4'], 337 | }, 338 | { 339 | description: 'Close editor', 340 | keys: ['Ctrl', 'W'], 341 | }, 342 | { 343 | description: 'Close folder', 344 | keys: ['Ctrl', 'K', 'F'], 345 | }, 346 | { 347 | description: 'Split editor', 348 | keys: ['Ctrl', '\\'], 349 | }, 350 | { 351 | description: 'Focus into 1st, 2nd, or 3rd editor group', 352 | keys: ['Ctrl', '1/2/3'], 353 | }, 354 | { 355 | description: 'Focus into previous editor group', 356 | keys: ['Ctrl', 'K', 'Ctrl', '←'], 357 | }, 358 | { 359 | description: 'Focus into next editor group', 360 | keys: ['Ctrl', 'K', 'Ctrl', '→'], 361 | }, 362 | { 363 | description: 'Move editor left', 364 | keys: ['Ctrl', 'Shift', 'PgUp'], 365 | }, 366 | { 367 | description: 'Move editor right', 368 | keys: ['Ctrl', 'Shift', 'PgDown'], 369 | }, 370 | { 371 | description: 'Move active editor group left', 372 | keys: ['Ctrl', 'K', '←'], 373 | }, 374 | { 375 | description: 'Move active editor group right', 376 | keys: ['Ctrl', 'K', '→'], 377 | }, 378 | ], 379 | }, 380 | { 381 | name: 'File management', 382 | shortcuts: [ 383 | { 384 | description: 'New File', 385 | keys: ['Ctrl', 'N'], 386 | }, 387 | { 388 | description: 'Open File', 389 | keys: ['Ctrl', 'O'], 390 | }, 391 | { 392 | description: 'Save', 393 | keys: ['Ctrl', 'S'], 394 | }, 395 | { 396 | description: 'Save As', 397 | keys: ['Ctrl', 'Shift', 'S'], 398 | }, 399 | { 400 | description: 'Save All', 401 | keys: ['Ctrl', 'K', 'S'], 402 | }, 403 | { 404 | description: 'Close', 405 | keys: ['Ctrl', 'F4'], 406 | }, 407 | { 408 | description: 'Close All', 409 | keys: ['Ctrl', 'K', 'Ctrl', 'W'], 410 | }, 411 | { 412 | description: 'Reopen closed editor', 413 | keys: ['Ctrl', 'Shift', 'T'], 414 | }, 415 | { 416 | description: 'Keep preview mode editor open', 417 | keys: ['Ctrl', 'K', 'Enter'], 418 | }, 419 | { 420 | description: 'Open next', 421 | keys: ['Ctrl', 'Tab'], 422 | }, 423 | { 424 | description: 'Open previous', 425 | keys: ['Ctrl', 'Shift', 'Tab'], 426 | }, 427 | { 428 | description: 'Copy path of active file', 429 | keys: ['Ctrl', 'K', 'P'], 430 | }, 431 | { 432 | description: 'Reveal active file in Explorer', 433 | keys: ['Ctrl', 'K', 'R'], 434 | }, 435 | { 436 | description: 'Show active file in new window/instance', 437 | keys: ['Ctrl', 'K', 'O'], 438 | }, 439 | ], 440 | }, 441 | { 442 | name: 'Display', 443 | shortcuts: [ 444 | { 445 | description: 'Toggle full screen', 446 | keys: ['F11'], 447 | }, 448 | { 449 | description: 'Toggle editor layout (horizontal/vertical)', 450 | keys: ['Shift', 'Alt', '0'], 451 | }, 452 | { 453 | description: 'Zoom in/out', 454 | keys: ['Ctrl', '=/-'], 455 | }, 456 | { 457 | description: 'Toggle Sidebar visibility', 458 | keys: ['Ctrl', 'B'], 459 | }, 460 | { 461 | description: 'Show Explorer/Toggle focus', 462 | keys: ['Ctrl', 'Shift', 'E'], 463 | }, 464 | { 465 | description: 'Show Search', 466 | keys: ['Ctrl', 'Shift', 'F'], 467 | }, 468 | { 469 | description: 'Show Source Control', 470 | keys: ['Ctrl', 'Shift', 'G'], 471 | }, 472 | { 473 | description: 'Show Debug', 474 | keys: ['Ctrl', 'Shift', 'D'], 475 | }, 476 | { 477 | description: 'Show Extensions', 478 | keys: ['Ctrl', 'Shift', 'X'], 479 | }, 480 | { 481 | description: 'Replace in files', 482 | keys: ['Ctrl', 'Shift', 'H'], 483 | }, 484 | { 485 | description: 'Toggle Search details', 486 | keys: ['Ctrl', 'Shift', 'J'], 487 | }, 488 | { 489 | description: 'Show Output panel', 490 | keys: ['Ctrl', 'Shift', 'U'], 491 | }, 492 | { 493 | description: 'Open Markdown preview', 494 | keys: ['Ctrl', 'Shift', 'V'], 495 | }, 496 | { 497 | description: 'Open Markdown preview to the side', 498 | keys: ['Ctrl', 'K', 'V'], 499 | }, 500 | { 501 | description: 'Zen Mode (Esc Esc to exit)', 502 | keys: ['Ctrl', 'K', 'Z'], 503 | }, 504 | ], 505 | }, 506 | { 507 | name: 'Debug', 508 | shortcuts: [ 509 | { 510 | description: 'Toggle breakpoint', 511 | keys: ['F9'], 512 | }, 513 | { 514 | description: 'Start/Continue', 515 | keys: ['F5'], 516 | }, 517 | { 518 | description: 'Stop', 519 | keys: ['Shift', 'F5'], 520 | }, 521 | { 522 | description: 'Step into', 523 | keys: ['F11'], 524 | }, 525 | { 526 | description: 'Step out', 527 | keys: ['Shift', 'F11'], 528 | }, 529 | { 530 | description: 'Step over', 531 | keys: ['F10'], 532 | }, 533 | { 534 | description: 'Show hover', 535 | keys: ['Ctrl', 'K', 'Ctrl', 'I'], 536 | }, 537 | ], 538 | }, 539 | { 540 | name: 'Integrated terminal', 541 | shortcuts: [ 542 | { 543 | description: 'Show integrated terminal', 544 | keys: ['Ctrl', '`'], 545 | }, 546 | { 547 | description: 'Create new terminal', 548 | keys: ['Ctrl', 'Shift', '`'], 549 | }, 550 | { 551 | description: 'Copy selection', 552 | keys: ['Ctrl', 'C'], 553 | }, 554 | { 555 | description: 'Paste into active terminal', 556 | keys: ['Ctrl', 'V'], 557 | }, 558 | { 559 | description: 'Scroll up/down', 560 | keys: ['Ctrl', 'Up/Down'], 561 | }, 562 | { 563 | description: 'Scroll page up/down', 564 | keys: ['Shift', 'PgUp/PgDown'], 565 | }, 566 | { 567 | description: 'Scroll to top/bottom', 568 | keys: ['Ctrl', 'Home/End'], 569 | }, 570 | ], 571 | }, 572 | ], 573 | } 574 | -------------------------------------------------------------------------------- /src/data/sources/adobe-photoshop.js: -------------------------------------------------------------------------------- 1 | export const adobe_photoshop = { 2 | title: 'Adobe Photoshop', 3 | icon: 'https://www.adobe.com/content/dam/acom/one-console/icons_rebrand/ps_appicon.svg', 4 | sections: [ 5 | { 6 | name: 'General', 7 | shortcuts: [ 8 | { 9 | description: 'Free transform', 10 | keys: ['Ctrl', 'T'], 11 | }, 12 | { 13 | description: 'Decrease brush size', 14 | keys: ['['], 15 | }, 16 | { 17 | description: 'Increase brush size', 18 | keys: [']'], 19 | }, 20 | { 21 | description: 'Decrease brush hardness', 22 | keys: ['Shift', '['], 23 | }, 24 | { 25 | description: 'Increase brush hardness', 26 | keys: ['Shift', ']'], 27 | }, 28 | { 29 | description: 'Default foreground/background colors', 30 | keys: ['D'], 31 | }, 32 | { 33 | description: 'Switch foreground/background colors', 34 | keys: ['X'], 35 | }, 36 | { 37 | description: 'New layer via copy', 38 | keys: ['Ctrl', 'J'], 39 | }, 40 | { 41 | description: 'New layer via cut', 42 | keys: ['Ctrl', 'Shift', 'J'], 43 | }, 44 | { 45 | description: 'Cancel any modal dialog window (including the Start Workspace)', 46 | keys: ['Esc'], 47 | }, 48 | { 49 | description: 'Select the first edit field of the tool bar', 50 | keys: ['Enter'], 51 | }, 52 | { 53 | description: 'Navigate between fields', 54 | keys: ['Tab'], 55 | }, 56 | { 57 | description: 'Navigate between fields in the opposite direction', 58 | keys: ['Shift', 'Tab'], 59 | }, 60 | { 61 | description: 'Change cancel to reset', 62 | keys: ['Alt'], 63 | }, 64 | { 65 | description: 'Invoke the search experience', 66 | keys: ['Ctrl', 'F'], 67 | }, 68 | ], 69 | }, 70 | { 71 | name: 'Use function keys', 72 | shortcuts: [ 73 | { 74 | description: 'Start help', 75 | keys: ['F1'], 76 | }, 77 | { 78 | description: 'Cut', 79 | keys: ['F2'], 80 | }, 81 | { 82 | description: 'Copy', 83 | keys: ['F3'], 84 | }, 85 | { 86 | description: 'Paste', 87 | keys: ['F4'], 88 | }, 89 | { 90 | description: 'Show/hide brush panel', 91 | keys: ['F5'], 92 | }, 93 | { 94 | description: 'Show/hide color panel', 95 | keys: ['F6'], 96 | }, 97 | { 98 | description: 'Show/hide layers panel', 99 | keys: ['F7'], 100 | }, 101 | { 102 | description: 'Show/hide info panel', 103 | keys: ['F8'], 104 | }, 105 | { 106 | description: 'Show/hide actions panel', 107 | keys: ['F9'], 108 | }, 109 | { 110 | description: 'Revert', 111 | keys: ['F12'], 112 | }, 113 | { 114 | description: 'Fill', 115 | keys: ['Shift', 'F5'], 116 | }, 117 | { 118 | description: 'Feather selection', 119 | keys: ['Shift', 'F6'], 120 | }, 121 | { 122 | description: 'Inverse selection', 123 | keys: ['Shift', 'F7'], 124 | }, 125 | ], 126 | }, 127 | { 128 | name: 'Select Tools', 129 | shortcuts: [ 130 | { 131 | description: 'Move tool', 132 | keys: ['V'], 133 | }, 134 | { 135 | description: 'Rectangular marquee tool', 136 | keys: ['M'], 137 | }, 138 | { 139 | description: 'Lasso tool', 140 | keys: ['L'], 141 | }, 142 | { 143 | description: 'Magic wand tool > quick selection tool', 144 | keys: ['W'], 145 | }, 146 | { 147 | description: 'Crop tool > slice tool > slice select tool', 148 | keys: ['C'], 149 | }, 150 | { 151 | description: 'Eyedropper tool > ruler tool > note tool', 152 | keys: ['I'], 153 | }, 154 | { 155 | description: 'Spot healing brush tool > healing brush tool > patch tool > red eye tool', 156 | keys: ['J'], 157 | }, 158 | { 159 | description: 'Brush tool > pencil tool > color replacement tool > mixer brush tool', 160 | keys: ['B'], 161 | }, 162 | { 163 | description: 'Clone stamp tool > pattern stamp tool', 164 | keys: ['S'], 165 | }, 166 | { 167 | description: 'History brush tool > Art history brush tool', 168 | keys: ['Y'], 169 | }, 170 | { 171 | description: 'Eraser tool > background eraser tool > magic eraser tool', 172 | keys: ['E'], 173 | }, 174 | { 175 | description: 'Gradient tool > paint bucket tool', 176 | keys: ['G'], 177 | }, 178 | { 179 | description: 'Dodge tool > burn tool > sponge tool', 180 | keys: ['O'], 181 | }, 182 | { 183 | description: 'Pen tool > freeform pen tool', 184 | keys: ['P'], 185 | }, 186 | { 187 | description: 'Horizontal type tool > vertical type tool > horizontal type mask tool > vertical type mask tool', 188 | keys: ['T'], 189 | }, 190 | { 191 | description: 'Path selection tool > direct selection tool', 192 | keys: ['A'], 193 | }, 194 | { 195 | description: 'Rectangle tool > rounded rectangle tool > ellipse tool > polygon tool > line tool', 196 | keys: ['U'], 197 | }, 198 | { 199 | description: 'Hand tool', 200 | keys: ['H'], 201 | }, 202 | { 203 | description: 'Rotate view tool', 204 | keys: ['R'], 205 | }, 206 | { 207 | description: 'Zoom tool', 208 | keys: ['Z'], 209 | }, 210 | { 211 | description: 'Default foreground/background colors', 212 | keys: ['D'], 213 | }, 214 | { 215 | description: 'Switch foreground/background colors', 216 | keys: ['X'], 217 | }, 218 | { 219 | description: 'Toggle standard/quick mask modes', 220 | keys: ['Q'], 221 | }, 222 | { 223 | description: 'Content-aware move tool', 224 | keys: ['J'], 225 | }, 226 | { 227 | description: 'Perspective crop tool', 228 | keys: ['C'], 229 | }, 230 | { 231 | description: 'Artboard tool', 232 | keys: ['V'], 233 | }, 234 | { 235 | description: 'Rotate view tool', 236 | keys: ['R'], 237 | }, 238 | { 239 | description: 'Toggle preserve transparency', 240 | keys: ['/'], 241 | }, 242 | { 243 | description: 'Previous brush', 244 | keys: [','], 245 | }, 246 | { 247 | description: 'Next brush', 248 | keys: ['.'], 249 | }, 250 | { 251 | description: 'First brush', 252 | keys: ['Shift', ','], 253 | }, 254 | { 255 | description: 'Last brush', 256 | keys: ['Shift', '.'], 257 | }, 258 | ], 259 | }, 260 | { 261 | name: 'View images', 262 | shortcuts: [ 263 | { 264 | description: 'Cycle through open documents', 265 | keys: ['Ctrl', 'Tab'], 266 | }, 267 | { 268 | description: 'Switch to previous document', 269 | keys: ['Ctrl', 'Shift', 'Tab'], 270 | }, 271 | { 272 | description: 'Close a file in Photoshop and open Bridge', 273 | keys: ['Ctrl', 'Shift', 'W'], 274 | }, 275 | { 276 | description: 'Toggle forward between Standard screen > Full screen with menu bar > Full screen modes', 277 | keys: ['F'], 278 | }, 279 | { 280 | description: 'Toggle backwards between Standard screen > Full screen with menu bar > Full screen modes', 281 | keys: ['Shift', 'F'], 282 | }, 283 | { 284 | description: 'Toggle forward canvas color', 285 | keys: ['Space', 'F'], 286 | }, 287 | { 288 | description: 'Toggle backwards canvas color', 289 | keys: ['Shift', 'Space', 'F'], 290 | }, 291 | { 292 | description: 'Switch to hand tool (when not in text-edit mode)', 293 | keys: ['Space'], 294 | }, 295 | { 296 | description: 'Switch to zoom in tool', 297 | keys: ['Ctrl', 'Space'], 298 | }, 299 | { 300 | description: 'Switch to zoom out tool', 301 | keys: ['Alt', 'Space'], 302 | }, 303 | { 304 | description: 'Apply zoom percentage, and keep zoom percentage box active', 305 | keys: ['Shift', 'Enter'], 306 | }, 307 | { 308 | description: 'Scroll up 1 screen', 309 | keys: ['PgUp'], 310 | }, 311 | { 312 | description: 'Scroll down 1 screen', 313 | keys: ['PgDn'], 314 | }, 315 | { 316 | description: 'Scroll up 10 units', 317 | keys: ['Shift', 'PgUp'], 318 | }, 319 | { 320 | description: 'Scroll down 10 units', 321 | keys: ['Shift', 'PgDn'], 322 | }, 323 | { 324 | description: 'Move view to upper-left corner', 325 | keys: ['Home'], 326 | }, 327 | { 328 | description: 'Move view to lower-right corner', 329 | keys: ['End'], 330 | }, 331 | { 332 | description: 'Toggle layer mask on/off as rubylith (layer mask must be selected)', 333 | keys: ['\\'], 334 | }, 335 | ], 336 | }, 337 | { 338 | name: 'Use Puppet Warp', 339 | shortcuts: [ 340 | { 341 | description: 'Cancel completely', 342 | keys: ['Esc'], 343 | }, 344 | { 345 | description: 'Undo last pin adjustment', 346 | keys: ['Ctrl', 'Z'], 347 | }, 348 | { 349 | description: 'Select all pins', 350 | keys: ['Ctrl', 'A'], 351 | }, 352 | { 353 | description: 'Deselect all pins', 354 | keys: ['Ctrl', 'D'], 355 | }, 356 | { 357 | description: 'Temporarily hide pins', 358 | keys: ['H'], 359 | }, 360 | ], 361 | }, 362 | { 363 | name: 'Use Refine Edge', 364 | shortcuts: [ 365 | { 366 | description: 'Open the Refine Edge dialog box', 367 | keys: ['Ctrl', 'Alt', 'R'], 368 | }, 369 | { 370 | description: 'Cycle forward through preview modes', 371 | keys: ['F'], 372 | }, 373 | { 374 | description: 'Cycle backwards through preview modes', 375 | keys: ['Shift', 'F'], 376 | }, 377 | { 378 | description: 'Toggle between original image and selection preview', 379 | keys: ['X'], 380 | }, 381 | { 382 | description: 'Toggle between original selection and refined version', 383 | keys: ['P'], 384 | }, 385 | { 386 | description: 'Toggle radius preview on and off', 387 | keys: ['J'], 388 | }, 389 | { 390 | description: 'Toggle between Refine Radius and Erase Refinement tools', 391 | keys: ['Shift', 'E'], 392 | }, 393 | ], 394 | }, 395 | { 396 | name: 'Use the Filter Gallery', 397 | shortcuts: [ 398 | { 399 | description: 'Reapply last-used filter', 400 | keys: ['Ctrl', 'Alt', 'F'], 401 | }, 402 | { 403 | description: 'Change Cancel button to Default', 404 | keys: ['Ctrl'], 405 | }, 406 | { 407 | description: 'Change Cancel button to Reset', 408 | keys: ['Alt'], 409 | }, 410 | { 411 | description: 'Undo', 412 | keys: ['Ctrl', 'Z'], 413 | }, 414 | { 415 | description: 'Step forward', 416 | keys: ['Ctrl', 'Shift', 'Z'], 417 | }, 418 | { 419 | description: 'Step backward', 420 | keys: ['Ctrl', 'Alt', 'Z'], 421 | }, 422 | ], 423 | }, 424 | { 425 | name: 'Use the Liquify filter', 426 | shortcuts: [ 427 | { 428 | description: 'Forward warp tool', 429 | keys: ['W'], 430 | }, 431 | { 432 | description: 'Reconstruct tool', 433 | keys: ['R'], 434 | }, 435 | { 436 | description: 'Twirl clockwise tool', 437 | keys: ['C'], 438 | }, 439 | { 440 | description: 'Pucker tool', 441 | keys: ['S'], 442 | }, 443 | { 444 | description: 'Bloat tool', 445 | keys: ['B'], 446 | }, 447 | { 448 | description: 'Push left tool', 449 | keys: ['O'], 450 | }, 451 | { 452 | description: 'Mirror tool', 453 | keys: ['M'], 454 | }, 455 | { 456 | description: 'Turbulence tool', 457 | keys: ['T'], 458 | }, 459 | { 460 | description: 'Freeze mask tool', 461 | keys: ['F'], 462 | }, 463 | { 464 | description: 'Thaw mask tool', 465 | keys: ['D'], 466 | }, 467 | { 468 | description: 'Reverse direction for Bloat, Pucker, Push Left, and Mirror tools', 469 | keys: ['Alt', '(tool)'], 470 | }, 471 | { 472 | description: 'Cycle through controls on right from top', 473 | keys: ['Tab'], 474 | }, 475 | { 476 | description: 'Cycle through controls on right from bottom', 477 | keys: ['Shift', 'Tab'], 478 | }, 479 | { 480 | description: 'Change cancel to reset', 481 | keys: ['Alt'], 482 | }, 483 | ], 484 | }, 485 | { 486 | name: 'Use Vanishing Point', 487 | shortcuts: [ 488 | { 489 | description: 'Zoom 2x (temporary)', 490 | keys: ['X'], 491 | }, 492 | { 493 | description: 'Zoom in', 494 | keys: ['Ctrl', '+'], 495 | }, 496 | { 497 | description: 'Zoom out', 498 | keys: ['Ctrl', '-'], 499 | }, 500 | { 501 | description: 'Fit in view', 502 | keys: ['Ctrl', '0'], 503 | }, 504 | { 505 | description: 'Undo last action', 506 | keys: ['Ctrl', 'Z'], 507 | }, 508 | { 509 | description: 'Redo last action', 510 | keys: ['Ctrl', 'Shift', 'Z'], 511 | }, 512 | { 513 | description: 'Deselect all', 514 | keys: ['Ctrl', 'D'], 515 | }, 516 | { 517 | description: 'Hide selection and panes', 518 | keys: ['Ctrl', 'H'], 519 | }, 520 | { 521 | description: 'Move selection 1 pixel', 522 | keys: ['Arrows'], 523 | }, 524 | { 525 | description: 'Move selection 10 pixels', 526 | keys: ['Shift', 'Arrows'], 527 | }, 528 | { 529 | description: 'Copy', 530 | keys: ['Ctrl', 'C'], 531 | }, 532 | { 533 | description: 'Paste', 534 | keys: ['Ctrl', 'V'], 535 | }, 536 | { 537 | description: 'Repeat last duplicate and move', 538 | keys: ['Ctrl', 'Shift', 'T'], 539 | }, 540 | { 541 | description: 'Create floating selection from the current selection', 542 | keys: ['Ctrl', 'Alt', 'T'], 543 | }, 544 | { 545 | description: 'Constrain selection to a 15 degree rotation', 546 | keys: ['Alt', 'Shift'], 547 | }, 548 | { 549 | description: 'Delete last node while creating plane', 550 | keys: ['Backspace'], 551 | }, 552 | ], 553 | }, 554 | { 555 | name: 'Use the Camera Raw dialog box', 556 | shortcuts: [ 557 | { 558 | description: 'Zoom tool', 559 | keys: ['Z'], 560 | }, 561 | { 562 | description: 'Hand tool', 563 | keys: ['H'], 564 | }, 565 | { 566 | description: 'White balance tool', 567 | keys: ['I'], 568 | }, 569 | { 570 | description: 'Color sampler tool', 571 | keys: ['S'], 572 | }, 573 | { 574 | description: 'Crop tool', 575 | keys: ['C'], 576 | }, 577 | { 578 | description: 'Straighten tool', 579 | keys: ['A'], 580 | }, 581 | { 582 | description: 'Spot removal tool', 583 | keys: ['B'], 584 | }, 585 | { 586 | description: 'Red eye removal tool', 587 | keys: ['E'], 588 | }, 589 | { 590 | description: 'Basic panel', 591 | keys: ['Ctrl', 'Alt', '1'], 592 | }, 593 | { 594 | description: 'Tone curve panel', 595 | keys: ['Ctrl', 'Alt', '2'], 596 | }, 597 | { 598 | description: 'Detail panel', 599 | keys: ['Ctrl', 'Alt', '3'], 600 | }, 601 | { 602 | description: 'HSL/Greyscale panel', 603 | keys: ['Ctrl', 'Alt', '4'], 604 | }, 605 | { 606 | description: 'Split toning panel', 607 | keys: ['Ctrl', 'Alt', '5'], 608 | }, 609 | { 610 | description: 'Lens corrections panel', 611 | keys: ['Ctrl', 'Alt', '6'], 612 | }, 613 | { 614 | description: 'Camera calibration panel', 615 | keys: ['Ctrl', 'Alt', '7'], 616 | }, 617 | { 618 | description: 'Presets panel', 619 | keys: ['Ctrl', 'Alt', '8'], 620 | }, 621 | { 622 | description: 'Open snapshots panel', 623 | keys: ['Ctrl', 'Alt', '9'], 624 | }, 625 | { 626 | description: 'Parametric curve targeted adjustment tool', 627 | keys: ['Ctrl', 'Alt', 'Shift', 'T'], 628 | }, 629 | { 630 | description: 'Hue targeted adjustment tool', 631 | keys: ['Ctrl', 'Alt', 'Shift', 'H'], 632 | }, 633 | { 634 | description: 'Saturation targeted adjustment tool', 635 | keys: ['Ctrl', 'Alt', 'Shift', 'S'], 636 | }, 637 | { 638 | description: 'Luminance targeted adjustment tool', 639 | keys: ['Ctrl', 'Alt', 'Shift', 'L'], 640 | }, 641 | { 642 | description: 'Grayscale mix targeted adjustment tool', 643 | keys: ['Ctrl', 'Alt', 'Shift', 'G'], 644 | }, 645 | { 646 | description: 'Last-used targeted adjustment tool', 647 | keys: ['T'], 648 | }, 649 | { 650 | description: 'Adjustment brush tool', 651 | keys: ['K'], 652 | }, 653 | { 654 | description: 'Graduated filter tool', 655 | keys: ['G'], 656 | }, 657 | { 658 | description: 'Temporarily switch from Add to Erase mode for the Adjustment brush tool, or from Erase to Add mode', 659 | keys: ['Alt'], 660 | }, 661 | { 662 | description: 'Increase/decrease temporary adjustment brush tool size', 663 | keys: ['Alt', ']/['], 664 | }, 665 | { 666 | description: 'Increase/decrease temporary adjustment brush tool feather', 667 | keys: ['Alt', 'Shift', ']/['], 668 | }, 669 | { 670 | description: 'Increase/decrease temporary adjustment brush tool size flow in increments of 10', 671 | keys: ['Alt', '=/-'], 672 | }, 673 | { 674 | description: 'Switch to New mode from Add or Erase mode of the Adjustment Brush tool or Graduated filter', 675 | keys: ['N'], 676 | }, 677 | { 678 | description: 'Toggle Auto Mask for Adjustment Brush tool', 679 | keys: ['M'], 680 | }, 681 | { 682 | description: 'Toggle Show Mask for Adjustment Brush tool', 683 | keys: ['Y'], 684 | }, 685 | { 686 | description: 'Toggle pins for Adjustment Brush tool', 687 | keys: ['V'], 688 | }, 689 | { 690 | description: 'Rotate image left', 691 | keys: ['L'], 692 | }, 693 | { 694 | description: 'Rotate image right', 695 | keys: ['R'], 696 | }, 697 | { 698 | description: 'Temporarily switch to zoom in tool', 699 | keys: ['Ctrl'], 700 | }, 701 | { 702 | description: 'Temporarily switch to zoom out tool and change the image open button to open copy', 703 | keys: ['Alt'], 704 | }, 705 | { 706 | description: 'Toggle preview', 707 | keys: ['P'], 708 | }, 709 | { 710 | description: 'Full screen mode', 711 | keys: ['F'], 712 | }, 713 | { 714 | description: 'Temporarily activate the White Balance tool and change the open image button to open object', 715 | keys: ['Shift'], 716 | }, 717 | { 718 | description: 'Move selected point in curves panel 1 pixel', 719 | keys: ['Arrows'], 720 | }, 721 | { 722 | description: 'Move selected point in curves panel 10 pixels', 723 | keys: ['Shift', 'Arrows'], 724 | }, 725 | { 726 | description: 'Open selected images in Camera Raw dialog box from Bridge', 727 | keys: ['Ctrl', 'R'], 728 | }, 729 | { 730 | description: 'Highlight clipping warning', 731 | keys: ['O'], 732 | }, 733 | { 734 | description: 'Shadows clipping warning', 735 | keys: ['U'], 736 | }, 737 | { 738 | description: 'Add 1-5 star rating (filmstrip mode)', 739 | keys: ['Ctrl', '1-5'], 740 | }, 741 | { 742 | description: 'Increase/decrease rating (filmstrip mode)', 743 | keys: ['Ctrl', './,'], 744 | }, 745 | { 746 | description: 'Add red label (filmstrip mode)', 747 | keys: ['Ctrl', '6'], 748 | }, 749 | { 750 | description: 'Add yellow label (filmstrip mode)', 751 | keys: ['Ctrl', '7'], 752 | }, 753 | { 754 | description: 'Add green label (filmstrip mode)', 755 | keys: ['Ctrl', '8'], 756 | }, 757 | { 758 | description: 'Add blue label (filmstrip mode)', 759 | keys: ['Ctrl', '9'], 760 | }, 761 | { 762 | description: 'Add purple label (filmstrip mode)', 763 | keys: ['Ctrl', 'Shift', '0'], 764 | }, 765 | { 766 | description: 'Camera Raw preferences', 767 | keys: ['Ctrl', 'K'], 768 | }, 769 | { 770 | description: 'Delete Adobe Camera Raw preferences (on open)', 771 | keys: ['Ctrl', 'Alt'], 772 | }, 773 | ], 774 | }, 775 | { 776 | name: 'Use the Black-and-White dialog box', 777 | shortcuts: [ 778 | { 779 | description: 'Open the Black-and-White dialog box', 780 | keys: ['Ctrl', 'Shift', 'Alt', 'B'], 781 | }, 782 | { 783 | description: 'Increase/decrease selected value by 1%', 784 | keys: ['Up/Down'], 785 | }, 786 | { 787 | description: 'Increase/decrease selected value by 10%', 788 | keys: ['Shift', 'Up/Down'], 789 | }, 790 | ], 791 | }, 792 | { 793 | name: 'Use Curves', 794 | shortcuts: [ 795 | { 796 | description: 'Open the Curves dialog box', 797 | keys: ['Ctrl', 'M'], 798 | }, 799 | { 800 | description: 'Select next point on the curve', 801 | keys: ['+'], 802 | }, 803 | { 804 | description: 'Select the previous point on the curve', 805 | keys: ['-'], 806 | }, 807 | { 808 | description: 'Deselect a point', 809 | keys: ['Ctrl', 'D'], 810 | }, 811 | { 812 | description: 'Delete a point on the curve', 813 | keys: ['Del'], 814 | }, 815 | { 816 | description: 'Move the selected point 1 pixel', 817 | keys: ['Arrows'], 818 | }, 819 | { 820 | description: 'Move the selected point 10 pixels', 821 | keys: ['Shift', 'Arrows'], 822 | }, 823 | ], 824 | }, 825 | { 826 | name: 'Transform selections, selection borders, and paths', 827 | shortcuts: [ 828 | { 829 | description: 'Transform from center or reflect', 830 | keys: ['Alt'], 831 | }, 832 | { 833 | description: 'Constrain', 834 | keys: ['Shift'], 835 | }, 836 | { 837 | description: 'Distort', 838 | keys: ['Ctrl'], 839 | }, 840 | { 841 | description: 'Apply', 842 | keys: ['Enter'], 843 | }, 844 | { 845 | description: 'Cancel', 846 | keys: ['Ctrl', '.'], 847 | }, 848 | { 849 | description: 'Free transform with duplicate data', 850 | keys: ['Ctrl', 'Alt', 'T'], 851 | }, 852 | { 853 | description: 'Transform again with duplicate data', 854 | keys: ['Ctrl', 'Shift', 'Alt', 'T'], 855 | }, 856 | ], 857 | }, 858 | { 859 | name: 'Edit paths', 860 | shortcuts: [ 861 | { 862 | description: 'Switch from path selection, pen, add anchor point, delete anchor point, or convert point tools to direct selection tool', 863 | keys: ['Ctrl'], 864 | }, 865 | { 866 | description: 'Switch from pen tool to freeform pen tool to convert point tool when pointer is over anchor or direction point', 867 | keys: ['Alt'], 868 | }, 869 | ], 870 | }, 871 | { 872 | name: 'Use for painting', 873 | shortcuts: [ 874 | { 875 | description: 'Mixer brush changes mix setting', 876 | keys: ['Alt', 'Shift', '0-9'], 877 | }, 878 | { 879 | description: 'Mixer brush changes wet setting', 880 | keys: ['0-9'], 881 | }, 882 | { 883 | description: 'Mixer brush changes wet and mix to zero', 884 | keys: ['00'], 885 | }, 886 | { 887 | description: 'Cycle through blending modes', 888 | keys: ['Shift', '+/-'], 889 | }, 890 | { 891 | description: 'Open fill dialog box on background or standard layer', 892 | keys: ['Backspace'], 893 | }, 894 | { 895 | description: 'Fill with foreground color', 896 | keys: ['Alt', 'Backspace'], 897 | }, 898 | { 899 | description: 'Fill with background color', 900 | keys: ['Ctrl', 'Backspace'], 901 | }, 902 | { 903 | description: 'Fill from history', 904 | keys: ['Ctrl', 'Alt', 'Backspace'], 905 | }, 906 | { 907 | description: 'Displays fill dialog box', 908 | keys: ['Shift', 'Backspace'], 909 | }, 910 | { 911 | description: 'Lock transparent pixels on/off', 912 | keys: ['/'], 913 | }, 914 | ], 915 | }, 916 | { 917 | name: 'Use for blending modes', 918 | shortcuts: [ 919 | { 920 | description: 'Cycle through blending modes', 921 | keys: ['Ctrl', '-/+'], 922 | }, 923 | { 924 | description: 'Normal', 925 | keys: ['Shift', 'Alt', 'N'], 926 | }, 927 | { 928 | description: 'Dissolve', 929 | keys: ['Shift', 'Alt', 'I'], 930 | }, 931 | { 932 | description: 'Behind (brush tool only)', 933 | keys: ['Shift', 'Alt', 'Q'], 934 | }, 935 | { 936 | description: 'Clear (brush tool only)', 937 | keys: ['Shift', 'Alt', 'R'], 938 | }, 939 | { 940 | description: 'Darken', 941 | keys: ['Shift', 'Alt', 'K'], 942 | }, 943 | { 944 | description: 'Multiply', 945 | keys: ['Shift', 'Alt', 'M'], 946 | }, 947 | { 948 | description: 'Color burn', 949 | keys: ['Shift', 'Alt', 'B'], 950 | }, 951 | { 952 | description: 'Linear burn', 953 | keys: ['Shift', 'Alt', 'A'], 954 | }, 955 | { 956 | description: 'Lighten', 957 | keys: ['Shift', 'Alt', 'G'], 958 | }, 959 | { 960 | description: 'Screen', 961 | keys: ['Shift', 'Alt', 'S'], 962 | }, 963 | { 964 | description: 'Color dodge', 965 | keys: ['Shift', 'Alt', 'D'], 966 | }, 967 | { 968 | description: 'Linear dodge', 969 | keys: ['Shift', 'Alt', 'W'], 970 | }, 971 | { 972 | description: 'Overlay', 973 | keys: ['Shift', 'Alt', 'O'], 974 | }, 975 | { 976 | description: 'Soft light', 977 | keys: ['Shift', 'Alt', 'F'], 978 | }, 979 | { 980 | description: 'Hard light', 981 | keys: ['Shift', 'Alt', 'H'], 982 | }, 983 | { 984 | description: 'Vivid light', 985 | keys: ['Shift', 'Alt', 'V'], 986 | }, 987 | { 988 | description: 'Linear light', 989 | keys: ['Shift', 'Alt', 'J'], 990 | }, 991 | { 992 | description: 'Pin light', 993 | keys: ['Shift', 'Alt', 'Z'], 994 | }, 995 | { 996 | description: 'Hard mix', 997 | keys: ['Shift', 'Alt', 'L'], 998 | }, 999 | { 1000 | description: 'Difference', 1001 | keys: ['Shift', 'Alt', 'E'], 1002 | }, 1003 | { 1004 | description: 'Exclusion', 1005 | keys: ['Shift', 'Alt', 'X'], 1006 | }, 1007 | { 1008 | description: 'Hue', 1009 | keys: ['Shift', 'Alt', 'U'], 1010 | }, 1011 | { 1012 | description: 'Saturation', 1013 | keys: ['Shift', 'Alt', 'T'], 1014 | }, 1015 | { 1016 | description: 'Color', 1017 | keys: ['Shift', 'Alt', 'C'], 1018 | }, 1019 | { 1020 | description: 'Luminosity', 1021 | keys: ['Shift', 'Alt', 'Y'], 1022 | }, 1023 | { 1024 | description: 'Set blending mode to Threshold for bitmap images, Normal for all other images', 1025 | keys: ['Shift', 'Alt', 'N'], 1026 | }, 1027 | ], 1028 | }, 1029 | { 1030 | name: 'Format type', 1031 | shortcuts: [ 1032 | { 1033 | description: 'Align left, center, or right', 1034 | keys: ['Ctrl', 'Shift', 'L/C/R'], 1035 | }, 1036 | { 1037 | description: 'Choose 100% horizontal scale', 1038 | keys: ['Ctrl', 'Shift', 'X'], 1039 | }, 1040 | { 1041 | description: 'Choose 100% vertical scale', 1042 | keys: ['Ctrl', 'Shift', 'Alt', 'X'], 1043 | }, 1044 | { 1045 | description: 'Choose auto leading', 1046 | keys: ['Ctrl', 'Shift', 'Alt', 'A'], 1047 | }, 1048 | { 1049 | description: 'Choose 0 for tracking', 1050 | keys: ['Ctrl', 'Shift', 'Q'], 1051 | }, 1052 | { 1053 | description: 'Justify paragraph, left aligns last line', 1054 | keys: ['Ctrl', 'Shift', 'J'], 1055 | }, 1056 | { 1057 | description: 'Justify paragraph, justifies all', 1058 | keys: ['Ctrl', 'Shift', 'F'], 1059 | }, 1060 | { 1061 | description: 'Toggle paragraph hyphenation on/off', 1062 | keys: ['Ctrl', 'Shift', 'Alt', 'H'], 1063 | }, 1064 | { 1065 | description: 'Toggle single/every-line composer on/off', 1066 | keys: ['Ctrl', 'Shift', 'Alt', 'T'], 1067 | }, 1068 | { 1069 | description: 'Decrease or increase type size of selected text 2 points or pixels', 1070 | keys: ['Ctrl', 'Shift', ''], 1071 | }, 1072 | { 1073 | description: 'Decrease or increase leading 2 points or pixels', 1074 | keys: ['Alt', 'Up/Down'], 1075 | }, 1076 | { 1077 | description: 'Decrease or increase baseline shift 2 points or pixels', 1078 | keys: ['Shift', 'Alt', 'Up/Down'], 1079 | }, 1080 | { 1081 | description: 'Decrease or increase kerning/tracking 20/1000 ems', 1082 | keys: ['Alt', 'Left/Right'], 1083 | }, 1084 | ], 1085 | }, 1086 | { 1087 | name: 'Use panels', 1088 | shortcuts: [ 1089 | { 1090 | description: 'Apply value and keep text box active', 1091 | keys: ['Shift', 'Enter'], 1092 | }, 1093 | { 1094 | description: 'Show/Hide all panels', 1095 | keys: ['Tab'], 1096 | }, 1097 | { 1098 | description: 'Show/Hide all panels except the toolbox and options bar', 1099 | keys: ['Shift', 'Tab'], 1100 | }, 1101 | { 1102 | description: 'Highlight options bar (select tool first)', 1103 | keys: ['Enter'], 1104 | }, 1105 | { 1106 | description: 'Increase/decrease selected values by 10', 1107 | keys: ['Shift', 'Up/Down'], 1108 | }, 1109 | ], 1110 | }, 1111 | { 1112 | name: 'Use adjustment layers', 1113 | shortcuts: [ 1114 | { 1115 | description: 'Choose red channel for adjustment', 1116 | keys: ['Alt', '3'], 1117 | }, 1118 | { 1119 | description: 'Choose green channel for adjustment', 1120 | keys: ['Alt', '4'], 1121 | }, 1122 | { 1123 | description: 'Choose blue channel for adjustment', 1124 | keys: ['Alt', '5'], 1125 | }, 1126 | { 1127 | description: 'Choose composite channel for adjustment', 1128 | keys: ['Alt', '2'], 1129 | }, 1130 | { 1131 | description: 'Delete adjustment layer', 1132 | keys: ['Backspace'], 1133 | }, 1134 | ], 1135 | }, 1136 | { 1137 | name: 'Use the Brush panel', 1138 | shortcuts: [ 1139 | { 1140 | description: 'Select previous/next brush size', 1141 | keys: [',/.'], 1142 | }, 1143 | { 1144 | description: 'Select first/last brush', 1145 | keys: ['Shift', ',/.'], 1146 | }, 1147 | { 1148 | description: 'Display precise cross hair for brushes', 1149 | keys: ['Caps Lock'], 1150 | }, 1151 | { 1152 | description: 'Toggle airbrush option', 1153 | keys: ['Shift', 'Alt', 'P'], 1154 | }, 1155 | ], 1156 | }, 1157 | { 1158 | name: 'Use the Clone Source panel', 1159 | shortcuts: [ 1160 | { 1161 | description: 'Show Clone Source (overlays iamge)', 1162 | keys: ['Alt', 'Shift'], 1163 | }, 1164 | { 1165 | description: 'Nudge Clone Source', 1166 | keys: ['Alt', 'Shift', '(arrows)'], 1167 | }, 1168 | { 1169 | description: 'Rotate Clone Source', 1170 | keys: ['Alt', 'Shift', ''], 1171 | }, 1172 | { 1173 | description: 'Scale (increase or reduce size) Clone Source', 1174 | keys: ['Alt', 'Shift', '[/]'], 1175 | }, 1176 | ], 1177 | }, 1178 | { 1179 | name: 'Use the Layers panel', 1180 | shortcuts: [ 1181 | { 1182 | description: 'New layer', 1183 | keys: ['Ctrl', 'Shift', 'N'], 1184 | }, 1185 | { 1186 | description: 'New layer via copy', 1187 | keys: ['Ctrl', 'J'], 1188 | }, 1189 | { 1190 | description: 'New layer via cut', 1191 | keys: ['Ctrl', 'Shift', 'J'], 1192 | }, 1193 | { 1194 | description: 'Group layers', 1195 | keys: ['Ctrl', 'G'], 1196 | }, 1197 | { 1198 | description: 'Ungroup layers', 1199 | keys: ['Ctrl', 'Shift', 'G'], 1200 | }, 1201 | { 1202 | description: 'Create/release clipping mask', 1203 | keys: ['Ctrl', 'Alt', 'G'], 1204 | }, 1205 | { 1206 | description: 'Select all layers', 1207 | keys: ['Ctrl', 'Alt', 'A'], 1208 | }, 1209 | { 1210 | description: 'Merge visible layers', 1211 | keys: ['Ctrl', 'Shift', 'E'], 1212 | }, 1213 | { 1214 | description: 'Select top layer', 1215 | keys: ['Alt', '.'], 1216 | }, 1217 | { 1218 | description: 'Select bottom layer', 1219 | keys: ['Alt', '.'], 1220 | }, 1221 | { 1222 | description: 'Add to layer selection in Layers panel', 1223 | keys: ['Shift', 'Alt', '[/]'], 1224 | }, 1225 | { 1226 | description: 'Select next layer down/up', 1227 | keys: ['Alt', '[/]'], 1228 | }, 1229 | { 1230 | description: 'Move target layer down/up', 1231 | keys: ['Ctrl', '[/]'], 1232 | }, 1233 | { 1234 | description: 'Merge a copy of all visible layers into target layer', 1235 | keys: ['Ctrl', 'Shift', 'Alt', 'E'], 1236 | }, 1237 | { 1238 | description: 'Merge layers (while layers are highlighted)', 1239 | keys: ['Ctrl', 'E'], 1240 | }, 1241 | { 1242 | description: 'Move layer to bottom or top', 1243 | keys: ['Ctrl', 'Shift', '[/]'], 1244 | }, 1245 | { 1246 | description: 'Toggle lock transparency for target layer, or last applied lock', 1247 | keys: ['/'], 1248 | }, 1249 | { 1250 | description: 'Toggle rubylith mode for layer mask on/off', 1251 | keys: ['\\'], 1252 | }, 1253 | ], 1254 | }, 1255 | ], 1256 | } 1257 | --------------------------------------------------------------------------------