diff --git a/rlib/h/wimp b/rlib/h/wimp
index 5d49b094c19e7b5f3e8c9f36ab9e20052bfc2265..87d6c6c5bf4df4ede24958ab76d5084f7b711c8d 100644
--- a/rlib/h/wimp
+++ b/rlib/h/wimp
@@ -318,6 +318,7 @@ typedef enum {
   wimp_MDATAREQUEST  = 16, /* Clipboard request data */
   wimp_MDRAGGING     = 17, /* Clipboard drag in progress */
   wimp_MDRAGCLAIM    = 18, /* Clipboard drag claimed */
+  wimp_MAPPCONTROL   = 21,
 
   wimp_MFILER_OPEN_DIR            = 0x400, /* Filer */
   wimp_MFILER_CLOSE_DIR           = 0x401,
@@ -464,6 +465,42 @@ typedef struct {
 #define wimp_MDATAREQUEST_types_end         (-1)
 } wimp_msgdatarequest;
 
+typedef struct {
+  wimp_w w;               /* target window */
+  wimp_i i;               /* target icon */
+  int x;                  /* target coords in target window work area */
+  int y;
+  int flags;
+#define wimp_MDRAGGING_flags_datafromselection (2)
+#define wimp_MDRAGGING_flags_datafromclipboard (4)
+#define wimp_MDRAGGING_flags_deletesource      (8)
+#define wimp_MDRAGGING_flags_donotclaim        (16)
+  wimp_box box;
+  int types[1];          /* array of types */
+#define wimp_MDRAGGING_types_end               (-1)
+} wimp_msgdragging;
+
+typedef struct {
+  int flags;             /* request type */
+#define wimp_MDRAGCLAIM_flags_ptrchanged    (1)
+#define wimp_MDRAGCLAIM_flags_removedragbox (2)
+#define wimp_MDRAGCLAIM_flags_deletesource  (8)
+  int types[1];          /* array of types */
+#define wimp_MDRAGCLAIM_types_end           (-1)
+} wimp_msgdragclaim;
+
+typedef struct {
+  int version;
+  int flags;
+#define wimp_MAPPCONTROL_flags_immediate    (1)
+  int op;
+#define wimp_MAPPCONTROL_op_stop            (0)
+#define wimp_MAPPCONTROL_op_wakeup          (1)
+#define wimp_MAPPCONTROL_op_pause           (2)
+#define wimp_MAPPCONTROL_op_minimisememory  (3)
+#define wimp_MAPPCONTROL_op_openconfig      (4)
+} wimp_msgappcontrol;
+
 typedef struct {
   wimp_mousestr m;       /* where the help is required */
 } wimp_msghelprequest;
@@ -496,6 +533,9 @@ typedef struct {          /* message block */
     wimp_msgdevice      device;
     wimp_msgclaimentity claimentity;
     wimp_msgdatarequest datarequest;
+    wimp_msgdragging    dragging;
+    wimp_msgdragclaim   dragclaim;
+    wimp_msgappcontrol  appcontrol;
   } data;
 } wimp_msgstr;