diff --git a/retroarch.c b/retroarch.c
index b08eeee0f2..5d32eea940 100644
--- a/retroarch.c
+++ b/retroarch.c
@@ -3061,6 +3061,16 @@ int16_t input_driver_input_state(
    return 0;
 }
 
+#define INPUT_KEYS_CHECK(cond1, cond2, cond3) \
+   for (i = cond1; i < cond2; i++) \
+   { \
+      bool bit_pressed = !cond3 && binds[i].valid && current_input->input_state(current_input_data, joypad_info, &binds, 0, RETRO_DEVICE_JOYPAD, 0, i); \
+      if (bit_pressed || input_keys_pressed_iterate(i, p_new_state)) \
+      { \
+         BIT256_SET_PTR(p_new_state, i); \
+      } \
+   }
+
 /**
  * input_keys_pressed:
  *
@@ -3121,42 +3131,12 @@ static void input_keys_pressed(input_bits_t *p_new_state)
    }
 
    /* Check the libretro input first */
-   if (!input_driver_block_libretro_input)
-   {
-      for (i = 0; i < RARCH_FIRST_META_KEY; i++)
-      {
-         bool bit_pressed = 
-            binds[i].valid && current_input->input_state(current_input_data,
-                  joypad_info, &binds,
-                  0, RETRO_DEVICE_JOYPAD, 0, i);
-
-         if (
-               bit_pressed || 
-               input_keys_pressed_iterate(i, p_new_state))
-         {
-            BIT256_SET_PTR(p_new_state, i);
-         }
-      }
-   }
+   INPUT_KEYS_CHECK(0, RARCH_FIRST_META_KEY,
+         input_driver_block_libretro_input);
 
    /* Check the hotkeys */
-   if (!input_driver_block_hotkey)
-   {
-      for (i = RARCH_FIRST_META_KEY; i < RARCH_BIND_LIST_END; i++)
-      {
-         bool bit_pressed = 
-            binds[i].valid && current_input->input_state(current_input_data,
-                  joypad_info, &binds,
-                  0, RETRO_DEVICE_JOYPAD, 0, i);
-
-         if (
-               bit_pressed || 
-               input_keys_pressed_iterate(i, p_new_state))
-         {
-            BIT256_SET_PTR(p_new_state, i);
-         }
-      }
-   }
+   INPUT_KEYS_CHECK(RARCH_FIRST_META_KEY, RARCH_BIND_LIST_END,
+         input_driver_block_hotkey);
 }
 
 void input_get_state_for_port(void *data, unsigned port,