Last active
May 15, 2021 04:41
-
-
Save Ahmad-f79/4a3d92fdf8822ba9638f835275e43089 to your computer and use it in GitHub Desktop.
Farsi Keyboard add-on
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
SetWorkingDir %A_ScriptDir% | |
SetStoreCapsLockMode, Off | |
SetKeyDelay, 37 | |
#SingleInstance force | |
#Hotstring NoMouse | |
#Hotstring * ? | |
#NoEnv | |
Menu, Tray, NoStandard | |
Menu, Tray, Add, Run at Startup, Startup | |
Menu, Tray, Add, Farsi Digits, FarsiDigits | |
Menu, Tray, Add, ARABIC YA, YA | |
Menu, Tray, Add, About, About | |
Menu, Tray, Add, Exit, ByeScript | |
Menu, Tray, Tip, Farsi Keyboard add-on v1.7 | |
GroupAdd, Browser, ahk_class Chrome_WidgetWin_1 | |
GroupAdd, Browser, ahk_class MozillaWindowClass | |
SplitPath, A_Scriptname,,,, OutNameNoExt | |
LinkFile = %A_Startup%\%OutNameNoExt%.lnk | |
FileGetShortcut, %LinkFile%, OutTarget | |
IF OutTarget = %A_ScriptFullPath% | |
{ | |
Menu, Tray, Check, Run at Startup | |
Startup :=! Startup | |
} | |
#IF WinActive("ahk_exe connect.exe ahk_class ShockwaveFlash") | |
::ی::ي | |
#IF | |
::ۀ::هٔ | |
<+LWin Up:: | |
KeyWait, LShift | |
IF (A_PriorKey != "LWin") && (A_PriorKey != "LShift") | |
Return | |
ClipSaved := ClipboardAll | |
Clipboard := "" | |
Send, {Ctrl Down}c{Ctrl Up} | |
ClipWait, 0.23 | |
IF (ErrorLevel) { | |
Send, {Ctrl Down}a{Ctrl Up} | |
Send, {Ctrl Down}c{Ctrl Up} | |
} | |
IF RegExMatch(Clipboard, "ئ|ا|ب|پ|ت|ث|ج|چ|ح|خ|د|ذ|ر|ز|س|ش|ص|ض|ط|ظ|ع|غ|ف|ق|ک|گ|ل|م|ن|و|ه|ی") { | |
Clipboard := StrReplace(Clipboard, "ئ", "m") | |
Clipboard := StrReplace(Clipboard, "ا", "h") | |
Clipboard := StrReplace(Clipboard, "ب", "f") | |
Clipboard := StrReplace(Clipboard, "پ", "\") | |
Clipboard := StrReplace(Clipboard, "ت", "j") | |
Clipboard := StrReplace(Clipboard, "ث", "e") | |
Clipboard := StrReplace(Clipboard, "ج", "[") | |
Clipboard := StrReplace(Clipboard, "چ", "]") | |
Clipboard := StrReplace(Clipboard, "ح", "p") | |
Clipboard := StrReplace(Clipboard, "خ", "o") | |
Clipboard := StrReplace(Clipboard, "د", "n") | |
Clipboard := StrReplace(Clipboard, "ذ", "b") | |
Clipboard := StrReplace(Clipboard, "ر", "v") | |
Clipboard := StrReplace(Clipboard, "ز", "c") | |
Clipboard := StrReplace(Clipboard, "س", "s") | |
Clipboard := StrReplace(Clipboard, "ش", "a") | |
Clipboard := StrReplace(Clipboard, "ص", "w") | |
Clipboard := StrReplace(Clipboard, "ض", "q") | |
Clipboard := StrReplace(Clipboard, "ط", "x") | |
Clipboard := StrReplace(Clipboard, "ظ", "z") | |
Clipboard := StrReplace(Clipboard, "ع", "u") | |
Clipboard := StrReplace(Clipboard, "غ", "y") | |
Clipboard := StrReplace(Clipboard, "ف", "t") | |
Clipboard := StrReplace(Clipboard, "ق", "r") | |
Clipboard := StrReplace(Clipboard, "ک", ";") | |
Clipboard := StrReplace(Clipboard, "گ", "'") | |
Clipboard := StrReplace(Clipboard, "ل", "g") | |
Clipboard := StrReplace(Clipboard, "م", "l") | |
Clipboard := StrReplace(Clipboard, "ن", "k") | |
Clipboard := StrReplace(Clipboard, "و", ",") | |
Clipboard := StrReplace(Clipboard, "ه", "i") | |
Clipboard := StrReplace(Clipboard, "ی", "d") | |
PostMessage, 0x50, 0, 0x409,, A | |
} ELSE { | |
Clipboard := StrReplace(Clipboard, "'", "گ") | |
Clipboard := StrReplace(Clipboard, ",", "و") | |
Clipboard := StrReplace(Clipboard, ";", "ک") | |
Clipboard := StrReplace(Clipboard, "[", "ج") | |
Clipboard := StrReplace(Clipboard, "\", "پ") | |
Clipboard := StrReplace(Clipboard, "]", "چ") | |
Clipboard := StrReplace(Clipboard, "a", "ش") | |
Clipboard := StrReplace(Clipboard, "b", "ذ") | |
Clipboard := StrReplace(Clipboard, "c", "ز") | |
Clipboard := StrReplace(Clipboard, "d", "ی") | |
Clipboard := StrReplace(Clipboard, "e", "ث") | |
Clipboard := StrReplace(Clipboard, "f", "ب") | |
Clipboard := StrReplace(Clipboard, "g", "ل") | |
Clipboard := StrReplace(Clipboard, "h", "ا") | |
Clipboard := StrReplace(Clipboard, "i", "ه") | |
Clipboard := StrReplace(Clipboard, "j", "ت") | |
Clipboard := StrReplace(Clipboard, "k", "ن") | |
Clipboard := StrReplace(Clipboard, "l", "م") | |
Clipboard := StrReplace(Clipboard, "m", "ئ") | |
Clipboard := StrReplace(Clipboard, "n", "د") | |
Clipboard := StrReplace(Clipboard, "o", "خ") | |
Clipboard := StrReplace(Clipboard, "p", "ح") | |
Clipboard := StrReplace(Clipboard, "q", "ض") | |
Clipboard := StrReplace(Clipboard, "r", "ق") | |
Clipboard := StrReplace(Clipboard, "s", "س") | |
Clipboard := StrReplace(Clipboard, "t", "ف") | |
Clipboard := StrReplace(Clipboard, "u", "ع") | |
Clipboard := StrReplace(Clipboard, "v", "ر") | |
Clipboard := StrReplace(Clipboard, "w", "ص") | |
Clipboard := StrReplace(Clipboard, "x", "ط") | |
Clipboard := StrReplace(Clipboard, "y", "غ") | |
Clipboard := StrReplace(Clipboard, "z", "ظ") | |
PostMessage, 0x50, 0, 0x429,, A | |
} | |
Send, {Ctrl Down}v{Ctrl Up} | |
Sleep, 257 | |
Clipboard := ClipSaved | |
Return | |
+Space:: | |
Send, {U+200C} | |
KeyWait, Space | |
Return | |
LWin & CapsLock:: | |
Gosub, FarsiDigits | |
SplashTextOn, 67, 31, Farsi Digits, %AF% | |
Sleep, 997 | |
SplashTextOff | |
Return | |
FarsiDigits: | |
Menu, Tray, ToggleCheck, Farsi Digits | |
Hotstring("::1", "۱", "Toggle") | |
Hotstring("::2", "۲", "Toggle") | |
Hotstring("::3", "۳", "Toggle") | |
Hotstring("::4", "۴", "Toggle") | |
Hotstring("::5", "۵", "Toggle") | |
Hotstring("::6", "۶", "Toggle") | |
Hotstring("::7", "۷", "Toggle") | |
Hotstring("::8", "۸", "Toggle") | |
Hotstring("::9", "۹", "Toggle") | |
Hotstring("::0", "۰", "Toggle") | |
AF :=! AF | |
Return | |
YA: | |
Menu, Tray, ToggleCheck, Arabic YA | |
Hotkey, IfWinActive, ahk_group Browser | |
Hotstring("::ی", "ي", "Toggle") | |
Return | |
Startup: | |
IF Startup { | |
FileDelete, %LinkFile% | |
Menu, Tray, Uncheck, Run at Startup | |
} ELSE { | |
FileCreateShortcut, %A_ScriptFullPath%, %LinkFile% | |
Menu, Tray, Check, Run at Startup | |
} | |
Startup :=! Startup | |
Return | |
About: | |
MsgBox,, Farsi Keyboard add-on v1.7, Replaces DOTLESS YA with ARABIC YA in Adobe Connect`n`n`Win & CapsLock: Toggle Farsi digits`n`Shift & Space: Insert Half-space`n`Shift & Win: Convert text and change keyboard layout`n`n`Written in AHK by Ahmad`n`For updates and more info visit: t.me/Farsi_KAO | |
Return | |
ByeScript: | |
ExitApp |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
SetWorkingDir %A_ScriptDir% | |
SetStoreCapsLockMode, Off | |
SetKeyDelay, 37 | |
#SingleInstance force | |
#Hotstring NoMouse | |
#Hotstring * ? | |
#NoEnv | |
Menu, Tray, NoStandard | |
Menu, Tray, Add, Run at Startup, Startup | |
Menu, Tray, Add, Farsi Digits as default, FarsiDigits | |
Menu, Tray, Add, Arabic KAF and YA as default, ArabicMenu | |
Menu, Tray, Add, Hotkeys, Hotkeys | |
Menu, Tray, Add, About, About | |
Menu, Tray, Add, Exit, ByeScript | |
Menu, Tray, Tip, Farsi Keyboard add-on v2 | |
IniRead, ConvertINI, Hotkeys.INI, Hotkeys, Convert, %A_Space% | |
IniRead, DigitsINI, Hotkeys.INI, Hotkeys, Digits, %A_Space% | |
IniRead, ArabicINI, Hotkeys.INI, Hotkeys, Arabic, %A_Space% | |
Gosub, OK | |
SplitPath, A_Scriptname,,,, OutNameNoExt | |
LinkFile = %A_Startup%\%OutNameNoExt%.lnk | |
FileGetShortcut, %LinkFile%, OutTarget | |
IF OutTarget = %A_ScriptFullPath% | |
{ | |
Menu, Tray, Check, Run at Startup | |
Startup :=! Startup | |
} | |
#IF WinActive("ahk_exe connect.exe ahk_class ShockwaveFlash") | |
::ی::ي | |
#IF | |
::ۀ::هٔ | |
Convert: | |
IF (A_ThisHotkey = "<+LWin Up") { | |
KeyWait, LShift | |
IF (A_PriorKey != "LWin") && (A_PriorKey != "LShift") | |
Return | |
} | |
ClipSaved := ClipboardAll | |
Clipboard := "" | |
Send, {Ctrl Down}c{Ctrl Up} | |
ClipWait, 0.23 | |
IF (ErrorLevel) { | |
Send, {Ctrl Down}a{Ctrl Up} | |
Send, {Ctrl Down}c{Ctrl Up} | |
} | |
IF RegExMatch(Clipboard, "a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z") { | |
Clipboard := StrReplace(Clipboard, "'", "گ") | |
Clipboard := StrReplace(Clipboard, ",", "و") | |
Clipboard := StrReplace(Clipboard, ";", "ک") | |
Clipboard := StrReplace(Clipboard, "[", "ج") | |
Clipboard := StrReplace(Clipboard, "\", "پ") | |
Clipboard := StrReplace(Clipboard, "]", "چ") | |
Clipboard := StrReplace(Clipboard, "a", "ش") | |
Clipboard := StrReplace(Clipboard, "b", "ذ") | |
Clipboard := StrReplace(Clipboard, "c", "ز") | |
Clipboard := StrReplace(Clipboard, "d", "ی") | |
Clipboard := StrReplace(Clipboard, "e", "ث") | |
Clipboard := StrReplace(Clipboard, "f", "ب") | |
Clipboard := StrReplace(Clipboard, "g", "ل") | |
Clipboard := StrReplace(Clipboard, "h", "ا") | |
Clipboard := StrReplace(Clipboard, "i", "ه") | |
Clipboard := StrReplace(Clipboard, "j", "ت") | |
Clipboard := StrReplace(Clipboard, "k", "ن") | |
Clipboard := StrReplace(Clipboard, "l", "م") | |
Clipboard := StrReplace(Clipboard, "m", "ئ") | |
Clipboard := StrReplace(Clipboard, "n", "د") | |
Clipboard := StrReplace(Clipboard, "o", "خ") | |
Clipboard := StrReplace(Clipboard, "p", "ح") | |
Clipboard := StrReplace(Clipboard, "q", "ض") | |
Clipboard := StrReplace(Clipboard, "r", "ق") | |
Clipboard := StrReplace(Clipboard, "s", "س") | |
Clipboard := StrReplace(Clipboard, "t", "ف") | |
Clipboard := StrReplace(Clipboard, "u", "ع") | |
Clipboard := StrReplace(Clipboard, "v", "ر") | |
Clipboard := StrReplace(Clipboard, "w", "ص") | |
Clipboard := StrReplace(Clipboard, "x", "ط") | |
Clipboard := StrReplace(Clipboard, "y", "غ") | |
Clipboard := StrReplace(Clipboard, "z", "ظ") | |
PostMessage, 0x50, 0, 0x429,, A | |
} else { | |
Clipboard := StrReplace(Clipboard, "ئ", "m") | |
Clipboard := StrReplace(Clipboard, "ا", "h") | |
Clipboard := StrReplace(Clipboard, "ب", "f") | |
Clipboard := StrReplace(Clipboard, "پ", "\") | |
Clipboard := StrReplace(Clipboard, "ت", "j") | |
Clipboard := StrReplace(Clipboard, "ث", "e") | |
Clipboard := StrReplace(Clipboard, "ج", "[") | |
Clipboard := StrReplace(Clipboard, "چ", "]") | |
Clipboard := StrReplace(Clipboard, "ح", "p") | |
Clipboard := StrReplace(Clipboard, "خ", "o") | |
Clipboard := StrReplace(Clipboard, "د", "n") | |
Clipboard := StrReplace(Clipboard, "ذ", "b") | |
Clipboard := StrReplace(Clipboard, "ر", "v") | |
Clipboard := StrReplace(Clipboard, "ز", "c") | |
Clipboard := StrReplace(Clipboard, "س", "s") | |
Clipboard := StrReplace(Clipboard, "ش", "a") | |
Clipboard := StrReplace(Clipboard, "ص", "w") | |
Clipboard := StrReplace(Clipboard, "ض", "q") | |
Clipboard := StrReplace(Clipboard, "ط", "x") | |
Clipboard := StrReplace(Clipboard, "ظ", "z") | |
Clipboard := StrReplace(Clipboard, "ع", "u") | |
Clipboard := StrReplace(Clipboard, "غ", "y") | |
Clipboard := StrReplace(Clipboard, "ف", "t") | |
Clipboard := StrReplace(Clipboard, "ق", "r") | |
Clipboard := StrReplace(Clipboard, "ک", ";") | |
Clipboard := StrReplace(Clipboard, "ك", ";") | |
Clipboard := StrReplace(Clipboard, "گ", "'") | |
Clipboard := StrReplace(Clipboard, "ل", "g") | |
Clipboard := StrReplace(Clipboard, "م", "l") | |
Clipboard := StrReplace(Clipboard, "ن", "k") | |
Clipboard := StrReplace(Clipboard, "و", ",") | |
Clipboard := StrReplace(Clipboard, "ه", "i") | |
Clipboard := StrReplace(Clipboard, "ی", "d") | |
Clipboard := StrReplace(Clipboard, "ي", "d") | |
PostMessage, 0x50, 0, 0x409,, A | |
} | |
Send, {Ctrl Down}v{Ctrl Up} | |
Sleep, 257 | |
Clipboard := ClipSaved | |
Return | |
+Space:: | |
Send, {U+200C} | |
KeyWait, Space | |
Return | |
Digits: | |
Gosub, FarsiDigits | |
SplashTextOn, 61, 31, Farsi Digits, %AF% | |
Sleep, 997 | |
SplashTextOff | |
Return | |
Arabic: | |
Gosub, ArabicMenu | |
SplashTextOn, 103, 31, Arabic KAF and YA, %A% | |
Sleep, 997 | |
SplashTextOff | |
Return | |
FarsiDigits: | |
Menu, Tray, ToggleCheck, Farsi Digits as default | |
Hotstring("::1", "۱", "Toggle") | |
Hotstring("::2", "۲", "Toggle") | |
Hotstring("::3", "۳", "Toggle") | |
Hotstring("::4", "۴", "Toggle") | |
Hotstring("::5", "۵", "Toggle") | |
Hotstring("::6", "۶", "Toggle") | |
Hotstring("::7", "۷", "Toggle") | |
Hotstring("::8", "۸", "Toggle") | |
Hotstring("::9", "۹", "Toggle") | |
Hotstring("::0", "۰", "Toggle") | |
AF :=! AF | |
Return | |
ArabicMenu: | |
Menu, Tray, ToggleCheck, Arabic KAF and YA as default | |
Hotstring("::ک", "ك", "Toggle") | |
Hotstring("::ی", "ي", "Toggle") | |
A :=! A | |
Return | |
Startup: | |
IF Startup { | |
FileDelete, %LinkFile% | |
Menu, Tray, Uncheck, Run at Startup | |
} else { | |
FileCreateShortcut, %A_ScriptFullPath%, %LinkFile% | |
Menu, Tray, Check, Run at Startup | |
} | |
Startup :=! Startup | |
Return | |
About: | |
MsgBox,, Farsi Keyboard add-on v2, Replaces DOTLESS YA with ARABIC YA in Adobe Connect`n`n`Shift & Win: Convert text and change the keyboard layout`n`Shift & Space: Insert Half-space`n`Shift & CapsLock: Toggle Arabic KAF and YA as default`n`Win & CapsLock: Toggle Farsi Digits as default`n`n`Made with AHK by Ahmad`n`For updates and more info, visit: t.me/Farsi_KAO | |
Return | |
Hotkeys: | |
Gui, Add, Text, cBlue, "none" for default setting | |
Gui, Add, Text,, Convert text: | |
Gui, Add, Hotkey, vConvertINI W131, %ConvertINI% | |
Gui, Add, Text,, Toggle Farsi digits: | |
Gui, Add, Hotkey, vDigitsINI W131, %DigitsINI% | |
Gui, Add, Text,, Toggle Arabic KAF and YA: | |
Gui, Add, Hotkey, vArabicINI W131, % ArabicINI="+CapsLock" ? null:ArabicINI | |
Gui, Add, Button, gGuiClose W61 xp+1 yp+29, Cancel | |
Gui, Add, Button, Default gOK W61 yp x+7, OK | |
Gui, Show,, %A_Space% | |
Return | |
OK: | |
Hotkey, %ConvertINI%, Convert, Off, UseErrorLevel | |
Hotkey, %DigitsINI%, Digits, Off, UseErrorLevel | |
Hotkey, %ArabicINI%, Arabic, Off, UseErrorLevel | |
Gui, Submit, NoHide | |
ConvertINI := ConvertINI="" ? "<+LWin Up":ConvertINI | |
DigitsINI := DigitsINI="" ? "LWin & CapsLock":DigitsINI | |
ArabicINI := ArabicINI="" ? "+CapsLock":ArabicINI | |
Hotkey, %ConvertINI%, Convert, On | |
Hotkey, %DigitsINI%, Digits, On | |
Hotkey, %ArabicINI%, Arabic, On | |
IniWrite, %ConvertINI%, Hotkeys.INI, Hotkeys, Convert | |
IniWrite, %DigitsINI%, Hotkeys.INI, Hotkeys, Digits | |
IniWrite, %ArabicINI%, Hotkeys.INI, Hotkeys, Arabic | |
Gui, Destroy | |
Return | |
GuiEscape: | |
GuiClose: | |
Gui, Destroy | |
Return | |
ByeScript: | |
ExitApp |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment