summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars-Dominik Braun <lars@6xq.net>2011-02-02 16:17:13 +0100
committerLars-Dominik Braun <lars@6xq.net>2011-02-02 16:44:19 +0100
commit58398e4b2a9666a94aacced30453c1fc46b4a2e8 (patch)
tree410b31cee14ee2577eb8262bdbebb2ecc024b1eb
parent0a76b7239781e6e0cb77169302219e6566b6c4d3 (diff)
downloadpianobar-windows-58398e4b2a9666a94aacced30453c1fc46b4a2e8.tar.gz
pianobar-windows-58398e4b2a9666a94aacced30453c1fc46b4a2e8.tar.bz2
pianobar-windows-58398e4b2a9666a94aacced30453c1fc46b4a2e8.zip
Allow keyboard shortcuts to be disabled
Something like act_foobar = disabled disables the command foobar completely now. Useful if you don't use software volume control. See issue #78.
-rw-r--r--contrib/pianobar.19
-rw-r--r--src/main.c15
-rw-r--r--src/settings.c8
-rw-r--r--src/settings.h2
-rw-r--r--src/ui_act.c2
5 files changed, 26 insertions, 10 deletions
diff --git a/contrib/pianobar.1 b/contrib/pianobar.1
index d7f9624..3c192fd 100644
--- a/contrib/pianobar.1
+++ b/contrib/pianobar.1
@@ -32,9 +32,14 @@ http://xiph.org/ao/doc/config.html
The configuration file consists of simple
.B key = value
lines. Each terminated with a newline (\\n) character. Keys and values are both
-case sensitive. act_*-keys control
+case sensitive.
+
+act_* keys control
.B pianobar's
-key-bindings.
+key-bindings. Every one-byte character except for \\x00 and the
+special value
+.B disabled
+are allowed here.
.TP
.B act_help = ?
diff --git a/src/main.c b/src/main.c
index d6da519..14e7c89 100644
--- a/src/main.c
+++ b/src/main.c
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2008-2010
+Copyright (c) 2008-2011
Lars-Dominik Braun <lars@6xq.net>
Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -174,7 +174,8 @@ static void BarMainHandleUserInput (BarApp_t *app) {
size_t i;
for (i = 0; i < BAR_KS_COUNT; i++) {
- if (app->settings.keys[i] == buf) {
+ if (app->settings.keys[i] != BAR_KS_DISABLED &&
+ app->settings.keys[i] == buf) {
static const BarKeyShortcutFunc_t idToF[] = {BarUiActHelp,
BarUiActLoveSong, BarUiActBanSong,
BarUiActAddMusic, BarUiActCreateStation,
@@ -425,9 +426,13 @@ int main (int argc, char **argv) {
BarSettingsInit (&app.settings);
BarSettingsRead (&app.settings);
- BarUiMsg (MSG_NONE, "Welcome to " PACKAGE " (" VERSION ")! "
- "Press %c for a list of commands.\n",
- app.settings.keys[BAR_KS_HELP]);
+ BarUiMsg (MSG_NONE, "Welcome to " PACKAGE " (" VERSION ")! ");
+ if (app.settings.keys[BAR_KS_HELP] == BAR_KS_DISABLED) {
+ BarUiMsg (MSG_NONE, "\n");
+ } else {
+ BarUiMsg (MSG_NONE, "Press %c for a list of commands.\n",
+ app.settings.keys[BAR_KS_HELP]);
+ }
/* init fds */
FD_ZERO(&app.readSet);
diff --git a/src/settings.c b/src/settings.c
index 9955d2e..a7a26a6 100644
--- a/src/settings.c
+++ b/src/settings.c
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2008-2010
+Copyright (c) 2008-2011
Lars-Dominik Braun <lars@6xq.net>
Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -150,7 +150,11 @@ void BarSettingsRead (BarSettings_t *settings) {
/* keyboard shortcuts */
for (i = 0; i < BAR_KS_COUNT; i++) {
if (streq (shortcutFileKeys[i], key)) {
- settings->keys[i] = val[0];
+ if (streq (val, "disabled")) {
+ settings->keys[i] = BAR_KS_DISABLED;
+ } else {
+ settings->keys[i] = val[0];
+ }
break;
}
}
diff --git a/src/settings.h b/src/settings.h
index a186282..f529a81 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -58,6 +58,8 @@ typedef enum {
BAR_KS_COUNT = 24,
} BarKeyShortcutId_t;
+#define BAR_KS_DISABLED '\x00'
+
typedef enum {
BAR_SORT_NAME_AZ = 0,
BAR_SORT_NAME_ZA = 1,
diff --git a/src/ui_act.c b/src/ui_act.c
index 76f4fee..dac104a 100644
--- a/src/ui_act.c
+++ b/src/ui_act.c
@@ -111,7 +111,7 @@ BarUiActCallback(BarUiActHelp) {
BarUiMsg (MSG_NONE, "\r");
for (i = 0; i < BAR_KS_COUNT; i++) {
- if (idToDesc[i] != NULL) {
+ if (idToDesc[i] != NULL && app->settings.keys[i] != BAR_KS_DISABLED) {
BarUiMsg (MSG_LIST, "%c %s\n", app->settings.keys[i], idToDesc[i]);
}
}