summaryrefslogtreecommitdiff
path: root/src/ui_readline.c
diff options
context:
space:
mode:
authorMichał Cichoń <michcic@gmail.com>2019-05-03 17:02:47 +0200
committerMichał Cichoń <michcic@gmail.com>2019-05-03 17:02:47 +0200
commiteaa10a3950ccd8fa2a5acada4c82d6627b6214f7 (patch)
tree3012531b45cfbaba4b4c0c66e157ad20795e54ee /src/ui_readline.c
parentcb6789b17f81d29c6884c27715c705083e09a5db (diff)
parentc4b80765185944a5b89f3cc76568ba498bf5f3f4 (diff)
downloadpianobar-windows-2019.05.03.tar.gz
pianobar-windows-2019.05.03.tar.bz2
pianobar-windows-2019.05.03.zip
Merge branch 'release/2019.05.03'2019.05.03
Add support for hotkeys. #20 Hotkeys can be assigned to action in configuration file ex: hk_<action_name> = g + shift + alt + ctrl
Diffstat (limited to 'src/ui_readline.c')
-rw-r--r--src/ui_readline.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/ui_readline.c b/src/ui_readline.c
index 5d6b7a7..687258a 100644
--- a/src/ui_readline.c
+++ b/src/ui_readline.c
@@ -75,6 +75,8 @@ static inline int BarReadlineEncodeUtf8 (int codePoint, char* utf8) {
struct _BarReadline_t {
DWORD DefaultAttr;
+ BarVirtualKeyHandler VirtualKeyHandler;
+ void *VirtualKeyHandlerUserData;
};
void BarReadlineInit(BarReadline_t* rl) {
@@ -85,6 +87,11 @@ void BarReadlineInit(BarReadline_t* rl) {
void BarReadlineDestroy(BarReadline_t rl) {
}
+void BarReadlineSetVirtualKeyHandler(BarReadline_t rl, BarVirtualKeyHandler handler, void *ud) {
+ rl->VirtualKeyHandler = handler;
+ rl->VirtualKeyHandlerUserData = ud;
+}
+
/* return size of previous UTF-8 character
*/
static size_t BarReadlinePrevUtf8 (char *ptr) {
@@ -248,16 +255,11 @@ size_t BarReadline (char *buf, const size_t bufSize, const char *mask,
char encodedCodePoint[5];
int encodedCodePointLength;
- /*
- if (keyCode == VK_MEDIA_PLAY_PAUSE) {
- codePoint = 'p';
- PlaySoundA("SystemNotification", NULL, SND_ASYNC);
- }
- else if (keyCode == VK_MEDIA_NEXT_TRACK) {
- codePoint = 'n';
- PlaySoundA("SystemNotification", NULL, SND_ASYNC);
+ if (input->VirtualKeyHandler != NULL) {
+ int newCodePoint = input->VirtualKeyHandler(keyCode, input->VirtualKeyHandlerUserData);
+ if (newCodePoint != 0)
+ codePoint = newCodePoint;
}
- */
if (codePoint <= 0x1F)
break;