+namespace lyx {
+namespace frontend {
+
+ShortcutWidget::ShortcutWidget(QWidget * parent)
+ : QLabel(parent), keysequence_()
+{
+ QApplication::instance()->installEventFilter(this);
+ has_cursor_ = false;
+ setFrameShape(QFrame::Panel);
+ setFrameShadow(QFrame::Raised);
+ setLineWidth(3);
+ setFocusPolicy(Qt::StrongFocus);
+ setAlignment(Qt::AlignCenter);
+}
+
+
+void ShortcutWidget::reset()
+{
+ clear();
+ keysequence_ = KeySequence();
+}
+
+
+bool ShortcutWidget::eventFilter(QObject * obj, QEvent * e)
+{
+ if (!has_cursor_)
+ return false;
+
+ switch (e->type()) {
+ // swallow these if we have focus and they come from elsewhere
+ case QEvent::Shortcut:
+ case QEvent::ShortcutOverride:
+ if (obj != this)
+ return true;
+ default:
+ break;
+ }
+ return false;
+}
+
+
+KeySequence const ShortcutWidget::getKeySequence() const
+{
+ return keysequence_;
+}
+
+
+void ShortcutWidget::setKeySequence(lyx::KeySequence const s)
+{
+ keysequence_ = s;
+}
+
+
+void ShortcutWidget::keyPressEvent(QKeyEvent * e)