user57812: Is there a way I can have my arduino uno differentiate between pushbuttons that are wired through a shift register and detect when each are pressed or not? I found this tutorial for the 74HC165 but I'm not sure it's applicable to the 74HC595.

user61931: The 74HC595 is a deserializer while the 74HC165 is a serializer. This means the former consumes a serial datastream and provides all data bits in parallel on dedicated data lines. While the latter consumes parallel data and converts it to a serial datastream.
To scan buttons you want to have parallel input data, where each switch is attached to a single data line. Then you serialize the data to reduce the amount of required Arduino inputs. This method is well explained in the mentioned tutorial.
As the 74HC595 is a deserializer it is not really applicable here. Instead you could use it to drive multiple outputs through a serial interface (see https://www.arduino.cc/en/tutorial/ShiftOut as an example).

57812: <p>Is there a way I can have my arduino uno differentiate between pushbuttons that are wired through a shift register and detect when each are pressed or not? I found <a href="https://infectedbytes.com/2016/07/arduino-shiftin.html" rel="nofollow noreferrer">this</a> tutorial for the 74HC165 but I'm not sure it's applicable to the 74HC595.</p>
 61931: <p>The <a href="http://www.ti.com/lit/ds/scls041i/scls041i.pdf" rel="nofollow noreferrer">74HC595</a> is a <em>deserializer</em> while the 74HC165 is a <em>serializer</em>. This means the former consumes a serial datastream and provides all data bits in parallel on dedicated data lines. While the latter consumes parallel data and converts it to a serial datastream.</p>

<p>To scan buttons you want to have parallel input data, where each switch is attached to a single data line. Then you serialize the data to reduce the amount of required Arduino inputs. This method is well explained in the mentioned tutorial.</p>

<p>As the 74HC595 is a deserializer it is not really applicable here. Instead you could use it to drive multiple outputs through a serial interface (see <a href="https://www.arduino.cc/en/tutorial/ShiftOut" rel="nofollow noreferrer">https://www.arduino.cc/en/tutorial/ShiftOut</a> as an example).</p>
