/usr/share/sugar/activities/Chat.activity/utils.py is in sugar-chat-activity 84-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | #
# utils.py, Copyright (C) 2014-2016 One Laptop per Child
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
import subprocess
from gi.repository import GObject
class EbookModeDetector(GObject.GObject):
DEVICE = '/dev/input/event4'
__gsignals__ = {
'changed': (GObject.SignalFlags.RUN_FIRST, None, ([bool])), }
def __init__(self):
GObject.GObject.__init__(self)
try:
self._fp = open(self.DEVICE, 'rb')
except IOError:
self._ebook_mode = False
return
def _io_in_cb(fp, condition):
data = fp.read(16)
if data == '':
return False
if ord(data[10]) == 1: # SW_TABLET_MODE
mode = (ord(data[12]) == 1)
if mode != self._ebook_mode:
self._ebook_mode = mode
self.emit('changed', self._ebook_mode)
return True
self._sid = GObject.io_add_watch(self._fp, GObject.IO_IN, _io_in_cb)
self._ebook_mode = self._get_initial_value()
def get_ebook_mode(self):
return self._ebook_mode
def _get_initial_value(self):
try:
output = subprocess.call(['evtest', '--query', self.DEVICE,
'EV_SW', 'SW_TABLET_MODE'])
# 10 is ebook_mode, 0 is normal
return (output == 10)
except:
return False
|