Neue Antwort schreiben 
 
Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Präsentiere: input-event-daemon v0.1.3
JPT Offline
Windows Anfänger

Beiträge: 4
Registriert seit: May 2013
Beitrag #21
RE: Präsentiere: input-event-daemon v0.1.3
Hallo,

gefällt mir, aber leider habe ich noch nicht herausgefunden, wie ich "plain" key codes eingeben kann.
Ich habe hier ein NAS mit drei Knöpfen, die als Tasten eines Keyboard verdrahtet sind.
Ich kann mit folgendem Code die Keycodes auslesen. Wie kann ich das dem input-event-daemon verklickern?
Leider kann ich nicht besonders gut C und mit Linux Systemprogrammierung habe ich auch keine Erfahrung.

Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
#include <dirent.h>
#include <linux/input.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/select.h>
#include <sys/time.h>
#include <termios.h>
#include <signal.h>

void handler (int sig)
{
  printf ("\nexiting...(%d)\n", sig);
  exit (0);
}

void perror_exit (char *error)
{
  perror (error);
  handler (9);
}

int main (int argc, char *argv[])
{
  struct input_event ev[64];
  int fd, rd, value, size = sizeof (struct input_event);
  char name[256] = "Unknown";
  char *device = NULL;

  //Setup check
  if (argv[1] == NULL){
      printf("Please specify (on the command line) the path to the dev event interface device\n");
      exit (0);
    }

  if ((getuid ()) != 0)
    printf ("You are not root! This may not work...\n");

  if (argc > 1)
    device = argv[1];

  //Open Device
  if ((fd = open (device, O_RDONLY)) == -1)
    printf ("%s is not a vaild device.\n", device);

  //Print Device Name
  ioctl (fd, EVIOCGNAME (sizeof (name)), name);
  printf ("Reading From : %s (%s)\n", device, name);

  while (1){
      if ((rd = read (fd, ev, size * 64)) < size)
          perror_exit ("read()");      

      value = ev[0].value;

  if (ev[0].value == 1 && ev[0].type == EV_KEY) { // Only read the key press event
    printf ("Code[%d]\n", (ev[0].code));
//    if (value != ' ' && ev[1].value == 1 && ev[1].type == 1){ // Only read the key press event
//       printf ("Code[%d]\n", (ev[1].code));

      }
  }

  return 0;
}

Vielen Dank,

Jan
23.05.2013 12:32
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
gandro Offline
Quälgeist

Beiträge: 8.950
Registriert seit: Jul 2008
Beitrag #22
RE: Präsentiere: input-event-daemon v0.1.3
Was sind denn die Codes die dir das Programm ausgibt in deinem Fall? Den Namen kannst du dann hier nachschlagen: http://lxr.free-electrons.com/source/inc...put.h#L209

ievd unterstützt keine numerischen Keycodes, es arbeitet mit den Definitionen im Linux-Kernel.

Ansonsten, einfachere Lösung: Wenn du den Parameter -m verwendest, kann dir input-event-daemon zeigen wie es die Tasten nennt, einfach folgenden Befehl starten und die gesuchten Tasten drücken.

input-event-daemon -m
(Dieser Beitrag wurde zuletzt bearbeitet: 23.05.2013 12:49 von gandro.)
23.05.2013 12:48
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
JPT Offline
Windows Anfänger

Beiträge: 4
Registriert seit: May 2013
Beitrag #23
RE: Präsentieinput-event-daemon v0.1.3
(23.05.2013 12:48)gandro schrieb:  Ansonsten, einfachere Lösung: Wenn du den Parameter -m verwendest, kann dir input-event-daemon zeigen wie es die Tasten nennt, einfach folgenden Befehl starten und die gesuchten Tasten drücken.
input-event-daemon -m
Ah! Danke fpr die prompte Antwort. Das war ja einfach. Mir war unklar, was "Monitoring Mode" bedeuten soll dewegen habe ich den komplett übersehen.

Sind die Tasten: COPY, POWER, RESTART
Funzt! Jetzt muss ich dem Kernel "nurnoch" beibringen, wie er die kiste runterfahren bzw rebooten kann. Das wird ein größerer Akt, hat kein ACPI.
23.05.2013 13:57
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
mrshadowtux
Unregistered

 
Beitrag #24
RE: Präsentiere: input-event-daemon v0.1.3
Rein aus Interesse: Auf welcher Hardware läuft das ganze, wenn kein ACPI vorhanden ist?
23.05.2013 14:01
Diese Nachricht in einer Antwort zitieren
JPT Offline
Windows Anfänger

Beiträge: 4
Registriert seit: May 2013
Beitrag #25
RE: Präsentiere: input-event-daemon v0.1.3
(23.05.2013 14:01)mrshadowtux schrieb:  Rein aus Interesse: Auf welcher Hardware läuft das ganze, wenn kein ACPI vorhanden ist?
Netgear ReadyNas DuoV2, ist ein Kirkwood ARM Prozessor. Der hat natürlich kein BIOS, sondern U-Boot. Hier gibt's Hardware Details und Installationsguide.

Mittlerweile sind wir zu dritt, die an dem Teil rumbasteln. Langsam wirds... Ärgerlicherweise reisst Samba den Kernel regelmässig in den Abgrund. Für ein NAS recht unpraktisch ;) Muss wohl ein Kernel Bug sein.
24.05.2013 18:09
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
mrshadowtux
Unregistered

 
Beitrag #26
RE: Präsentiere: input-event-daemon v0.1.3
Danke für die Info :)
Hast du mal einen anderen Kernel probiert bzw selber einen passenden kompiliert? Evtl ist der mitgelieferte ja einfach Mist.
24.05.2013 18:27
Diese Nachricht in einer Antwort zitieren
JPT Offline
Windows Anfänger

Beiträge: 4
Registriert seit: May 2013
Beitrag #27
RE: Präsentiere: input-event-daemon v0.1.3
(24.05.2013 18:27)mrshadowtux schrieb:  Danke für die Info :)
Hast du mal einen anderen Kernel probiert bzw selber einen passenden kompiliert? Evtl ist der mitgelieferte ja einfach Mist.
Der mitgelieferte ist uralt (2.6?) und würde mit plain debian sowieso nicht vernünftig funktionieren.

ich habe einen custom 3.8er kernel. Der Autor gibt die Sourcen aber noch nicht frei, weil er noch was fummeln will. Also kann ich mir keine Module bauen. mpf.
24.05.2013 18:37
Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Neue Antwort schreiben 


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste