====== Kassensystem ======
===== Linux Keyboard foo =====
http://www.kernel.org/doc/Documentation/input/input.txt
http://lxr.free-electrons.com/source/drivers/input/input.c
==== Scancode -> keycode ====
https://wiki.archlinux.org/index.php/Map_scancodes_to_keycodes
$ sudo /lib/udev/keymap -i /dev/input/by-id/usb-_USB_Keyboard-event-kbd
==== keycode -> keysym ====
http://linux.about.com/library/cmd/blcmdl5_keymaps.htm
$ sudo loadkeys de
$ dumpkeys -f | grep -i at
keycode 16 = +q +Q at Control_q Control_q nul Meta_q Meta_Q Meta_at Meta_Control_q
keycode 26 = at backslash VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_at Meta_backslash VoidSymbol VoidSymbol
keycode 70 = Scroll_Lock Show_Memory Show_Registers Show_State VoidSymbol VoidSymbol Scroll_Lock VoidSymbol VoidSymbol VoidSymbol
keycode 86 = less greater bar VoidSymbol VoidSymbol VoidSymbol Meta_less Meta_greater Meta_bar VoidSymbol
$ dumpkeys -f | grep -i "+e"
keycode 18 = +e +E currency Control_e Control_e Control_e Meta_e Meta_E Meta_e Meta_Control_e
===== Probleme =====
==== Veränderung von Preisen ====
Der Preis eines Produkts ändert sich ggf., der Preis in der Zahlungshistory der user muss aber gleich bleiben.
=== Antwort: Produkte mit Preis History ===
* (+) Die Preisentwicklung kann verfolgt werden
* (-) Hässliche/teure query
=== Antwort: Preis Kopieren ===
* (+) Einfach zu implementieren
* (*) Kein Speicherplatzverschwendung, da Preis klein
==== Ggf. mehr Barcodes pro Produkt ====
==== Storno alter Transaktionen ====
Soll ein Storno alter Transaktionen das Guthaben der Transaktionen von der Stornierten bis jetzt updaten oder als neuer Punkt auftauechen?
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
/*
http://www.kernel.org/doc/Documentation/input/event-codes.txt
http://stackoverflow.com/questions/2547616/how-can-i-translate-linux-keycodes-from-dev-input-event-to-ascii-in-perl
http://www.linuxquestions.org/questions/programming-9/read-from-a-usb-barcode-scanner-that-simulates-a-keyboard-495358/
http://www.thelinuxdaily.com/2010/05/grab-raw-keyboard-input-from-event-device-node-devinputevent/
http://code.metager.de/source/xref/linux/udev/src/keymap/keymap.c#print_key
http://lxr.free-electrons.com/source/drivers/hid/hid-input.c
*/
int
main(int argc, char *argv[]) {
struct input_event ev[64];
int fd;
int rd;
size_t 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 devicen\n");
exit (0);
}
if((getuid ()) != 0) {
printf("You have to be root\n");
exit (0);
}
if(argc > 1) {
device = argv[1];
}
//Open Device
if((fd = open (device, O_RDONLY)) == -1) {
printf("%s is not a vaild device.n", device);
exit(0);
}
//Print Device Name
ioctl(fd, EVIOCGRAB, 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) {
printf("read()");
exit (0);
}
for(int i = 0; i < rd / size; i++) {
printf("-- %i: %u\t%u\t%i\n", i, ev[i].type, ev[i].code, ev[i].value);
}
}
return 0;
}