From ce3c98ddccee60d3dc52a953128b21ce375c6c3a Mon Sep 17 00:00:00 2001 From: epoch Date: Sun, 12 Apr 2020 23:40:05 -0500 Subject: added some more informative messages, split input into keyboard/mouse --- src/hackvr.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/hackvr.c b/src/hackvr.c index 9ffcaf7..7d2a8dc 100644 --- a/src/hackvr.c +++ b/src/hackvr.c @@ -49,6 +49,8 @@ int lum_based_on_distance(c3_s_t *s) { //might be able to make this faster by just using fgets() and not using recursion and malloc. /* does not return the newline. */ + +//this isn't being used anymore afaict. char *read_line_hack(FILE *fp,int len) { short in; char *t; @@ -133,6 +135,7 @@ int hackvr_handler(char *line); void hackvr_handler_idc(struct shit *me,char *line) { switch(hackvr_handler(line)) { case -1://quit + fprintf(stderr,"# exiting due to EOF\n"); exit(0); case 0://don't redraw break; @@ -330,7 +333,11 @@ int hackvr_handler(char *line) { return ret; } if(!strcmp(command,"quit")) { - return -1; + if(!strcmp(id,global.user)) {//only exit hackvr if *we* are quitting + return -1; + } else { + fprintf(stderr,"# %s has quit hackvr\n",id); + } } if(!strcmp(command,"set")) { //set variable //TODO: add more things to this. if(len != 3 && len != 4) return ret; @@ -610,6 +617,9 @@ int hackvr_handler(char *line) { return ret; } fprintf(stderr,"# I don't know what command you're talking about. %s\n",command); + for(i=0;a[i];i++) { + fprintf(stderr,"# a[%d] = %s\n",i,a[i]); + } //I used to have free(line) here, but this place is never gotten to if a command is found so it wasn't getting released. return ret; } @@ -677,10 +687,16 @@ int main(int argc,char *argv[]) { #ifdef GRAPHICAL i=add_fd(graphics_init(),graphics_event_handler); + fprintf(stderr,"# x11 fd: %d\n",idc.fds[i].fd); + idc.fds[i].read_lines_for_us=0; + + + i=add_fd(mouse_init(),mouse_event_handler);//this should probably be split to keyboard_init, and mouse_init + fprintf(stderr,"# mouse fd: %d\n",idc.fds[i].fd); idc.fds[i].read_lines_for_us=0; - fprintf(stderr,"# x11 fd: %d\n",input_init()); - i=add_fd(input_init(),input_event_handler); + i=add_fd(keyboard_init(),keyboard_event_handler); + fprintf(stderr,"# keyboard fd: %d\n",idc.fds[i].fd); idc.fds[i].read_lines_for_us=0; pipe(gra_global.redraw); -- cgit v1.2.3 From d9d998644defec48172fde353f0a339933800cce Mon Sep 17 00:00:00 2001 From: epoch Date: Sun, 12 Apr 2020 23:45:07 -0500 Subject: fixed up the /dev/input/event (die) inputs to work better with libidc --- src/keyboard.c | 2 +- src/keyboard_die.c | 16 ++++++++++++++-- src/mouse_die.c | 10 +++++++++- 3 files changed, 24 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/keyboard.c b/src/keyboard.c index c0e8ed9..78a0064 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -10,7 +10,7 @@ extern struct gra_global gra_global; char keyboard_map[1024]={0}; //return 0 is all is fine, -1 if we need to exit -void keyboard_event_handler() { +void keyboard_event_handler(struct shit *me,char *junk) {//these arguments aren't actually used. int k; char line[2560]; c3_group_rot_t *gr; diff --git a/src/keyboard_die.c b/src/keyboard_die.c index d620f70..e043db4 100644 --- a/src/keyboard_die.c +++ b/src/keyboard_die.c @@ -10,6 +10,17 @@ int kbfd = -1; +int keyboard_init() { + if((kbfd=open(KBDEV,O_RDWR)) == -1) { + fprintf(stderr,"# failed to open keyboard: %s\n",KBDEV); + } + return kbfd; +} + +/*void keyboard_event_handler(struct *me,char *junk) { + //wtf goes here? +}*/ + hvk_t die_keypress_handler(unsigned short code) { switch(code) { case KEY_W: return HVK_FORWARD; @@ -28,10 +39,11 @@ hvk_t get_keyboard_event() { memset(&ie,0,sizeof(ie)); if(kbfd == -1) { kbfd=open(KBDEV,O_RDWR); - fcntl(kbfd,F_SETFL,O_NONBLOCK); + //probably not needed anymore + //fcntl(kbfd,F_SETFL,O_NONBLOCK); } if(kbfd == -1) { - fprintf(stderr,"# keyboard shit fucked up.\n"); + fprintf(stderr,"# keyboard shit fucked up. probably permissions error.\n"); return 1; } if((l=read(kbfd,&ie,sizeof(ie))) > 0) { diff --git a/src/mouse_die.c b/src/mouse_die.c index 6729a94..b17c143 100644 --- a/src/mouse_die.c +++ b/src/mouse_die.c @@ -18,13 +18,21 @@ struct wtf { char dy; }; +int mouse_init() { + if((mfd=open(MOUSEDEV,O_RDWR)) == -1) { + fprintf(stderr,"# failed to open mouse: %d\n",mfd); + } + return mfd; +} + int mouse_event_handler() { struct wtf ie; int l; memset(&ie,0,sizeof(ie)); if(mfd == -1) { mfd=open(MOUSEDEV,O_RDWR); - fcntl(mfd,F_SETFL,O_NONBLOCK); + //probably don't need nonblock anymore. + //fcntl(mfd,F_SETFL,O_NONBLOCK); } if(mfd == -1) { fprintf(stderr,"# mouse shit fucked up.\n"); -- cgit v1.2.3 From 9bd65a27745012087eb4546d77ef4964663a96a2 Mon Sep 17 00:00:00 2001 From: epoch Date: Sun, 12 Apr 2020 23:50:54 -0500 Subject: added a new idea of using X11 video and /dev/input/event for input. moved hackvr script to bin like it should be. changed makefile stuff to have more consistent ordering of stuff. --- bin/hackvr | 9 +++++++++ src/Makefile | 37 ++++++++++++++++++++++++------------- src/hackvr | 9 --------- src/hackvr_xdie.c | 1 + 4 files changed, 34 insertions(+), 22 deletions(-) create mode 100755 bin/hackvr delete mode 100755 src/hackvr create mode 120000 src/hackvr_xdie.c (limited to 'src') diff --git a/bin/hackvr b/bin/hackvr new file mode 100755 index 0000000..1c9d16c --- /dev/null +++ b/bin/hackvr @@ -0,0 +1,9 @@ +#!/bin/sh +if [ "_$HACKVR" != "_" -a "_$HACKVR" != "_$0" ];then + exec $HACKVR $* +fi +if [ $DISPLAY ]; then + exec hackvr_x11 $* +else + exec hackvr_fb $* +fi diff --git a/src/Makefile b/src/Makefile index 5c83e45..045f82c 100644 --- a/src/Makefile +++ b/src/Makefile @@ -2,7 +2,7 @@ PREFIX:=/usr/local/ -BASE_CFLAGS=-Wall -pedantic -std=c99 -ffast-math -I$(PREFIX)/include +BASE_CFLAGS=-g -Wall -pedantic -std=c99 -ffast-math -I$(PREFIX)/include CFLAGS+=$(BASE_CFLAGS) CFLAGS+=-DGRAPHICAL @@ -10,9 +10,12 @@ CFLAGS+=-DGRAPHICAL LDFLAGS+=-L$(PREFIX)/lib #all: hackvr_headless hackvr_x11 hackvr_opengl slowcat ### when hackvr_opengl gets useful at all I'll start including it in default build. -all: hackvr_headless hackvr_x11 slowcat nonblocktail +all: hackvr_xdie hackvr_headless hackvr_x11 slowcat nonblocktail # hackvr_fb hackvr_freeglut slowcat +hackvr_xdie: override LDLIBS+=-lm -lidc -lX11 -lhashtable +hackvr_xdie: hackvr_xdie.o graphics_c3.o graphics_c2.o graphics_cs_x11.o math.o physics.o keyboard.o mouse_die.o keyboard_die.o input.o + nonblocktail: override LDLIBS+=-lidc nonblocktail: nonblocktail.c @@ -34,33 +37,41 @@ hackvr_freeglut: hackvr_freeglut.o graphics_c3_freeglut.o math.o physics.o keybo hackvr_fb.o: CFLAGS+='-DHVR_VERSION="framebuffer"' hackvr_x11.o: CFLAGS+='-DHVR_VERSION="x11"' +hackvr_xdie.o: CFLAGS+='-DHVR_VERSION="x11+die"' hackvr_headless.o: CFLAGS=$(BASE_CFLAGS) hackvr_headless.o: CFLAGS+='-DHVR_VERSION="headless"' install: all mkdir -p $(PREFIX)/bin - install hackvr $(PREFIX)/bin/hackvr - install hackvr_headless $(PREFIX)/bin/hackvr_headless - install hackvr_x11 $(PREFIX)/bin/hackvr_x11 - install slowcat $(PREFIX)/bin/slowcat - install nonblocktail $(PREFIX)/bin/nonblocktail -# install hackvr_fb $(PREFIX)/bin/hackvr_fb -# install hackvr_freeglut $(PREFIX)/bin/hackvr_freeglut + install -t $(PREFIX)/bin hackvr + install -t $(PREFIX)/bin hackvr_headless + install -t $(PREFIX)/bin hackvr_x11 + install -t $(PREFIX)/bin slowcat + install -t $(PREFIX)/bin nonblocktail + install -t $(PREFIX)/bin hackvr_xdie +# install -t $(PREFIX)/bin hackvr_fb +# install -t $(PREFIX)/bin hackvr_freeglut uninstall: rm $(PREFIX)/bin/hackvr rm $(PREFIX)/bin/hackvr_headless rm $(PREFIX)/bin/hackvr_x11 - rm $(PREFIX)/bin/hackvr_fb rm $(PREFIX)/bin/slowcat + rm $(PREFIX)/bin/nonblocktail + rm $(PREFIX)/bin/hackvr_xdie +# rm $(PREFIX)/bin/hackvr_fb +# rm $(PREFIX)/bin/hackvr_freeglut clean: - rm -f hackvr_freeglut +# do *not* rm hackvr. it is a script which doesn't actually belong in this dir so... rm -f hackvr_headless - rm -f hackvr_opengl rm -f hackvr_x11 - rm -f hackvr_fb rm -f slowcat + rm -f nonblocktail + rm -f hackvr_xdie +# rm -f hackvr_opengl +# rm -f hackvr_fb +# rm -f hackvr_freeglut rm -f *.o status: diff --git a/src/hackvr b/src/hackvr deleted file mode 100755 index 1c9d16c..0000000 --- a/src/hackvr +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/sh -if [ "_$HACKVR" != "_" -a "_$HACKVR" != "_$0" ];then - exec $HACKVR $* -fi -if [ $DISPLAY ]; then - exec hackvr_x11 $* -else - exec hackvr_fb $* -fi diff --git a/src/hackvr_xdie.c b/src/hackvr_xdie.c new file mode 120000 index 0000000..e4c9ddd --- /dev/null +++ b/src/hackvr_xdie.c @@ -0,0 +1 @@ +hackvr.c \ No newline at end of file -- cgit v1.2.3 From ebc7381301c06c31933d11ff3e2b68ca005aa3e7 Mon Sep 17 00:00:00 2001 From: epoch Date: Sun, 12 Apr 2020 23:57:34 -0500 Subject: noticed I don't need input.o in the makefile anymore --- src/Makefile | 5 +++-- src/input.c | 19 ------------------- src/input.h | 14 ++++++++++---- 3 files changed, 13 insertions(+), 25 deletions(-) delete mode 100644 src/input.c (limited to 'src') diff --git a/src/Makefile b/src/Makefile index 045f82c..6ed9c5d 100644 --- a/src/Makefile +++ b/src/Makefile @@ -14,7 +14,7 @@ all: hackvr_xdie hackvr_headless hackvr_x11 slowcat nonblocktail # hackvr_fb hackvr_freeglut slowcat hackvr_xdie: override LDLIBS+=-lm -lidc -lX11 -lhashtable -hackvr_xdie: hackvr_xdie.o graphics_c3.o graphics_c2.o graphics_cs_x11.o math.o physics.o keyboard.o mouse_die.o keyboard_die.o input.o +hackvr_xdie: hackvr_xdie.o graphics_c3.o graphics_c2.o graphics_cs_x11.o math.o physics.o keyboard.o mouse_die.o keyboard_die.o nonblocktail: override LDLIBS+=-lidc nonblocktail: nonblocktail.c @@ -23,7 +23,8 @@ hackvr_headless: override LDLIBS+=-lm -lidc -lhashtable hackvr_headless: hackvr_headless.o math.o physics.o hackvr_x11: override LDLIBS+=-lm -lidc -lX11 -lhashtable -hackvr_x11: hackvr_x11.o graphics_c3.o graphics_c2.o graphics_cs_x11.o math.o physics.o keyboard.o mouse_x11.o keyboard_x11.o input.o +hackvr_x11: hackvr_x11.o graphics_c3.o graphics_c2.o graphics_cs_x11.o math.o physics.o keyboard.o mouse_x11.o keyboard_x11.o + #notice how all the targets have generic graphics objects up until a specific one. hackvr_fb: override LDLIBS+=-lm -lidc -lhashtable diff --git a/src/input.c b/src/input.c deleted file mode 100644 index 8c1b99b..0000000 --- a/src/input.c +++ /dev/null @@ -1,19 +0,0 @@ -#include -#include "common.h" -#include "graphics_x11.h" -#include "keyboard_x11.h" -#include "mouse_x11.h" -#include "input.h" - -extern struct x11_global x11_global; - -int input_init() { - return x11_global.fd; -} - -void input_event_handler(struct shit *me,char *line) { - if(keyboard_event_handler(me,line)) { - } - if(mouse_event_handler(me,line)) { - } -} diff --git a/src/input.h b/src/input.h index 15b28f4..0c878e6 100644 --- a/src/input.h +++ b/src/input.h @@ -1,11 +1,17 @@ #ifndef _HV_MOUSE_H_ #define _HV_MOUSE_H_ +//these might as well be in keyboard.h and mouse.h +//but I don't have separate files for those yet. +//all keyboard and mouse drivers will need to implement these functions + #include -int input_init(); -void input_event_handler(struct shit *me,char *line); -int mouse_event_handler(); -int keyboard_event_handler(); +//these *_init() will return the fd that will have the keyboard and mouse events +int mouse_init(); +int keyboard_init(); +//these two functions are libidc handlers +void mouse_event_handler(struct shit *,char *); +void keyboard_event_handler(struct shit *,char *); #endif -- cgit v1.2.3 From 9931a28668db34e7f6975de1231ea23881d7c361 Mon Sep 17 00:00:00 2001 From: epoch Date: Mon, 13 Apr 2020 01:00:32 -0500 Subject: forgot to remove the hackvr script from the install target --- src/Makefile | 1 - 1 file changed, 1 deletion(-) (limited to 'src') diff --git a/src/Makefile b/src/Makefile index 6ed9c5d..9ad35e6 100644 --- a/src/Makefile +++ b/src/Makefile @@ -44,7 +44,6 @@ hackvr_headless.o: CFLAGS+='-DHVR_VERSION="headless"' install: all mkdir -p $(PREFIX)/bin - install -t $(PREFIX)/bin hackvr install -t $(PREFIX)/bin hackvr_headless install -t $(PREFIX)/bin hackvr_x11 install -t $(PREFIX)/bin slowcat -- cgit v1.2.3 From 67246b5142442af819f0285ad7d60b52e966e010 Mon Sep 17 00:00:00 2001 From: epoch Date: Tue, 14 Apr 2020 05:55:46 -0500 Subject: new function: c2_add. you can guess what it does. --- src/math.c | 5 +++++ src/math.h | 1 + 2 files changed, 6 insertions(+) (limited to 'src') diff --git a/src/math.c b/src/math.c index 6a077f0..9f7e0cc 100644 --- a/src/math.c +++ b/src/math.c @@ -193,6 +193,11 @@ c3_t c3_add(c3_t p1,c3_t p2) { return (c3_t){p1.x+p2.x,p1.y+p2.y,p1.z+p2.z}; } +//this could probably be a macro, or inline or whatever. and also work for cs_t +c2_t c2_add(c2_t p1,c2_t p2) { + return (c2_t){p1.x+p2.x,p1.y+p2.y}; +} + real distance3(c3_t p1,c3_t p2) { return sqrt(( (p1.x-p2.x)*(p1.x-p2.x) )+( (p1.y-p2.y)*(p1.y-p2.y) )+( (p1.z-p2.z)*(p1.z-p2.z) )); } diff --git a/src/math.h b/src/math.h index e7b5249..b333767 100644 --- a/src/math.h +++ b/src/math.h @@ -21,6 +21,7 @@ radians points_to_angle(c2_t p1,c2_t p2); int between_angles(degrees d,real lower,real upper); c3_s_t apply_group_relative(c3_s_t s,c3_group_rot_t *group_rot); c3_t c3_add(c3_t p1,c3_t p2); +c2_t c2_add(c2_t p1,c2_t p2); real distance3(c3_t p1,c3_t p2); void print_point(c3_t p); -- cgit v1.2.3 From aff5af827cf8906486fe2c363c2e91e9e06da1f3 Mon Sep 17 00:00:00 2001 From: epoch Date: Tue, 14 Apr 2020 06:01:59 -0500 Subject: redid most of the /dev/input/mice code --- src/mouse_die.c | 45 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/mouse_die.c b/src/mouse_die.c index b17c143..4fddf5f 100644 --- a/src/mouse_die.c +++ b/src/mouse_die.c @@ -4,6 +4,10 @@ #include #include +#include "graphics_c3.h" + +extern struct hvr_global global; +extern struct gra_global gra_global; //#define MOUSEDEV "/dev/input/mouse0" //just one of the many possibly connected mice. (just in case you want to use one mouse for one thing and another mouse for something else) #define MOUSEDEV "/dev/input/mice" //all the mice connected act as one. @@ -27,7 +31,10 @@ int mouse_init() { int mouse_event_handler() { struct wtf ie; + int butt; int l; + int i; + int redrawplzkthx=0; memset(&ie,0,sizeof(ie)); if(mfd == -1) { mfd=open(MOUSEDEV,O_RDWR); @@ -40,7 +47,43 @@ int mouse_event_handler() { } if((l=read(mfd,&ie,sizeof(ie))) > 0) { //type == 8 and a or of some bits to say which direction. - fprintf(stderr,"# mouse debug: type:\t%d\tdx:%d\tdy:%d\n",ie.type,ie.dx,ie.dy); + //these types are movement: 8 40 56 24 + for(i=0;i<4;i++) {//we need to loop over all buttons each event. :/ + butt=ie.type & 0x07 & (1< Date: Tue, 14 Apr 2020 06:05:47 -0500 Subject: added hackvr_fb back into the default build --- src/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/Makefile b/src/Makefile index 9ad35e6..5803a1a 100644 --- a/src/Makefile +++ b/src/Makefile @@ -10,7 +10,7 @@ CFLAGS+=-DGRAPHICAL LDFLAGS+=-L$(PREFIX)/lib #all: hackvr_headless hackvr_x11 hackvr_opengl slowcat ### when hackvr_opengl gets useful at all I'll start including it in default build. -all: hackvr_xdie hackvr_headless hackvr_x11 slowcat nonblocktail +all: hackvr_fb hackvr_xdie hackvr_headless hackvr_x11 slowcat nonblocktail # hackvr_fb hackvr_freeglut slowcat hackvr_xdie: override LDLIBS+=-lm -lidc -lX11 -lhashtable @@ -49,7 +49,7 @@ install: all install -t $(PREFIX)/bin slowcat install -t $(PREFIX)/bin nonblocktail install -t $(PREFIX)/bin hackvr_xdie -# install -t $(PREFIX)/bin hackvr_fb + install -t $(PREFIX)/bin hackvr_fb # install -t $(PREFIX)/bin hackvr_freeglut uninstall: @@ -59,7 +59,7 @@ uninstall: rm $(PREFIX)/bin/slowcat rm $(PREFIX)/bin/nonblocktail rm $(PREFIX)/bin/hackvr_xdie -# rm $(PREFIX)/bin/hackvr_fb + rm $(PREFIX)/bin/hackvr_fb # rm $(PREFIX)/bin/hackvr_freeglut clean: @@ -70,7 +70,7 @@ clean: rm -f nonblocktail rm -f hackvr_xdie # rm -f hackvr_opengl -# rm -f hackvr_fb + rm -f hackvr_fb # rm -f hackvr_freeglut rm -f *.o -- cgit v1.2.3 From b459d3c8c98e5ca7b62a1a5677e5594b146ff84d Mon Sep 17 00:00:00 2001 From: epoch Date: Tue, 14 Apr 2020 06:09:59 -0500 Subject: now draw a cursor at the mouse location. useful in the fb version --- src/graphics_c3.c | 11 ++++++++--- src/graphics_c3.h | 1 + 2 files changed, 9 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/graphics_c3.c b/src/graphics_c3.c index 98c2c25..2af58d7 100644 --- a/src/graphics_c3.c +++ b/src/graphics_c3.c @@ -483,11 +483,16 @@ void draw_screen() { //this should be minimap shit //draw a line from the center to 80 away from the center in the angle of what should point at the mouse. - /*draw_c2_line((c2_t){0,0},gra_global.mouse); + //draw_c2_line((c2_t){0,0},gra_global.mouse); + set_color(); + draw_c2_line(c2_add(gra_global.mouse,(c2_t){0,1}) , c2_add(gra_global.mouse,(c2_t){0,5}) ); + draw_c2_line(c2_add(gra_global.mouse,(c2_t){0,-1}) , c2_add(gra_global.mouse,(c2_t){0,-5}) ); + draw_c2_line(c2_add(gra_global.mouse,(c2_t){1,0}) , c2_add(gra_global.mouse,(c2_t){5,0}) ); + draw_c2_line(c2_add(gra_global.mouse,(c2_t){-1,0}) , c2_add(gra_global.mouse,(c2_t){-5,0}) ); set_color(); //if(points_on_same_side_of_line(gra_global.mouse,(c2_t){80,80},(c2_t){0,0},(c2_t){0,80})) { - draw_c2_line((c2_t){0,0},rotate_c2((c2_t){80,0},(c2_t){0,0},points_to_angle((c2_t){0,0},gra_global.mouse))); - //}*/ + //draw_c2_line((c2_t){0,0},rotate_c2((c2_t){80,0},(c2_t){0,0},points_to_angle((c2_t){0,0},gra_global.mouse))); + //} flipscreen(); } diff --git a/src/graphics_c3.h b/src/graphics_c3.h index 3f9fb78..7ea5c74 100644 --- a/src/graphics_c3.h +++ b/src/graphics_c3.h @@ -2,6 +2,7 @@ #define _HACKVR_GRAPHICS_H_ #include +#include "common.h" struct gra_global { unsigned int width; -- cgit v1.2.3 From 8ed4d5bcb2337f5542799f8b9eb05c5b6b3f360e Mon Sep 17 00:00:00 2001 From: epoch Date: Tue, 14 Apr 2020 06:11:35 -0500 Subject: redraw on mouse movement in X11 because... I dunno --- src/mouse_x11.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src') diff --git a/src/mouse_x11.c b/src/mouse_x11.c index 16c577c..719940e 100644 --- a/src/mouse_x11.c +++ b/src/mouse_x11.c @@ -73,6 +73,9 @@ int mouse_event_handler() {//this returns HVM_ key + for buttondown and - for bu global.camera.r.x.d=gra_global.oldcamera.x.d + (gra_global.mouse.y - gra_global.dragstart[2].y); global.camera.r.y.d=gra_global.oldcamera.y.d + (gra_global.mouse.x - gra_global.dragstart[2].x); } + //do we need to redraw on mouse movement? + //probably. + redrawplzkthx=1; } if(redrawplzkthx) { redraw(); -- cgit v1.2.3 From 1b57092b70e5a72ec948dd260745eec3c9230683 Mon Sep 17 00:00:00 2001 From: epoch Date: Tue, 14 Apr 2020 06:19:54 -0500 Subject: added ability for graphics system to not generate events. --- src/hackvr.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/hackvr.c b/src/hackvr.c index 7d2a8dc..80991dd 100644 --- a/src/hackvr.c +++ b/src/hackvr.c @@ -650,6 +650,7 @@ void alarm_handler(int sig) { int main(int argc,char *argv[]) { int i; + int fd; if(argc == 2) { if(!strcmp(argv[1],"-v") || !strcmp(argv[1],"--version")) { hvr_version(); @@ -672,7 +673,6 @@ int main(int argc,char *argv[]) { inittable(&global.ht_group,65536); - fcntl(1,F_SETFL,O_NONBLOCK);//won't work setbuf(stdin,0); setbuf(stdout,0); global.debug=DEBUG; @@ -686,10 +686,13 @@ int main(int argc,char *argv[]) { idc.shitlen=0; #ifdef GRAPHICAL - i=add_fd(graphics_init(),graphics_event_handler); - fprintf(stderr,"# x11 fd: %d\n",idc.fds[i].fd); - idc.fds[i].read_lines_for_us=0; - + if((fd=graphics_init()) == -1) { + fprintf(stderr,"# graphics system in use doesn't generate events.\n"); + } else { + i=add_fd(graphics_init(),graphics_event_handler); + fprintf(stderr,"# graphics fd: %d\n",idc.fds[i].fd); + idc.fds[i].read_lines_for_us=0; + } i=add_fd(mouse_init(),mouse_event_handler);//this should probably be split to keyboard_init, and mouse_init fprintf(stderr,"# mouse fd: %d\n",idc.fds[i].fd); -- cgit v1.2.3 From 8115820489cb7f2d4952f94eb755d89b584fb242 Mon Sep 17 00:00:00 2001 From: epoch Date: Tue, 14 Apr 2020 06:20:30 -0500 Subject: removed a comment, added a comment. --- src/graphics_fb.h | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'src') diff --git a/src/graphics_fb.h b/src/graphics_fb.h index d6e8d7c..0c3a753 100644 --- a/src/graphics_fb.h +++ b/src/graphics_fb.h @@ -1,9 +1,6 @@ #ifndef _HACKVR_GRAPHICS_FB_H_ #define _HACKVR_GRAPHICS_FB_H_ -//find this with trial and error or X11 log or... I don't care. -#define FB_KEYB "/dev/input/event0" - #include #define DRAW_MODE_CLEAR 0x0 @@ -16,7 +13,7 @@ struct fb_global { int kb; int draw_mode; unsigned int current_color; - unsigned int *backbuf; + unsigned int *backbuf;//this is assuming unsigned int is 4 bytes and color depth is 32. struct fb_var_screeninfo info; unsigned int *buf; unsigned int fblen; -- cgit v1.2.3 From 4a7cc1a5dee7ef1065f232cbd1b5e51c399dd920 Mon Sep 17 00:00:00 2001 From: epoch Date: Tue, 14 Apr 2020 06:22:08 -0500 Subject: cleaned out a BUNCH of old commented out code. updated other parts to get it at least compiling and not crashing. --- src/graphics_cs_fb.c | 232 +++------------------------------------------------ 1 file changed, 11 insertions(+), 221 deletions(-) (limited to 'src') diff --git a/src/graphics_cs_fb.c b/src/graphics_cs_fb.c index b566302..d8bb133 100644 --- a/src/graphics_cs_fb.c +++ b/src/graphics_cs_fb.c @@ -30,7 +30,7 @@ //Pixmap skypixmap; //char sky[SKYH][SKYW]; -extern struct global global; +extern struct hvr_global global; extern struct gra_global gra_global; struct fb_global fb_global; @@ -67,7 +67,7 @@ void draw_cs_point(int x,int y) {//this should write to a backbuffer then I can if(y > fb_global.info.yres) return; if(i > fb_global.fblen) return; //hack to test it with. remove me later. - fb_global.current_color=-1; + //fb_global.current_color=-1; int derp; derp=(fb_global.current_color == -1) ? (rand()) : fb_global.current_color; switch(fb_global.draw_mode) { @@ -102,11 +102,13 @@ void draw_cs_line(cs_t p1,cs_t p2) {//error somewhere in here. derp... for(y=min(p1.y,p2.y);y 0); @@ -354,7 +358,8 @@ int graphics_sub_init() {//some of this is keyboard init... should it be moved o flipscreen(); gra_global.width=fb_global.info.xres; gra_global.height=fb_global.info.yres; - return 0; + fprintf(stderr,"# width: %d height: %d\n",gra_global.width,gra_global.height); + return -1;//don't return a usable fd! } /* this need a framebuffer equivalent @@ -370,221 +375,6 @@ int graphics_sub_init() {//some of this is keyboard init... should it be moved o #define KEY_IS_DOWN(a) (fb_global.keystate[a/8] & (1<< (a % 8))) -int graphics_event_handler(int world_changed) { //should calling draw_screen be in here? -#if 0 - int redraw=0; - char line[2048]; - char line2[1025]; - int len; - struct input_event ie; - memset(&ie,0,sizeof(ie)); - int l; - real tmpx; - real tmpz; - radians tmprad; - radians tmprad2; - int i; - //update the keystates... - ioctl(fb_global.kb,EVIOCGKEY(sizeof(fb_global.keystate)),fb_global.keystate);//update keystate - read(fb_global.kb,&ie,sizeof(ie));//???? -//need to not be using KEY_IS_DOWN so that it gets these events instead of just checking when it gets to this loop. - if(KEY_IS_DOWN(KEY_ESC)) exit(0); - if(KEY_IS_DOWN(KEY_ENTER)) { - snprintf(line,sizeof(line)-1,"%s action %s\n",global.user,global.selected_object); - selfcommand(line); - } - if(KEY_IS_DOWN(KEY_UP)) { - tmprad=d2r((degrees){global.camera.r.y.d});//if the angle is 0... - tmprad2=d2r((degrees){global.camera.r.y.d}); - tmpx=WALK_SPEED*sin(tmprad.r);//cos(0)==1 - tmpz=WALK_SPEED*cos(tmprad2.r);//sin(0)==0 - snprintf(line,sizeof(line)-1,"%s move +%f +0 +%f\n",global.user,tmpx,tmpz); - selfcommand(line); - } - if(KEY_IS_DOWN(KEY_DOWN)) { - tmprad=d2r((degrees){global.camera.r.y.d+180}); - tmprad2=d2r((degrees){global.camera.r.y.d+180}); - tmpx=WALK_SPEED*sin(tmprad.r); - tmpz=WALK_SPEED*cos(tmprad2.r); - snprintf(line,sizeof(line)-1,"%s move +%f +0 +%f\n",global.user,tmpx,tmpz); - selfcommand(line); - } - if(KEY_IS_DOWN(KEY_LEFT)) { - tmprad=d2r((degrees){global.camera.r.y.d+90}); - tmprad2=d2r((degrees){global.camera.r.y.d+90}); - tmpx=WALK_SPEED*sin(tmprad.r); - tmpz=WALK_SPEED*cos(tmprad2.r); - snprintf(line,sizeof(line)-1,"%s move +%f +0 +%f\n",global.user,tmpx,tmpz); - selfcommand(line); - } - if(KEY_IS_DOWN(KEY_RIGHT)) { - tmprad=d2r((degrees){global.camera.r.y.d+270}); - tmprad2=d2r((degrees){global.camera.r.y.d+270}); - tmpx=WALK_SPEED*sin(tmprad.r); - tmpz=WALK_SPEED*cos(tmprad2.r); - snprintf(line,sizeof(line)-1,"%s move +%f +0 +%f\n",global.user,tmpx,tmpz); - selfcommand(line); - } - if(KEY_IS_DOWN(KEY_W)) { - snprintf(line,sizeof(line)-1,"%s move +0 +1 +0\n",global.user); - selfcommand(line); - } - if(KEY_IS_DOWN(KEY_S)) { - snprintf(line,sizeof(line)-1,"%s move +0 +-1 +0\n",global.user); - selfcommand(line); - } - if(KEY_IS_DOWN(KEY_R)) { - snprintf(line,sizeof(line)-1,"%s rotate +%d +0 +0\n",global.user,ROTATE_STEP); - selfcommand(line); - } - if(KEY_IS_DOWN(KEY_Y)) { - snprintf(line,sizeof(line)-1,"%s rotate +%d +0 +0\n",global.user,-ROTATE_STEP); - selfcommand(line); - } - if(KEY_IS_DOWN(KEY_Q)) { - snprintf(line,sizeof(line)-1,"%s rotate +0 +%d +0\n",global.user,ROTATE_STEP); - selfcommand(line); - } - if(KEY_IS_DOWN(KEY_E)) { - snprintf(line,sizeof(line)-1,"%s rotate +0 +%d +0\n",global.user,-ROTATE_STEP); - selfcommand(line); - } - if(KEY_IS_DOWN(KEY_U)) { - snprintf(line,sizeof(line)-1,"%s rotate +0 +0 +%d\n",global.user,ROTATE_STEP); - selfcommand(line); - } - if(KEY_IS_DOWN(KEY_O)) { - snprintf(line,sizeof(line)-1,"%s rotate +0 +0 +%d\n",global.user,-ROTATE_STEP); - selfcommand(line); - } - if(KEY_IS_DOWN(KEY_P)) gra_global.split+=.1; - if(KEY_IS_DOWN(KEY_L)) gra_global.split-=.1; - if(KEY_IS_DOWN(KEY_Z)) global.zoom+=1; - if(KEY_IS_DOWN(KEY_X)) { - global.zoom-=1; - if(global.zoom < 1) global.zoom=1; - } - if(KEY_IS_DOWN(KEY_C)) global.mmz*=1.1; - if(KEY_IS_DOWN(KEY_V)) global.mmz/=1.1; - if(KEY_IS_DOWN(KEY_H)) global.split+=1; - if(KEY_IS_DOWN(KEY_J)) global.split-=1; - if(KEY_IS_DOWN(KEY_6)) gra_global.maxshapes+=10; - if(KEY_IS_DOWN(KEY_7)) gra_global.maxshapes-=10; - if(KEY_IS_DOWN(KEY_D)) global.debug ^= 1; - if(KEY_IS_DOWN(KEY_F)) global.derp ^= 1; - if(KEY_IS_DOWN(KEY_M)) { - gra_global.drawminimap += 1; - gra_global.drawminimap %= 4; - } - if(KEY_IS_DOWN(KEY_A)) gra_global.drawsky ^= 1; - if(KEY_IS_DOWN(KEY_3)) { - gra_global.draw3d += 1; - gra_global.draw3d %= 4; - } -//LONG comment. then rest of function. don't end it too early, derp. -/* - } - break; - default: - switch(sym) { - case XK_Return: - strcpy(line,"\n"); - len=1; - break; - case XK_Left://hack. probably just replace this with printf()s - strcpy(line,"\x1b[D"); - len=3; - break; - case XK_Right: - strcpy(line,"\x1b[C"); - len=3; - break; - case XK_Down: - strcpy(line,"\x1b[B"); - len=3; - break; - case XK_Up: - strcpy(line,"\x1b[A"); - len=3; - break; - default: - len=XLookupString(xkey,line,1023,NULL,NULL); - break; - } - for(i=0;i/2 < len;i++) line2[i]="0123456789abcdef"[(line[i/2]>>(4*(1-(i%2)))) % 16]; - line2[i]=0; - printf("%s data %s\n",global.user,line2); - break; - } - - //then do stuff based on what keystates are set. - //... loop over the whole array? - //have an array of deltas? - //what sets mask? - char motionnotify=0; - unsigned int mask; - if(global.beep) { - global.beep=0; - XBell(x11_global.dpy,1000); - set_demands_attention(); - } - while(XPending(x11_global.dpy)) {//these are taking too long? - XNextEvent(x11_global.dpy, &e); -// fprintf(stderr,"# handling event with type: %d\n",e.type); - switch(e.type) { -// case Expose: -// if(e.xexpose.count == 0) redraw=1; -// break; - case MotionNotify: - if(global.debug >= 2) fprintf(stderr,"# MotionNotify\n"); - motionnotify=1; - break; - case ButtonPress: - if(global.debug >= 2) fprintf(stderr,"# ButtonPress\n"); - redraw=1; - gra_global.buttonpressed=e.xbutton.button;//what's this for? mouse? - break; - case ButtonRelease: - if(global.debug >= 2) fprintf(stderr,"# ButtonRelease\n"); - redraw=1; - gra_global.buttonpressed=0;//what's this for??? - break; - case ConfigureNotify: - if(global.debug >= 2) fprintf(stderr,"# ConfigureNotify\n"); - redraw=1; - XGetGeometry(x11_global.dpy,x11_global.w,&root,&global.x,&global.y,&gra_global.width,&gra_global.height,&gra_global.border_width,&gra_global.depth); - if(gra_global.height * AR_W / AR_H != gra_global.width / (gra_global.split_screen / (gra_global.red_and_blue ? gra_global.split_screen : 1))) { - // height / AR_H * AR_W = width / (ss / (rab ? ss : 1)) - if(global.debug >= 2) { - fprintf(stderr,"# %d != %d for some reason. probably your WM not respecting aspect ratio hints or calculating based on them differently. (would cause an off-by-one or so)\n",gra_global.height * AR_W / AR_H , gra_global.width / (gra_global.split_screen / (gra_global.red_and_blue ? gra_global.split_screen : 1))); - } - if(gra_global.width / (gra_global.red_and_blue ? 1 : gra_global.split_screen) * AR_H / AR_W < gra_global.height) { - gra_global.height=gra_global.width / (gra_global.red_and_blue ? 1 : gra_global.split_screen) * AR_H / AR_W; - } else { - gra_global.width=gra_global.height * AR_W / AR_H * (gra_global.red_and_blue ? 1 : gra_global.split_screen); - } - } - gra_global.mapxoff=gra_global.width/(gra_global.split_screen / (gra_global.red_and_blue ? gra_global.split_screen : 1))/2; - gra_global.mapyoff=gra_global.height/2; - break; - case KeyPress: - if(global.debug >= 2) fprintf(stderr,"# KeyPress\n"); - redraw=1; - x11_keypress_handler(&e.xkey,gra_global.mousex,gra_global.mousey); - break; - default: -// fprintf(stderr,"# received unknown event with type: %d\n",e.type); - break; - } - } - if(motionnotify) { - XQueryPointer(x11_global.dpy,x11_global.w,&root,&child,&gra_global.rmousex,&gra_global.rmousey,&gra_global.mousex,&gra_global.mousey,&mask); - redraw=1; - } -*/ -#endif - if(world_changed) { - draw_screen();//includes its own flip. - } - return 1;//redraw; +void graphics_event_handler(struct shit *me,char *line) { + return;//fuck if i know. nothing to do? } -- cgit v1.2.3 From 7cedbf16a4c71b8a5ba0646c35fd03f20ddbda24 Mon Sep 17 00:00:00 2001 From: epoch Date: Tue, 14 Apr 2020 06:22:58 -0500 Subject: removed a couple things in keyboard event code that was initializing the keyboard --- src/keyboard_die.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/keyboard_die.c b/src/keyboard_die.c index e043db4..5a52879 100644 --- a/src/keyboard_die.c +++ b/src/keyboard_die.c @@ -6,7 +6,8 @@ #include "keyboard.h" -#define KBDEV "/dev/input/event0" +//#define KBDEV "/dev/input/event0" +#define KBDEV "/dev/input/by-path/platform-i8042-serio-0-event-kbd" int kbfd = -1; @@ -37,15 +38,6 @@ hvk_t get_keyboard_event() { struct input_event ie; int l; memset(&ie,0,sizeof(ie)); - if(kbfd == -1) { - kbfd=open(KBDEV,O_RDWR); - //probably not needed anymore - //fcntl(kbfd,F_SETFL,O_NONBLOCK); - } - if(kbfd == -1) { - fprintf(stderr,"# keyboard shit fucked up. probably permissions error.\n"); - return 1; - } if((l=read(kbfd,&ie,sizeof(ie))) > 0) { if(ie.type == 1) { fprintf(stderr,"# value: %d code: %d type: %d\n",ie.value,ie.code,ie.type); -- cgit v1.2.3