I know with other distributions of Linux you can use fingerprint readers to login instead of using a password. Is it possible to do this on the Raspberry Pi using like a 4x4 membrane keypad with my own program?
There are several ways of doing what you want.
The most straightforward way is to emulate an input device using your keypad. A Python script using
uinput was already mentioned. There are tools like
inputattach which do this kind of conversion for popular devices such as old mice/joysticks with UART interface.
The second solution is to introduce an alternative login method. For console logins it is possible to write a custom
login script which reads the password from the keypad, and configure
getty to use that script instead of the original
login, or replace
getty with a custom script which runs an actual
getty only after getting a password from the keypad. For GUI logins there is a similar way to login using custom
pam modules for unusual login devices such as smart cards.
Finally, a less secure but easier to set up solution is to enable autologin, but instantly lock out the user using an autorun / screensaver script. That script would then unlock the screen only after the correct input comes from the keypad.
To interface with the main input, you could write a python program using the GPIO and the
uinput module. This makes it easy to create your own keypads. Install with the command
sudo pip install uinput. For info on the module, please see here.