begin process at 2010 02 10 01:53:00
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Souris, Clavier, etc.

 > GETKEYBOARDLANGUAGE : CONNAÎTRE LA LANGUE DU CLAVIER DE L'UTILISATEUR

GETKEYBOARDLANGUAGE : CONNAÎTRE LA LANGUE DU CLAVIER DE L'UTILISATEUR


 Information sur la source

Note :
Aucune note
Catégorie :Souris, Clavier, etc. Classé sous :clavier, langue Niveau :Débutant Date de création :03/04/2004 Date de mise à jour :03/04/2004 21:53:51 Vu / téléchargé :10 900 / 295

Auteur : japee

Ecrire un message privé
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note


 Description

Ces deux fonctions sont utiles pour savoir dans quelle langue est paramétré le clavier de l'utilisateur final de notre programme.
Ce code peut être adapté pour déterminer si un clavier est "azerty" ou "qwerty", mais attention, un clavier "qwerty" n'est pas forcément un clavier anglophone (mais on déborde du cadre que je me suis fixé).
Voilà, c'est aussi une incitation à voyager, ne trouvez-vous pas ?
Quand on pense que dans le monde, quelque part, quelqu'un dont on ne sait même pas que sa langue existe, bouffe du Microsoft, hein, ça rend songeur...
Ce qui est frustrant, c'est que je ne dispose que d'un clavier français standard, et que je n'ai pu tester chaque possibilité.
Bien sûr, j'aurais pu le faire en changeant le paramétrage de mon clavier pour chaque cas, mais je n'ai pas eu ce courage. Je le ferai pourtant, mais plus tard, et ce sera un prétexte pour envoyer un code à ce sujet (s'il n'existe pas déjà sur Delphifr).
Un TEdit et un TButton suffisent pour tester le code, sinon tout est dans le zip, avec quelques commentaires.

Source

  • function HexToInt(Hex: String): Integer;
  • var
  • z: Integer;
  • x: Integer;
  • v: Integer;
  • p: Integer;
  • b: Variant;
  • h: Integer;
  • n: Integer;
  • begin
  • Hex := UpperCase(Hex);
  • x := Length(Hex);
  • v := x;
  • p := 0;
  • n := 0;
  • b := 0;
  • while v >= 1 do
  • begin
  • z := Ord(Hex[v]);
  • case z of
  • 48: h := 0;
  • 49: h := 1;
  • 50: h := 2;
  • 51: h := 3;
  • 52: h := 4;
  • 53: h := 5;
  • 54: h := 6;
  • 55: h := 7;
  • 56: h := 8;
  • 57: h := 9;
  • 65: h := 10;
  • 66: h := 11;
  • 67: h := 12;
  • 68: h := 13;
  • 69: h := 14;
  • 70: h := 15;
  • end;
  • b := exp(p * ln(16)) * h;
  • p := p + 1;
  • v := v - 1;
  • n := n + b;
  • end;
  • Result := n;
  • end;
  • function GetKeyBoardLanguage: String; // Retourne le langage du clavier
  • var
  • P: PChar;
  • begin
  • Result := 'Indéterminé';
  • if GetKeyboardLayoutName(P) then
  • Case HexToInt(P) of
  • $00000436: Result := 'Afrikaans';
  • $0000041c: Result := 'Albanian';
  • $00000401: Result := 'Arabic Saudi Arabia';
  • $00000801: Result := 'Arabic Iraq';
  • $00000c01: Result := 'Arabic Egypt';
  • $00001001: Result := 'Arabic Libya';
  • $00001401: Result := 'Arabic Algeria';
  • $00001801: Result := 'Arabic Morocco';
  • $00001c01: Result := 'Arabic Tunisia';
  • $00002001: Result := 'Arabic Oman';
  • $00002401: Result := 'Arabic Yemen';
  • $00002801: Result := 'Arabic Syria';
  • $00002c01: Result := 'Arabic Jordan';
  • $00003001: Result := 'Arabic Lebanon';
  • $00003401: Result := 'Arabic Kuwait';
  • $00003801: Result := 'Arabic UAE';
  • $00003c01: Result := 'Arabic Bahrain';
  • $00004001: Result := 'Arabic Qatar';
  • $0000042b: Result := 'Armenian';
  • $0000042c: Result := 'Azeri Latin';
  • $0000082c: Result := 'Azeri Cyrillic';
  • $0000042d: Result := 'Basque';
  • $00000423: Result := 'Belarusian';
  • $00000402: Result := 'Bulgarian';
  • $00000403: Result := 'Catalan';
  • $00000404: Result := 'Chinese Taiwan';
  • $00000804: Result := 'Chinese PRC';
  • $00000c04: Result := 'Chinese Hong Kong';
  • $00001004: Result := 'Chinese Singapore';
  • $00001404: Result := 'Chinese Macau';
  • $0000041a: Result := 'Croatian';
  • $00000405: Result := 'Czech';
  • $00000406: Result := 'Danish';
  • $00000465: Result := 'Divehi';
  • $00000413: Result := 'Dutch Standard';
  • $00000813: Result := 'Dutch Belgian';
  • $00000409: Result := 'English United States';
  • $00000809: Result := 'English United Kingdom';
  • $00000c09: Result := 'English Australian';
  • $00001009: Result := 'English Canadian';
  • $00001409: Result := 'English New Zealand';
  • $00001809: Result := 'English Ireland';
  • $00001c09: Result := 'English South Africa';
  • $00002009: Result := 'English Jamaica';
  • $00002409: Result := 'English Caribbean';
  • $00002809: Result := 'English Belize';
  • $00002c09: Result := 'English Trinidad';
  • $00003009: Result := 'English Zimbabwe';
  • $00003409: Result := 'English Philippines';
  • $00000425: Result := 'Estonian';
  • $00000438: Result := 'Faeroese';
  • $00000429: Result := 'Farsi';
  • $0000040b: Result := 'Finnish';
  • $0000040c: Result := 'French Standard';
  • $0000080c: Result := 'French Belgian';
  • $00000c0c: Result := 'French Canadian';
  • $0000100c: Result := 'French Swiss';
  • $0000140c: Result := 'French Luxembourg';
  • $0000180c: Result := 'French Monaco';
  • $00000437: Result := 'Georgian';
  • $00000456: Result := 'Galician';
  • $00000407: Result := 'German Standard';
  • $00000807: Result := 'German Swiss';
  • $00000c07: Result := 'German Austrian';
  • $00001007: Result := 'German Luxembourg';
  • $00001407: Result := 'German Liechtenstein';
  • $00000408: Result := 'Greek';
  • $00000447: Result := 'Gujarati';
  • $0000040d: Result := 'Hebrew';
  • $00000439: Result := 'Hindi';
  • $0000040e: Result := 'Hungarian';
  • $0000040f: Result := 'Icelandic';
  • $00000421: Result := 'Indonesian';
  • $00000410: Result := 'Italian Standard';
  • $00000810: Result := 'Italian Swiss';
  • $00000411: Result := 'Japanese';
  • $0000044b: Result := 'Kannada';
  • $0000043f: Result := 'Kazakh';
  • $00000457: Result := 'Konkani';
  • $00000412: Result := 'Korean';
  • $00000440: Result := 'Kyrgyz';
  • $00000426: Result := 'Latvian';
  • $00000427: Result := 'Lithuanian';
  • $0000042f: Result := 'Macedonian';
  • $0000043e: Result := 'Malay Malaysia';
  • $0000083e: Result := 'Malay Brunei Darussalam';
  • $0000044e: Result := 'Marathi';
  • $00000450: Result := 'Mongolian';
  • $00000414: Result := 'Norwegian Bokmal';
  • $00000814: Result := 'Norwegian Nynorsk';
  • $00000415: Result := 'Polish';
  • $00000416: Result := 'Portuguese Brazilian';
  • $00000816: Result := 'Portuguese Standard';
  • $00000446: Result := 'Punjabi';
  • $00000418: Result := 'Romanian';
  • $00000419: Result := 'Russian';
  • $0000044f: Result := 'Sanskrit';
  • $0000081a: Result := 'Serbian Latin';
  • $00000c1a: Result := 'Serbian Cyrillic';
  • $0000041b: Result := 'Slovak';
  • $00000424: Result := 'Slovenian';
  • $0000040a: Result := 'Spanish Traditional Sort';
  • $0000080a: Result := 'Spanish Mexican';
  • $00000c0a: Result := 'Spanish Modern Sort';
  • $0000100a: Result := 'Spanish Guatemala';
  • $0000140a: Result := 'Spanish Costa_Rica';
  • $0000180a: Result := 'Spanish Panama';
  • $00001c0a: Result := 'Spanish Dominican Republic';
  • $0000200a: Result := 'Spanish Venezuela';
  • $0000240a: Result := 'Spanish Colombia';
  • $0000280a: Result := 'Spanish Peru';
  • $00002c0a: Result := 'Spanish Argentina';
  • $0000300a: Result := 'Spanish Ecuador';
  • $0000340a: Result := 'Spanish Chile';
  • $0000380a: Result := 'Spanish Uruguay';
  • $00003c0a: Result := 'Spanish Paraguay';
  • $0000400a: Result := 'Spanish Bolivia';
  • $0000440a: Result := 'Spanish El Salvador';
  • $0000480a: Result := 'Spanish Honduras';
  • $00004c0a: Result := 'Spanish Nicaragua';
  • $0000500a: Result := 'Spanish Puerto Rico';
  • $00000441: Result := 'Swahili';
  • $0000041d: Result := 'Swedish';
  • $0000081d: Result := 'Swedish Finland';
  • $0000045a: Result := 'Syriac';
  • $00000449: Result := 'Tamil';
  • $00000444: Result := 'Tatar';
  • $0000044a: Result := 'Telugu';
  • $0000041e: Result := 'Thai';
  • $0000041f: Result := 'Turkish';
  • $00000422: Result := 'Ukrainian';
  • $00000420: Result := 'Urdu';
  • $00000443: Result := 'Uzbek Latin';
  • $00000843: Result := 'Uzbek Cyrillic';
  • $0000042a: Result := 'Vietnamese';
  • end;
  • end;
  • procedure TForm1.Button1Click(Sender: TObject);
  • begin
  • Edit1.Text := GetKeyBoardLanguage;
  • end;
function HexToInt(Hex: String): Integer;
var
  z: Integer;
  x: Integer;
  v: Integer;
  p: Integer;
  b: Variant;
  h: Integer;
  n: Integer;
begin
  Hex := UpperCase(Hex);
  x := Length(Hex);
  v := x;
  p := 0;
  n := 0;
  b := 0;
  while v >= 1 do
  begin
    z := Ord(Hex[v]);
    case z of
      48: h := 0;
      49: h := 1;
      50: h := 2;
      51: h := 3;
      52: h := 4;
      53: h := 5;
      54: h := 6;
      55: h := 7;
      56: h := 8;
      57: h := 9;
      65: h := 10;
      66: h := 11;
      67: h := 12;
      68: h := 13;
      69: h := 14;
      70: h := 15;
    end;
    b := exp(p * ln(16)) * h;
    p := p + 1;               
    v := v - 1;
    n := n + b;
  end;
  Result := n;
end;

function GetKeyBoardLanguage: String;   // Retourne le langage du clavier
var
  P: PChar;
begin
  Result := 'Indéterminé';
  if GetKeyboardLayoutName(P) then                    
  Case HexToInt(P) of
    $00000436: Result := 'Afrikaans';
    $0000041c: Result := 'Albanian';
    $00000401: Result := 'Arabic Saudi Arabia';
    $00000801: Result := 'Arabic Iraq';
    $00000c01: Result := 'Arabic Egypt';
    $00001001: Result := 'Arabic Libya';
    $00001401: Result := 'Arabic Algeria';
    $00001801: Result := 'Arabic Morocco';
    $00001c01: Result := 'Arabic Tunisia';
    $00002001: Result := 'Arabic Oman';
    $00002401: Result := 'Arabic Yemen';
    $00002801: Result := 'Arabic Syria';
    $00002c01: Result := 'Arabic Jordan';
    $00003001: Result := 'Arabic Lebanon';
    $00003401: Result := 'Arabic Kuwait';
    $00003801: Result := 'Arabic UAE';
    $00003c01: Result := 'Arabic Bahrain';
    $00004001: Result := 'Arabic Qatar';
    $0000042b: Result := 'Armenian';
    $0000042c: Result := 'Azeri Latin';
    $0000082c: Result := 'Azeri Cyrillic';
    $0000042d: Result := 'Basque';
    $00000423: Result := 'Belarusian';
    $00000402: Result := 'Bulgarian';
    $00000403: Result := 'Catalan';
    $00000404: Result := 'Chinese Taiwan';
    $00000804: Result := 'Chinese PRC';
    $00000c04: Result := 'Chinese Hong Kong';
    $00001004: Result := 'Chinese Singapore';
    $00001404: Result := 'Chinese Macau';
    $0000041a: Result := 'Croatian';
    $00000405: Result := 'Czech';
    $00000406: Result := 'Danish';
    $00000465: Result := 'Divehi';
    $00000413: Result := 'Dutch Standard';
    $00000813: Result := 'Dutch Belgian';
    $00000409: Result := 'English United States';
    $00000809: Result := 'English United Kingdom';
    $00000c09: Result := 'English Australian';
    $00001009: Result := 'English Canadian';
    $00001409: Result := 'English New Zealand';
    $00001809: Result := 'English Ireland';
    $00001c09: Result := 'English South Africa';
    $00002009: Result := 'English Jamaica';
    $00002409: Result := 'English Caribbean';
    $00002809: Result := 'English Belize';
    $00002c09: Result := 'English Trinidad';
    $00003009: Result := 'English Zimbabwe';
    $00003409: Result := 'English Philippines';
    $00000425: Result := 'Estonian';
    $00000438: Result := 'Faeroese';
    $00000429: Result := 'Farsi';
    $0000040b: Result := 'Finnish';
    $0000040c: Result := 'French Standard';
    $0000080c: Result := 'French Belgian';
    $00000c0c: Result := 'French Canadian';
    $0000100c: Result := 'French Swiss';
    $0000140c: Result := 'French Luxembourg';
    $0000180c: Result := 'French Monaco';
    $00000437: Result := 'Georgian';
    $00000456: Result := 'Galician';
    $00000407: Result := 'German Standard';
    $00000807: Result := 'German Swiss';
    $00000c07: Result := 'German Austrian';
    $00001007: Result := 'German Luxembourg';
    $00001407: Result := 'German Liechtenstein';
    $00000408: Result := 'Greek';
    $00000447: Result := 'Gujarati';
    $0000040d: Result := 'Hebrew';
    $00000439: Result := 'Hindi';
    $0000040e: Result := 'Hungarian';
    $0000040f: Result := 'Icelandic';
    $00000421: Result := 'Indonesian';
    $00000410: Result := 'Italian Standard';
    $00000810: Result := 'Italian Swiss';
    $00000411: Result := 'Japanese';
    $0000044b: Result := 'Kannada';
    $0000043f: Result := 'Kazakh';
    $00000457: Result := 'Konkani';
    $00000412: Result := 'Korean';
    $00000440: Result := 'Kyrgyz';
    $00000426: Result := 'Latvian';
    $00000427: Result := 'Lithuanian';
    $0000042f: Result := 'Macedonian';
    $0000043e: Result := 'Malay Malaysia';
    $0000083e: Result := 'Malay Brunei Darussalam';
    $0000044e: Result := 'Marathi';
    $00000450: Result := 'Mongolian';
    $00000414: Result := 'Norwegian Bokmal';
    $00000814: Result := 'Norwegian Nynorsk';
    $00000415: Result := 'Polish';
    $00000416: Result := 'Portuguese Brazilian';
    $00000816: Result := 'Portuguese Standard';
    $00000446: Result := 'Punjabi';
    $00000418: Result := 'Romanian';
    $00000419: Result := 'Russian';
    $0000044f: Result := 'Sanskrit';
    $0000081a: Result := 'Serbian Latin';
    $00000c1a: Result := 'Serbian Cyrillic';
    $0000041b: Result := 'Slovak';
    $00000424: Result := 'Slovenian';
    $0000040a: Result := 'Spanish Traditional Sort';
    $0000080a: Result := 'Spanish Mexican';
    $00000c0a: Result := 'Spanish Modern Sort';
    $0000100a: Result := 'Spanish Guatemala';
    $0000140a: Result := 'Spanish Costa_Rica';
    $0000180a: Result := 'Spanish Panama';
    $00001c0a: Result := 'Spanish Dominican Republic';
    $0000200a: Result := 'Spanish Venezuela';
    $0000240a: Result := 'Spanish Colombia';
    $0000280a: Result := 'Spanish Peru';
    $00002c0a: Result := 'Spanish Argentina';
    $0000300a: Result := 'Spanish Ecuador';
    $0000340a: Result := 'Spanish Chile';
    $0000380a: Result := 'Spanish Uruguay';
    $00003c0a: Result := 'Spanish Paraguay';
    $0000400a: Result := 'Spanish Bolivia';
    $0000440a: Result := 'Spanish El Salvador';
    $0000480a: Result := 'Spanish Honduras';
    $00004c0a: Result := 'Spanish Nicaragua';
    $0000500a: Result := 'Spanish Puerto Rico';
    $00000441: Result := 'Swahili';
    $0000041d: Result := 'Swedish';
    $0000081d: Result := 'Swedish Finland';
    $0000045a: Result := 'Syriac';
    $00000449: Result := 'Tamil';
    $00000444: Result := 'Tatar';
    $0000044a: Result := 'Telugu';
    $0000041e: Result := 'Thai';
    $0000041f: Result := 'Turkish';
    $00000422: Result := 'Ukrainian';
    $00000420: Result := 'Urdu';
    $00000443: Result := 'Uzbek Latin';
    $00000843: Result := 'Uzbek Cyrillic';
    $0000042a: Result := 'Vietnamese';
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.Text := GetKeyBoardLanguage;
end;

 Conclusion

Compilable dès Delphi 4.
Ceux qui ont un clavier autre que Français standard pourraient-ils nous confirmer que le code fonctionne correctement ?
Soit ici, soit en me passant un message sur le site.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture DEPLACER LES ITEMS D'UNE LISTBOX VERS UNE AUTRE PAR DRAG AND...
Source avec Zip Source avec une capture DÉMINEUR UTILISANT UNE TDRAWGRID ET AVEC LEQUEL ON PEUT TRIC...
Source avec Zip Source avec une capture SIGNIFICATION DES CODES D'ERREUR DE L'API WIN32 - UTILISATIO...
Source avec Zip Source avec une capture CONVERSION LITTÉRALE D'UN NOMBRE ENTIER OU FLOTTANT
Source avec Zip Source avec une capture TPULSEBUTTON - RÉPÉTITION PROGRESSIVE D'UN EVENT PENDANT ONK...

 Sources de la même categorie

Source avec Zip Source avec une capture DACTYLOGRAPHE par Bacterius
Source avec Zip Source avec une capture JETTER LES MESSAGES DANS "MESSAGE QUEUE" APRÈS UN LONG CODE par MAURICIO
Source avec Zip OBLIGER VISTA À CONFIGURER LE CLAVIER EN MINUSCULES par THYNOORD
Source avec Zip Source avec une capture NI CLIC NI TOUCHE par barbichette
Source avec Zip Source avec une capture PROGRAMME D'EDITION D'UNE PALETTE DE COULEURS par lgrfranck

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture UTILISATION DE TLANGUAGES par diglas
Source avec Zip Source avec une capture DACTYLOGRAPHE par Bacterius
Source avec Zip Source avec une capture GESTION DU CLAVIER G15 DE LOGITECH par delphitness
Source avec Zip Source avec une capture KEYMOUSE PARAMÉTRAGE, OU MODIFIER LES PARAMÈTRES DE LA SOURI... par Bacterius
Source avec Zip Source avec une capture CHANGER LA LANGUE DU CLAVIER PAR PROGRAMMATION par aymenk

Commentaires et avis

Commentaire de Delphiprog le 03/04/2004 23:04:09 administrateur CS

Quel courage d'avoir tapé tout cela et d'avoir réécrit une fonction convertissant une chaine composée de caractères en son équivalent décimal alors que la fonction HexToBin existe depuis Delphi 1 (à vérifier).

Pour connaitre les langues installées ou utilisées, le code source suivant s'appuie sur les API fournies par Windows : http://www.swissdelphicenter.ch/torry/showcode.php?id=1471

En plus, il permet de basculer la langue du clavier à partir d'une application Delphi dis donc !
Le tout en si peu de code que tu vas regretter d'avoir loupé des heures de sommeil. Déjà que le week-end dernier on a dormi une heure de moins...;o)

Commentaire de japee le 04/04/2004 00:07:00 administrateur CS

Oh la la... je me sens pas bien...
Je vérifie tout ça, Delphiprog, et je réagirai plus tard >:(
Sinon, les commentaires dans le zip peuvent toujours être utiles... j'espère... à titre documentaire... sob (sanglots)
Je me suis bien amusé quand même, quoi qu'il en soit :)
Pfff ce décalage horaire, à qui le dis-tu ;)

Commentaire de ville007 le 10/11/2005 22:32:00

c bon
mais nous cherchons comment basculer d'une langue à une autre sans passer par le clavier (exp si j'ai 02 edit l'un je vais ecrir en arabe et l'autre en france ) j'aimrai bien quand je passe à edit en arabe le clavien se mais derectement en arabe et si je passe à edit 2 le clavier passe en francais et vis vi
rca

Commentaire de ottolicos le 23/07/2007 19:28:24

bonjour je veux savoir si tous ces codes existe déjà en php. Puisque j'ai les mêmes problems mais avec php.
Merci d'avance.

Commentaire de salah79 le 26/03/2009 12:52:39

j'ai besoin d'un petit exemple sur la langue arab en delphi

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Edit et la langue clavier [ par ahmed12 ] Salut tout le mondeje voudrais savoir comment je peux changer la langue de clavier quand je positionne sur un edit pour povoire écrire en L'angler Question sur un clavier visuel [ par urusei ] Bonjour, j'en suis au travail à développer un clavier visuel pour les écran tactiles que l'on trouve dans le points de vente à gr Changer la langue du clavier [ par JulioDelphi ] Hello,je désire changer la langue du clavier, mais pas seulement dans mon aplication Delphi, mais pour le PC (meme apres la fermeture de mon appli)j'a Lancer une application dans une langue autre que windows [ par furax13 ] bonjour,j'ai une application delphi qui peut être activée soit en français, soit en anglais soit en allemand.J'ai un fichier monAppli.e MessageDlg : boutons en anglais [ par TkILLA ] Bonjour,je développe sous delphi 2005, version anglaise (l'IDE est en anglais). Je voudrais afficher une boite de dialogue 'voulez-vous enregistr Problème langue des raccourcis claviers [ par bentheater ] Bonjour à tousJe travaille sur la gestion des raccourcis claviers de mon softet j'ai un problème de langue. En effet, les rac Emulation clavier ou souris avec gamepad sous VB6 [ par Ericg60 ] Bonjour a tous voila je suis débutant et je voudrais savoir comment faire pour se servir d'un gamepadpour pouvoir se déplacer dans un menu e langue arabe avec delph [ par lahreche ] Empêcher la saisie de lettres venant du clavier sur un TMemo [ par ewertheimer ] Bonjour je voulais savoir si il etait possible d'enpecher la saisie de lettre venant du clavier sur un TMemo mais l'autoriser venant d'une commande Me ecrire une application en d'autre langue. [ par katib ] salut, comment on peut réaliser une application en d'autre langue...? exemple je veut ecrire une application en langue arabe, (Fichier Edition Format,


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,139 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales