Введите «Привет, мир!»


11

Напишите программу, которая генерирует события клавиатуры, тип которых Hello, World!.

Это не должно быть независимым от платформы.

Он не может оставить ни одной клавиши нажатой. Например, в Java Robot.KeyPress('H');будет оставаться Hнажатым, поэтому вы должны отпустить его сRobot.KeyRelease('H');

Вы можете предположить, что при запуске вашей программы caps lock отключен. Заглавные буквы можно вводить, удерживая клавишу shift и нажимая букву, или переключая заглавные буквы. Для !, вероятно, вам придется использовать метод сдвига.

Самый короткий код выигрывает.

Ответы:


9

C (Linux), 186 байт

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

После применения предложений Угорена:

111 байт

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

Вы можете сократить некоторые. Удалить s(просто инициализировать for(c="H..), увеличить cв ioctl, main(D)чтобы сохранить int. Может быть, также удалить некоторые включает (даже жесткий код O_RDWRи TIOCSTI).
Угорен

@ugoren Спасибо, я попробую их :)
saeedn

Этот не самый короткий. Почему это принятый ответ? (Я думаю, что это хороший ответ, но я просто хочу узнать, как работает сайт.)
11684

@ 11684 Автор кратчайшего ответа попросил меня не считать его, поэтому я принял кратчайший нетривиальный ответ.
картонная

Нет необходимости вызывать ttyего, работает, только если stdin является tty, и в этом случае 0это уже открытый терминал fd.
Дейв

18

AppleScript, 50 байт

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

Спасибо Маринус за предложение.


3
Да. Похоже, вы выбрали правильный язык для правильной работы.
картонная

Вы можете сократить его до tell app"System Events"to keystroke"Hello, World!".
Marinus

Блин, я об этом думал самостоятельно ... +1!
11684

13

Автогрейк, 20 байт

send Hello, World{!}

Пожалуйста, не считайте это. Я не хочу обманывать людей, которые фактически сделали это с языком, не предназначенным для отправки нажатий клавиш. Этот ответ только для завершения: P



3

C в Windows 7, 201 байт

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

Результат программы:

C:\My\Directory>type.exe

C:\My\Directory>Hello, World!

1

AutoIt3, 21 байт

Send("Hello, World!")

пропущена запятая! Это на самом деле 21
символ

Где должна быть запятая? Редактировать, неважно, лол.
jdstankosky






Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.