def setRowEvents(row, mode): global bounceTime global rowsWithColumns if mode == KEYPAD_MODE_READROWS: # Set row to IN if GPIO.gpio_function(row) == GPIO.IN: logging.warning("Pin " + str(row) + " already set to IN") GPIO.setup(row, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) # GPIO.add_event_detect(row, GPIO.RISING, callback=row_changed, bouncetime=bounceTime) # Set columns to OUT for column in rowsWithColumns[row]: if GPIO.gpio_function(column) == GPIO.OUT: logging.warning("Pin " + str(column) + " already set to OUT") else: GPIO.setup(column, GPIO.OUT, initial=1) else: # Set row to OUT # GPIO.remove_event_detect(row) if GPIO.gpio_function(row) == GPIO.OUT: logging.warning("Pin " + str(row) + " already set to OUT") else: GPIO.setup(row, GPIO.OUT, initial=1) # Set columns to IN for column in rowsWithColumns[row]: if GPIO.gpio_function(column) == GPIO.IN: logging.warning("Pin " + str(column) + " already set to IN") GPIO.setup(column, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)