diff -ur prboom-plus-2.5.1.4/src/SDL/i_video.c prboom-plus-2.5.1.4-kaboom/src/SDL/i_video.c
--- prboom-plus-2.5.1.4/src/SDL/i_video.c	2015-10-04 15:07:45.000000000 -0400
+++ prboom-plus-2.5.1.4-kaboom/src/SDL/i_video.c	2016-03-20 13:45:34.000000000 -0400
@@ -191,7 +191,7 @@
   case SDLK_KP_PERIOD:  rc = KEYD_KEYPADPERIOD; break;
   case SDLK_LSHIFT:
   case SDLK_RSHIFT: rc = KEYD_RSHIFT; break;
-  case SDLK_LCTRL:
+  case SDLK_LCTRL:  rc = KEYD_LCTRL;  break;
   case SDLK_RCTRL:  rc = KEYD_RCTRL;  break;
   case SDLK_LALT:
   case SDLK_LMETA:
diff -ur prboom-plus-2.5.1.4/src/d_ticcmd.h prboom-plus-2.5.1.4-kaboom/src/d_ticcmd.h
--- prboom-plus-2.5.1.4/src/d_ticcmd.h	2008-04-25 19:31:59.000000000 -0400
+++ prboom-plus-2.5.1.4-kaboom/src/d_ticcmd.h	2016-03-20 13:45:34.000000000 -0400
@@ -54,6 +54,7 @@
   short consistancy;          /* checks for net game  */
   byte  chatchar;
   byte  buttons;
+  dboolean kaboom;
 } ticcmd_t;
 
 #endif
diff -ur prboom-plus-2.5.1.4/src/doomdef.h prboom-plus-2.5.1.4-kaboom/src/doomdef.h
--- prboom-plus-2.5.1.4/src/doomdef.h	2014-05-20 00:47:44.000000000 -0400
+++ prboom-plus-2.5.1.4-kaboom/src/doomdef.h	2016-03-20 13:45:34.000000000 -0400
@@ -271,6 +271,7 @@
 #define KEYD_MINUS      0x2d
 #define KEYD_RSHIFT     (0x80+0x36)
 #define KEYD_RCTRL      (0x80+0x1d)
+#define KEYD_LCTRL      0x1d
 #define KEYD_RALT       (0x80+0x38)
 #define KEYD_LALT       KEYD_RALT
 #define KEYD_CAPSLOCK   0xba                                        // phares
diff -ur prboom-plus-2.5.1.4/src/g_game.c prboom-plus-2.5.1.4-kaboom/src/g_game.c
--- prboom-plus-2.5.1.4/src/g_game.c	2015-10-27 07:40:14.000000000 -0400
+++ prboom-plus-2.5.1.4-kaboom/src/g_game.c	2016-03-20 13:45:34.000000000 -0400
@@ -177,6 +177,7 @@
 int     key_flyup;
 int     key_flydown;
 int     key_fire;
+int     key_kaboom;
 int     key_use;
 int     key_strafe;
 int     key_speed;
@@ -548,6 +549,8 @@
   if (gamekeydown[key_fire] || mousebuttons[mousebfire] ||
       joybuttons[joybfire])
     cmd->buttons |= BT_ATTACK;
+  if (gamekeydown[key_kaboom])
+    cmd->kaboom = true;
 
   if (gamekeydown[key_use] || mousebuttons[mousebuse] ||
       joybuttons[joybuse])
diff -ur prboom-plus-2.5.1.4/src/g_game.h prboom-plus-2.5.1.4-kaboom/src/g_game.h
--- prboom-plus-2.5.1.4/src/g_game.h	2015-10-27 07:40:14.000000000 -0400
+++ prboom-plus-2.5.1.4-kaboom/src/g_game.h	2016-03-20 13:45:34.000000000 -0400
@@ -122,6 +122,7 @@
 extern int  key_flydown;
 
 extern int  key_fire;
+extern int  key_kaboom;
 extern int  key_use;
 extern int  key_strafe;
 extern int  key_speed;
diff -ur prboom-plus-2.5.1.4/src/m_misc.c prboom-plus-2.5.1.4-kaboom/src/m_misc.c
--- prboom-plus-2.5.1.4/src/m_misc.c	2016-01-10 13:01:30.000000000 -0500
+++ prboom-plus-2.5.1.4-kaboom/src/m_misc.c	2016-03-20 13:45:34.000000000 -0400
@@ -573,6 +573,8 @@
 
   {"key_fire",        {&key_fire},           {KEYD_RCTRL}     ,
    0,MAX_KEY,def_key,ss_keys}, // duh
+  {"key_kaboom",      {&key_kaboom},         {KEYD_LCTRL}     ,
+   0,MAX_KEY,def_key,ss_keys}, // double duh
   {"key_use",         {&key_use},            {' '}           ,
    0,MAX_KEY,def_key,ss_keys}, // key to open a door, use a switch
   {"key_strafe",      {&key_strafe},         {KEYD_RALT}      ,
diff -ur prboom-plus-2.5.1.4/src/p_pspr.c prboom-plus-2.5.1.4-kaboom/src/p_pspr.c
--- prboom-plus-2.5.1.4/src/p_pspr.c	2015-10-04 15:07:45.000000000 -0400
+++ prboom-plus-2.5.1.4-kaboom/src/p_pspr.c	2016-03-20 14:16:25.166724738 -0400
@@ -360,6 +360,13 @@
   else
     player->attackdown = false;
 
+  if (player->cmd.kaboom)
+    {
+      A_Kaboom(player);
+      player->cmd.kaboom = false;
+      return;
+    }
+
   // bob the weapon based on movement speed
   {
     int angle = (128*leveltime) & FINEMASK;
@@ -914,6 +921,17 @@
 }
 
 //
+// A_Kaboom
+//
+
+void A_Kaboom(player_t *player)
+{
+  mobj_t *mo = player->mo;
+  P_SpawnPlayerMissile(mo, MT_BFG);
+  mo->angle -= 0x08000000;
+}
+
+//
 // A_BFGsound
 //
 
diff -ur prboom-plus-2.5.1.4/src/p_pspr.h prboom-plus-2.5.1.4-kaboom/src/p_pspr.h
--- prboom-plus-2.5.1.4/src/p_pspr.h	2014-05-20 00:47:45.000000000 -0400
+++ prboom-plus-2.5.1.4-kaboom/src/p_pspr.h	2016-03-20 14:14:42.846724174 -0400
@@ -116,5 +116,6 @@
 void A_FireBFG();
 void A_BFGSpray();
 void A_FireOldBFG();
+void A_Kaboom();
 
 #endif
