Posts Tagged ‘Windows


Setting up Mercurial on Apache

Recently I started investigating the two major Distributed Version Control Systems (DVCS) mainly due to the historical SVN deficiency in handling renames. You may say that you don’t need a DVCS for tracking renames … Yes, in fact I know… it was only an excuse to start learning a DVCS after all there are plenty differences between a regular VCS and a DVCS.

My first option

After analysing whether I should stick with Git or Hg I decided to go with Hg since I have a trauma of using native applications originally written for Linux on Windows. Not that I am a Windows only user, in fact for a long time I had been using Linux as a Desktop option instead of Windows but you can’t deny that there is still a huge crowd that won’t switch from Windows over anything. The problem with native Linux applications that highly depend on a collection of shell scripts and other Linux dependent solutions is that they usually have a suboptimal performance on Windows, either they miss some functionality or they depend on a myriad of rare libraries. Have said that, I went with Mercurial on my first attempt.

First attempt with Hg

I wasn’t really lucky on my first attempt to install Hg. My first mistake was to pay too much attention to’s warn on main downloads page:

If you don’t know which version to use, start with Python 2.7;

This warning is probably updated after each stable version is released but if I had seen the other advice on releases page I’d have thought twice:

Consider your needs carefully before using a version other than the current production version.

I chose to download latest python and build Hg myself and obviously it prove to be not that smart as it was my first experience with Hg.

Comes Git

As I gave up on Hg I decided to give a try on Git. First thing was to download msysGIT and surprisingly enough (following this tutorial) it was rather easy to set it up but its drawbacks were related to its tooling. As soon as I setup Git and tried to clone a repository over HTTPS with authentication I realized that JGIT does not support authentication over HTTP and as it was what I planned (in fact SSH on Windows is not very advisable since I have never seen a good free port of a SSH Server for Windows).
I had to get back to Hg but I decided to check whether I was taking a complex approach since Git employs a similar approach and had been much easier, I used what I learned with the tutorial used for Git setup.

Second attempt on Hg

As already mentioned, I decided to do something similar to what I done on Git, so, I chose CGI. I’ll highlight the important points for the installation here:

  • The file to be downloaded is now named hgweb.cgi and not hgwebdir.cgi
  • Download python 2.5 as noted here
  • Unzip as noted here and edit the sys.path.insert line and the first line (the one with the #! (sha-bang) ) to point to python executable
  • Configure style and templates entries under [web] on hgweb.config
  • Configure an entry under [paths] for each repository (eg.: repository = c:/users/hg/repository)
  • Enable pushing for the configured repositories
  • Configure authorization on Apache. Either using htpasswd or ldap, but authorization is really recommended.
  • Configure SSL on Apache (there is a short explanation on how to do this in portugues over here, the only thing is that SSLPassPhraseDialog builtin is not supported on Windows, so instead, provide a .bat file with a simple @echo yourpassword and use exec instead of builtin (eg.: SSLPassPhraseDialog exec:C:/Progra~1/Apache~1/Apache2.2/bin/passphrase.bat

Perform an hg init for each configured repository, start Apache and try cloning the repository over HTTPS (remember to provide your credentials if you configured any authentication method).


Remapping keyboard keys on Windows

Looks like I have something against notebooks (or netbooks) with regular keyboards…
Recently I bought a second hand Sony netbook that a friend bought on Italy. Sincerely when I agreed to buy it I didn’t take into consideration that it could come with a rather strange keyboard and we usually tend to think that every keyboard will work as a US_International one… What a mistake.
First attempt was to map it as an ABNT2 keyboard and blindly type but it wasn’t that good. Next I tried setting language as portuguese and keyboard as italian (hoping dead keys would work)… another failure… that was time I tried to do the old trick my Lenovo had on Windows (something similar to what I used on Linux… but the fact is Linux has always dead keys… no matter what keyboard language you are using…) and this could only handle swapping keys but if my keyboard missed dead keys (as it missed at all I would never have dead keys with this trick).
Then I found the solution: The Microsoft Keyboard Layout Creator
The tool is described as:

The Microsoft Keyboard Layout Creator (MSKLC) extends the international functionality of Windows 2000, Windows XP, Windows Server 2003,and Windows Vista systems by allowing users to:

  • Create new keyboard layouts from scratch
  • Base a new layout on an existing one
  • Modify an existing keyboard layout and build a new layout from it
  • Multilingual input locales within edit control fields
  • Build keyboard layout DLLs for x86, x64, and IA64 platforms
  • Package the resulting keyboard layouts for subsequent delivery and installation

With this tool you can even get around the “missing curly braces limitation” of italian keyboards.
There is no secret on using it. First of all you pick up a keyboard to base your new one (or start from scratch but I suggest picking one as a template) by choosing the “Load Existing Keyboard” option under File menu, then you’ll be presented with a list similar to the one below:

Load Existing Keyboard

Load Existing Keyboard

After you pick up your template keyboard you’ll be presented with the screen where you can customize it. This screen presents you keyboard with a visual representation of a keyboard.

MSKLC Main Screen

MSKLC Main Screen

When you click any of the keys you’ll be presented with a short popup and a button where you can open the full customization screen.

Change Key Screen

Change Key Screen

This is where you provide new meanings for keyboard keys, in my particular case I had to change circumflex key from a simple key to a dead key. In order to do this I had to enable the dead key view in the window above and then define all the dead key possibilities.

Dead Key Mapping

Dead Key Mapping

Note that there is a standard of having the symbol composition with white space as the last one on the list (the tool will complain if it is not like that and I sincerely did not test without complying to this).
When you are done you only need to build the setup package and install on the desired machine.

Swapping Keys

If instead of a such a powerful tool you only need to simply swap one key by another, something as Lenovo did on the Windows XP bundled in my notebook.
While searching on the internet for some documentation on this I found this site which describes pretty well what you need to do even with samples but misses the whole scancodes list. The after some googling (and a few outdated link on MS site) I found this site that describes the remapping method and this one that has a word document with scancodes. Another handy tool for this job is an old tool from Visual Studio called spy++ but this tool is only supplied into paid Visual Studio versions.


Blog Stats

  • 372,748 hits since aug'08

%d bloggers like this: