Página 1 de 3

Valor da tecla 282

Enviado: 08 Jan 2008 19:29
por ademilson
Pessoal...

To fazendo manutencao em um prg bem antigo aqui na empresa, e tem a comparacao, se caso for teclado a tecla 282 (lastkey() == 282) executa uma opercao X, Porem nao consigo encontrar o valor dessa tecla...

Algum poderia me ajudar,

Abracos,

Enviado: 08 Jan 2008 20:26
por Pablo César
Acho que é ALT ´ ou ALT CHR(39) que é o acento agudo. Estranho né...
achei na NET http://www.koders.com/c/fidD42A1B875E4A ... =K_ALT_OSB

Espero que sirva.

Enviado: 08 Jan 2008 21:09
por Eolo
(desconsiderar esta resposta!)

Cara, é o mesmo que chr(26).
Abre qq arquivo, no Win ou no DOS, e tecla 'ALT 2 8 2" ou "ALT 2 6" (sem as aspas). O resultado (marca de fim de arquivo) é o mesmo...

Enviado: 08 Jan 2008 22:02
por Maligno
O atalho do DOS Alt+538 também é igual a Alt+26. Ou seja, como a tabela ASCII só vai até 256, qualquer valor X acima de 256, será igual a X-256. Mas isso vale para atalhos do padrão ASCII no DOS. Acredito que a dificuldade do colega é sobre uma constante que define um atalho do Clipper.

No caso, o valor 282, retornado pelo Clipper, se refere ao atalho Alt+[.

Enviado: 09 Jan 2008 08:21
por Pablo César
Maligno escreveu:o valor 282, retornado pelo Clipper, se refere ao atalho Alt+[
Pois é, isso é o que indica aqueles defines, mas na prática se fizeres:

? INKEY(0) // e pressionares Alt [ vai retornar o valor 383 e não 382 (digo isto porque testei)

Foi por acaso que pressionei Alt ´ e deu retorno 282

No entanto não concordo com o que o Eolo disse, pois eu também a inicio dos testes, pensei que fosse CHR(26), mas se for visto nos includes do proprio Clipper, irás ver que o CHR(26) é o equivalente a pressionar Ctrl Left ou Ctrl Z portanto não creio que seja estas teclas para o código 282.

Gostaria saber do ademilson, se é Alt ´ ou Alt [ que aciona alguma função do seu antigo sistema e gostaria de saber que função põe para execução...

Enviado: 09 Jan 2008 08:37
por Maligno
Há muito tempo atrás eu usei Alt+[ (uma tecla de atalho escondida, pra um propósito especial) e garanto, é 282. Acabei de fazer um programa de teste pra confirmar. É 282 mesmo. O Alt + ' retorna 296.

Agora note que há dois tipos de atalhos. O do DOS e o do Clipper. No DOS você está limitado ao que se encontra na tabela ASCII. Ou seja, vai de 1 a 256. Qualquer X acima de 256 será aceita como X-256.

Agora, dentro do Clipper a coisa muda de figura. Existem várias combinações de teclas porque há um tratamento interno para fazer com que essas combinações sejam representadas por números que extrapolam o escopo 1 <= X => 256. É disso que o colega está tratando, já que o caso é sobre o retorno da função LastKey(). Por isso, esqueça a tabela ASCII.

Enviado: 09 Jan 2008 09:03
por Pablo César
Maligno escreveu:Alt+[ (uma tecla de atalho escondida, pra um propósito especial) e garanto, é 282. Acabei de fazer um programa de teste pra confirmar. É 282 mesmo. O Alt + ' retorna 296.
hehe ja pra mim não dá esse resultado. Acho que deve ser seu teclado... aquele de metal... hihihihi :)))
Maligno escreveu:É disso que o colega está tratando, já que o caso é sobre o retorno da função LastKey(). Por isso, esqueça a tabela ASCII.
Nos meus testes, eu não estou me guiando com a tabela ASCII e sim com o resultado do INKEY. Mas de todas formas mudei para:

Código: Selecionar todos

inkey(0)
? LASTKEY() // E o resultado será igual
Eu acho que conforme for o código adotado tem muito a ver com a instrução feita do KEYB no SO. Pois como pode dar um resultado diferente entre o meu e o seu Maligno ?? Acho que a adoção de certos códigos (aqueles que fogem do "normais" como as teclas de função F1, F2, F3...) para acionamento seja pelo "SET KEY" ou "LASTKEY()" estão sujeito a não funcionarem apropriadamente (isto se a teoria de que depende do KEYB do SO).

Enviado: 09 Jan 2008 09:29
por Maligno
É estranho que estejamos obtendo códigos diferentes. Não sei explicar. Vamos então deixar o colega fazer o teste. Afinal, o problema está no programa dele. :)

Enviado: 09 Jan 2008 09:37
por Eolo
É, falei besteira. Vou consertar meu post.

Enviado: 09 Jan 2008 09:44
por Pablo César
Pois é... temos diferentes resultados. Você não acha que a razão principal deste resultados é conforme o codepage do SO e que padrão é alterado ora seja pela instrução do KEYB no WIN98, ja no no WINXP não sei como é feito (talvez no painel de controle) que cada um de nós temos. Por exemplo eu uso o 850 qual é o seu Maligno ?

Agora eu fazendo congesturas... (sempre acontece na ausência do autor do tópico) ele deve ter encontrado dificuldades em acionar o recurso quando a tecla combinada era 282 e isso deve ter ocorrido quando mudaram de WIN98 para WINXP (olha só... meu poderes mágicos de visão do além... hihihi). Mas certo, aguardemos a opinião do Ademilson.

Enviado: 09 Jan 2008 09:49
por TerraSoftware
No meu teclado:

ALT + [ = 283

ALT + ´ = 282

Tenho um pequeno executável feito em clipper puro usando a funcao lastkey() que me mostra na tela o valor da tecla precionada, é muito prático. Se alguem desejar é só me avisar.

Enviado: 09 Jan 2008 09:51
por Maligno
Pablo César escreveu:Pois é... temos diferentes resultados. Você não acha que a razão principal deste resultados é conforme o codepage do SO e que padrão é alterado ora seja pela instrução do KEYB no WIN98, ja no no WINXP não sei como é feito (talvez no painel de controle) que cada um de nós temos. Por exemplo eu uso o 850 qual é o seu Maligno ?
Pode esquecer o Windows. Estamos dentro de um programa Clipper. É ele quem dá as cartas, independentemente do SO envolvido. Ao receber o atalho, é ele quem converte para um valor numérico fixo. Jamais poderia ser diferente disso. Pois se fosse, bastaria trocar a versão do Windows para seu programa se perder totalmente. :)

Enviado: 09 Jan 2008 09:56
por Maligno
TerraSoftware escreveu:No meu teclado:

ALT + [ = 283

ALT + ´ = 282
No meu programa de teste 283 é a tecla vizinha: Alt+]. Vai entender... :)
Tenho um pequeno executável feito em clipper puro usando a funcao lastkey() que me mostra na tela o valor da tecla precionada
Deve ser parecido com:

Código: Selecionar todos

while Inkey(0) != 27
   ? Str(LastKey())
end

Enviado: 09 Jan 2008 09:57
por Pablo César
No meu teclado:

ALT + [ = 283

ALT + ´ = 282
Ahhh é bom ter outra opinião, pelo jeito tem a ver com o codepage selecionado.

A questão é bem simples de descobrir qual é o código da tecla pressionada, bastaria fazer como eu tinha indicado: ? INKEY(0) e pronto...

Enviado: 09 Jan 2008 10:04
por Maligno
pelo jeito tem a ver com o codepage selecionado.
Insisto em dizer que não tem a ver. E pela lógica, não poderia mesmo ter a ver. Se tivesse, um programa meu não funcionaria na sua máquina. E vice-e-versa.