IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

char to ALT code (!= char to ascii)


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 25
    Par défaut char to ALT code (!= char to ascii)
    Bonjour,

    Je suis face a une problème existentiel !!!

    Bref je cherche a écrire un code qui me retourne le ALT code d'un char (c'est pour ensuite utilisé ça avec la class Robot pour pouvoir taper n importe quel texte même les caractère spéciaux.

    Le ALT code est la série de chiffre a taper en maintenant ALT enfoncé, par exemple pour taper ♥ il faut faire ALT+3 pour faire un ♦ il faut faire ALT+4
    plus d'info ici http://fr.wikipedia.org/wiki/Alt_codes

    Pour beaucoup de char on a le ATL code qui est égal au code ASCII donc avec une conversion en int on s'en sort un peu mais sur certains caractères ça n'est pas le même par exemple avec ♥ et ♦.

    un peu de code (je ne l'ai pas mis dans une balise CODE car les caractère spéciaux ne passent pas):
    (int)'>' // = 62 et ALT code = 62
    (int)'♥' // = 9829 mais ALT code = 3
    (int)'♦' // = 9830 mais ALT code = 4

    bref je cher un moyen à partir du char de trouver le ALT code le tout en java bien sur

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Il n'y a que 256 alt codes, donc il y a des millions de caractères qui n'en ont pas.

    Pour ceux qui en ont, il y a plein de listes trouvables avec Google (et puis il suffit d'essayer, il n'y en a que 256.)

    Pour rappel, les alt codes de Windows sont pour Windows et pas ailleurs. Donc bon, dans une appli Java... -_-°
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    de plus sur le lien que tu mentionne il est bien écrit
    Les numéros utilisés avec la touche Alt pour générer un caractère représentent le numéro décimal de l'entité (se référer a un tableau ascii pour la correspondance)
    Il s'agit bien donc des codes ascii correspondant.

    Il serait peut-être plus pratique pour entrer du texte dans des zones de mette ce texte dans le presse papier et de simuler un ctrl-v?

  4. #4
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 25
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Il n'y a que 256 alt codes, donc il y a des millions de caractères qui n'en ont pas.
    ...
    Pour rappel, les alt codes de Windows sont pour Windows et pas ailleurs. Donc bon, dans une appli Java...
    je sais je veux juste être capable de simuler ceux que l'on peux taper au clavier en utilisant la touche ALT les autres je m'en fiche (yen a un peu plus que 256, y'a ceux avec le 0 devant).
    Pour le coté windows je suis au courant et je sais que cette partie ne sera pas portable mais ca n'est pas mon but.

    Citation Envoyé par tchize_ Voir le message
    de plus sur le lien que tu mentionne il est bien écrit
    Il s'agit bien donc des codes ascii correspondant.
    pas pour tous en l'occurence pour ♦ (ALT+4) le code ASCII 4 c'est EOT (End of Transmission)
    un exemple de table des alt code: http://www.tedmontgomery.com/tutorial/ALTchrc-a.html

    Citation Envoyé par tchize_ Voir le message
    Il serait peut-être plus pratique pour entrer du texte dans des zones de mette ce texte dans le presse papier et de simuler un ctrl-v?
    Le but est de simuler une frappe au clavier (pour les caractère classique je les tapes directement mais pour les spéciaux faut passer par ALT + le code) Donc les solutions de contournement je cherche à les éviter.

    Je sens que je vais devoir les lister tous dans le code mais ca c'est beaucoup moins fun que de les calculer
    surtout qu’apparemment les ALT code après 256 ca marche encore ca fait des trucs donc je sais même pas ou ca s’arrête.

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    pour les charactères >32 ça suit le Code page 437

    <32 c'est considéré par ce code page en java comme du controle -> pas géré.
    http://en.wikipedia.org/wiki/Code_page_437

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    		byte[] characters = new byte[256];
    		for (int i=0; i<256;i++)
    			characters[i]=(byte)(i&0XFF);
    		ByteArrayInputStream input = new ByteArrayInputStream(characters);
    		Reader r = new InputStreamReader(input,"cp437");
    		char[] c = new char[1];
    		for (int i  = 0; i< 256; i++) {
    			r.read(c);
    			System.out.print(i+"->");
    			System.out.println(c[0]);
    		}
    Code x : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    0->
    1->
    2->
    3->
    4->
    5->
    6->
    7->
    8->
    9->	
    10->
    
    11->
    12->
    13->
    14->
    15->
    16->
    17->
    18->
    19->
    20->
    21->
    22->
    23->
    24->
    25->
    26->
    27->
    28->
    29->
    30->
    31->
    32-> 
    33->!
    34->"
    35->#
    36->$
    37->%
    38->&
    39->'
    40->(
    41->)
    42->*
    43->+
    44->,
    45->-
    46->.
    47->/
    48->0
    49->1
    50->2
    51->3
    52->4
    53->5
    54->6
    55->7
    56->8
    57->9
    58->:
    59->;
    60-><
    61->=
    62->>
    63->?
    64->@
    65->A
    66->B
    67->C
    68->D
    69->E
    70->F
    71->G
    72->H
    73->I
    74->J
    75->K
    76->L
    77->M
    78->N
    79->O
    80->P
    81->Q
    82->R
    83->S
    84->T
    85->U
    86->V
    87->W
    88->X
    89->Y
    90->Z
    91->[
    92->\
    93->]
    94->^
    95->_
    96->`
    97->a
    98->b
    99->c
    100->d
    101->e
    102->f
    103->g
    104->h
    105->i
    106->j
    107->k
    108->l
    109->m
    110->n
    111->o
    112->p
    113->q
    114->r
    115->s
    116->t
    117->u
    118->v
    119->w
    120->x
    121->y
    122->z
    123->{
    124->|
    125->}
    126->~
    127->
    128->Ç
    129->ü
    130->é
    131->â
    132->ä
    133->à
    134->å
    135->ç
    136->ê
    137->ë
    138->è
    139->ï
    140->î
    141->ì
    142->Ä
    143->Å
    144->É
    145->æ
    146->Æ
    147->ô
    148->ö
    149->ò
    150->û
    151->ù
    152->ÿ
    153->Ö
    154->Ü
    155->¢
    156->£
    157->¥
    158->₧
    159->ƒ
    160->á
    161->í
    162->ó
    163->ú
    164->ñ
    165->Ñ
    166->ª
    167->º
    168->¿
    169->⌐
    170->¬
    171->½
    172->¼
    173->¡
    174->«
    175->»
    176->░
    177->▒
    178->▓
    179->│
    180->┤
    181->╡
    182->╢
    183->╖
    184->╕
    185->╣
    186->║
    187->╗
    188->╝
    189->╜
    190->╛
    191->┐
    192->└
    193->┴
    194->┬
    195->├
    196->─
    197->┼
    198->╞
    199->╟
    200->╚
    201->╔
    202->╩
    203->╦
    204->╠
    205->═
    206->╬
    207->╧
    208->╨
    209->╤
    210->╥
    211->╙
    212->╘
    213->╒
    214->╓
    215->╫
    216->╪
    217->┘
    218->┌
    219->█
    220->▄
    221->▌
    222->▐
    223->▀
    224->α
    225->ß
    226->Γ
    227->π
    228->Σ
    229->σ
    230->µ
    231->τ
    232->Φ
    233->Θ
    234->Ω
    235->δ
    236->∞
    237->φ
    238->ε
    239->∩
    240->≡
    241->±
    242->≥
    243->≤
    244->⌠
    245->⌡
    246->÷
    247->≈
    248->°
    249->∙
    250->·
    251->√
    252->ⁿ
    253->²
    254->■
    255->*

    Citation Envoyé par thelvin Voir le message
    Il n'y a que 256 alt codes, donc il y a des millions de caractères qui n'en ont pas.
    Pas des millions, y en a pas autant que ça dans l'unicode Si je compte les plan attribués et que j'ignore les trous dans les plans, j'en suis à ~ 150.000

  6. #6
    Membre averti
    Inscrit en
    Juillet 2005
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 25
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    pour les charactères >32 ça suit le Code page 437

    <32 c'est considéré par ce code page en java comme du controle -> pas géré. ...
    merci pour tes réponses.
    Donc pour les > 32 on arrive a avoir le char à partir du code, effectivement il sont remplacer par une table graphique comme dit sur ce lien
    il y a aussi le 127 (DEL) qui est remplacé par ⌂.

    Il y a peut-être moyen de mettre l' InputStreamReader directement sur la table graphique?
    Mais je sais pas comment il s'appelle le charset ni si java le gère ...

    Ton code donne le char a partir de l'int moi je voudrai faire l'inverse a partir du char trouver le code.
    Au pire je pourrai initialiser une map et après je vais taper dedans dans laquelle je pourrai rajouter manuellement les 32 premier et le 127.

    Après il y a encore les ALT code qui commence par 0 j'arrive pas à trouver de quelle table ils sont ils sont issus?

    bon faut que je retourne bosser je chercherai se soir ...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Conversion ascii etendu en alt-code?
    Par andromeda dans le forum Langage
    Réponses: 3
    Dernier message: 06/11/2013, 12h44
  2. Réponses: 4
    Dernier message: 27/04/2011, 09h53
  3. const char* et unsigned const char*
    Par vandamme dans le forum C
    Réponses: 2
    Dernier message: 18/11/2009, 00h16
  4. const char et const unsigned char
    Par moon93 dans le forum C
    Réponses: 8
    Dernier message: 04/08/2006, 15h59
  5. Réponses: 6
    Dernier message: 24/03/2003, 17h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo