@Override public boolean onKeyUp(int keyCode, @NonNull KeyEvent event) { final String keyAction = getKeyAction(); if (keyAction == null) return false; final KeyboardShortcutSpec spec = KeyboardShortcutsHandler.getKeyboardShortcutSpec(getContextTag(), keyCode, event); if (spec == null || !spec.isValid()) { return super.onKeyUp(keyCode, event); } mKeySpec = spec; mKeysLabel.setText(spec.toKeyString()); final String oldAction = mKeyboardShortcutHandler.findAction(spec); final KeyboardShortcutSpec copyOfSpec = spec.copy(); copyOfSpec.setContextTag(null); final String oldGeneralAction = mKeyboardShortcutHandler.findAction(copyOfSpec); if (!TextUtils.isEmpty(oldAction) && !keyAction.equals(oldAction)) { // Conflicts with keys in same context tag mConflictLabel.setVisibility(View.VISIBLE); final String label = KeyboardShortcutsHandler.getActionLabel(this, oldAction); mConflictLabel.setText(getString(R.string.conflicts_with_name, label)); mButtonPositive.setText((R.string.overwrite)); } else if (!TextUtils.isEmpty(oldGeneralAction) && !keyAction.equals(oldGeneralAction)) { // Conflicts with keys in root context mConflictLabel.setVisibility(View.VISIBLE); final String label = KeyboardShortcutsHandler.getActionLabel(this, oldGeneralAction); mConflictLabel.setText(getString(R.string.conflicts_with_name, label)); mButtonPositive.setText((R.string.overwrite)); } else { mConflictLabel.setVisibility(View.GONE); mButtonPositive.setText((android.R.string.ok)); } return true; }