//! jsc.exe /target:winexe
// Преобразование текста в буфере обмена:
// -eng		— в английскую раскладку из русской
// -rus		— в русскую раскладку из английской
// -upper	— в верхний регистр
// -lower	— в нижний регистр
import System;
import System.Windows.Forms;
import System.Text;
var args = Environment.GetCommandLineArgs();
if (args.Length == 2)
{
	var text = Clipboard.GetText();
	var arg = args[1].ToLower();
	switch (arg)
	{
		case "-eng": case "-rus": // Преобразование раскладок
			var layout = [ "QWERTYUIOP{}" + "ASDFGHJKL:\"|" + "ZXCVBNM<>?" + "`~@#$^&"
						 + "qwertyuiop[]" + "asdfghjkl;'\\" + "zxcvbnm,./"
						 , "ЙЦУКЕНГШЩЗХЪ" + "ФЫВАПРОЛДЖЭ/"  + "ЯЧСМИТЬБЮ," + "ёЁ\"№;:?"
						 + "йцукенгшщзхъ" + "фывапролджэ\\" + "ячсмитьбю." ];
			var s, t, ind, sb = new StringBuilder(text);
			if (arg == "-rus") {s = 0; t = 1;} else {s = 1; t = 0;}
			for (var i = 0; i < sb.Length; i++)
				if ((ind = layout[s].IndexOf(sb[i])) >= 0)
					sb[i] = layout[t][ind];
			text = sb.ToString();
			break;
		case "-upper": text = text.ToUpper(); break; // Верхний регистр
		case "-lower": text = text.ToLower(); break; // Нижний регистр
	}
	Clipboard.SetText(text);
}
Макросы преобразования выделенного выделенного текста по нажатию горячей клавиши.
------
Преобразование текста (базовый)
Текстовая переменная: arg
<CLIPBOARD CUT/>
<PROGRAM LAUNCH Path="путь_к_программе\\Keyboard Switcher.exe" Mode="\x00" Parameters="%arg%" Default_Path="TRUE" Wait="0" Get_Console="FALSE"/>
<WAIT FOR PROGRAM TO TERMINATE Process="KEYBOARD SWITCHER.EXE" Indefinite="TRUE" Hours="0" Minutes="0" Seconds="0"/>
<CLIPBOARD PASTE/>
------
Преобразование текста: Ru > En
Горячая клавиша: Alt + Home
Текстовая переменная: arg
<VARIABLE SET STRING Option="\x00" Destination="%arg%" Value="-eng" NoEmbeddedVars="FALSE"/>
<MACRO RUN Use_ID="FALSE" Name="Преобразование текста (базовый)" ID="-1" Wait="TRUE"/>
------
Преобразование текста: En > Ru
Горячая клавиша: Alt + End
Текстовая переменная: arg
<VARIABLE SET STRING Option="\x00" Destination="%arg%" Value="-rus" NoEmbeddedVars="FALSE"/>
<MACRO RUN Use_ID="FALSE" Name="Преобразование текста (базовый)" ID="-1" Wait="TRUE"/>
------
Преобразование текста: Верхний регистр
Горячая клавиша: Alt + PageUp
Текстовая переменная: arg
<VARIABLE SET STRING Option="\x00" Destination="%arg%" Value="-upper" NoEmbeddedVars="FALSE"/>
<MACRO RUN Use_ID="FALSE" Name="Преобразование текста (базовый)" ID="-1" Wait="TRUE"/>
------
Преобразование текста: Нижний регистр
Горячая клавиша: Alt + PageDown
Текстовая переменная: arg
<VARIABLE SET STRING Option="\x00" Destination="%arg%" Value="-lower" NoEmbeddedVars="FALSE"/>
<MACRO RUN Use_ID="FALSE" Name="Преобразование текста (базовый)" ID="-1" Wait="TRUE"/>