Newsgroup: it.comp.os.dos
Titolo: Tasto ins

Qualcuno mi sa dire se esiste la combinazione ASCII
per il tasto Ins. Non riesco a trovarla.
Grazie
-- 
----------------------------
Mauro Gamberini

Per me dovrebbe essere chr(22)


Non va....
Forse mi sono spiegato male.
Alt+065 = A
Alt+126=~
Alt+013=Invio
Come faccio(se è possibile) a ottenere Ins?


 Come faccio(se è possibile) a ottenere Ins?
Ins non risulta essere un carattere, ma un tasto speciale.
Per cui non esiste una combinazione Alt+xxxx che lo possa sostituire.
Per simulare la pressione del tasto Ins bisogna agire in altri modi,
secondo il S.O. che si usa. In DOS puro ci sono diverse strade:
simulando la tastiera o intervenendo sul buffer di tastiera, per
esempio.
Ciao


Mi potresti fare un esempio in DOS puro, grazie
-- 
----------------------------
Mauro Gamberini

 Mi potresti fare un esempio in DOS puro, grazie
Eh, figluolo, sono un po' arrugginito.
La strada più semplice è usare il BIOS.
====================================================================
  Int 16h   Function 05h
  Place Character and scan code 
  -----------------------------
  Action: Places a character and a scan code in the keyboard buffer
  -----------------------------
  Call with:   ah = 05h
               ch = keyboard scan code
               cl = ASCII character code
  -----------------------------
  Returns:   On success:
               al = 00h
               carry flag = 0
             On failure (buffer full):
               al = 01h
               carry flag = 1
  -----------------------------
  Notes:    The character and scan code combination that this
            service puts in the keyboard buffer is placed behind any
            other characters that are already waiting in the
            buffer.
====================================================================
Beh, devi innanzitutto trovare lo scancode del tasto Ins, che dal sito
http://www.ctyme.com/intr/rb-0045.htm
 risulta essere 52h.
Per esempio, in assembly:
   mov ah,5
   mov ch,52h (Ins scancode)
   mov cl,0   (Ins non è ascii)
   int 16h
   cmp al,0
   je  OK
   ; se arriviamo qui il buffer era pieno
OK:
   ; tutto OK
Se usi un altro linguaggio (tipo C o Pascal) devi usare una funzione,
che dovrebbe chiamarsi "intr", o roba del genere. In Turbo Pascal:
function stuff_key(byte key):boolean;
var R:Registers;
begin
  R.ah:=5;   
  R.ch:=key;   
  R.cl:=0;   
  intr($16,R);
  stuff_key := (R.al = 0);
end;
...
if stuff_key($52) then
  (* tutto OK *)
else
  (* buffer pieno *)
Ciao


[cut]
Grazie papà.
Adesso provo.
Saluta mamma ;-)
-- 
----------------------------
Mauro Gamberini 

    ; tutto OK
  Carino  che  ci  sia  ancora  qualcuno  che  abbia  il  coraggio  di
rispolverare il buon vecchio assembler 8086...
  Tra te e il Doctor Doom, siamo in una botte di ferro... ;)
  Aggiungo solo che la cosa e` possibile anche utilizzando il Basic M$
(non il `Quick', proprio quello completo): ci sono un pajo di funzioni
apposite  (se  la memoria  non  mi  e`  andata  in pappa,  Interupt  e
InteruptX) che consentono di effettuare le chiamate agli interrupt del
dos, nello specifico a quello che intercetta il tasto premuto...
-- 
Cio` che ho scritto, ho scritto.