AS people have already said you don't need to take guns away from law abiding people, what you need is to keep them away from weirdos. If its not fair then tough shit.
I think basically what you have to do is use peoples childhood and upbringing against them. Any kid who grew up as a total sped with behavioral issues in school shouldn't be able to have a gun. People who have multiple assaults on their record shouldn't be able to have a gun. You can weed out some of the people who pull this shit by doing this, if a kid was a total sped in school and did weird shit don't let him carry a firearm as an adult, especially an automatic one.
Finally.... it might be time to start holding those who instigate these kind of things responsible. If he did this to get back at dickhead coworkers then charge those people with something. Fact is its also their fault, this dude wouldn't ahve done it if someone didn't fuck him over to set him off. Again that will be an unpopular view since people think its unfair but tough shit.