{"id":18974525,"url":"https://github.com/m7a/bp-kbdcheck","last_synced_at":"2026-04-08T15:30:20.008Z","repository":{"id":164554590,"uuid":"352769628","full_name":"m7a/bp-kbdcheck","owner":"m7a","description":"Java Program to measure relative key press delays (debug/tell apart key chatter and user input)","archived":false,"fork":false,"pushed_at":"2024-04-28T19:37:55.000Z","size":32,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-01T09:08:11.927Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/m7a.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-03-29T20:01:58.000Z","updated_at":"2024-04-28T19:37:58.000Z","dependencies_parsed_at":"2024-04-28T20:43:57.226Z","dependency_job_id":null,"html_url":"https://github.com/m7a/bp-kbdcheck","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m7a%2Fbp-kbdcheck","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m7a%2Fbp-kbdcheck/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m7a%2Fbp-kbdcheck/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m7a%2Fbp-kbdcheck/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/m7a","download_url":"https://codeload.github.com/m7a/bp-kbdcheck/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239972083,"owners_count":19727302,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-08T15:15:20.261Z","updated_at":"2026-04-08T15:30:19.960Z","avatar_url":"https://github.com/m7a.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"---\nsection: 32\nx-masysma-name: kbdcheck\ntitle: Ma_Sys.ma KBD Check\ndate: 2021/03/28 22:36:01\nlang: en-US\nauthor: [\"Linux-Fan, Ma_Sys.ma (Ma_Sys.ma@web.de)\"]\nkeywords: [\"kbd\", \"keyboard\", \"hardware\", \"java\", \"check\", \"chatter\"]\nx-masysma-version: 1.0.0\nx-masysma-repository: https://www.github.com/m7a/bp-kbdcheck\nx-masysma-website: https://masysma.net/32/kbdcheck.xhtml\nx-masysma-owned: 1\nx-masysma-copyright: |\n  Copyright (c) 2019, 2021 Ma_Sys.ma.\n  For further info send an e-mail to Ma_Sys.ma@web.de.\n---\nName\n====\n\n`kbdcheck` -- measure relative keyboard press delays\n\nSynopsis\n========\n\n\tjava -jar kbd_check.jar\n\nDescription\n===========\n\nThe purpose of this program is to debug occurrences of key chatter and other\nkey-press related keyboard issues. It opens a window where key presses can be\nentered. On the console, it logs two different event types (DOWNUP/PRESS) and\ndifferent times.\n\nAll times are displayed in `ms` and collected as reported to the Java GUI\nevents. This program does _not_ interface with the hardware directly!\n\n### DOWNUP-Times\n\n 1. Time from the previous event (down/up) to the current _up_ event.\n    This is the time it took to release a key.\n 2. Time from the previous event (down/up) to the current _down_ event.\n    This represents the minimum time between key presses.\n 3. Time between the current key's down and up events\n\nIf you are typing slowly, times (1) and (3) will match and (2) will probably\nbe the largest. If you are typing quickly, different times may be observed\ndepending on how exactly you are typing. For me, it is common that (3) is the\nlargest, (2) the smallest and (1) something in between.\n\n### PRESS-Times\n\nThis reports the time between the current and the previous key press.\nAdditionally, a line with the current input buffer is printed. For most\npurposes, it is better to rely on the DOWNUP-times.\n\nExamples\n========\n\n## Slow Typing (Razer Huntsman)\n\n~~~\nPRESS;          t;     1951.9657;;;  t_______________________________________\nDOWNUP;         T;      110.2587;     1949.9546;      110.2587\nPRESS;          e;      232.3907;;;  te______________________________________\nDOWNUP;         E;       86.9473;      123.8840;       86.9473\nPRESS;          s;      287.9468;;;  tes_____________________________________\nDOWNUP;         S;      124.0631;      200.9908;      124.0631\nPRESS;          t;      278.9432;;;  test____________________________________\nDOWNUP;         T;      135.9751;      154.9109;      135.9751\nPRESS;           ;      894.2690;;;  ________________________________________\nDOWNUP;     Space;      145.6667;      758.2782;      145.6667\nPRESS;          p;      578.0508;;;  p_______________________________________\nDOWNUP;         P;      105.7368;      432.3419;      105.7368\nPRESS;          u;      356.5125;;;  pu______________________________________\nDOWNUP;         U;      103.0786;      250.8598;      103.0786\nPRESS;          b;      299.6446;;;  pub_____________________________________\nDOWNUP;         B;      137.3324;      196.5013;      137.3324\nPRESS;          l;      278.2506;;;  publ____________________________________\nDOWNUP;         L;      128.9334;      140.9877;      128.9334\nPRESS;          i;      395.2522;;;  publi___________________________________\nDOWNUP;         I;       93.0813;      266.2799;       93.0813\nPRESS;          c;      316.2890;;;  public__________________________________\nDOWNUP;         C;       95.9327;      223.1921;       95.9327\n~~~\n\nObserve that\n\n * All characters are first released before the next one is pressed.\n   Hence times (1) and (3) match.\n * there are large times between the individual key presses which (well above\n   100ms).\n * the PRESS message precedes the DOWNUP message for the same key.\n\n## Fast Typing (Razer Huntsman)\n\n~~~\nPRESS;          v;      106.0943;;;  v_______________________________________\nDOWNUP;     Space;       12.9478;       55.0448;      118.9655\nPRESS;          o;       54.8649;;;  vo______________________________________\nDOWNUP;         V;       80.0867;       65.1949;      135.0107\nPRESS;          i;       90.0224;;;  voi_____________________________________\nDOWNUP;         O;       13.9205;       41.9762;      103.9425\nPRESS;          d;      122.0572;;;  void____________________________________\nDOWNUP;         I;        8.8649;        9.9353;      130.9077\nPRESS;           ;       57.9841;;;  ________________________________________\nDOWNUP;         D;       45.9227;      108.1223;      103.8971\nPRESS;          m;       72.7116;;;  m_______________________________________\nDOWNUP;     Space;       52.8453;       49.1094;      125.6446\nPRESS;          a;       91.0303;;;  ma______________________________________\nDOWNUP;         M;       38.8824;       26.8766;      129.9390\nPRESS;          i;       87.2527;;;  mai_____________________________________\nPRESS;          n;       40.0554;;;  main____________________________________\nDOWNUP;         A;        1.3444;       38.2114;      128.5576\nDOWNUP;         I;       70.5181;       48.2696;      111.9237\nDOWNUP;         N;       58.0162;       40.0613;      129.8786\nPRESS;           ;      130.3094;;;  ________________________________________\nDOWNUP;     Space;      107.5117;        0.3988;      107.5117\nPRESS;          S;      280.6463;;;  S_______________________________________\nDOWNUP;     Shift;       75.8604;      121.5900;      127.4500\nPRESS;          t;      119.0456;;;  St______________________________________\nDOWNUP;         S;        2.9868;       51.5896;      122.0115\nDOWNUP;         T;       60.7071;       43.1644;       63.6939\nPRESS;          r;      124.9267;;;  Str_____________________________________\nPRESS;          i;       16.9273;;;  Stri____________________________________\nPRESS;          n;       63.2370;;;  Strin___________________________________\nDOWNUP;         R;       37.6096;       61.2308;      117.7458\nDOWNUP;         I;       29.0342;       16.9862;      129.7938\nDOWNUP;         N;       39.1207;       63.1500;      105.7645\n~~~\n\nObserve that\n\n * The next DOWNUP is already registered before the respective PRESS event is\n   generated.\n * Times between individual presses are sometimes very short\n * Time between press/release (3) is longer than time (1)\n\nOne can conclude that sometimes, before the one key is registered as pressed,\nthe next one has already been hit. Also, these times confirm why I have a\ntendency to get the order of characters mixed up while typing :)\n\n## Fast Typing (Microsoft Wired 200)\n\n~~~\nPRESS;          b;       95.9626;;;  pub_____________________________________\nDOWNUP;         B;       80.0866;       32.0105;       80.0866\nPRESS;          l;       80.2985;;;  publ____________________________________\nDOWNUP;         L;       31.4816;        0.3142;       31.4816\nPRESS;          i;       95.7593;;;  publi___________________________________\nDOWNUP;         I;       80.1575;       64.1112;       80.1575\nPRESS;          c;       80.0967;;;  public__________________________________\nDOWNUP;         C;       63.5751;        0.1780;       63.5751\nPRESS;           ;       79.6074;;;  ________________________________________\nPRESS;          s;       80.1408;;;  s_______________________________________\nDOWNUP;     Space;       15.9091;       15.9443;       95.9576\nPRESS;          t;       64.0751;;;  st______________________________________\nDOWNUP;         S;       16.0244;       80.0485;       80.1141\nDOWNUP;         T;       64.0320;       48.1806;       80.0563\nPRESS;          a;       95.9686;;;  sta_____________________________________\nPRESS;          t;       79.9846;;;  stat____________________________________\nDOWNUP;         A;       64.0084;       15.9043;      144.0669\nPRESS;          i;       64.3238;;;  stati___________________________________\nDOWNUP;         T;       15.6293;       80.0585;       79.9842\nDOWNUP;         I;       47.8370;        0.3465;       63.4663\nPRESS;          c;      127.6606;;;  static__________________________________\nPRESS;           ;       48.0395;;;  ________________________________________\nDOWNUP;         C;       32.0589;       64.1537;       80.0393\nDOWNUP;     Space;       48.0834;       47.9804;       80.1423\nPRESS;          v;      128.0320;;;  v_______________________________________\nPRESS;          o;       32.0890;;;  vo______________________________________\nDOWNUP;         V;       63.9258;       47.9003;       96.0628\nDOWNUP;         O;        0.3272;       32.1370;       64.2530\nPRESS;          i;       96.0925;;;  voi_____________________________________\nDOWNUP;         I;       79.7778;       31.8350;       79.7778\nPRESS;          d;       95.6524;;;  void____________________________________\nDOWNUP;         D;       79.9270;       15.8886;       79.9270\nPRESS;           ;       79.9461;;;  ________________________________________\nDOWNUP;     Space;       96.0957;        0.1314;       96.0957\nPRESS;          m;       96.5113;;;  m_______________________________________\nDOWNUP;         M;       79.6891;        0.3030;       79.6891\nPRESS;          a;       79.8488;;;  ma______________________________________\nPRESS;          i;       95.6782;;;  mai_____________________________________\nDOWNUP;         A;       16.0069;        0.2172;      111.6688\nDOWNUP;         I;       79.8823;       95.6619;       95.8892\nPRESS;          n;       96.0282;;;  main____________________________________\nPRESS;           ;       64.1541;;;  ________________________________________\nDOWNUP;         N;       15.8204;        0.1830;       79.7917\n~~~\n\nNote that compared to the previous output, events are more often in sequence\nthan before. Additionally, the individual key press duration time (3) is\naround 40 ms smaller for most entries.\n\n## Key Chatter (UNICOMP Model M?)\n\nHere is an excerpt from another keyboard which shows key chatter\n\n~~~\nDOWNUP;         A;      133.7903;      345.4194;      133.7903\nPRESS;          7;      511.9192;;;  a77a77a77a7a7a7a7a7a7a7a7_______________\nDOWNUP;         7;       57.9856;      378.1451;       57.9856\nPRESS;          7;       69.7271;;;  a77a77a77a7a7a7a7a7a7a7a77______________\nDOWNUP;         7;       18.1876;       11.7577;       18.1876\nPRESS;          a;      544.6178;;;  a77a77a77a7a7a7a7a7a7a7a77a_____________\nDOWNUP;         A;      131.9566;      526.3469;      131.9566\nPRESS;          7;      477.9078;;;  a77a77a77a7a7a7a7a7a7a7a77a7____________\nDOWNUP;         7;       89.6220;      345.9802;       89.6220\nPRESS;          a;      597.6554;;;  a77a77a77a7a7a7a7a7a7a7a77a7a___________\nDOWNUP;         A;      120.0221;      508.0771;      120.0221\nPRESS;          7;      510.1118;;;  a77a77a77a7a7a7a7a7a7a7a77a7a7__________\nDOWNUP;         7;       59.9544;      390.0526;       59.9544\nPRESS;          7;       72.0121;;;  a77a77a77a7a7a7a7a7a7a7a77a7a77_________\nDOWNUP;         7;       15.7135;       12.0468;       15.7135\nPRESS;          a;     1900.8568;;;  a77a77a77a7a7a7a7a7a7a7a77a7a77a________\nDOWNUP;         A;      115.5355;     1884.9573;      115.5355\n~~~\n\nHere, key `7` appears double with astonishingly high probability. One can\ndistinguish the key chatter events from their short keypress duration of between\n15.71 and 18.19 ms whereas the regular keypresses are at least 57.99 ms long.\n\nNote further that here, times (1) and (3) match, indicating that keys were\nhit in order.\n\nCompilation\n===========\n\nIf you have a Java compiler, you can use\n\n\t$ javac KBDCheck.java\n\t$ java KBDCheck\n\nAlternatively, if you have `ant` and a Java Compiler, use\n\n\t$ ant jar\n\nto build a runnable jarfile `kdb_check.jar` and\n\n\t$ ant clean\n\nto cleanup the workspace.\n\nLicense\n=======\n\n\tMa_Sys.ma Keyboard Check Application 1.0.0,\n\tCopyright (c) 2019, 2021 Ma_Sys.ma.\n\tFor further info send an e-mail to Ma_Sys.ma@web.de.\n\t\n\tThis program is free software: you can redistribute it and/or modify\n\tit under the terms of the GNU General Public License as published by\n\tthe Free Software Foundation, either version 3 of the License, or\n\t(at your option) any later version.\n\t\n\tThis program is distributed in the hope that it will be useful,\n\tbut WITHOUT ANY WARRANTY; without even the implied warranty of\n\tMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n\tGNU General Public License for more details.\n\t\n\tYou should have received a copy of the GNU General Public License\n\talong with this program.  If not, see \u003chttp://www.gnu.org/licenses/\u003e.\n\nSee Also\n========\n\n * [pressed_keys(32)](pressed_keys.xhtml)\n * [linux_x11_keyboard_configuration(37)](../37/linux_x11_keyboard_configuration.xhtml)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm7a%2Fbp-kbdcheck","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fm7a%2Fbp-kbdcheck","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm7a%2Fbp-kbdcheck/lists"}