107
26
Most computer keyboards feature a small integrated LED light, indicating the current input mode, as controlled with the CAPS LOCK button.
Your task is to blink it:
- Turn it on;
- Wait for 0.5 (+/-0.1) seconds;
- Turn it off again.
Video footage of the LED blinking is highly appreciated !
Rules
You can blink a different LED (e.g. Scroll Lock, Num Lock, Wi-Fi status etc), if you wish, but it must be physically located on your keyboard;
If your language is missing a subsecond
sleep
command, your program may use a 1 second delay instead, at a penalty of +2 bytes (that's for0.
);Your program must blink at least once, what happens afterward is up to you, i.e. it can continue to blink (in which case you must wait for the same delay, before turning it on again), or halt e.t.c.;
If the chosen LED is ON by default, on your system, you can assume that it has been explicitly switched off (e.g. manually), before the program is run;
This is code-golf, the shortest answer in bytes wins.
Leaderboard
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>
84Cheating answer that doesn't quite work: on a Linux system, intentionally crash the kernel. Linux's equivalent of a BSOD flashes the Caps Lock light, just in case the crash also took down the video hardware and you can't see the BSOD report onscreen. Unfortunately, as far as I can tell it flashes a little too fast to be an eligible answer. This would lead to a (somewhat malicious) 14-byte solution if it were allowed. – None – 2017-02-22T20:59:51.113
Does it need to be an LED, or can it be any type of indicator light on the keyboard? – 12Me21 – 2017-02-22T21:53:57.820
@12Me21 Well, it's a tricky one, I'm probably ok with a different type of indicator, as long as it is a dedicated hardware thing, which sole purpose is to indicate that something is on or off, e.g. blinking a pixel on a general purpose touch screen does not count. – zeppelin – 2017-02-22T22:37:56.603
57Now blink it in Morse code: "Help, I'm trapped in a keyboard factory!" – mbomb007 – 2017-02-22T22:48:08.947
12@ais523 my laptop will do that if I shake it (0 bytes). Too fast tho... – Tim – 2017-02-22T23:35:16.577
18The capslock key on a C64 is a mechanical switch. Blinking that might be a bit tricky... – Mark – 2017-02-23T00:56:15.827
2@Mark, still can be done with a bit of Arduino and some type of actuator, not sure on how to include them in the byte count though. – zeppelin – 2017-02-23T07:28:11.827
3I want to see an Objective-c or Swift answer toggling the capslock on an iPhone keyboard – Albert Renshaw – 2017-02-23T08:57:45.927
8Now I'm wondering whether the low-battery LED on my wireless keyboard flashes at the correct rate. If so: zero bytes. – Roger Lipscombe – 2017-02-23T10:24:35.987
Is it okay if we write a snippet (I'm thinking about Swift, where writing an entire program is literally making a whole app). – Daniel – 2017-02-23T13:24:27.757
@Dopapp, by default, you should either submit a full program or a function, so you can probably just do the latter. – zeppelin – 2017-02-23T16:53:25.593
@mbomb007 I wrote that patch once :) – hobbs – 2017-02-24T00:53:16.233
2
@mbomb007 Cameras can steal data from computer hard drive LED lights. "The researchers found that once malware is on a computer, it can indirectly control the HDD LED, turning it on and off rapidly (thousands of flickers per second)—a rate that exceeds the human visual perception capabilities. As a result, highly sensitive information can be encoded and leaked over the fast LED signals, which are received and recorded by remote cameras or light sensors."
– Keith McClary – 2017-02-24T04:44:39.6334
@KeithMcClary Even more impressive is that data may be exfiltrated from an air-gapped machine (up to 8 bits per hour) using room temperature fluctuations created by changing the amount of heat the machine generates. Other methods
– mbomb007 – 2017-02-24T15:39:10.533@whrrgarbl - I believe most implementations here will actually be longer without the loop, as this way they don't have to repeat the code to turn the Caps Lock (or whatever indicator they use) off. Otherwise, it is not required (i.e. you can just blink once). – zeppelin – 2017-02-24T20:53:26.890
I made a code golf puzzle inspired by this one, called "Blink the webcam light!" Is this okay? I've given the appropriate credit, including linking to both this question and your user profile on [codegolf.se].
– haykam – 2017-02-26T17:39:39.6601@haykam I'm fine with that, it's actually nice to hear that my challenge has inspired you to post your own. – zeppelin – 2017-02-26T18:52:25.737
@zeppelin if my language has a way to do a subsecond sleep but it's more than 2 bytes longer than a 1 second sleep, can I choose to take the penalty for the 1 sec sleep? – briantist – 2017-02-27T03:42:12.657
@briantist This rule was introduced to allow languages which can not do a sub-second delay to still compete, so if your language can do a sub-second delay, I would say that you have to use that. However, I release that there might be some borderline cases (e.g. there is a sub-second delay command, but it is not documented or is only available in some implementations but not the others), in those cases I rely on the community to do its vote. – zeppelin – 2017-02-27T09:16:34.840
@RogerLipscombe you would need a program to drain the battery then ;) – Ale – 2017-02-27T18:51:48.697
By the way, why a two-byte penalty for a one second delay? In many languages (e.g., C) you can just drop the zero and write ".5". – Ale – 2017-02-28T11:24:53.383
@Ale, in some languages you can shortcut it to .5, but in others it would be
500
or0.5
instead, I was trying to find a compromise here. – zeppelin – 2017-02-28T11:41:16.177@zeppelin right didn't think that even in C it would have even been a usleep(500000)... as it doesn't take floating point parameters – Ale – 2017-02-28T13:52:34.347
@mbomb007 lol beat me to it – voices – 2017-03-11T09:05:10.843
@DLosc are you there? It really deserves a QBasic answer! – sergiol – 2018-06-09T23:18:04.990