+Break:: Send ^{Ins} Clipboard:=SwapLang(Clipboard) Send +{Ins} return SwapLang(text) { lang1 := "``qwertyuiop[]asdfghjkl;'zxcvbnm,./~@#$%^&QWERTYUIOP{}ASDFGHJKL:""ZXCVBNM<>?¸éöóêåíãøùçõúôûâàïðîëäæýÿ÷ñìèòüáþ.¨""¹;%:?ÉÖÓÊÅÍÃØÙÇÕÚÔÛÂÀÏÐÎËÄÆÝß×ÑÌÈÒÜÁÞ," lang2 := "¸éöóêåíãøùçõúôûâàïðîëäæýÿ÷ñìèòüáþ.¨""¹;%:?ÉÖÓÊÅÍÃØÙÇÕÚÔÛÂÀÏÐÎËÄÆÝß×ÑÌÈÒÜÁÞ,``qwertyuiop[]asdfghjkl;'zxcvbnm,./~@#$%^&QWERTYUIOP{}ASDFGHJKL:""ZXCVBNM<>?" Loop, parse, text { si := InStr(lang1, A_Loopfield, True) if(si > 0) { SwappedText .= SubStr(lang2, si, 1) } else { SwappedText .= A_Loopfield } } Return SwappedText }