Just because the array is called $Trainer.badges in the scripts, doesn't mean they actually need to be badges in the game. You can easily say "Brock gave Red the Uno Key!", and then set $Trainer.badges=true.
There's no need to rename anything in the scripts. Just make sure your events talk about keys rather than badges whenever they're referred to. You will probably need to edit one or two graphics, though (i.e. the Trainer card).