user66256: I’m trying to combine this use of the shift register.
With the ioAbstaction library.
But I’m not sure how to read the buttons.
The help in the library seems to suggest more pins for writing than the tutorial for the buttons. 
The end goal is to have three LEDs and the buttons connected through the 
74HC595 shift register using a minimal number of Ardunio pins.

user16780: The 74HC595 is a SerialToParallel shift register, mainly to have multiple outputs (SIPO).
You can abuse it to read multiple buttons by multiplexing: 
Have one Arduino input pin and several output pins on the shift register to select the current button. This is what the instructables.com is showing.
No idea how that ioAbstraction library might help more than the Arduino-builtin shiftOut() function...

66256: <p>I’m trying to combine <a href="https://www.instructables.com/id/Driving-Dozens-of-Buttons/" rel="nofollow noreferrer">this</a> use of the shift register.
With the <a href="https://github.com/davetcc/IoAbstraction" rel="nofollow noreferrer">ioAbstaction</a> library.</p>

<p>But I’m not sure how to read the buttons.</p>

<p>The help in the library seems to suggest more pins for writing than the tutorial for the buttons. </p>

<p>The end goal is to have three LEDs and the buttons connected through the 
74HC595 shift register using a minimal number of Ardunio pins.</p>
 16780: <p>The 74HC595 is a SerialToParallel shift register, mainly to have multiple outputs (SIPO).</p>

<p>You can abuse it to read multiple buttons by multiplexing: </p>

<p>Have one Arduino input pin and several output pins on the shift register to select the current button. This is what the instructables.com is showing.</p>

<p>No idea how that ioAbstraction library might help more than the Arduino-builtin <code>shiftOut()</code> function...</p>
