Вышел окончательный вариант xneur 0.1, т.е. первый которым в теории можно пользоваться. Данная программа представляет собой аналог Punto Switcher для Linux
Спасибо господам разработчикам. С моей привычкой постоянно путаться в раскладках это очень дельная тулза. Если будет стабильно и правильно работать, то я пожалуй на нее подсяду.
Да уж. Код ацкий.
Вот этот фрагментик порадовал
memset (ereport->eString, NULLSYM, strlen (eString) + 1);
memcpy (ereport->eString, eString, strlen (eString));
Это вообще - перл
memcpy (&ereport->eData, eData, sizeof (void *));
Вот это заставляет немного улыбнуться
xnmalloc (sizeof (char) * strlen (eString) + 1)
Насчет утечки - надеюсь они удаляют память от ereport->eString в каком-нибудь отличном от eReport_free месте :)
Но все равно! Прога то работает! У меня даже не упала еще ни разу.
Сажать русский и английский переключатели на разные клавиши в X Типа, нажав левый Ctrl+Shift всегда уверен, что вводишь русские буквы, а правый - английские. Не знаю можно ли такое сделать в Х. Где-то такой патч я видел, но забыл где именно.
А ПунтоСвитчер я видел в каком-то отделении кибер-почты, который всегда переключался, когда я вводил пароль в Путти. После трех неудачных попыток я этот Пунто прибивал.
> Сажать русский и английский переключатели на разные клавиши в X Типа, нажав левый Ctrl+Shift всегда уверен, что вводишь русские буквы, а правый - английские. Не знаю можно ли такое сделать в Х. Где-то такой патч я видел, но забыл где именно.
Индикатор переключения раскладки это лишняя условность. Как и сами раскладки впрочем. Мне как пользователю гораздо удобнее вообще не думать о раскладках. Я набираю текст - машина сама угадывает на каком языке его нужно воспринимать. Если такой механизм работает правильно хотя бы на 95% я уже буду этим пользоваться.
> Индикатор переключения раскладки это лишняя условность. Как и сами раскладки впрочем. Мне как пользователю гораздо удобнее вообще не думать о раскладках. Я набираю текст - машина сама угадывает на каком языке его нужно воспринимать. Если такой механизм работает правильно хотя бы на 95% я уже буду этим пользоваться.
Это хорошо, когда один только человеческий текст пишешь. В чатах, например. А при программировании - одна херня получается.
>>>что-то я параллели не уловлю. Говорить это одно, а печатать это другое.
Потрясён. Предполагается, что в том и другом случае результат должен быть примерно одинаковый - передача осмысленной информации. Даже не знаю, как это объяснить :(
> Это хорошо, когда один только человеческий текст пишешь. В чатах, например. А при программировании - одна херня получается.
Это да. Поэтому такая программа должна иметь возможность избирательного применения. Например, в текстовых редакторах, где я пишу документацию мне нужна такая возможность, также нужна такая возможность в браузерах, в jabber-клиенте, в почтовой программе. В среде разработки автоматическое переключение нафиг не надо.
> А ПунтоСвитчер я видел в каком-то отделении кибер-почты, который всегда переключался, когда я вводил пароль в Путти. После трех неудачных попыток я этот Пунто прибивал.
У Пунто есть полезная фича - список приложений, в которых он не работает. Заносишь туда putty, emacs, среды разработки - и все хорошо.
> Потрясён. Предполагается, что в том и другом случае результат должен быть примерно одинаковый - передача осмысленной информации. Даже не знаю, как это объяснить :(
Вспоминается: ... телефона телефона, чукча кушать хочет ... :)
Попробуй как-нибудь поговорить со своим компьютером, мобильным телефоном или микроволновкой по душам. Попроси их что-нибудь сделать для тебя :)
Печать - способ передачи информации от человека машине, разговор - способ передачи информации от человека человеку. Вот в этом разница.
Информация о текущей раскладке это информация которая нужна компьютеру чтобы адекватно воспринимать то, что я печатаю. Для меня эта информация совершенно лишняя. Она не несет никакой полезной нагрузки. Когда я переключаю раскладку я делаю ненужную работу.
В конце концов, когда я разговариваю с человеком и употребляю иностранный термин я же не говорю "внимание сейчас я перейду на английский язык", говорю термин, а потом "внимание сейчас я перейду на русский"
Что ж, пора мне как разработчику ответить на текущие вопросы.
1. Зачем надо? Многим удобно. В первую очередь мне. А кто не хочет, тот не пользуется.
2. Переключение в IDE. Для xneur есть список обрабатываемых программ, просто не включайте туда IDE, и все.
3. Кусок кода с утечками. Если бы пишущий об утечках взял на себя труд посмотреть исходники внимательно, то обратил бы внимание, что этот кусок кода не используется. Это просто некоторые наброски на будущее. В прочем, я не утверждаю, что утечек нет.
4. Местечковая кривость работы. Да, местами есть недочеты. Если принять во внимание то, что я в линуксе всего около 8 месяцев, а на Си не программировал со второго курса института, то результат, на мой взгляд, довольно неплох. :)
> В конце концов, когда я разговариваю с человеком и употребляю иностранный термин я же не говорю "внимание сейчас я перейду на английский язык", говорю термин, а потом "внимание сейчас я перейду на русский"
Человеческая речь и набивание текста - вещи абсолютно несопоставимые. В речи используюется интонация, громкость, скорость и пр. Компьютер всего этого не понимает - поэтому и нужны костыли типа переключалки. А что касается иностранных слов, то Вы, видимо, не в курсе. Объясняю. Человек подсознательно сперва пытается идентифицировать каждое произнесённое слово по слуховой памяти, и только уже потом проверяет правильность реконструкции по смыслу. При этом язык распознаётся на довольно поздней стадии, а при быстрой речи может и не распознаваться вовсе. Например, когда я говорю быстро на немецком, у меня начинают к месту и не к месту проскакивать английские слова. Я сам этого не замечаю - и, что самое важное, не замечает собеседник (немцы), я убеждался в этом много раз. Просто потому, что мозгом эти слова воспринимаются просто как синонимы, безотносительно к языку. А когда надо выделить иностранное слово, немцы обычно используют правила произношения (акцент) соответствующего языка (restaurant, orange, sceduling и пр.), поэтому слово легко распознаётся без "переключения раскладки". Повторяю: прямое сравнение неуместно.
>Информация о текущей раскладке это информация которая нужна компьютеру чтобы адекватно воспринимать то, что я печатаю. Для меня эта информация совершенно лишняя.
Экономия на спичках получается - всего одно движение переключателя, в том случае если ты точно знаешь в какую сторону переключаешь - в английскую или в русскую. С toggled переключателем раскладки проблемы возникают не потому, что трудно его лишний раз нажать, а из-за того, что забываешь в каком состоянии он до этого находился, а глянуть на индикатор раскладки - рассеивает внимание. С двумя переключателями такой проблемы не возникает, поскольку автор всегда знает на каком языке он сейчас собирается выступать, и нет проблем с лишним нажатием клавиши для перевода клавиатуры именно в этот язык, независимо от того какой был выбран до этого.
>>когда я разговариваю с человеком и употребляю иностранный термин я же не говорю "внимание сейчас я перейду на английский язык", говорю термин, а потом "внимание сейчас я перейду на русский"
С таким же успехом можно набирать в текст в русском или английском транслите. Кому надо поймут.
> Кусок кода с утечками. Если бы пишущий об утечках взял на себя труд посмотреть исходники внимательно, то обратил бы внимание, что этот кусок кода не используется. Это просто некоторые наброски на будущее. В прочем, я не утверждаю, что утечек нет.
Это не оправдание. Мне сложно поверить, что потом, когда этот набросок будет включаться в активный код, ты примешься проверить корректное освобождение им памяти (и просматривать его весь на предмет наличия прочих огрех). Скорее всего, нет. Отсюда вывод: писать надо сразу нормально, а не потом приделывать костыли. Либо просто делать комментарии для себя: "в этом месте я собираюсь позже реализовать следующее". Так, кстати, все нормальные программисты и делают.
Короче: человек сам понимает в зависимости от контекста и произношения, на каком языке говорит его собеседник (если он конечно знает этот язык).
Так и пусть компьютер также умеет, только применительно к печати и в соответствии с другими критериями. Разве это плохо ? Я "за". Если будет нормальный процент "угадывания", то я буду пользоваться этой функцией.
Я пока не смотрел код подробно, но есть несколько вопросов:
1. Я правильно понял, что лицензия - GPL? Т.е. возможно подлинковывать к другому GPL-ному коду? Не планируется ли выделение отдельной библиотеки?
2. Насколько алгоритмы завязаны на конкретный набор поддерживаемых языков?
3. Не было ли идеи использовать хотя бы glib (не gtk!) - все-таки структуры данных и портируемые функции там намного богаче, чем в обычном позиксе и иксах? Накладные расходы - минимальны.
> Так и пусть компьютер также умеет, только применительно к печати и в соответствии с другими критериями. Разве это плохо ? Я "за". Если будет нормальный процент "угадывания", то я буду пользоваться этой функцией.
Никто не спорит. Если функция удобна многим - она должна быть реализована, но быть отключаемой и настраиваемой. Это то, что обожает игнорировать GNOME, часто пытаясь навязать ВСЕМ свой собственный (единственно правильный, разумеется) взгляд на то, как и что надо делать.
Относительно gxneur.
Это даже не поделка - это откровенная халтура :( Абы было.
Сам же xneur не завязан на DE. Напишите свой фронт-энд, люди будут благодарны ;)
>> 1. Я правильно понял, что лицензия - GPL? Т.е. возможно подлинковывать к другому GPL-ному коду? Не планируется ли выделение отдельной библиотеки?
Да, на здоровье.
>> 2. Насколько алгоритмы завязаны на конкретный набор поддерживаемых языков?
Алгоритмы не завязаны - это же алгоритмы :)
>> 3. Не было ли идеи использовать хотя бы glib (не gtk!) - все-таки структуры данных и портируемые функции там намного богаче, чем в обычном позиксе и иксах? Накладные расходы - минимальны.
Богаче, а смысл?
>> 4. Где почитать об используемых алгоритмах?
Да на этом форуме в разделе разработки поищи, я там писал когда-то.
> dpkg - warning: while removing gxneur, directory `/usr/local' not empty so not removed.
Просто ни один вменяемый пакет не ставится в /usr/local. Этот был единственным. Но что-то там все-таки есть (поставленное руками). APT, глядя в базу, видит, что /usr/local можно удалять. Но не удаляет, так как непустая.
(Кстати, deb без зависимостей, это типа "Сделаем слаку изо всего, что видим"?)
> А ПунтоСвитчер я видел в каком-то отделении кибер-почты, который всегда переключался, когда я вводил пароль в Путти. После трех неудачных попыток я этот Пунто прибивал.
а просто указать, что в putty не срабатывать не пробовал?
Компьютер же не мой. Говорю же, что я за ним сидел в отделении Кибер-почты. И не настолько хорошо я в виндовз разбираюсь, чтобы в нем чего-то там настраивать. Мне бы побыстрее через ssh и в родную bash консоль ;)