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
; GUIgetprkeys 0C8h,72
; GUIgetprkeys 0D0h,80
%ifdef __LINUX__
GUIgetprkeys 05Ch,75
GUIgetprkeys 05Eh,77
%else
GUIgetprkeys 0CBh,75
GUIgetprkeys 0CDh,77
%endif
GUIgetprkeys 0C9h,73
GUIgetprkeys 0D1h,81
GUIgetprkeys 0C7h,71
@@ -1770,7 +1775,11 @@ GUILoadKeys:
.nextl
cmp byte[ebx],':'
je .donel
%ifdef __LINUX__
cmp byte[ebx],'/'
%else
cmp byte[ebx],'\'
%endif
je .donel
inc ebx
cmp byte[ebx],0

View File

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

View File

@@ -298,12 +298,6 @@ void ProcessKeyBuf(int scancode)
if ((scancode>=SDLK_KP0) && (scancode<=SDLK_KP9)) {
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){
switch (scancode) {
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_UP: vkeyval=256+72; 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 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_DOWN: vkeyval=256+80; 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_PERIOD: vkeyval='.'; accept=true; break;
}
// printf("vkeyval : %i\n", vkeyval);
if (accept){
KeyBuffer[CurKeyPos]=vkeyval;
CurKeyPos++;