[pygtk] adjust key bindings

Fabian Braennstroem f.braennstroem at gmx.de
Tue Nov 14 22:59:13 WST 2006


Hi,

I just start to use pygtk ... so it is just my first
question :-)

I would like to create a small file manager based on 'lfm'
(curses based file manager). I used glade for the gui and I
am able to display the existing files and directories using
two treeview widgets.
Now, at the beginning I am kind of stuck with the key bindings. In 'lfm'
it was pretty easy to define special key bindings:


  keytable = {
      # movement
      ord('p'): 'cursor_up',
      ord('k'): 'cursor_up',
      ord('K'): 'cursor_up2',
      ord('P'): 'cursor_up',
      curses.KEY_UP: 'cursor_up',
      ord('n'): 'cursor_down',
      ord('j'): 'cursor_down',
      ord('J'): 'cursor_down2',
      ord('N'): 'cursor_down',
      curses.KEY_DOWN: 'cursor_down',
      curses.KEY_PPAGE: 'page_previous',
      curses.KEY_BACKSPACE: 'page_previous',
      0x08: 'page_previous',     # BackSpace
      0x10: 'page_previous',     # Ctrl-P
      curses.KEY_NPAGE: 'page_next',
      ord(' '): 'page_next',
      0x0E: 'page_next',         # Ctrl-N
      curses.KEY_HOME: 'home',
      0x16A: 'home',
      ord('H'): 'home',
      0x001: 'home',
      curses.KEY_END: 'end',
      ord('G'): 'end',
      0x181: 'end',
      0x005: 'end',
      ord('h'): 'cursor_left',
      ord('l'): 'cursor_right',
      curses.KEY_LEFT: 'cursor_left',
      curses.KEY_RIGHT: 'cursor_right',
      ord('g'): 'goto_dir',
      0x13: 'goto_file',         # Ctrl-S
      0x14: 'tree',              # Ctrl-T
      ord('0'): 'bookmark_0',
      ord('1'): 'bookmark_1',
      ...


with such a keytable I am able to bind different 'def's to
every existing key. As you can see, I like it a lot to use
'vim-like' keys for moving around; 'j' and 'k' to move a row
up and down. In glade I found those 'accelerators', but it
is just for certain functions.
Does anyone have an idea about using such a keybinding in
pygtk? Would be nice!

Greetings!
Fabian


More information about the pygtk mailing list