diff --git a/experiments/keyboard/keyboard.erb b/experiments/keyboard/keyboard.erb index 00dcbd1..cab091c 100644 --- a/experiments/keyboard/keyboard.erb +++ b/experiments/keyboard/keyboard.erb @@ -27,7 +27,7 @@ - + <% keycaps.each do |name, options| %> diff --git a/experiments/keyboard/keyboard.html b/experiments/keyboard/keyboard.html index 62d995a..9848173 100644 --- a/experiments/keyboard/keyboard.html +++ b/experiments/keyboard/keyboard.html @@ -27,7 +27,7 @@ - + @@ -132,447 +132,447 @@ PAU - + ^ - + 1 - + 2 - + 3 - + 4 - + 5 - + 6 - + 7 - + 8 - + 9 - + 0 - + ß - + ´ - + BACKSP - + INS - + HOM - + PUP - + NUM - + / - + * - + - - + TAB - + Q - + W - + E - + R - + T - + Z - + U - + I - + O - + P - + Ü - + + - + ENT - + DEL - + END - + PDN - + 7 - + 8 - + 9 - + + - + CAPS - + A - + S - + D - + F - + G - + H - + J - + K - + L - + Ö - + Ä - + # - + 4 - + 5 - + 6 - + SHIFT - + < - + Y - + X - + C - + V - + B - + N - + M - + , - + . - + - - + SHIFT - + ARU - + 1 - + 2 - + 3 - + ENT - + CTL - + SUP - + ALT - + SPACE - + AGR - + SUP - + MENU - + CTL - + ARL - + ARD - + ARR - + 0 - + DEL diff --git a/experiments/keyboard/keyboard.rb b/experiments/keyboard/keyboard.rb index 80d788d..928816c 100755 --- a/experiments/keyboard/keyboard.rb +++ b/experiments/keyboard/keyboard.rb @@ -1,6 +1,217 @@ #!/usr/bin/env ruby -require "erb" +# https://developer.valvesoftware.com/wiki/Bind + +keys = { + escape: { + title: 'Escape', + keycap: 'ESC', + }, + tab: { + title: 'Tabulator', + keycap: '↹', + }, + capslock: { + title: 'Capslock', + keycap: '⇪', + }, + shift: { + title: 'Shift', + keycap: '⇧', + }, + ctrl: { + title: 'Control', + keycap: 'CTL', + }, + alt: { + title: 'ALT', + keycap: 'ALT', + }, + space: { + title: 'Space', + keycap: 'SPACE', + }, + backspace: { + title: 'Backspace', + keycap: '⇦', + }, + enter: { + title: 'Enter', + keycap: '↵', + }, + semicolon: { + title: 'Semicolon', + keycap: ';', + }, + lwin: { + title: 'Left Super', + keycap: '⊞', + }, + rwin: { + title: 'Right Super', + keycap: '⊞', + }, + apps: { + title: 'Menu', + keycap: '≡', + }, + numlock: { + title: 'Numlock', + keycap: 'NUM', + }, + scrolllock: { + title: 'Scrollock', + keycap: 'SCR', + }, + uparrow: { + title: 'Arrow Up', + keycap: '↑', + }, + downarrow: { + title: 'Arrow Down', + keycap: '↓', + }, + leftarrow: { + title: 'Arrow Left', + keycap: '←', + }, + rightarrow: { + title: 'Arrow Right', + keycap: '→', + }, + ins: { + title: 'Insert', + keycap: 'INS', + }, + del: { + title: 'Delete', + keycap: '⇨', + }, + pgdn: { + title: 'Page Down', + keycap: '⇣', + }, + pgup: { + title: 'Page Up', + keycap: '⇡', + }, + home: { + title: 'Home', + keycap: '⌂', + }, + end: { + title: 'End', + keycap: '⇥', + }, + pause: { + title: 'Pause', + keycap: '⏸', + }, + kp_end: { + title: 'Keypad 1 (End)', + keycap: '1', + }, + kp_downarrow: { + title: 'Keypad 2 (Arrow Down)', + keycap: '2', + }, + kp_pgdn: { + title: 'Keypad 3 (Page Down)', + keycap: '3', + }, + kp_leftarrow: { + title: 'Keypad 4 (Arrow Left)', + keycap: '4', + }, + kp_5: { + title: 'Keypad 5', + keycap: '5', + }, + kp_rightarrow: { + title: 'Keypad 6 (Arrow Right)', + keycap: '6', + }, + kp_home: { + title: 'Keypad 7 (Home)', + keycap: '7', + }, + kp_uparrow: { + title: 'Keypad 8 (Arrow Up)', + keycap: '8', + }, + kp_pgup: { + title: 'Keypad 9 (Page Up)', + keycap: '9', + }, + kp_enter: { + title: 'Keypad Enter', + keycap: '↵', + }, + kp_ins: { + title: 'Keypad 0', + keycap: '0', + }, + kp_del: { + title: 'Keypad .', + keycap: '.', + }, + kp_slash: { + title: 'Keypad /', + keycap: '/', + }, + kp_multiply: { + title: 'Keypad *', + keycap: '*', + }, + kp_minus: { + title: 'Keypad -', + keycap: '-', + }, + kp_plus: { + title: 'Keypad +', + keycap: '+', + }, + mwheeldown: { + title: 'Mousewheel Down', + keycap: '⇟', + }, + mwheelup: { + title: 'Mousewheel Up', + keycap: '⇞', + }, + mouse1: { + title: 'Mouse 1', + keycap: '🖱️1', + }, + mouse2: { + title: 'Mouse 2', + keycap: '🖱️2', + }, + mouse3: { + title: 'Mouse 3', + keycap: '🖱️3', + }, + mouse4: { + title: 'Mouse 4', + keycap: '🖱️4', + }, + mouse5: { + title: 'Mouse 5', + keycap: '🖱️5', + }, +} +%(0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜß,.+-*/#^´).each_char do |char| + keys[char.to_sym] = { + title: char, + 'keymap': char, + } +end +(1..12).each do |num| + keys[:"F#{num}"] = { + title: "Function #{num}", + 'keymap': "F#{num}", + } +end keycaps = { 'h1': { @@ -47,14 +258,14 @@ keycaps = { keyboard = { 0 => 'ESC :1 F1 F2 F3 F4 :.5 F5 F6 F7 F8 :.5 F9 F10 F11 F12 :.25 PNT ROL PAU', - 1.75 => '^ 1 2 3 4 5 6 7 8 9 0 ß ´ BACKSP:h2 :.25 INS HOM PUP :.25 NUM / * -', - 2.75 => 'TAB:h1.5 Q W E R T Z U I O P Ü + ENT:enter_iso :.25 DEL END PDN :.25 7 8 9 +:v2', - 3.75 => 'CAPS:h1.75 A S D F G H J K L Ö Ä # :1.25 :.25 :1 :1 :1 :.25 4 5 6', - 4.75 => 'SHIFT:h1.25 < Y X C V B N M , . - SHIFT:h2.75 :.25 :1 ARU :1 :.25 1 2 3 ENT:v2', - 5.75 => 'CTL:h1.25 SUP:h1.25 ALT:h1.25 SPACE:h6.5 AGR:h1.25 SUP:h1.25 MENU CTL:h1.25 :.25 ARL ARD ARR :.25 0:h2 DEL' + 1.25 => '^ 1 2 3 4 5 6 7 8 9 0 ß ´ BACKSP:h2 :.25 INS HOM PUP :.25 NUM / * -', + 2.25 => 'TAB:h1.5 Q W E R T Z U I O P Ü + ENT:enter_iso :.25 DEL END PDN :.25 7 8 9 +:v2', + 3.25 => 'CAPS:h1.75 A S D F G H J K L Ö Ä # :1.25 :.25 :1 :1 :1 :.25 4 5 6', + 4.25 => 'SHIFT:h1.25 < Y X C V B N M , . - SHIFT:h2.75 :.25 :1 ARU :1 :.25 1 2 3 ENT:v2', + 5.25 => 'CTL:h1.25 SUP:h1.25 ALT:h1.25 SPACE:h6.5 AGR:h1.25 SUP:h1.25 MENU CTL:h1.25 :.25 ARL ARD ARR :.25 0:h2 DEL' } -keys = [] +keyboard_keys = [] total_h = 0 total_v = 0 @@ -66,7 +277,7 @@ keyboard.each do |row_v, row_text| else key, keycap = element.split(':') keycap ||= :h1 - keys.append({ + keyboard_keys.append({ name: key, keycap: keycap, x: row_h + keycaps[keycap.to_sym][:width]/2.0, @@ -79,7 +290,6 @@ keyboard.each do |row_v, row_text| total_v = [total_v, row_v].max end -p keys - -html = ERB.new(File.read(File.join(__dir__, 'keyboard.erb'))).result(binding) +require "erb" +html = ERB.new(File.read(File.join(__dir__, 'keyboard.erb'))).result_with_hash({keys: keyboard_keys, total_h: total_h, total_v: total_v+1}) File.write(File.join(__dir__, 'keyboard.html'), html)