https://www.duolingo.com/dilnicki

Юзерскрипт уведомляющий о неверной раскладке

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

Для его работы в Chrome желательно установить плагин https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo

Для Firefox: https://addons.mozilla.org/ru/firefox/addon/greasemonkey/

А также сам скрипт https://openuserjs.org/scripts/ForgetMeNow/Doulingo_Layout_Alarm

Поддерживается пока только английский и русский языки, но можно добавить и другие.

3 года назад

27 комментариев


https://www.duolingo.com/KznTown

Давно хотел написать по данной тематике или даже снять видео о пользе владения техникой слепой печати. Лучшего тренажера чем duolingo в сети я еще не встречал (все прочие тренажеры с компьютеры мной были беспощадно удалены), и это помимо того, что основная функция duolingo это обучение языку. В свое время я остановил занятия в дуолинго и освоил метод слепой печати сначала на русском языке (на это дело ушел где то месяц по различным чужим методикам), затем освоил за пол-часа печатание на английской раскладке по своей методике. Но вся прелесть дуолинг в том, что здесь постоянно приходится менять раскладку. И даже если вы освоили слепую печать на русском и английских раскладках, в первое время у вас будут постоянные ошибки. Нужно оказалось еще и психологически быстро переключаться между языками. На это у меня ушло 3 дня :) Теперь все чаще и чаще печатаю слова без ошибок. Даже если вы забыли как правильно написать то или иное слово, пальцы это сделают за вас. Да и помимо всего прочего, если вы владеете слепой печатью занятия на дуолинго проходят с еще большим удовольствием :) И кстати насчет скрипта. Перепечатать текст (в случае неправильной раскладки) лично для меня только плюс. Даже при переводе на русский стараюсь написать максимально из того что можно перевести :) Всегда пишу этот, эти, находятся и т.д Хотя имею полное правл их опустить и это не будет считаться ошибкой :) Осваивайте лучще метод слепой печати и не думайте о скриптах!)))))) Всем удачи! :)

3 года назад

https://www.duolingo.com/Akkatone
Akkatone
  • 15
  • 14
  • 11
  • 6
  • 6

А Вы метеор))))

У меня на освоение русской раскладки ушло около полугода, из которого большую часть времени пришлось потратить на наращивание скорости тупым набиванием разных текстов.

"Психологического переключения" между языками никогда не наблюдал. Т.е. при изучении языков, когда порядок тыкания кнопочек еще не засел плотно в мышечную память, регулярно вместо иностранных символов вылазят живущие на их местах русские. Проходит по мере увеличения количества повторных наборов слова.

3 года назад

https://www.duolingo.com/shizeeg

я научился touch-typing'у (не очень нравится русскоязычный термин) где-то в 2002-м году, пройдя курс Соло где-то до середины, сначала для ЙЦУКЕН, потом, годом позже, освоил и QWERTY. Кнопки никогда не путаю ибо в мозгу буквы будто на разных кнопках (реально). Пробовал Dvorak, но быстрее 33 cpm (зн. в секунду), не разогнался и бросил. На QWERTY рекорд 55 wpm (275 зн. с.) (nitrotype.com), на ЙЦУКЕН - 298 cpm (klavogonki.ru), в среднем печатаю где-то 200cpm на обеих раскладках. Ни разу не пожалел, что сделал над собой усилие когда-то. Всем настоятельно рекомендую. Есть неплохие online-тренажёры для этого (те же клавогонки), но я бы рекомендовал klavaro, она умеет любую раскладку и язык, ну почти. Успехов всем!

3 года назад

https://www.duolingo.com/FieryCat
FieryCat
  • 25
  • 24
  • 13
  • 4
  • 1387

Ух ты! Klavaro есть в репозитарии. Надо попробовать. Спасибо

{@fc=_t_userscript}

3 года назад

https://www.duolingo.com/shizeeg

Всегда пожалуйста. Если иксов нет (ssh-сессия например), то можно ещё gtypist использовать, а под KDE есть ktouch.

3 года назад

https://www.duolingo.com/FieryCat
FieryCat
  • 25
  • 24
  • 13
  • 4
  • 1387

Кнопки никогда не путаю ибо в мозгу буквы будто на разных кнопках (реально).

Думаю дело не в кнопках: скорее всего память работает на уровне слов или групп символов

3 года назад

https://www.duolingo.com/shizeeg

видимо так и есть.

3 года назад

https://www.duolingo.com/KznTown

К сожалению я уже не могу проверить за сколько бы освоил русскую раскладку сейчас. По своей методике. Т.к уже владею этим навыком. На запоминание английской же раскладки у меня ушло где -то 30 минут. Хотя очень боялся приступать к изучению английской раскладки. Долго боялся и долго думал :) В итоге - пол-часа и 26 букв освоены почти мгновенно. Толи это дело в методике, которую сам же и придумал, то ли дело в том, что я уже намучался с освоением русской расклдаки. К сожалению, не уловил этот момент.

3 года назад

https://www.duolingo.com/HeadwayCourse
HeadwayCourse
  • 18
  • 11
  • 10
  • 10
  • 2
  • 2

При вводе кирилицы туда, где должна быть латиница (и наоборот) скрипт издает звук.

Скрипт безусловно интересен и, судя по недавним постам на тему раскладок, кому-то точно будет полезен.

Но у меня к вам своеобразный вопрос-предложение. Раз уж основной посыл в том, что пользователь не смотрит на экран и печатает совсем не в той раскладке, не проще ли будет не прерывать его от этого увлекательного занятия, а позволить печатать дальше, аккуратно при этом подменяя все введенные им неправильные символы на правильные?

Приведу пример кода, дабы показать, что и реализовать это совсем не сложно:

var charset = {
en: "abcdefghijklmnopqrstuvwxyz",{@style=padding-left:30px;}
ru: "фисвуапршолдьтщзйкыегмцчня"{@style=padding-left:30px;},
en_special: {59: "ж", 188: "б", 192: "ё", 219: "х", 221: "ъ", 222: "э"}, // для "ю" нужна будет доп. проверка {@style=padding-left:30px;}
ru_special: {"ж": [";", ":"], "б": [",", "<"], "ё": ["`", "~"], "х": ["[", "{"], "ъ": ["]", "}"], "э": ["'", "\""], "ю": [".", ">"]}{@style=padding-left:30px;}
}; {@style=font-family:'Courier New';font-weight:bold;white-space:nowrap;overflow-x:auto;}

И в обработчике события keydown (а не keyup) сделать преобразование:

var wrong_lang = $(this).attr("lang") == "ru" ? "en" : "ru";
var key = e.key.toLowerCase();
var wr_index = charset[wrong_lang].indexOf(key);
if (wr_index != -1) {
key = charset[$(this).attr("lang")][wr_index];{@style=padding-left:30px;}
} else if (wrong_lang == "ru" \&\& charset.ru_special[key]) {
key = charset.ru_special[key][e.shiftKey \& 1];{@style=padding-left:30px;}
} else if (wrong_lang == "en" \&\& charset.en_special[e.keyCode]) {
key = charset.en_special[e.keyCode];{@style=padding-left:30px;}
}
if (e.shiftKey) key = key.toUpperCase(); // получим букву в ВЕРНОЙ раскладке {@style=font-family:'Courier New';font-weight:bold;font-weight:bold;white-space:nowrap;overflow-x:auto;}

Далее уже детали, типа дополнительных проверок (например, на ctrl/alt) и вставки полученной буквы в поле ввода. Причем пользователь, особенно не слишком внимательный, может даже и не понять, что дал ответ не в той раскладке :) И более того, ее можно вообще больше никогда не переключать, проходя все навыки на любой из них. Абсурд? Не знаю, для кого-то может быть. Но зато если делать, то наверняка :)

3 года назад

https://www.duolingo.com/FieryCat
FieryCat
  • 25
  • 24
  • 13
  • 4
  • 1387

Имхо, достаточно полезно, но для заявленной функциональности не эффективно. Объясняю:

  • Иногда надо написать слово не в той раскладке. Совсем не бред: я периодически, хоть и не часто, на следующем вопросе отрабатываю написание предыдущего, если сильно налажал. Посмотрю и удалю. Т.к. переделать задание сервер сразу не дает. Значит эта конвертация будет мешать.
  • Если пользователь "не заметит", то наверняка не смотрит на экран. Тогда нет необходимости сканировать массивы при каждом нажатии. Тем более отлавливать статусы клавиш и все их сочетания.

Как решение:

  • Достаточно отловить нажатие Enter. Т.е. конвертировать строку перед отправкой на сервер. Меньше кода, меньше ошибок в коде, меньше нагрузка.
  • Если пользователь вдруг очнулся, и увидел текст не в той раскладке до нажатия на Enter, можно предусмотреть хоткей, который запустит принудительную конвертацию в нужную раскладку, чтобы пользователь смог проконтролировать свой ввод.

А вообще, согласен с KznTown. Если ввел не в той раскладке, то эту проблему надо решать не скриптами, т.к. не везде они есть.

3 года назад

https://www.duolingo.com/HeadwayCourse
HeadwayCourse
  • 18
  • 11
  • 10
  • 10
  • 2
  • 2

Какая нагрузка, вы о чем. Это один обработчик и 20 строк кода, к тому же это клиентский JS, чуть ли не созданный для работы с событиями. Весь приведенный выше код + доп. проверки отрабатывается за 0.0006 с = 0.6 мс (код из одной строки "a = 10" занимает 0.1 мс) - это песчинка в море кода самого Duolingo. И потом, конвертировать перед отправкой? Во-первых, все равно придется обрабатывать каждый символ по отдельности (те же 0.6 мс), но зачем, ведь это же действие можно делать на этапе ввода. Во-вторых, на нажатие кнопки "Enter/Проверить" уже забиндены обработчики Дуо, которые сработают раньше вашего кода, и одним "return false" тут уже не обойтись. И, наконец, как вы и заметили, пользователь может-таки посмотреть на свой текст в середине набора, и, увидев тарабарщину, тут же (рефлекторно!) примется его удалять. Хоткей? Вы правда думаете, что большинство тех, кто печатает, не глядя на экран, пользуются горячими клавишами? :) И опять же, зачем, если всю замену можно делать на лету? Тут речь не об одном-двух продвинутых пользователях, а об общем юзабилити для всех (или хотя бы большинства). Например, я лично никогда не понимал тех, кто ставит PuntoSwitcher, но несмотря на это программа популярна и более того, даже среди программистов.

Для всех нестандартных редких случаев, типа "Google, Apple" или "отрабатывания написания предыдущего задания", достаточно будет добавить галочку (+ хоткей, если угодно) для того чтобы ввести нужный фрагмент без какой-либо замены.

И не забывайте, это лишь предложение как ЕЩЕ можно сделать, и всего лишь пример логики кода для общей картины.

P.S. Вон на форуме двумя темами выше, пользователь обращается к разработчикам, с целью добавить точь-в-точь то же самое.

3 года назад

https://www.duolingo.com/FieryCat
FieryCat
  • 25
  • 24
  • 13
  • 4
  • 1387

Я всего лишь предложил. Не видите место для оптимизации - ваше право. Не хотите - тем более.

3 года назад

https://www.duolingo.com/HeadwayCourse
HeadwayCourse
  • 18
  • 11
  • 10
  • 10
  • 2
  • 2

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

UPD. Ну сколько раз говорить - да не нужны мне примеры оптимизаций, потому что ... (читаем два первых предложения этого комментария внимательно!). Вы лучше, и вправду, перестаньте повсюду придираться к моим постам только лишь из-за того, что вам не дали открытый код "твикера".

3 года назад

https://www.duolingo.com/shizeeg

PuntoSwitcher в винде нужен для того, чтобы переключать раскладки по нажатию <Caps Lock>. Ведь сама по себе эта кнопка абсолютно бессмысленна и стоит на очень удобном месте, так почему бы не использовать её для переключения раскладок?

P.S.: почему этого нельзя сделать стандартными средствами этой OS, непонятно. P.P.S.: чего только люди не придумают чтобы не учиться нормально печатать. (no offense) =]

3 года назад

https://www.duolingo.com/FieryCat
FieryCat
  • 25
  • 24
  • 13
  • 4
  • 1387

Кстати, +1 за CapsLock: у меня именно он стоит на переключалку. И ScrollLock как индикатор.

3 года назад

https://www.duolingo.com/dilnicki

Хорошо тем, у кого только две раскладки.

3 года назад

https://www.duolingo.com/FieryCat
FieryCat
  • 25
  • 24
  • 13
  • 4
  • 1387

о, наш человек!

У меня вынесено из иксового конфига (Debian):

<pre>$ cat /etc/default/keyboard | grep XKBOPTIONS XKBOPTIONS="grp:caps_toggle,grp_led:scroll,compos:ralt" </pre>

Плюс, теоритически, раскладку можно переключать через dbus, но я не пользуюсь.

3 года назад

https://www.duolingo.com/dilnicki

Изначально я так и делал, но я подумал, что дальше в курсе могут попасться уроки, в которых есть названия, которые не переводят (Google, Apple и т. д.), поэтому ограничился звуком. Далал я его для себя и за три дня использования вполне доволен результатом. Только думаю немецкую раскладку добавить.

3 года назад

https://www.duolingo.com/R-r-Leo
R-r-Leo
Mod
  • 21
  • 18
  • 17
  • 16
  • 13
  • 7
  • 6
  • 2
  • 1710

Насколько я помню, таких заданий нет. А если они и будут, ничто не помешает добавить в правильные ответы и транслитерацию: Гугл, Эппл.

Поддержу предложение HeadwayCourse.

ЗЫ. Еще добавили бы RU-EN в название/детали скрипта, это же не интеллектуальный переключатель всех раскладок :)

3 года назад

https://www.duolingo.com/dilnicki

Еще одна сложность заключается в том, что никак нельзя узнать текущую раскладку. И может быть сложно отличить кирилические и латинские раскладки. Например, в немецкой раскладке Z и Y поменяны местами. Так что такую штуку можно сделать только для двух известных языков. Тут действительно лучше справится Punto Switcher.

3 года назад

https://www.duolingo.com/derevnia

Написал скрипт, воспользовавшись частью вашего. Меняет введённые буквы в нужную раскладку. Несколько дней с ним занимался, полёт нормальный. Знаками препинания в дуолинго не пользуюсь, поэтому и в скрипте их не учитывал, только буквы)) Тестировалось на

Opera - 28.0.1750.51 и Violent Monkey 2.1.7 https://addons.opera.com/ru/extensions/details/violent-monkey/?display=ru

Chrome - 42.0.2311.90 и Tampermonkey 3.10.60 https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo?utm_source=chrome-app-launcher-info-dialog

Firefox - 37.0.1 и Greasemonkey 3.1 https://addons.mozilla.org/ru/firefox/addon/greasemonkey/

Буду рад, если кому-нибудь пригодится :)

Cкрипт https://openuserjs.org/scripts/derevnia/Duolingo_Language_Switcher

3 года назад

https://www.duolingo.com/Olexsa
Olexsa
  • 25
  • 25
  • 24
  • 19
  • 14
  • 6
  • 1427

Отличный срипт получился. Спасибо! Забавно наблюдать, как слова по порядку меняются. Пользуюсь также Punto Switcher и проблем при их совместной работе, пока, не встречал.

3 года назад

https://www.duolingo.com/derevnia

Спасибо за добрые слова)) Рад, что вам пригодился. Немного доработал, можно обновиться. Теперь каретка не слетает в конец, если редактировать слова.

3 года назад

https://www.duolingo.com/Olexsa
Olexsa
  • 25
  • 25
  • 24
  • 19
  • 14
  • 6
  • 1427

Обновился. Вам бы сделать отдельную тему о скрипте. Такую функциональность уже давно запрашивали. Вот например пост https://www.duolingo.com/comment/5700335 и вот https://www.duolingo.com/comment/4535364 В общем если задать поиск по форуму "puntoswitcher", то всплывут почти все темы, где просили это сделать.

Отельную тему и прикрепить могут и следить за ней удобней. Или скооперироваться с HeadwayCourse и его дуотвиком https://www.duolingo.com/comment/7619770

3 года назад

https://www.duolingo.com/A.P.Stranger

Imho, Punto Switcher решает 99% проблем с переключением языков в web-версии, остальное от лукавого. P.S. Добавьте хотя бы поддержку (в виде ссылки) для Firefox раз уж Вы считаете, что ваше детище имеет право на жизнь. Не все пользуются Chromium-like проектами.

3 года назад

https://www.duolingo.com/R-r-Leo
R-r-Leo
Mod
  • 21
  • 18
  • 17
  • 16
  • 13
  • 7
  • 6
  • 2
  • 1710

В Firefox подобная поддержка добавляется add-on-ом Greasemonkey, а не авторами скриптов.

3 года назад

https://www.duolingo.com/dilnicki

Punto Switcher мне не нужен, так как единственное место, где инициатива сменить раскладку исходит не от меня, а от сайта - это Duolingo. В остальных местах я сам решаю, когда менять. Ссылку на плагин для FF добавил. "Детище" имеет право на жизнь как минимум на моем ПК, но мне будет приятно, если оно пригодится кому-то еще.

3 года назад
Изучайте язык всего по 5 минут день. Абсолютно бесплатно.