A brief explanation first. I'm still learning how to be a feral druid and a lot of my key-bindings may or may not be optimal. One is at level 56, the other is at level 67. So what works for me, may not make sense for you and vice-versa. My binds are based around being a bear druid first and foremost, but with the flexibility to do cat DPS without changing spec.

By default there are (5) button bars in World of Warcraft that can be visible using the default UI. In reality, there are a total of (10) button bars that get stored server-side associated with your character. Bars 6-10 are not normally visible unless you use an add-on like Dominos, and some of the bars are used by the game to swap out your primary bar when you change stances or forms. Hidden bar #7 is used to hold cat-form abilities, hidden bar #9 is used to hold bear-form abilities.

I have changed my bars and key-binds so that:

1-9, -, = are bound to button bar 1
Shift-# is button bar 2
Ctrl=# is button bar 3
Alt-# is button bar 4
No bindings at all for button bar 5

Stuff that I am going to press every GCD (global cool-down) should be on the primary button bar, stuff that I press a few times per fight tends to be on the shift-# bar, and things that I rarely press are on the alt-# bar. With axillary abilities where time is not of the essence stored on the 5th or additional bars that have no key bindings. The second half of that strategy is that frequently used abilities should be in the first six keys of the button bar so that you can easily use just your left hand to accurate hit the key-bind.

Things that get cast on friendly players like removing curses, I don't put on my button bars. Instead, I have VuhDo setup that I can just click the name-plate of the party member and it auto-casts the curse removal.

Button Bar 1 (key-bindings are the number keys, minus and equals)

Since bar #1 gets swapped out when you change forms, I'll list it twice. Lots of empty space here because of how I lay things out.

Here is my kitty bar:

1) Claw
2) Shred
3) Mangle
4) Rake
5) Swipe
6)
7)
8)
9)
0)
-) Tiger's Fury
=)

And the bear bar:

1)
2) Maul
3) Mangle
4) Lacerate
5) Swipe
6) Thrash
7)
8)
9)
0)
-) Enrage
=)

Bar 2 (Shift-#)

Almost all of the buttons on this bar are overloaded. My goal is that things that do a similar concept should be in a similar place. So things like skull bash and regular bash are shift-5 and shift-6 because they are spell interrupts (and I carry that over to my other classes).

1) Prowl [cat]
2) Ravage [stealth], Feral Charge [cat/bear]
3) Ferocious Bite [cat], Demoralizing Roar [bear]
4) Tiger's Fury -> Rip [cat], Pulverize [bear]
5) Skull Bash [cat/bear]
6) Maim [cat], Bash [bear]
7)
8)
9)
0)
-) Racial ability
=)

Shift-4 is a macro that casts Tiger's Fury first when I'm in cat form, then applies Rip to use up combo-points. I'm a lazy kitty and I get tired of forgetting to hit Tiger's Fury every 30 seconds. So I just macro it onto Rip.

Bar 3 (Ctrl-#)

Just like the shift-# bar, a lot of these are macros that change what happens based on my current stance.

1) Faerie Fire (Feral) [cat/bear], Faerie Fire [else]
2) Cower [cat], Growl [bear]
3) Challenging Roar [bear], Savage Roar [cat]
4) Stampeding Roar [bear/cat]
5)
6)
7)
8)
9)
0)
-)
=)

Bar 4 (Alt-#)

These tend to be my "oh no" buttons.

1) Barkskin
2) Survival Instincts
3) Frenzied Regeneration
4)
5)
6)
7)
8) Thorns
9) Entangling Roots
0) Hibernate
-) Revive
=) Rebirth

Macros

Bash:
#showtooltip
/cast [stance:3] Maim(Cat Form); [stance:1] Bash(Bear Form)

Chal:
#showtooltip
/cast [stance:3] Dash(Cat Form); [stance:1] Challenging Roar(Bear Form)

DRoar:
#showtooltip
/cast [stance:1] Demoralizing Roar(Bear Form); [stance:3] Ferocious Bite(Cat Form)

FFF:
#showtooltip
/cast [stance:1/3] Faerie Fire (Feral); Faerie Fire

Growl:
#showtooltip
/cast [stance:3] Cower; [stance:1] Growl

Mangle:
#showtooltip
/startattack
/cast [stance:1] Mangle(Bear Form); [stance:3] Mangle(Cat Form)

Maul:
#showtooltip
/startattack
/cast [stance:1]Maul(Bear Form); [stance:3] Shred

Pounce:
#showtooltip
/cast [stealth] Ravage; [stance:3] Feral Charge(Cat Form); [stance:1] Feral Charge(Bear Form)

Rake:
#showtooltip
/cast Rake

Rip-Pulverize:
#showtooltip Pulverize
/startattack
/console Sound_EnableSFX 0;
/cast [stance:3] Tiger's Fury
/console Sound_EnableSFX 1;
/script UIErrorsFrame:Clear()
/cast [stance:3] Rip; [stance:1] Pulverize(Bear Form)

SkBash:
#showtooltip
/cast [stance:3] Skull Bash(Cat Form); [stance:1] Skull Bash(Bear Form)

Swipe:
#showtooltip
/startattack
/cast [stance:1] Swipe(Bear Form); [stance:3] Swipe(Cat Form)

I find it handy to put /startattack on some of the abilities because it makes sure that I start auto-attacking the closest thing within melee range while button-mashing. Otherwise, in a pack of mobs, one will die and if I don't have enough energy/rage to start up another attack, I may sit there and not auto-attack the next target.