Signal Message Action Shortcuts
This is the group most Signal users never find, for one structural reason: every shortcut here acts on a selected message, and selecting a message with the keyboard is not something the interface advertises. Without that step, the whole set appears to do nothing.
| Action | Windows | Mac | Description |
|---|---|---|---|
| Reply to the selected message | Ctrl+Shift+R | Cmd+Shift+R | Starts a quoted reply to whichever message is selected, and toggles it off if pressed again. Requires a selected message — Ctrl+J is the usual way to get one from the keyboard. |
| Open the reaction picker | Ctrl+Shift+E | Cmd+Shift+E | Opens the emoji-reaction picker for the selected message. Reacting rather than replying keeps a group conversation from filling with acknowledgements, which is most of what the feature is for. |
| View message details | Ctrl+D | Cmd+D | Shows delivery and read status, timestamps, and in a group, who has seen it. The place to check when you need to know whether a message actually arrived rather than assuming from the absence of a reply. |
| Forward selected messages | Ctrl+Shift+S | Cmd+Shift+S | Sends the selection on to another conversation. Signal marks forwarded messages as such for the recipient, which is a deliberate friction against content travelling without its context. |
| Save an attachment | Ctrl+S | Cmd+S | Saves the attachment from the selected message to disk, and does the same job inside the media viewer. Relevant for disappearing messages — saving is what takes a file out of that lifecycle. |
| Delete the selected message | Ctrl+Shift+D | Cmd+Shift+D | Deletes the selected message, with the choice of removing it for everyone or only for you. Deleting for everyone has a time limit and cannot recover a message someone has already screenshotted. |
| Open the message context menu | Shift+F10 | Cmd+F12 | Opens the full right-click menu for the selected message from the keyboard. The route to per-message actions that have no shortcut of their own, and one of the few places Signal's Mac and Windows bindings share no structure at all. |
| Default action on the selected message | Enter | Return | Performs whatever the obvious action is for that message type — opening an attachment, following a link, expanding media. Context-dependent by design, which makes it quick once selection is where you want it. |
Ctrl+J is the way in. It moves selection to the oldest unread message in the open conversation, or to the most recent one if everything has been read. From there the arrow keys move between messages, and every binding below has a target. Miss this step and reply, react, forward, delete and details all silently fail — which is exactly what happens to most people who try one of them once and conclude Signal's keyboard support is thin.
Replying is Ctrl+Shift+R, and it toggles: pressing it again cancels the quoted reply rather than nesting another. Quoted replies matter more in Signal than the feature does in some apps because group conversations move quickly and an unquoted answer to a question three messages back is genuinely ambiguous. Being able to quote without reaching for the mouse makes it likely you actually will.
Reacting is Ctrl+Shift+E, which opens the emoji-reaction picker for the selected message. The social function is worth stating plainly: reactions exist so that acknowledging something does not require sending a message. In a group of eight, a question answered by one person and acknowledged by seven produces seven notifications for everyone if those acknowledgements are messages, and none if they are reactions.
Ctrl+D shows message details — delivery status, read status, timestamps, and in a group, who has seen it. This is the answer to 'did that actually send' that does not require asking, and it is more precise than the checkmarks in the conversation view. On a group message it also answers the more useful question of which specific people have seen it.
Forwarding is Ctrl+Shift+S. Signal marks forwarded messages as forwarded for the recipient, which is a deliberate friction rather than a limitation — it exists so that content moving between conversations carries a signal that it has moved, since a screenshot-free messenger otherwise makes an out-of-context quote indistinguishable from something said directly to you.
Ctrl+S saves an attachment from the selected message, and does the same job inside the media viewer. The case where this genuinely matters is disappearing messages: saving is what takes a file out of that lifecycle before it goes. Whether that is appropriate depends entirely on context and on the sender's expectations, but the mechanism is worth understanding either way.
Deletion is Ctrl+Shift+D, with a choice between removing the message for everyone and removing it only from your own device. Delete-for-everyone has a time limit, and it cannot recover a message someone has already read, screenshotted or had appear in a notification. It is a correction mechanism, not a recall, and treating it as the latter leads to disappointment.
Shift+F10 opens the full context menu for the selected message from the keyboard — Cmd+F12 on macOS, and this is one of the very few Signal bindings where the two platforms share no structure whatsoever. It is the route to per-message actions with no shortcut of their own, and the fallback worth remembering when you know an option exists and cannot recall its key.
Enter performs the default action for the selected message, which varies by type: opening an attachment, following a link, expanding media. Context-dependent behaviour is usually a design smell, but here it works, because the obvious action for any given message is genuinely obvious and having one key for all of them is faster than remembering several.
A note on why this group is worth the effort of learning at all, given that every action here is also available on right-click. The answer is that message actions cluster: you rarely reply to exactly one message and then stop. Working through a group conversation that accumulated overnight means reacting to several, replying to two, and forwarding one — and doing that with the mouse means locating each message, hovering to reveal its controls, and clicking through a menu, repeatedly. With selection driven from the keyboard, the same pass is arrow keys and two-key combinations, and it is several times faster in a way that compounds over a busy account.
The accessibility dimension is worth stating too. Signal's per-message actions being reachable by keyboard is what makes the application usable with a screen reader or without a pointing device at all, and the same mechanism that serves that requirement is what makes it fast for anyone else. The one genuine criticism is discoverability: none of this is surfaced in the interface, so a feature built deliberately for keyboard access is effectively hidden from the people who would most benefit from knowing it exists.
A closing practical note. Every action in this group is also available on right-click, so nothing here is exclusive to the keyboard. What the keyboard changes is the cost of doing several in a row — and message actions almost always come in runs rather than singly, because a conversation that accumulated overnight needs reacting to, replying to and occasionally forwarding in one pass. That is where selection plus two-key combinations pulls decisively ahead of hovering over each message to reveal its controls.