| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/01/2008 10:48:05
|
cv
Moderador
![[Avatar]](/images/avatar/210f760a89db30aa72ca258a3483cc7f.jpg)
Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline
|
Tou fazendo umas adaptacoes no Selenium (pra que ele possa fazer upload de arquivos em browsers que nao o Firefox), e esbarrei num probleminha meio chato: na java.awt.Robot tem um metodo keyPress(int keycode) que recebe aqueles KeyEvent.VK_*.
O problema eh que eu quero digitar uma String inteira, com o nome do arquivo. Eu teria que transformar algo como "C:\foo.jpg" em:
...o que parece relativamente simples, ate vc ver que nao tem nada na API que faca isso (e o mais proximo, Character.getNumericValue e equivalentes, nao te dao um keycode pra maioria das coisas nao-alfabeticas, como ':' e '.').
Fiquei travado nisso. Alguem tem alguma ideia?
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/01/2008 11:13:06
|
cv
Moderador
![[Avatar]](/images/avatar/210f760a89db30aa72ca258a3483cc7f.jpg)
Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline
|
O Danilo Sato eh um genio:
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/01/2008 11:15:57
|
Foxlol
Virtual Machine Man
![[Avatar]](/images/avatar/8ca696ca160520b1cf5a569b4be525e8.jpg)
Membro desde: 02/05/2006 10:17:47
Mensagens: 646
Localização: São José do Rio Pardo - SP
Offline
|
Uia o.O
This message was edited 1 time. Last update was at 14/01/2008 11:17:25
|
Sun Certified Java Programmer
Sun Certified Web Component Developer
Java EE 5 Business Component Developer Oracle Certified Professional |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/01/2008 11:21:26
|
cv
Moderador
![[Avatar]](/images/avatar/210f760a89db30aa72ca258a3483cc7f.jpg)
Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline
|
Er, retiro o que eu disse. O Danilo ainda eh esperto - bem mais que a galera da Sun, pelo jeito. A AWTKeyStroke nao faz bem isso que eu quero:
Voila, VK_UNDEFINED. Maldicao!
Se alguem tiver outra ideia, fico devendo uma breja.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/01/2008 12:01:14
|
cassio
GUJ Master
![[Avatar]](/images/avatar/8ae7398026ed8f2172aefd6cbc856bc8.jpg)
Membro desde: 19/06/2006 08:25:28
Mensagens: 1336
Localização: Caieiras-SP
Offline
|
api wrote: WARNING: Aside from those keys that are defined by the Java language (VK_ENTER, VK_BACK_SPACE, and VK_TAB), do not rely on the values of the VK_ constants. Sun reserves the right to change these values as needed to accomodate a wider range of keyboards in the future.
api wrote: static int VK_0 VK_0 thru VK_9 are the same as ASCII '0' thru '9' (0x30 - 0x39)
api wrote: static int VK_A VK_A thru VK_Z are the same as ASCII 'A' thru 'Z' (0x41 - 0x5A)
http://java.sun.com/j2se/1.4.2/docs/api/java/awt/event/KeyEvent.html#VK_T
This message was edited 3 times. Last update was at 14/01/2008 12:04:31
|
Cássio Marques
Blog
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/01/2008 12:10:22
|
cassio
GUJ Master
![[Avatar]](/images/avatar/8ae7398026ed8f2172aefd6cbc856bc8.jpg)
Membro desde: 19/06/2006 08:25:28
Mensagens: 1336
Localização: Caieiras-SP
Offline
|
cv wrote:
Character.getNumericValue e equivalentes, nao te dao um keycode pra maioria das coisas nao-alfabeticas, como ':' e '.').
Também não sei se a sequência é seguida para os caracteres não-alfabéticos, mas não dá pra criar uma classe utilitária com um bloco estático mais ou menos assim?
E ter nessa classe um método estático do tipo
Talvez eu não tenha entendido direito seu problema...
|
Cássio Marques
Blog
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/01/2008 12:26:21
|
cv
Moderador
![[Avatar]](/images/avatar/210f760a89db30aa72ca258a3483cc7f.jpg)
Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline
|
...foi o que eu acabei fazendo, mas mesmo assim dei de cara com outra parede:
resulta em:
This message was edited 1 time. Last update was at 14/01/2008 12:26:32
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/01/2008 13:05:35
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Pelo que imagino, você teria de fazer algo parecido com o seguinte:
keyPress (VK_SHIFT)
keyPress(VK_SEMICOLON)
keyRelease(VK_SEMICOLON)
keyRelease(VK_SHIFT)
já que a tecla ":" não existe no teclado (só ";" e você precisa usar o Shift para acessar o ":". )
Estou supondo que você esteja usando o teclado americano; não sei se o inglês é tão diferente assim do americano.
(Eu sei que o teclado francês é "AZERTY" em vez de "QWERTY" e outras coisas mais estranhas).
(O teclado ABNT ou brasileiro tem um monte de teclas fora do lugar, mas o ":" continua sobre o ";". )
EDIT - Olhei e é sutilmente diferente quanto a alguns caracteres.
http://en.wikipedia.org/wiki/Keyboard_layout#UK_and_Ireland
This message was edited 2 times. Last update was at 14/01/2008 13:21:18
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/01/2008 13:10:45
|
davidbuzatto
Moderador
![[Avatar]](/images/avatar/7ba6d33c373fea56b7258003b16c68e5.jpg)
Membro desde: 07/08/2004 23:47:57
Mensagens: 4013
Localização: Vargem Grande do Sul - SP
Offline
|
Realmente, existem algumas dessas barreiras... Alguns caracteres de pontuação ficam em intervalos diferentes...
O dois pontos e o ponto e vírgula ficam "455" unidades a mais que o código do caracter... Tentei verificar com mais caracteres, mas nada...
Por exemplo, o VK_COLON é ( ( ( int ) ':' ) + 455 ) == 513
Fiquei uma meia hora tentando pensar em algo, mas não tive nenhum idéia diferente das que vocês já postaram...
This message was edited 1 time. Last update was at 14/01/2008 13:11:55
|
Seja educado. Agradeça quem te ajudou. Não custa nada.
Dúvidas de Java? Utilize o fórum! Não respondo via MP.
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Fowler)
"A vida é um escândalo, e no final dá sempre errado. O que humaniza o homem é o fracasso."
http://davidbuzatto.com.br | GitHub | uHunt | CV Lattes | Last.fm |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/01/2008 13:33:05
|
davidbuzatto
Moderador
![[Avatar]](/images/avatar/7ba6d33c373fea56b7258003b16c68e5.jpg)
Membro desde: 07/08/2004 23:47:57
Mensagens: 4013
Localização: Vargem Grande do Sul - SP
Offline
|
O mais perto que cheguei...
Mas faltam as pontuações, etc...
This message was edited 1 time. Last update was at 14/01/2008 13:36:19
|
Seja educado. Agradeça quem te ajudou. Não custa nada.
Dúvidas de Java? Utilize o fórum! Não respondo via MP.
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Fowler)
"A vida é um escândalo, e no final dá sempre errado. O que humaniza o homem é o fracasso."
http://davidbuzatto.com.br | GitHub | uHunt | CV Lattes | Last.fm |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/01/2008 13:38:03
|
cassio
GUJ Master
![[Avatar]](/images/avatar/8ae7398026ed8f2172aefd6cbc856bc8.jpg)
Membro desde: 19/06/2006 08:25:28
Mensagens: 1336
Localização: Caieiras-SP
Offline
|
Com isso dá pra ver o código de todas as constantes cujo nome começa com VK_ ...
This message was edited 2 times. Last update was at 14/01/2008 13:39:06
|
Cássio Marques
Blog
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/01/2008 16:16:46
|
cv
Moderador
![[Avatar]](/images/avatar/210f760a89db30aa72ca258a3483cc7f.jpg)
Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline
|
Valeu, galera. A solucao final acabou meio como uma mistura do que o daviduzatto e o cassio sugeriram.
Ah, e thingol - matou a pau. O lance eh o mesmo pra (, ) e todos os caracteres do genero. Ainda nao testei o #, que no meu Mac eh feito com Alt+3, mas como # nao ocorre em nenhum dos arquivos que eu tenho que usar pra testar aqui, nao tem la tanto problema.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 14/01/2008 18:37:46
|
davidbuzatto
Moderador
![[Avatar]](/images/avatar/7ba6d33c373fea56b7258003b16c68e5.jpg)
Membro desde: 07/08/2004 23:47:57
Mensagens: 4013
Localização: Vargem Grande do Sul - SP
Offline
|
Disponha
|
Seja educado. Agradeça quem te ajudou. Não custa nada.
Dúvidas de Java? Utilize o fórum! Não respondo via MP.
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Fowler)
"A vida é um escândalo, e no final dá sempre errado. O que humaniza o homem é o fracasso."
http://davidbuzatto.com.br | GitHub | uHunt | CV Lattes | Last.fm |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/01/2008 13:13:42
|
Emerson Macedo
Virtual Machine Man
![[Avatar]](/images/avatar/360c19682e81f21d55846685c1701179.jpg)
Membro desde: 01/08/2006 16:55:28
Mensagens: 689
Localização: Rio de Janeiro - RJ
Offline
|
Caraca isso me lembra quando brincavamos de fazer jogo em pascal la por volta de 1996 e tinhamos que tratar as interrupções do teclado porquê o keycode tinha algumas bizarrices tipos essas ...
|
Emerson Macedo Leite
PMP - Ping-pong Master Player
CSM - Counter-Strile Manager
http://codificando.com
"Porque, assim como o relâmpago sai do oriente e se mostra até o ocidente, assim será também a vinda do filho do homem." - Mateus 24:27 |
|
|
 |
|
|