From ecd2d862bcd0bf6461d2a2122118ef1162940ec8 Mon Sep 17 00:00:00 2001 From: elliottcable Date: Fri, 13 Mar 2009 13:36:10 -0400 Subject: [PATCH] Reduced `Key::ASCII` to those characters which don't make sense as plain ASCII, and renamed it to `Key::Names`. Also added `Key.process` --- lib/nfoiled/key.rb | 84 ++++++++++++++++++++++++------------------------------ 1 file changed, 37 insertions(+), 47 deletions(-) rewrite lib/nfoiled/key.rb (73%) diff --git a/lib/nfoiled/key.rb b/lib/nfoiled/key.rb dissimilarity index 73% index 35edf86..5752a4e 100644 --- a/lib/nfoiled/key.rb +++ b/lib/nfoiled/key.rb @@ -1,47 +1,37 @@ -module Nfoiled - ## - # This is the class of a single character of input received by Nfoiled. - # Handles modifiers for you. - class Key - ASCII = { 0 => :nul, 1 => :soh, 2 => :stx, 3 => :etx, - 4 => :eot, 5 => :enq, 6 => :ack, 7 => :bel, 8 => :bs , - 9 => :tab, 10 => :nl , 11 => :vt , 12 => :np , 13 => :cr , - 14 => :so , 15 => :si , 16 => :dle, 17 => :dc1, 18 => :dc2, - 19 => :dc3, 20 => :dc4, 21 => :nak, 22 => :syn, 23 => :etb, - 24 => :can, 25 => :em , 26 => :sub, 27 => :esc, 28 => :fs , - 29 => :gs , 30 => :rs , 31 => :us , 32 => :' ', 33 => :'!', - 34 => :'"', 35 => :'#', 36 => :'$', 37 => :% , 38 => :& , - 39 => :"'", 40 => :'(', 41 => :')', 42 => :* , 43 => :+ , - 44 => :',', 45 => :- , 46 => :'.', 47 => :/ , 48 => :'0', - 49 => :'1', 50 => :'2', 51 => :'3', 52 => :'4', 53 => :'5', - 54 => :'6', 55 => :'7', 56 => :'8', 57 => :'9', 58 => :':', - 59 => :';', 60 => :< , 61 => :'=', 62 => :> , 63 => :'?', - 64 => :'@', 65 => :A , 66 => :B , 67 => :C , 68 => :D , - 69 => :E , 70 => :F , 71 => :G , 72 => :H , 73 => :I , - 74 => :J , 75 => :K , 76 => :L , 77 => :M , 78 => :N , - 79 => :O , 80 => :P , 81 => :Q , 82 => :R , 83 => :S , - 84 => :T , 85 => :U , 86 => :V , 87 => :W , 88 => :X , - 89 => :Y , 90 => :Z , 91 => :'[', 92 =>:'\\', 93 => :']', - 94 => :^ , 95 => :_ , 96 => :` , 97 => :a , 98 => :b , - 99 => :c ,100 => :d ,101 => :e ,102 => :f ,103 => :g , - 104 => :h ,105 => :i ,106 => :j ,107 => :k ,108 => :l , - 109 => :m ,110 => :n ,111 => :o ,112 => :p ,113 => :q , - 114 => :r ,115 => :s ,116 => :t ,117 => :u ,118 => :v , - 119 => :w ,120 => :x ,121 => :y ,122 => :z ,123 => :'{', - 124 => :| ,125 => :'}',126 => :~ ,127 => :del} - - # The character corresponding to this keypress - attr_reader :char - - # Any modifier keys associating this keypress - attr_reader :modifiers - - ## - # Creates a new `Key`, including any modifiers. - def initialize char, opts = Hash.new - { :modifiers => [] }.merge opts - @modifiers = opts[:modifiers] - @char = char.to_sym - end - end -end \ No newline at end of file +module Nfoiled + ## + # This is the class of a single character of input received by Nfoiled. + # Handles modifiers for you. + class Key + Names = { 0 => :nul, 1 => :soh, 2 => :stx, 3 => :etx, + 4 => :eot, 5 => :enq, 6 => :ack, 7 => :bel, 8 => :bs , + 10 => :nl , 11 => :vt , 12 => :np , 13 => :cr , 14 => :so , + 15 => :si , 16 => :dle, 17 => :dc1, 18 => :dc2, 19 => :dc3, + 20 => :dc4, 21 => :nak, 22 => :syn, 23 => :etb, 24 => :can, + 25 => :em , 26 => :sub, 27 => :esc, 28 => :fs , 29 => :gs , + 30 => :rs , 31 => :us ,127 => :del} + + ## + # Responsible for processing input from `Nfoiled::read!`. Returns + def self.process charint + new case charint + when 9, 32..126; then charint.chr + else Names[charint] + end + end + + # The character corresponding to this keypress + attr_reader :char + + # Any modifier keys associating this keypress + attr_reader :modifiers + + ## + # Creates a new `Key`, including any modifiers. + def initialize char, opts = Hash.new + { :modifiers => [] }.merge opts + @modifiers = opts[:modifiers] + @char = char.to_sym + end + end +end \ No newline at end of file -- 2.11.4.GIT