Mahou icon indicating copy to clipboard operation
Mahou copied to clipboard

Сниппеты работают не правильно

Open EngineExt opened this issue 5 years ago • 9 comments

У меня 2 языка, Румынская(3 раскалдки Традиционная/Стандарт/Программистская) и Русская. У румынской 3 раскладки(и конечно же символы разные вводятся на одной и той-же клавише).

Так вот Сниппеты с "@"

([email protected]) Вставляются как "Yourvemail.here"

Снипетты с "()-"

Mahou (魔法) - Magical layout switcher Вставляются как "Mahou )魔法= + Magical layout switcher."

Галочка "Переключать на предполагаемую раскладку" не лечит это а делает работу странее. https://youtu.be/6al3MasD8fU

EngineExt avatar Jan 07 '20 13:01 EngineExt

Во первых не включена ли функция "Смена раскладки в конверт выделения" (и тем более +), если да, попробуй без неё. (и включи желательно вместо них "Считать раскладку для всего слова в КВ", т.к. результат "Переключать на предполагаемую раскладку" может зависеть от неё)

Ну в общем всё из-за того что сниппеты "вводятся твоей раскладкой"(вероятно из-за функции описанной выше), этого можно избежать в latest-commit версии если использовать функцию __paste() в сниппетах, т.е.:

->eml
====>__paste([email protected])<====

И будет использоваться "вставка" текста.

Нужно будет наверное все сниппеты изменить таким образом.

P.S. Для обновления до latest-commit:

  1. Во вкладке "Обновления" поставить канал обновлений на LatestCommit(Beta), и обновиться как обычно(проверить, скачать обновление)
  2. На странице: https://github.com/BladeMight/Mahou/releases/tag/latest-commit есть постоянно авто-обновляемые сборки. (если не знаешь какую брать - Release_x86_x64.zip)

BladeMight avatar Jan 07 '20 13:01 BladeMight

"Смена раскладки в конверт выделения"

Включена мне она нужна конечно же. Но я проверил без неё и всёравно результат такой-же.

__paste([email protected])

Кстати да так работает отлично. Странно что работает через "ввод" изначально а не через "вставку" поскольку больше проблем чем пользы от этого.

EngineExt avatar Jan 07 '20 13:01 EngineExt

Странно что работает через "ввод" изначально а не через "вставку" поскольку больше проблем чем пользы от этого.

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

UPD: Посмотрел в коде, таки есть то о чём я писал, зависит от того какие раскладки выбраны во вкладке "Раскладки" для #1 и #2. Может сейчас что-то придумаю...

BladeMight avatar Jan 07 '20 14:01 BladeMight

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

BladeMight avatar Jan 07 '20 14:01 BladeMight

Кстати это же и в подсказке над галочкой можно прочитать что будут использоваться "коды клавиш", а не "юникод символы

Да тоже прочитал сейчас сам это, и она была включена. Сама по себе функция "Исправление кодов клавиш" очень нужна иначе для клавиатур QWERTZ и разного рода раскладок будет не правильно конвертировать текст из одного языка в другого. Мб. поставить игнор для Сниппетов как вариант.

EngineExt avatar Jan 07 '20 14:01 EngineExt

нужна иначе для клавиатур QWERTZ

Ну для QWERTZ есть другое исправление - "Исправление для QWERTZ клавиатур" во вкладке "Раскладки".

Мб. поставить игнор для Сниппетов как вариант

Или использовать __paste во всех сниппетах.

BladeMight avatar Jan 07 '20 14:01 BladeMight

"Исправление для QWERTZ клавиатур" во вкладке "Раскладки".

Да тогда с ней будет неправильно конвертировать абракадабру из русских буков в правильное румынское. Пример русские "жэхъ" это румынские "şţăîâ", со включённой опции "Исправление для QWERTZ" он исправляет в "öäüîâ" вместо "şţăîâ" Я уверен это актуально и для других языков где есть такого рода буков. https://youtu.be/Wq9NycfEAj8

Или использовать __paste во всех сниппетах.

Ну или так, всё же лучше чем городить костыли в коде.

EngineExt avatar Jan 07 '20 14:01 EngineExt

Пример русские "жэхъ" это румынские "şţăîâ", со включённой опции "Исправление для QWERTZ" он исправляет в "öäüîâ" вместо "şţăîâ"

Ну вообще я делал эту функцию для немецкой раскладки, #107. Похоже для всех раскладок - это не работает...

BladeMight avatar Jan 07 '20 14:01 BladeMight

Установил 3 раскладки румынской, и 1 русская.

Ну не знаю у меня с обычной клавиатурой QWERTY, кроме как только "Считать раскладку для всего слова в КВ", без остальных(исправление кодов клавиш, смены раскладки в конверт выделения) работает нормально, с твоими раскладками. Если выключить "Считать раскладку для всего слова в КВ", и включить "исправление кодов клавиш", тогда вообще странно конвертирует: жэхъ => şţфш => жэфш ... Если включить "смены раскладки в конверт выделения", стало еще хуже: жэхъ => ;'[] => Б=Ёё => <=~` => б)17=> ... => б317 Если включить +, то уже лучше: жехъ => şţai => жефш

Во всех этих режимах результат изменился, и не смог вернуться в исходную...

А вот без "Исправления кодов клавиш" и "Смена раскладки в Конверт выделения", т.е. только "Считать раскладку для всего слова в КВ", работает нормально: жэхъ => şţăî => жэхъ

А тут результат не поменялся, т.е. даже вернулся обратно.

BladeMight avatar Jan 07 '20 14:01 BladeMight