patch 8.2.1978: making a mapping work in all modes is complicated

Problem:    Making a mapping work in all modes is complicated.
Solution:   Add the <Cmd> special key. (Yegappan Lakshmanan, closes #7282,
            closes 4784, based on patch by Bjorn Linse)
diff --git a/src/keymap.h b/src/keymap.h
index 4583c6c..6efb13d 100644
--- a/src/keymap.h
+++ b/src/keymap.h
@@ -274,6 +274,7 @@
     , KE_FOCUSLOST = 99		// focus lost
     , KE_MOUSEMOVE = 100	// mouse moved with no button down
     , KE_CANCEL = 101		// return from vgetc()
+    , KE_COMMAND = 102		// <Cmd> special key
 };
 
 /*
@@ -449,11 +450,11 @@
 #define K_RIGHTMOUSE	TERMCAP2KEY(KS_EXTRA, KE_RIGHTMOUSE)
 #define K_RIGHTDRAG	TERMCAP2KEY(KS_EXTRA, KE_RIGHTDRAG)
 #define K_RIGHTRELEASE	TERMCAP2KEY(KS_EXTRA, KE_RIGHTRELEASE)
-#define K_X1MOUSE       TERMCAP2KEY(KS_EXTRA, KE_X1MOUSE)
-#define K_X1MOUSE       TERMCAP2KEY(KS_EXTRA, KE_X1MOUSE)
+#define K_X1MOUSE	TERMCAP2KEY(KS_EXTRA, KE_X1MOUSE)
+#define K_X1MOUSE	TERMCAP2KEY(KS_EXTRA, KE_X1MOUSE)
 #define K_X1DRAG	TERMCAP2KEY(KS_EXTRA, KE_X1DRAG)
 #define K_X1RELEASE     TERMCAP2KEY(KS_EXTRA, KE_X1RELEASE)
-#define K_X2MOUSE       TERMCAP2KEY(KS_EXTRA, KE_X2MOUSE)
+#define K_X2MOUSE	TERMCAP2KEY(KS_EXTRA, KE_X2MOUSE)
 #define K_X2DRAG	TERMCAP2KEY(KS_EXTRA, KE_X2DRAG)
 #define K_X2RELEASE     TERMCAP2KEY(KS_EXTRA, KE_X2RELEASE)
 
@@ -477,6 +478,8 @@
 
 #define K_CURSORHOLD	TERMCAP2KEY(KS_EXTRA, KE_CURSORHOLD)
 
+#define K_COMMAND	TERMCAP2KEY(KS_EXTRA, KE_COMMAND)
+
 // Bits for modifier mask
 // 0x01 cannot be used, because the modifier must be 0x02 or higher
 #define MOD_MASK_SHIFT	    0x02