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

Ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.
Ограничения: максимум вложений в сообщении — 3 (3 осталось), максимальный размер всех файлов — 300 КБ, максимальный размер одного файла — 100 КБ
Снимите пометку с вложений, которые необходимо удалить
Перетащите файлы сюда или используйте кнопку для добавления файлов
Вложения и другие параметры
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

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

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

Сообщения в этой теме

Автор Тайльнемер
 - августа 27, 2013, 18:00
Да :yes:

Rwseg тут ещё баг транслятора нашёл, который тоже обходится правкой klc-файла вручную.
(Если в одной раскладке присутствуют символы верхних плоскостей уникода и последовательности из нескольких символов («лигатуры»), то раскладка косячится. Выход — переписать в klc-файле символы верхних плоскостей в виде лигатур из utf-16-суррогатов (как, собственно, и делает сам транслятор, когда в раскладке нет других лигатур))
Автор Python
 - августа 27, 2013, 15:25
Строго говоря, редактор MSKLC позволяет не все, что может его транслятор. Например, если отредактировать вручную исходники (.klc), а затем их скомпилировать, можно добавить в раскладку последовательности из нескольких мертвых клавиш, что непосредственно в редакторе раскладок сделать невозможно.
Автор Тайльнемер
 - августа 27, 2013, 04:43
Цитата: arseniiv от августа 26, 2013, 21:36
Можно сделать переключаемый режим типа такого (у меня)
Нихачу.
Буду мучить раскладки.

MSKLC может вместо того, чтобы билдить dll, выдать сишный исходник этой dll (у утилиты $MSKLC$\bin\i386\kbdutool.exe ключ -s). Правя эти исходники, можно получить больше клавиш-модификаторов, чем позволяет MSKLC, и ещё всякие другие вещи.
Автор arseniiv
 - августа 26, 2013, 21:36
Цитата: Тайльнемер от августа 20, 2013, 09:38
1) В коде на различных языках программирования встречаются всякие разные сочетания ASCII-символов. Автозамена будет мешать писать их.
2) Для других членов семьи клавиатура должна вести себякак можно более стандартно.
Можно сделать переключаемый режим типа такого (у меня):

hotstringsEnabled := true
>!\::
  hotstringsEnabled := not hotstringsEnabled
  if hotstringsEnabled {
    SoundPlay, *64
  } else {
    SoundPlay, *-1
  }
return
#If hotstringsEnabled
...замены...
#If
Автор O
 - августа 22, 2013, 02:39
Цитата: Тайльнемер от августа 20, 2013, 10:06
Цитата: mnashe, скрипт его
::1/0::∞


У меня бесконечность даёт 8 и «инициатор замены». А ноль так же даёт ∅.
Автор Тайльнемер
 - августа 20, 2013, 10:06
Цитата: mnashe, скрипт его
::1/0::∞
Автор Nevik Xukxo
 - августа 20, 2013, 09:52
Скорей всего не пользуюсь хоткеями. Потому что не знаю что это. И влом курить доки.
Автор Тайльнемер
 - августа 20, 2013, 09:38
Мнаше, это понятно, Но дело в том, что я не хочу использовать обычные символы ASCII как инициаторы автозамены. По трём причинам:
1) В коде на различных языках программирования встречаются всякие разные сочетания ASCII-символов. Автозамена будет мешать писать их.
2) Для других членов семьи клавиатура должна вести себякак можно более стандартно.
3) Я хотел минимизировать количество вводимых символов — вместо трёх (буква, диакритический знак, инициатор замены) вводить два (буква, диакритический знак являющийся инициатором замены).

Сейчас я могу сделать раскладку, в которой на AltGr+клавиша висят все нужные навесные диакритики, а в AHK прописать замену навесных на прекомбинированные (скрипт генерируется на основе списка канонических декомпозиций с официального сайта Уникода).
Но очень  ограничивает то, что все символы надо пихать в раскладку, а использовать горячие клавиши AHK нельзя.
Так что моя идея, похоже, нереализуема в полную силу — раскладки поддерживают только один дополнительный регистр — AltGr, а я хотел несколько.
Автор mnashe
 - августа 20, 2013, 08:34
Цитата: Тайльнемер от августа 20, 2013, 06:01
Например, я делаю горячую клавишу для ввода навесного акута:
>#'::SendInput {U+0301} ; combining acute accent
А теперь я хочу, чтобы буква 'a' в комбинации с навесным акутом заменялась на прекомбинированную 'á'.
Если написать
:*?:á::á ; преобразовать навесную диакритику в прекомбинированную
то работать не будет из-за того, что навесной акут набирается горячей клавишей. (Когда я набираю навесной акут из раскладки — замена работает.)
Можно ли сделать так, чтобы для строковой автозамены было неважно, каким способом набран символ?
Нельзя.
Но добиться описанной цели (если я понял её правильно) можно вполне.
Для этого нужно просто расположить автозамены в правильном порядке: сначала все прекомбинированные сочетания, а потому уже навесные. Тогда, к примеру, ^' будет давать навесной акут, а a^' — прекомбинированную á, o^' → ó и т.д.
Так оно сделано у меня. Мне не приходится волноваться, каким образом я ввожу диакритику — последовательность всегда одна и та же, а результат зависит от наличия соответствующих прекомбинаций (ы^' даёт два символа, а u^' — один).

Цитата: Тайльнемер от августа 20, 2013, 07:46
Придётся оставить диакритику в раскладке :(
Не придётся, если сделать как я описал.

Да, и SendInput не нужен, достаточно обычных автозамен (но нужна уникодная версия, конечно).
Автор Тайльнемер
 - августа 20, 2013, 07:46
Нашёл в документации, что так нельзя:
ЦитироватьHotstrings can never be triggered by keystrokes produced by any AutoHotkey script. This avoids the possibility of an infinite loop where hotstrings trigger each other over and over.
На форуме AHK уже много лет подряд появляются предложения сделать возможность включения такого режима. Разработчик отвечал, что сделает, вот только до сих пор, вроде как, не сделал.

Жаль, я хотел оставить раскладку стандартной, и все выкрутасы сделать на AHK, чтобы всё было в одном месте.
Придётся оставить диакритику в раскладке