diff --git a/newdc/linux-dist/main.cpp b/newdc/linux-dist/main.cpp index 02aa93cef..cd95fc16f 100755 --- a/newdc/linux-dist/main.cpp +++ b/newdc/linux-dist/main.cpp @@ -186,7 +186,55 @@ bool HandleKb(u32 port) { if (kbfd < 0) return false; - #ifdef TARGET_PANDORA + #if defined(TARGET_GCW0) + + #define KEY_A 0x1D + #define KEY_B 0x38 + #define KEY_X 0x2A + #define KEY_Y 0x39 + #define KEY_L 0xF + #define KEY_R 0xE + #define KEY_SELECT 0x1 + #define KEY_START 0x1C + #define KEY_LEFT 0x69 + #define KEY_RIGHT 0x6A + #define KEY_UP 0x67 + #define KEY_DOWN 0x6C + #define KEY_LOCK 0x77 // Note that KEY_LOCK is a switch and remains pressed until it's switched back + + static int keys[13]; + while(read(kbfd,&ie,sizeof(ie))==sizeof(ie)) { + //printf("type %i key %i state %i\n", ie.type, ie.code, ie.value); + if (ie.type=EV_KEY) + switch (ie.code) { + case KEY_SELECT: keys[9]=ie.value; break; + case KEY_UP: keys[1]=ie.value; break; + case KEY_DOWN: keys[2]=ie.value; break; + case KEY_LEFT: keys[3]=ie.value; break; + case KEY_RIGHT: keys[4]=ie.value; break; + case KEY_Y:keys[5]=ie.value; break; + case KEY_B:keys[6]=ie.value; break; + case KEY_A: keys[7]=ie.value; break; + case KEY_X: keys[8]=ie.value; break; + case KEY_START: keys[12]=ie.value; break; + } + } + if (keys[6]) { kcode[port] &= ~Btn_A; } + if (keys[7]) { kcode[port] &= ~Btn_B; } + if (keys[5]) { kcode[port] &= ~Btn_Y; } + if (keys[8]) { kcode[port] &= ~Btn_X; } + if (keys[1]) { kcode[port] &= ~DPad_Up; } + if (keys[2]) { kcode[port] &= ~DPad_Down; } + if (keys[3]) { kcode[port] &= ~DPad_Left; } + if (keys[4]) { kcode[port] &= ~DPad_Right; } + if (keys[12]){ kcode[port] &= ~Btn_Start; } + if (keys[9]){ die("death by escape key"); } + if (keys[10]) rt[port]=255; + if (keys[11]) lt[port]=255; + + return true; + + #elif defined(TARGET_PANDORA) static int keys[13]; while(read(kbfd,&ie,sizeof(ie))==sizeof(ie)) { if (ie.type=EV_KEY) @@ -355,9 +403,14 @@ void UpdateInputState(u32 port) rt[port]=0; lt[port]=0; +#if defined(TARGET_GCW0) + HandleJoystick(port); + HandleKb(port); +return; +#else if (HandleJoystick(port)) return; if (HandleKb(port)) return; - +#endif for(;;) { key = 0; diff --git a/reicast/gcwz/Makefile b/reicast/gcwz/Makefile index 3a93b0de8..49959056d 100644 --- a/reicast/gcwz/Makefile +++ b/reicast/gcwz/Makefile @@ -78,7 +78,7 @@ EXECUTABLE=reicast.elf PACKAGE_FILES=$(EXECUTABLE_STRIPPED) default.gcw0.desktop icon-32.png -all: $(CPPFILES) $(EXECUTABLE) $(EXECUTABLE_STRIPPED) $(EXECUTABLE_TARBZ) $(PACKAGE) +all: $(CPPFILES) $(EXECUTABLE) $(EXECUTABLE_STRIPPED) $(PACKAGE) $(PACKAGE): $(PACKAGE_FILES) mksquashfs $(PACKAGE_FILES) $(PACKAGE) -all-root @@ -90,9 +90,6 @@ $(EXECUTABLE): $(OBJECTS) $(EXECUTABLE_STRIPPED): $(EXECUTABLE) cp $< $@ && $(STRIP) $@ -$(EXECUTABLE_TARBZ): $(EXECUTABLE) - sudo tar -cjvf /var/www/$@ $< - obj/%.build_obj : $(RZDCY_SRC_DIR)/%.cpp mkdir -p $(dir $@) $(CXX) $(EXTRAFLAGS) $(INCS) $(CXXFLAGS) $< -o $@