elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Temas
Páginas: 1 [2]
11  Programación / Programación C/C++ / Problema con uinput (driver "virtual") en: 22 Abril 2011, 18:21 pm
Hola, edito mi anterior mensaje en el foro ya que no obtuve respuesta y asi ahorro espacio a elhacker

Estoy creando una aplicación y para que interactue con Ubuntu estoy haciendo uso de "linux/input.h" y "linux/uinput.h", el problema está en que me compila sin ningún tipo de error pero no hace nada, el fallo está hay casi seguro porque los he hecho un seguimiento a la aplicacion y registra los botones que pulso y todo, pero no ocurre nada.

Os dejo mi codigo para inicializar el driver.
Código
  1. int wmDevice::init_device(){
  2.    //open uinput and creating descriptor
  3.    if ((fd = open("/dev/uinput", O_WRONLY | O_NONBLOCK | O_NDELAY)) == 0){
  4.        std::cout << "Unable to open /dev/uinput" << std::endl;
  5.        return 1;
  6.    }
  7.  
  8.    //configure uinput device parameters
  9.    ret = ioctl(fd, UI_SET_EVBIT, EV_KEY);
  10.    ret = ioctl(fd, UI_SET_EVBIT, EV_ABS);
  11.   // ret = ioctl(fd, UI_SET_EVBIT, EV_SYN);
  12.  
  13.    ret = ioctl(fd, UI_SET_KEYBIT, KEY_SELECT); //left button mouse = A wiimote button wiimote
  14.    ret = ioctl(fd, UI_SET_KEYBIT, KEY_CONTEXT_MENU); // right button mouse = B button wiimote
  15.    ret = ioctl(fd, UI_SET_KEYBIT, KEY_SCROLLDOWN); // wiimote = 2
  16.    ret = ioctl(fd, UI_SET_KEYBIT, KEY_SCROLLUP); //wiimote = 1
  17.    ret = ioctl(fd, UI_SET_KEYBIT, KEY_POWER); //power (hold)
  18.    ret = ioctl(fd, UI_SET_KEYBIT, KEY_ZOOM); //Zoom = +
  19.    ret = ioctl(fd, UI_SET_KEYBIT, KEY_DELETEFILE); // (hold) -
  20.    ret = ioctl(fd, UI_SET_KEYBIT, KEY_CLOSE); // -
  21.  
  22.    ret = ioctl(fd, UI_SET_ABSBIT, ABS_X);
  23.    ret = ioctl(fd, UI_SET_ABSBIT, ABS_Y);
  24.  
  25.    //****************************************//
  26.  
  27.    memset(&userDev, 0, sizeof(userDev));
  28.  
  29.    strcpy(userDev.name, "wiimote");
  30.    userDev.id.bustype = BUS_BLUETOOTH;
  31.    userDev.id.vendor = 0x1234;
  32.    userDev.id.product = 0x01;
  33.    userDev.id.version = 1;
  34.  
  35.    userDev.absmax[ABS_X] = 1920;
  36.    userDev.absmin[ABS_X] = 0;
  37.    userDev.absmax[ABS_Y] = 1080;
  38.    userDev.absmin[ABS_Y] = 0;
  39.  
  40.    //*****************************************//
  41.  
  42.    ret = write(fd, &userDev, sizeof(userDev));
  43.    ret = ioctl(fd, UI_DEV_CREATE);
  44.  
  45.    return 0;
  46. }
  47.  
Ojala podais ayudarme! :D
12  Programación / Scripting / Cambiar automaticamente fondo escritorio [bash] en: 17 Abril 2011, 22:08 pm
Hola a todos.

Estoy intentando crear un script que me permita cada X tiempo cambiar automáticamente el fondo de pantalla.
No sé casi nada de bash, pero pensé que no sería muy complicado hacerlo, pero se me esta complicando un poquitin xD

He probado varios metodos pero sin exito ninguno, aquí os dejo lo ultimo que he hecho:

 Edito: Este Script ya funciona, lo pongo aqui por si a alguien le es útil!
Código
  1. #!/bin/sh
  2.  
  3. #Script para cambiar de fondo de escritorio cada X minutos
  4.  
  5.  
  6. cd ~/Imagenes/Fondos\ pantalla/
  7.  
  8. while [ 1 ]; do
  9.  
  10. for aux in $(ls) ; do
  11. #echo "gconftool-2 --type string --set /desktop/gnome/background/picture_filename  ~/Imagenes/Fondos\ pantalla/$aux"
  12. sleep 15m
  13. gconftool-2 --type string --set /desktop/gnome/background/picture_filename  ~/Imagenes/Fondos\ pantalla/$aux
  14. done
  15.  
  16. done
  17.  
  18. wait
  19.  
13  Programación / Programación C/C++ / Explicarme esto si podeis :P (me urge) en: 24 Marzo 2011, 23:34 pm
Hola, vereis, estoy haciendo un ejercicio en el que hay que comparar los tiempos de unos pilotos durante 3 tamos de carrera y mostrar el mayor, pero como no me salia, me he puesto a hacerlo paso por paso comprobando todos los pasos. Y he encontrado un fallo y no se porque ocurre esto:

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct teams{ //puse structs porque no conseguia hacerlo con class
  5.    char nombre[30];
  6.    float et1, et2, et3, total;
  7. };
  8.  
  9. int main(){
  10.    unsigned int numcasos;
  11.    char caso[20];
  12.    teams piloto[30];
  13.    cin >> numcasos;
  14.  
  15.    for (unsigned int x=0; x<numcasos; x++){
  16.        cin >> caso; //si pongo cin.getline(caso, 20) ni siquiera lo reconoce y no lo guarda
  17.        for (unsigned int y=0; y<30; y++){
  18.            cin >> piloto[y].nombre >> piloto[y].et1 >> piloto[y].et2 >> piloto[y].et3;
  19.            piloto[y].total = piloto[y].et1 + piloto[y].et2 + piloto[y].et3;
  20.  
  21.            cout << piloto[y].nombre <<" "<< piloto[y].et1 <<" "<< piloto[y].et2 <<" "<< piloto[y].et3 <<" "<< piloto[y].total;
  22.        }
  23.    }
  24.  
  25.    return 0;
  26. }
  27.  
  28.  

El caso es que si omito la line cin >> code (que me pide el ejercicio que la ponga, pues debe introducirse para cada caso "caso N") funciona, pero si no lo quito aparecen muchisimos caracteres extraños, podeis decirme porque?
14  Programación / Programación C/C++ / Error aplicacion Qt4 en: 19 Marzo 2011, 18:53 pm
Hola, estoy aprendiendo a usar la libreria Qt, y estoy haciendo por mi mismo un ejemplo que aparece en un tutorial pdf que estoy siguiendo, pero cuando intento ejecutarlo me da multiples errores como estos:
  • multiple definition of `Dialogo::Dialogo(QWidget*)'  (y ~Dialogo)
  • undefined reference to `vtable for Dialogo' (y ~Dialogo)

Otros programas en Qt no me han dado ningun tipo de problema, aqui os pongo el codigo( SI, es un tochazo, pero espero que hagais un esfuerzo en ayudarme) :P

dialogo.h
Código:
#ifndef DIALOGO_H
#define DIALOGO_H

#include <QDialog>

class QCheckBox;
class QLabel;
class QLineEdit;
class QPushButton;

class Dialogo : public QDialog{
    Q_OBJECT //Siempre necesario para declarar SIGNALS AND SLOTS

    public:
        Dialogo(QWidget *parent = 0);
        ~Dialogo();

    signals:
        void findNext(const QString &str, Qt::CaseSensitivity cs);
        void findPrevious(const QString &str, Qt::CaseSensitivity cs);

    private slots:
        void findClicked();
        void enableFindButton(const QString &text);

    private:
        QLabel *label;
        QLineEdit *lineEdit;
        QCheckBox *caseCheckBox;
        QCheckBox *backwardCheckBox;
        QPushButton *findButton;
        QPushButton *closeButton;
};

#endif // DIALOGO_H




Dialogo.cpp
Código:
#include <QtGui>
#include "dialogo.h"

Dialogo::Dialogo(QWidget *parent) : QDialog(parent){
    label = new QLabel(tr("Find &what:"));
    lineEdit = new QLineEdit;
    label->setBuddy(lineEdit);

    caseCheckBox = new QCheckBox(tr("Match &case"));
    backwardCheckBox = new QCheckBox(tr("Search &backward"));

    findButton = new QPushButton(tr("&Find"));
    findButton->setDefault(true);
    findButton->setEnabled(false);

    closeButton = new QPushButton(tr("Close"));

    connect(lineEdit, SIGNAL(textChanged(const QString &)),
            this, SLOT(enableFindButton(const QString &)));
    connect(findButton, SIGNAL(clicked()),
            this, SLOT(findClicked()));
    connect(closeButton, SIGNAL(clicked()),
            this, SLOT(close()));

    QHBoxLayout *topLeftLayout = new QHBoxLayout;
    topLeftLayout->addWidget(label);
    topLeftLayout->addWidget(lineEdit);

    QVBoxLayout *leftLayout = new QVBoxLayout;
    leftLayout->addLayout(topLeftLayout);
    leftLayout->addWidget(caseCheckBox);
    leftLayout->addWidget(backwardCheckBox);

    QVBoxLayout *rightLayout = new QVBoxLayout;
    rightLayout->addWidget(findButton);
    rightLayout->addWidget(closeButton);
    rightLayout->addStretch();

    QHBoxLayout *mainLayout = new QHBoxLayout;
    mainLayout->addLayout(leftLayout);
    mainLayout->addLayout(rightLayout);
    setLayout(mainLayout);

    setWindowTitle(tr("Find"));
    setFixedHeight(sizeHint().height());
}

Dialogo::~Dialogo(){
    delete this;
}

void Dialogo::findClicked(){
    QString text = lineEdit->text();
    Qt::CaseSensitivity cs =
            caseCheckBox->isChecked() ? Qt::CaseSensitive
                                      : Qt::CaseInsensitive;
    if (backwardCheckBox->isChecked()){
        emit findPrevious(text,cs);
    }
    else {
        emit findNext(text, cs);
    }
}

void Dialogo::enableFindButton(const QString &text){
    findButton->setEnabled(!text.isEmpty());
}



 
main.cpp
Código:
#include <QApplication>

#include "dialogo.h"
#include "dialogo.cpp" /*Este paso no aparece en el ejemplo del tutorial, pero crei que solucionaria el error */

int main(int argc, char *argv[]){
    QApplication app(argc, argv);
    Dialogo *dialogo = new Dialogo;
    dialogo->show();
    return app.exec();
}

15  Sistemas Operativos / GNU/Linux / Ayuda sobre linux! en: 7 Marzo 2011, 16:20 pm
Hola, este es mi primer post por lo que si es un poco chorra espero que no me lo tengais en cuenta :P

Vereis, queria saber si hay algun tipo de archivo en el que colocar los comandos del terminal y que se ejecuten al clickar en él. Porque hay cosas que siempre tengo que estar haciendo y se hacen pesadas...

Y otra cosa, he actualizado mi version de ubuntu a la 10.10 27 y no se me ve nada, ni siquiera arranca en modo grafico, sino que se me pone la terminal desde un principio, es esto normal?
Tengo una ati 6950 y una placa P8P67

Graciiias!
Páginas: 1 [2]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines