I recently <a href="/2014/08/25/switching-end-and-insert-key-on-the-lenovo-yoga/">lamented about switching two keys on my new Lenovo Yoga</a>. Big problem: In my office, I attach that notebook to a docking station and to that docking station I attach a <a href="http://www.daskeyboard.com/" target="_blank">keyboard</a>. On that keyboard, all keys are precisely the way I want them to be. Therefore, I do <i>not</i> want to switch the <b>Insert</b> and <b>End</b> keys when I am docked. I ended up writing a little batch script based on <a href="https://code.google.com/p/killkeys/wiki/ScancodeMap" target="_blank">this nice google code wiki entry</a> for the registry update and <a href="http://stackoverflow.com/a/24665214/1578458" target="_blank">this stackexchange answer to elevate the batch script</a>: ```bash @ECHO OFF NET FILE 1>NUL 2>NUL if '%ERRORLEVEL%' == '0' goto run powershell "saps -filepath %0 -verb runas" >nul 2>&1 goto eof :run REG QUERY "HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layout" ^ /v "Scancode Map" >nul 2>&1 IF '%ERRORLEVEL%' == '0' goto remove <nul set /p ="> adding scancode map " REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layout" ^ /v "Scancode Map" /t REG_BINARY /f ^ /d 00000000000000000300000052E04FE04FE052E000000000 >nul 2>&1 IF '%ERRORLEVEL%' == '0' goto success goto fail :remove <nul set /p ="> removing scancode map " REG DELETE "HKLM\SYSTEM\CurrentControlSet\Control\Keyboard Layout" ^ /v "Scancode Map" /f >nul 2>&1 IF '%ERRORLEVEL%' == '0' goto success goto fail :fail echo failed. pause goto eof :success echo succeeded. pause ``` Sadly, it always requires a reboot for the changes to take effect.