Очень многие пользователи используют несколько ОС на одном компьютере (Windows, Mac OS X, Linux). Одни используют загрузчики и сначала работают в одной среде, потом перегружаются во вторую. Другие используют виртуальные среды и работают в обеих ОС одновременно (VMWare, Paralles, VirtualBox, Hyper-V). Я работаю в связке Mac OS X Mountain Lion + Windows 7 (VMWare Fusion).
В определенный момент я начал испытывать дискомфорт при использовании горячих клавиш, работая в обеих ОС одновременно. Приведу примеры:
- Cmd+C, Cmd+V, Cmd+X (Ctrl+C, Ctrl+V, Ctrl+X) - то есть горячие клавишы редактирования документов.
- Переключение между языками (Cmd+Space - Ctrl + Shift)
- Раскладка клавиатуры Apple Keyboard отличается от PC-раскладки, например символы точки, запятой, двоеточие и т.д.
Такие мелкие отличия постоянно сбивали и приходилось выполнять одну и туже команду несколько раз, а иногда и три и четыре раза. Поэтому хотелось получить одинаковую раскладку во всех ОС.
Я использую клавиатуру Apple Wireless Keyboard. По удобству Apple раскладка меня всем устраивает, поэтому хотелось, чтобы в ОС Windows было тоже самое.
Я использую клавиатуру Apple Wireless Keyboard. По удобству Apple раскладка меня всем устраивает, поэтому хотелось, чтобы в ОС Windows было тоже самое.
В сети Интернет приводится множество примеров, как можно решить проблему одинаковой раскладки:
Большинство методов малофункциональны, не всегда отрабатывают или вовсе используют PC-раскладку. Испробовав множество решений, выработал свое видение.
- Правка реестра
- Использование различных программ мапинга клавиш
- Установка РС-раскладки в Mac OS X
Большинство методов малофункциональны, не всегда отрабатывают или вовсе используют PC-раскладку. Испробовав множество решений, выработал свое видение.
Для решения проблемы была выбрана программа AutoHotKey (http://www.autohotkey.com). AutoHotKey - бесплатная open-source программа для создания макросов и автоматизации, позволяющая упростить повторяющиеся задачи.
- Скачиваем с сайта программу и устанавливаем ее в ОС Windows.
- Запускаем программу. После появления программы в трее, правый клик по иконке -> Edit This Script.
- В открывшемся окне блокнота копируем скрипт:
;==========================================
;Смена раскладки клавиатуры через cmd+Shift+Space
;==========================================
#+sc039::PostMessage, 0x50, 2, 0,, A
;#sc039::PostMessage, 0x50, 2, 0,, A ; Cmd+Space работает в Windows XP
;#sc039::PostMessage, 0x50, 2, 0,, A ; Cmd+Space работает в Windows XP
;======================================================
;Выполнение команд независимо от языка через cmd+{Key}:
; Undo, Cut, Copy, Paste, Save, Find
;======================================================
#sc02C::SendInput ^{sc02C} ; Undo cmd+z
#sc02D::SendInput ^{sc02D} ; Cut cmd+x
#sc02E::SendInput ^{sc02E} ; Copycmd+c
#sc02F::SendInput ^{sc02F} ; Paste cmd+v
#sc031::SendInput ^{sc031} ; New cmd+n
#sc01E::SendInput ^{sc01E} ; Select All cmd+a
#sc01F::SendInput ^{sc01F} ; Save cmd+s
#sc021::SendInput ^{sc021} ; Find cmd+f
#sc018::SendInput ^{sc018} ; Open cmd+o
#sc011::SendInput ^{F4} ; Close cmd+w
#sc014::SendInput ^{sc014} ; New Tab cmd+t
#sc013::SendInput ^{sc013} ; Reload cmd+r
;==============================================================
;Выполнение команд независимо от языка в MS Office через cmd+{Key}:
; Bold, Italic
;==============================================================
#sc030::SendInput ^{sc030} ; Bold cmd+b
#sc017::SendInput ^{sc017} ; Italic cmd+i
;==============================================================
;Корректное отображение символов в соответсвии с RU/ENG Apple Keyboard
;==============================================================
$+5::CheckRus(":","%") ; Двоеточие через Shift+5
$+6::CheckRus(",","^") ; Запятая через Shift+6
$+7::CheckRus(".","&") ; Точка через Shift+7
$+8::CheckRus(";","*") ; Точка с запятой через Shift+8
$+8::CheckRus(";","*") ; Точка с запятой через Shift+8
$+/::CheckRus("?","?") ; Вопрос через Shift+/
CheckRus(rus,eng)
{
SetFormat, Integer, H
WinGet, WinID,, A
ThreadID:=DllCall("GetWindowThreadProcessId", "Int", WinID, "Int", 0)
InputLocaleID:=DllCall("GetKeyboardLayout", "Int", ThreadID)
if(InputLocaleID == "0x4190419")
{
Send %rus%
}
if(InputLocaleId == "0x4090409")
{
SendRaw %eng%
}
Return
}
4. Сохраняем файл.
Примечание: По умолчанию файл хранится в папке C:\Users\%Username%\Documents\AutoHotkey.ahk
5. Правый клик по иконке AutoHotKey в трее -> Reload This Script. Перезагрузка не требуется.
6. Для выполнения автоматической загрузки при старте Windows необходимо в папке Пуск -> Все Программы -> Автозагрузка создать ярлык на файл C:\Users\%Username%\Documents\AutoHotkey.ahk
P.S. К сожалению так и не удалось реализовать переключение языка через Cmd+Space в Windows 7. Данная комбинация жестко зашита в код ОС и не перехватывается программой.
P.S.S Любые предложения и доработки можно легко добавить, скриптовый язык очень простой :).
1. Win8 смена языка по умолчанию Win+Space ))))
ОтветитьУдалить2. Cmd+V в Екселе на Вин8 вызывает не только вставку, но и выпадающее меню :(
Win8 не пользуюсь ((( Слишком много особенностей.
УдалитьОбратил внимание, что через Parallels в режиме Coherence в Win7 все работает на ура, без каких либо дополнительных программ и скриптов.
Спасибо большое. Архиполезный скрипт. Только вот мне надо найти для control + b и заменить на command + b. Не подскажите где найти таблицу символов?
ОтветитьУдалитьЭта связка меняется скриптом в разделе:
Удалить;==============================================================
;Выполнение команд независимо от языка в MS Office через cmd+{Key}:
; Bold, Italic
;==============================================================
#sc030::SendInput ^{sc030} ; Bold cmd+b
#sc017::SendInput ^{sc017} ; Italic cmd+i
Вы можете сами поймать все сочетания с помощью AutoHotkey:
1) Откройте AutoHotkey
2) Menu -> Key history and script info (Ctrl+k)
3) Нажать много раз Control, затем F5 (или Fn+F5) чтобы увидеть результат по клавише Control (Колонка SC = 01D)
4) Нажмите много раз b, затем F5 (или Fn+F5) чтобы увидеть результат по клавише b (Колонка SC = 030)
5) Добавьте связку в конфиг:
Control = ^
Cmd = #
#sc030::SendInput ^{sc030} ;
Означает Отправить связку Cmd+b вместо Ctrl+b
У меня на Windows 7 под VirtualBox для Cmd+Space работает вот это:
ОтветитьУдалить#Space::PostMessage, 0x50, 2, 0,, A ; 0x50 is WM_INPUTLANGCHANGEREQUEST
для смены языка нужна простая программа где можно задать комбинацию для переключения
ОтветитьУдалитьpunto.yandex.ru
работает отлично
Огромное спасибо!
ОтветитьУдалитьТолько есть один нюанс: функция CheckRus(rus,eng), например для запятой и точки на 6 и 7, почему-то не работает в Скайпе (переключение языка действует на все клавиши, кроме переназначенных с помощью CheckRus — они выводят знаки в соответствии с первоначальным языком) и Коммандной строки (не выводит значение переназначенных с CheckRus клавиш вообще).
Помогите пожалуйста.
Casino games on offer in Asia - Goyang FC
ОтветитьУдалитьAsia Gaming 바카라가입쿠폰 is one of the most popular gaming op 사이트 providers in the world. They are licensed 윌리엄힐 by 일반인후방 a Curacao authority and also conduct their 토토가입머니 own casino games.