Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

Допраскладки

Автор Iskandar, сентября 25, 2011, 14:33

0 Пользователи и 1 гость просматривают эту тему.

Iskandar

А кстати, есть ли в Винде возможность добавить раскладки клавиатуры так, чтобы они вызывались не переключением стандартного Shift + Alt/Ctrl, а какими-то другими клавишами?

Дело в том, что для обычной жизни в компе обычно достаточно двух раскладок: русской и аглицкой. Все остальные раскладки требуют редко, от случая к случаю, и если навешать на Shift + Alt пяток раскладок, жить расхочешь их переключать, чтобы просто докопаться до аглицкой и потом обратно до русской...

Bhudh

Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Iskandar

А... И всё? Никогда не задумывался над сабжем и потому не долезал дотуда :)
Спасибо

Bhudh

Пожалуйста. Я, правда, никогда цифры не юзал — лениво до верхнего ряда тянуться. Ну так у меня и языков стоит всего три.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Iskandar

Хотя нет. Вспомнил, что такое уже вроде когда-то давно делал.
Однако всё равно не очень удобно. Хорошо бы, чтобы Shift + Alt переключало только с русского на английский и обратно. А остальные клавы включались только допсочетаниями.

Bhudh

А если вдруг забыл, какое сочетание⁈ :uzhos:

myst вроде писал, что для этого надо в реестре копаться... Но точно не помню.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

mnashe

У меня так:
Alt+Shift последовательно прокручивает раскладки.
Ctrl+Shift+1 выбирает английскую раскладку. Альтернатива (через AHK) – Win+1.
Ctrl+Shift+2 выбирает русскую раскладку йцукенг. Альтернатива – Win+2.
Ctrl+Shift+3 выбирает русскую фонетическую (для жены). Альтернатива – Win+3.
Ctrl+Shift+4 выбирает ивритскую раскладку. Альтернатива – Win+4.
Ctrl+CapsLock (через AHK) переключает между йцукенг и qwerty. Если сейчас выбрана английская, выбирает русскую, иначе выбирает английскую.

Дать код?
Адепт единственного числа и безродового склонения
שָׁלוֹם עֲלֵיכֶם!

Bhudh

Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Hellerick

Я работаю на четырех компьютерах, и на всех разные клавиши переключения раскладок.  :(



Квас

Цитата: Iskandar от сентября 25, 2011, 15:30
Что такое АНК?

Это вообще мегавещь!
www.autohotkey.com
Хорошо, что mnashe, спокойный популяризатор, упомянул раньше, чем я, безумный популяризатор. :D

У меня две раскладки: русская и английская. Для удобства переключения написал функцию:

SetLayout(Layout)
; The function accepts hexadecimal layout code or one of specific strings as its argument.
{
ControlGetFocus, C, A
If (Layout = "English")
PostMessage, 0x50,, 0x4090409, %C%, A
Else If (Layout = "Russian")
PostMessage, 0x50,, 0x4190419, %C%, A
Else
PostMessage, 0x50,, %Layout%, %C%, A
}

Её можно до бесконечности дописывать, но мне не надо было. Английская раскладка включается левым контролом, русская — правым:

; Включение раскладки по Ctrl:
~LControl::SetLayout("English") ; по левому - английская
~RControl::SetLayout("Russian") ; по правому - русская


; Чтобы клавиши сохранили обычную функциональность, нужно хотя бы раз их использовать в качестве префиксов.
LControl & Ins::
Input, BufferLabel, L1
SendInput, ^{sc2E}
Buffer%BufferLabel% := Clipboard
Return
RControl & Ins::
Input, BufferLabel, L1
SendInput, ^{sc2E}
Buffer%BufferLabel% := Clipboard
Return
+Ins::
Input, BufferLabel, L1
Clipboard := Buffer%BufferLabel%
SendInput, ^{sc2F}
Return


В качестве бонуса здесь Ctrl+Ins прикрепляет к каждой клавише «буфер»: много буферов бывает удобно при редактировании (вставка через Shift+Ins).

Вместо раскладок на латинской основе использую скрипты. Например, французская:

; / - accent grave & é & la cedille & œ

:*?C:e/::é
:*?C:o/::œ
:*?C:c/::ç
:*?C:E/::é
:*?C:O/::Œ
:*?C:C/::Ç
:*?C:a/::à
:*?C:A/::À
:*?C:u/::ù
:*?C:U/::Ù

; ] - è

:*?C:e]::è
:*?C:E]::È

:*?C:i]::ï
:*?C:u]::ü
:*?C:I]::Ï
:*?C:U]::Ü

; [ - l'accent circonflexe

:*?C:a[::â
:*?C:e[::ê
:*?C:o[::ô
:*?C:u[::û

:*?C:A[::Â
:*?C:E[::Ê
:*?C:O[::Ô
:*?C:U[::Û

; { - le trema

:*?C:i{::ï
:*?C:e{::ë
:*?C:u{::ü

:*?C:I{::Ï
:*?C:E{::Ë
:*?C:U{::Ü


Включение/выключение можно организовать по любой клавише.

Если вы установите себе несколько раскладок, то циклически переключаться становится неудобно, любой AHK бессилен. Но циклическое переключение — всё равно зло, так что лучше повесить включение раскладок на комбинации. Комбинации AHK позволяет использовать любые; можно сделать по примеру моих контролов, научив функцию SetLayout понимать нужные раскладки.
Пишите письма! :)

Iskandar

Короче, проще всего назначить в Пунте клавишу на переключение рус / англ (есть, оказывается, такая функция, например, на месте Капса, я всё равно не блондинка, он мне не нужен), а всё на остальное - поназначать клавиш.

Iskandar

Хотел установить персидскую клаву, это какой-то  :fp:
Букву П билгейцовцы, шоб они были здоровы, упёрли на предполагаемую клавишу, что над Энтером и которой на наших клавах обычно не бывает. А ведь во всех он-лайновых версиях она на месте M/Ь... Идиоты...

Квас

В принципе, можно писать AHK-раскладки не через автозамены, а через горячие клавиши (для интереса делал армянскую). Расположение клавиш при этом зависит только от фантазии. Но «интеллектуальности» трудно достигать (например, чтобы автоматически вставлялась начальная/конечная/срединная формы).
Пишите письма! :)

Квас

Цитата: Квас от сентября 25, 2011, 15:45
Если вы установите себе несколько раскладок, то циклически переключаться становится неудобно, любой AHK бессилен.

Хотя почему это так пессимистично? Делаем комбинацию Alt+Shift, которая в зависимости от текущей раскладки включает русскую или английскую, имеем в точности
Цитата: Iskandar от сентября 25, 2011, 14:43
Хорошо бы, чтобы Shift + Alt переключало только с русского на английский и обратно.

Iskandar, придумайте дизайн — я вам скрипт напишу.

Пишите письма! :)

Iskandar

Цитата: Квас от сентября 25, 2011, 16:02
Iskandar, придумайте дизайн — я вам скрипт напишу.

Дизайн чего, простите?

mnashe

Мой скрипт:
LangSwitch(layout)
{
  ControlGetFocus,ctl,A
  SendMessage, 0x50, 0, layout, %ctl%, A ;WM_INPUTLANGCHANGEREQUEST
}

GetInputLocaleId()
{
  SetFormat, Integer, H
  WinGet, WinId,, A
  ThreadId:=DllCall("GetWindowThreadProcessId", UInt, WinId, UInt, 0)
  Return DllCall("GetKeyboardLayout", UInt, ThreadId, UInt)
}

#1::LangSwitch(0x04090409) ; to English

#2::LangSwitch(0xF0C10419) ; to Russian

#4::LangSwitch(0xF0C0040D) ; to Hebrew

^+`::
InputLocaleId:=GetInputLocaleId()
MsgBox, %InputLocaleId%

^CapsLock::
If (GetInputLocaleId()==0x04090409)
{
  LangSwitch(0xF0C10419)
  return
}
LangSwitch(0x04090409)
return
Его надо видоизменить, поскольку конкретный идентификатор нужной раскладки на каждом компьютере свой (если русская раскладка, как у меня, нестандартная).
Для того, чтобы узнать идентификатор текущей раскладки, нужно нажать Ctrl+Shift+`. Полученное число и нужно прописать в нужные места скрипта (вместо 0xF0C10419).
Адепт единственного числа и безродового склонения
שָׁלוֹם עֲלֵיכֶם!

Iskandar


Квас

Цитата: Iskandar от сентября 25, 2011, 16:14
Цитата: Квас от сентября 25, 2011, 16:02Iskandar, придумайте дизайн — я вам скрипт напишу.
Дизайн чего, простите?

Чем что включать/выключать/переключать.
Пишите письма! :)

mnashe

А у меня маленький, простой и всё что надо делает :dayatakoy:
Более простой — ненадёжен. Например, если есть две русские раскладки, он переключает на последнюю использованную, а не на ту, на которую просят.
Адепт единственного числа и безродового склонения
שָׁלוֹם עֲלֵיכֶם!

Квас

Цитата: mnashe от сентября 25, 2011, 19:58
Более простой — ненадёжен. Например, если есть две русские раскладки, он переключает на последнюю использованную, а не на ту, на которую просят.

Да, был какой-то такой глюк. А механику не пояснишь? Я DllCall-ы только из чужих скриптов выдирать умею.
Пишите письма! :)

mnashe

Цитата: Квас от сентября 25, 2011, 20:34
А механику не пояснишь? Я DllCall-ы только из чужих скриптов выдирать умею.
Именно это я и сделал: нашёл на форуме подходящий скрипт и переделал под себя.
Так что не поясню, ибо не знаю :)
Адепт единственного числа и безродового склонения
שָׁלוֹם עֲלֵיכֶם!

Квас

mnashe, разница в наших функциях переключения раскладки — то, что у меня аргумент пропущен, там где у тебя 0. Неужели это так критично? :???
Пишите письма! :)

Iskandar

Цитата: Квас от сентября 25, 2011, 19:51
Чем что включать/выключать/переключать.

А... Надо подумать
Спасибо

Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр