Escriba "¡Hola, mundo!"

11

Escriba un programa que genere eventos de teclado de qué tipo Hello, World!.

No tiene que ser independiente de la plataforma.

No puede dejar ninguna tecla presionada. Por ejemplo, en Java, Robot.KeyPress('H');dejará Hpresionado, por lo que debe liberarlo conRobot.KeyRelease('H');

Puede suponer que el bloqueo de mayúsculas está desactivado cuando se ejecuta su programa. Las letras mayúsculas se pueden escribir manteniendo presionada la tecla Mayús y presionando la letra, o alternando el bloqueo de mayúsculas. Para el !, probablemente tendrás que usar el método shift.

El código más corto gana.

caja de cartón
fuente

Respuestas:

9

C (Linux), 186 bytes

#include<sys/ioctl.h>
#include<fcntl.h>
#include<stdio.h>
main(){char*s="Hello, World!",d[99],*c;fscanf(popen("tty","r"),"%s",d);int D=open(d,O_RDWR);for(c=s;*c;c++)ioctl(D,TIOCSTI,c);}

Después de aplicar las sugerencias de ugoren:

111 bytes

main(D){char*c,d[99];fscanf(popen("tty","r"),"%s",d);D=open(d,2);for(c="Hello, World!";*c;)ioctl(D,21522,c++);}
saeedn
fuente
Puedes acortar un poco. Eliminar s(solo inicializar for(c="H..), incrementar cen ioctl, main(D)para guardar int. Tal vez también elimine algunas inclusiones (incluso código duro O_RDWRy TIOCSTI).
ugoren
@ugoren Gracias, los probaré :)
saeedn
Este no es el más corto. ¿Por qué es esta la respuesta aceptada? (Creo que es una buena respuesta, pero solo quiero aprender cómo funciona el sitio.)
11684
@ 11684 El autor de la respuesta más corta me pidió que no la contara, por lo que acepté la respuesta no trivial más corta.
cartón_box
No es necesario llamarlo tty, solo funciona si stdin es un tty, en cuyo caso, 0ya es un terminal abierto fd.
Dave
18

AppleScript, 50 bytes

tell app"System Events"to keystroke"Hello, World!"

Gracias a marinus por la sugerencia.

grc
fuente
3
Huh Parece que elegiste el idioma correcto para el trabajo correcto.
Cartón_box
Puedes acortarlo a tell app"System Events"to keystroke"Hello, World!".
marinus
Maldita sea, pensé en esto independientemente ... +1!
11684
13

Autohotkey, 20 bytes

send Hello, World{!}

Por favor no cuentes este. No quiero engañar a las personas que realmente han hecho esto con un lenguaje no destinado a enviar pulsaciones de teclas. Esta respuesta es solo para completar: P

beary605
fuente
3

Emacs Lisp, 34 bytes

(execute-kbd-macro"Hello, World!")

Jordon Biondo
fuente
3

C en Windows 7, 201 bytes

#include<windows.h>
#include<winable.h>
#define S SendInput(1,&k,28);
int k[7]={1};main(i){char*s="^HELLO, ^WORLD^1";for(i=0;i<16;i++){k[2]=0;if(s[i]>90){k[1]=16;S i++;}k[1]=s[i];S k[2]=2;S k[1]=16;S}}

Resultado del programa:

C:\My\Directory>type.exe

C:\My\Directory>Hello, World!
caja de cartón
fuente
1

AutoIt3, 21 bytes

Send("Hello, World!")
jdstankosky
fuente
falta una coma! En realidad son 21 caracteres
Pomo de la puerta
¿Dónde se supone que debe estar una coma? Editar, no importa, jajaja.
jdstankosky
1

VBScript, 54 bytes

createobject("wscript.shell").sendkeys "Hello, World!"
afuo
fuente
1

Tcl, 46 bytes

package r Expect;spawn bash;send Hello,\ World

Espera, 29 bytes

spawn bash;send Hello,\ World
Johannes Kuhn
fuente
Intenté hacer la versión Tk, pero fallé: archivo con algunas cosas pastebin.ca/3897417
sergiol
1

Ducky Script para USB Rubber Ducky, 22 bytes

String "Hello, World!"
Matador
fuente
0

PowerShell, 55 bytes

(New-Object -c wscript.shell).sendkeys('Hello, World!')
Rynant
fuente
0

InstantEXE 3.0, 20 bytes

Keys "Hello, World!"
Timtech
fuente
0

Python 3,67 bytes

from pynput.keyboard import*
s=Controller()
s.type("Hello, World!")

Ningún módulo llamado pynput en tio

Vedant Kandoi
fuente