Still lost on kbhit. But I will explain how getch works so someone might not have to go through what I went through to find it. You have to initialize a variable, I'll call it scemo and then set it equal to getch(), and the character they input will be set to 'scem0'. So it would look kind of like this. The conio.h header is not available in Mac OS X by default. And simply adding the header to your project is only going to get you past compile time errors. You'll still fail during linking unless you have some library that implements the functions declared in conio.h.
Getcunlocked and getcharunlocked functions conform to IEEE Std 1003.1-2001 (POSIX.1). So every.nix (mac is.nix below the hood) should have them as part of the base system. (in linux, it would be in glibc.) ' getcunlocked and getcharunlockedfunctions are equivalent to getc & getchar respectively, except that the caller is responsible for locking the stream with flockfile(3) before calling them. These functions may be used to avoid the overhead of locking the stream for each character, and to avoid input being dispersed among multiple threads reading from the same stream.'
- from freebsd man pages. I guess most.nix implementations would implement getchar as flockfile, getcharunlocked, un flockfile.