Wpisz „Witaj, świecie!”

11

Napisz program, który generuje zdarzenia klawiatury tego typu Hello, World!.

Nie musi być niezależny od platformy.

Nie pozostawia naciśniętych klawiszy. Na przykład w Javie Robot.KeyPress('H');pozostawisz Hwciśnięty, więc musisz go zwolnićRobot.KeyRelease('H');

Możesz założyć, że Caps Lock jest wyłączony po uruchomieniu programu. Wielkie litery można pisać, przytrzymując klawisz Shift i naciskając literę, lub naciskając klawisz Caps Lock. Do tego !prawdopodobnie będziesz musiał użyć metody shift.

Najkrótszy kod wygrywa.

pudełko kartonowe
źródło

Odpowiedzi:

9

C (Linux), 186 bajtów

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

Po zastosowaniu sugestii ugorena:

111 bajtów

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
źródło
Możesz skrócić trochę. Usuń s(tylko initialize for(c="H..), przyrost cw ioctl, main(D)aby zapisać int. Może także usuń niektóre dołączenia (nawet na stałe O_RDWRi TIOCSTI).
ugoren,
@ugoren Dzięki, spróbuję je :)
saeedn
Ten nie jest najkrótszy. Dlaczego jest to akceptowana odpowiedź? (Myślę, że to ładna odpowiedź, ale chcę tylko dowiedzieć się, jak działa strona.)
11684
@ 11684 Autor najkrótszej odpowiedzi poprosił mnie, abym jej nie liczył, więc zamiast tego zaakceptowałem najkrótszą nietrywialną odpowiedź.
cardboard_box
Nie trzeba go wywoływać tty, działa tylko wtedy, gdy stdin jest tty, w takim przypadku 0jest już otwartym terminalem fd.
Dave
18

AppleScript, 50 bajtów

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

Dzięki marinus za sugestię.

grc
źródło
3
Huh Wygląda na to, że wybrałeś odpowiedni język dla właściwej pracy.
cardboard_box
Możesz to skrócić tell app"System Events"to keystroke"Hello, World!".
marinus
Cholera, myślałem o tym niezależnie ... +1!
11684
13

Autohotkey, 20 bajtów

send Hello, World{!}

Proszę nie liczyć tego. Nie chcę oszukiwać ludzi, którzy to zrobili za pomocą języka nieprzeznaczonego do wysyłania naciśnięć klawiszy. Ta odpowiedź jest właśnie do uzupełnienia: P

beary605
źródło
3

Emacs Lisp, 34 bajty

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

Jordon Biondo
źródło
3

C w Windows 7, 201 bajtów

#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}}

Wynik programu:

C:\My\Directory>type.exe

C:\My\Directory>Hello, World!
pudełko kartonowe
źródło
1

AutoIt3, 21 bajtów

Send("Hello, World!")
jdstankosky
źródło
brakujący przecinek! To tak naprawdę 21 znaków
Klamka
Gdzie powinien być przecinek? Edytuj, nieważne, lol.
jdstankosky
1

VBScript, 54 bajty

createobject("wscript.shell").sendkeys "Hello, World!"
obolały
źródło
1

Tcl, 46 bajtów

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

Oczekuj, 29 bajtów

spawn bash;send Hello,\ World
Johannes Kuhn
źródło
Próbowałem wykonać wersję Tk, ale nie powiodło się: plik z pewnymi rzeczami pastebin.ca/3897417
sergiol
1

Skrypt Ducky dla USB Rubber Ducky, 22 bajty

String "Hello, World!"
Zabójca
źródło
0

PowerShell, 55 bajtów

(New-Object -c wscript.shell).sendkeys('Hello, World!')
Rynant
źródło
0

InstantEXE 3.0, 20 bajtów

Keys "Hello, World!"
Timtech
źródło
0

Python 3,67 bajtów

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

Brak modułu o nazwie pynput na tio

Wedant Kandoi
źródło