Stuck making multi, many button, joysticks
Each ShiftIn instance handles just one connection. You need to make multiple instances.

ShiftIn shift1&lt;3&gt;;
ShiftIn shift2&lt;3&gt;;
ShiftIn shift3&lt;3&gt;;


Then you begin each of them:

void setup() {      
    shift1.begin(8, 9, 11, 12); 
    shift2.begin(7, 6, 5, 4); 
    shift3.begin(3, 2, 1, 0);
    ... etc ...
}


Each shiftx is a completely separate entity. You can just repeat your block of code for each shift object:

if (shift1.update()) {
    for (int i = 0; i &lt; shift1.getDataWidth(); i++)
    Joystick[0].setButton(i, shift1.state(i)); 
}

if (shift2.update()) {
    for (int i = 0; i &lt; shift2.getDataWidth(); i++)
    Joystick[1].setButton(i, shift2.state(i)); 
}

if (shift3.update()) {
    for (int i = 0; i &lt; shift3.getDataWidth(); i++)
    Joystick[2].setButton(i, shift3.state(i)); 
}


You could arrange the ShiftIn objects into an array like you do with your Joystick objects and then loop through them, but that is pretty pointless for just three of them.