Friday, October 06, 2017

Re-map Right Windows key to Menu key on Windows

I purchased a decent mechanical keyboard; it's a ducky Shine 3.  Duckys (despite the strange name) seem to be very high quality mechanical keyboards.  This model, as with most of their models, has no menu / right-click key.  I use this key constantly.  Some of the other model's manuals indicate that there is some key-combination that will activate menu, but not this one.  This workaround will apply for any keyboard that lacks any built-in way to activate menu.
I don't use the right-windows key.  That key is in approximately the same spot as the menu key usually is (and I always look down to press the menu key), so I re-mapped that key to activate menu.

To get the proper value into the registry, I used SharpKeys.  That utility allows you to type in the keys you want to re-map, so I plugged in a different keyboard that actually had the menu key, typed in the keys to re-map, and saved the value to the registry (requires reboot after adding).  Thanks SharpKeys!

Here is all that is required in a .reg file in order to add this value to the registry:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,5d,e0,5c,e0,00,00,00,00

Wednesday, July 05, 2017

Using Powershell as a Command / Alias Runner

I've been using an odd little utility(1) for many years to have quick access to commonly run commands, utilities (with parameters), etc.  I finally decided to retire it.  My first thought for a replacement was Unix aliases - I can use the bash shell on windows now.  That went straight to nowheresville; I don't think bash for windows is intended for these kinds of things.  I'm glad it did, however, because I learned how useful powershell is as a command runner.
In order to use it as such, follow these simple steps:
  • At the powershell command prompt, run Test-Path $Profile.  If the result is true, then you have created a profile.  To see the path to your profile, just type $Profile.
  • If the result is false, run this command to create a profile: New-Item -Path $Profile -Type File -Force.  I've no idea how to create it an a location you desire, but this will create a file like this:  "C:\Users\[you]\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"
  • Open your profile in the Powershell ISE.  Create functions to your heart's desire.  Of course you have access to all of powershell's built in commands.  You can then run your functions from the Powershell command line.  Below are the functions I created.  See how I have a bunch beginning with "csm"?  On the command line I type "csm" followed by ctrl-space and I get a list of all available functions (global functions and my custom functions) beginning with those letters.  Then I can tab through the list to the one I want and hit enter to execute it.  So nice!


# the "." is there for "dot raising" or something.  Doesn't work without it.  I guess we wouldn't know; it's a powershell thing.
function set-config-false {. "C:\Program Files\ConfigUpdater\ConfigUpdater.exe" C:\redacted\Web.config}

# Pass the paths to the files you want to compare.
function compare-files([string]$s1, [string]$s2) {. "C:\Program Files (x86)\WinMerge\WinMergeU.exe" $s1 $s2}

function gulp-compile {. "C:\Data\BatchFiles\gulp.bat"}

function open-git 
{ 
    Set-Location C:\Dev\Trebuchet #cd
    . "C:\Program Files\Git\bin\bash.exe"
}

# Our utilities
function csm {. "C:\redacted.exe"}
function csm-admin {. "C:\redacted.exe" -hiddensettings}
function csm-app-server {. "C:\redacted.exe" -protocol:tcp -port:7999 -connection:"[Common]Demo8"}
function csm-def-editor {. "C:\redacted.exe"}
function csm-restore {. "C:\redacted.exe"}
function csm-server-manager {. "C:\redacted.exe" -a}
function csm-upgrade {. "C:\redacted.exe"}
function reddis-server {. "C:\redacted\redis-server.exe"}

function find-color-under-cursor {. "C:\Program Files\pixie.exe"}
function pixel-ruler {. "C:\Program Files\JRuler.exe"}
function remote {. "C:\WINDOWS\system32\mstsc.exe"}
function show-locked-files {. "C:\Program Files\OpenedFilesView\OpenedFilesView.exe"}
function cleanup-vs {. "C:\Data\BatchFiles\CleanVS.bat"}
function backup-data {. "C:\Data\BatchFiles\backupData.bat"}

<# 
    When invoking powershell, type "power" at the windows run box, then ctrl+shift+enter to launch elevated.
    Then, vs will run elevated.
#>
function vs {. "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\devenv.exe"}

1. In fact, I still can't get away from using SlickRun for 2 purposes; an unobtrusive always-on-top clock and a quick-to-invoke paste pad that I'm constantly using, often to simply clean formatting for text.

Monday, February 06, 2017

Will Web Applications be Fixed Soon?

I read recently that in-browser apps are extremely favored over native apps (people use their favorite social media app and maybe one other and don't bother with anything else). This makes sense; users are taking the path of least resistance - don't bother installing something unless you have to.
But yet, in-browser applications are so frequently busted. They even seem to get worse as time goes on in some cases. I used to listen to slacker and pandora in the browser. Slacker stopped working some time ago (in any browser), and pandora stopped working recently. I mean not working as in not at all - can't make it through more than one song without hanging the browser. So I started using spotify which seems to default to having you install a client. It works. You can even pause your song and it resumes at the exact place the next time you open the app. The UI is terrible IMO, but it works. Isn't this the goal, to actually work?
Web as a platform for applications still seems like a hack after all this time. I remember getting excited about Silverlight back in the day: yay, we can write an application and it will work like an application! It was a workaround for web as platform. Then Silverlight (and Flash) died.
Now Service Workers / WebAssembly seem to be the next candidate to overcome the web as platform hack. Will they enable applications to actually work in browsers, or will they go the way of flash? Both are starting out as actual standards, so they seem promising.
If they do catch on, won't that render most of the native app work obsolete?  Maybe these technologies can't help whatever broke slacker/pandora?  What other capabilities will remain un-achievable at that point?