กะพริบ CAPS LOCK


107

คีย์บอร์ดคอมพิวเตอร์ส่วนใหญ่มีไฟ LED ในตัวขนาดเล็กแสดงโหมดอินพุตปัจจุบันซึ่งควบคุมด้วยปุ่ม CAPS LOCK

ป้อนคำอธิบายรูปภาพที่นี่

งานของคุณคือการกระพริบตา:

  • เปิด;
  • รอ 0.5 (+/- 0.1) วินาที
  • ปิดอีกครั้ง

ภาพวิดีโอของไฟ LED กะพริบชื่นชมอย่างมาก!

กฎระเบียบ

  • คุณสามารถกระพริบไฟ LED อื่น (เช่น Scroll Lock, Num Lock, สถานะ Wi-Fi และอื่น ๆ ) หากต้องการ แต่จะต้องอยู่บนแป้นพิมพ์ของคุณ

  • หากภาษาของคุณไม่มีsleepคำสั่งsubsecond โปรแกรมของคุณอาจใช้เวลาหน่วง 1 วินาทีแทนโดยมีค่าปรับเป็น +2 ไบต์ (สำหรับ0.)

  • โปรแกรมของคุณจะต้องกระพริบอย่างน้อยหนึ่งครั้งสิ่งที่เกิดขึ้นหลังจากนั้นขึ้นอยู่กับคุณนั่นคือมันจะยังคงกะพริบต่อไป (ในกรณีนี้คุณจะต้องรอให้เกิดความล่าช้าเหมือนเดิมก่อนที่จะเปิดอีกครั้ง) หรือหยุด ฯลฯ

  • หาก LED ที่เลือกเป็น ON โดยค่าเริ่มต้นบนระบบของคุณคุณสามารถสันนิษฐานได้ว่ามันถูกปิดอย่างชัดเจน (เช่นด้วยตนเอง) ก่อนที่โปรแกรมจะทำงาน

  • นี่คือคำตอบที่สั้นที่สุดในหน่วยไบต์ชนะ

ลีดเดอร์บอร์ด

var QUESTION_ID=110974,OVERRIDE_USER=61904;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>


83
คำตอบการโกงที่ไม่ได้ผล: บนระบบลีนุกซ์, ทำให้เกิดความผิดพลาดของเคอร์เนล. BSOD ที่เทียบเท่ากับ Linux จะกะพริบไฟ Caps Lock ในกรณีที่เกิดความผิดพลาดก็ทำให้ฮาร์ดแวร์วิดีโอล่มและคุณไม่สามารถเห็นรายงาน BSOD บนหน้าจอได้ น่าเสียดายที่ฉันสามารถบอกได้ว่ามันกะพริบเร็วเกินไปเล็กน้อยเพื่อเป็นคำตอบที่เหมาะสม สิ่งนี้จะนำไปสู่โซลูชันขนาด 14 ไบต์ (ค่อนข้างอันตราย) หากได้รับอนุญาต

57
ตอนนี้กระพริบตาในรหัสมอร์ส: "ช่วยฉันถูกขังอยู่ในโรงงานแป้นพิมพ์!"
mbomb007

12
@ ais523 แล็ปท็อปของฉันจะทำเช่นนั้นหากฉันเขย่า (0 ไบต์) เร็วเกินไป ...
ทิม

18
ปุ่ม capslock บน C64 เป็นสวิตช์เชิงกล กระพริบที่อาจเป็นเรื่องยุ่งยากเล็กน้อย ...
Mark Mark

8
ตอนนี้ฉันสงสัยว่า LED ที่มีแบตเตอรีต่ำบนคีย์บอร์ดไร้สายของฉันกระพริบในอัตราที่ถูกต้องหรือไม่ ถ้าเป็นเช่นนั้น: ศูนย์ไบต์
Roger Lipscombe

คำตอบ:


123

Befunge (BEF32), 390 334 305 ไบต์

นี่มันโง่จริง ๆ แต่ตราบใดที่ไซต์นี้ยอมรับความคิดที่ว่าล่ามกำหนดภาษาฉันก็อาจทำผิดกฎ รหัสนี้ใช้งานได้เฉพาะในการติดตั้ง Win32 Befunge-93 ของ Kevin Vigor รุ่น 1.01 (ฉันคิดว่ามีเฉพาะรุ่นที่ใช้งานได้) คุณสามารถดาวน์โหลดไบนารีที่นี่

p55p99+5p65*5p")"5p"M"3*"I~q"+\3*3445"|"2*"lm"2v
v"y"*3\*2"e/n"4\5"nnIn"*833*2"mn"4\7"nnIn"*833*<
>2*"yO"4"DJG"3*\2*55*3"T"4"DLG"3*\2*55*3"/~M"+\3*4446"~A"+4v
>+00p9p:v:"l'"*2"^D"4"l3"*2"^D"4"l"*54*2"^D"4"l"*2+94*2"^D"<
^1:g00-4_5"u1"*-:1+:1+"@"\0p"%"5*\0p"P"\0p@
Sleep kernel32.dll keybd_event user32.dll

ตอนนี้โดยปกติคุณจะไม่คาดหวังความท้าทายประเภทนี้ที่จะเกิดขึ้นใน Befunge แต่ BEF32 เป็นพอร์ต Win32 ของเวอร์ชันเก่ามากของการใช้งานอ้างอิงและกลับมาแล้วไม่มีการตรวจสอบขอบเขตบนpคำสั่ง (วาง) สิ่งนี้ช่วยให้เราสามารถเขียนไปยังตำแหน่งใด ๆ ในหน่วยความจำได้อย่างมีประสิทธิภาพซึ่งท้ายที่สุดแล้วเราก็บังคับให้ล่ามทำการประมวลผลรหัสเครื่องโดยพลการ

ตอนนี้เราไม่สามารถแก้ไขโค้ดที่มีอยู่ได้จริงเนื่องจากส่วน. text ของไฟล์เรียกทำงานจะไม่มีสิทธิ์ในการเขียน อย่างไรก็ตามเราสามารถหลอกให้ระบบดำเนินการที่อยู่ในส่วน. data โดยเขียนที่อยู่นั้นลงในatexitตารางของไลบรารีรันไทม์(อย่างน้อยฉันก็สงสัยว่ามันคืออะไร) ผลลัพธ์ที่ได้คือรหัสของเราจะถูกดำเนินการโดยอัตโนมัติเมื่อล่ามออก

นี้อยู่บนพื้นฐานความจริงที่ว่าปฏิบัติการที่มีการโหลดที่อยู่ถาวรเพื่อให้เรารู้ว่าที่ทุกอย่างอยู่ในหน่วยความจำ - มัน assumedly จะไม่ทำงานถ้าคุณลบล้างเริ่มต้นASLRการตั้งค่า นอกจากนี้ยังขึ้นอยู่กับส่วน. data ที่สามารถเรียกใช้งานได้แม้จะไม่มีชุดแอตทริบิวต์ที่สามารถเรียกใช้งานได้ดังนั้นจึงเป็นไปได้อีกที่ส่วนใหญ่จะไม่ทำงานหากคุณลบล้างการตั้งค่าDEPเริ่มต้น

รหัสนั้นเป็นสำเนาของเทคนิคของMegoที่keybd_eventแปลเป็นรหัสเครื่อง:

6823B84000         push "keybd_event"
682FB84000         push "user32.dll"
6810B84000         push "Sleep"
6816B84000         push "kernel32.dll"
BB02000000         mov  ebx,2
               initloop:
89C7               mov  edi,eax
FF1594D14000       call LoadLibraryA
50                 push eax
FF1590D14000       call GetProcAddressA
4B                 dec  ebx
75EE               jnz  initloop
89C6               mov  esi,eax
               flashloop:
6A00               push 0
6A01               push 1
6A45               push 69
6A14               push 20
FFD6               call esi
6A00               push 0
6A03               push 3
6A45               push 69
6A14               push 20
FFD6               call esi
68F4010000         push 500
FFD7               call edi
EBE3               jmp  flashloop

รหัสรุ่นนี้ยังคงกระพริบตลอดไป (หรืออย่างน้อยก็จนกว่าคุณจะฆ่ากระบวนการ) เนื่องจากมันกลายเป็นเรื่องง่ายสำหรับการเล่นกอล์ฟมากกว่าแฟลชเดียว

และเนื่องจากทุกคนโพสต์อนิเมชั่นนี่คือการประมาณว่ามันมีลักษณะอย่างไรบนคีย์บอร์ดของฉัน

ภาพเคลื่อนไหวของแสง Capslock ที่กระพริบ


30
ผู้คนมักจะใช้กฎในทางที่ผิดเพื่อให้ชีวิตง่ายขึ้นสำหรับพวกเขา แต่มันไม่ใช่นักเขียนของ Befunge :)
Aaron

21
ไม่เคยคาดคิดว่าคำตอบ esolang สำหรับความท้าทายนี้ +1
zeppelin

9
นี่คือคำตอบที่ฉันชอบในเว็บไซต์นี้
Cruncher

2
การใช้งานที่ยอดเยี่ยม!
Daniel

3
@ JamesHolderness งั้นเหรอ? นี่เป็นคำตอบที่ดีแม้ว่ามันจะยาว
NoOneIsHere

72

AutoHotkey, 29 26 ไบต์

ขอบคุณ @Dane สำหรับการบันทึก 3 ไบต์

Loop{
Send,{VK14}
Sleep,500
}

ฉันเดิมเลือกเพราะมันเป็นตัวละครตัวหนึ่งที่สั้นกว่าNumLock CapsLockGIF ด้านล่างแสดงถึงเงื่อนไขนั้น มันมีผลเช่นเดียวกับรหัสที่เปลี่ยนแปลงด้านบน ฉันได้ไปVK90ข้างต้นเพื่อทำให้ GIF ยังคงแม่นยำ แต่สอดคล้องกับความท้าทายดั้งเดิมรู้สึกดีขึ้น

BlinkingNumLock


เพื่อเป็นเกียรติแก่ความคิดเห็นของ mbomb007นี่เป็นข้อความรหัสมอร์สใน239 ไบต์ :

s:=000090901009011091100110090111109111901090190110901109091000091001101909101191000911190190109100001090191010919111901091011
Loop,123{
StringMid,c,s,A_Index,1
IfEqual,c,9
{
Sleep,2000
Continue
}
Send,{NumLock}
Sleep,%c%500
Send,{NumLock}
Sleep,500
}

นี่คือ 30 วินาทีแรกของข้อความนั้น:

MorseCodeBlinking


3
วิธีการเกี่ยวกับsend,{vk14}การโกน 3 ไบต์แทน? โบนัส: คุณจะกะพริบ CapsLock
Dane

35

GFA- พื้นฐาน 3.51 (อาตาริ ST),  61 56 43  35 ไบต์

รหัสนี้จะทำให้ฟล็อปปี้ไดรฟ์ LED กะพริบตลอดไปในอัตราที่ต้องการ ( PAUSE 25= หยุดชั่วคราวเป็นเวลา 25/50 วินาที)

อาจสั้นกว่านี้ในแอสเซมบลี แต่ฉันไม่มีเครื่องมือที่เหมาะสมที่ปลายนิ้วของฉัน นี่คือขนาดของรายการ GFA-Basic บันทึกครั้งเดียวในรูปแบบ .LST และแก้ไขด้วยตนเองเพื่อลบช่องว่างที่ไร้ประโยชน์เปลี่ยนชื่อคำแนะนำในการสายสั้นและแทนที่แต่ละที่มีความเรียบง่ายCR+LF CRโปรดทราบว่าCRจำเป็นต้องมีรอบสุดท้าย

DO
i=i XOR2
SP &HFF8802,i
PA 25
LO

จะขยายเป็น: โดยอัตโนมัติ

DO
  i=i XOR 2
  SPOKE &HFF8802,i
  PAUSE 25
LOOP

SPOKEเป็นซูเปอร์ชาร์จPOKEที่ทำให้ 68000 อยู่ในโหมดผู้ดูแลก่อนเพื่อให้ได้รับอนุญาตให้เข้าถึงพื้นที่หน่วยความจำที่ จำกัด (ที่นี่: ที่อยู่การลงทะเบียนการเขียนของ soundchip YM2149 ซึ่งเป็นผู้รับผิดชอบ I / O อื่น ๆ ด้วย)

และใช่: LED ตั้งอยู่บนคีย์บอร์ด ... ฉันคิดว่า

ST ฟลอปปี้ไฟ LED

ฉันไม่สามารถเข้าถึง ST ที่แท้จริงได้ในขณะนี้ดังนั้นนี่เป็นเพียงการจำลอง


7
ฟลอปปี้ไดรฟ์! ว้าว!
David Conrad

12
วงกลมสีแดงที่วาดด้วยมือหายไป ...
Hagen von Eitzen

@HagenvonEitzen หวังว่าจะไม่ต้องการวงกลมสีแดงอีกต่อไป :-)
Arnauld

23

ปลา + ckb , 56 54 ไบต์

while cd;echo rgb (random)|tee /d*/*/*/c*;sleep .5;end

กะพริบทั้งคีย์บอร์ดของฉันด้วยสีแบบสุ่มแม้ว่าตัวเลขจะไม่ยาว 6 หลัก แต่ก็มีข้อ จำกัด เล็กน้อย

และใช่เปลือก glob นั้นอาจเป็นอันตราย ทำงานบน My Machine ™

โบนัสสคริปต์ 8 เดือนต่อมา: สิ่งนี้จะผ่านทุกสี ไม่เล่นกอล์ฟ

#!/usr/bin/fish
while true
        echo rgb (printf '%06x' (random 0 16777215)) | tee /dev/input/ckb*/cmd > /dev/null
        sleep 0.5
end

13
แป้นพิมพ์ตัวไหน lol
Mc Kernel

1
@McKernel ชนอยากรู้อยากเห็นเป็นสิ่งที่แป้นพิมพ์ที่เป็นอย่างดี
CraigR8806

3
K70 RGB พร้อมปุ่ม
Una

6
คะแนนโบนัสสำหรับการก้าวไปข้างหน้าและเหนือกว่าด้วยการทำให้คีย์บอร์ดทั้งหมดกะพริบ
เสา

tee /d*/*/*/c*? คะแนนโบนัสสำหรับการรับผิดชอบต่อคอมพิวเตอร์ที่ไม่ดีในอนาคตเมื่อสิ่งนี้ขยายออกไปสู่สิ่งที่สำคัญอย่างหลีกเลี่ยงไม่ได้ (? EFI ตัวแปรทุกคนอาจจะมีสิ่งที่ต้องการ/dev/efi/vars/cpu_type)
immibis

21

Bash + amixer, 45 ไบต์

a() { amixer set Master toggle
}
a;sleep .5;a

กะพริบแสงปิดเสียงบนคีย์บอร์ดของฉัน


17
a()(amixer set Master toggle;sleep .5;a)หรือamixer set Master toggle;sleep .5;$0โปรแกรมเต็มจะสั้นลงเล็กน้อย
เดนนิส

19

C (Windows), 79 ไบต์

#include<windows.h>
k(n){keybd_event(20,69,n,0);}f(){k(1);k(3);Sleep(500);f();}

คำอธิบาย

keybd_eventเป็นฟังก์ชั่น Windows API (คัดค้าน) เพื่อส่งเหตุการณ์แป้นพิมพ์ (การกดแป้นหรือการกดแป้นพิมพ์) 20เป็นรหัสสำหรับปุ่ม Caps Lock 69เป็นรหัสสแกนฮาร์ดแวร์ (ฉันไม่รู้ว่าหมายถึงอะไร) และ1หมายถึงการกดปุ่มและ3หมายถึงการกดปุ่ม การกดปุ่มถูกจำลองโดยการส่งเหตุการณ์ keydown ทันทีตามด้วยการกดปุ่มเหตุการณ์ มีการกดปุ่มหนึ่งครั้งเพื่อเปิด Caps Lock จากนั้นโปรแกรมจะพักเป็นเวลา 500 มิลลิวินาทีจากนั้นจะมีการส่งการกดปุ่มอีกครั้งเพื่อปิด Caps Lock กลับไป

ขอบคุณ Steadybox ที่บันทึกเป็นไบต์จำนวนมาก


1
เมื่อให้นี่คือ C คุณไม่สามารถประกาศได้int keybd_event();หรือ
Neil

@Neil มันจะเป็นvoid keybd_event();และฉันยังต้องจากvoid Sleep(); windows.hการประกาศสองรายการด้วยกันนั้นยาวกว่าการประกาศรวม
Mego

1
79 bytes:#include<windows.h> k(n){keybd_event(20,69,n,0);}f(){k(1);k(3);Sleep(500);f();}
Steadybox

2
แน่นอน แต่สำหรับประเภทดั้งเดิม C ไม่สนใจเกี่ยวกับความไม่ตรงกันถ้าคุณไม่เคยใช้ผลลัพธ์
Neil

6
รหัสสแกนเป็นสิ่งที่แป้นพิมพ์ของคุณส่งผ่านสายที่ระดับต่ำสุด ค่าของพวกเขาจะขึ้นอยู่กับตำแหน่งในเลย์เอาต์มาตรฐานเพราะการทำเช่นนั้นทำให้พวกเขาทำให้คีย์บอร์ดนั้นเป็นใบ้ที่สุดเท่าที่จะเป็นไปได้โดยไม่ต้องต่อสายแต่ละคีย์ (ข้อ จำกัด ของการออกแบบนี้เป็นส่วนหนึ่งของ อินเตอร์เฟซคีย์บอร์ด USB พื้นฐานแล้วอบข้อ จำกัด ลงในคีย์บอร์ดส่วนใหญ่เมื่อประมาณ 20 ปีที่แล้วโดยออกแบบให้ต่ำสุด std) ด้วยค่าใช้จ่ายในการถ่ายโอนขั้นตอนการแปลไปยังคอมพิวเตอร์โฮสต์ en.wikipedia.org/wiki/Scancode
Dan Neely

16

MATLAB, 146 136 70

ขอบคุณ@Pokeสำหรับการลบ 66 ไบต์!

r=java.awt.Robot;while 1
r.keyPress(20)
r.keyRelease(20)
pause(.5);end

สิ่งนี้ใช้ความสามารถของ Matlab ในการเรียกคลาส Java ไฟ Num Lock กะพริบเป็นวงกลมโดยกดและปล่อยNum Lockโปรแกรม

Video หรือมันไม่ได้เกิดขึ้น


9
คุณสามารถใช้144แทนได้java.awt.event.KeyEvent.VK_NUM_LOCKหรือไม่? CAPS_LOCK จะเป็น20
Poke

2
@ ใช่ใช่! ไป 66 ไบต์ !!
Luis Mendo เมื่อ

7
ตลกที่มันสั้นกว่าคำตอบจาวา
Matsemann

15

รหัสเครื่อง x86 สำหรับพีซี (เช่นไฟล์ MS-DOS COM), 27 ไบต์

รหัสเครื่องนี้ (แสดงที่นี่พร้อมกับการแสดงผล Unicode ของ CP437 ปกติของ PC BIOS) จะกะพริบตัวบ่งชี้ CAPS LOCK ตลอดไปบนพีซี:

j@▼î▐j`Z░φεê╪εÇ≤♦╞♦◙Ç<☺t∩δ∙

รหัสถูกสร้างขึ้นจึงไม่มี NULL ไบต์และสามารถพิมพ์ด้วยแป้นพิมพ์ (ใช้เคล็ดลับ Alt + XXX สำหรับอักขระเพิ่มเติม) เพื่อสร้างไฟล์ COM (เช่นใช้COPY CON blink.comคำสั่งภายใต้ MS-DOS ในกรณีนี้ ไฟล์ที่ส่งออกจะต้องมีปลอม 28 THไบต์^Z(EOF) ตัวละครจำเป็นต้องหยุดการดำเนินการคัดลอก)

เอฟเฟ็กต์ทำได้โดยการส่งคำสั่งโดยตรงไปยังคอนโทรลเลอร์แป้นพิมพ์ของ PC (พอร์ต 60h) เพื่อตั้งค่าสถานะ LED (เป็นผลข้างเคียงก็อาจตั้งค่า Num Lock และ LED Lock Lock ไปเป็นสถานะที่ไม่กะพริบ) การจับเวลาเพื่อลดจำนวนคำสั่งทำได้โดยใช้ตัวจับเวลานับถอยหลังที่เก็บรักษาไว้ที่ BIOS 0040:0040(ลดลงทุก 54.925 มิลลิวินาทีโดยมี 9 รอบรอบการกะพริบเป็น 494.3 มิลลิวินาทีซึ่งอยู่ในระยะขอบที่อนุญาต) - ตัวนับนี้ โดยปกติจะใช้ BIOS เพื่อหยุดฟลอปปีดิสก์มอเตอร์ เนื่องจากโปรแกรมไม่ได้ใช้ฟล็อปปี้ไดรฟ์และรหัสจะถือว่าทำงานในสภาพแวดล้อมแบบภารกิจเดียว (เช่น DOS) การเล่นด้วยตัวจับเวลาฟลอปปี้มอเตอร์จึงไม่เป็นปัญหา

รหัสทำงานได้ดีภายใต้ MS-DOS (ลองใช้ VirtualBox แล้วก็ควรทำงานได้ดีกับฮาร์ดแวร์จริงแม้ว่าฉันจะยังไม่มีเวลาในการทำ MS-DOS USB ที่สามารถบู๊ตได้เพื่อทำการทดสอบ) เนื่องจากมันไม่ได้พึ่งพาฟังก์ชั่นระบบปฏิบัติการใด ๆ จึงสามารถทำงานได้โดยไม่ต้องใช้ระบบปฏิบัติการ (เช่นโดยการวางไว้ในบูตเซกเตอร์ของดิสก์) ต้องใช้ตัวประมวลผลอย่างน้อย 80186 ตัวเนื่องจากคำสั่ง "push ทันที" ที่ใช้ในการย่อโค้ดของบางไบต์

รหัสแหล่งประกอบ:

  PUSH 0x40               ; pushes 0x0040 (BIOS data segment) on the stack
  POP DS                  ; pops it into DS segment selector
  MOV SI, DS              ; copies DS to SI (timer counter is nicely placed at 40:40)
  PUSH 0x60               ; pushes 0x0060 (kbd controller port) on the stack
  POP DX                  ; pops it to DX
loop:
  MOV AL, 0xED            ; 8042 keyboard controller 'set mode indicators' command
  OUT DX, AL              ; outputs the command to the keyboard contr oller
  MOV AL, BL              ; copy BL register to AL
  OUT DX, AL              ; outputs LED state to keyboard controller
  XOR BL, 4               ; toggles bit 2 (CAPS LOCK) for next iteration
  MOV BYTE PTR[SI], 0x0A  ; sets floppy motor countdown timer to 10
wait:
  CMP BYTE PTR[SI], 0x01  ; checks if timer reached 1
  JE loop                 ; if yes, time for next iteration
  JMP wait                ; if not, checks again

การถ่ายโอนข้อมูลเลขฐานสิบหกของรหัสประกอบ:

6A 40 1F 8C DE 6A 60 5A B0 ED EE 88 D8 EE 80 F3 04 C6 04 0A 80 3C 01 74 EF EB F9

นี่คือผลลัพธ์ที่ทำงานภายใต้ MS-DOS ใน VirtualBox (ไม่ทำงานกับ DosBox น่าจะเป็นเพราะตัวควบคุมแป้นพิมพ์ไม่ได้จำลองอย่างสมบูรณ์):

กะพริบ CAPS LOCK

(ขออภัยสำหรับวิดีโอสั่นคลอน)


ตัวอย่างของการใช้งานจริงcopy con program.exe: youtube.com/watch?v=iefuJ_jZAiQ
Jerry Jeremiah

13

SmileBASIC, 36 23 ไบต์

XON MIC
WAIT 30XOFF MIC

กะพริบไฟแสดงสถานะไมโครโฟน (วิดีโอเร็ว ๆ นี้)


12

Python2 - 108 ไบต์

ทำปุ่ม capslock หรือไม่ สิ่งนี้น่าสนใจจริง ๆ แล้วเปิดใช้งานเพียงแค่ LED เท่านั้นโดยไม่กระทบกับแป้นพิมพ์หรือกดปุ่ม คุณสามารถเปลี่ยนการ4สิ้นสุด2เป็นสิ่งที่ต้องทำ 6ทำทั้งสองอย่าง

import fcntl,os,time;exec"fcntl.ioctl(os.open('/dev/console',os.O_NOCTTY),19250,%d);time.sleep(.5);"*2%(4,0)

ดูเหมือนว่าฉันได้รับข้อผิดพลาด:Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<string>", line 1, in <module> IOError: [Errno 25] Inappropriate ioctl for device
haykam

@haykam คุณอยู่บน Windows หรือไม่
Maltysen

1
ไม่ฉันกำลังmacOS Sierra Version 10.12.1 (16B2555)ไป
haykam

8

shell + numlockx, 40 35 ไบต์

[บันทึก 5 ไบต์ขอบคุณ Ryan]

กะพริบไฟ NumLock อย่างต่อเนื่องในระบบ unixish

numlockx toggle;sleep .5;exec sh $0

กะพริบเดียว 33 ไบต์

numlockx on;sleep .5;numlockx off

1
คุณสามารถใช้exec sh $0แทนwhileการบันทึก 5 ไบต์หรือsh $0ถ้าการสร้างกระบวนการตลอดไปถือว่าโอเค
Ry-

2
watch -n0.5 numlockx toggle สำหรับ 27 ไบต์
Tejas Kale

สำหรับรสชาติที่แตกต่างของข้างบนบนเชลล์แบบอินเทอร์แอคทีฟคุณสามารถพิมพ์: numlockx toggle;sleep .5;!#(27 ไบต์) สำหรับการกระพริบตาเพียงครั้งเดียว !#คือเหตุการณ์ส่วนขยายประวัติที่ถูกแทนที่ด้วยทุกสิ่งที่พิมพ์ในบรรทัดคำสั่ง
init_js

ในคำสั่งกะพริบเดียวonสามารถละเว้นได้ มันเป็นค่าเริ่มต้น
init_js

ด้วยการมอบหมายไม่มีเทคนิค: f=numlockx;$f;sleep .5;$f off(29) และเวอร์ชันลูปที่ต่ำกว่าโดยใช้การเรียกซ้ำ: g(){ f=numlockx;$f toggle;sleep .5;g;};g(40)
init_js

8

PowerShell , 71 ไบต์

for(){(New-Object -c WScript.Shell).SendKeys('{NUMLOCK}');sleep -m 500}

หมายเหตุ

  • กระพริบตลอดไป
  • ใช้NUM LOCKเพื่อบันทึกไบต์

"หากภาษาของคุณไม่มีคำสั่งสลีปย่อยที่สอง ... " - ไม่เสียงเหมือนว่ามันหายไปจาก PowerShell
Dane

@Dane ฉันขอโปสเตอร์ให้ชี้แจง หากการเลือกที่จะยอมรับการลงโทษนั้นไม่ได้รับอนุญาตฉันจะยกเลิกมัน
ต้มตุ๋น

@Dane ย้อนกลับ
นักเทศน์

ทำไมการนอนหลับ. 5 จึงไม่ทำงานที่นี่ ฉันลองแล้วดูเหมือนว่าจะอยู่ที่ประมาณ 5ms แต่ฉันคิดว่าโดยค่าเริ่มต้นคือ (-s) ดังนั้นมันจะเป็น 0.5 วินาที?
Jake Harry

1
@JakeHarry: -Secondsพารามิเตอร์คือintดังนั้น0.5จะถูกแปลงเป็นintผลลัพธ์ซึ่ง0( ในรอบถึงแม้เป็นโหมดการปัดเศษเริ่มต้น) ดังนั้นคุณจะไม่นอนเลย (ส่งผลให้เกิดความล่าช้าประมาณ 1,000 เห็บดังนั้น 10 µs) การแปลงพื้นฐานและกฎการผูกพารามิเตอร์อย่างเป็นธรรมใน PowerShell
Joey

7

VBS, 75 ไบต์

do
wscript.sleep 500
Createobject("wscript.shell").sendkeys"{numlock}"
loop

ซ้ำแล้วซ้ำอีกกะพริบสำคัญ Num Lock เป็นnumlock1 capslockไบต์สั้นกว่า


7

C #, 215 202 198 195 185 ไบต์

โดยที่ไม่รู้ว่าฉันได้ทำรหัส "เดียวกัน" เป็นคำตอบนี้โดย @Megoไปลองดูสิ!

[System.Runtime.InteropServices.DllImport("user32")]static extern void keybd_event(int v,int s,int f,int e);n=>{for(n=0;;System.Threading.Thread.Sleep(125))keybd_event(20,69,n++&2,0);};

บันทึกแล้ว 13 ไบต์ขอบคุณ @Metoniem
บันทึกไว้ 10 ไบต์ขอบคุณ @VisualMelon

นี่เป็นเวอร์ชันเต็มรูปแบบที่แสดงว่าทำงานได้:

class P
{
    [System.Runtime.InteropServices.DllImport("user32")]
    static extern void keybd_event(int v, int s, int f, int e);

    static void Main()
    {
        System.Action<int> a = n =>
        {
            for (n = 0; ; System.Threading.Thread.Sleep(125))
                keybd_event(20, 69, n++ & 2, 0);
        };

        a(0);
    }
}

สำหรับโบนัสสนุกในการเปลี่ยนแปลงn++ & 2ไปn+=2 & 2และดูล็อค NUM และหมวกล็อคกุญแจสำรองในกระพริบไฟและปิด ฉันไม่รู้ว่าทำไมมันถึงเกิดขึ้นเพราะมันไม่ควร แต่มันก็ดู "เจ๋ง"


เดี๋ยวก่อนคุณusing System;แต่เท่าที่ฉันบอกได้ว่าคุณไม่ได้ใช้อะไรโดยตรงจาก System namespace? ฉันคิดว่าคุณสามารถลบมันได้
Metoniem

@Metoniem จุดดีลายเซ็นสำหรับวิธีการที่เป็นจริงkeybd_event void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo);ฉัน releasise ฉันสามารถลบUIntPtrของหลังจากการโพสต์และให้พวกเขาเป็นintและเพียงลืมลบการใช้
TheLethalCoder

1
อ่าฉันเห็นฮ่าฮ่ามันเป็นอย่างนั้นแหละ! Nice answer man :)
Metoniem

ฉันคิดว่าคุณควรตั้งชื่อและพิมพ์ 'ฟังก์ชั่น' ทั้งสอง: คุณอ้างถึงkในที่เดียว แต่ไม่ได้กำหนดไว้อย่างชัดเจน ไม่ได้ตรวจสอบ แต่ฉันคิดว่าคุณควรที่จะดีกว่าถ้ามีการโทรไปที่ keybd_event ในวงที่ไม่มีการขีดข่วนฉันควรคิดว่า: for(int i=0;;...Sleep(250))keybd_event(i++&2)หรือบางสิ่งบางอย่าง
VisualMelon

@VisualMelon ขอบคุณฉันได้อัปเดตรหัสแล้วต้องเปลี่ยนโหมดสลีปเพื่อให้ได้จังหวะที่ถูกต้อง :)
TheLethalCoder

6

Java 7, 121 118 113 ไบต์

void a()throws Exception{java.awt.Robot r=new java.awt.Robot();r.keyPress(20);r.delay(500);r.keyRelease(20);a();}

กดเพียงครั้งเดียวและปล่อยเพียงแค่เรียกรัฐ; มันไม่กระพริบตา ดังนั้นเราอาจวนซ้ำและดูเหมือนว่าการเรียกซ้ำเป็นวิธีที่ถูกที่สุดในการทำเช่นนั้น


1
ช่างน่าเสียดายที่ฉันไม่มีล่าม QBasic ที่นี่! เพราะมันทำโดยใช้คำสั่งPoke !
sergiol

สิ่งนี้ได้รับการปรับให้เหมาะกับการโทรหรือในที่สุดจะเกินขีด จำกัด การโทรหรือไม่?
Cyoce

@Cyoce ฉันไม่คิดว่า Java มีการเพิ่มประสิทธิภาพการโทรหางจนถึง Java 9 ดังนั้นในที่สุดมันก็ถึงขีดจำกัดความลึกของการเรียกซ้ำ แต่ก็ไม่เป็นไรเพราะฉันเพียงแค่ต้องกระพริบแสงครั้งเดียว:]
Poke

1
ฉันหมายความว่าคุณสามารถใส่รหัสทั้งหมดลงในแลมบ์ดาซึ่งสูญเสียค่าใช้จ่ายในการประกาศฟังก์ชั่น Kind of like: ()->for(;;){java.awt.Robot r=new java.awt.Robot();r.keyPress(20);r.delay(500);r.keyRelease(20);}ซึ่งเป็นการประหยัด 18 ไบต์เนื่องจากค่าใช้จ่ายการประกาศแลมบ์ดา 4 ตัวอักษร
Tamoghna Chowdhury

1
อีกเหตุผลหนึ่งที่ฉันจะไม่กลับไปอีก! ;) ในทุกกรณีเพียงแค่เปลี่ยนคำตอบเป็น Java 8 และไปสู่คะแนนสองหลัก ติดตั้งหากคุณยังไม่ได้ทำการทดสอบ
Tamoghna Chowdhury

5

JavaScript, 82 ไบต์

เครดิตไปที่ @FinWจริงๆแล้วฉันเพิ่งเปลี่ยนฟังก์ชั่นเก่าไปเป็นฟังก์ชั่นลูกศร ES6 ใหม่เพื่อประหยัดไบต์บางส่วน และเพราะฉันไม่มีคะแนนเพียงพอที่จะแสดงความคิดเห็นฉันเขียนคำตอบใหม่

แก้ไข - ลบวงเล็บเหลี่ยมเพื่อบันทึกอีก 2 ไบต์

o=new ActiveXObject("WScript.Shell");setInterval(()=>o.SendKeys("{NUMLOCK}"),500);

รหัสของเขาดูเหมือนนี้

o=new ActiveXObject("WScript.Shell");setInterval(function(){o.SendKeys("{NUMLOCK}")},500);

1
สำหรับฟังก์ชั่นลูกศรคุณไม่จำเป็นต้องใส่วงเล็บไว้ข้างหน้า
fəˈnɛtɪk

ลืมไปโดยสิ้นเชิงเกี่ยวกับเรื่องนี้ขอบคุณ
ไม้บรรทัด 23

ฉันหมายถึงวงเล็บที่เหลือจากเมื่อคุณลบฟังก์ชั่น ()
fɛnɛtɪk

โอ้ แต่คุณไม่สามารถทำได้มันจะไม่ทำงาน แต่คุณสามารถลบวงเล็บได้เนื่องจากไม่ต้องการในข้อความสั่งบรรทัดเดียว (ด้วยเหตุผลบางอย่างความคิดเห็นของคุณทำให้ฉันนึกถึงพวกเขาแม้ว่าคุณจะหมายถึงอะไรที่แตกต่างออกไป)
ไม้บรรทัด 23

บันทึกไบต์โดยทั้งแทนที่()ด้วยอีกตัวเดียวเช่น_หรือโดยการทำพารามิเตอร์ด้วยการเริ่มต้นเช่นดังนั้น:o (o=new ActiveXObject("WScript.Shell"))=>
Shaggy

4

สกาลา, 84 83 78 ไบต์

แก้ไข: บันทึก 1 ไบต์ขอบคุณ @TheLethalCoder

เขาแนะนำให้ใช้ในสถานที่ของ1>0true

แก้ไข 2: บันทึก 5 ไบต์ด้วย @ Corvus_192

เขาแนะนำให้ใช้สัญกรณ์มัดและวางวงเล็บหลังตัวสร้าง

while(1>0){val r=new java.awt.Robot;r keyPress 20;r keyRelease 20;r delay 500}

Ungolfed:

while(1>0) {
    val r=new java.awt.Robot()
    r.keyPress(20)
    r.keyRelease(20)
    r.delay(500)
}

พอร์ต Scala มาตรฐาน@Poke 's Java คำตอบ พิมพ์โดยตรงในพรอมต์ล่ามสกาล่า

วิดีโอของมันกะพริบทั้ง Caps Lock LED และ OSD ของฉันเพื่อบูต!

กะพริบ Caps Lock LED และ OSD


ที่คุณสามารถทำได้for(;;)หรือwhile(1>0)หรือwhile(1)ใน Scala?
TheLethalCoder

ที่สองเป็นไปได้ การประหยัด 1 ไบต์ซึ่งไม่เคยเกิดขึ้นกับฉันมาก่อน ขอบคุณ!
Tamoghna Chowdhury

คุณสามารถใช้สัญกรณ์มัด: เป็นไบต์สั้นกว่าr keyPress 20 r.keyPress(20)เช่นเดียวกับการโทรด้วยวิธีอื่น ๆ ประหยัดได้ทั้งหมด 3 ไบต์
corvus_192

และวางวงเล็บจากการเรียก constructor เพื่อบันทึกอีก 2 ไบต์
corvus_192

4

ช่องเสียบ Linux, 8 + 11 = 19 ไบต์

การสาธิต

ไฟล์f=1B 5B 33 71 1B 5B 30 71

native@shell:~$ pv f -q -L8

วัด?

ตามECMA-48 , 1Bเริ่มต้นลำดับหนีสถานีควบคุม

Caps on = 1B 5B 33 71, จากนั้นปิด =1B 5B 30 71

pv มุมมองความคืบหน้า

f ไฟล์

-q เงียบ

-L8 8 ไบต์ / วินาที = 0.5 วินาทีล่าช้า

การใช้

เตรียมการ

#Create file
echo "1B 5B 33 71 1B 5B 30 71"|xxd -r -p > f 

#Install progress view utility
sudo apt install pv

Ctrl+ Alt+ F6เปลี่ยนเป็นคอนโซลดั้งเดิม

วิ่ง pv f -q -L8

Ctrl+ Alt+ F7สลับกลับ


3

Bash + Xdotool ขนาด 36 ไบต์

for((;;)){ xdotool key 66;sleep .5;}

เพียงรันมันใน bash shell จำเป็นต้องอยู่ในสภาพแวดล้อมแบบกราฟิก วง Infinite จากที่นี่ เปลี่ยน Num_Lock เป็น 66 เพื่อบันทึก 6 ไบต์และต้องขอบคุณ @Michael Kjörlingเป็น 2 ไบต์


คุณสามารถบันทึกอย่างน้อยสองไบต์โดยลบช่องว่างที่ไม่จำเป็นออก คุณไม่ต้องการช่องว่างก่อนหน้าวงเล็บปีกกาปิดและคุณไม่ต้องการช่องว่างโดยรอบเครื่องหมายอัฒภาคคั่นคำสั่ง คุณทำต้องการช่องว่างหลังจากปีกกาเปิดแม้ว่า
CVN

นอกจากนี้เกี่ยวกับการแก้ไขครั้งแรกของคุณ: โปรดทราบว่าคุณสามารถใช้:เป็นนามแฝงสำหรับtrueระบบส่วนใหญ่ while :;do sth;doneทำสิ่งเดียวกันwhile true;do sth;doneแต่สั้นกว่าสามไบต์ for((;;)){ sth;}ยังคงสั้นกว่านี้
CVN

@Cyoce ที่ไหน มันไม่ได้ผลสำหรับฉัน
Feldspar15523

@Cyoce ฉันคิดว่ามันใช้ได้กับฟังก์ชั่นการประกาศเท่านั้น
Feldspar15523

@ Feldspar15523 โอ๊ะไม่เป็นไรแล้ว
Cyoce

3

xdotoolขนาด 20 ไบต์

key -delay=500 66 66

กดปุ่ม66หรือที่เรียกว่าCaps Lockสองครั้งโดยมีความล่าช้า500 msระหว่างการกดปุ่ม

โปรดทราบว่า xdotool เป็นภาษาสคริปต์ มันสามารถเรียกใช้จากไฟล์และยังรองรับ shebangs เนื่องจากexecคำสั่งของมันอนุญาตให้เรียกใช้โปรแกรมภายนอกได้จึงมีความสามารถในการเพิ่มและทดสอบแบบดั้งเดิมดังนั้นจึงเป็นไปตามข้อกำหนดของภาษาโปรแกรม

ทดสอบการทำงาน

$ cat blink.xdo; echo
key -delay=500 66 66
$ xdotool blink.xdo

ป้อนคำอธิบายรูปภาพที่นี่


3

Python ใช้ pyautogui: 126 143 115 103 ไบต์

ขอบคุณ @ nedla2004 สำหรับการบันทึก 12 ไบต์

from pyautogui import*
import time
while 1:keyDown('capslock');time.sleep(.5);keyUp('capslock')pslock')

1
คุณสามารถเปลี่ยนวงในขณะที่ไปwhile 1:keyDown('capslock');time.sleep(.5);keyUp('capslock')และคุณสามารถเปลี่ยนบรรทัดแรกที่และที่สองfrom pyautogui import* import time
nedla2004

คุณสามารถลบ 'capslock' ที่ซ้ำกันได้ import time;c='capslock' ...
init_js

คุณสามารถลบได้timeโดยสิ้นเชิง from pyautogui import*; while 1:press('capslock',1,.5). YMMV ในสภาพแวดล้อมของฉัน pyautogui ส่งผลกระทบต่อกรณีที่ฉันพิมพ์ แต่แสงไม่กระพริบ
init_js

3

Bash, 31 ไบต์

xset led 1;sleep .5;xset -led 1

ทำงานใน X โดยไม่ต้องเข้าถึงรูท! (ถ้ามันไม่ทำงานสำหรับคุณดูฟังก์ชั่นเริ่มต้นของรหัสด้านล่างเพื่อให้แน่ใจว่า xkbcomp มีการกำหนดค่าอย่างถูกต้อง)

และสคริปต์โบนัสเพื่อส่งรหัสมอร์สผ่านแคปล็อค (ไม่ใช่กอล์ฟ):

unit=0.15
id=1
function init {
        file=/tmp/blink_tmp
        xkbcomp $DISPLAY $file
        sed -i 's/!allowExplicit/allowExplicit/' $file
        xkbcomp $file $DISPLAY &>/dev/null
        rm $file
}
if [[ -z $1 ]]; then
        echo "Usage : blink [message]"
        exit 1
fi
init
function finish {
        off
}

function on {
#su -c 'setleds -L +caps < /dev/console'
xset led $id
}
function off {
#su -c 'setleds -L -caps < /dev/console'
xset -led $id
}
function slp {
        sleep $(echo "$unit*$1" | bc)
}
function dot {
on
slp 1
off
slp 1
}
function dash {
on
slp 3
off
slp 1
}
function gap {
        slp 3
}
function morse {
        msg=$1
        for (( i=0; i<${#msg}; i++ )); do
                char=${msg:$i:1}
                if [[ $char == "-" ]]; then
                dash
                elif [[ $char == "." ]]; then
                dot
                elif [[ $char == "/" ]]; then
                gap
                fi
        done
}
while true; do
        morse $1
done

ตัวอย่าง: blink "...././.-../.-../---//.--/---/.-./.-../-..///"



2

Bash, 103 ไบต์

cd /sys/class/leds/asus\:\:kbd_backlight;while true;do echo 3;sleep .5;echo 0;sleep .5;done>brightness

จะต้องเรียกใช้เป็นราก

ไฟแบ็คไลท์ของคีย์บอร์ดทั้งหมดกะพริบหรือไม่ (วิดีโอจะมาเมื่อฉันกลับถึงบ้าน)


1
Does flashing the entire keyboard backlight work?ถ้าคุณคิดว่ามันไฮไลต์ของคีย์บอร์ดคือตัวบ่งชี้ของการไฮไลต์คีย์บอร์ดที่กำลังเปิดหรือปิดและมันก็คือ "ตั้งอยู่บนคีย์บอร์ด" ดังนั้นแน่นอนฉันคิดว่ามันนับ
zeppelin

2

JavaScript, 90 ไบต์

o=new ActiveXObject("WScript.Shell");setInterval(function(){o.SendKeys("{NUMLOCK}")},500);

มันต้องมีActiveXความหมายว่ามันจะทำงานบน IE เท่านั้น (Edge ไม่รองรับมัน) มันกะพริบปุ่ม NUMLOCK เพราะเช่นเดียวกับคำตอบอื่น ๆ จะสั้นกว่า CAPSLOCK หรือ SCROLLLOCK

Ungolfed

shell = new ActiveXObject("WScript.Shell");
setInterval(
    function(){
        shell.SendKeys("{NUMLOCK}")
    }
,500);

2

Bash, 33 ไบต์

สิ่งนี้จะถือว่า Num-Lock เปิดอยู่ก่อนจะทำงาน สลับoffและonอื่น ๆ ต้องใช้numlockxแพคเกจอย่างเห็นได้ชัด;)

numlockx off;sleep .5;numlockx on

แก้ไข:

Saw Alex Howansky โพสต์โซลูชันนี้แล้ว แต่ยังไม่ได้ทำเครื่องหมายด้วย Bash และฉันเพิ่งค้นหาไซต์สำหรับ "Bash"


+1 คุณไม่ต้องกระพริบตาซ้ำ ๆ (ฉันคิดว่า)
NoOneIsHere

หากคุณอยู่ในเชลล์แบบโต้ตอบคุณสามารถพิมพ์ที่บรรทัดคำสั่ง: numlockx toggle;sleep .5;!# (27 ไบต์) !#เป็นเหตุการณ์ที่ขยายไปถึงทุกสิ่งในบรรทัดคำสั่งที่พิมพ์ไปแล้ว
init_js

2

Batch File (ด้วยความช่วยเหลือของ vbs), 74 + 2 = 76 ไบต์

echo Createobject("wscript.shell").sendkeys"{numlock}">z.vbs&z&timeout 1&z

ตามบางส่วนในคำตอบของ Trelzevir

.vbsPATHEXTจะรวมโดยอัตโนมัติ


1

สคริปต์ Kotlin ขนาด 72 ไบต์

แม้ว่าจะไม่ใช่ขนาดที่เล็กที่สุด แต่ก็ยังค่อนข้างดี ฉันรักการวิ่งของ kotlin สำหรับบางสิ่งและนี่คือหนึ่งในนั้น (เล็กกว่า val r = java.awt.Robot () เพราะเราไม่ต้องการทั้ง r และ val r = ยังคงนานกว่า MathLab)

java.awt.Robot().run{while(1>0){keyPress(20);keyRelease(20);delay(500)}}

Ungolfed:

java.awt.Robot().run {
    while(1>0) {
        keyPress(20)
        keyRelease(20)
        delay(500)
    }
}

1

Python3, 55 49 ไบต์

ขอบคุณ @NoOneIsHere สำหรับ -4 ไบต์!

ซึ่งรวมถึงแพคเกจ: pyautoguiและtimeโมดูล
รหัส:

while(1):pag.press("capslock");time.sleep(0.5)  

ขอบคุณ @NoOneIsHere สำหรับ -4 ไบต์!
กุญแจสำคัญในการดำเนินการ:
Caps Lock


3
ยินดีต้อนรับสู่เว็บไซต์! :)
DJMcMayhem

คุณสามารถบันทึกได้ไม่กี่ไบต์โดยใช้while 1และทำให้เป็นซับแบบหนึ่งด้วยเซมิโคลอน ( while 1:pyautogui.press("capslock");time.sleep(.5))
NoOneIsHere

1
น่าเสียดายที่นี่เป็นตัวอย่าง แต่ด้วยการเพิ่มimport pyautoguiไปยังจุดเริ่มต้นของโปรแกรมและการเปลี่ยนที่เหลือให้while 1:pyautogui.press("capslock");time.sleep(.5)คุณสามารถทำให้คำตอบนี้ถูกต้อง
caird coinheringaahing

@cairdcoinheringaahing นอกจากนี้ยังต้องimport timeมี
FlipTack

@cairdcoinheringaahing แน่นอนซึ่งเป็นเหตุผลที่คุณต้องการimport time...
FlipTack

1

VBA, 82 ไบต์

Anonymous VBE ฟังก์ชั่นหน้าต่างทันทีที่ไม่มีการป้อนข้อมูลและทำให้ผู้ใช้รำคาญ ขึ้นอยู่กับฟังก์ชั่นการนอนหลับของ windows kernel32 ที่ประกาศด้านล่าง

ปฏิญญา Sleep (Win-32)

Declare Sub Sleep Lib "kernel32" (ByVal M&)

ปฏิญญา Sleep (Win-64, + 8 Bytes)

Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal M&)

ไม่ระบุชื่อฟังก์ชัน VBE หน้าต่างทันที

Do:SendKeys"{CAPSLOCK}":Sleep 500:DoEvents:Loop

เวอร์ชันสนุกยิ่งขึ้นเล็กน้อย 97 ไบต์

ชุดของรูทีนย่อยซ้ำแบบเรียกซ้ำซึ่งทำให้ผู้ใช้รำคาญ

Sub A
Application.OnTime Now+5.8E-6,"B"
End Sub

Sub B
DoEvents
SendKeys"{CAPSLOCK}"
A
End Sub

เวอร์ชันที่น่าสงสัย, 66 + 2 ไบต์

ฉันไม่แน่ใจว่าต้องประกาศฟังก์ชั่นจาก dll นับว่ามีฟังก์ชั่น inbuilt หรือไม่ในกรณีที่ไม่เป็นเช่นนั้นแล้วนี่คือรุ่น 66 + 2 ไบต์ที่รอ 1 วินาที

Do:DoEvents:Application.Wait Now+#0:0:1#:SendKeys"{CAPSLOCK}":Loop
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.