Testing keypress events using Mousetrap, a simple library for handling keyboard shortcuts in Javascript.
Numbers 0 to 9 will render Japanese equivalent using unicode characters. To hear audio of Japanese numbers
Testing keypress events using Mousetrap, a simple library for handling keyboard shortcuts in Javascript.
Numbers 0 to 9 will render Japanese equivalent using unicode characters. To hear audio of Japanese numbers
| (function() { | |
| 'use strict'; | |
| // japanese numbers data | |
| var nums = [ | |
| { japanese: '〇', english: 0, reading: 'zero' }, // 〇 | |
| { japanese: '一', english: 1, reading: 'ichi' }, // 一 | |
| { japanese: '二', english: 2, reading: 'ni' }, // 二 | |
| { japanese: '三', english: 3, reading: 'san' }, // 三 | |
| { japanese: '四', english: 4, reading: 'yon' }, // 四 | |
| { japanese: '五', english: 5, reading: 'go' }, // 五 | |
| { japanese: '六', english: 6, reading: 'roku' }, // 六 | |
| { japanese: '七', english: 7, reading: 'nana' }, // 七 | |
| { japanese: '八', english: 8, reading: 'hachi' }, // 八 | |
| { japanese: '九', english: 9, reading: 'kyū' } // 九 | |
| ]; | |
| // bind key event | |
| // can I do multiple binds? | |
| Mousetrap.bind('0', function(e, n) { update(n); }); | |
| Mousetrap.bind('1', function(e, n) { update(n); }); | |
| Mousetrap.bind('2', function(e, n) { update(n); }); | |
| Mousetrap.bind('3', function(e, n) { update(n); }); | |
| Mousetrap.bind('4', function(e, n) { update(n); }); | |
| Mousetrap.bind('5', function(e, n) { update(n); }); | |
| Mousetrap.bind('6', function(e, n) { update(n); }); | |
| Mousetrap.bind('7', function(e, n) { update(n); }); | |
| Mousetrap.bind('8', function(e, n) { update(n); }); | |
| Mousetrap.bind('9', function(e, n) { update(n); }); | |
| // run button events | |
| btnEvents(); | |
| // function to update text | |
| function update(n) { | |
| d3.select('#number').html(nums[n].japanese); | |
| d3.select('#reading').text(nums[n].reading); | |
| d3.selectAll('#number-btns li').style('opacity', 1); | |
| d3.select('#num-' + n).style('opacity', 0.4); | |
| } | |
| // event listeners for non keyboard | |
| function btnEvents() { | |
| _.times(10, function(n) { | |
| // fade the button out and change sets to use | |
| d3.select('#num-' + n).on('click', function() { | |
| // reset button opacity | |
| d3.selectAll('#number-btns li').style('opacity', 1); | |
| // fade out button selection | |
| d3.select(this).style('opacity', 0.4); | |
| update(n); | |
| }); | |
| }); | |
| } | |
| })(); | |
| <!DOCTYPE html> | |
| <html lang="en"> | |
| <head> | |
| <meta charset="utf-8"> | |
| <title>d3 | keypress keyboard events</title> | |
| <meta name="author" content="Sundar Singh | eesur.com"> | |
| <link rel="stylesheet" href="main.css"> | |
| <script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script> | |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.min.js" charset="utf-8"></script> | |
| <script src="https://cdnjs.cloudflare.com/ajax/libs/mousetrap/1.4.6/mousetrap.js" charset="utf-8"></script> | |
| </head> | |
| <body> | |
| <header> | |
| <p>Use button/keyboard to show number in Japanese:</p> | |
| <ul id="number-btns"> | |
| <li id="num-0">0</li> | |
| <li id="num-1">1</li> | |
| <li id="num-2">2</li> | |
| <li id="num-3">3</li> | |
| <li id="num-4">4</li> | |
| <li id="num-5">5</li> | |
| <li id="num-6">6</li> | |
| <li id="num-7">7</li> | |
| <li id="num-8">8</li> | |
| <li id="num-9">9</li> | |
| </ul> | |
| </header> | |
| <h1 id="number"></h1> | |
| <footer> | |
| <h3 id="reading"></h3> | |
| </footer> | |
| <script src="d3_code_japanese_numbers.js" charset="utf-8"></script> | |
| </body> | |
| </html> |
| @import url(http://fonts.googleapis.com/css?family=Source+Code+Pro:400,600); | |
| body, h1, h3 { | |
| font-family: "Source Code Pro", Consolas, monaco, monospace; | |
| line-height: 1.5; | |
| font-weight: 400; | |
| } | |
| html, body { | |
| height: 100%; | |
| } | |
| body { | |
| position: relative; | |
| color: #00B0DD; | |
| padding: 20px; | |
| } | |
| #number { | |
| margin: 0 auto; | |
| position: relative; | |
| width: 300px; | |
| height: 280; | |
| top: 20%; | |
| left: 0; | |
| } | |
| p { | |
| padding-top: 0; | |
| margin-top: 0; | |
| font-size: 13px; | |
| line-height: 1; | |
| } | |
| h1 { | |
| font-size: 256px; | |
| line-height: 100%; | |
| font-weight: normal; | |
| color: #EE3124; | |
| } | |
| h3 { | |
| font-size: 18px; | |
| color: #EE3124; | |
| letter-spacing: 2px; | |
| } | |
| ul#number-btns { | |
| color: #fff; | |
| list-style: none; | |
| padding: 0; | |
| margin: 0; | |
| } | |
| ul#number-btns li{ | |
| display: inline-block; | |
| padding: 2px 8px; | |
| background: #00B0DD; | |
| } | |
| footer { | |
| position: absolute; | |
| bottom: 100px; | |
| left: 20px; | |
| } |