# Ruby-gnome2: emit key press

**URL:** <https://www.ruby-forum.com/t/ruby-gnome2-emit-key-press/48204>\
**Category:** Ruby\
**Created:** [November 17, 2005, 6:09pm UTC](https://www.ruby-forum.com/t/ruby-gnome2-emit-key-press/48204 "2005-11-17T18:09:24Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![ces.fci.junk](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58f4c7/32.png) [@ces.fci.junk](https://www.ruby-forum.com/u/ces.fci.junk)\
**Post date:** [November 17, 2005, 6:09pm UTC](https://www.ruby-forum.com/t/ruby-gnome2-emit-key-press/48204/1 "2005-11-17T18:09:24Z")

</div>

I’m trying to have a listbox page up/down based on keys pressed. so I  
thought this could maybe done by using something similar to this:  
event = Gdk::EventKey.new( Gdk::Event::KEY\_PRESS )  
event.set\_keyval(65366) # page\_down  
widget.signal\_emit(‘key-press-event’, event)

Clayton

---

<div class="post-metadata">

**Author:** ![ces.fci.junk](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58f4c7/32.png) [@ces.fci.junk](https://www.ruby-forum.com/u/ces.fci.junk)\
**Post date:** [November 17, 2005, 6:18pm UTC](https://www.ruby-forum.com/t/ruby-gnome2-emit-key-press/48204/2 "2005-11-17T18:18:30Z")

</div>

Hi,

On Fri, 18 Nov 2005 02:07:18 +0900  
removed\_email\_address@domain.invalid wrote:

> I’m trying to have a listbox page up/down based on keys pressed. so I  
> thought this could maybe done by using something similar to this:  
> event = Gdk::EventKey.new( Gdk::Event::KEY\_PRESS )  
> event.set\_keyval(65366) # page\_down  
> widget.signal\_emit(‘key-press-event’, event)

If you want to emit a GDK event, you need to allow to accept the event  
to the widget which the event is emitted.

Here is an example which Gtk::Window emits the key-press-event.

* * *

## require ‘gtk2’ Gtk.init window = Gtk::Window.new window.add\_events(Gdk::Event::KEY\_PRESS\_MASK) window.set\_default\_size(300,200) window.signal\_connect(“key-press-event”) do |w, e| p “key pressed : #{e.keyval}” end window.show\_all Gtk.main

---

<div class="post-metadata">

**Author:** ![ces.fci.junk](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58f4c7/32.png) [@ces.fci.junk](https://www.ruby-forum.com/u/ces.fci.junk)\
**Post date:** [November 20, 2005, 1:51pm UTC](https://www.ruby-forum.com/t/ruby-gnome2-emit-key-press/48204/3 "2005-11-20T13:51:55Z")

</div>

Hi,

On Fri, 18 Nov 2005 02:42:18 +0900  
removed\_email\_address@domain.invalid wrote:

> ```
> end
> end
> 
> ```
> 
> end

How about the sample below?

* * *

require ‘gtk2’  
Gtk.init  
model = Gtk::ListStore.new(String)  
tv = Gtk::TreeView.new(model)  
tv.append\_column(Gtk::TreeViewColumn.new(“TITLE”,  
Gtk::CellRendererText.new,  
:text =\> 0))  
tv.enable\_search = false  
model.append[0] = “LINE 1”  
model.append[0] = “LINE 2”  
model.append[0] = “LINE 3”

tv.signal\_connect(“key-press-event”) do |widget, event|  
if Gdk::Window::ModifierType::CONTROL\_MASK == event.state &  
Gdk::Window::CONTROL\_MASK  
case event.keyval  
when Gdk::Keyval::GDK\_u # ctrl-u  
tv.move\_cursor(Gtk::MOVEMENT\_DISPLAY\_LINES, -1)  
tv.selection.select\_path(tv.cursor[0])  
when Gdk::Keyval::GDK\_d # ctrl-d  
tv.move\_cursor(Gtk::MOVEMENT\_DISPLAY\_LINES, 1)  
tv.selection.select\_path(tv.cursor[0])  
end  
end  
end

Gtk::Window.new.add(tv).show\_all

Gtk.main

---

<div class="post-metadata">

**Author:** ![ces.fci.junk](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/58f4c7/32.png) [@ces.fci.junk](https://www.ruby-forum.com/u/ces.fci.junk)\
**Post date:** [November 17, 2005, 6:42pm UTC](https://www.ruby-forum.com/t/ruby-gnome2-emit-key-press/48204/4 "2005-11-17T18:42:41Z")

</div>

I’ve something similar to that already… but… let me try to rephrase.  
here is what I have so far:  
tree.signal\_connect(“key-press-event”) do |widget, event|  
if Gdk::Window::ModifierType::CONTROL\_MASK == event.state &  
Gdk::Window::CONTROL\_MASK  
case event.keyval  
when 117 then # ctrl-u  
# scroll my widget up  
when 100 then # ctrl-d  
# scroll my widget down  
end  
end  
end

my initial phrasing of the question / approach may not have been poor.  
I just want to force it to scroll up or down. Thanks for the prompt  
reply…

Clayton
