I've tested a zillion different combinations, including Danii's above, and selective HTML replacements. If there's a solution to this, it eludes me. I think you will need to use the selected keyword, unfortunately.
However, the triggering still intrigues me. The players will still need to trigger it somehow. If it's a sheet ability, you have four choices:
1. Have the sheet open to the Abilities tab
The players will need to click the macro from there, but if they have the sheet open, they might as well be on the main page and click the desired ability
2. Use a token macro that calls the ability
This would only appear if the token were selected, so there is no issue in using the selected keyword.
3. Use a Collections macro that calls the ability
Although the collections macro could be made universal, each player would need to add it to their macro bar personally. If made a universal token macro, there would be no keyword issue, as in #2, above.
4. Type the name of the macro in chat
Issues as in 2 & 3 above.
In order for a ability to even work without a token/character selected, Roll20 needs to know which character to reference. At some point you will need to provide that reference. Even if a player could type the macro directly into chat (as #4 above) it doesn't know which character is meant, since one player can control many characters.
I think your best bet is a universal token macro and make sure a token is always available for each character in the game. I have this issue in my own game on my Theater of the Mind page, which only shows a scene, no maps. I solved it by putting tokens in a line across the top of the page, and using the maplock script to lock them in place, so as not to be disruptive.