*This documents my keyboard shortcut research, understanding, and current personal setup to help anyone following the same rabbit hole. It's also a quick reference for useful shortcuts like quick search that use Raycast's built-in functions.*
# Design philosophy
*Before diving into my basic setup (app + keyboard shortcut thought Raycast), a little bit of intent needs to be explicit.*
### About macOS build in featured and software
I don't like relying on Apple software and ecosystem. The main reason is that I don't use an iPhone and have no Apple products that I rely on or would really rely on in the future. Outside of that, and because the “ecosystem” is all about integration, you cannot just touch it a little bit; piece by piece, the individual software options are not the best for what I want.
Regarding macOS features, I don't use the Dock because I don't feel it adds meaningful utility over Spotlight, Command-Tab, and Command Center. I use Raycast as a Spotlight replacement, and it has become a central piece of my setup. Also ==🔴`*...rent time activate...*`==, I don’t use the crappy window button because they are tiny, not customizable, and do nothing useful. I generally want to quit and hide, two options that aren’t offered though the traffic light... Don't let’s me goes about virtual desktop… Finally, the same goes for the menu bar: I generally use shortcuts or search. I want things to be simple, but precisely the way I want them.
### ⌨️ About complementary hardware
I don’t want a critical dependency on externe peripherals: mouse, keyboard, or screen. Extra stuff needs to stay extra; I want to enable most things and workflows within the constraints of the laptop, a charging brick, and an external SSD for media work. That’s also why I use an international `U.S. International - PC` layout with the default QWERTY keyboard. I find AZERTY regularly conflicts with how keyboard shortcuts are assigned and is poorly suited for any serious keyboard-centric approach. Using `U.S. International - PC` enables access to French and Spanish in a more logical way, because you can quickly compose characters outside of the standard letters.
#### **💽 About software locking and data privacy**
Data needs to be local. The cloud is used for offsite backups (with on-device encryption) and sharing specific files. I don't really rely on a specific provider. In the short term, I will try to self-host most of my stuff.
Even though I value ownership in software, at minimum portability, at best privacy. I continue to rely on “non-user-focused software”, I use some as a means to keep up with what my job asks of me and others for convenience while exploring alternatives.
- **Hardware (for the curious)**
| Device / App | Backup | Notes |
| --- | --- | --- |
| 💻 MacBook Pro M1 14” | • Time Machine → 💾 1 To portable HDD (WD Elements)
• :my/arq: [Arq](https://www.arqbackup.com/) → :my/google-drive: Google Drive | Main device |
| 💾 1 To Portable SSD (T7 Shield) | • :my/arq: [Arq](https://www.arqbackup.com/) → :my/google-drive: Google Drive | Media drive |
| 🖥️ Desktop Windows 11 | No backup | Mostly used as a console. Overall, nothing relevant on device |
| 🖊️ Ipad Air 5e (M1 11") + Apple pencil 2e gen | Minimal ☁️ iCloud backup + Photos via :my/google_photos: Google Photo | Overall, nothing relevant on device |
| 📱 Nothing Phone 2a | :my/google-drive: Google Drive + :my/google_photos: Google Photo | Contacts, messages, images |
| :my/notion: Notion | Not clean or automatic backup. Manual export (weekly) | Main note/orga app |
# MacOS utilities
Before diving into Shortcuts, I think it’s important to establish just a short list of utilities that are relevant to the current discussion because they expand some built-in macOS features, replace them, change some behavior in a way I prefer, or add a welcoming layer of customization and control.
> [!note]
> **The all in one goat:** https://www.raycast.com/
>
> It's basically a vast library of actions (launch an app, uninstall an app, execute a script, start an dictation, search contacts, access web bookmarks, open/test camera, get a quick anwner context-dependent prompt, etc) or utilities (clipboard history, snippet manager, emoji picker, etc.) that you access through a search bar or direct keyboard shortcut. https://manual.raycast.com/
>
> At a basic level, it makes many of your system actions, files, and apps more accessible and discoverable. At a deeper level, it enables really convenient workflows and drastically limits context switching. Sometimes it could feel like having a nice UI over command-line scripts, a library, or apps, something really cool for non-tech people.
>
> The best part is that Raycast’s utility goes way beyond its built-in tools, with a rich library of extensions. https://www.raycast.com/store (in the [Keyboard](https://app.notion.com/p/Keyboard-3855f6ff47ef806ba0baf43a469bb741?pvs=21), you’ll see some I really rely on). The current version (beta v2) lacks local model, but it should return at some point down the line.
>
> - **Noteworthy Alternative & Complementary Tools**
>
> **🫶 The “Leader Key” approach**
>
> From my perspective, one of the most important limitations of the way Raycast handles shortcuts is the very limited way you can combine keys. You can set up a Hyper key, but it won't work as a Leader key. This means you cannot combine keys in infinite ways. You start with modifier keys and end with one symbol. You can’t do ⌘SD, only ⌘S or ⌘D. But with LeaderKey or Tana, shortcuts work like directories: by adding keys, you descend into the harbor of essence, and I think it’s a really interesting and powerful mental model that isn’t enabled by something like Raycast natively.
>
> [https://github.com/mikker/LeaderKey](https://github.com/mikker/LeaderKey)
>
> [Tuna](https://tunaformac.com/)
>
> **Less modern but has powerfull**
>
> [Alfred - Productivity App for macOS](https://www.alfredapp.com/)
>
> **On Linux**
>
> [https://github.com/vicinaehq/vicinae](https://github.com/vicinaehq/vicinae)
>
> *More of a space manager, but looks neat*
>
> [https://github.com/hyprwm/Hyprland](https://github.com/hyprwm/Hyprland)
| **Deep keyboard customization & automation** | https://karabiner-elements.pqrs.org/ |
| --- | --- |
| **Improve `⌘` + `Tab` behavior** | https://dockdoor.net/ |
| **Middle click with track pad** | ‣ |
### [🚧 CURRENTLY IN THE MAKING] Not has relevant, but I recommended it:
https://helium.computer/
**Screenshot & recording :**
https://shottr.cc/
https://www.screenkite.com/#features
**Focus**
monocle
Flux
hazeOver
**Improve finder**
**Honorable mention**
# Keyboard
I’m aware that this section ended up feeling Raycast-focused, because it’s where many things flow from and where some key functionality comes from. It’s all I need in one really well-built package, even if I use only a fraction of it (it evolves every month or so). That said, I think there are workflows and tips that should outlive any tool, and that it is interesting to lay out some of my logic and setup. There are many “productivity” tools you can use to deepen the relationship between you, your keyboard, and your OS, so to speak, that are not Raycast… that said, Raycast is a good starting point.
## Rules and constraints to set up a shortcut
- ==🟡`important`== Keyboard default - expected behavior and known patterns
*A modifier key is a key that does nothing by itself but is used in combination with other keys to quickly access OS or app functions.*
**`⌘` Command → Primary user actions:**
- App-level operations (copy, paste, save, open, etc)
- Menu-visible commands
**`⌥` Option → Variations of actions:**
- Has a secondary modifier, same action, different flavor
- “Power-user toggle”
- ⌥ + symbols
### US International Layout ⌥ Combinations
#### Letters
- ⌥ + A = å
- ⌥ + B = ∫
- ⌥ + C = ç
- ⌥ + D = ∂
- ⌥ + E = ´ (dead key for accents)
- ⌥ + F = ƒ
- ⌥ + G = ©
- ⌥ + H = ˙
- ⌥ + I = ˆ (dead key for accents)
- ⌥ + J = ∆
- ⌥ + K = ˚
- ⌥ + L = ¬
- ⌥ + M = µ
- ⌥ + N = ˜ (dead key for accents)
- ⌥ + O = ø
- ⌥ + P = π
- ⌥ + Q = œ
- ⌥ + R = ®
- ⌥ + S = ß
- ⌥ + T = †
- ⌥ + U = ¨ (dead key for accents)
- ⌥ + V = √
- ⌥ + W = ∑
- ⌥ + X = ≈
- ⌥ + Y = ¥
- ⌥ + Z = Ω
#### Numbers
- ⌥ + 1 = ¡
- ⌥ + 2 = ™
- ⌥ + 3 = £
- ⌥ + 4 = ¢
- ⌥ + 5 = ∞
- ⌥ + 6 = §
- ⌥ + 7 = ¶
- ⌥ + 8 = •
- ⌥ + 9 = ª
- ⌥ + 0 = º
#### Symbols
- ⌥ + ` = ` (dead key for accents)
- ⌥ + - = –
- ⌥ + = = ≠
- ⌥ + [ = "
- ⌥ + ] = '
- ⌥ + \ = «
- ⌥ + ; = …
- ⌥ + ' = æ
- ⌥ + , = ≤
- ⌥ + . = ≥
- ⌥ + / = ÷
### US International Layout ⌥ + ⇧ Combinations
#### Letters
- ⌥ + ⇧ + A = Å
- ⌥ + ⇧ + B = ı
- ⌥ + ⇧ + C = Ç
- ⌥ + ⇧ + D = Î
- ⌥ + ⇧ + E = ´ (dead key for accents)
- ⌥ + ⇧ + F = Ï
- ⌥ + ⇧ + G = ˝
- ⌥ + ⇧ + H = Ó
- ⌥ + ⇧ + I = ˆ (dead key for accents)
- ⌥ + ⇧ + J = Ô
- ⌥ + ⇧ + K =
- ⌥ + ⇧ + L = Ò
- ⌥ + ⇧ + M = Â
- ⌥ + ⇧ + N = ˜ (dead key for accents)
- ⌥ + ⇧ + O = Ø
- ⌥ + ⇧ + P = ∏
- ⌥ + ⇧ + Q = Œ
- ⌥ + ⇧ + R = ‰
- ⌥ + ⇧ + S = Í
- ⌥ + ⇧ + T = ˇ
- ⌥ + ⇧ + U = ¨ (dead key for accents)
- ⌥ + ⇧ + V = ◊
- ⌥ + ⇧ + W = „
- ⌥ + ⇧ + X = ˛
- ⌥ + ⇧ + Y = Á
- ⌥ + ⇧ + Z = ¸
#### Numbers
- ⌥ + ⇧ + 1 = ⁄
- ⌥ + ⇧ + 2 = €
- ⌥ + ⇧ + 3 = ‹
- ⌥ + ⇧ + 4 = ›
- ⌥ + ⇧ + 5 = fi
- ⌥ + ⇧ + 6 = fl
- ⌥ + ⇧ + 7 = ‡
- ⌥ + ⇧ + 8 = °
- ⌥ + ⇧ + 9 = ·
- ⌥ + ⇧ + 0 = ‚
#### Symbols
- ⌥ + ⇧ + ` = ` (dead key for accents)
- ⌥ + ⇧ + - = —
- ⌥ + ⇧ + = = ±
- ⌥ + ⇧ + [ = "
- ⌥ + ⇧ + ] = '
- ⌥ + ⇧ + \ = »
- ⌥ + ⇧ + ; = Ú
- ⌥ + ⇧ + ' = Æ
- ⌥ + ⇧ + , = ¯
- ⌥ + ⇧ + . = ˘
- ⌥ + ⇧ + / = ¿
**`⌃` Control → System-level operations:**
- Window/Context management (Mission Control, Spaces)
- Unix text control (line navigation)
**`Fn` → Hardware/input modes:**
- Not consistent modifier; use by hardware or system actions
`❖` **HyperKey:**
- No Apple defaults use all the modifiers, and apps rarely bind this combination
- Ideal to express "meta intent" — invoking your system directly
Think of Hyperkey as a master modifier key (built by combining all or most of the base modifier keys `⌘` `⌃` `⌥` `⇧`) that lets you talk to the system, not the app in focus.
## Example of Common Abstractions
| Function | ⌨️ Shortcut |
| --- | --- |
| Close | ⌘ + W |
| Cancel/Close | Esc |
| Undo | ⌘ + Z |
| Redo | ⇧ + ⌘ + Z |
| Save | ⌘ + S |
| Save as… | ⇧ + ⌘ + S |
| Select All | ⌘ + A |
| Copying | ⌘ + C |
| Pasting | ⌘ + V |
| Pasting without formatting | ⇧ + ⌘ + V |
| Copying style | ⇧ + ⌘ + C |
| Paste style (based on previous ⇧⌘C) | ⇧ + ⌘ + V |
| Previous / Next | ⌘ + [ / ⌘ + ] |
| Settings | ⌘ + , |
| Hide sidebar or UI | ⌘ + \ |
| Start | Space |
| Mute | M |
| Find | ⌘ + F |
| Find Next | ⌘ + G |
| Find Previous | ⇧ + ⌘ + G |
| Quickly finding and opening specific documents or files / can also be use for palette commands | ⌘P |
| Opening a global search or a palette to run commands | ⌘K |
| New | ⌘ + N |
| New tab | ⌘ + T |
| Open | ⌘ + O |
| Info / Inspector | ⌘ + I |
| Switch between items | Tab
⇧ + Tab
⌘ + Tab
⇧ + ⌘ + Tab |
- **Safe playground:** Hyperkey for system intent, the shortcut ALWAYS WORK
- `⌘` family is never overridden globally (it's also true for basic `⌘` combinations like `⌥` + `⌘` and `⌘` + `⇧`)
- `⌃` alone is mostly reserved for Unix / system navigation
| Function | Shortcut |
| --- | --- |
| Move to beginning of line | ⌃A |
| Move to end of line | ⌃E |
| Move forward one character | ⌃F |
| Move backward one character | ⌃B |
| Move to next line | ⌃N |
| Move to previous line | ⌃P |
| Delete from cursor to end of line | ⌃K |
| Delete character forward | ⌃D |
| Delete character backward | ⌃H |
| Move forward one word | ⌥→ |
| Move backward one word | ⌥← |
| Select forward one word | ⇧⌥→ |
| Select backward one word | ⇧⌥← |
- `⌥` can be reassigned without too much concern, only a few supplementary symbols need to stay accessible:
| Type | Symbol | Shortcut | Snippet | Emoji ? |
| --- | --- | --- | --- | --- |
| | Euro: € | ⌥ + ⇧ + 2 | !e | € |
| | Range dash (–) | ⌥ + - | | – |
| | Context dash (—) | ⌥ + ⇧ + - | | — |
| | Angle quotes («») | ⌥ + \ ⇒ open
⌥ + ⇧ + \ ⇒ close | | «» |
| | ¡ | ⌥ + 1 | | ¡ |
| | ¿ | ⌥ + ⇧ + / | | ¿ |
| | Middle dot (·) | ⌥ + ⇧ + 9 | | · |
| | Degree sign (°) | ⌥ + ⇧ + 8 | | ° |
| | ç | ⌥ + C | !c | |
| Math | π | ⌥ + P | !pi | |
| Math | ø | ⌥ + O | | |
| Math | Function sign (ƒ) | ⌥ + F | | |
| Math | ≠ | ⌥ + = | | |
| Math | ± | ⌥ + ⇧ + = | | |
| Math | Square root (√) | ⌥ + V | | √ |
| Math | Almost equal (≈) | ⌥ + X | | ≈ |
| Math | Less than or equal (≤) | ⌥ + , | | ≤ |
| Math | Greater than or equal (≥) | ⌥ + . | | ≥ |
## Set up your HyperKey `❖`
Mine is `l⌘` + `l⌃` + `l⌥`, and it will be expressed with `❖` for the rest of the doc. Mine does not include `⇧` because it enables more variations using `❖` + `⇧`. When you see `l` or `r` before a modifier key, it indicates which side is used. So you can use right Shift and left Shift independently!
> [!info]
> *Even if could set up your hyperkey using Raycast (https://manual.raycast.com/hyper-key), I don’t recommend it. Because it’s Raycast that composes your hyperkey, it’s way more fragile than using a dedicated keyboard customizer.*
>
> **Set up your *❖ hyperkey* with Karabiner - https://karabiner-elements.pqrs.org/**
>
> To avoid possible conflicts (for an AZERTY keyboard, converting it to QWERTY will certainly be the case) I recommend going this route. In my case, I run Karabiner for multiple reasons beyond the hyperkey. So using it for the hyperkey doesn't come with an additional cost, makes it more reliable, and extends its scope of use.
>
> ```json
> {
> "manipulators": [
> {
> "description": "Change caps_lock to command+control+option+ NO shift.",
> "from": {
> "key_code": "caps_lock",
> "modifiers": { "optional": ["any"] }
> },
> "to": [
> {
> "key_code": "left_command",
> "modifiers": ["left_control", "left_option"]
> }
> ],
> "type": "basic"
> }
> ]
> }
> ```
## My setup *at date*
*Before the raw listing, note that I list only commands that have keyboard shortcuts, because they are generally the ones I use the most. That said, this list isn't exhaustive or up to date, because some are rotating in function depending on what I'm testing, or slowly evolving as I get a better grasp of certain functionality.*
> [!note]
> `⌘` + `Q` or `❖` + `⇧` + `Y` = pressed “together” (modifier should press down when you press the last key, here `Q` or `Y`)
>
> `fn` `fn` = double tap
>
> ---
>
> When you see :my/raycast: next to a function, it means Raycast meaningfully enables that workflow, even if it’s not a custom command or an extension.
#### 🪟 Space & Apps Management
| Function | Shortcut |
| --- | --- |
| Quit App | ==🔴`⌘`== + ==🔴`Q`== |
| Hide App | ==🔴`⌘`== + ==🔴`H`== |
| Lock screen | ==🔴`⌃`== + ==🔴`⌘`== + ==🔴`Q`== |
| Next App | ==🔴`⌘`== + ==🔴`Tab`== |
| Previous App | ==🔴`⌘`== + ==🔴`⇧`== + ==🔴`Tab`== |
| Search & Switch Windows | `⌥` + `Tab` |
| Move focus to next window of the current App | `⌘` + ``` |
| Mission Control | `⌃` + `↑` |
| Move left a space (Switch to left space) | `⌃` + `←` |
| Move right a space (Switch to right space) | `⌃` + `→` |
| Switch to Desktop 1 | `⌃` + `1` |
| Switch to Desktop 2 | `⌃` + `2` |
| Top Half :my/raycast: | `❖` + `↑` |
| Bottom Half :my/raycast: | `❖` + `↓` |
| Left Half :my/raycast: | `❖` + `←` |
| Right Half :my/raycast: | `❖` + `→` |
| Full Screen :my/raycast: | `❖` + `⇧` + `↓` |
| Send to Next Display :my/raycast: | `❖` + `⇧` + `↑` |
| Top Right Quarter :my/raycast: | `❖` + `⇧` + `→` |
| Top Left Quarter :my/raycast: | `❖` + `⇧` + `←` |
| Maximize :my/raycast: | `❖` + `Tab` |
#### 🚀 Launch, Switch and Navigate Apps & Website
| Function | Shortcut |
| --- | --- |
| :my/helium: Helium | `❖` + `'` |
| Search on :my/google: Google :my/raycast: | `❖` + `⇧` + `'` |
| :my/notion: Notion | `❖` + `1` |
| Search on :my/notion: Notion :my/raycast: | `❖` + `⇧` + `1` |
| :notion_mail: Notion Mail | `❖` + `2` |
| Schedule :my/raycast: | `❖` + `3` |
| :my/notion_calendar: Notion Calendar | `❖` + `⇧` + `3` |
| :my/affinity-new: Affinity | `❖` + `A` |
| Contact | `❖` + `C` |
| Search Contact | `❖` + `⇧` + `C` |
| :my/discord: Discord | `❖` + `D` |
| :my/excalidraw: Excalidraw | `❖` + `E` |
| :my/figma: Figma | `❖` + `F` |
| Search on :my/figma: Figma :my/raycast: | `❖` + `⇧` + `F` |
| Search on :my/goodreads: Goodreads :my/raycast: | `❖` + `⇧` + `G` |
| :my/inoreader: Inoreader - inbox | `❖` + `I` |
| :my/inoreader: Inoreader - read later | `❖` + `⇧` + `I` |
| :my/lightroom: Adobe Lightroom Classic | `❖` + `L` |
| :my/lightroom: Adobe Lightroom | `❖` + `l⇧` + `L` |
| Search on :my/letterboxd: Letterboxd :my/raycast: | `❖` + `r⇧` + `L` |
| :my/adobe_photoshop: Adobe Photoshop | `❖` + `P` |
| Search on :my/raindrop_io: Raindrop :my/raycast: | `❖` + `⇧` + `R` |
| :my/raindrop_io: Raindrop | `❖` + `R` |
| Search on :my/steam: Steam :my/raycast: | `❖` + `⇧` + `S` |
| :my/ghostty: Ghostty | `❖` + `T` |
| :my/vs-code: VS code | `❖` + `V` |
| :my/whatsapp: WhatsApp | `❖` + `W` |
| :my/yt_music: Youtube Music | `❖` + `Y` |
| Search on :my/youtube: Youtube :my/raycast: | `❖` + `⇧` + `Y` |
#### **🤖 Quick Actions / Search**
| Function | Shortcut |
| --- | --- |
| Quick notes :my/raycast: | `l⇧` + `l⇧` |
| Search Quicklinks :my/raycast: | `l⇧` + `space` |
| Dictation :my/raycast: | `fn` `fn` |
| Search Files :my/raycast: | `fn` + `space` |
| Search Download :my/raycast: | `fn` + `⇧` + `space` |
| :my/claude: Claude | `⌃` `⌃` |
| :my/claude: Claude - Quick access shortcut | `⌃` + `space` |
| Pick color :my/raycast: | `l⌥` `l⌥` |
| Organize colors :my/raycast: | `l⌥` + `space` |
| Emoji picker :my/raycast: | `l⌘` `l⌘` |
| Raycast :my/raycast: | `l⌘` + `space` |
| Search Snippets :my/raycast: | `r⌘` `r⌘` |
| Search Menu Items :my/raycast: | `r⌘` + `space` |
| Search Clipboard :my/raycast: | `r⌥` `r⌥` |
| 1Password :my/raycast: | `r⌥` + `space` |
| 1Password (app) :my/raycast: | `r⌥` + `⇧` + `space` |
| Quick Fix ==🟣`AI`== ==🟠`quick`== :my/raycast: | `r⇧` + `r⇧` |
| Fix Spelling and Grammar ==🟣`AI`== :my/raycast: | `r⇧` + `space` |