summaryrefslogtreecommitdiffhomepage
path: root/docs/todo/06-keyboard.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/todo/06-keyboard.md')
-rw-r--r--docs/todo/06-keyboard.md150
1 files changed, 150 insertions, 0 deletions
diff --git a/docs/todo/06-keyboard.md b/docs/todo/06-keyboard.md
new file mode 100644
index 0000000..6fbe6d2
--- /dev/null
+++ b/docs/todo/06-keyboard.md
@@ -0,0 +1,150 @@
+# Keyboard
+
+Determining if `a` key is in the down state (pressed). This happens once each time the key is pressed:
+
+```
+if args.inputs.keyboard.key_down.a
+ puts 'The key is pressed'
+end
+```
+
+Determining if a key is being held. This happens every tick while the key is held down:
+
+```
+if args.inputs.keyboard.key_held.a
+ puts 'The key is being held'
+end
+```
+
+Determining if a key is in the down state or is being held:
+
+```
+if args.inputs.keyboard.a
+ puts 'The key is pressed or being held'
+end
+```
+
+Determining if a key is in the up state (released). This happens once each time the key is released:
+
+```
+if args.inputs.keyboard.key_up.a
+ puts 'The key is released'
+end
+```
+
+# Truthy Keys
+
+You can access all triggered keys through `truthy_keys` on `keyboard`, `controller_one`, and `controller_two`.
+
+This is how you would right all keys to a file. The game must be in the foreground and have focus for this data
+to be recorded.
+
+```
+def tick args
+ [
+ [args.inputs.keyboard, :keyboard],
+ [args.inputs.controller_one, :controller_one],
+ [args.inputs.controller_two, :controller_two]
+ ].each do |input, name|
+ if input.key_down.truthy_keys.length > 0
+ args.gtk.write_file("mygame/app/#{name}_key_down_#{args.state.tick_count}", input.key_down.truthy_keys.to_s)
+ end
+ end
+end
+```
+
+# List of keys:
+
+These are the character and associated properities that will
+be set to true.
+
+For example `A => :a, :shift` means that `args.inputs.keyboard.a`
+would be true and so would `args.inputs.keyboard.shift`
+(if both keys were being held or in the down state).
+
+```
+A => :a, :shift
+B => :b, :shift
+C => :c, :shift
+D => :d, :shift
+E => :e, :shift
+F => :f, :shift
+G => :g, :shift
+H => :h, :shift
+I => :i, :shift
+J => :j, :shift
+K => :k, :shift
+L => :l, :shift
+M => :m, :shift
+N => :n, :shift
+O => :o, :shift
+P => :p, :shift
+Q => :q, :shift
+R => :r, :shift
+S => :s, :shift
+T => :t, :shift
+U => :u, :shift
+V => :v, :shift
+W => :w, :shift
+X => :x, :shift
+Y => :y, :shift
+Z => :z, :shift
+! => :exclamation_point
+0 => :zero
+1 => :one
+2 => :two
+3 => :three
+4 => :four
+5 => :five
+6 => :six
+7 => :seven
+8 => :eight
+9 => :nine
+\b => :backspace
+\e => :escape
+\r => :enter
+\t => :tab
+( => :open_round_brace
+) => :close_round_brace
+{ => :open_curly_brace
+} => :close_curly_brace
+[ => :open_square_brace
+] => :close_square_brace
+: => :colon
+; => :semicolon
+= => :equal_sign
+- => :hyphen
+ => :space
+$ => :dollar_sign
+" => :double_quotation_mark
+' => :single_quotation_mark
+` => :backtick
+~ => :tilde
+. => :period
+, => :comma
+| => :pipe
+_ => :underscore
+# => :hash
++ => :plus
+@ => :at
+/ => :forward_slash
+\ => :back_slash
+* => :asterisk
+< => :less_than
+> => :greater_than
+^ => :greater_than
+& => :ampersand
+² => :superscript_two
+§ => :section_sign
+? => :question_mark
+% => :percent_sign
+º => :ordinal_indicator
+right arrow => :right
+left arrow => :left
+down arrow => :down
+up arrow => :up
+delete key => :delete
+control key => :control
+windows key/command key => :meta
+alt key => :alt
+```