C'est ce que je fais aussi sous environnement Windows et ça fonctionne aussi sous OSx. par contre je n'ai pas testé sous Linux.
Un peu de code pour illustrer l'utilisation de
AddKeyboardShortcut() Bien qu'il n'y ait pas de menu, les évenements sont gérés comme un événement de menu.
Code:
Enumeration
#Mainform
#Canvas
#Kbd_CtrlC
#Kbd_CtrlV
#Kbd_CtrlX
EndEnumeration
Define.l Event, WEvent, MEvent, GEvent, TEvent
Global WindowStyle.i=#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered|#PB_Window_SizeGadget
Procedure Open_MainForm()
OpenWindow(#Mainform, 0, 0, 500, 400, "New Form", WindowStyle)
CanvasGadget(#Canvas, 10, 10, 480, 380, #PB_Canvas_Keyboard)
;ShortCut
AddKeyboardShortcut(#Mainform, #PB_Shortcut_Control|#PB_Shortcut_C, #Kbd_CtrlC)
AddKeyboardShortcut(#Mainform, #PB_Shortcut_Control|#PB_Shortcut_V, #Kbd_CtrlV)
AddKeyboardShortcut(#Mainform, #PB_Shortcut_Control|#PB_Shortcut_X, #Kbd_CtrlX)
EndProcedure
Procedure Start()
;Initialisation application, police, etc ..
Open_MainForm()
EndProcedure
start()
Repeat
Event = WaitWindowEvent(10)
WEvent = EventWindow()
MEvent = EventMenu()
GEvent = EventGadget()
TEvent = EventType()
Select Event
Case #PB_Event_Menu
Select MEvent
Case #Kbd_CtrlC
Debug "Copy"
Case #Kbd_CtrlV
Debug "Paste"
Case #Kbd_CtrlX
Debug "Delete"
EndSelect
Case #PB_Event_Gadget
Select GEvent
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
ForEver