Solution

while True:
    if button.value is True: 
        if current_state is state_wait:
            keyboard.press(key)  # Send our defined key as a command...
            print("button is pressed") #Print a confirmation in the serial monitor
            keyboard.release_all()  # and release all keys again
      
            current_state = state_button_is_pressed # Update our state
        
    elif button.value is False:
        if current_state is state_button_is_pressed:
            print("button is released") # Print a confirmation in the serial monitor
            current_state = state_wait # Reset the state
      
         # Sleep briefly so keypress events occur at a human timescale.
         # Skilled users can manage ~7 button presses per second, so we
         # sample at roughly twice that rate to satisfy the Nyquist criterion.

    time.sleep(0.07)