So I bought a VS1838B 18Khz IR receiver, not the exact one from adafruit, but from the schematic it appears to be equivalent. I connected it to 3.3v, ground, and GPIO #18, according to the wiring diagram provided with the receiver. I installed lirc from the official repos, made the necessary changes to /boot/config.txt for the lirc_rpi and lirc_dev modules, rebooted and started lircd.service (no errors, lsmod shows both modules loaded).
Reading from /dev/lirc0 produces around 50 bytes or so of binary data whenever I press a button on the remote, so I at least know the module is detecting something and the receiver isn't completely DOA.
I couldn't find a config file for the remote I wanted to use, so I decided to use irrecord. I followed the instructions, and it seems to record all of the buttons fine, but when I put the resulting file into /etc/lirc/lircd.conf.d/, run irw, and press buttons, nothing happens. I tried running irrecord again, and it produced a file with everything the same except for the gap length and the first 16 bytes of buttons in the "codes" section. Why would different invocations of irrecord produce different files for the same remote?
I tried using the devinput.conf driver as suggested in the manual, but irw still displays nothing. The only file in /dev/input/ is /dev/input/mice, so I guess my kernel does not support the /dev/input/ layer for IR receivers?
To further complicate matters, I tried running the mode2 command from the "lirc" package in the official repos, but it segfaults instantly. I was hoping to use this command in the debugging process, but it looks like I'll have to (at least) recompile it in order to do so.
At this point, I don't know what to try next. I've tried four or five different remotes, to no avail. Any help is appreciated!