def on_key_press(self, window, event):
if not self.m_editable:
return
key_dict = {Gdk.KEY_1: 1,
Gdk.KEY_2: 2,
Gdk.KEY_3: 4,
Gdk.KEY_4: 8,
Gdk.KEY_5: 16,
Gdk.KEY_6: 32,
}
if event.keyval in (Gdk.KEY_Right, Gdk.KEY_KP_Right):
self.cursor_next()
self.queue_draw()
elif event.keyval in (Gdk.KEY_Left, Gdk.KEY_KP_Left):
self.cursor_prev()
self.queue_draw()
elif event.keyval == Gdk.KEY_BackSpace:
self.backspace()
elif event.keyval in (Gdk.KEY_Delete, Gdk.KEY_KP_Delete):
self.delete()
elif event.keyval in key_dict:
if self.m_input_mode == self.NOTE_INPUT:
added = self.on_add_item(elems.Note(MusicalPitch.new_from_notename("c"),
Duration(key_dict[event.keyval], 0)))
else:
assert self.m_input_mode == self.REST_INPUT
added = self.on_add_item(elems.Rest(
Duration(key_dict[event.keyval], 0)))
if added:
self.cursor_next()
self.queue_draw()
self.grab_focus()
elif event.keyval == Gdk.KEY_period:
self.on_toggle_dots(1)
elif event.keyval == Gdk.KEY_colon:
self.on_toggle_dots(-1)
elif event.keyval == Gdk.KEY_t:
self.on_toggle_tie()
elif event.keyval == Gdk.KEY_r:
if self.m_input_mode == self.NOTE_INPUT:
self.m_input_mode = self.REST_INPUT
else:
self.m_input_mode = self.NOTE_INPUT
评论列表
文章目录