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

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++);}
saeedn
источник
Вы можете сократить некоторые. Удалить 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!"

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

GRC
источник
3
Да. Похоже, вы выбрали правильный язык для правильной работы.
картонная
Вы можете сократить его до tell app"System Events"to keystroke"Hello, World!".
Marinus
Блин, я об этом думал самостоятельно ... +1!
11684
13

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

send Hello, World{!}

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

beary605
источник
3

Emacs Lisp, 34 байта

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

Джордон Биондо
источник
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!")
jdstankosky
источник
пропущена запятая! Это на самом деле 21
символ
Где должна быть запятая? Редактировать, неважно, лол.
jdstankosky
1

VBScript, 54 байта

createobject("wscript.shell").sendkeys "Hello, World!"
afuous
источник
1

Tcl, 46 байт

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

Ожидается, 29 байт

spawn bash;send Hello,\ World
Йоханнес Кун
источник
Попытка сделать версию Tk, но не удалось: файл с некоторыми вещами pastebin.ca/3897417
sergiol
1

Ducky Script для USB Rubber Ducky, 22 байта

String "Hello, World!"
Slayter
источник
0

PowerShell, 55 байт

(New-Object -c wscript.shell).sendkeys('Hello, World!')
Rynant
источник
0

Python 3,67 байта

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

Нет модуля с именем pynput на TIO

Ведант Кандой
источник