j2thex / keyboard-language-switcher

8 stars 2 forks source link

Оптимизация скрипта #2

Open misha-tgshv opened 3 years ago

misha-tgshv commented 3 years ago

Подскажите, как отредачить скрипт, чтобы можно было обойтись без Alfred? Написал такой вариант, чтобы любое выделенное значение в системе подставлялось, как переменная q. Но в выводе значение копируется в буфер обмена и не вставляется в том же окне.

tell application "System Events"
    keystroke "c" using {command down}
end tell
delay 0.1
set q to the clipboard

--switch language
tell application "System Events" to key code 49 using control down
--creates 2 language lists

set firstChar to text 1 thru 1 of q

set enlist to "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ[]{};':,.<§±>?#$ˆ&@"
set rulist to "фисвуапршолдьтщзйкыегмцчняФИСВУАПРШОЛДЬТЩЗЙКЫЕГМЦЧНЯхъХЪжэЖбюБёЁЮ,№;:?\""

--get first character compare to enlist
set matches to offset of firstChar in enlist

--decides english to russian or russian to english
set rutoen to true

if (matches > 0) then
    set rutoen to false

    set outputlist to rulist
    set inputlist to enlist

end if

if rutoen then

    --Russian to English list swap

    set outputlist to enlist
    set inputlist to rulist

end if

set newString to {}
considering case
    repeat with theChar in q
        set o to offset of theChar in inputlist
        if o is 0 then
            set end of newString to contents of theChar
        else
            set end of newString to character o of outputlist
        end if
    end repeat
end considering

set the clipboard to newString as string
--keystroke command+v - paste from clipboard

tell application "System Events" to key code 9 using command down