private void OnKeyListKeyDown(object sender, KeyEventArgs eventArgs)
        {
            if (fKeyWait)
            {
                int idx = fKeyList.SelIndex;
                if (idx >= 0 && idx < fKeyList.Items.Count)
                {
                    UserActionRec uAct = StaticData.dbUserActions[idx];
                    uAct.HotKey = new HotKey(eventArgs.Key, eventArgs.Shift);

                    UpdateKeyList();

                    fKeyList.TopIndex       = fKeyList.TopIndex;
                    fKeyList.SelIndex       = idx;
                    fKeyWait                = false;
                    fKeyList.SelColor       = Colors.Gray;
                    fKeyList.SelBorderColor = Colors.Gray;
                    eventArgs.Key           = Keys.GK_UNK;
                }
            }
            else
            {
                if (eventArgs.Key == Keys.GK_RETURN)
                {
                    fKeyWait                = true;
                    fKeyList.SelColor       = Colors.None;
                    fKeyList.SelBorderColor = Colors.Red;
                    eventArgs.Key           = Keys.GK_UNK;
                }
            }
            fKeyList.ShowHints = !fKeyWait;
        }
        private void UpdateKeyList()
        {
            fKeyList.Items.Clear();

            for (var ua = UserAction.uaFirst; ua <= UserAction.uaLast; ua++)
            {
                UserActionRec uAct = StaticData.dbUserActions[(int)ua];

                LBItem item = fKeyList.Items.Add(BaseLocale.GetStr(uAct.NameRes), null);
                string s    = BaseMainWindow.HotKeyToText(uAct.HotKey);
                item.SubItems.Add(s, null);
            }
        }