I have an old 5 button Microsoft mouse (Laser Mouse 6000) and forever I've assigned the thumb button to "back" in the browser and the middle mouse button to "next app" on the desktop. Since I've installed Lion, this doesn't seem to work. The settings in the "Microsoft Mouse" panel in System Preferences don't seem have any effect. 

Is there another way to map mouse buttons? I've noticed that Mission Control seems to detect my 5 buttons and let me assign them, but only to Mission Control functions. I don't see anywhere else where I can do this. Do I just need to wait for new MS drivers? Thanks.


Question: Why do some programmers categorize C, Python, C++ differently? - regarding level
Answer: Think of this in terms of a sliding scale, from LOW-level languages all the way through to HIGH-level languages. As a language moves up the scale, from LOW to HIGH, the language provides more and more abstraction from the specific interface with the computer.

LOW-level languages are written to explicitly direct the computer - think machine code and assembly code.

HIGH-level languages attempt to abstract away the nitty-gritty details (particularly memory allocation and release of memory). The idea is to provide a more "natural" interface to programming and hopefully allow the programmer to focus on design and production.

These days, C is regarded as a LOW-level language. It still has some significant abstractions from machine code and assembly code, so is technically 'higher' than these. However, it does still provide direct memory addressing and not provide garbage collection. So these are details a programmer must design for.

Compare this to other languages such as Python, Ruby or Haskell and you have a much more obscure interface. These languages have large libraries of code that abstract away most of the computer command. Ever wondered what happens to a variable in Python when you leave the local scope of a function, or delete it? Probably haven't right? And that is because in a HIGH-level language you don't have to! They look after the memory allocation / release for you.

HIGH-level languages have the advantage of function. They allow us to design and develop freely (and safely!).

LOW-level languages have the advantage of speed in most cases. There is a cost to interpreting HIGH-level code. Plus, it is kinda cool to write something in 'computer speek'.

Hope this helps