Michael Fellinger wrote:
 Still want to hear
>> from you about alt keys.
> 
> They seem to work for me just fine, what terminal are you using?
> You could look which key codes are pushed into the @stack.

1. manver. what do the alt-keys print for you (or send to press() ) ?

2. I have found the issue:
when you generate PRINTABLE_KEYS as follows:

    PRINTABLE.each do |key|
      code = key.unpack('c')[0] # using unpack to be compatible with 1.9
      PRINTABLE_KEYS[code] = key
      MOD_KEYS[[ESC, code]] = "M-#{key}" unless key == '[' # don't map 
esc
    end

in line:       PRINTABLE_KEYS[code] = key

for ALT-A which is 165, 165.chr = "\245" (slash 245)
the key unpack line generates "-91".
So PRINTABLE_KEYS has:    -91 => "\245"
instead of           :    165 => "\245"

Thus, nothing is being picked up in line 41:
>        NCURSES_KEYS[char] || CONTROL_KEYS[char] || PRINTABLE_KEYS[char]

If I do: "\245"[0], I get 165. btw, I am using ruby 1.8.7 not 1.9.

I did a quick check with:
> key.unpack('C')[0]
and this gives me 165. So perhaps, instead of:

-      code = key.unpack('c')[0] # using unpack to be compatible with 
1.9

it should be (C - unsigned int)

+      code = key.unpack('C')[0] # using unpack to be compatible with 
1.9

------------
I cannot verify this due to something extremely baffling to me:

in IRB,
ASCII     = (0..255).map{|c| c.chr }
PRINTABLE = ASCII.grep(/[[:print:]]/)
PRINTABLE.length
>>> 191

However, inside the ruby program PRINTABLE.length only gives 95 !! ???

#!/opt/local/bin/ruby
 ASCII     = (0..255).map{|c| c.chr }
 puts(ASCII.length)
 PRINTABLE = ASCII.grep(/[[:print:]]/)
 puts(PRINTABLE.length)

So the alt-codes are lost. I am using the same terminal for both. I am 
using the same ruby interpreter in the sample program, as the one irb is 
using.

Can someone tell me why the grep command returns a different result in 
irb vs a ruby program ???
-- 
Posted via http://www.ruby-forum.com/.