Зарегистрирован: 14.07.2001 Сообщения: 9072 Откуда: Украина
Добавлено: Вт Май 21, 2013 17:21
Понекропощу — на случай, если где-то зобанены какие-то подсети:
Changing Keyboard Input - Command Line Utility
If you have the need to programmatically change between languages on the Macintosh, this may be what you are looking for. This code kindly provided by Stefan Klieme
There are two examples. One is an AppleScript example and the other is a command line tool. The command line tool is very useful and easy to use.
Example Tool Usage
Код:
changeInput //prints current input language
changeInput name //changes input language to name
changeInput toggle name1 name2 //toggles input language between name1 and name2
on changeInputLanguage(L)
tell application "System Events" to tell process "SystemUIServer"
tell (1st menu bar item of menu bar 1 whose value of attribute "AXDescription" is "text input")
return {its value, click, click menu 1's menu item L}
end tell
end tell
end changeInputLanguage
Instructions for Compiling Yourself
Make a folder on your desktop and name it 'input' Create a text file with with the code below and save it in this folder. Name it 'changeInput.m' Be sure to make this file "plain text." Do not use Word or the Rich Text format in TextEdit. It might be wise to download the free TextWranger for this purpose.
Open up the Terminal from /Applications/Utilities/Terminal.app and type the following ALL ON ONE LINE.
This sets a variable named "name" to a full path -> "/Users/USER_NAME/Desktop/input/changeInput"
This keeps us from typing the path twice in the code.
It ends in a semi-colon to inform the terminal that this is the end of one statement and it can move on to the next statement.
name=~/desktop/input/changeInput;
gcc is the GNU Objective-C compiler we are using to compile this code.
"$name".m is the variable name, which contains the path as shown above with the ".m" appending to the end. This gives us a full path to the "inputChange.m" file in the input folder.
-o is the output option and it specifies the full path to where you want this executable to be created. Here we are using the variable "$name" which is the same name as the ".m" file without the extension.
gcc "$name".m -o "$name"
-l objc is telling the compiler to link this code with the Objective-C runtime library called objc.
-l objc
This is linking each framework included in this code. If we had other frameworks, we would add then in the same way.
-framework foundation -framework carbon
Код:
#import <Foundation/Foundation.h>
#import <Carbon/Carbon.h>
/*###############################################################################
# #
# changeInput #
# #
# author: Stefan Klieme (based on an idea by Craig Williams) #
# created: 2009-11-05 #
# Changes input language #
# Usage: changeInput prints current input language #
# changeInput name changes input language to name #
# changeInput toggle name1 name2 toggles input language between #
# name1 and name2 #
# #
#################################################################################
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU General Public License as published by #
# the Free Software Foundation, either version 3 of the License, or #
# (at your option) any later version. #
# #
# This program is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License for more details. #
# #
# You should have received a copy of the GNU General Public License #
# along with this program. If not, see <http://www.gnu.org/licenses/>;. #
# #
################################################################################*/
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
Зарегистрирован: 28.12.2013 Сообщения: 24 Откуда: China, P. R.
Добавлено: Чт Янв 09, 2014 01:27
Daniel писал(а):
Понекропощу — на случай, если где-то зобанены какие-то подсети
Подскажите пожалуйста тем кто в танке - какой именно код добавить в текстовый файл changeInput.m - тот который самый большой под спойлером в самом низу или какой?
После того как в терминале ввожу
Код:
name=~/desktop/input/changeInput; gcc "$name". -o "$name" -1 objc -framework foundation -famework carbon
xcode-select: note: no developer tools were found at '/Applica
Появляется окно с записью:
Цитата:
The “gcc” command requires the command line developer tools. Would you like to install the tools now?
Начинаю устанавливать система говорит, что нужен час это нормально?
Может мои вопросы покажутся вам слишком тупыми - вы уж не сердитесь.
Последний раз редактировалось: HaohaiZi (Чт Янв 09, 2014 02:15), всего редактировалось 1 раз
Зарегистрирован: 14.07.2001 Сообщения: 9072 Откуда: Украина
Добавлено: Чт Янв 09, 2014 13:05
HaohaiZi писал(а):
Но а как дальше языки переключать?
Терминальной командой, состоящей из двух частей, первая из которых — полный путь к программе hangeInput, а вторая — имя раскладки в прямых кавычках. Например, если вы решили хранить программу в папке /Applications, команда будет выглядеть так:
Код:
/Applications/changeInput "Wubi Xing"
После того, как добьетесь послушания от терминальной команды, ее надо облечь в форму, подходящую для быстрого вызова. Если не пользуетесь запускалками-автоматизаторами (LaunchBar, Butler, Alfred и т. п.), самый простой способ сделать это — создать службу (service) в Автоматоре:
Аналогичные службы можно создать для всех нужных языков, меняя параметр, с которым запускается команда changeInput:
Через System preferences службам назначаются клавишные сокращения:
Зарегистрирован: 28.12.2013 Сообщения: 24 Откуда: China, P. R.
Добавлено: Чт Янв 09, 2014 15:13
Ура!! Получилось!! Я не блондинка!! )
Переключается все круто! Быстро и сначала немного тупило - прям как у виндоуса, что не может не радовать - прям родная стихия.
Один момент, считаю необходимым дополнить: после создания скриптов (или что мы там создаем в автоматоре) мне их нужно было запустить - система спросил - хочешь установить и т.д. ...
Большое вам спасибо! Вы мега крут!
Update: Когда переключаюсь новым сочетанием клавиш - китайский сначала не хочет писать по китайски, а потом когда его попереключаешь мышкой несколько раз, то все становится на свои места.
Зарегистрирован: 14.07.2001 Сообщения: 9072 Откуда: Украина
Добавлено: Чт Янв 09, 2014 15:23
HaohaiZi писал(а):
китайский сначала не хочет писать по китайски
Я не понял, кто такой китайский, и где он не захотел писать.
HaohaiZi писал(а):
Update 2: что-то перестало работать... (
Попробуйте организовать шорткаты не с помощью автоматора и сервисов, а с помощью одной из упомянутых мной (или других) программок. Возможно, будет стабильней и быстрей. Я этими программами не пользуюсь, поэтому инструкций с картинками не составлю, смысл такой: назначить шорткат на выполнение терминальной команды /Applications/changeInput "Wubi Xing"
Зарегистрирован: 28.12.2013 Сообщения: 24 Откуда: China, P. R.
Добавлено: Сб Янв 11, 2014 11:38
Прошло какое-то время и можно сделать некоторые выводы:
переключение работает нормально. Иногда (редко) не включается китайский ввод. Флажок китайского переключается, а вот система вводит латиницу, т.е. иероглифы не подтягиваются. Наверное это связано как-то с особенностью китайского ввода. С Русским такого замечено не было.
Всем еще раз большое спасибо за поддержку!
Зарегистрирован: 28.12.2013 Сообщения: 24 Откуда: China, P. R.
Добавлено: Чт Сен 17, 2015 12:35
Здравствуйте!
Может быть кто-нибудь знает появилось ли решение для переключения языков сочетанием клавиш - конкретное сочетания для включения конкретного языка. Уж очень не удобно при наличии 4-ых способов вводу перекручивать все по порядке.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы можете добавлять приложения в этом форуме Вы можете скачивать файлы в этом форуме