Muting F1 Key

Men are often irrational beings. For example I simply hate F1 key. I know, that key is there to give me help but realistically if I need help I will google for it. Absolutely every time I press F1 it is by accident and it leads to annoying wait for Help to load - especially in Microsoft Office. That key is useless!

Fortunately, deep in Microsoft’s Keyboard and mouse class drivers documentation there is a chapter on scan code mapper for keyboards. In short, there is a functionality enabling us to remap any key just by writing entry in registry without any external programs.

At first I though to simply disable F1 key. But reading a bit further into documentation I though better - why not use F1 key as a mute button?

For this conversion it is necessary to know codes for both F1 and Mute key. A bit of searching later I’ve found that information in USB HID to PS/2 Scan Code Translation Table. This ancient document has exactly what we need under “PS/2 Set 1 Make” column. F1 key has scan code 0x3B while mute is a bit more involved 0xE020 (disabling would be 0x0000).

Format of Scancode Map field is a bit confusing at first, but table examples do help a lot. For my use-case, table would be as this.:

ValueFieldInterpretation
0x00000000VersionSet to all zeroes.
0x00000000FlagsSet to all zeroes.
0x00000002CountTwo entries in the map (including null entry).
0x003BE020MappingRemap <F1> (0x3B) to <Mute> (0xE020).
0x00000000MappingTermination entry.

These values would need to be written in registry under key HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout as binary entry named Scancode Map. Of course, since binary data has to be little-endian, (hex) value would actually be:

00000000 00000000 02000000 20E03B00 00000000

Or one can simply download prepared registry file for creating mapping and, if necessary, removing the same.

[2017-11-13: You can check codes using Scancode Viewer.]

[2017-11-23: I also made Scancode Map application so you don’t need to manually update registry.]

Asterisk Be Damned

Illustration

Honestly, I almost lost hope this day will come. However, finally there is a download of Visual Studio Express 2017. Because no sunshine can happen without clouds here in Redmond, only Desktop edition is available. Moreover, Microsoft found it necessary to clarify it further with the following asterisk:

* Visual Studio Express 2017 is available for Windows Desktop developers. This will be the final version of Visual Studio Express, and there will not be a UWP or Web offering of Visual Studio Express 2017. We encourage all users to look at the free development options offered by Microsoft such as Visual Studio Code and Visual Studio Community for future development needs.

Yep, this is the last edition for the fans of Express. It has been a good ride I guess.

PS: And no, answer is not using Community as its licencing restrictions make it wildly unsuitable for the whole host of scenarios where Express was shining. For example, use in a bigger company is not really allowed - even if you are not using it for production software but only for internal tools.

Windows 10 Pro USB Install on Dell's XPS 15

Illustration

When I got my new Dell XPS 15 with Windows 10 Home; the first thing I wanted to install my own fresh copy of Windows 10 Pro.

Guess what? Dell, as many other PC manufacturers, stores key in BIOS (Home edition in my case) and it will never ask you for it. Try as you may but Windows installation will never even ask your for alternate key. That is, if you don’t adjust it a bit.

First part is preparing installation USB and these same steps are needed even if you don’t need to change install key. Press <Win>+<R> and write diskpart, followed by OK. This will execute partition editor tool. Be very, very careful to select disk you want to clean and make new installation USB:

LIST DISK
 Disk ###  Status         Size     Free     Dyn  Gpt
 --------  -------------  -------  -------  ---  ---
 Disk 0    Online          476 GB      0 B        *
 Disk 1    Online          931 GB      0 B
 Disk 2    Online         7168 MB      0 B
 Disk ^^3^^    Online         7648 MB      0 B

SELECT DISK ^^3^^
 Disk 3 is now the selected disk.

CLEAN
 DiskPart succeeded in cleaning the disk.``

CREATE PARTITION PRIMARY
 DiskPart succeeded in creating the specified partition.``

FORMAT FS=FAT32 QUICK
 100 percent completed``
 DiskPart successfully formatted the volume.``

EXIT

Assuming that your, newly created and empty, USB drive is under letter U: and your Windows installation disk is at W:, you can use XCOPY to transfer files. Again, press <Win>+<R> to get a prompt where you can enter following command:

XCOPY ^^W:^^*.* /e /f ^^U:^^\

For getting our key into installation we need to create PID.txt with following content (use your key instead of XXXXX-XXXXX-XXXXX-XXXXX-XXXXX):

[PID]
Value=^^XXXXX-XXXXX-XXXXX-XXXXX-XXXXX^^

This file you then copy onto USB to U:\sources or U:\x64\sources folder, depending which one is present.

Now you can plug USB into XPS 15, boot to USB using F12 key and proceed with Windows installation as you usually would. The only difference is that Windows will now use key from USB instead of BIOS and give you the correct edition.

PS: If you want to use USB drive bigger than 64 GB, use CREATE PARTITION PRIMARY SIZE=8000 to make disk appear a bit smaller. Otherwise FAT32 formatting won’t work and that is important for UEFI.

PPS: To avoid entering legacy mode, I like to add custom EFI boot option pointing to \efi\boot\bootx64.efi on USB.

Bimil 2.20

Illustration

This minor update essentially brings only two significant changes.

First is inclusion of NTP check before time-based two-factor authentication code is generated for the first time. If you are getting code on freshly installed computer with wrong date or your clock simply drifted more than required 30 seconds, Bimil is now going to check time and issue correct code regardless of your system clock.

Second important change is Debian package. While you could run Bimil on Linux before, you had to deal with installation and requirements yourself. Now it is enough just to download package and use your favorite (Debian-based) installer. And yes, it does install in /opt.

To check these changes together with a few minor improvements and bug-fixes, you can download Bimil from these pages or update it through application.

Your Evaluation Period Has Ended

Illustration

There are no better ways to spend nice weekend morning than programming - I am sure you agree. ;)

So, one Saturday morning I started Visual Studio Community edition, only to be greeted with “Your evaluation period has ended” message. Somehow my license went “stale” even though I have been using Visual Studio 2017 for months now. Easy enough, there is “Check for an updated license” link immediately below. Unfortunately, that button did nothing except informing me that license couldn’t be downloaded.

Actual solution was to log into the Microsoft account. Once credentials have been verified, dialog simply disappeared. My best guess is that inability to log into account has been the cause for this license covfefe.

Although story has a happy ending, it might not been so if I didn’t have Internet. If this happened in the air, my options would be limited to crying and/or sleeping. Or, if I am lucky, paying exorbitant price of airplane WiFi.

I guess logging off and back onto my Microsoft account should become my standard preflight procedure.

But the question in the back of my mind is: Why the heck would you even put this check in development tool you give away for free?