diff --git a/Makefile b/Makefile index c068f71b..3c14dd1d 100644 --- a/Makefile +++ b/Makefile @@ -15,7 +15,7 @@ endif .PHONY : all debug release clean depend zip CC = gcc -OBJ = main.o init.o graph.o sdlscreen.o divers.o special.o boutons.o palette.o aide.o operatio.o pages.o loadsave.o readline.o moteur.o files.o op_c.o linux.o op_asm.o readini.o saveini.o shade.o +OBJ = main.o init.o graph.o sdlscreen.o divers.o special.o boutons.o palette.o aide.o operatio.o pages.o loadsave.o readline.o moteur.o files.o op_c.o linux.o op_asm.o readini.o saveini.o shade.o clavier.o SCREEN = -D WINDOWED OBJDIR = obj/ diff --git a/Makefile.dep b/Makefile.dep index 295dacdf..7f006350 100644 --- a/Makefile.dep +++ b/Makefile.dep @@ -2,7 +2,7 @@ main.o: main.c const.h struct.h global.h loadsave.h graph.h divers.h \ init.h boutons.h moteur.h pages.h files.h sdlscreen.h erreurs.h \ readini.h saveini.h linux.h init.o: init.c const.h struct.h global.h loadsave.h modesvdo.h graph.h \ - boutons.h palette.h aide.h operatio.h divers.h erreurs.h + boutons.h palette.h aide.h operatio.h divers.h erreurs.h clavier.h graph.o: graph.c sdlscreen.h struct.h const.h graph.h divers.h moteur.h \ boutons.h pages.h global.h loadsave.h erreurs.h sdlscreen.o: sdlscreen.c global.h struct.h const.h loadsave.h sdlscreen.h \ @@ -26,8 +26,8 @@ loadsave.o: loadsave.c const.h struct.h global.h loadsave.h graph.h \ divers.h pages.h op_c.h boutons.h erreurs.h linux.h readline.o: readline.c const.h struct.h global.h loadsave.h graph.h \ divers.h erreurs.h linux.h -moteur.o: moteur.c boutons.h operatio.h shade.h erreurs.h const.h \ - struct.h global.h loadsave.h graph.h divers.h special.h linux.h +moteur.o: moteur.c const.h struct.h global.h loadsave.h graph.h divers.h \ + special.h boutons.h operatio.h shade.h erreurs.h linux.h files.o: files.c const.h struct.h global.h loadsave.h graph.h divers.h \ erreurs.h linux.h op_c.o: op_c.c op_c.h struct.h const.h op_asm.h erreurs.h @@ -37,3 +37,4 @@ readini.o: readini.c const.h global.h struct.h loadsave.h saveini.o: saveini.c const.h global.h struct.h loadsave.h readini.h shade.o: shade.c global.h struct.h const.h loadsave.h graph.h moteur.h \ divers.h readline.h +clavier.o: clavier.c global.h struct.h const.h loadsave.h diff --git a/aide.c b/aide.c index c2ccb35b..c002d4c3 100644 --- a/aide.c +++ b/aide.c @@ -129,13 +129,13 @@ void Bouton_Aide(void) Fenetre_Pos_Y+(Menu_Facteur_Y*18), Menu_Facteur_X*272,Menu_Facteur_Y*130,CM_Noir); - Fenetre_Definir_bouton_normal(266,153,35,14,"Exit",0,1,0x0001); // 1 + Fenetre_Definir_bouton_normal(266,153,35,14,"Exit",0,1,SDLK_ESCAPE); // 1 Fenetre_Definir_bouton_scroller(290,18,130,Nb_lignes, 16,Position_d_aide_en_cours); // 2 - Fenetre_Definir_bouton_normal( 9,154, 59,14,"Credits" ,1,1,0x002E); // 3 - Fenetre_Definir_bouton_normal( 71,154, 75,14,"Register?",1,1,0x0013); // 4 - Fenetre_Definir_bouton_normal(149,154, 75,14,"Greetings",1,1,0x0022); // 5 + Fenetre_Definir_bouton_normal( 9,154, 59,14,"Credits" ,1,1,SDLK_c); // 3 + Fenetre_Definir_bouton_normal( 71,154, 75,14,"Register?",1,1,SDLK_r); // 4 + Fenetre_Definir_bouton_normal(149,154, 75,14,"Greetings",1,1,SDLK_g); // 5 Afficher_aide(); @@ -174,42 +174,42 @@ void Bouton_Aide(void) // Gestion des touches de déplacement dans la liste switch (Touche) { - case 0x0048 : // Haut + case SDLK_UP : // Haut if (Position_d_aide_en_cours>0) Position_d_aide_en_cours--; Scroller_aide(); break; - case 0x0050 : // Bas + case SDLK_DOWN : // Bas if (Position_d_aide_en_cours15) Position_d_aide_en_cours-=15; else Position_d_aide_en_cours=0; Scroller_aide(); break; - case 0x0051 : // PageDown + case SDLK_PAGEDOWN : // PageDown if (Position_d_aide_en_cours>1,(Hauteur_ecran-(172*Menu_Facteur_Y))>>1,260*Menu_Facteur_X,172*Menu_Facteur_Y); - Fenetre_Definir_bouton_normal(90,151,80,14,"OK",0,1,0x001C); // 1 + Fenetre_Definir_bouton_normal(90,151,80,14,"OK",0,1,SDLK_RETURN); // 1 Afficher_curseur(); @@ -149,7 +142,7 @@ void Bouton_Message_initial(void) { Bouton_clicke=Fenetre_Bouton_clicke(); } - while ((Bouton_clicke!=1) && (Touche!=0x0001) && (Touche!=0x0018)); + while ((Bouton_clicke!=1) && (Touche!=SDLK_ESCAPE) && (Touche!=SDLK_o)); Fermer_fenetre(); Afficher_curseur(); @@ -388,9 +381,9 @@ byte Bouton_Quitter_Routine_locale(void) // On commence par afficher la fenêtre de QUIT Ouvrir_fenetre(160,84,"Quit ?"); - Fenetre_Definir_bouton_normal(20,20,120,14,"Stay",0,1,0x0001); // 1 - Fenetre_Definir_bouton_normal(20,40,120,14,"Save & quit",1,1,0x001F); // 2 - Fenetre_Definir_bouton_normal(20,60,120,14,"Discard (Quit)",1,1,0x0020);// 3 + Fenetre_Definir_bouton_normal(20,20,120,14,"Stay",0,1,SDLK_ESCAPE); // 1 + Fenetre_Definir_bouton_normal(20,40,120,14,"Save & quit",1,1,SDLK_s); // 2 + Fenetre_Definir_bouton_normal(20,60,120,14,"Discard (Quit)",1,1,SDLK_d);// 3 Afficher_curseur(); do @@ -509,17 +502,17 @@ void Menu_Tag_couleurs(char * En_tete, byte * Table, byte * Mode, byte Cancel) Ouvrir_fenetre(176,150,En_tete); Fenetre_Definir_bouton_palette(6,38); // 1 - Fenetre_Definir_bouton_normal( 7, 19,78,14,"Clear" ,1,1,0x002E); // 2 - Fenetre_Definir_bouton_normal(91, 19,78,14,"Invert",1,1,0x0017); // 3 + Fenetre_Definir_bouton_normal( 7, 19,78,14,"Clear" ,1,1,SDLK_c); // 2 + Fenetre_Definir_bouton_normal(91, 19,78,14,"Invert",1,1,SDLK_i); // 3 if (Cancel) { - Fenetre_Definir_bouton_normal(91,129,78,14,"OK" ,0,1,0x001C); // 4 - Fenetre_Definir_bouton_normal( 7,129,78,14,"Cancel",0,1,0x0001); // 5 + Fenetre_Definir_bouton_normal(91,129,78,14,"OK" ,0,1,SDLK_RETURN); // 4 + Fenetre_Definir_bouton_normal( 7,129,78,14,"Cancel",0,1,SDLK_ESCAPE); // 5 // On enregistre la table dans un backup au cas où on ferait Cancel memcpy(Backup_table,Table,256); } else - Fenetre_Definir_bouton_normal(49,129,78,14,"OK" ,0,1,0x001C); // 4 + Fenetre_Definir_bouton_normal(49,129,78,14,"OK" ,0,1,SDLK_RETURN); // 4 // On affiche l'état actuel de la table for (Indice=0; Indice<=255; Indice++) @@ -567,8 +560,8 @@ void Menu_Tag_couleurs(char * En_tete, byte * Table, byte * Mode, byte Cancel) if (!Mouse_K) switch (Touche) { - case 0x0029 : // Récupération d'une couleur derrière le menu - case 0x0033 : + case SDLK_BACKQUOTE : // Récupération d'une couleur derrière le menu + case SDLK_COMMA : Recuperer_couleur_derriere_fenetre(&Couleur,&Click); if (Click) { @@ -748,44 +741,44 @@ void Bouton_Settings(void) Print_dans_fenetre(292,123,"Y" ,CM_Fonce,CM_Clair); // Boutons de fontes - Fenetre_Definir_bouton_normal(17,28,59,14,"Classic",0,1,0xFFFF); // 1 - Fenetre_Definir_bouton_normal(91,28,59,14,"Fun" ,0,1,0xFFFF); // 2 + Fenetre_Definir_bouton_normal(17,28,59,14,"Classic",0,1,SDLK_LAST); // 1 + Fenetre_Definir_bouton_normal(91,28,59,14,"Fun" ,0,1,SDLK_LAST); // 2 // Bouton Show/Hide dans le fileselect - Fenetre_Definir_bouton_normal(167, 28,131,14,"Hidden files: ",0,1,0xFFFF); // 3 - Fenetre_Definir_bouton_normal(167, 43,131,14,"Hidden dir. : ",0,1,0xFFFF); // 4 - Fenetre_Definir_bouton_normal(167, 58,131,14,"System dir. : ",0,1,0xFFFF); // 5 + Fenetre_Definir_bouton_normal(167, 28,131,14,"Hidden files: ",0,1,SDLK_LAST); // 3 + Fenetre_Definir_bouton_normal(167, 43,131,14,"Hidden dir. : ",0,1,SDLK_LAST); // 4 + Fenetre_Definir_bouton_normal(167, 58,131,14,"System dir. : ",0,1,SDLK_LAST); // 5 // Bouton Show/Hide Picture limits - Fenetre_Definir_bouton_normal( 9, 81,107,14,"Limits : ",0,1,0xFFFF); // 6 + Fenetre_Definir_bouton_normal( 9, 81,107,14,"Limits : ",0,1,SDLK_LAST); // 6 // Bouton Show/Hide Picture limits - Fenetre_Definir_bouton_normal( 9, 96,107,14,"Clear pal: ",0,1,0xFFFF); // 7 + Fenetre_Definir_bouton_normal( 9, 96,107,14,"Clear pal: ",0,1,SDLK_LAST); // 7 // Bouton Show/Hide Picture limits - Fenetre_Definir_bouton_normal( 9,111,107,14,"Max prev.: ",0,1,0xFFFF); // 8 + Fenetre_Definir_bouton_normal( 9,111,107,14,"Max prev.: ",0,1,SDLK_LAST); // 8 // Bouton Effectuer des backups à chaque sauvegarde - Fenetre_Definir_bouton_normal( 9,126,107,14,"Backup : ",0,1,0xFFFF); // 9 + Fenetre_Definir_bouton_normal( 9,126,107,14,"Backup : ",0,1,SDLK_LAST); // 9 // Bouton Choix du curseur - Fenetre_Definir_bouton_normal( 9,141,107,14,"Cursor: ",0,1,0xFFFF); // 10 + Fenetre_Definir_bouton_normal( 9,141,107,14,"Cursor: ",0,1,SDLK_LAST); // 10 // Bouton Safety colors - Fenetre_Definir_bouton_normal(117, 81,131,14,"Safe. colors: ",0,1,0xFFFF); // 11 + Fenetre_Definir_bouton_normal(117, 81,131,14,"Safe. colors: ",0,1,SDLK_LAST); // 11 // Bouton Adjust Brush Pick - Fenetre_Definir_bouton_normal(117, 96,131,14,"AdjBrushPick: ",0,1,0xFFFF); // 12 + Fenetre_Definir_bouton_normal(117, 96,131,14,"AdjBrushPick: ",0,1,SDLK_LAST); // 12 // Bouton Separate colors - Fenetre_Definir_bouton_normal(117,111,131,14,"Separate col: ",0,1,0xFFFF); // 13 + Fenetre_Definir_bouton_normal(117,111,131,14,"Separate col: ",0,1,SDLK_LAST); // 13 // Bouton Passer dans la résolution appropriée après un chargement - Fenetre_Definir_bouton_normal(117,126,131,14,"Auto-set res: ",0,1,0xFFFF); // 14 + Fenetre_Definir_bouton_normal(117,126,131,14,"Auto-set res: ",0,1,SDLK_LAST); // 14 // Bouton Adapter la palette après un chargement (<=> Shift+BkSpc) - Fenetre_Definir_bouton_normal(117,141,131,14,"Coords: ",0,1,0xFFFF); // 15 + Fenetre_Definir_bouton_normal(117,141,131,14,"Coords: ",0,1,SDLK_LAST); // 15 // Bouton Reload - Fenetre_Definir_bouton_normal( 6,163, 51,14,"Reload" ,0,1,0xFFFF); // 16 + Fenetre_Definir_bouton_normal( 6,163, 51,14,"Reload" ,0,1,SDLK_LAST); // 16 // Bouton Auto-save - Fenetre_Definir_bouton_normal( 73,163,107,14,"Auto-save: ",0,1,0xFFFF); // 17 + Fenetre_Definir_bouton_normal( 73,163,107,14,"Auto-save: ",0,1,SDLK_LAST); // 17 // Bouton Save - Fenetre_Definir_bouton_normal(183,163, 51,14,"Save" ,0,1,0xFFFF); // 18 + Fenetre_Definir_bouton_normal(183,163, 51,14,"Save" ,0,1,SDLK_LAST); // 18 // Bouton Close - Fenetre_Definir_bouton_normal(250,163, 51,14,"Close" ,0,1,0x0001); // 19 + Fenetre_Definir_bouton_normal(250,163, 51,14,"Close" ,0,1,SDLK_ESCAPE); // 19 // Jauges de sensibilité de la souris (X puis Y) Fenetre_Definir_bouton_scroller(265,99,56,255,1,0); // 20 @@ -900,7 +893,7 @@ void Bouton_Settings(void) if ((Bouton_clicke>=1) && (Bouton_clicke<=17)) Settings_Afficher_config(&Config_choisie); } - while ( (Bouton_clicke!=19) && (Touche!=0x001C) ); + while ( (Bouton_clicke!=19) && (Touche!=SDLK_RETURN) ); Config=Config_choisie; @@ -1108,12 +1101,12 @@ void Bouton_Copy_page(void) Ouvrir_fenetre(168,137,"Copy to spare page"); - Fenetre_Definir_bouton_normal(10, 20,148,14,"Pixels + palette" , 0,1,0x001C); // 1 - Fenetre_Definir_bouton_normal(10, 37,148,14,"Pixels only" , 3,1,0x002D); // 2 - Fenetre_Definir_bouton_normal(10, 54,148,14,"Palette only" , 1,1,0x0019); // 3 - Fenetre_Definir_bouton_normal(10, 71,148,14,"Some colors only" , 6,1,0x002E); // 4 - Fenetre_Definir_bouton_normal(10, 88,148,14,"Palette and remap",13,1,0x0013); // 5 - Fenetre_Definir_bouton_normal(44,114, 80,14,"Cancel" , 0,1,0x0001); // 6 + Fenetre_Definir_bouton_normal(10, 20,148,14,"Pixels + palette" , 0,1,SDLK_RETURN); // 1 + Fenetre_Definir_bouton_normal(10, 37,148,14,"Pixels only" , 3,1,SDLK_x); // 2 + Fenetre_Definir_bouton_normal(10, 54,148,14,"Palette only" , 1,1,SDLK_p); // 3 + Fenetre_Definir_bouton_normal(10, 71,148,14,"Some colors only" , 6,1,SDLK_c); // 4 + Fenetre_Definir_bouton_normal(10, 88,148,14,"Palette and remap",13,1,SDLK_r); // 5 + Fenetre_Definir_bouton_normal(44,114, 80,14,"Cancel" , 0,1,SDLK_ESCAPE); // 6 Afficher_curseur(); @@ -1317,8 +1310,8 @@ void Bouton_Resol(void) Print_dans_fenetre(102,170,"Imperfect" ,CM_Fonce,CM_Clair); Print_dans_fenetre(196,170,"Unsupported" ,CM_Fonce,CM_Clair); - Fenetre_Definir_bouton_normal(223, 18,67,14,"OK" ,0,1,0x001C); // 1 - Fenetre_Definir_bouton_normal(223, 35,67,14,"Cancel" ,0,1,0x0001); // 2 + Fenetre_Definir_bouton_normal(223, 18,67,14,"OK" ,0,1,SDLK_RETURN); // 1 + Fenetre_Definir_bouton_normal(223, 35,67,14,"Cancel" ,0,1,SDLK_ESCAPE); // 2 Fenetre_Definir_bouton_saisie( 60, 35,4); // 3 Bouton_saisie_Width=Fenetre_Liste_boutons_special; @@ -1352,7 +1345,7 @@ void Bouton_Resol(void) // Les 12 petits boutons indiquant l'état des modes for (Temp=0; Temp<12; Temp++) - Fenetre_Definir_bouton_normal(17,70+(Temp<<3),13,7,"",0,1,0xFFFF);// 7..18 + Fenetre_Definir_bouton_normal(17,70+(Temp<<3),13,7,"",0,1,SDLK_LAST);// 7..18 Fenetre_Dessiner_bouton_normal( 16,170,13,7,"",0,0); Cocher_bouton_mode( 18,172,0); @@ -1469,7 +1462,7 @@ void Bouton_Resol(void) // Gestion des touches de déplacement dans la liste switch (Touche) { - case 0x0048 : // Haut + case SDLK_UP : // Haut if (Position_curseur>0) Position_curseur--; else @@ -1477,7 +1470,7 @@ void Bouton_Resol(void) Debut_liste--; Scroller_la_liste_des_modes(Debut_liste,Position_curseur,&Mode_choisi); break; - case 0x0050 : // Bas + case SDLK_DOWN : // Bas if (Position_curseur<11) Position_curseur++; else @@ -1485,7 +1478,7 @@ void Bouton_Resol(void) Debut_liste++; Scroller_la_liste_des_modes(Debut_liste,Position_curseur,&Mode_choisi); break; - case 0x0049 : // PageUp + case SDLK_PAGEUP : // PageUp if (Position_curseur>0) Position_curseur=0; else @@ -1497,7 +1490,7 @@ void Bouton_Resol(void) } Scroller_la_liste_des_modes(Debut_liste,Position_curseur,&Mode_choisi); break; - case 0x0051 : // PageDown + case SDLK_PAGEDOWN : // PageDown if (Position_curseur<11) Position_curseur=11; else @@ -1509,12 +1502,12 @@ void Bouton_Resol(void) } Scroller_la_liste_des_modes(Debut_liste,Position_curseur,&Mode_choisi); break; - case 0x0047 : // Home + case SDLK_HOME : // Home Debut_liste=0; Position_curseur=0; Scroller_la_liste_des_modes(Debut_liste,Position_curseur,&Mode_choisi); break; - case 0x004F : // End + case SDLK_END : // End Debut_liste=NB_MODES_VIDEO-12; Position_curseur=11; Scroller_la_liste_des_modes(Debut_liste,Position_curseur,&Mode_choisi); @@ -1778,13 +1771,13 @@ void Bouton_Degrades(void) Scroller_de_melange=Fenetre_Liste_boutons_scroller; // Définition du bouton de sens Fenetre_Definir_bouton_normal(8,22,15,14, - (Degrade_Tableau[Degrade_Courant].Inverse)?"\033":"\032",0,1,0x000F); // 4 + (Degrade_Tableau[Degrade_Courant].Inverse)?"\033":"\032",0,1,SDLK_TAB); // 4 // Définition du bouton de technique - Fenetre_Definir_bouton_normal(8,92,15,14,"",0,1,0x010F); // 5 + Fenetre_Definir_bouton_normal(8,92,15,14,"",0,1,SDLK_TAB|0x1000); // 5 Degrade_Dessiner_bouton_de_technique(8,92,Degrade_Tableau[Degrade_Courant].Technique); - Fenetre_Definir_bouton_normal(178,112,51,14,"OK",0,1,0x001C); // 6 - Fenetre_Definir_bouton_normal(123,112,51,14,"Cancel",0,1,0x0001); // 7 + Fenetre_Definir_bouton_normal(178,112,51,14,"OK",0,1,SDLK_RETURN); // 6 + Fenetre_Definir_bouton_normal(123,112,51,14,"Cancel",0,1,SDLK_ESCAPE); // 7 Print_dans_fenetre(5,60,"MIX",CM_Fonce,CM_Clair); @@ -1916,8 +1909,8 @@ void Bouton_Degrades(void) if (!Mouse_K) switch (Touche) { - case 0x0029 : // Récupération d'une couleur derrière le menu - case 0x0033 : + case SDLK_BACKQUOTE : // Récupération d'une couleur derrière le menu + case SDLK_COMMA : Recuperer_couleur_derriere_fenetre(&Couleur,&Click); if (Click) { @@ -2033,13 +2026,13 @@ void Bouton_Menu_pinceaux(void) Fenetre_Afficher_cadre(8,21,294,107); - Fenetre_Definir_bouton_normal(122,133,67,14,"Cancel",0,1,0x0001); // 1 + Fenetre_Definir_bouton_normal(122,133,67,14,"Cancel",0,1,SDLK_ESCAPE); // 1 for (Indice=0; IndicePos_X+2)), Fenetre_Pos_Y+(Menu_Facteur_Y*(Bouton_Octet_insere->Pos_Y+2)), Menu_Facteur_X*7, Menu_Facteur_Y*7, (Octet_insere)?CM_Blanc:CM_Noir); - Fenetre_Definir_bouton_normal(109, 69,11,11,"\030",0,1,0x0048); // 13 - Fenetre_Definir_bouton_normal(109, 93,11,11,"\031",0,1,0x0050); // 14 - Fenetre_Definir_bouton_normal( 97, 81,11,11,"\033",0,1,0x004B); // 15 - Fenetre_Definir_bouton_normal(121, 81,11,11,"\032",0,1,0x004D); // 16 + Fenetre_Definir_bouton_normal(109, 69,11,11,"\030",0,1,SDLK_UP); // 13 + Fenetre_Definir_bouton_normal(109, 93,11,11,"\031",0,1,SDLK_DOWN); // 14 + Fenetre_Definir_bouton_normal( 97, 81,11,11,"\033",0,1,SDLK_LEFT); // 15 + Fenetre_Definir_bouton_normal(121, 81,11,11,"\032",0,1,SDLK_RIGHT); // 16 - for (Indice=0; Indice<10; Indice++) - Fenetre_Definir_bouton_normal((Indice*23)+8,20,20,20,"",0,1,0x003B+Indice); // 17 -> 26 - Fenetre_Definir_bouton_normal(238,20,20,20,"",0,1,0x0085); // 27 - Fenetre_Definir_bouton_normal(261,20,20,20,"",0,1,0x0086); // 28 + for (Indice=0; Indice<12; Indice++) + Fenetre_Definir_bouton_normal((Indice*23)+8,20,20,20,"",0,1,SDLK_F1+Indice); // 17 -> 28 Dessiner_trames_predefinies(); Orig_X=Fenetre_Pos_X+(Menu_Facteur_X*Fenetre_Liste_boutons_special->Pos_X); @@ -5264,19 +5255,19 @@ void Bouton_Effets(void) Ouvrir_fenetre(270,152,"Drawing modes (effects)"); - Fenetre_Definir_bouton_normal( 7, 19, 16,16,"",0,1,0x003B); // 1 - Fenetre_Definir_bouton_normal( 7, 38, 16,16,"",0,1,0x003C); // 2 - Fenetre_Definir_bouton_normal( 7, 57, 16,16,"",0,1,0x003D); // 3 - Fenetre_Definir_bouton_normal( 7, 76, 16,16,"",0,1,0x003E); // 4 - Fenetre_Definir_bouton_normal( 7, 95, 16,16,"",0,1,0x003F); // 5 - Fenetre_Definir_bouton_normal(153, 19, 16,16,"",0,1,0x0040); // 6 - Fenetre_Definir_bouton_normal(153, 38, 16,16,"",0,1,0x0041); // 7 - Fenetre_Definir_bouton_normal(153, 57, 16,16,"",0,1,0x0042); // 8 - Fenetre_Definir_bouton_normal(153, 76, 16,16,"",0,1,0x0043); // 9 - Fenetre_Definir_bouton_normal(153, 95, 16,16,"",0,1,0x0044); // 10 - Fenetre_Definir_bouton_normal(195,131, 68,14,"Close",0,1,0x001C); // 11 - Fenetre_Definir_bouton_normal( 7,131, 68,14,"All off",0,1,0x0053); // 12 - Fenetre_Definir_bouton_normal( 83,131,104,14,"Feedback: ",1,1,0x0021); // 13 + Fenetre_Definir_bouton_normal( 7, 19, 16,16,"",0,1,SDLK_F1); // 1 + Fenetre_Definir_bouton_normal( 7, 38, 16,16,"",0,1,SDLK_F2); // 2 + Fenetre_Definir_bouton_normal( 7, 57, 16,16,"",0,1,SDLK_F3); // 3 + Fenetre_Definir_bouton_normal( 7, 76, 16,16,"",0,1,SDLK_F4); // 4 + Fenetre_Definir_bouton_normal( 7, 95, 16,16,"",0,1,SDLK_F5); // 5 + Fenetre_Definir_bouton_normal(153, 19, 16,16,"",0,1,SDLK_F6); // 6 + Fenetre_Definir_bouton_normal(153, 38, 16,16,"",0,1,SDLK_F7); // 7 + Fenetre_Definir_bouton_normal(153, 57, 16,16,"",0,1,SDLK_F8); // 8 + Fenetre_Definir_bouton_normal(153, 76, 16,16,"",0,1,SDLK_F9); // 9 + Fenetre_Definir_bouton_normal(153, 95, 16,16,"",0,1,SDLK_F10); // 10 + Fenetre_Definir_bouton_normal(195,131, 68,14,"Close",0,1,SDLK_RETURN); // 11 + Fenetre_Definir_bouton_normal( 7,131, 68,14,"All off",0,1,SDLK_DELETE); // 12 + Fenetre_Definir_bouton_normal( 83,131,104,14,"Feedback: ",1,1,SDLK_f); // 13 Afficher_etat_feedback(); Afficher_sprite_effet(0, 8,20); Afficher_sprite_effet(0, 8,39); @@ -5298,7 +5289,7 @@ void Bouton_Effets(void) { Bouton_clicke=Fenetre_Bouton_clicke(); - if (Touche==0x0001) + if (Touche==SDLK_ESCAPE) Bouton_clicke=11; switch (Bouton_clicke) diff --git a/clavier.c b/clavier.c new file mode 100644 index 00000000..a6ec4108 --- /dev/null +++ b/clavier.c @@ -0,0 +1,286 @@ +#include "global.h" + +// Table de correspondance des scancode de clavier IBM PC AT vers +// les symboles de touches SDL (sym). +// La correspondance est bonne si le clavier est QWERTY US, ou si +// l'utilisateur est sous Windows. +// Dans l'ordre des colonnes: Normal, +Shift, +Control, +Alt +const word Scancode_to_Sym[256][4] = +{ +/* 00 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 01 Esc */ { SDLK_ESCAPE ,SDLK_ESCAPE ,SDLK_ESCAPE ,SDLK_ESCAPE }, +/* 02 1 ! */ { SDLK_1 ,SDLK_1 ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 03 2 @ */ { SDLK_2 ,SDLK_2 ,SDLK_2 ,SDLK_UNKNOWN }, +/* 04 3 # */ { SDLK_3 ,SDLK_3 ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 05 4 $ */ { SDLK_4 ,SDLK_4 ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 06 5 % */ { SDLK_5 ,SDLK_5 ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 07 6 ^ */ { SDLK_6 ,SDLK_6 ,SDLK_6 ,SDLK_UNKNOWN }, +/* 08 7 & */ { SDLK_7 ,SDLK_7 ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 09 8 * */ { SDLK_8 ,SDLK_8 ,SDLK_8 ,SDLK_UNKNOWN }, +/* 0A 9 ( */ { SDLK_9 ,SDLK_9 ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 0B 0 ) */ { SDLK_0 ,SDLK_0 ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 0C - _ */ { SDLK_MINUS ,SDLK_MINUS ,SDLK_MINUS ,SDLK_UNKNOWN }, +/* 0D = + */ { SDLK_EQUALS ,SDLK_EQUALS ,SDLK_EQUALS ,SDLK_UNKNOWN }, +/* 0E BkSpc */ { SDLK_BACKSPACE ,SDLK_BACKSPACE ,SDLK_BACKSPACE ,SDLK_BACKSPACE }, +/* 0F Tab */ { SDLK_TAB ,SDLK_TAB ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 10 Q */ { SDLK_q ,SDLK_q ,SDLK_q ,SDLK_q }, +/* 11 W */ { SDLK_w ,SDLK_w ,SDLK_w ,SDLK_w }, +/* 12 E */ { SDLK_e ,SDLK_e ,SDLK_e ,SDLK_e }, +/* 13 R */ { SDLK_r ,SDLK_r ,SDLK_r ,SDLK_r }, +/* 14 T */ { SDLK_t ,SDLK_t ,SDLK_t ,SDLK_t }, +/* 15 Y */ { SDLK_y ,SDLK_y ,SDLK_y ,SDLK_y }, +/* 16 U */ { SDLK_u ,SDLK_u ,SDLK_u ,SDLK_u }, +/* 17 I */ { SDLK_i ,SDLK_i ,SDLK_i ,SDLK_i }, +/* 18 O */ { SDLK_o ,SDLK_o ,SDLK_o ,SDLK_o }, +/* 19 P */ { SDLK_p ,SDLK_p ,SDLK_p ,SDLK_p }, +/* 1A [ */ { SDLK_LEFTBRACKET ,SDLK_LEFTBRACKET ,SDLK_LEFTBRACKET ,SDLK_LEFTBRACKET }, +/* 1B ] */ { SDLK_RIGHTBRACKET,SDLK_RIGHTBRACKET,SDLK_RIGHTBRACKET,SDLK_RIGHTBRACKET}, +/* 1C Retrn */ { SDLK_RETURN ,SDLK_RETURN ,SDLK_RETURN ,SDLK_RETURN }, +/* 1D ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 1E A */ { SDLK_a ,SDLK_a ,SDLK_a ,SDLK_a }, +/* 1F S */ { SDLK_s ,SDLK_s ,SDLK_s ,SDLK_s }, +/* 20 D */ { SDLK_d ,SDLK_d ,SDLK_d ,SDLK_d }, +/* 21 F */ { SDLK_f ,SDLK_f ,SDLK_f ,SDLK_f }, +/* 22 G */ { SDLK_g ,SDLK_g ,SDLK_g ,SDLK_g }, +/* 23 H */ { SDLK_h ,SDLK_h ,SDLK_h ,SDLK_h }, +/* 24 J */ { SDLK_j ,SDLK_j ,SDLK_j ,SDLK_j }, +/* 25 K */ { SDLK_k ,SDLK_k ,SDLK_k ,SDLK_k }, +/* 26 L */ { SDLK_l ,SDLK_l ,SDLK_l ,SDLK_l }, +/* 27 ; : */ { SDLK_SEMICOLON ,SDLK_SEMICOLON ,SDLK_SEMICOLON ,SDLK_SEMICOLON }, +/* 28 ' */ { SDLK_QUOTE ,SDLK_QUOTE ,SDLK_UNKNOWN ,SDLK_QUOTE }, +/* 29 ` ~ */ { SDLK_BACKQUOTE ,SDLK_BACKQUOTE ,SDLK_UNKNOWN ,SDLK_BACKQUOTE }, +/* 2A ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 2B \\ */ { SDLK_BACKSLASH ,SDLK_BACKSLASH ,SDLK_BACKSLASH ,SDLK_BACKSLASH }, +/* 2C Z */ { SDLK_z ,SDLK_z ,SDLK_z ,SDLK_z }, +/* 2D X */ { SDLK_x ,SDLK_x ,SDLK_x ,SDLK_x }, +/* 2E C */ { SDLK_c ,SDLK_c ,SDLK_c ,SDLK_c }, +/* 2F V */ { SDLK_v ,SDLK_v ,SDLK_v ,SDLK_v }, +/* 30 B */ { SDLK_b ,SDLK_b ,SDLK_b ,SDLK_b }, +/* 31 N */ { SDLK_n ,SDLK_n ,SDLK_n ,SDLK_n }, +/* 32 M */ { SDLK_m ,SDLK_m ,SDLK_m ,SDLK_m }, +/* 33 , < */ { SDLK_COMMA ,SDLK_COMMA ,SDLK_UNKNOWN ,SDLK_COMMA }, +/* 34 . > */ { SDLK_PERIOD ,SDLK_PERIOD ,SDLK_UNKNOWN ,SDLK_PERIOD }, +/* 35 / ? */ { SDLK_SLASH ,SDLK_SLASH ,SDLK_UNKNOWN ,SDLK_SLASH }, +/* 36 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 37 Grey* */ { SDLK_KP_MULTIPLY ,SDLK_KP_MULTIPLY ,SDLK_UNKNOWN ,SDLK_KP_MULTIPLY }, +/* 38 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 39 Space */ { SDLK_SPACE ,SDLK_SPACE ,SDLK_SPACE ,SDLK_SPACE }, +/* 3A ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 3B F1 */ { SDLK_F1 ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 3C F2 */ { SDLK_F2 ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 3D F3 */ { SDLK_F3 ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 3E F4 */ { SDLK_F4 ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 3F F5 */ { SDLK_F5 ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 40 F6 */ { SDLK_F6 ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 41 F7 */ { SDLK_F7 ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 42 F8 */ { SDLK_F8 ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 43 F9 */ { SDLK_F9 ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 44 F10 */ { SDLK_F10 ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 45 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 46 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 47 Home */ { SDLK_HOME ,SDLK_HOME ,SDLK_UNKNOWN ,SDLK_HOME }, +/* 48 Up */ { SDLK_UP ,SDLK_UP ,SDLK_UNKNOWN ,SDLK_UP }, +/* 49 PgUp */ { SDLK_PAGEUP ,SDLK_PAGEUP ,SDLK_UNKNOWN ,SDLK_PAGEUP }, +/* 4A Grey- */ { SDLK_KP_MINUS ,SDLK_KP_MINUS ,SDLK_UNKNOWN ,SDLK_KP_MINUS }, +/* 4B Left */ { SDLK_LEFT ,SDLK_LEFT ,SDLK_UNKNOWN ,SDLK_LEFT }, +/* 4C Kpad5 */ { SDLK_KP5 ,SDLK_KP5 ,SDLK_UNKNOWN ,SDLK_KP5 }, +/* 4D Right */ { SDLK_RIGHT ,SDLK_RIGHT ,SDLK_UNKNOWN ,SDLK_RIGHT }, +/* 4E Grey+ */ { SDLK_KP_PLUS ,SDLK_KP_PLUS ,SDLK_UNKNOWN ,SDLK_KP_PLUS }, +/* 4F End */ { SDLK_END ,SDLK_END ,SDLK_UNKNOWN ,SDLK_END }, +/* 50 Down */ { SDLK_DOWN ,SDLK_DOWN ,SDLK_UNKNOWN ,SDLK_DOWN }, +/* 51 PgDn */ { SDLK_PAGEDOWN ,SDLK_PAGEDOWN ,SDLK_UNKNOWN ,SDLK_PAGEDOWN }, +/* 52 Ins */ { SDLK_INSERT ,SDLK_INSERT ,SDLK_UNKNOWN ,SDLK_INSERT }, +/* 53 Del */ { SDLK_DELETE ,SDLK_DELETE ,SDLK_UNKNOWN ,SDLK_DELETE }, +/* 54 ??? */ { SDLK_UNKNOWN ,SDLK_F1 ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 55 ??? */ { SDLK_UNKNOWN ,SDLK_F2 ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 56 Lft| */ { SDLK_UNKNOWN ,SDLK_F3 ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 57 ??? */ { SDLK_UNKNOWN ,SDLK_F4 ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 58 ??? */ { SDLK_UNKNOWN ,SDLK_F5 ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 59 ??? */ { SDLK_UNKNOWN ,SDLK_F6 ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 5A ??? */ { SDLK_UNKNOWN ,SDLK_F7 ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 5B ??? */ { SDLK_UNKNOWN ,SDLK_F8 ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 5C ??? */ { SDLK_UNKNOWN ,SDLK_F9 ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 5D ??? */ { SDLK_UNKNOWN ,SDLK_F10 ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 5E ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_F1 ,SDLK_UNKNOWN }, +/* 5F ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_F2 ,SDLK_UNKNOWN }, +/* 60 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_F3 ,SDLK_UNKNOWN }, +/* 61 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_F4 ,SDLK_UNKNOWN }, +/* 62 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_F5 ,SDLK_UNKNOWN }, +/* 63 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_F6 ,SDLK_UNKNOWN }, +/* 64 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_F7 ,SDLK_UNKNOWN }, +/* 65 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_F8 ,SDLK_UNKNOWN }, +/* 66 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_F9 ,SDLK_UNKNOWN }, +/* 67 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_F10 ,SDLK_UNKNOWN }, +/* 68 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_F1 }, +/* 69 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_F2 }, +/* 6A ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_F3 }, +/* 6B ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_F4 }, +/* 6C ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_F5 }, +/* 6D ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_F6 }, +/* 6E ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_F7 }, +/* 6F ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_F8 }, +/* 70 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_F9 }, +/* 71 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_F10 }, +/* 72 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 73 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_LEFT ,SDLK_UNKNOWN }, +/* 74 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_RIGHT ,SDLK_UNKNOWN }, +/* 75 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_END ,SDLK_UNKNOWN }, +/* 76 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_PAGEDOWN ,SDLK_UNKNOWN }, +/* 77 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_HOME ,SDLK_UNKNOWN }, +/* 78 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_1 }, +/* 79 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_2 }, +/* 7A ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_3 }, +/* 7B ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_4 }, +/* 7C ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_5 }, +/* 7D ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_6 }, +/* 7E ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_7 }, +/* 7F ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_8 }, +/* 80 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_9 }, +/* 81 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_0 }, +/* 82 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_MINUS }, +/* 83 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_EQUALS }, +/* 84 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_PAGEUP ,SDLK_UNKNOWN }, +/* 85 F11 */ { SDLK_F11 ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 86 F12 */ { SDLK_F12 ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 87 ??? */ { SDLK_UNKNOWN ,SDLK_F11 ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 88 ??? */ { SDLK_UNKNOWN ,SDLK_F12 ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 89 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_F11 ,SDLK_UNKNOWN }, +/* 8A ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_F12 ,SDLK_UNKNOWN }, +/* 8B ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_F11 }, +/* 8C ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_F12 }, +/* 8D ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UP ,SDLK_UNKNOWN }, +/* 8E ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_KP_MINUS ,SDLK_UNKNOWN }, +/* 8F ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_KP5 ,SDLK_UNKNOWN }, +/* 90 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_KP_PLUS ,SDLK_UNKNOWN }, +/* 91 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_DOWN ,SDLK_UNKNOWN }, +/* 92 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_INSERT ,SDLK_UNKNOWN }, +/* 93 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_DELETE ,SDLK_UNKNOWN }, +/* 94 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_TAB ,SDLK_UNKNOWN }, +/* 95 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_KP_DIVIDE ,SDLK_UNKNOWN }, +/* 96 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_KP_MULTIPLY ,SDLK_UNKNOWN }, +/* 97 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_HOME }, +/* 98 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UP }, +/* 99 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_PAGEUP }, +/* 9A ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 9B ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_LEFT }, +/* 9C ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 9D ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_RIGHT }, +/* 9E ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* 9F ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_END }, +/* A0 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_DOWN }, +/* A1 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_PAGEUP }, +/* A2 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_INSERT }, +/* A3 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_DELETE }, +/* A4 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_KP_DIVIDE }, +/* A5 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_TAB }, +/* A6 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_KP_ENTER }, +/* A7 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* A8 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* A9 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* AA ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* AB ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* AC ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* AD ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* AE ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* AF ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* B0 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* B1 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* B2 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* B3 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* B4 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* B5 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* B6 Win L */ { SDLK_LSUPER ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* B7 Win R */ { SDLK_RSUPER ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* B8 Win M */ { SDLK_MENU ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* B9 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* BA ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* BB ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* BC ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* BD ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* BE ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* BF ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* C0 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* C1 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* C2 ??? */ { SDLK_UNKNOWN ,SDLK_LSUPER ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* C3 ??? */ { SDLK_UNKNOWN ,SDLK_RSUPER ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* C4 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* C5 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* C6 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* C7 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* C8 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* C9 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* CA ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* CB ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* CC ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* CD ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* CE ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_LSUPER ,SDLK_UNKNOWN }, +/* CF ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_RSUPER ,SDLK_UNKNOWN }, +/* D0 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_MENU ,SDLK_UNKNOWN }, +/* D1 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* D2 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* D3 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* D4 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* D5 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* D6 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* D7 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* D8 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* D9 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* DA ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_LSUPER }, +/* DB ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_RSUPER }, +/* DC ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_MENU }, +/* DD ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* DE ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* DF ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* E0 Enter */ { SDLK_KP_ENTER ,SDLK_KP_ENTER ,SDLK_KP_ENTER ,SDLK_UNKNOWN }, +/* E1 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* E2 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* E3 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* E4 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* E5 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* E6 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* E7 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* E8 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* E9 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* EA ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* EB ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* EC ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* ED ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* EE ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* EF ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* F0 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* F1 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* F2 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* F3 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* F4 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* F5 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* F6 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* F7 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* F8 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* F9 ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* FA ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* FB ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* FC ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* FD ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* FE ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +/* FF ??? */ { SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN ,SDLK_UNKNOWN }, +}; + +// Conversion de l'ancien codage des touches: +// 0x00FF le scancode (maintenant code sym sur 0x0FFF) +// 0x0100 shift (maintenant 0x1000) +// 0x0200 control (maintenant 0x2000) +// 0x0400 alt (maintenant 0x4000) +word Touche_pour_scancode(word scancode) +{ + if (scancode & 0x0400) + return Scancode_to_Sym[scancode & 0xFF][3] | + (scancode & 0x0700) << 4; + else if (scancode & 0x0200) + return Scancode_to_Sym[scancode & 0xFF][2] | + (scancode & 0x0700) << 4; + else if (scancode & 0x0100) + return Scancode_to_Sym[scancode & 0xFF][1] | + (scancode & 0x0700) << 4; + else + return Scancode_to_Sym[scancode & 0xFF][0]; +} diff --git a/clavier.h b/clavier.h new file mode 100644 index 00000000..61f815ff --- /dev/null +++ b/clavier.h @@ -0,0 +1,3 @@ +word Touche_pour_scancode(word scancode); + + diff --git a/const.h b/const.h index e8602e29..5e4ad70a 100644 --- a/const.h +++ b/const.h @@ -8,11 +8,11 @@ #define M_2PI 6.28318530717958647692528676656 // Note: La taille du fichier GFX2.DAT est définie au début de INIT.C ! -#define POURCENTAGE_VERSION "96.5%" // Libellé du pourcentage de la version ß +#define POURCENTAGE_VERSION "97.0%" // Libellé du pourcentage de la version ß #define VERSION1 2 // | #define VERSION2 0 // |_ Numéro de version découpé en -#define BETA1 96 // | plusieurs parties => 2.0 ß95.5% -#define BETA2 5 // | +#define BETA1 97 // | plusieurs parties => 2.0 ß95.5% +#define BETA2 0 // | #define ALPHA_BETA "ß" // Type de la version "Þ" ou "ß" #define TAILLE_FICHIER_CONFIG 10351 // Taille du fichier GFX2.CFG #define NB_MODES_VIDEO 60 // Nombre de modes vidéo diff --git a/divers.c b/divers.c index d3cb7cf7..96cdcf5b 100644 --- a/divers.c +++ b/divers.c @@ -108,6 +108,158 @@ void Sensibilite_souris(word X,word Y) { puts("Sensibilite_souris non implémenté!"); } +word Touche_SDL(SDL_keysym Sym) +{ + word Retour = 0; + // On ignore shift, alt et control isolés. + if (Sym.sym == SDLK_RSHIFT || Sym.sym == SDLK_LSHIFT || + Sym.sym == SDLK_RCTRL || Sym.sym == SDLK_LCTRL || + Sym.sym == SDLK_RALT || Sym.sym == SDLK_LALT || + Sym.sym == SDLK_MODE) // AltGr + return 0; + + // Les touches qui n'ont qu'une valeur unicode (très rares) + // seront codées sur 11 bits, le 12e bit est mis à 1 (0x0800) + if (Sym.sym > 0) + Retour = Sym.sym; + else if (Sym.unicode > 0) + Retour = (Sym.unicode & 0x07FF) | 0x0800; + + if (Sym.mod & (KMOD_LSHIFT | KMOD_RSHIFT)) + Retour |= 0x1000; + if (Sym.mod & (KMOD_LCTRL | KMOD_RCTRL)) + Retour |= 0x2000; + if (Sym.mod & (KMOD_LALT | KMOD_RALT | KMOD_MODE)) + Retour |= 0x4000; + return Retour; +} + +const char * Nom_touche(word Touche) +{ + typedef struct + { + word Sym; + char *Nom_touche; + } S_Libelle_touche; + S_Libelle_touche Table_touches[] = + { + { SDLK_BACKSPACE , "Backspace" }, + { SDLK_TAB , "Tab" }, + { SDLK_CLEAR , "Clear" }, + { SDLK_RETURN , "Return" }, + { SDLK_PAUSE , "Pause" }, + { SDLK_ESCAPE , "Esc" }, + { SDLK_DELETE , "Del" }, + { SDLK_KP0 , "KP 0" }, + { SDLK_KP1 , "KP 1" }, + { SDLK_KP2 , "KP 2" }, + { SDLK_KP3 , "KP 3" }, + { SDLK_KP4 , "KP 4" }, + { SDLK_KP5 , "KP 5" }, + { SDLK_KP6 , "KP 6" }, + { SDLK_KP7 , "KP 7" }, + { SDLK_KP8 , "KP 8" }, + { SDLK_KP9 , "KP 9" }, + { SDLK_KP_PERIOD , "KP ." }, + { SDLK_KP_DIVIDE , "KP /" }, + { SDLK_KP_MULTIPLY, "KP *" }, + { SDLK_KP_MINUS , "KP -" }, + { SDLK_KP_PLUS , "KP Plus" }, + { SDLK_KP_ENTER , "KP Enter" }, + { SDLK_KP_EQUALS , "KP =" }, + { SDLK_UP , "Up" }, + { SDLK_DOWN , "Down" }, + { SDLK_RIGHT , "Right" }, + { SDLK_LEFT , "Left" }, + { SDLK_INSERT , "Ins" }, + { SDLK_HOME , "Home" }, + { SDLK_END , "End" }, + { SDLK_PAGEUP , "PgUp" }, + { SDLK_PAGEDOWN , "PgDn" }, + { SDLK_F1 , "F1" }, + { SDLK_F2 , "F2" }, + { SDLK_F3 , "F3" }, + { SDLK_F4 , "F4" }, + { SDLK_F5 , "F5" }, + { SDLK_F6 , "F6" }, + { SDLK_F7 , "F7" }, + { SDLK_F8 , "F8" }, + { SDLK_F9 , "F9" }, + { SDLK_F10 , "F10" }, + { SDLK_F11 , "F11" }, + { SDLK_F12 , "F12" }, + { SDLK_F13 , "F13" }, + { SDLK_F14 , "F14" }, + { SDLK_F15 , "F15" }, + { SDLK_NUMLOCK , "NumLock" }, + { SDLK_CAPSLOCK , "CapsLck" }, + { SDLK_SCROLLOCK , "ScrlLock" }, + { SDLK_RSHIFT , "RShift" }, + { SDLK_LSHIFT , "LShift" }, + { SDLK_RCTRL , "RCtrol" }, + { SDLK_LCTRL , "LCtrl" }, + { SDLK_RALT , "RAlt" }, + { SDLK_LALT , "LAlt" }, + { SDLK_RMETA , "RMeta" }, + { SDLK_LMETA , "LMeta" }, + { SDLK_LSUPER , "LWin" }, + { SDLK_RSUPER , "RWin" }, + { SDLK_MODE , "AltGr" }, + { SDLK_COMPOSE , "Comp" }, + { SDLK_HELP , "Help" }, + { SDLK_PRINT , "Print" }, + { SDLK_SYSREQ , "SysReq" }, + { SDLK_BREAK , "Break" }, + { SDLK_MENU , "Menu" }, + { SDLK_POWER , "Power" }, + { SDLK_EURO , "Euro" }, + { SDLK_UNDO , "Undo" } + }; + + int Indice; + static char Buffer[25]; + Buffer[0] = '\0'; + + if (Touche & 0x2000) + strcat(Buffer, "Ctrl+"); + if (Touche & 0x4000) + strcat(Buffer, "Alt+"); + if (Touche & 0x1000) + strcat(Buffer, "Shift+"); + + if (Touche & 0x8000) + { + sprintf(Buffer+strlen(Buffer), "[%d]", Touche & 0xFFF); + return Buffer; + } + Touche = Touche & 0xFFF; + // Touches ASCII + if (Touche>=' ' && Touche < 127) + { + sprintf(Buffer+strlen(Buffer), "'%c'", Touche); + return Buffer; + } + // Touches 'World' + if (Touche>=SDLK_WORLD_0 && Touche <= SDLK_WORLD_95) + { + sprintf(Buffer+strlen(Buffer), "w%d", Touche - SDLK_WORLD_0); + return Buffer; + } + + // Touches au libellé connu + for (Indice=0; Indice < sizeof(Table_touches)/sizeof(S_Libelle_touche);Indice++) + { + if (Touche == Table_touches[Indice].Sym) + { + sprintf(Buffer+strlen(Buffer), "%s", Table_touches[Indice].Nom_touche); + return Buffer; + } + } + // Autres touches inconnues + sprintf(Buffer+strlen(Buffer), "(%d)", Touche); + return Buffer; + +} void Get_input(void) //Gestion des évènements: mouvement de la souris, clic sur les boutons, et utilisation du clavier. @@ -144,31 +296,7 @@ void Get_input(void) { byte ok = 0; //Appui sur une touche du clavier - - //On met le scancode dans Touche" - Touche = event.key.keysym.scancode; - - //...et le code ASCII dans Touche_ASCII - Touche_ASCII=event.key.keysym.sym; - - //On ajoute aussi l'état des modifiers - #define ekkm event.key.keysym.mod - if (ekkm & (KMOD_LSHIFT | KMOD_RSHIFT)) - { - Touche |= 0x0100; - } - if (ekkm & (KMOD_LCTRL | KMOD_RCTRL)) - { - Touche |= 0x0200; - } - if (ekkm & (KMOD_LALT | KMOD_RALT)) - { - Touche |= 0x0400; - } - #undef ekkm - - //TODO revoir les scancodes qui sont dans le tableau - //Config_Touche, ça correspond à rien ! + Touche = Touche_SDL(event.key.keysym); //Cas particulier: déplacement du curseur avec haut bas gauche droite //On doit interpréter ça comme un mvt de la souris diff --git a/gfx2.cfg b/gfx2.cfg index 8f3f184e..4cee6ffa 100644 Binary files a/gfx2.cfg and b/gfx2.cfg differ diff --git a/global.h b/global.h index ada6b5af..d7786e80 100644 --- a/global.h +++ b/global.h @@ -108,7 +108,7 @@ GLOBAL struct Composantes Coul_menu_pref[4]; GLOBAL word Mouse_X; // Abscisse de la souris GLOBAL word Mouse_Y; // Ordonnée de la souris GLOBAL byte Mouse_K; // Etat des boutons de la souris -GLOBAL word Touche; +GLOBAL dword Touche; GLOBAL Uint8* Etat_Du_Clavier; // Scancode de la touche en cours et etat des touches de ctrl GLOBAL byte Touche_ASCII; // Code ASCII de la touche en cours diff --git a/graph.c b/graph.c index bbfa1daa..8eeb0313 100644 --- a/graph.c +++ b/graph.c @@ -2909,16 +2909,16 @@ byte Demande_de_confirmation(char * Message) Print_dans_fenetre((Largeur_de_la_fenetre>>1)-(strlen(Message)<<2),20,Message,CM_Noir,CM_Clair); - Fenetre_Definir_bouton_normal((Largeur_de_la_fenetre/3)-20 ,37,40,14,"Yes",1,1,0x0015); // 1 - Fenetre_Definir_bouton_normal(((Largeur_de_la_fenetre<<1)/3)-20,37,40,14,"No" ,1,1,0x0031); // 2 + Fenetre_Definir_bouton_normal((Largeur_de_la_fenetre/3)-20 ,37,40,14,"Yes",1,1,SDLK_y); // 1 + Fenetre_Definir_bouton_normal(((Largeur_de_la_fenetre<<1)/3)-20,37,40,14,"No" ,1,1,SDLK_n); // 2 Afficher_curseur(); do { Bouton_clicke=Fenetre_Bouton_clicke(); - if (Touche==0x001C) Bouton_clicke=1; - if (Touche==0x0001) Bouton_clicke=2; + if (Touche==SDLK_RETURN) Bouton_clicke=1; + if (Touche==SDLK_ESCAPE) Bouton_clicke=2; } while (Bouton_clicke<=0); @@ -2943,12 +2943,12 @@ void Warning_message(char * Message) Ouvrir_fenetre(Largeur_de_la_fenetre,60,"Warning!"); Print_dans_fenetre((Largeur_de_la_fenetre>>1)-(strlen(Message)<<2),20,Message,CM_Noir,CM_Clair); - Fenetre_Definir_bouton_normal((Largeur_de_la_fenetre>>1)-20 ,37,40,14,"OK",1,1,0x001C); // 1 + Fenetre_Definir_bouton_normal((Largeur_de_la_fenetre>>1)-20 ,37,40,14,"OK",1,1,SDLK_RETURN); // 1 Afficher_curseur(); do Bouton_clicke=Fenetre_Bouton_clicke(); - while ((Bouton_clicke<=0) && (Touche!=0x0001) && (Touche!=0x0018)); + while ((Bouton_clicke<=0) && (Touche!=SDLK_ESCAPE) && (Touche!=SDLK_o)); Fermer_fenetre(); Afficher_curseur(); diff --git a/init.c b/init.c index de1253d1..c5dd2e33 100644 --- a/init.c +++ b/init.c @@ -21,6 +21,7 @@ #include "operatio.h" #include "divers.h" #include "erreurs.h" +#include "clavier.h" #include "errno.h" @@ -1698,6 +1699,7 @@ int Charger_CFG(int Tout_charger) struct Config_Infos_touche CFG_Infos_touche; struct Config_Mode_video CFG_Mode_video; struct stat Informations_Fichier; + int Conversion_touches = 0; strcpy(Nom_du_fichier,Repertoire_du_programme); strcat(Nom_du_fichier,"gfx2.cfg"); @@ -1713,7 +1715,17 @@ int Charger_CFG(int Tout_charger) || memcmp(CFG_Header.Signature,"CFG",3) ) goto Erreur_lecture_config; - if ( (CFG_Header.Version1!=VERSION1) + // Version DOS de Robinson et X-Man + if ( (CFG_Header.Version1== 2) + && (CFG_Header.Version2== 0) + && (CFG_Header.Beta1== 96) + && (CFG_Header.Beta2== 5) ) + { + // Les touches (scancodes) sont à convertir) + Conversion_touches = 1; + } + // Version SDL + else if ( (CFG_Header.Version1!=VERSION1) || (CFG_Header.Version2!=VERSION2) || (CFG_Header.Beta1!=BETA1) || (CFG_Header.Beta2!=BETA2) ) @@ -1747,6 +1759,10 @@ int Charger_CFG(int Tout_charger) CFG_Infos_touche.Touche2=bswap_16(CFG_Infos_touche.Touche2); CFG_Infos_touche.Numero=bswap_16(CFG_Infos_touche.Numero); #endif + if (Conversion_touches) + { + CFG_Infos_touche.Touche = Touche_pour_scancode(CFG_Infos_touche.Touche); + } for (Indice2=0; ((Indice2Raccourci==(Touche&0x00FF)) + if (Temp->Raccourci==(Touche&0x0FFF)) return Temp->Numero; Temp=Temp->Next; } diff --git a/palette.c b/palette.c index 47473f2d..142d5491 100644 --- a/palette.c +++ b/palette.c @@ -134,7 +134,7 @@ void Remap_image_HIGH(byte * Table_de_conversion) Remap_general_LOWLEVEL(Table_de_conversion,Principal_Ecran, Principal_Largeur_image,Principal_Hauteur_image,Principal_Largeur_image); - // On calcule les limites … l'écran de l'image + // On calcule les limites à l'écran de l'image if (Principal_Hauteur_image>=Menu_Ordonnee_avant_fenetre) Fin_Y=Menu_Ordonnee_avant_fenetre; else @@ -166,13 +166,13 @@ void Remap_image_HIGH(byte * Table_de_conversion) Fin_Y_Loupe=Principal_Hauteur_image*Loupe_Facteur; } - // On doit maintenant faire la traduction … l'écran + // On doit maintenant faire la traduction à l'écran Remap_zone_HIGH(0,0,Fin_X,Fin_Y,Table_de_conversion); if (Loupe_Mode) { Remap_zone_HIGH(Principal_Split,0,Fin_X_Loupe,Fin_Y_Loupe,Table_de_conversion); - // Il peut encore rester le bas de la barre de split … remapper si la + // Il peut encore rester le bas de la barre de split à remapper si la // partie zoomée ne descend pas jusqu'en bas... Remap_zone_HIGH(Principal_Split,Fin_Y_Loupe, (Principal_Split+(LARGEUR_BARRE_SPLIT*Menu_Facteur_X)), @@ -202,7 +202,7 @@ void Swap(int X_Swap,short Debut_Bloc_1,short Debut_Bloc_2,short Taille_du_bloc, Utilisation_temporaire=(dword *)malloc(sizeof(dword)*256); memcpy(Utilisation_temporaire,Utilisation_couleur,sizeof(dword)*256); - // On commence … initialiser la table de conversion … un état o— elle ne + // On commence à initialiser la table de conversion à un état o— elle ne // fera aucune conversion. for (Pos_1=0;Pos_1<=255;Pos_1++) Table_de_conversion[Pos_1]=Pos_1; @@ -225,7 +225,7 @@ void Swap(int X_Swap,short Debut_Bloc_1,short Debut_Bloc_2,short Taille_du_bloc, Palette[Pos_1].V=Palette_temporaire[Pos_2].V; Palette[Pos_1].B=Palette_temporaire[Pos_2].B; - // On gŠre la mise … jour de Pos_2 + // On gŠre la mise à jour de Pos_2 if (Pos_2==Fin_2) Pos_2=Debut_Bloc_1; else @@ -247,7 +247,7 @@ void Swap(int X_Swap,short Debut_Bloc_1,short Debut_Bloc_2,short Taille_du_bloc, Palette[Pos_1].V=Palette_temporaire[Pos_2].V; Palette[Pos_1].B=Palette_temporaire[Pos_2].B; - // On gŠre la mise … jour de Pos_2 + // On gŠre la mise à jour de Pos_2 if (Pos_2==Fin_1) Pos_2=Debut_Bloc_2; else @@ -289,7 +289,7 @@ void Swap(int X_Swap,short Debut_Bloc_1,short Debut_Bloc_2,short Taille_du_bloc, free(Palette_temporaire); // Maintenant, tous ces calculs doivent êtres pris en compte dans la - // palette, l'image et … l'écran. + // palette, l'image et à l'écran. Set_palette(Palette); if (X_Swap) @@ -358,7 +358,7 @@ void Remettre_proprement_les_couleurs_du_menu(dword * Utilisation_couleur) Table_de_remplacement[Nouvelles[Indice]]=Meilleure_couleur_sans_exclusion (RVB[Indice].R,RVB[Indice].V,RVB[Indice].B); - // On fait un changement des couleurs visibles … l'écran et dans l'image + // On fait un changement des couleurs visibles à l'écran et dans l'image Remap_image_HIGH(Table_de_remplacement); Afficher_curseur(); @@ -391,7 +391,7 @@ void Reduce_palette(short * Nb_couleurs_utilisees,int Nb_couleurs_demandees,T_Pa Effacer_curseur(); - // On tasse la palette vers le début parce qu'elle doit ressembler … + // On tasse la palette vers le début parce qu'elle doit ressembler à // du GruyŠre (et comme Papouille il aime pas le fromage...) // Pour cela, on va scruter la couleur Couleur_1 et se servir de l'indice @@ -405,14 +405,14 @@ void Reduce_palette(short * Nb_couleurs_utilisees,int Nb_couleurs_demandees,T_Pa Palette[Couleur_2].V=Palette[Couleur_1].V; Palette[Couleur_2].B=Palette[Couleur_1].B; - // Ensuite, on met … jour le tableau d'occupation des couleurs. + // Ensuite, on met à jour le tableau d'occupation des couleurs. Utilisation_couleur[Couleur_2]=Utilisation_couleur[Couleur_1]; // On va maintenant s'occuper de la table de conversion: Table_de_conversion[Couleur_1]=Couleur_2; // Maintenant, la place désignée par Couleur_2 est occupée, alors on - // doit passer … un indice de destination suivant. + // doit passer à un indice de destination suivant. Couleur_2++; } } @@ -427,7 +427,7 @@ void Reduce_palette(short * Nb_couleurs_utilisees,int Nb_couleurs_demandees,T_Pa } // Maintenant qu'on a une palette clean, on va boucler en réduisant - // le nombre de couleurs jusqu'… ce qu'on atteigne le nombre désiré. + // le nombre de couleurs jusqu'à ce qu'on atteigne le nombre désiré. while ((*Nb_couleurs_utilisees)>Nb_couleurs_demandees) { // Il s'agit de trouver les 2 couleurs qui se ressemblent le plus @@ -459,14 +459,14 @@ void Reduce_palette(short * Nb_couleurs_utilisees,int Nb_couleurs_demandees,T_Pa } } - // Maintenant qu'on les a trouvées, on va pouvoir mettre … jour nos + // Maintenant qu'on les a trouvées, on va pouvoir mettre à jour nos // données pour que le remplacement se fasse sans encombres. // En somme, on va remplacer Meilleure_couleur_2 par Meilleure_couleur_1, // mais attention, on ne remplace pas Meilleure_couleur_1 par // Meilleure_couleur_2 ! - // On met … jour la palette. + // On met à jour la palette. Palette[Meilleure_couleur_1].R=Round_div((Utilisation_couleur[Meilleure_couleur_1]*Palette[Meilleure_couleur_1].R)+ (Utilisation_couleur[Meilleure_couleur_2]*Palette[Meilleure_couleur_2].R), Meilleure_utilisation); @@ -477,26 +477,26 @@ void Reduce_palette(short * Nb_couleurs_utilisees,int Nb_couleurs_demandees,T_Pa (Utilisation_couleur[Meilleure_couleur_2]*Palette[Meilleure_couleur_2].B), Meilleure_utilisation); - // On met … jour la table d'utilisation. + // On met à jour la table d'utilisation. Utilisation_couleur[Meilleure_couleur_1]+=Utilisation_couleur[Meilleure_couleur_2]; Utilisation_couleur[Meilleure_couleur_2]=0; - // On met … jour la table de conversion. + // On met à jour la table de conversion. for (Couleur_1=0;Couleur_1<=255;Couleur_1++) { if (Table_de_conversion[Couleur_1]==Meilleure_couleur_2) { - // La Couleur_1 avait déj… prévue de se faire remplacer par la + // La Couleur_1 avait déjà prévue de se faire remplacer par la // couleur que l'on veut maintenant éliminer. On va maintenant - // demander … ce que la Couleur_1 se fasse remplacer par la + // demander à ce que la Couleur_1 se fasse remplacer par la // Meilleure_couleur_1. Table_de_conversion[Couleur_1]=Meilleure_couleur_1; } } // Bon, maintenant que l'on a fait bouger nos petites choses concernants - // la couleur … éliminer, on va s'occuper de faire bouger les couleurs - // situées aprŠs la couleur … éliminer pour qu'elles se dépla‡ent d'une + // la couleur à éliminer, on va s'occuper de faire bouger les couleurs + // situées aprŠs la couleur à éliminer pour qu'elles se dépla‡ent d'une // couleur en arriŠre. for (Couleur_1=0;Couleur_1<=255;Couleur_1++) { @@ -522,11 +522,11 @@ void Reduce_palette(short * Nb_couleurs_utilisees,int Nb_couleurs_demandees,T_Pa // s'occuper de notre table de conversion. if (Table_de_conversion[Couleur_1]>Meilleure_couleur_2) // La Couleur_1 avait l'intention de se faire remplacer par une - // couleur que l'on va (ou que l'on a déj…) bouger en arriŠre. + // couleur que l'on va (ou que l'on a déjà) bouger en arriŠre. Table_de_conversion[Couleur_1]--; } - // On vient d'éjecter une couleur, donc on peut mettre … jour le nombre + // On vient d'éjecter une couleur, donc on peut mettre à jour le nombre // de couleurs utilisées. (*Nb_couleurs_utilisees)--; @@ -536,18 +536,18 @@ void Reduce_palette(short * Nb_couleurs_utilisees,int Nb_couleurs_demandees,T_Pa Palette[*Nb_couleurs_utilisees].V=0; Palette[*Nb_couleurs_utilisees].B=0; - // Au passage, on va s'assurer que l'on a pas oublié de la mettre … une + // Au passage, on va s'assurer que l'on a pas oublié de la mettre à une // utilisation nulle. Utilisation_couleur[*Nb_couleurs_utilisees]=0; - // AprŠs avoir éjecté une couleur, on le fait savoir … l'utilisateur par + // AprŠs avoir éjecté une couleur, on le fait savoir à l'utilisateur par // l'intermédiaire du compteur de nombre utilisées. Num2str(*Nb_couleurs_utilisees,Chaine,3); Print_dans_fenetre(186,23,Chaine,CM_Noir,CM_Clair); } // Maintenant, tous ces calculs doivent êtres pris en compte dans la - // palette, l'image et … l'écran. + // palette, l'image et à l'écran. Remap_image_HIGH(Table_de_conversion); // Et voila pour l'image et l'écran Afficher_curseur(); } @@ -605,7 +605,7 @@ void Palette_Reafficher_jauges(struct Fenetre_Bouton_scroller * Jauge_rouge, // Réaffichage des jauges: if (Debut!=Fin) { - // Dans le cas d'un bloc, tout … 0. + // Dans le cas d'un bloc, tout à 0. Jauge_rouge->Position =63; Fenetre_Dessiner_jauge(Jauge_rouge); Print_dans_fenetre(176,172,"± 0",CM_Noir,CM_Clair); @@ -693,7 +693,7 @@ void Bouton_Palette(void) Fenetre_Afficher_cadre (173, 67,121,116); Fenetre_Afficher_cadre (128, 16, 91, 39); Fenetre_Afficher_cadre (221, 16, 73, 39); - // Cadre creux destiné … l'affichage de la(les) couleur(s) sélectionnée(s) + // Cadre creux destiné à l'affichage de la(les) couleur(s) sélectionnée(s) Fenetre_Afficher_cadre_creux(259, 88, 26, 74); // Graduation des jauges de couleur @@ -737,34 +737,34 @@ void Bouton_Palette(void) Print_dans_fenetre(237,58,Chaine,CM_Noir,CM_Clair); - Fenetre_Definir_bouton_normal( 6,17,59,14,"Default",3,1,0x0021); // 5 - Fenetre_Definir_bouton_normal(66,17,29,14,"Gry" ,1,1,0x0022); // 6 - Fenetre_Definir_bouton_normal( 6,47,59,14,"Swap" ,1,1,0x001F); // 7 - Fenetre_Definir_bouton_normal(66,47,59,14,"X-Swap" ,1,1,0x002D); // 8 - Fenetre_Definir_bouton_normal( 6,62,59,14,"Copy" ,1,1,0x002E); // 9 - Fenetre_Definir_bouton_normal(66,62,59,14,"Spread" ,4,1,0x0012); // 10 + Fenetre_Definir_bouton_normal( 6,17,59,14,"Default",3,1,SDLK_f); // 5 + Fenetre_Definir_bouton_normal(66,17,29,14,"Gry" ,1,1,SDLK_g); // 6 + Fenetre_Definir_bouton_normal( 6,47,59,14,"Swap" ,1,1,SDLK_s); // 7 + Fenetre_Definir_bouton_normal(66,47,59,14,"X-Swap" ,1,1,SDLK_x); // 8 + Fenetre_Definir_bouton_normal( 6,62,59,14,"Copy" ,1,1,SDLK_c); // 9 + Fenetre_Definir_bouton_normal(66,62,59,14,"Spread" ,4,1,SDLK_e); // 10 - Fenetre_Definir_bouton_normal(239,20,51,14,"Reduce" ,1,1,0x0013); // 11 + Fenetre_Definir_bouton_normal(239,20,51,14,"Reduce" ,1,1,SDLK_r); // 11 Print_dans_fenetre(241,41,"to",CM_Fonce,CM_Clair); - Fenetre_Definir_bouton_normal( 6,168,35,14,"Undo" ,1,1,0x0016); // 12 - Fenetre_Definir_bouton_normal( 62,168,51,14,"Cancel",0,1,0x0001); // 13 - Fenetre_Definir_bouton_normal(117,168,51,14,"OK" ,0,1,0x001C); // 14 + Fenetre_Definir_bouton_normal( 6,168,35,14,"Undo" ,1,1,SDLK_u); // 12 + Fenetre_Definir_bouton_normal( 62,168,51,14,"Cancel",0,1,SDLK_ESCAPE); // 13 + Fenetre_Definir_bouton_normal(117,168,51,14,"OK" ,0,1,SDLK_RETURN); // 14 - Fenetre_Definir_bouton_normal(132,20,83,14,"Used: ???",4,1,0x0020);// 15 + Fenetre_Definir_bouton_normal(132,20,83,14,"Used: ???",4,1,SDLK_d);// 15 Bouton_Used=Fenetre_Liste_boutons_normal; - Fenetre_Definir_bouton_normal(132,37,83,14,"Zap unused",0,1,0x0053);//16 + Fenetre_Definir_bouton_normal(132,37,83,14,"Zap unused",0,1,SDLK_DELETE);//16 // Jauge de réduction de palette Fenetre_Definir_bouton_scroller(225,20,31,7,1,Indice_Reduction_palette);// 17 Jauge_Reduction=Fenetre_Liste_boutons_scroller; - Fenetre_Definir_bouton_normal(266, 74,12,11,"+",0,1,0x004E); // 18 - Fenetre_Definir_bouton_normal(266,165,12,11,"-",0,1,0x004A); // 19 + Fenetre_Definir_bouton_normal(266, 74,12,11,"+",0,1,SDLK_KP_PLUS); // 18 + Fenetre_Definir_bouton_normal(266,165,12,11,"-",0,1,SDLK_KP_MINUS); // 19 - Fenetre_Definir_bouton_normal(96,17,29,14,"Neg" ,1,1,0x0031); // 20 - Fenetre_Definir_bouton_normal( 6,32,59,14,"Invert" ,1,1,0x0017); // 21 - Fenetre_Definir_bouton_normal(66,32,59,14,"X-Inv." ,5,1,0x002F); // 22 + Fenetre_Definir_bouton_normal(96,17,29,14,"Neg" ,1,1,SDLK_n); // 20 + Fenetre_Definir_bouton_normal( 6,32,59,14,"Invert" ,1,1,SDLK_i); // 21 + Fenetre_Definir_bouton_normal(66,32,59,14,"X-Inv." ,5,1,SDLK_v); // 22 Fenetre_Definir_bouton_saisie(263,39,3); // 23 // Affichage du facteur de réduction de la palette @@ -780,7 +780,7 @@ void Bouton_Palette(void) Afficher_curseur(); Clavier_americain(); // On est obligé de rester en clavier américain pour - // que l'on puisse décaler la couleur sélectionnée … + // que l'on puisse décaler la couleur sélectionnée à // l'aide des touche "^" et "$" ("[" et "]"). if (Config.Auto_nb_used) @@ -1595,7 +1595,7 @@ void Bouton_Palette(void) { switch (Touche) { - case 0x001A : // Décaler Forecolor vers la gauche + case SDLK_LEFTBRACKET : // Décaler Forecolor vers la gauche if (Debut_block==Fin_block) { Fore_color--; @@ -1615,7 +1615,7 @@ void Bouton_Palette(void) } break; - case 0x001B : // Décaler Forecolor vers la droite + case SDLK_RIGHTBRACKET : // Décaler Forecolor vers la droite if (Debut_block==Fin_block) { Fore_color++; @@ -1635,10 +1635,11 @@ void Bouton_Palette(void) } break; - case 0x011A : // Decaler Backcolor vers la gauche + case (SDLK_LEFTBRACKET|0x1000) : // Decaler Backcolor vers la gauche Back_color--; - case 0x011B : // Decaler Backcolor vers la droite - if (Touche==0x011B) + case (SDLK_RIGHTBRACKET|0x1000) : // Decaler Backcolor vers la droite + // attention: pas de break ci-dessus + if (Touche==(SDLK_RIGHTBRACKET|0x1000)) Back_color++; Effacer_curseur(); Block(Fenetre_Pos_X+(Menu_Facteur_X*260),Fenetre_Pos_Y+(Menu_Facteur_Y* 89),Menu_Facteur_X*24,Menu_Facteur_Y<<2,Back_color); @@ -1648,7 +1649,7 @@ void Bouton_Palette(void) Afficher_curseur(); break; - case 0x000E : // Remise des couleurs du menu … l'état normal en essayant + case SDLK_BACKSPACE : // Remise des couleurs du menu à l'état normal en essayant // de ne pas trop modifier l'image. if (!Backup_de_l_image_effectue) { @@ -1671,8 +1672,8 @@ void Bouton_Palette(void) Il_faut_remapper=1; break; - case 0x0029 : // Récupération d'une couleur derriŠre le menu - case 0x0033 : + case SDLK_BACKQUOTE : // Récupération d'une couleur derriŠre le menu + case SDLK_COMMA : Recuperer_couleur_derriere_fenetre(&Couleur,&Click); if (Click) { @@ -1805,9 +1806,9 @@ void Bouton_Palette_secondaire(void) Ouvrir_fenetre(200,80,"Palettes"); - Fenetre_Definir_bouton_normal(10,20,180,14,"Colors for best match",12,1,0x0030); // 1 - Fenetre_Definir_bouton_normal(10,37,180,14,"User's color series" ,14,0,0x001F); // 2 - Fenetre_Definir_bouton_normal(60,60, 80,14,"Cancel" , 0,1,0x0001); // 3 + Fenetre_Definir_bouton_normal(10,20,180,14,"Colors for best match",12,1,SDLK_b); // 1 + Fenetre_Definir_bouton_normal(10,37,180,14,"User's color series" ,14,0,SDLK_s); // 2 + Fenetre_Definir_bouton_normal(60,60, 80,14,"Cancel" , 0,1,SDLK_ESCAPE); // 3 Afficher_curseur(); diff --git a/shade.c b/shade.c index 864630f7..97020f18 100644 --- a/shade.c +++ b/shade.c @@ -83,7 +83,7 @@ void Shade_Blocs_degrades(void) { // On regarde quel shade on va afficher en preview Shade_traite=((Pos_Y-Debut_Y)*Nb_shades)/Taille_Y; - // Si ce n'est pas le shade pr‚c‚demment trait‚ on calcule ses infos + // Si ce n'est pas le shade précédemment traité on calcule ses infos if (Shade_traite>Ancien_shade_traite) { // On commence par sauter tous les vides jusqu'au prochain shade @@ -134,7 +134,7 @@ void Tagger_shades(word Select_Debut,word Select_Fin) Pos_X=Fenetre_Pos_X+(Menu_Facteur_X*((Colonne<<2)+8)); Pos_Y=Fenetre_Pos_Y+(Menu_Facteur_Y*((Ligne*7)+131)); - // On regarde si la case est "disabl‚e" + // On regarde si la case est "disablée" if (Shade_Liste[Shade_Actuel].Liste[Position]&0x8000) { if ((Position>=Select_Debut) && (Position<=Select_Fin)) @@ -145,7 +145,7 @@ void Tagger_shades(word Select_Debut,word Select_Fin) else Block(Pos_X,Pos_Y,Menu_Facteur_X<<2,Menu_Facteur_Y<<1,CM_Blanc); } - else // "enabl‚e" + else // "enablée" { if ((Position>=Select_Debut) && (Position<=Select_Fin)) Block(Pos_X,Pos_Y,Menu_Facteur_X<<2,Menu_Facteur_Y<<1,CM_Noir); @@ -265,8 +265,8 @@ void Inserer_shade(byte Premiere_couleur, byte Derniere_couleur, word Select_Deb Premiere_couleur=Temp; } - // Avant d'ins‚rer quoi que ce soit, on efface les ‚ventuelles couleurs que - // l'on va r‚ins‚rer: + // Avant d'insérer quoi que ce soit, on efface les éventuelles couleurs que + // l'on va réinsérer: Limite=512-Select_Debut; for (Curseur=0; Curseur<512; Curseur++) { @@ -276,7 +276,7 @@ void Inserer_shade(byte Premiere_couleur, byte Derniere_couleur, word Select_Deb && ((Shade_Liste[Shade_Actuel].Liste[Curseur]&0xFF)==Temp) ) Shade_Liste[Shade_Actuel].Liste[Curseur]=(Shade_Liste[Shade_Actuel].Liste[Curseur]&0x8000)|0x0100; } - // Voil…... Maintenant on peut y aller peinard. + // Voilà... Maintenant on peut y aller peinard. Temp=1+Derniere_couleur-Premiere_couleur; Limite=Select_Debut+Temp; @@ -329,7 +329,7 @@ short Attendre_click_dans_shade() Case_choisie=(((((Mouse_Y-Fenetre_Pos_Y)/Menu_Facteur_Y)-127)/7)<<6)+ ((((Mouse_X-Fenetre_Pos_X)/Menu_Facteur_X)-8 )>>2); - if ((Mouse_K==A_DROITE) || (Touche==0x0001)) + if ((Mouse_K==A_DROITE) || (Touche==SDLK_ESCAPE)) Case_choisie=512; // valeur indiquant que l'on n'a rien choisi } @@ -355,7 +355,7 @@ void Swap_shade(short Debut_Bloc_1,short Debut_Bloc_2,short Taille_du_bloc) Shade_temporaire=(word *)malloc(512*sizeof(word)); memcpy(Shade_temporaire,Shade_Liste[Shade_Actuel].Liste,512*sizeof(word)); - // On calcul les derniŠres couleurs de chaque bloc. + // On calcul les dernières couleurs de chaque bloc. Fin_1=Debut_Bloc_1+Taille_du_bloc-1; Fin_2=Debut_Bloc_2+Taille_du_bloc-1; @@ -366,7 +366,7 @@ void Swap_shade(short Debut_Bloc_1,short Debut_Bloc_2,short Taille_du_bloc) { // Il faut transformer la case Pos_1 en Pos_2: Shade_Liste[Shade_Actuel].Liste[Pos_1]=Shade_temporaire[Pos_2]; - // On gŠre la mise … jour de Pos_2 + // On gère la mise à jour de Pos_2 if (Pos_2==Fin_2) Pos_2=Debut_Bloc_1; else @@ -376,12 +376,12 @@ void Swap_shade(short Debut_Bloc_1,short Debut_Bloc_2,short Taille_du_bloc) else if ((Debut_Bloc_2=Debut_Bloc_1)) { - // Le bloc destination d‚borde dans le bloc source. + // Le bloc destination déborde dans le bloc source. for (Pos_1=Debut_Bloc_2,Pos_2=Debut_Bloc_1;Pos_1<=Fin_1;Pos_1++) { // Il faut transformer la couleur Pos_1 en Pos_2: Shade_Liste[Shade_Actuel].Liste[Pos_1]=Shade_temporaire[Pos_2]; - // On gŠre la mise … jour de Pos_2 + // On gère la mise à jour de Pos_2 if (Pos_2==Fin_1) Pos_2=Debut_Bloc_2; else @@ -393,7 +393,7 @@ void Swap_shade(short Debut_Bloc_1,short Debut_Bloc_2,short Taille_du_bloc) // Le bloc source et le bloc destination sont distincts. for (Pos_1=Debut_Bloc_1,Pos_2=Debut_Bloc_2;Pos_1<=Fin_1;Pos_1++,Pos_2++) { - // On ‚change les cases + // On échange les cases Temp =Shade_Liste[Shade_Actuel].Liste[Pos_1]; Shade_Liste[Shade_Actuel].Liste[Pos_1]=Shade_Liste[Shade_Actuel].Liste[Pos_2]; Shade_Liste[Shade_Actuel].Liste[Pos_2]=Temp; @@ -406,9 +406,9 @@ void Swap_shade(short Debut_Bloc_1,short Debut_Bloc_2,short Taille_du_bloc) int Menu_Shade(void) { - short Bouton_clicke; // Num‚ro du bouton sur lequel l'utilisateur a click‚ - char Chaine[4]; // Chaine d'affichage du nø de shade actif et du Pas - word Ancien_Mouse_X,Ancien_Mouse_X2; // M‚mo. de l'ancienne pos. du curseur + short Bouton_clicke; // Numéro du bouton sur lequel l'utilisateur a clické + char Chaine[4]; // Chaine d'affichage du n° de shade actif et du Pas + word Ancien_Mouse_X,Ancien_Mouse_X2; // Mémo. de l'ancienne pos. du curseur word Ancien_Mouse_Y,Ancien_Mouse_Y2; byte Ancien_Mouse_K,Ancien_Mouse_K2; byte Couleur_temporaire; // Variables de gestion des clicks dans la palette @@ -433,50 +433,50 @@ int Menu_Shade(void) // Ouverture de la fenˆtre du menu Ouvrir_fenetre(310,190,"Shade"); - // D‚claration & trac‚ du bouton de palette + // Déclaration & tracé du bouton de palette Fenetre_Definir_bouton_palette(5,16); // 1 - // D‚claration & trac‚ du scroller de s‚lection du nø de d‚grad‚ + // Déclaration & tracé du scroller de sélection du n° de dégradé Fenetre_Definir_bouton_scroller(192,17,84,8,1,Shade_Actuel); // 2 - // D‚claration & trac‚ de la zone de d‚finition des d‚grad‚s + // Déclaration & tracé de la zone de définition des dégradés Fenetre_Definir_bouton_special(8,127,256,53); // 3 - // D‚claration & trac‚ des boutons de sortie - Fenetre_Definir_bouton_normal(207,17,51,14,"Cancel",0,1,0x0001); // 4 - Fenetre_Definir_bouton_normal(261,17,43,14,"OK" ,0,1,0x001C); // 5 + // Déclaration & tracé des boutons de sortie + Fenetre_Definir_bouton_normal(207,17,51,14,"Cancel",0,1,SDLK_ESCAPE); // 4 + Fenetre_Definir_bouton_normal(261,17,43,14,"OK" ,0,1,SDLK_RETURN); // 5 - // D‚claration & trac‚ des boutons de copie de shade - Fenetre_Definir_bouton_normal(206,87,27,14,"Cpy" ,1,1,0x002E); // 6 - Fenetre_Definir_bouton_normal(234,87,43,14,"Paste" ,1,1,0x0019); // 7 + // Déclaration & tracé des boutons de copie de shade + Fenetre_Definir_bouton_normal(206,87,27,14,"Cpy" ,1,1,SDLK_c); // 6 + Fenetre_Definir_bouton_normal(234,87,43,14,"Paste" ,1,1,SDLK_p); // 7 // On tagge le bloc Tagger_intervalle_palette(0,0); - // Trac‚ d'un cadre creux autour du bloc d‚grad‚ + // Tracé d'un cadre creux autour du bloc dégradé Fenetre_Afficher_cadre_creux(171,26,18,66); Block(Fenetre_Pos_X+(Menu_Facteur_X*172),Fenetre_Pos_Y+(Menu_Facteur_Y*27), Menu_Facteur_X<<4,Menu_Facteur_Y<<6,CM_Noir); - // Trac‚ d'un cadre creux autour de tous les d‚grad‚s + // Tracé d'un cadre creux autour de tous les dégradés Fenetre_Afficher_cadre_creux(223,34,66,50); Shade_Blocs_degrades(); - // Trac‚ d'un cadre autour de la zone de d‚finition de d‚grad‚s + // Tracé d'un cadre autour de la zone de définition de dégradés Fenetre_Afficher_cadre(5,124,262,61); Afficher_tout_le_shade(Premiere_couleur,Derniere_couleur,Select_Debut,Select_Fin); - // D‚claration & trac‚ des boutons d'‚dition de shade - Fenetre_Definir_bouton_normal( 6,107,27,14,"Ins" ,0,1,0x0052); // 8 - Fenetre_Definir_bouton_normal( 38,107,27,14,"Del" ,0,1,0x0053); // 9 - Fenetre_Definir_bouton_normal( 66,107,43,14,"Blank",1,1,0x0030); // 10 - Fenetre_Definir_bouton_normal(110,107,27,14,"Inv" ,1,1,0x0017); // 11 - Fenetre_Definir_bouton_normal(138,107,27,14,"Swp" ,1,1,0x001F); // 12 + // Déclaration & tracé des boutons d'édition de shade + Fenetre_Definir_bouton_normal( 6,107,27,14,"Ins" ,0,1,SDLK_INSERT); // 8 + Fenetre_Definir_bouton_normal( 38,107,27,14,"Del" ,0,1,SDLK_DELETE); // 9 + Fenetre_Definir_bouton_normal( 66,107,43,14,"Blank",1,1,SDLK_b); // 10 + Fenetre_Definir_bouton_normal(110,107,27,14,"Inv" ,1,1,SDLK_i); // 11 + Fenetre_Definir_bouton_normal(138,107,27,14,"Swp" ,1,1,SDLK_s); // 12 - // D‚claration & trac‚ des boutons de taggage + // Déclaration & tracé des boutons de taggage Print_dans_fenetre(268,123,"Disbl"/*"Dsabl"*/,CM_Fonce,CM_Clair); - Fenetre_Definir_bouton_normal(274,133,27,14,"Set" ,0,1,0x003B); // 13 - Fenetre_Definir_bouton_normal(274,148,27,14,"Clr" ,0,1,0x003C); // 14 + Fenetre_Definir_bouton_normal(274,133,27,14,"Set" ,0,1,SDLK_F1); // 13 + Fenetre_Definir_bouton_normal(274,148,27,14,"Clr" ,0,1,SDLK_F2); // 14 - // D‚claration & trac‚ de la zone de saisie du pas + // Déclaration & tracé de la zone de saisie du pas Print_dans_fenetre(272,165,"Step",CM_Fonce,CM_Clair); Fenetre_Definir_bouton_saisie(274,174,3); // 15 Bouton_saisie=Fenetre_Liste_boutons_special; @@ -484,14 +484,14 @@ int Menu_Shade(void) Fenetre_Contenu_bouton_saisie(Bouton_saisie,Chaine); // Bouton Undo - Fenetre_Definir_bouton_normal(170,107,35,14,"Undo",1,1,0x0016); // 16 + Fenetre_Definir_bouton_normal(170,107,35,14,"Undo",1,1,SDLK_u); // 16 // Bouton Clear - Fenetre_Definir_bouton_normal(278,87,27,14,"Clr",0,1,0x000E); // 17 + Fenetre_Definir_bouton_normal(278,87,27,14,"Clr",0,1,SDLK_BACKSPACE); // 17 // Bouton Mode - Fenetre_Definir_bouton_normal(244,107,60,14,"",0,1,0x000F); // 18 + Fenetre_Definir_bouton_normal(244,107,60,14,"",0,1,SDLK_TAB); // 18 - // Affichage du nø de shade actif + // Affichage du n° de shade actif Num2str(Shade_Actuel+1,Chaine,1); Print_dans_fenetre(210,55,Chaine,CM_Noir,CM_Clair); @@ -501,8 +501,8 @@ int Menu_Shade(void) Afficher_curseur(); /*TODO A vérifier :) - Clavier_americain(); // On est oblig‚ de rester en clavier am‚ricain pour - // que l'on puisse d‚caler la couleur s‚lectionn‚e … + Clavier_americain(); // On est obligé de rester en clavier américain pour + // que l'on puisse décaler la couleur sélectionnée à // l'aide des touches "^" et "$" ("[" et "]"). */ do @@ -527,11 +527,11 @@ int Menu_Shade(void) if (!Ancien_Mouse_K) { // On vient de clicker - // On met … jour l'intervalle du Shade + // On met à jour l'intervalle du Shade Premiere_couleur=Derniere_couleur=Couleur_temporaire; // On tagge le bloc Tagger_intervalle_palette(Premiere_couleur,Derniere_couleur); - // Trac‚ du bloc d‚grad‚: + // Tracé du bloc dégradé: Bloc_degrade_dans_fenetre(172,27,Premiere_couleur,Derniere_couleur); } else @@ -554,7 +554,7 @@ int Menu_Shade(void) } } - // On affiche le num‚ro de la couleur s‚lectionn‚e + // On affiche le numéro de la couleur sélectionnée Afficher_couleur_selectionnee(Premiere_couleur,Derniere_couleur); Afficher_curseur(); @@ -564,20 +564,20 @@ int Menu_Shade(void) case 2 : // Gestion du changement de Shade (scroller) Effacer_curseur(); Shade_Actuel=Fenetre_Attribut2; - // Affichade du nø de shade actif + // Affichade du n° de shade actif Num2str(Shade_Actuel+1,Chaine,1); Print_dans_fenetre(210,55,Chaine,CM_Noir,CM_Clair); // Affichade du Pas Num2str(Shade_Liste[Shade_Actuel].Pas,Chaine,3); Print_dans_fenetre(276,176,Chaine,CM_Noir,CM_Clair); - // Trac‚ du bloc d‚grad‚: + // Tracé du bloc dégradé: Afficher_tout_le_shade(Premiere_couleur,Derniere_couleur,Select_Debut,Select_Fin); Afficher_curseur(); // On place le nouveau shade dans le buffer du Undo memcpy(Buffer_Undo,Shade_Liste[Shade_Actuel].Liste,512*sizeof(word)); break; - case 3 : // Gestion de la zone de d‚finition de shades + case 3 : // Gestion de la zone de définition de shades if (((((Mouse_Y-Fenetre_Pos_Y)/Menu_Facteur_Y)-127)%7)<4) if ( (Mouse_X!=Ancien_Mouse_X2) || (Mouse_Y!=Ancien_Mouse_Y2) || (Mouse_K!=Ancien_Mouse_K2) ) { @@ -615,12 +615,12 @@ int Menu_Shade(void) else Temp=Premiere_couleur-Derniere_couleur; - if (Select_Debut==Select_Fin) // Une couleur s‚lectionn‚e + if (Select_Debut==Select_Fin) // Une couleur sélectionnée { if (Fenetre_Attribut1==2) Supprimer_shade(Select_Debut,Select_Debut+Temp); } - else // Un bloc s‚lectionn‚ + else // Un bloc sélectionné { Supprimer_shade(Select_Debut,Select_Fin); @@ -647,7 +647,7 @@ int Menu_Shade(void) } Inserer_shade(Premiere_couleur,Derniere_couleur,Select_Debut); - // On s‚lectionne la position juste aprŠs ce qu'on vient d'ins‚rer + // On sélectionne la position juste après ce qu'on vient d'insérer Select_Debut+=Temp+1; if (Select_Debut>=512) Select_Debut=511; @@ -752,7 +752,7 @@ int Menu_Shade(void) // On place le shade dans le buffer du Undo memcpy(Buffer_Undo,Shade_Liste[Shade_Actuel].Liste,512*sizeof(word)); // Et on le modifie - // On ‚change le bloc avec sa destination + // On échange le bloc avec sa destination if (Select_Debut<=Select_Fin) { Temp=(Case_temporaire+Select_Fin-Select_Debut<512)?Select_Fin+1-Select_Debut:512-Case_temporaire; @@ -763,7 +763,7 @@ int Menu_Shade(void) Temp=(Case_temporaire+Select_Debut-Select_Fin<512)?Select_Debut+1-Select_Fin:512-Case_temporaire; Swap_shade(Select_Fin,Case_temporaire,Temp); } - // On place la s‚lection sur la nouvelle position du bloc + // On place la sélection sur la nouvelle position du bloc Select_Debut=Case_temporaire; Select_Fin=Select_Debut+Temp-1; // Et on raffiche tout @@ -853,11 +853,11 @@ int Menu_Shade(void) if (!Mouse_K) switch (Touche) { - case 0x001A : // D‚caler couleur dans palette vers la gauche - case 0x001B : // D‚caler couleur dans palette vers la droite + case 0x001A : // Décaler couleur dans palette vers la gauche + case 0x001B : // Décaler couleur dans palette vers la droite if (Premiere_couleur==Derniere_couleur) { - if (Touche==0x001A) + if (Touche==SDLK_LEFTBRACKET) { Premiere_couleur--; Derniere_couleur--; @@ -872,7 +872,7 @@ int Menu_Shade(void) Block(Fenetre_Pos_X+(Menu_Facteur_X*172), Fenetre_Pos_Y+(Menu_Facteur_Y*27), Menu_Facteur_X<<4,Menu_Facteur_Y*64,Premiere_couleur); - // On affiche le num‚ro de la couleur s‚lectionn‚e + // On affiche le numéro de la couleur sélectionnée Afficher_couleur_selectionnee(Premiere_couleur,Derniere_couleur); Afficher_curseur(); } @@ -925,7 +925,7 @@ int Menu_Shade(void) } break; - case 0x0029 : // R‚cup‚ration d'une couleur derriŠre le menu + case 0x0029 : // Récupération d'une couleur derrière le menu case 0x0033 : Recuperer_couleur_derriere_fenetre(&Couleur,&Click); if (Click) @@ -933,14 +933,14 @@ int Menu_Shade(void) Effacer_curseur(); Couleur_temporaire=Couleur; - // On met … jour l'intervalle du Shade + // On met à jour l'intervalle du Shade Premiere_couleur=Derniere_couleur=Couleur_temporaire; // On tagge le bloc Tagger_intervalle_palette(Premiere_couleur,Derniere_couleur); - // Trac‚ du bloc d‚grad‚: + // Tracé du bloc dégradé: Bloc_degrade_dans_fenetre(172,27,Premiere_couleur,Derniere_couleur); - // On affiche le num‚ro de la couleur s‚lectionn‚e + // On affiche le numéro de la couleur sélectionnée Afficher_couleur_selectionnee(Premiere_couleur,Derniere_couleur); Afficher_curseur(); @@ -951,7 +951,7 @@ int Menu_Shade(void) /* TODO Clavier_de_depart(); */ - // Actions … r‚aliser en sortant du menu suivant OK ou Cancel + // Actions à réaliser en sortant du menu suivant OK ou Cancel Fermer_fenetre(); free(Buffer_Undo); @@ -965,11 +965,11 @@ int Menu_Shade(void) void Bouton_Shade_Menu(void) { - struct T_Shade * Shade_Liste_Backup; // Anciennes donn‚es des shades - byte Ancien_shade; // Ancien nø de shade actif + struct T_Shade * Shade_Liste_Backup; // Anciennes données des shades + byte Ancien_shade; // Ancien n° de shade actif - // Backup des anciennes donn‚es + // Backup des anciennes données Shade_Liste_Backup=(struct T_Shade *)malloc(sizeof(Shade_Liste)); memcpy(Shade_Liste_Backup,Shade_Liste,sizeof(Shade_Liste)); Ancien_shade=Shade_Actuel; @@ -986,7 +986,7 @@ void Bouton_Shade_Menu(void) Shade_Liste[Shade_Actuel].Mode, Shade_Table_gauche,Shade_Table_droite); - // Si avant de rentrer dans le menu on n'‚tait pas en mode Shade + // Si avant de rentrer dans le menu on n'était pas en mode Shade if (!Shade_Mode) Bouton_Shade_Mode(); // => On y passe (cool!) } @@ -1005,17 +1005,17 @@ void Bouton_Quick_shade_Menu(void) int Temp; char Chaine[4]; byte Step_Backup=Quick_shade_Step; // Backup des - byte Loop_Backup=Quick_shade_Loop; // anciennes donn‚es + byte Loop_Backup=Quick_shade_Loop; // anciennes données Ouvrir_fenetre(142,56,"Quick-shade"); - Fenetre_Definir_bouton_normal(76,36,60,14,"OK",0,1,0x001C); // 1 - Fenetre_Definir_bouton_normal( 6,36,60,14,"Cancel",0,1,0x0001); // 2 - Fenetre_Definir_bouton_normal(76,18,60,14,"",0,1,0x000F); // 3 + Fenetre_Definir_bouton_normal(76,36,60,14,"OK",0,1,SDLK_RETURN); // 1 + Fenetre_Definir_bouton_normal( 6,36,60,14,"Cancel",0,1,SDLK_ESCAPE); // 2 + Fenetre_Definir_bouton_normal(76,18,60,14,"",0,1,SDLK_TAB); // 3 Afficher_mode_du_shade(83,21,Quick_shade_Loop); - // D‚claration & trac‚ de la zone de saisie du pas + // Déclaration & tracé de la zone de saisie du pas Print_dans_fenetre(5,21,"Step",CM_Fonce,CM_Clair); Fenetre_Definir_bouton_saisie(40,19,3); // 4 Num2str(Quick_shade_Step,Chaine,3); @@ -1069,7 +1069,7 @@ void Bouton_Quick_shade_Menu(void) } else // OK { - // Si avant de rentrer dans le menu on n'‚tait pas en mode Quick-Shade + // Si avant de rentrer dans le menu on n'était pas en mode Quick-Shade if (!Quick_shade_Mode) Bouton_Quick_shade_Mode(); // => On y passe (cool!) }