А еще меня давно раздражают сочетания клавиш (по-моему, КО, гораздо удобнее тыркать одну клавишу, чем две). Нет, я, наверное, понимаю, почему по традиции используются сочетания, но хочу без них. Итак, находясь в Mac OS X, я нашел программу KeyRemap4McBook, которая пришла на смену менее удобной программе DoubleCommand (отмечу к слову, что я удалял эту программу два дня, пока не понял в точности что нужно сделать, что стереть ее с лица моего макбука,
С помощью KeyRemap я назначил русскую раскладку на правую клавишу Cmd, а английский - на левую. Если запомнить, что тыкаешь правым большим пальцем для русского, а левым для английского, то процесс набора текста ускоряется (у меня, во всяком случае).
Также я назначил, чтобы сочетание Shift+Delete делало "Delete в стиле PC" - то есть удаляло символ справа от курсора. Для удаления символа слева от курсора используется "Delete в стиле Mac", который любой ПК-пользователь назовет "Backspace".
Но когда возникла необходимось поработать в Windows, стало понятно, что надо звать на помощь AutoHotKey. И вот какая проблема тут возникла.
Мне надо, чтобы одиночно нажатая клавиша LWin ( левый Windows, или левый Cmd) вызвала переключение на английскую раскладку, но чтобы в сочетаниях с другими клавишами она работала как Ctrl - потому что именно сочетание Cmd + V (а не Ctrl + V) уже вызвало у меня привычку в Mac OS X.
На данный момент я не знаю как решить эту задачу в общем случае, перебрал с десяток вариантов, но все время что-то не то.
Поэтому вот частное решение.
RWin::PostMessage, 0x50, 2, 68748313,, A LWin::PostMessage, 0x50, 2, 67699721,, A LWin & sc02f::send {Ctrl Down}{vk56}{Ctrl Up} ;paste LWin & sc02e::send {Ctrl Down}{vk43}{Ctrl Up} ;copy LWin & sc02d::send {Ctrl Down}{vk58}{Ctrl Up} ;cut LWin & sc02c::send {Ctrl Down}{vk5A}{Ctrl Up} ;undo +BS::Send, {Del}
Решение заключается в том, чтобы для конкретных сочетаний работы с буфером обмена и отменой происходил ремаппинг. Хитрость тут в том, что по-разному воспринимаются клавиши с буквами z,x,c,v (я,ч,с,м) в разных раскладках. Поэтому используются скан-коды и виртуальные клавиши.
