Nhập loại Xin chào, Thế giới!


11

Viết chương trình tạo các sự kiện bàn phím loại nào Hello, World!.

Nó không phải độc lập với nền tảng.

Nó không thể để bất kỳ phím nào được nhấn. Ví dụ, trong Java, Robot.KeyPress('H');sẽ Hbị ép, do đó bạn phải giải phóng nó bằngRobot.KeyRelease('H');

Bạn có thể cho rằng khóa mũ bị tắt khi chương trình của bạn chạy. Chữ in hoa có thể được gõ bằng cách giữ phím shift và nhấn chữ cái hoặc bằng cách bật khóa nắp. Đối với !, có lẽ bạn sẽ phải sử dụng phương pháp thay đổi.

Mã ngắn nhất sẽ thắng.

Câu trả lời:


9

C (Linux), 186 byte

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

Sau khi áp dụng đề xuất của ugoren:

111 byte

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

Bạn có thể rút ngắn một số. Xóa s(chỉ khởi tạo for(c="H..), tăng ctrong ioctl, main(D)để lưu int. Cũng có thể loại bỏ một số bao gồm (thậm chí mã cứng O_RDWRTIOCSTI).
ugoren

@ugoren Cảm ơn, tôi sẽ thử chúng :)
saeedn

Đây không phải là ngắn nhất. Tại sao đây là câu trả lời được chấp nhận? (Tôi nghĩ rằng đó là một câu trả lời hay, nhưng tôi chỉ muốn tìm hiểu cách thức hoạt động của trang web.)
11684

@ 11684 Tác giả của câu trả lời ngắn nhất yêu cầu tôi không đếm nó, vì vậy tôi đã chấp nhận câu trả lời không tầm thường ngắn nhất để thay thế.
tông_box

Không cần phải gọi ttynó chỉ hoạt động nếu stdin là một tty, trong trường hợp đó, 0đã là một thiết bị đầu cuối mở fd.
Dave

18

AppleScript, 50 byte

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

Cảm ơn mar bến cho lời đề nghị.


3
Huh. Có vẻ như bạn đã chọn đúng ngôn ngữ cho công việc phù hợp.
tông_box

Bạn có thể rút ngắn nó xuống tell app"System Events"to keystroke"Hello, World!".
bến tàu

Chết tiệt, tôi đã nghĩ về điều này một cách độc lập ... +1!
11684

13

Autohotkey, 20 byte

send Hello, World{!}

Xin đừng đếm cái này. Tôi không muốn lừa dối những người thực sự đã làm điều này với một ngôn ngữ không có nghĩa là để gửi tổ hợp phím. Câu trả lời này chỉ để hoàn thành: P



3

C trong Windows 7, 201 byte

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

Kết quả chương trình:

C:\My\Directory>type.exe

C:\My\Directory>Hello, World!

1

AutoIt3, 21 byte

Send("Hello, World!")

thiếu dấu phẩy! Đó thực sự là 21 ký tự
Doorknob

Dấu phẩy được cho là ở đâu? Chỉnh sửa, đừng bận tâm, lol.
jdstankosky

1

VBScript, 54 byte

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

1

Tcl, 46 byte

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

Mong đợi, 29 byte

spawn bash;send Hello,\ World

Đã thử làm phiên bản Tk, nhưng không thành công: tệp có một số nội dung pastebin.ca/3897417
sergiol


0

PowerShell, 55 byte

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


0

Python 3,67 byte

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

Không có mô-đun có tên pynput trên tio

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.