Digite "Olá, mundo!"

11

Escreva um programa que gere eventos de teclado desse tipo Hello, World!.

Não precisa ser independente de plataforma.

Não pode deixar nenhuma tecla pressionada. Por exemplo, em Java, Robot.KeyPress('H');será Hpressionado, portanto, você deve liberá-lo comRobot.KeyRelease('H');

Você pode assumir que o caps lock está desativado quando o programa é executado. As letras maiúsculas podem ser digitadas pressionando Shift e pressionando a letra ou alternando entre maiúsculas e minúsculas. Para o !, você provavelmente terá que usar o método shift.

O menor código vence.

caixa de papelão
fonte

Respostas:

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);}

Após aplicar as sugestões 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
fonte
Você pode encurtar alguns. Remova s(apenas inicialize for(c="H..), incremente cno ioctl, main(D)para salvar int. Talvez também remova algumas inclusões (mesmo código O_RDWRe TIOCSTI).
ugoren
@ugoren Obrigado, eu vou experimentá-los :) #
31413 saeedn
Este não é o mais curto. Por que essa é a resposta aceita? (Acho que é uma resposta boa, mas eu só quero saber como funciona o site.)
11684
@ 11684 O autor da resposta mais curta me pediu para não contar, então aceitei a resposta não trivial mais curta.
cardboard_box
Não é necessário chamá- ttylo, apenas funciona se stdin for um tty; nesse caso, 0já é um terminal aberto fd.
Dave
18

AppleScript, 50 bytes

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

Obrigado a marinus pela sugestão.

grc
fonte
3
Hã. Parece que você escolheu o idioma certo para o trabalho certo.
23613
Você pode reduzi-lo para tell app"System Events"to keystroke"Hello, World!".
marinus
Droga, eu pensei nisso independentemente ... +1!
11684 11/11/2013
13

Autohotkey, 20 bytes

send Hello, World{!}

Por favor, não conte este. Não quero enganar as pessoas que realmente fizeram isso com um idioma não destinado a enviar pressionamentos de tecla. Esta resposta é apenas para conclusão: P

beary605
fonte
3

Emacs Lisp, 34 bytes

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

Jordon Biondo
fonte
3

C no 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 do programa:

C:\My\Directory>type.exe

C:\My\Directory>Hello, World!
caixa de papelão
fonte
1

AutoIt3, 21 bytes

Send("Hello, World!")
jdstankosky
fonte
falta de vírgula! Na verdade, são 21 caracteres.
Maçaneta da porta
Onde uma vírgula deveria estar? Editar, não importa, lol.
Jdstankosky
1

VBScript, 54 bytes

createobject("wscript.shell").sendkeys "Hello, World!"
úmido
fonte
1

Tcl, 46 bytes

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

Esperar, 29 bytes

spawn bash;send Hello,\ World
Johannes Kuhn
fonte
Tentei fazer a versão Tk, mas falhei: arquivo com algumas coisas pastebin.ca/3897417
sergiol
1

Script Ducky para USB Rubber Ducky, 22 bytes

String "Hello, World!"
Slayter
fonte
0

PowerShell, 55 bytes

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

InstantEXE 3.0, 20 bytes

Keys "Hello, World!"
Timtech
fonte
0

Python 3,67 bytes

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

Nenhum módulo chamado pynput no tio

Vedant Kandoi
fonte