Hi Guys,
First of all thanks for that code, it gives me the change to reuse my old IBM-M Keyboard AND hopefully solve the problem i have with it (with a normal PS2/USB converter).
 
I am using an keyboard with US-layout, but with the German(Swiss) keyboard-layout on Linux and Windows-7. This works great, because i am able to use it in the "10-finger" system without looking on the keys. So i am not confused when other characters appear then i am hitting on :biggrin:
The problem i have is the fact that i am missing a key on my keyboard. On a European 102-key keyboard, there is a key between the LSHIFT and "Z" with "<", ">" and "\" on it. 
So with the SwissGerman-Layout, there is no proper way to produce this three keys.  
I've found the way with replacing for example KB_VOLD with KB_NONUS_BSLASH. But i don't like that, because i have to use a lot of fingers to reach "\". FN1 + ALT + X
What i would like to do is catching the following key-sequences and replace them:
KB_RALT + Z -- replace with --> KB_RALT + KB_NONUS_BSLASH      --> "\"
KB_RALT + X -- replace with --> KB_NONUS_BSLASH                        --> "<" 
KB_RALT + C -- replace with --> KB_RSHIFT + KB_NONUS_BSLASH --> ">"
I have a partial solution, but i does not work as expected, and i am not sure if i used the right place in the code to make my modifications. 
keyboard.h:
#include <stdbool.h>
bool ralt_rec;
keyboard.c
            if (code == KB_RALT) {
               ralt_rec = true;
            }
            if (code == KB_NO) {
                // do nothing
            } else if (IS_MOD(code)) {
                host_add_mod_bit(MOD_BIT(code));
            } else if (IS_FN(code)) {
                fn_bits |= FN_BIT(code);
            }
            // Ugly hack to simulate the missing 102-european-key on IBM-M Keyboard
            // ">" on key "C"
            else if (( code == KB_C) && ( ralt_rec == true )) {
                host_add_key(KB_RSHIFT);
                host_add_key(KB_NONUS_BSLASH);
                _delay_ms(200);
                ralt_rec = false;
            // "<" on key "X"
            } else if (( code == KB_X) && ( ralt_rec == true )) {
                host_add_key(KB_NONUS_BSLASH);
                _delay_ms(200);
                ralt_rec = false;
            // "\" on key "Z"
            } else if (( code == KB_Z) && ( ralt_rec == true )) {
                host_add_key(KB_RALT);
                host_add_key(KB_NONUS_BSLASH);
                _delay_ms(200);
                ralt_rec = false;
            }
            else if (IS_KEY(code)) {
                host_add_key(code);
            }
#ifdef MOUSEKEY_ENABLE
            else if (IS_MOUSEKEY(code)) {
                mousekey_decode(code);
            }
It works, but only when i release the RightAlt key before i press one of the other keys. Together with RALT it always gives me "\". 
I think, i didn't choose the proper way to do that, but i am a little bit lost in the code and don't know how to solve it. 
I am using a original Teensy++
 
Thanks for any help.
Daniel