mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Added handling UTF-8 'umlaut' characters to cKbdRemote
This commit is contained in:
parent
f6283b8e91
commit
20791e4d95
@ -2870,6 +2870,7 @@ Lars Hanisch <dvb@flensrocker.de>
|
|||||||
for reporting a missing closing ')' in the help entry of the --vfat option
|
for reporting a missing closing ')' in the help entry of the --vfat option
|
||||||
for making the Recordings menu able to be called with a cRecordingFilter, which allows
|
for making the Recordings menu able to be called with a cRecordingFilter, which allows
|
||||||
the caller to have it display only a certain subset of the recordings
|
the caller to have it display only a certain subset of the recordings
|
||||||
|
for adding handling UTF-8 'umlaut' characters to cKbdRemote
|
||||||
|
|
||||||
Alex Lasnier <alex@fepg.org>
|
Alex Lasnier <alex@fepg.org>
|
||||||
for adding tuning support for ATSC devices
|
for adding tuning support for ATSC devices
|
||||||
|
1
HISTORY
1
HISTORY
@ -8075,3 +8075,4 @@ Video Disk Recorder Revision History
|
|||||||
- The Recordings menu can now be called with a cRecordingFilter, which allows the
|
- The Recordings menu can now be called with a cRecordingFilter, which allows the
|
||||||
caller to have it display only a certain subset of the recordings (thanks to Lars
|
caller to have it display only a certain subset of the recordings (thanks to Lars
|
||||||
Hanisch).
|
Hanisch).
|
||||||
|
- Added handling UTF-8 'umlaut' characters to cKbdRemote (thanks to Lars Hanisch).
|
||||||
|
21
remote.c
21
remote.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: remote.c 2.8 2013/02/03 15:44:55 kls Exp $
|
* $Id: remote.c 3.1 2013/12/25 12:45:43 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "remote.h"
|
#include "remote.h"
|
||||||
@ -260,6 +260,7 @@ cKbdRemote::cKbdRemote(void)
|
|||||||
tcsetattr(STDIN_FILENO, TCSANOW, &tm);
|
tcsetattr(STDIN_FILENO, TCSANOW, &tm);
|
||||||
}
|
}
|
||||||
kbdAvailable = true;
|
kbdAvailable = true;
|
||||||
|
systemIsUtf8 = !cCharSetConv::SystemCharacterTable() || strcmp(cCharSetConv::SystemCharacterTable(), "UTF-8") == 0;
|
||||||
Start();
|
Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -324,7 +325,23 @@ uint64_t cKbdRemote::ReadKeySequence(void)
|
|||||||
|
|
||||||
if ((key1 = ReadKey()) >= 0) {
|
if ((key1 = ReadKey()) >= 0) {
|
||||||
k = key1;
|
k = key1;
|
||||||
if (key1 == 0x1B) {
|
if (systemIsUtf8 && (key1 & 0xC0) == 0xC0) {
|
||||||
|
char bytes[4] = { 0 };
|
||||||
|
bytes[0] = key1;
|
||||||
|
int bytescount = 1;
|
||||||
|
if ((key1 & 0xF0) == 0xF0)
|
||||||
|
bytescount = 3;
|
||||||
|
else if ((key1 & 0xE0) == 0xE0)
|
||||||
|
bytescount = 2;
|
||||||
|
for (int i = 0; i < bytescount; i++) {
|
||||||
|
if ((key1 = ReadKey()) >= 0)
|
||||||
|
bytes[i + 1] = key1;
|
||||||
|
}
|
||||||
|
k = Utf8CharGet(bytes);
|
||||||
|
if (k > 0xFF)
|
||||||
|
k = 0;
|
||||||
|
}
|
||||||
|
else if (key1 == 0x1B) {
|
||||||
// Start of escape sequence
|
// Start of escape sequence
|
||||||
if ((key1 = ReadKey()) >= 0) {
|
if ((key1 = ReadKey()) >= 0) {
|
||||||
k <<= 8;
|
k <<= 8;
|
||||||
|
3
remote.h
3
remote.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: remote.h 2.1 2013/02/02 12:44:33 kls Exp $
|
* $Id: remote.h 3.1 2013/12/25 12:32:44 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __REMOTE_H
|
#ifndef __REMOTE_H
|
||||||
@ -106,6 +106,7 @@ class cKbdRemote : public cRemote, private cThread {
|
|||||||
private:
|
private:
|
||||||
static bool kbdAvailable;
|
static bool kbdAvailable;
|
||||||
static bool rawMode;
|
static bool rawMode;
|
||||||
|
bool systemIsUtf8;
|
||||||
struct termios savedTm;
|
struct termios savedTm;
|
||||||
virtual void Action(void);
|
virtual void Action(void);
|
||||||
int ReadKey(void);
|
int ReadKey(void);
|
||||||
|
Loading…
Reference in New Issue
Block a user