当前位置: 首页 > news >正文

键盘按键测试

参考:https://www.keyboardtest.cn/

三种布局

全键盘

隐藏数字区域

隐藏方向区域和数字区域

<html> <head> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/> <title>键盘测试</title> </head> <style> body { background:#111; } h1,h2 { text-align:center; color:#eee; } p { color:#eee; } a { text-decoration:none; color:#eee; } button { width:50px; height:50px; margin:5px; background:#333; color:#eee; border-radius:10px; box-shadow:0 5px #444; } table { } tr { white-space: nowrap; } td { vertical-align:top; padding:0; } .keydown { background:#ffffff; color:#000000; } .keyup { background:#004400; color:#00aa00; } #info { color:#fff; padding-left:50px; } #keyboard { border:1px solid gray; border-radius:20px; padding:30px; margin:auto; } #k112 { margin-left:50px; } #k116 { margin-left:40px; } #k120 { margin-left:40px; } #k8 { width:110px; } #k9 { width:76px; } #k220 { width:76px; } #k107, #k13a { height:110px; } #k20 { width:90px; } #k13, #k16 { width:127px; } #k16a { width:155px; } #k17, #kwin, #k18, #k18a, #kfn, #k93, #k17a { width:65px; } #k32 { width:385px; } #k96 { width:112px; } #padmove { padding:0 0 0 30px; } #padnum { padding:60px 0 0 30px; } #arrow { margin-top:60px; } </style> <body> <h1>键盘测试</h1> <p><input type="checkbox" id="check_padmove" checked>PadMove <input type="checkbox" id="check_padnum" checked>PadNum <span id="info">key keyCode location down/up </span></p> <table id="keyboard"> <tr> <td> <button id="k27">Esc</button> <button id="k112">F1</button> <button id="k113">F2</button> <button id="k114">F3</button> <button id="k115">F4</button> <button id="k116">F5</button> <button id="k117">F6</button> <button id="k118">F7</button> <button id="k119">F8</button> <button id="k120">F9</button> <button id="k121">F10</button> <button id="k122">F11</button> <button id="k123">F12</button> <br> <button id="k192">`</button><button id="k49">1</button><button id="k50">2</button> <button id="k51">3</button> <button id="k52">4</button> <button id="k53">5</button> <button id="k54">6</button> <button id="k55">7</button> <button id="k56">8</button> <button id="k57">9</button> <button id="k48">0</button> <button id="k189">-</button> <button id="k187">=</button> <button id="k8">BackSpace</button> <br> <button id="k9">Tab</button> <button id="k81">Q</button> <button id="k87">W</button> <button id="k69">E</button> <button id="k82">R</button> <button id="k84">T</button> <button id="k89">Y</button> <button id="k85">U</button> <button id="k73">I</button> <button id="k79">O</button> <button id="k80">P</button> <button id="k219">[</button> <button id="k221">]</button> <button id="k220">\</button> <br> <button id="k20">CapsLk</button> <button id="k65">A</button> <button id="k83">S</button> <button id="k68">D</button> <button id="k70">F</button> <button id="k71">G</button> <button id="k72">H</button> <button id="k74">J</button> <button id="k75">K</button> <button id="k76">L</button> <button id="k186">;</button> <button id="k222">'</button> <button id="k13">Enter</button> <br> <button id="k16">Shift</button> <button id="k90">Z</button> <button id="k88">X</button> <button id="k67">C</button> <button id="k86">V</button> <button id="k66">B</button> <button id="k78">N</button> <button id="k77">M</button> <button id="k188">,</button> <button id="k190">.</button> <button id="k191">/</button> <button id="k16a">Shift</button> <br> <button id="k17">Ctrl</button> <button id="kwin">Win</button> <button id="k18">Alt</button> <button id="k32">Space</button> <button id="k18a">Alt</button> <button id="kfn">Fn</button> <button id="k93">Menu</button> <button id="k17a">Ctrl</button> </td> <td id="padmove"> <button id="PrintScreen">PrtSc</button> <button id="k145">ScrLk</button> <button id="k19">Pause</button><br> <button id="k45">Insert</button> <button id="k36">Home</button> <button id="k33">PgUp</button><br> <button id="k46">Del</button> <button id="k35">End</button> <button id="k34">PgDn</button> <table id="arrow"> <tr><td></td><td><button id="k38">↑</button></td><td></td></tr> <tr><td><button id="k37">←</button></td><td><button id="k40">↓</button></td><td><button id="k39">→</button></td></tr> </table> </td> <td id="padnum"> <table> <tr><td><button id="k144">Num</button></td><td><button id="k111">/</button></td><td><button id="k106">*</button></td><td><button id="k109">-</button></td></tr> <tr><td><button id="k103">7</button></td><td><button id="k104">8</button></td><td><button id="k105">9</button></td><td rowspan="2"><button id="k107">+</button></td></tr> <tr><td><button id="k100">4</button></td><td><button id="k101">5</button></td><td><button id="k102">6</button></td></tr> <tr><td><button id="k97">1</button></td><td><button id="k98">2</button></td><td><button id="k99">3</button></td><td rowspan="2"><button id="k13a">Ent</button></td></tr> <tr><td colspan="2"><button id="k96">0</button></td><td><button id="k110">.</button></td></tr> </table> </td> </tr> </table> </div> <br> <a href="https://www.keyboardtest.cn/" target="_blank">keyboardtest</a> <script> document.onkeydown = function(e){ info.innerText = e.key + ' ' + e.keyCode + ' ' + e.location + ' down'; if (e.location == 2) eval('k' + e.keyCode + 'a').className = 'keydown'; else if (e.key == 'Enter' && e.location == 3) eval('k' + e.keyCode + 'a').className = 'keydown'; else eval('k' + e.keyCode).className = 'keydown'; //禁止浏览器快捷键 e.preventDefault(); e.stopPropagation(); return false; } document.onkeyup = function(e){ info.innerText = e.key + ' ' + e.keyCode + ' ' + e.location + ' up'; if (e.location == 2) eval('k' + e.keyCode + 'a').className = 'keyup'; else if (e.key == 'Enter' && e.location == 3) eval('k' + e.keyCode + 'a').className = 'keyup'; else eval('k' + e.keyCode).className = 'keyup'; } check_padmove.onclick = function(){ if (check_padmove.checked == true) padmove.style.display = 'block'; else padmove.style.display = 'none'; } check_padnum.onclick = function(){ if (check_padnum.checked == true) padnum.style.display = 'block'; else padnum.style.display = 'none'; } </script> </body> </html>
http://www.jsqmd.com/news/319116/

相关文章:

  • 在计算属性中获取 Vuex 状态是标准做法(附:Vue 3 计算属性详解及和 watch 对比)
  • VSCode如何使用claude code(VS Code + Claude API 详细教程)(API 配置图文全攻略)
  • 深度学习篇--- transform(转换器)
  • 【双端队列bfs】
  • 算法入门打卡Day2___滑动窗口法、螺旋矩阵、前缀和(区间和问题,开发商购买土地问题)、数组与容器的区别
  • 【Vue知识点总结】Vue 路由中的 hidden: true:路由控制技巧
  • AI模型训练:数据获取与增强
  • 子网划分原理、等长子网划分方法、等长子网划分实验
  • curl使用
  • 芒格的“锚定效应“警示:避免固有思维陷阱
  • 如何使用 Markdown 和思维导图可视化你的想法
  • 2025年上海地下室渗水维修TOP5专业服务商深度评测
  • 系统思考:以客户为中心
  • 曾经火爆的捕鱼游戏:一套完整的概率操控、经济循环与用户留存设计方案
  • 防止3.3v数字电源干扰到模拟电源3.3v 需做隔离,这里怎么实现
  • 旅游小程序设计毕业论文+PPT(附源代码+演示视频)
  • 基于multisim的声音识别的蚊子雌雄判别专用电路设计
  • 一个后台管理所有 AI:手把手教你搭建属于自己的 AI 中转站(CLIProxyAPI版)
  • 程序员如何利用AI进行资源调度
  • YOLO26涨点改进 | 全网独家创新/Conv篇 | AAAI 2025 | PConv新型风车形卷积和SPConv二次创新改进(移动风车卷积,使它充分活跃起来),增强特征提取,扩大感受野
  • 基于multisim的10min数字秒表设计
  • 从数据孤岛到系统承载:星际荣耀航天研发中的单一数据源工程实践
  • Nginx基础
  • 【LeetCode刷题】二叉树的中序遍历
  • nacos作为dubbo服务注册中心
  • @function 和 @description 的区别是什么
  • Neo4j的安装与配置
  • Windows下快速安装Python GDAL指南
  • 【26美赛D题】2026美赛数学建模(MCM/ICM)思路解析及代码分享
  • 永磁同步电机(PMSM)的PI控制