scancode.inc.sh

来自「开源的键盘模拟程序」· Shell 代码 · 共 104 行

SH
104
字号
#!/bin/shgawk --file ../lib/kbde.awk --source 'function PrintLabel(String){   NeedT = 0;   # I can not use ":" directly, because it field separator   # So, i need use T   if (String ~ "[Cc][Oo][Ll][Oo][Nn]") {      NeedT = 1;      String = ":";   }   # If string has \\ replace it with  \\e   gsub("\\\\", "\\e", String);   num = split(String, Array, "[[:blank:]]");   if (num == 0) return; # Empty string, do nothing   # If we have whitespace inside I want words on different lines   # So, i need use T   if (num > 1) NeedT = 1;   if (NeedT) {      printf "T{\n";       for (i = 1; i <= num; i++) {         printf "%s\n", Array[i];      }      printf "T}";    } else {      # When T is not used, I have to escape -,+ and _      if (substr(String, 1, 1) in ArrayForEscape) printf "\\&";      printf "%s", String;   }}function PrintCode(String){   if (String ~ "-NONE-") {      printf "%s", String;      return   }   num = split(String, Array, "[[:blank:]]")   if (num == 0) return; # empty string, do nothing   if (num == 1) {       printf "0x%s", Array[1];   } else  if (num == 2) {       printf "0x%s 0x%s", Array[1], Array[2];   } else { # More, than 2, need newline(s)      printf "T{\n";      for (i = 1; i <= num; i += 2) {         # May be I print one element after array boundary,         # but awk promise it will be empty, so it is ok         printf("0x%s 0x%s\n", Array[i], Array[i+1]);      }      printf "T}"   }}function PrintSeparator(){   printf ":"}function print_man_table(){    ArrayForEscape["-"]  = "";   ArrayForEscape["_"]  = "";   ArrayForEscape["="]  = "";   for (Define = 1; int(Define) <= int(MaxDefine); Define = Define + 1) {      Name = Names[Define];      if (Name != "") {         Make     = Makes[Define];         Break    = Breaks[Define];         Label    = Labels[Define];         AddLabel = AddLabels[Define];         printf "%s", Name;         PrintSeparator();         printf "%s", Define;         PrintSeparator();         PrintLabel(Label);         PrintSeparator();         PrintLabel(AddLabel);         PrintSeparator();         PrintCode(Make);         PrintSeparator();         PrintCode(Break);         print ""; # Newline      }   }}function print_func(){   print_man_table();}' || exitexit 0

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?