import usb_hid
from adafruit_hid.keyboard import Keyboard
from adafruit_hid.keycode import Keycode
from adafruit_hid.consumer_control import ConsumerControl
from adafruit_hid.consumer_control_code import ConsumerControlCode

import board
import digitalio
import time

kbd = Keyboard(usb_hid.devices)
cc = ConsumerControl(usb_hid.devices)
x = 0.3

button1 = digitalio.DigitalInOut(board.GP0)  # assining the responding pin on the rpi pico to a name
button2 = digitalio.DigitalInOut(board.GP1)
button3 = digitalio.DigitalInOut(board.GP2)
button4 = digitalio.DigitalInOut(board.GP3)
button5 = digitalio.DigitalInOut(board.GP4)
button6 = digitalio.DigitalInOut(board.GP5)
button7 = digitalio.DigitalInOut(board.GP6)
button8 = digitalio.DigitalInOut(board.GP7)
button9 = digitalio.DigitalInOut(board.GP8)
button10 = digitalio.DigitalInOut(board.GP9)
button11 = digitalio.DigitalInOut(board.GP10)
button12 = digitalio.DigitalInOut(board.GP11)
button13 = digitalio.DigitalInOut(board.GP12)
button14 = digitalio.DigitalInOut(board.GP13)
button15 = digitalio.DigitalInOut(board.GP14)
button16 = digitalio.DigitalInOut(board.GP15)
button17 = digitalio.DigitalInOut(board.GP16)
button18 = digitalio.DigitalInOut(board.GP17)
button19 = digitalio.DigitalInOut(board.GP18)
button20 = digitalio.DigitalInOut(board.GP19)
button21 = digitalio.DigitalInOut(board.GP20)
button22 = digitalio.DigitalInOut(board.GP21)

button1.switch_to_input(pull=digitalio.Pull.DOWN)  # defining the the buttons to ne push buttons 
button2.switch_to_input(pull=digitalio.Pull.DOWN)
button3.switch_to_input(pull=digitalio.Pull.DOWN)
button4.switch_to_input(pull=digitalio.Pull.DOWN)
button5.switch_to_input(pull=digitalio.Pull.DOWN)
button6.switch_to_input(pull=digitalio.Pull.DOWN)
button7.switch_to_input(pull=digitalio.Pull.DOWN)
button8.switch_to_input(pull=digitalio.Pull.DOWN)
button9.switch_to_input(pull=digitalio.Pull.DOWN)
button10.switch_to_input(pull=digitalio.Pull.DOWN)
button11.switch_to_input(pull=digitalio.Pull.DOWN)
button12.switch_to_input(pull=digitalio.Pull.DOWN)
button13.switch_to_input(pull=digitalio.Pull.DOWN)
button14.switch_to_input(pull=digitalio.Pull.DOWN)
button15.switch_to_input(pull=digitalio.Pull.DOWN)
button16.switch_to_input(pull=digitalio.Pull.DOWN)
button17.switch_to_input(pull=digitalio.Pull.DOWN)
button18.switch_to_input(pull=digitalio.Pull.DOWN)
button19.switch_to_input(pull=digitalio.Pull.DOWN)
button20.switch_to_input(pull=digitalio.Pull.DOWN)
button21.switch_to_input(pull=digitalio.Pull.DOWN)
button22.switch_to_input(pull=digitalio.Pull.DOWN)

while True:
    if button1.value:  #if the buttons is pressed
        kbd.send(Keycode.ONE)  #the rpi pico sends the signale coresponding to a 1
        time.sleep(x)
    if button2.value:
        kbd.send(Keycode.F1) #the rpi pico sends the signale coresponding to a F1
        time.sleep(x)
    if button3.value:
        kbd.send(Keycode.ALT, Keycode.KEYPAD_ONE) #the rpi pico sends the signale coresponding to ctrl and 1 on the numpad
        time.sleep(x)
    if button4.value:
        kbd.send(Keycode.FOUR)
        time.sleep(x)
    if button5.value:
        kbd.send(Keycode.FIVE)
        time.sleep(x)
    if button6.value:
        kbd.send(Keycode.SIX)
        time.sleep(x)
    if button7.value:
        kbd.send(Keycode.SEVEN)
        time.sleep(x)
    if button8.value:
        kbd.send(Keycode.EIGHT)
        time.sleep(x)
    if button9.value:
        kbd.send(Keycode.NINE)
        time.sleep(x)
    if button10.value:
        kbd.send(Keycode.ONE)
        kbd.send(Keycode.ZERO)
        time.sleep(x)
    if button11.value:
        kbd.send(Keycode.ONE)
        kbd.send(Keycode.ONE)
        time.sleep(x)
    if button12.value:
        kbd.send(Keycode.ONE)
        kbd.send(Keycode.TWO)
        time.sleep(x)
    if button13.value:
        kbd.send(Keycode.ALT, Keycode.KEYPAD_ONE)
        time.sleep(x)
    if button14.value:
        kbd.send(Keycode.ALT, Keycode.KEYPAD_THREE)
        time.sleep(x)
    if button15.value:
        kbd.send(Keycode.ALT, Keycode.KEYPAD_FOUR)
        time.sleep(x)
    if button16.value:
        kbd.send(Keycode.ALT, Keycode.KEYPAD_SIX)
        time.sleep(x)
    if button17.value:
        kbd.send(Keycode.ALT, Keycode.KEYPAD_EIGHT)
        time.sleep(x)
    if button18.value:
        kbd.send(Keycode.ALT, Keycode.KEYPAD_ZERO)
        time.sleep(x)
    if button19.value:
        kbd.send(Keycode.ALT, Keycode.KEYPAD_TWO)
        time.sleep(x)
    if button20.value:
        kbd.send(Keycode.ALT, Keycode.KEYPAD_FIVE)
        time.sleep(x)
    if button21.value:
        kbd.send(Keycode.ALT, Keycode.KEYPAD_SEVEN)
        time.sleep(x)
    if button22.value:
        kbd.send(Keycode.ALT, Keycode.KEYPAD_NINE)
        time.sleep(x)
    