diff --git a/experiments/keyboard/keyboard.erb b/experiments/keyboard/keyboard.erb
index cab091c..ebae4e1 100644
--- a/experiments/keyboard/keyboard.erb
+++ b/experiments/keyboard/keyboard.erb
@@ -36,7 +36,7 @@
<% keys.each do |key| %>
- <%= key[:name] %>
+ <%= key[:symbol] %>
<% end %>
diff --git a/experiments/keyboard/keyboard.html b/experiments/keyboard/keyboard.html
index 9848173..17b2075 100644
--- a/experiments/keyboard/keyboard.html
+++ b/experiments/keyboard/keyboard.html
@@ -129,7 +129,7 @@
- PAU
+ ⏸
@@ -199,7 +199,7 @@
- BACKSP
+ ⇦
@@ -209,7 +209,7 @@
- HOM
+ ⌂
@@ -239,7 +239,7 @@
- TAB
+ ↹
@@ -304,17 +304,17 @@
- ENT
+ ↵
- DEL
+ ⇨
- END
+ ⇥
@@ -344,7 +344,7 @@
- CAPS
+ ⇪
@@ -489,7 +489,7 @@
- ARU
+ ↑
@@ -509,7 +509,7 @@
- ENT
+ ↵
@@ -544,7 +544,7 @@
- MENU
+ ≡
@@ -554,17 +554,17 @@
- ARL
+ ←
- ARD
+ ↓
- ARR
+ →
@@ -574,7 +574,7 @@
- DEL
+ ⇨
diff --git a/experiments/keyboard/keyboard.rb b/experiments/keyboard/keyboard.rb
index 928816c..52ed90d 100755
--- a/experiments/keyboard/keyboard.rb
+++ b/experiments/keyboard/keyboard.rb
@@ -2,215 +2,317 @@
# https://developer.valvesoftware.com/wiki/Bind
-keys = {
- escape: {
+keys = [
+ {
+ ingame: 'escape',
+ short: 'ESC',
title: 'Escape',
keycap: 'ESC',
},
- tab: {
+ {
+ ingame: 'tab',
+ short: 'TAB',
title: 'Tabulator',
keycap: '↹',
},
- capslock: {
+ {
+ ingame: 'capslock',
+ short: 'CAPS',
title: 'Capslock',
keycap: '⇪',
},
- shift: {
+ {
+ ingame: 'shift',
+ short: 'SFT',
title: 'Shift',
keycap: '⇧',
},
- ctrl: {
+ {
+ ingame: 'ctrl',
+ short: 'CTL',
title: 'Control',
keycap: 'CTL',
},
- alt: {
+ {
+ ingame: 'alt',
+ short: 'ALT',
title: 'ALT',
keycap: 'ALT',
},
- space: {
+ {
+ ingame: 'space',
+ short: 'SPC',
title: 'Space',
keycap: 'SPACE',
},
- backspace: {
+ {
+ ingame: 'backspace',
+ short: 'BSP',
title: 'Backspace',
keycap: '⇦',
},
- enter: {
+ {
+ ingame: 'enter',
+ short: 'ENT',
title: 'Enter',
keycap: '↵',
},
- semicolon: {
+ {
+ ingame: 'semicolon',
+ short: ';',
title: 'Semicolon',
keycap: ';',
},
- lwin: {
+ {
+ ingame: 'lwin',
+ short: 'LWIN',
title: 'Left Super',
keycap: '⊞',
},
- rwin: {
+ {
+ ingame: 'rwin',
+ short: 'RWIN',
title: 'Right Super',
keycap: '⊞',
},
- apps: {
+ {
+ ingame: 'apps',
+ short: 'MENU',
title: 'Menu',
keycap: '≡',
},
- numlock: {
+ {
+ ingame: 'numlock',
+ short: 'NUM',
title: 'Numlock',
keycap: 'NUM',
},
- scrolllock: {
+ {
+ ingame: 'scrolllock',
+ short: 'SCR',
title: 'Scrollock',
keycap: 'SCR',
},
- uparrow: {
+ {
+ ingame: 'uparrow',
+ short: 'ARU',
title: 'Arrow Up',
keycap: '↑',
},
- downarrow: {
+ {
+ ingame: 'downarrow',
+ short: 'ARD',
title: 'Arrow Down',
keycap: '↓',
},
- leftarrow: {
+ {
+ ingame: 'leftarrow',
+ short: 'ARL',
title: 'Arrow Left',
keycap: '←',
},
- rightarrow: {
+ {
+ ingame: 'rightarrow',
+ short: 'ARR',
title: 'Arrow Right',
keycap: '→',
},
- ins: {
+ {
+ ingame: 'ins',
+ short: 'INS',
title: 'Insert',
keycap: 'INS',
},
- del: {
+ {
+ ingame: 'del',
+ short: 'DEL',
title: 'Delete',
keycap: '⇨',
},
- pgdn: {
+ {
+ ingame: 'pgdn',
+ short: 'PGD',
title: 'Page Down',
keycap: '⇣',
},
- pgup: {
+ {
+ ingame: 'pgup',
+ short: 'PGU',
title: 'Page Up',
keycap: '⇡',
},
- home: {
+ {
+ ingame: 'home',
+ short: 'HOM',
title: 'Home',
keycap: '⌂',
},
- end: {
+ {
+ ingame: 'end',
+ short: 'END',
title: 'End',
keycap: '⇥',
},
- pause: {
+ {
+ ingame: 'pause',
+ short: 'PAU',
title: 'Pause',
keycap: '⏸',
},
- kp_end: {
+ {
+ ingame: 'kp_end',
+ short: 'N1',
title: 'Keypad 1 (End)',
keycap: '1',
},
- kp_downarrow: {
+ {
+ ingame: 'kp_downarrow',
+ short: 'N2',
title: 'Keypad 2 (Arrow Down)',
keycap: '2',
},
- kp_pgdn: {
+ {
+ ingame: 'kp_pgdn',
+ short: 'N3',
title: 'Keypad 3 (Page Down)',
keycap: '3',
},
- kp_leftarrow: {
+ {
+ ingame: 'kp_leftarrow',
+ short: 'N4',
title: 'Keypad 4 (Arrow Left)',
keycap: '4',
},
- kp_5: {
+ {
+ ingame: 'kp_5',
+ short: 'N5',
title: 'Keypad 5',
keycap: '5',
},
- kp_rightarrow: {
+ {
+ ingame: 'kp_rightarrow',
+ short: 'N6',
title: 'Keypad 6 (Arrow Right)',
keycap: '6',
},
- kp_home: {
+ {
+ ingame: 'kp_home',
+ short: 'N7',
title: 'Keypad 7 (Home)',
keycap: '7',
},
- kp_uparrow: {
+ {
+ ingame: 'kp_uparrow',
+ short: 'N8',
title: 'Keypad 8 (Arrow Up)',
keycap: '8',
},
- kp_pgup: {
+ {
+ ingame: 'kp_pgup',
+ short: 'N9',
title: 'Keypad 9 (Page Up)',
keycap: '9',
},
- kp_enter: {
+ {
+ ingame: 'kp_enter',
+ short: 'NENT',
title: 'Keypad Enter',
keycap: '↵',
},
- kp_ins: {
+ {
+ ingame: 'kp_ins',
+ short: 'NINS',
title: 'Keypad 0',
keycap: '0',
},
- kp_del: {
+ {
+ ingame: 'kp_del',
+ short: 'NDEL',
title: 'Keypad .',
keycap: '.',
},
- kp_slash: {
+ {
+ ingame: 'kp_slash',
+ short: 'NSL',
title: 'Keypad /',
keycap: '/',
},
- kp_multiply: {
+ {
+ ingame: 'kp_multiply',
+ short: 'NMUL',
title: 'Keypad *',
keycap: '*',
},
- kp_minus: {
+ {
+ ingame: 'kp_minus',
+ short: 'NMIN',
title: 'Keypad -',
keycap: '-',
},
- kp_plus: {
+ {
+ ingame: 'kp_plus',
+ short: 'NPLS',
title: 'Keypad +',
keycap: '+',
},
- mwheeldown: {
+ {
+ ingame: 'mwheeldown',
+ short: 'WLD',
title: 'Mousewheel Down',
keycap: '⇟',
},
- mwheelup: {
+ {
+ ingame: 'mwheelup',
+ short: 'WLU',
title: 'Mousewheel Up',
keycap: '⇞',
},
- mouse1: {
+ {
+ ingame: 'mouse1',
+ short: 'M1',
title: 'Mouse 1',
keycap: '🖱️1',
},
- mouse2: {
+ {
+ ingame: 'mouse2',
+ short: 'M2',
title: 'Mouse 2',
keycap: '🖱️2',
},
- mouse3: {
+ {
+ ingame: 'mouse3',
+ short: 'M3',
title: 'Mouse 3',
keycap: '🖱️3',
},
- mouse4: {
+ {
+ ingame: 'mouse4',
+ short: 'M4',
title: 'Mouse 4',
keycap: '🖱️4',
},
- mouse5: {
+ {
+ ingame: 'mouse5',
+ short: 'M5',
title: 'Mouse 5',
keycap: '🖱️5',
},
-}
+]
%(0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜß,.+-*/#^´).each_char do |char|
- keys[char.to_sym] = {
+ keys.append({
+ ingame: char,
+ short: char,
title: char,
- 'keymap': char,
- }
+ keycap: char,
+ })
end
(1..12).each do |num|
- keys[:"F#{num}"] = {
+ keys.append({
+ ingame: "F#{num}",
+ short: "F#{num}",
title: "Function #{num}",
- 'keymap': "F#{num}",
- }
+ keycap: "F#{num}",
+ })
end
keycaps = {
@@ -258,7 +360,7 @@ keycaps = {
keyboard = {
0 => 'ESC :1 F1 F2 F3 F4 :.5 F5 F6 F7 F8 :.5 F9 F10 F11 F12 :.25 PNT ROL PAU',
- 1.25 => '^ 1 2 3 4 5 6 7 8 9 0 ß ´ BACKSP:h2 :.25 INS HOM PUP :.25 NUM / * -',
+ 1.25 => '^ 1 2 3 4 5 6 7 8 9 0 ß ´ BSP: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',
@@ -275,10 +377,11 @@ keyboard.each do |row_v, row_text|
if element.start_with? ':'
row_h += element[1..].to_f
else
- key, keycap = element.split(':')
+ short, keycap = element.split(':')
+ key = keys.find{|k| k[:short] == short}
keycap ||= :h1
keyboard_keys.append({
- name: key,
+ symbol: key ? key[:keycap] : short,
keycap: keycap,
x: row_h + keycaps[keycap.to_sym][:width]/2.0,
y: 0.5 + row_v,