There is no standard matrix layout. It isn't simple either, traces make zigzags to avoid ghosting in common key combinations.
0xAA is self-test-ok, maybe you've got the bits backwards?
At any rate, I would just connect it to some host and see what it does to initialize it and do the same.
If you kb supports it, you could avoid dealing with the idiotic extended scancodes and things like 0xE0 0xF0 0x7C 0xE0 0xF0 0x12 by switching to scancode set 3. Google it, I guess.
edit
This is my favorite, highly detailed reference on old PC keyboards.
https://www.win.tue.nl/~aeb/linux/kbd/scancodes.htmlSee table in 1.2 for non-scancode messages the keyboard may send.
Chapter 12 deals with commands you can send to the kb.
Chapter 10 is scancode maps in various scancode sets. Use set 2 for compatibility with any random keyboard, use set 3 to save your sanity if you can.
Whenever they speak of translated/untranslated, untranslated is the raw bits from the wire and translated refers to what software sees after the bits pass through the byzantine hardware of the PC. Ignore this nonsense when building your own host.