diff --git a/source/ArmarXGui/applications/ArmarXGui/CMakeLists.txt b/source/ArmarXGui/applications/ArmarXGui/CMakeLists.txt
index 2c734ff00cb89406b4ece73ef4d6707e42b16601..8fbbc25929025a09424afed9cec1226887e01561 100644
--- a/source/ArmarXGui/applications/ArmarXGui/CMakeLists.txt
+++ b/source/ArmarXGui/applications/ArmarXGui/CMakeLists.txt
@@ -40,6 +40,10 @@ set(HEADERS ArmarXGuiApp.h
     Widgets/GuiUseCaseSelector.ui
 )
 
+if ( CMAKE_COMPILER_IS_GNUCC )
+    set(CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS} -Wno-error=deprecated-enum-enum-conversion")
+endif()
+
 find_package(OpenMP)
 if (OPENMP_FOUND)
     set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
diff --git a/source/ArmarXGui/applications/ArmarXGui/Widgets/EmergencyStopWidget.cpp b/source/ArmarXGui/applications/ArmarXGui/Widgets/EmergencyStopWidget.cpp
index b50889f201da98dee4b69cf55df7c3c1d9f69e16..db34724ea0c4b0d261d9a3613923a8199dbbf04d 100644
--- a/source/ArmarXGui/applications/ArmarXGui/Widgets/EmergencyStopWidget.cpp
+++ b/source/ArmarXGui/applications/ArmarXGui/Widgets/EmergencyStopWidget.cpp
@@ -35,14 +35,18 @@ namespace armarx
     EmergencyStopWidget::EmergencyStopWidget(QWidget* parent, ArmarXMainWindow* mainWindow) :
         mainWindow(mainWindow),
         iconNormal(QPixmap::fromImage(QImage(QString::fromUtf8(":/icons/emergency-stop.png")))),
-        iconDark(QPixmap::fromImage(QImage(QString::fromUtf8(":/icons/emergency-stop-dark.png")))), timer(new QTimer(this))
+        iconDark(QPixmap::fromImage(QImage(QString::fromUtf8(":/icons/emergency-stop-dark.png")))),
+        timer(new QTimer(this))
     {
         qRegisterMetaType<EmergencyStopState>("EmergencyStopState");
 
 
         timer->setInterval(std::chrono::milliseconds(100));
         connect(timer, &QTimer::timeout, this, &EmergencyStopWidget::updateEmergencyStopState);
-        connect(this, &EmergencyStopWidget::startPeriodicStateUpdate, timer, qOverload<>(&QTimer::start));
+        connect(this,
+                &EmergencyStopWidget::startPeriodicStateUpdate,
+                timer,
+                qOverload<>(&QTimer::start));
         connect(this, &EmergencyStopWidget::stopPeriodicStateUpdate, timer, &QTimer::stop);
         QIcon icon;
         icon.addPixmap(iconNormal, QIcon::Normal, QIcon::Off);
@@ -60,12 +64,16 @@ namespace armarx
         layout->setMargin(0);
         layout->setContentsMargins(0, 0, 0, 0);
         this->getWidget()->setLayout(gridLayout);
-        emergencyStopShortcut = new QShortcut(this->getWidget());
-        emergencyStopShortcut->setContext(Qt::ApplicationShortcut);
-        emergencyStopShortcut->setKey(Qt::Key_Pause);
-        connect(emergencyStopShortcut, SIGNAL(activated()), this, SLOT(clicked()));
 
-        connect(button, SIGNAL(clicked(bool)), this, SLOT(clicked(bool)));
+        enableSS2Shortcut = new QShortcut(this->getWidget());
+        enableSS2Shortcut->setContext(Qt::ApplicationShortcut);
+        enableSS2Shortcut->setKey(Qt::Key_Pause);
+
+        releaseSS2Shortcut = new QShortcut(this->getWidget());
+        releaseSS2Shortcut->setContext(Qt::ApplicationShortcut);
+        releaseSS2Shortcut->setKey(Qt::SHIFT | Qt::Key_Pause);
+
+        connect(button, &QPushButton::clicked, this, &EmergencyStopWidget::clicked);
         std::stringstream str;
         str << "After EmergencyStop was activated, you have to wait "
             << deactivationWaitPeriod.count() << " ms before you can deactivate it.";
@@ -91,6 +99,9 @@ namespace armarx
         emergencyStopMasterPrx = getProxy<EmergencyStopMasterInterfacePrx>(EMERGENCY_STOP_PROXY);
         QMetaObject::invokeMethod(button, "setVisible", Qt::QueuedConnection, Q_ARG(bool, true));
 
+        connect(enableSS2Shortcut, &QShortcut::activated, this, &EmergencyStopWidget::enableSS2);
+        connect(releaseSS2Shortcut, &QShortcut::activated, this, &EmergencyStopWidget::releaseSS2);
+
         QMetaObject::invokeMethod(
             this,
             "setChecked",
@@ -118,32 +129,52 @@ namespace armarx
     {
     }
 
-//    void EmergencyStopWidget::reportEmergencyStopState(EmergencyStopState state, const Ice::Current&)
-//    {
-//        QMetaObject::invokeMethod(this, "setChecked", Qt::QueuedConnection, Q_ARG(EmergencyStopState, state));
-//    }
+    //    void EmergencyStopWidget::reportEmergencyStopState(EmergencyStopState state, const Ice::Current&)
+    //    {
+    //        QMetaObject::invokeMethod(this, "setChecked", Qt::QueuedConnection, Q_ARG(EmergencyStopState, state));
+    //    }
 
     void
-    EmergencyStopWidget::clicked(bool checked)
+    EmergencyStopWidget::enableSS2()
     {
-        EmergencyStopState state = emergencyStopMasterPrx->getEmergencyStopState();
-        switch (state)
+        if (emergencyStopMasterPrx)
         {
-            case EmergencyStopState::eEmergencyStopActive:
-                if (clock_t::now() > timeLastActivated + deactivationWaitPeriod)
-                {
-                    emergencyStopMasterPrx->setEmergencyStopState(
-                        EmergencyStopState::eEmergencyStopInactive);
-                }
-                else
-                {
-                    button->setChecked(true);
-                }
-                break;
-            case EmergencyStopState::eEmergencyStopInactive:
+            emergencyStopMasterPrx->setEmergencyStopState(EmergencyStopState::eEmergencyStopActive);
+        }
+    }
+
+    void
+    EmergencyStopWidget::releaseSS2()
+    {
+        if (clock_t::now() > timeLastActivated + deactivationWaitPeriod)
+        {
+            if (emergencyStopMasterPrx)
+            {
                 emergencyStopMasterPrx->setEmergencyStopState(
-                    EmergencyStopState::eEmergencyStopActive);
-                break;
+                    EmergencyStopState::eEmergencyStopInactive);
+            }
+        }
+        else
+        {
+            button->setChecked(true);
+        }
+    }
+
+    void
+    EmergencyStopWidget::clicked(bool checked)
+    {
+        if (emergencyStopMasterPrx)
+        {
+            EmergencyStopState state = emergencyStopMasterPrx->getEmergencyStopState();
+            switch (state)
+            {
+                case EmergencyStopState::eEmergencyStopActive:
+                    releaseSS2();
+                    break;
+                case EmergencyStopState::eEmergencyStopInactive:
+                    enableSS2();
+                    break;
+            }
         }
     }
 
@@ -173,9 +204,18 @@ namespace armarx
     void
     EmergencyStopWidget::updateEmergencyStopState()
     {
-        if (emergencyStopMasterPrx)
+        try
         {
-            setChecked(emergencyStopMasterPrx->getEmergencyStopState());
+            if (emergencyStopMasterPrx)
+            {
+                setChecked(emergencyStopMasterPrx->getEmergencyStopState());
+            }
+        }
+        catch (Ice::Exception const& e)
+        {
+            ARMARX_ERROR << "Could not query SS2 state." << deactivateSpam(2);
+            setChecked(EmergencyStopState::eEmergencyStopActive);
         }
     }
+
 } // namespace armarx
diff --git a/source/ArmarXGui/applications/ArmarXGui/Widgets/EmergencyStopWidget.h b/source/ArmarXGui/applications/ArmarXGui/Widgets/EmergencyStopWidget.h
index 37c984dd231889cf238d9b4800f6a7d112e901a6..64e0111a5510afd132354d5ec812dad04ca62561 100644
--- a/source/ArmarXGui/applications/ArmarXGui/Widgets/EmergencyStopWidget.h
+++ b/source/ArmarXGui/applications/ArmarXGui/Widgets/EmergencyStopWidget.h
@@ -42,20 +42,21 @@ namespace armarx
 {
     class ArmarXMainWindow;
 
-    class EmergencyStopWidget :
-        public ArmarXComponentWidgetControllerTemplate<EmergencyStopWidget>
+    class EmergencyStopWidget : public ArmarXComponentWidgetControllerTemplate<EmergencyStopWidget>
     {
         Q_OBJECT
     public:
         explicit EmergencyStopWidget(QWidget* parent = 0, ArmarXMainWindow* mainWindow = 0);
         QWidget* getButtonWidget();
-//        void reportEmergencyStopState(EmergencyStopState, const Ice::Current&) override;
+        //        void reportEmergencyStopState(EmergencyStopState, const Ice::Current&) override;
 
     signals:
         void startPeriodicStateUpdate();
         void stopPeriodicStateUpdate();
 
     public slots:
+        void enableSS2();
+        void releaseSS2();
         void clicked(bool = true);
 
         // ManagedIceObject interface
@@ -76,7 +77,8 @@ namespace armarx
         QPixmap iconDark;
         QToolButton* button;
         QAction* emergencyStopAction;
-        QShortcut* emergencyStopShortcut;
+        QShortcut* enableSS2Shortcut;
+        QShortcut* releaseSS2Shortcut;
 
         EmergencyStopMasterInterfacePrx emergencyStopMasterPrx;