From 12077fb819a10990a3165adb387a3cc77faef0cc Mon Sep 17 00:00:00 2001
From: yboucher <yann.boucher@etu.utc.fr>
Date: Fri, 11 Jun 2021 23:02:30 +0200
Subject: [PATCH] =?UTF-8?q?On=20peut=20maintenant=20jouer=20=C3=A0=20Snake?=
 =?UTF-8?q?=20avec=20les=20fl=C3=A8ches?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/interface.cpp | 19 +++++++++++--------
 1 file changed, 11 insertions(+), 8 deletions(-)

diff --git a/src/interface.cpp b/src/interface.cpp
index 09e673b..862c2f1 100644
--- a/src/interface.cpp
+++ b/src/interface.cpp
@@ -750,9 +750,12 @@ void MainWindow::play_snake()
 
     on_pushButton_clicked(); // reset la grille
 
+    QWidget::grabKeyboard();
+
     static auto restore = [&]
     {
         ui_update_alphabet(simulation.getAlphabet());
+        QWidget::releaseKeyboard();
         snake_timer.stop();
         on_pushButton_clicked(); // reset la grille
     };
@@ -889,26 +892,26 @@ void MainWindow::closeEvent(QCloseEvent *e)
 
 void MainWindow::keyPressEvent(QKeyEvent *event)
 {
-    if (event->key() == Qt::Key_Q)
+    if (event->key() == Qt::Key_Q || event->key() == Qt::Key_Left)
         m_arrow_key_state[0] = true;
-    if (event->key() == Qt::Key_S)
+    if (event->key() == Qt::Key_S || event->key() == Qt::Key_Down)
         m_arrow_key_state[1] = true;
-    if (event->key() == Qt::Key_D)
+    if (event->key() == Qt::Key_D || event->key() == Qt::Key_Right)
         m_arrow_key_state[2] = true;
-    if (event->key() == Qt::Key_Z)
+    if (event->key() == Qt::Key_Z || event->key() == Qt::Key_Up)
         m_arrow_key_state[3] = true;
     QMainWindow::keyPressEvent(event);
 }
 
 void MainWindow::keyReleaseEvent(QKeyEvent *event)
 {
-    if (event->key() == Qt::Key_Q)
+    if (event->key() == Qt::Key_Q || event->key() == Qt::Key_Left)
         m_arrow_key_state[0] = false;
-    if (event->key() == Qt::Key_S)
+    if (event->key() == Qt::Key_S || event->key() == Qt::Key_Down)
         m_arrow_key_state[1] = false;
-    if (event->key() == Qt::Key_D)
+    if (event->key() == Qt::Key_D || event->key() == Qt::Key_Right)
         m_arrow_key_state[2] = false;
-    if (event->key() == Qt::Key_Z)
+    if (event->key() == Qt::Key_Z || event->key() == Qt::Key_Up)
         m_arrow_key_state[3] = false;
     QMainWindow::keyReleaseEvent(event);
 }
-- 
GitLab