Is it possible to add accelerators (hotkeys) to a custom control?

It can. I do it all the time catching window messages like this one in some components. I haven’t tested specifically with canvas, but I’m about to.

that’d be useful to know since then a custom accelerator becomes a lot simpler to do

Attempting to set a window proc on a canvas crashes. So that route isn’t going to work. The best way forward would be to set it on the window from the canvas, which does work.

I think we cant hook in the msg loop and play, and even more, not messing the Xojo processing of it.
So, we should need some Xojo made methods in the Keyboard and Window objects, and EVENTS, like Event Accelerator(key as string, shift as boolean, ctrl as boolean), new methods enabling peeking keys, reading keys (and discarding), SetAcceleratorKey(key as String, shift, ctrl as boolean, callback As AcceleratorCallback), … those things.
This will enable event driven faceless accelerators and a few pluses.

[quote=461285:@Rick Araujo]I think we cant hook in the msg loop and play, and even more, not messing the Xojo processing of it.
So, we should need some Xojo made methods in the Keyboard and Window objects, and EVENTS, like Event Accelerator(key as string, shift as boolean, ctrl as boolean), new methods enabling peeking keys, reading keys (and discarding), SetAcceleratorKey(key as String, shift, ctrl as boolean, callback As AcceleratorCallback), … those things.
This will enable event driven faceless accelerators and a few pluses.[/quote]

You can subclass the window using the Win32 API to receive the events sent to it by Windows. This is not an issue and I do it all the time.

WFS had/has an example of that

I like the idea of Xojo doing it because they can make it platform agnostic.

But, for a Windows one, in a hurry, intercepting the Window messages seems the way.