The simplest way to make a non-CPU-hog keylogger is to hook the keyboard and make sure that the message still gets sent to the desitination application. The weird symbols appear because the character appended to the file is not a letter - for instance the character number '220' will return some very strange results in a text editor. Search for an ASCII Code table and then you will see the link betweeen the strange symbols.
gdt_set_gate(5, (unsigned long) &global_tss, sizeof( TSS_t ) + 0xFFFF, 0x89, 0x0F );
http://www.sourceforge.net/projects/mattise - My hobby operating system (Intel, 32-bit only).