⌥+⌃AltPlusCtrl

How to Select a Message in Signal Desktop (Ctrl+J)

Windows: Ctrl+J
Mac: Cmd+J
Linux: Ctrl+J
Ctrl+J — Cmd+J on macOS — moves keyboard selection to the oldest unread message in the open conversation, or to the most recent message if everything has been read. From there, the arrow keys move between messages one at a time. **This is the missing step that makes half of Signal's shortcuts work.** Reply on Ctrl+Shift+R, react on Ctrl+Shift+E, forward on Ctrl+Shift+S, delete on Ctrl+Shift+D and details on Ctrl+D all act on a *selected message*. Selection is a distinct state from having the conversation open or the composer focused, and nothing in the interface prompts you to create it. Press any of those combinations without a selected message and nothing happens — no error, no hint. That silence is why most Signal users conclude the application has far fewer keyboard shortcuts than it actually ships. **Signal has three focus regions and shortcuts are scoped to them.** The chat list, the conversation, and the composer. Ctrl+T cycles between them. Almost every case of 'this shortcut does not work in Signal' resolves to a shortcut acting correctly on a region other than the one you were looking at, and knowing that the regions exist is most of the fix. **Starting at the oldest unread message is a deliberate choice.** It puts you at the beginning of what you have not seen rather than at the end of the conversation, so reading forward through a backlog works naturally with the down arrow. Combined with Alt+Shift+Down, which jumps to the next conversation that has unread messages, this makes a genuine keyboard-only path through a morning's accumulated messages — next unread chat, Ctrl+J to the first unread message, read forward, reply where needed, move on. **The selection is visible once you know to look for it.** Signal highlights the selected message, though the treatment is subtle enough that people who are not expecting it often do not register the change. If you are unsure whether selection is active, pressing Ctrl+D to open message details is a harmless test — if a details panel appears, selection is where you think it is. **For actions without their own shortcut**, Shift+F10 opens the full context menu for the selected message — Cmd+F12 on macOS, one of the very few Signal bindings where the platforms share no structure at all. Everything available on right-click is there, which makes it a reliable fallback when you know an option exists but cannot recall its key. **Worth knowing about Enter.** With a message selected, Enter performs that message's default action — opening an attachment, following a link, expanding media — rather than sending anything. The same key sends when the composer has focus. This is a case where Signal's region-scoped shortcuts work well: one obvious key, and what it does depends on where you are, in a way that turns out to match expectation more often than not. **Why this matters beyond convenience.** Keyboard-reachable message actions are what make Signal Desktop usable with a screen reader or without a pointing device, and the mechanism serving that requirement is the same one that makes the application fast for everyone else. The fair criticism is that none of it is surfaced anywhere in the interface — there is no hint that messages can hold selection, and no prompt pointing at Ctrl+J. A capability built deliberately for keyboard access ends up effectively hidden from the people most likely to need it, which is an odd outcome for a feature that clearly took work to build. One last distinction that trips people up. Selecting a message is not the same as selecting text within it. The shortcuts in this group act on the message as an object — reply to it, react to it, forward it, delete it. Highlighting words inside a message with the mouse and pressing Ctrl+Shift+R does nothing useful, because text selection and message selection are separate states. If you want to quote part of a message rather than all of it, the route is to reply normally and then edit the quoted text down, since Signal has no partial-quote mechanism of its own. Worth knowing for group conversations specifically: message details on Ctrl+D shows who has read a message rather than just whether it was delivered, which is a different and usually more useful question. In a group of ten, 'delivered' tells you almost nothing, while a read list tells you whether the two people the message actually concerned have seen it. Reaching that through the keyboard rather than by hovering and clicking makes it cheap enough to check routinely.

Related shortcuts