LINUX.ORG.RU

Сообщения htower_

 

Проблема со считыванием кодов нажатых клавиш

Есть в нашей (научной) группе некая старая программка, использующая «самодельный getch()». Всё годами работало без проблем, а сегодня на одной из машин поимели проблему. Суть в том, что при нажатии любой клавиши, генерирующей esc-последовательность, дальнейшие нажатия не считываются. Код примера такой:

#include <stdio.h>
#include <termios.h>

int
getch()
{
    struct termios old_settings;
    struct termios new_settings;

    tcgetattr(0, &old_settings);

    new_settings = old_settings;
    new_settings.c_lflag &= ~ECHO;
    new_settings.c_lflag &= ~ICANON;
    new_settings.c_cc[VMIN] = 1;
    new_settings.c_cc[VTIME] = 1;

    tcsetattr(0, TCSANOW, &new_settings);

    int len = 1;
    int buffer[10];
    int code = buffer[0] = getchar();

    if (buffer[0] == 27) // ESC
    {
        new_settings.c_cc[VMIN] = 0;
        tcsetattr(0, TCSANOW, &new_settings);

        while ((buffer[len] = getchar()) > 0)
        {
            ++len;
        }
    }

    if (len > 1)
    {
        // match ESC sequence
        // code = ...
    }

    // debug print
    printf("[");
    for (int i = 0; i < len; ++i)
    {
        printf("%d, ", buffer[i]);
    }
    printf("\b\b] \n");

    tcsetattr(0, TCSANOW, &old_settings);

    return code;
}

int main(int argc, char** argv)
{
    getch();
    getch();
    getch();

    return 0;
}

Пр запуске на машинах с ubuntu 16.04/18.04 все работает как положено. Например при нажатии UpArrow, DownArrow, ESC будет выведено:

[27, 91, 65]
[27, 91, 66]
[27]

При запуске на системе с Арчем выдаётся следующее:

[27, 91, 65]
[-1]
[-1]

Т.е. после обработки первой esc-последовательности все последующие вызовы getchar() возвращают -1 (EOF).

Сборка разными компиляторами (gcc7, gcc8, gcc9, clang8) ничего не меняет, как и загрузка с разными версиями ядра (4.19.56-1-lts, 5.1.15-arch1-1-ARCH).

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

 , ,

htower_
()

mc + CUA-like shortcuts + x11 clipboard

Всем привет.

По просьбе коллег (линукс-неофитов) сделал скрипт, настраивающий mc (mcedit) для работы с «традиционными» комбинациями клавиш (ctrl-c, ctrl-v, ctrl-x и т.д). Также добавлена интеграция с буфером обмена X11. Брать тут - https://github.com/htower/mc_cua_xclip

Замечания/предложения приветствуются.

 , , ,

htower_
()

Значки (иконки) в kde-приложениях, запущенных не в kde

Случайно обнаружил странную ситуацию - при запуске kde-приложений не из kde-сессии у них отсутствуют значки в меню/панелях. Проверял так:

  1. Настраиваем панель kde-приложения (dolphin, например) так, чтобы был текст+иконка.
  2. Запускам приложение из kde-сессии - все ОК.
  3. Перелогиниваемся в openbox/xfce/lxqt/etc
  4. Запускаем то же приложение - на панели виден только текст.

Пробовал менять тему значков (breeze/oxygen/etc) - поведение сохраняется. В принципе, некритично, но просто интересно в чём проблема.

 ,

htower_
()

dell inspiron 5558, fn + arrow keys

Здравствуйте.

Имеется ноутбук dell inspiron 5558 с установленной на нём kubuntu 16.04. Система ставилась на другом ноуте но переехала на новый в связи с преждевременной смертью «родителя». На dell'е наблюдается весьма раздражающая ситуация, когда по непонятной причине «отваливаются» комбинации fn + arrow keys, которые активируют PgUp/Dn и Home/End. Ребут системы все «чинит», но лишь на какое-то время.

Сталкивался ли кто-нибудь с таким поведением? Подскажите, куда стоит копать, я пока не знаю даже с какой стороны подступиться. В логах ядра и Xorg вроде всё более-менее нормально.

 ,

htower_
()

cups и отключенные usb-принтеры

Стоит kubuntu 14.04 LTS, принтер нужен раз в год. Тут понадобился, подключил на работе HP LaserJet m1120 MFP, HPLIP всё настроил, печать работает без проблем. Но при физическом отключении принтера, CUPS в web-интерфейсе продолжает его отображать со статусом Idle. KDE, соответственно, тоже показывает его в системе :) При этом

lpinfo -v
показывает, как должно быть, отсутствие устройств в системе, перезапуск cups ничего не меняет. Пробовал как с драйвером от HPLIP, так и с Foomatic/foo2xqx - результат то же. Снос/переустановка cups/hplip/etc проблему не решает. В общем-то, некритично, но просто интересно, почему такое поведение у системы печати.

P.S. Есть такое же описание проблемы без ответа и решения :)

https://bbs.archlinux.org/viewtopic.php?id=161215

 ,

htower_
()

[странное][plain C] if работает быстрее, чем #if ?

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

if (task==1) {
...              
}//1
if (task==2) {
...              
}//2
if (task==3) {
...              
}//3
...

Переделываю это в такой вид (криво, но тем не менее) :

#if task==1
...              
#if task==2
...              
#if task==3
...              
...

По логике препроцессор вырезает всё лишнее и отдает нужное компилятору, т.е. регрессий быть не может, скорее наоборот (про предсказатель условных переходов в ЦПУ прекрасно знаю). НО - наблюдаю следующее странное поведение: старая версия немного, но БЫСТРЕЕ. Под немного имеется в виду следующее :

old time ~ 0m2.104s
new time ~ 0m2.130s

разница незначительна и не принципиальна, но это поведение стабильно, т.е. при увеличении числа итераций всё остается в том же духе. Кто знает, в чем причина такого странного, на мой взгляд, поведения ?

 

htower_
()

У кого есть доступ на portal.acm.org, скачайте статейку, плиз.

Собственно, сабж :

http://portal.acm.org/citation.cfm?doid=800186.810616

буду весьма признателен за помощь. Почта есть в профиле.

htower_
()

[Иркутск] [журналюги] [СПО] Кто говорил, что без фотошопа никак ? :)

Не Ъ-товарищам предлагается пройтись по ссылке и посмотреть exif у выложенных фоток на предмет ПО, использованного для обработки :)

http://www.irk.ru/news/20090918/storm/

P.S. Интересно, что Irsi бы сказал по этому поводу. Наверное что-нибудь про "быдломыльнокамеру" этих товарищей и их нищебродство, по причине которого фотошоп не юзают :)

 

htower_
()

Выбор карточки для Nvidia CUDA

Собственно сабж. Начальник решил, что пора попробовать применить новые технологии для расчетов :) По деньгам ограничение до 30 Круб, так что можно выбирать что угодно из того, что есть на массовом рынке. Пока склоняюсь к GeForce GTX285, есть еще GTX 295, но она, как я понял, 2-хчиповая, и у неё частоты памяти и ядра пониже, чем у GTX285. В CUDA я новичок, поэтому может кто подскажет, что предпочтительнее в данном случае - больше памяти и ядер (295) или более высокие частоты (285). И есть ли тонкости (сложности) при программировании на многочиповых картах по сравнению с одночиповыми ?

P.S. Последний вопрос - если ставить 295-ю, нужна ли поддержка SLI со стороны материнской платы ?

htower_
()

[специалистам по всему][музыка] что за композиция ?

Собственно, сабж. В одном из миксов натолкнулся вот на такую мелодию (это вырезка из того микса) :

http://ifolder.ru/9313454

кто-нибудь знает, что это за композиция ? Musicbrainz ничего не опознал :)

 ,

htower_
()

Пид*расы на ЛОРе

Что за гребаный десант этих уродов на сайте ? Читать невозможно :( Модераторы, вы может все же почистите ветки от этого дерьма ?

htower_
()

mc + zsh - глючит история команд

Решил попробовать zsh - вещь хорошая, но нашелся один неприятный момент - при использовании mc появляются левые строки в хистори :( Проявляется в следующем :

1) При запуске mc и нажатии Ctrl+O появляется консолька. Нажимаем "вверх" чтобы посмотреть предыдующую команду и видим такую вот хрень :

precmd(){ pwd>&8;kill -STOP $$ }

Потом идут нормальные команды. Если набрать что-то руками, ls к примеру, то потом эта корявая строка не повторится. Но и этого одного раза уже хватает для неудобств.

2) При перемещении по каталогам и возврату к консоли через Ctrl+O последней командой в хистори будет что-то вроде следующего

cd "`echo -e '\0057'`"

далее опять идут нормальные команды. Предыдущая команда (п.1) уже не появляется.

Почитал инфу в инете, предлагали включить кой-какие опции в .zshrc, не помогло. Конфиг такой :

# Lines configured by zsh-newuser-install HISTFILE=~/.histfile HISTSIZE=1000 SAVEHIST=1000 bindkey -e # End of lines configured by zsh-newuser-install # The following lines were added by compinstall zstyle :compinstall filename '/home/htower/.zshrc'

autoload -Uz compinit compinit # End of lines added by compinstall

setopt histignorespace

Куда копать - непонятно :(. Дистр - Debian Etch. Может кто подсказать, в чем проблема ?

P.S. htower% mc --version

GNU Midnight Commander, версия 4.6.1

Виртуальная файловая система: tarfs, extfs, cpiofs, ftpfs, fish, smbfs

Со встроенным редактором

С установленной в системе библиотекой S-Lang с базой данных terminfo

C поддержкой внутренней командной оболочки

С поддержкой фоновых операций

С поддержкой мыши в xterm и консоли Linux

С поддержкой событий X11

С поддержкой интернационализации

С поддержкой многих кодировок

zsh --version

zsh 4.3.4 (i686-pc-linux-gnu)

htower_
()

Haskell или OCaml

Стоит задача ИССЛЕДОВАТЕЛЬСКОГО (т.е не промышленнго) характера - разработка интерпретатора логического языка наподобие PROLOG'a, но работающего в исчислении позитивно-образованной логики (впрочем, тонкости - несущественны). У нас в НИИ есть некоторые наработки по этой теме, есть несколько вариантов пруверов (доказателей теорем), созданных на С, С++ и Standard ML(SML). С С и С++ связываться не очень хочется, т.к. не будет особой новизны и интереса. Человек, использующий Standard ML, считает, что вариант с функциональными языками лучше, чем С(++) - удобнее, быстрее в разработке и т.д. Он же рекоммендует использовать OCaml для моей разработки. Но полазив по интернету и почитав обзоры функциональных языков, я склоняюсь к Haskell. В OCaml не устраивают несколько смутный синтаксис и стремление к универсальности (+ не совсем красивая, на мой взгляд, раелизация некоторых вещей). Haskell нравится большей продуманностью, изяществом, если можно так сказать, и наличием стандарта на язык. У его компилятора(ghc), конечно, тоже есть свои ограничения (то же отсутсвие shared libs), хотя пока это мне не столь критично.

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

htower_
()

Про онлайн-обновление eclipse

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

htower_
()

Fedora 4 + apt

Собственно, сабж. Есть ли в природе нормальные серверы, которые бы имели (в идеале) 3 ветки base + updates + extras (как в yum) + еще_что_нибудь. А то в инете как-то не нашел....

htower_
()

operamotifwrapper-3 томозит всю ситему

Стоит дебиан, опера 8.5 - к ней flash plugin. Так вот - при проигрывании более-менее сложных флэшек система начинает конкретно лагать - проц грузится на 100 %. Проверил кто виноват - operamotifwrapper. Версия motif - (libmotif3 2.2.3-1.2). Кто-нибудь сталкивался с такой фигней ? А то без флэша можно, конечно, но хотелось бы и его иметь.....

htower_
()

Opera и autocomplete

Поставил себе Оперу 8.5. Все нравится. Но вот напрягает, что нет автодополнения в полях ввода на формах страниц (типа хистори). В настройках не нашел похожего. Кто знает - такая функция вообще есть или нет ?

P.S. Про т.н. "жезл" - знаю. Это немного не то, что нужно....

htower_
()

debian testing(stable) и UDEV

Привет всем. Возник такой вопрос - сабж вообще возможен ? Я просто к тому говорю, что возник ряд проблем. Сам по себе udev работает, нужно только яжро посвежее (он требует от 2.6.12 и выше). Но вот при апдейте и установке нового софта возникают траблы. Например libsane, lm-sensors и ряд других вещей при отработке пост-инсталляционных скриптов "замерзают" на месте. При выяснении причин оказывается виден процесс /sbin/MAKEDEV который не убивается ничем. После некторого времени в системе наблюдаются глюки, после чего приходится перегружаться. На "родном" ядре все работает. Правда с ним udev уже не стартует (т.к. ядро верси 2.6.8). Посему возник вопрос - это у меня одного такие приколы или нет ?

P.S. Пока грешу на сами пакеты (libsane etc), которые некорректно работают с udev.

P.S.S. Я бы может и сппрашивал, если бы некоторые пакеты не тянули за собой hal, а тот - уже udev. И что самое странное - это то, что родное ядро им не подерживается ))) Спрашивается тогда - "а нафига" ?

htower_
()

Проблема с cdrecord в debian unstable

Делал сегодня apt-get -u dselect-update и получил в итоге следующее: Все пакеты нормально вставли, дошла очерель до cdrecord и все повисло после следующей надписи :

Настраивается пакет cdrecord (2.01+01a03-2) ... Generating missing device files needed by cdrecord

Процесс убивается Ctrl-C но это некорректное поведение. Ядро - 2.6.13-mm1, юзаю udev + HAL. В чем грабли ?

P.S. Плюс к этому cdrecord -scanbus выдает такую фигню :

Cdrecord-Clone 2.01.01a03 (i686-pc-linux-gnu) Copyright (C) 1995-2005 Joerg Schilling NOTE: this version of cdrecord is an inofficial (modified) release of cdrecord and thus may have bugs that are not present in the original version. Please send bug reports and support requests to <cdrtools@packages.debian.org>. The original author should not be bothered with problems of this version.

cdrecord: Warning: Running on Linux-2.6.13-mm1 cdrecord: There are unsettled issues with Linux-2.5 and newer. cdrecord: If you have unexpected problems, please try Linux-2.4 or Solaris. cdrecord: No such file or directory. Cannot open '/dev/pg*'. Cannot open SCSI driver. cdrecord: For possible targets try 'cdrecord -scanbus'. cdrecord: For possible transport specifiers try 'cdrecord dev=help'. cdrecord: cdrecord: For more information, install the cdrtools-doc cdrecord: package and read /usr/share/doc/cdrecord/README.ATAPI.setup.

htower_
()

debian unstable + utf8 + mc

Привет всем. Задолбался я уже с этим гр*баным mc ((( Не хочет гад собираться после наложения уникодовых патчей и все .... Вот и хотелось бы узнать - пользуется ли кто-нибудь сабжем или нет ? Проблема при компиляции заключается в SLang'e - но как и где править ?

htower_
()

RSS подписка на новые темы