Some notes and tools for providing reminders for Gmail keyboard shortcuts / etc.
- https://support.google.com/mail/answer/6594
-
Keyboard shortcuts for Gmail
-
Save time navigating in Gmail using keyboard shortcuts.
- https://mail.google.com/mail/u/0/#settings/general
- Enable: "Keyboard shortcuts on"
- https://mail.google.com/mail/u/0/#settings/advanced
- Enable: "Custom keyboard shortcuts"
- https://mail.google.com/mail/u/0/#settings/shortcuts
-
Keyboard Shortcuts
-
Current keyboard shortcut mappings
-
-
- https://chromewebstore.google.com/detail/keyed-for-gmail/bjffmeipkljmcomfmooofphhncafbhgh
-
Keyed for Gmail
-
Keyed teaches you Gmail's keyboard shortcuts by intercepting your mouse clicks and showing you the faster way. Instead of blocking functionality or overwhelming you with tutorials, Keyed provides just-in-time learning based on your actual Gmail usage.
chrome-extension://jifpbeccnghkjeaalbbjmodiffmgedin/crxviewer.html?crx=https%3A%2F%2Fclients2.google.com%2Fservice%2Fupdate2%2Fcrx%3Fresponse%3Dredirect%26os%3Dmac%26arch%3Dx86-64%26os_arch%3Dx86-64%26nacl_arch%3Dx86-64%26prod%3Dchromiumcrx%26prodchannel%3Dunknown%26prodversion%3D9999.0.9999.0%26acceptformat%3Dcrx2%2Ccrx3%26x%3Did%253Dbjffmeipkljmcomfmooofphhncafbhgh%2526uc
background.ts
chrome.storage.local.set({ email: "[email protected]", key: "magic", verificationStatus: { status: "active" }})
content.ts
- Around line
~6070
there seem to be somelocalStorage
uses with values such as:keyed__mode
keyed__snooze
keyed__keyboard_shortcuts_enabled
keyed__ignore_shortcut_prompts
keyed__initial_shortcut_check_complete
keyed__toast_key
keyed__toast_key_separator
- Looking at
localStorage
on Gmail I see things like:[email protected]__keyed__ignore_shortcut_prompts: false
[email protected]__keyed__initial_shortcut_check_complete: true
[email protected]__keyed__keyboard_shortcuts_enabled: true
- From line
~6320
to~6935
I see a bunch of definitions for keyboard shortcuts / labels, matchers, etc
- Around line
- Some libraries it seems to use:
content.ts
- https://github.com/yiliansource/party-js
- https://github.com/yiliansource/party-js/blob/main/src/components/spline.ts#L38
- eg.
"You are trying to pass an array to the spline constructor, which is not supported"
- eg.
- https://github.com/yiliansource/party-js/blob/main/src/components/spline.ts#L38
- https://github.com/dexie/Dexie.js
- eg.
bulkPut(): keys argument invalid on tables with inbound keys
- eg.
- https://github.com/yiliansource/party-js
-
- https://chromewebstore.google.com/detail/Gmail%20Shortcut%20Nudges/nfiaapgfpmpjanmlekaakondnbebnebd
-
Gmail Shortcut Nudges
-
Gmail Shortcut Nudges teaches you to use Gmail's keyboard shortcuts by showing a tooltip displaying what shortcut you can use to trigger the button you're hovering on. It also blocks clicking on the most commonly clicked-on buttons so you're conditioned to use keyboard shortcuts and blaze through your emails.
chrome-extension://jifpbeccnghkjeaalbbjmodiffmgedin/crxviewer.html?crx=https%3A%2F%2Fclients2.google.com%2Fservice%2Fupdate2%2Fcrx%3Fresponse%3Dredirect%26os%3Dmac%26arch%3Dx86-64%26os_arch%3Dx86-64%26nacl_arch%3Dx86-64%26prod%3Dchromiumcrx%26prodchannel%3Dunknown%26prodversion%3D9999.0.9999.0%26acceptformat%3Dcrx2%2Ccrx3%26x%3Did%253Dnfiaapgfpmpjanmlekaakondnbebnebd%2526uc
-
let forcedBindings = JSON.parse(`{ "div[act='19']": { "keys": "u", "name": "Go back" }, "div[act='7']": { "keys": "e", "name": "Archive" }, "div[act='10']": { "keys": "#", "name": "Delete" }, "div[act='2']": { "keys": "shift u", "name": "Mark unread" }, "div[act='290']": { "keys": "b", "name": "Postpone" }, "div.adF .h0 > :nth-child(2)": { "keys": "k", "name": "Previous conversation" }, "div.adF .h0 > :nth-child(3)": { "keys": "j", "name": "Next conversation" }, "div.T-I-KE": { "keys": "c", "name": "New message" }, ".aHS-bnt": { "keys": "g,i", "name": "Inbox" }, ".aHS-bnu": { "keys": "g,t", "name": "Sent" }, ".aHS-bnq": { "keys": "g,d", "name": "Drafts" }, ".aaq": { "keys": "r", "name": "Reply (top of conversation)" }, ".bkH": { "keys": "r", "name": "Reply (bottom of conversation)" }, "#r": { "keys": "r", "name": "Reply (top of conversation list)" }, ".bkI": { "keys": "a", "name": "Reply all (bottom of conversation)" }, "#r2": { "keys": "a", "name": "Reply all (top of conversation list)" }, ".bkG": { "keys": "f", "name": "Forward (bottom of conversation)" }, "#r3": { "keys": "f", "name": "Forward (top of conversation list)" }, ".aoO": { "keys": "cmd enter", "name": "Send" } }`); let optionalBindings = JSON.parse(`{ "[role='grid']": { "text": "Open: <span class='binding-key'>o</span> or <span class='binding-key'>enter</span>, Down: <span class='binding-key'>j</span> or <span class='binding-key'>↓</span>, Up: <span class='binding-key'>k</span> or <span class='binding-key'>↑</span> <BR>", "name": "Navigating inbox" }, "[role='grid'] .btb .aXw.T-KT": { "keys": "s", "name": "Star/unstar (inbox)" }, "[role='grid'] .btb [role='checkbox']": { "keys": "x", "name": "Select email" }, "form[role='search'] .gb_Se": { "keys": "/", "name": "Search" } }`); //bindings I've discarded: // "div.G-tF > :nth-child(4) > :nth-child(1)": { "keys": "v", "name": "Move to" }, // "div.G-tF > :nth-child(4) > :nth-child(2)": { "keys": "l", "name": "Labels" }, // "div.G-tF .nf": { "keys": ".", "name": "Other actions" }, // ".aHS-bnw": { "keys": "g s", "name": "Followed messages" }, // ".og": { "keys": "meta ⇧ d", "name": "Discard Draft" }, // ".Hl ~ .Ha": { "keys": "esc", "name": "Save & close" }, // "[role='navigation'].ajl .aHS-aHO": { "keys": "g,a", "name": "All Mail" }, // ".pE": { "keys": "meta shift c", "name": "Add CC" }, // ".pB": { "keys": "meta shift b", "name": "Add BCC" }, // ".acZ .T-KT": { "keys": "s", "name": "Star/unstar (message view)" }, // "div[act='9']": { "keys": "!", "name": "Send to spam" },
-
-
- https://chromewebstore.google.com/detail/Simplehuman%2C%20keyboard%20shortcuts%20and%20command%20bar%20for%20Gmail/nipfocapamlefjhldhcagammlldbangf
-
Simplehuman, keyboard shortcuts and command bar for Gmail
-
Advanced keyboard shortcuts, natural language snooze, and smart email management features for Gmail.
-
Simplehuman adds keyboard shortcuts and smart features to Gmail, to make it work like Superhuman.
- https://www.simplehuman.email/pricing/
- 15 day free trial, $5/month, $59/year, $119/lifetime
- https://www.simplehuman.email/learn-to-use/
-
- Learn keyboard shortcuts ⏎
Learn the keyboard shortcuts for the email actions you frequently use, either from the Command Center or when you are about to click the button.
-
chrome-extension://jifpbeccnghkjeaalbbjmodiffmgedin/crxviewer.html?crx=https%3A%2F%2Fclients2.google.com%2Fservice%2Fupdate2%2Fcrx%3Fresponse%3Dredirect%26os%3Dmac%26arch%3Dx86-64%26os_arch%3Dx86-64%26nacl_arch%3Dx86-64%26prod%3Dchromiumcrx%26prodchannel%3Dunknown%26prodversion%3D9999.0.9999.0%26acceptformat%3Dcrx2%2Ccrx3%26x%3Did%253Dnipfocapamlefjhldhcagammlldbangf%2526uc
contentScript.bundle.js
(prettified)- In module
3719
, around lines~40051
to~41058
seen to be a bunch of definitions for keybindings/etc - In module
8233
, around lines~44204
to~44293
seem to be a bunch of selectors related to showing the onhover tooltips to remind users of the shortcut keys"Press <span class='binding-key'>".concat(e.keys, '</span>');
- Around lines
~54849
to~55744
seem to be definitions for the various commands registered in theCmd+K
toolbar such as archive, open, etc - Around lines
~49055
to~49084
in modules4014
,9821
,6065
,4610
,6538
,9284
; are various i18n translation JSON objects - Some libraries it seems to use:
- https://github.com/search?type=code&q=%22Command+Palette%22+%22ui+mini+horizontal+grey+label%22
- https://github.com/asabaylus/react-command-palette
-
React Command Palette
-
WAI-ARIA compliant React command palette like the one in Atom and Sublime
-
- https://github.com/asabaylus/react-command-palette
- https://github.com/search?type=code&q=%22Command+Palette%22+%22ui+mini+horizontal+grey+label%22
- In module
-
- https://github.com/0xdevalias
- https://gist.github.com/0xdevalias
- https://github.com/0xdevalias/chatgpt-source-watch : Analyzing the evolution of ChatGPT's codebase through time with curated archives and scripts.
- CSS Selectors for Gmail Things (0xdevalias' gist)
- Deobfuscating / Unminifying Obfuscated Web App Code (0xdevalias' gist)
- Reverse Engineering Webpack Apps (0xdevalias' gist)
- React Server Components, Next.js v13+, and Webpack: Notes on Streaming Wire Format (
__next_f
, etc) (0xdevalias' gist)) - Fingerprinting Minified JavaScript Libraries / AST Fingerprinting / Source Code Similarity / Etc (0xdevalias' gist)
- Bypassing Cloudflare, Akamai, etc (0xdevalias' gist)
- Debugging Electron Apps (and related memory issues) (0xdevalias' gist)
- devalias' Beeper CSS Hacks (0xdevalias' gist)
- Reverse Engineering Golang (0xdevalias' gist)
- Reverse Engineering on macOS (0xdevalias' gist)