Magic Mouse

My current mouse was not good at scrolling, so I decided to buy Apple’s Magic Mouse. Yes, my “old” mouse is still working, so I should not have bought a new one (but in fact I’m still using it).

As usual with Apple, it’s a nice piece of hardware and as usual with Apple, it’s sucking in some ways.

It’s a beautiful mouse, with its complete surface being tactile. I bought it because my previous mice was not scrolling correctly. Does the magic mouse does the job correctly? Yes. Scrolling is very nice. And with the momentum option activated it’s even better.

Some people are complaining because the edges are a bit too sharp, in fact I didn’t noticed it before reading it, but yes, a bit smoother would be better.

Some other people are complaining that the cursor’s movements on the screen are not fluid. I had the same problem from time to time and the simple solution was to have the mouse closer to my laptop, I reduced the distance from 1 meter to 50 cm. Yes it’s lame, it’s bluetooth, I experienced the same problem with an other bluetooth mouse. And bluetooth is also slow, it introduce a latency in cursor’s movements that you can feel when switching from a wired mouse to a bluetooth one, but it’s small enough to go unnoticed after few minutes.

An other thing is that you can’t do the nice gestures you can do on the trackpad. You can download MagicPrefs which enables lot’s of gestures, but in fact I found it quite awkward and difficult to do most of the gestures on the mouse.

Forget about gaming. Of course this mouse is not designed for hardcore gamers, even for gamers at all. The simple fact is you can’t do left and right click at the same time (you were thinking about jumping and firing at the same time in QUAKE LIVE? So that’s why I’m still using my old mouse when I want to play).

But to me, the major problem is that the mouse is way too slow. And it looks like a lot of people think the same.

Event when putting the track speed to the maximum, the magic mouse is still a bit too slow. Interestingly, when removing the drivers, the mouse is way much faster but no more scrolling or gestures… which was the point of buying this mouse. MagicPrefs allows you to increase the speed a bit, looks like MouseZoom do the same as well. But I don’t really like the idea to have to install an extra software to increase the speed. I should be able to set it directly somewhere. Some people are giving some commands like this one:

write -g com.apple.mouse.scaling -float 5.0

It seems that it’s the value written in the system when changing the track speed. In the System Preferences the max value seems to be “3”. So with this command you can set it to a higher value. But each time you have to log out and log in!

If you have to do it only once, it may do the trick. But here I come to an other problem. Let’s imagine I want to play on some games requiring a “classical” mouse, I need to change the tracking speed to a lower value for the “gaming” mouse and when I’m not playing anymore, change back the value… with the command line, and logging out, then logging in…

I already talked about it, but why operating systems are designed for only one mouse and one keyboard?

Have a look at this (from Mac OS X System Preferences):

What do you notice? We can configure several displays, but only one keyboard, one mouse and one trackpad… One mouse and one trackpad? Those are two point and click devices, aren’t they? So in a way we can have two different pointing devices with different settings, so why limiting this difference by “kind” (mouse/trackpad) and not by plugged devices?

Only few people are using more than one of these devices? OK maybe, and most people are also using only one display… and most people I know using a laptop as their main computer plug an external keyboard, so they have the laptop keyboard (and trackpad) and the external keyboard (and mouse) and usually laptop keyboards and standalone keyboards are different and may require different configurations. And of course the case when pair programming.

Mice and keyboards are not dead yet (they are not going to be wiped-out by touchscreens and virtual keyboards before long (in the end they may, but not before at least a decade or two)). So please, you people writing operating systems, would you be nice enough to handle that problem?

Conclusion

After few days using the Magic Mouse, I can say that I found it being a nice device in general, a very good mouse for common usages, not suitable at all for games and way too slow (a fix for that should be trivial to release).

Keyboards and layouts

When using eXtreme Programming (XP) as software methodology, you often get a lot of problems to put it in place (management does not agree, some developers are reluctant). But what you might not expect is having tiny annoying problems with keyboards.

One of the techniques pushed by XP is pair programming. This implies having two developers working together in front of the same computer.

At any moment only one developer is writing code (this is the driver) and the other one is reviewing the code, giving advices, making sure that the code written by the driver is following the design rules of the project, etc. (this is the navigator).

But the roles between the two developers switch frequently, or the navigator needs to write a little piece of code to show to the driver, so the keyboard is moving a lot between both of them.

Sometimes we end up having two keyboards plugged in the computer, one for each of them, like this:

Teams are frequently composed with people coming from different countries and having different habits and so many different keyboards layouts. I worked with an Irish guy using an American qwerty keyboard with an English layout (or vice versa), in France we usually use French azerty keyboards with French layout but I’m using an Apple international English qwerty keyboard with international English qwerty layout.

So each time you start pair programming you have to look at what kind of keyboard you are going to use (if it’s not yours) and what layout is used (and maybe change the layout each time one the developer start writing).

What I find annoying here is that even with two keyboards, you have to switch the layout because the operating system uses only one layout at a time. I have seen the same behavior on Microsoft Windows, GNU/Linux and even Mac OS X.

I’m wondering why layouts are not bound with keyboards. Maybe not a strict binding like keyboard A use only layout A and keyboard B use only layout B, but a list of layouts and the keyboards are bound with the last layout they where used with.

Maybe pair programmers are not very common, but I think that we are not the only ones with that problem. More and more laptops are sold, and quite often people use a desktop keyboard while using the laptop at home. They have to change the layout only once, but I’m sure we should avoid that (and on some operating system the task is really not easy the first time).

There are also programmable keyboards. On such keyboards you can change the code sent by each key when typing and create your own layouts. Maybe those kind of keyboards will solve the problem but they are expensive and hard to find.

Art Lebedev created the Optimus Maximus programmable keyboard where each key is an oled display. Here they solved an other problem: having one unique universal keyboard. It can be used with azerty layout, qwerty layout or anything you can imagine and each key display the characters which is going to be written.

Among others, a thing I find very interesting in the Optimus Maximus is the software to configure the keyboard :

It provides a nice interface to configure layouts. I would like that kind of interface to configure my keyboards, since they are seldom recognized correctly, some keys are always wrong, or the behavior is not exactly what I want and finding the right layout in a big list is painful.

Here is the scenario I would like to have:

  • I have a computer with an azerty keyboard plugged in and configured.
  • I plug a new keyboard on my computer.
  • A configuration window should open asking to type some keys in order to detect which kind of layout is configured (like Mac OS X does).
  • If it’s recognized as a qwerty keyboard, each time I type something on the keyboard the layout switch to qwerty.
  • If I type on the azerty keyboard, the azerty layout is used.
  • When using the qwerty keyboard I should be able to switch to an other layout, azerty for example. The last layout used for a given keyboard is bound to it until I change it.
  • A nice interface like Optimus Configurator should allow me to fine tune my layouts.

As far as I have seen until now, mainstream operating systems assume that a lot of things are unique. This situation started to change few years ago, now we can plug several keyboards, mice, screens on the same computer, but the software doing the configuration has not evolved a lot. The most common thing is having several screens. If you already tried to configure multiple screens, you may have found that it’s quite easy on Mac OS X, it’s hard on Windows and it’s really painful on Linux. The worst thing I have seen is some software considering that multiple screens equals 2 screens, with 3 screens it’s just not working and clearly not designed for. But most of the time, you can have only one keyboard/mouse configuration (you can’t have several mice with different speed configurations).