Fix l/r keys in GUI

This commit is contained in:
theoddone33
2001-05-03 03:27:11 +00:00
parent 0945181ce7
commit c462de6dbf
3 changed files with 183 additions and 188 deletions

View File

@@ -214,8 +214,13 @@ GUIgetcurrentinput:
jne near .notwinport2 jne near .notwinport2
; GUIgetprkeys 0C8h,72 ; GUIgetprkeys 0C8h,72
; GUIgetprkeys 0D0h,80 ; GUIgetprkeys 0D0h,80
%ifdef __LINUX__
GUIgetprkeys 05Ch,75
GUIgetprkeys 05Eh,77
%else
GUIgetprkeys 0CBh,75 GUIgetprkeys 0CBh,75
GUIgetprkeys 0CDh,77 GUIgetprkeys 0CDh,77
%endif
GUIgetprkeys 0C9h,73 GUIgetprkeys 0C9h,73
GUIgetprkeys 0D1h,81 GUIgetprkeys 0D1h,81
GUIgetprkeys 0C7h,71 GUIgetprkeys 0C7h,71
@@ -1770,7 +1775,11 @@ GUILoadKeys:
.nextl .nextl
cmp byte[ebx],':' cmp byte[ebx],':'
je .donel je .donel
%ifdef __LINUX__
cmp byte[ebx],'/'
%else
cmp byte[ebx],'\' cmp byte[ebx],'\'
%endif
je .donel je .donel
inc ebx inc ebx
cmp byte[ebx],0 cmp byte[ebx],0

View File

@@ -618,7 +618,6 @@ NEWSYM Get_File_Date
;int 21h ;int 21h
ret ret
RefreshKeybBuffer: RefreshKeybBuffer:
call JoyRead call JoyRead
mov ebx,[HoldKey] mov ebx,[HoldKey]
@@ -673,15 +672,12 @@ RefreshKeybBuffer:
cmp al,[Keybhead] cmp al,[Keybhead]
je .none je .none
mov al,[Keybtail] mov al,[Keybtail]
mov cl,[KeyConvTable+ebx] ; mov cl,[KeyConvTable+ebx]
cmp byte[pressed+2Ah],0 ; cmp byte[shiftptr],0
jne .shift ; je .noshift
cmp byte[pressed+36h],0 ; mov cl,[KeyConvTableS+ebx]
je .noshift ;.noshift
.shift ; mov [HoldKeyBuf+eax],cl
mov cl,[KeyConvTableS+ebx]
.noshift
mov [HoldKeyBuf+eax],cl
inc al inc al
and al,0Fh and al,0Fh
mov [Keybtail],al mov [Keybtail],al
@@ -712,17 +708,17 @@ NEWSYM Check_Key
; xor eax,eax ; xor eax,eax
; mov byte [keyboardhit],al ; mov byte [keyboardhit],al
; pop eax ; pop eax
pushad ; pushad
; call kbhit ; call kbhit
call RefreshKeybBuffer ; call RefreshKeybBuffer
mov byte[wfkey],0 ; mov byte[wfkey],0
mov al,[Keybhead] ; mov al,[Keybhead]
cmp al,[Keybtail] ; cmp al,[Keybtail]
je .nokeys ; je .nokeys
mov byte[wfkey],0FFh ; mov byte[wfkey],0FFh
.nokeys ;.nokeys
popad ; popad
mov al,[wfkey] ; mov al,[wfkey]
; mov ah,0Bh ; mov ah,0Bh
; int 21h ; int 21h
ret ret
@@ -749,57 +745,57 @@ NEWSYM Get_Key
xor al,al xor al,al
ret ret
pushad ; pushad
.nonewkey ;.nonewkey
call RefreshKeybBuffer ; call RefreshKeybBuffer
xor eax,eax ; xor eax,eax
mov al,[Keybhead] ; mov al,[Keybhead]
cmp al,[Keybtail] ; cmp al,[Keybtail]
je .nonewkey ; je .nonewkey
mov bl,[HoldKeyBuf+eax] ; mov bl,[HoldKeyBuf+eax]
test bl,80h ; test bl,80h
jz .notupperkey ; jz .notupperkey
xor bl,bl ; xor bl,bl
sub byte[HoldKeyBuf+eax],80h ; sub byte[HoldKeyBuf+eax],80h
jmp .yesupperkey ; jmp .yesupperkey
.notupperkey ;.notupperkey
inc al ; inc al
and al,0Fh ; and al,0Fh
mov [Keybhead],al ; mov [Keybhead],al
.yesupperkey ;.yesupperkey
; call getch ;; call getch
mov [wfkey],bl ; mov [wfkey],bl
popad ; popad
mov al,[wfkey] ; mov al,[wfkey]
;mov ah,7 ; ;mov ah,7
;int 21h ; ;int 21h
; return key in al ; ; return key in al
ret ; ret
KeyConvTable ;KeyConvTable
db 255,27 ,'1','2','3','4','5','6' ; 00h ; db 255,27 ,'1','2','3','4','5','6' ; 00h
db '7','8','9','0','-','=',8 ,9 ; db '7','8','9','0','-','=',8 ,9
db 'Q','W','E','R','T','Y','U','I' ; 10h ; db 'Q','W','E','R','T','Y','U','I' ; 10h
db 'O','P','[',']',13 ,255,'A','S' ; db 'O','P','[',']',13 ,255,'A','S'
db 'D','F','G','H','J','K','L',';' ; 20h ; db 'D','F','G','H','J','K','L',';' ; 20h
db 39 ,'`',255,'\','Z','X','C','V' ; db 39 ,'`',255,'\','Z','X','C','V'
db 'B','N','M',',','.','/',255,'*' ; 30h ; db 'B','N','M',',','.','/',255,'*' ; 30h
db 255,32 ,255,255,255,255,255,255 ; db 255,32 ,255,255,255,255,255,255
db 255,255,255,255,255,255,255,255 ; 40h ; db 255,255,255,255,255,255,255,255 ; 40h
db 200,201,202,203,204,205,206,207 ; db 200,201,202,203,204,205,206,207
db 208,209,210,211,255,255,255,255 ; 50h ; db 208,209,210,211,255,255,255,255 ; 50h
KeyConvTableS ;KeyConvTableS
db 255,27 ,'!','@','#','$','%','^' ; 00h ; db 255,27 ,'!','@','#','$','%','^' ; 00h
db '&','*','(',')','_','+',8 ,9 ; db '&','*','(',')','_','+',8 ,9
db 'Q','W','E','R','T','Y','U','I' ; 10h ; db 'Q','W','E','R','T','Y','U','I' ; 10h
db 'O','P','{','}',13 ,255,'A','S' ; db 'O','P','{','}',13 ,255,'A','S'
db 'D','F','G','H','J','K','L',':' ; 20h ; db 'D','F','G','H','J','K','L',':' ; 20h
db '"','~',255,'|','Z','X','C','V' ; db '"','~',255,'|','Z','X','C','V'
db 'B','N','M','<','>','?',255,'*' ; 30h ; db 'B','N','M','<','>','?',255,'*' ; 30h
db 255,32 ,255,255,255,255,255,255 ; db 255,32 ,255,255,255,255,255,255
db 255,255,255,255,255,255,255,255 ; 40h ; db 255,255,255,255,255,255,255,255 ; 40h
db 200,201,202,203,204,205,206,207 ; db 200,201,202,203,204,205,206,207
db 208,209,210,211,255,255,255,255 ; 50h ; db 208,209,210,211,255,255,255,255 ; 50h
; mov dl,[SRAMDrive] ; mov dl,[SRAMDrive]
; mov ebx,SRAMDir ; mov ebx,SRAMDir
@@ -908,20 +904,20 @@ NEWSYM Change_Dir
ret ret
; dl = drive, ebx = dir ; dl = drive, ebx = dir
push ebx ; push ebx
mov ah,0Eh ; mov ah,0Eh
int 21h ; int 21h
mov ah,3Bh ; mov ah,3Bh
mov edx,gotoroot ; mov edx,gotoroot
int 21h ; int 21h
pop ebx ; pop ebx
mov edx,ebx ; mov edx,ebx
cmp byte[edx],0 ; cmp byte[edx],0
je .nodir ; je .nodir
mov ah,3Bh ; mov ah,3Bh
int 21h ; int 21h
.nodir ;.nodir
ret ; ret
; mov ebx,LoadDir ; mov ebx,LoadDir
; mov edx,LoadDrive ; mov edx,LoadDrive
@@ -952,16 +948,16 @@ NEWSYM Get_Dir
; mov [edx],al ; mov [edx],al
ret ret
push edx ; push edx
mov ah,47h ; mov ah,47h
mov dl,0 ; mov dl,0
mov esi,ebx ; mov esi,ebx
int 21h ; int 21h
mov ah,19h ; mov ah,19h
int 21h ; int 21h
pop edx ; pop edx
mov [edx],al ; mov [edx],al
ret ; ret
NEWSYM Get_First_Entry NEWSYM Get_First_Entry
; cx = attributes, edx = pointer to wildcard ; cx = attributes, edx = pointer to wildcard
@@ -982,10 +978,10 @@ NEWSYM Get_First_Entry
popad popad
stc stc
ret ret
mov ah,4Eh ; mov ah,4Eh
mov al,0 ; mov al,0
int 21h ; int 21h
ret ; ret
NEWSYM Get_Next_Entry NEWSYM Get_Next_Entry
mov dword[DTALocPos],DTALoc mov dword[DTALocPos],DTALoc
@@ -1000,9 +996,9 @@ NEWSYM Get_Next_Entry
popad popad
stc stc
ret ret
mov ah,04Fh ; mov ah,04Fh
int 21h ; int 21h
ret ; ret
NEWSYM Set_DTA_Address NEWSYM Set_DTA_Address
; Only needed for dos stuff ; Only needed for dos stuff
@@ -1072,7 +1068,7 @@ NEWSYM InitPreGame ; Executes before starting/continuing a game
; set up interrupt handler ; set up interrupt handler
; get old handler pmode mode address ; get old handler pmode mode address
; Process stuff such as sound init, interrupt initialization ; Process stuff such as sound init, interrupt initialization
ret ; ret
NEWSYM SetupPreGame ; Executes after pre-game init, can execute multiple NEWSYM SetupPreGame ; Executes after pre-game init, can execute multiple
; times after a single InitPreGame ; times after a single InitPreGame
@@ -1100,88 +1096,88 @@ NEWSYM changepal ; 8-bit palette set (changes only)
NEWSYM displayfpspal NEWSYM displayfpspal
ret ret
mov al,128 ; mov al,128
mov dx,03C8h ; mov dx,03C8h
out dx,al ; out dx,al
inc dx ; inc dx
mov al,63 ; mov al,63
out dx,al ; out dx,al
out dx,al ; out dx,al
out dx,al ; out dx,al
mov al,128+64 ; mov al,128+64
mov dx,03C8h ; mov dx,03C8h
out dx,al ; out dx,al
inc dx ; inc dx
mov al,0 ; mov al,0
out dx,al ; out dx,al
out dx,al ; out dx,al
out dx,al ; out dx,al
ret ; ret
NEWSYM superscopepal NEWSYM superscopepal
ret ret
mov al,128+16 ; mov al,128+16
mov dx,03C8h ; mov dx,03C8h
out dx,al ; out dx,al
inc dx ; inc dx
mov al,63 ; mov al,63
out dx,al ; out dx,al
xor al,al ; xor al,al
out dx,al ; out dx,al
out dx,al ; out dx,al
ret ; ret
NEWSYM saveselectpal NEWSYM saveselectpal
ret ret
; set palette of colors 128,144, and 160 to white, blue, and red ; set palette of colors 128,144, and 160 to white, blue, and red
mov al,128 ; mov al,128
mov dx,03C8h ; mov dx,03C8h
out dx,al ; out dx,al
inc dx ; inc dx
mov al,63 ; mov al,63
out dx,al ; out dx,al
out dx,al ; out dx,al
out dx,al ; out dx,al
mov al,144 ; mov al,144
mov dx,03C8h ; mov dx,03C8h
out dx,al ; out dx,al
inc dx ; inc dx
xor al,al ; xor al,al
out dx,al ; out dx,al
out dx,al ; out dx,al
mov al,50 ; mov al,50
out dx,al ; out dx,al
mov al,160 ; mov al,160
mov dx,03C8h ; mov dx,03C8h
out dx,al ; out dx,al
inc dx ; inc dx
mov al,45 ; mov al,45
out dx,al ; out dx,al
xor al,al ; xor al,al
out dx,al ; out dx,al
out dx,al ; out dx,al
mov al,176 ; mov al,176
mov dx,03C8h ; mov dx,03C8h
out dx,al ; out dx,al
inc dx ; inc dx
mov al,47 ; mov al,47
out dx,al ; out dx,al
xor al,al ; xor al,al
out dx,al ; out dx,al
out dx,al ; out dx,al
mov al,208 ; mov al,208
mov dx,03C8h ; mov dx,03C8h
out dx,al ; out dx,al
inc dx ; inc dx
mov al,50 ; mov al,50
out dx,al ; out dx,al
mov al,25 ; mov al,25
out dx,al ; out dx,al
xor al,al ; xor al,al
out dx,al ; out dx,al
ret ; ret
; ** init video mode functions ** ; ** init video mode functions **
NEWSYM firstvideo, dd 1 NEWSYM firstvideo, dd 1
@@ -1504,9 +1500,6 @@ NEWSYM WMouseMoveX, dd 0
NEWSYM WMouseMoveY, dd 0 NEWSYM WMouseMoveY, dd 0
NEWSYM WMouseButton, dd 0 NEWSYM WMouseButton, dd 0
NEWSYM Get_MouseData ; Returns both pressed and coordinates NEWSYM Get_MouseData ; Returns both pressed and coordinates
; bx : bit 0 = left button, bit 1 = right button ; bx : bit 0 = left button, bit 1 = right button
; cx = Mouse X Position, dx = Mouse Y Position ; cx = Mouse X Position, dx = Mouse Y Position
@@ -1758,7 +1751,6 @@ InitializeGfxStuff:
call Init_2xSaIMMXW call Init_2xSaIMMXW
pop eax pop eax
ret ret

View File

@@ -298,12 +298,6 @@ void ProcessKeyBuf(int scancode)
if ((scancode>=SDLK_KP0) && (scancode<=SDLK_KP9)) { if ((scancode>=SDLK_KP0) && (scancode<=SDLK_KP9)) {
accept=true; vkeyval=scancode-SDLK_KP0+'0'; accept=true; vkeyval=scancode-SDLK_KP0+'0';
} }
if (scancode==SDLK_KP2) {
accept=true; vkeyval=256+80;
}
if (scancode==SDLK_KP8) {
accept=true; vkeyval=256+72;
}
if (!shiftptr){ if (!shiftptr){
switch (scancode) { switch (scancode) {
case SDLK_MINUS: vkeyval='-'; accept=true; break; case SDLK_MINUS: vkeyval='-'; accept=true; break;
@@ -339,9 +333,9 @@ void ProcessKeyBuf(int scancode)
case SDLK_PAGEUP: vkeyval=256+73; accept=true; break; case SDLK_PAGEUP: vkeyval=256+73; accept=true; break;
case SDLK_UP: vkeyval=256+72; accept=true; break; case SDLK_UP: vkeyval=256+72; accept=true; break;
case SDLK_HOME: vkeyval=256+71; accept=true; break; case SDLK_HOME: vkeyval=256+71; accept=true; break;
case SDLK_RIGHT: vkeyval=SDLK_KP6-SDLK_KP0+'0';; accept=true; break; case SDLK_RIGHT: vkeyval=256+77; accept=true; break;
//case 12: vkeyval=256+76; accept=true; break; //case 12: vkeyval=256+76; accept=true; break;
case SDLK_LEFT: vkeyval=SDLK_KP4-SDLK_KP0+'0'; accept=true; break; case SDLK_LEFT: vkeyval=256+75; accept=true; break;
case SDLK_PAGEDOWN: vkeyval=256+81; accept=true; break; case SDLK_PAGEDOWN: vkeyval=256+81; accept=true; break;
case SDLK_DOWN: vkeyval=256+80; accept=true; break; case SDLK_DOWN: vkeyval=256+80; accept=true; break;
case SDLK_END: vkeyval=256+79; accept=true; break; case SDLK_END: vkeyval=256+79; accept=true; break;
@@ -351,7 +345,7 @@ void ProcessKeyBuf(int scancode)
case SDLK_KP_DIVIDE: vkeyval='/'; accept=true; break; case SDLK_KP_DIVIDE: vkeyval='/'; accept=true; break;
case SDLK_KP_PERIOD: vkeyval='.'; accept=true; break; case SDLK_KP_PERIOD: vkeyval='.'; accept=true; break;
} }
// printf("vkeyval : %i\n", vkeyval);
if (accept){ if (accept){
KeyBuffer[CurKeyPos]=vkeyval; KeyBuffer[CurKeyPos]=vkeyval;
CurKeyPos++; CurKeyPos++;