|
|
|
% Options for packages loaded elsewhere
|
|
|
|
\PassOptionsToPackage{unicode}{hyperref}
|
|
|
|
\PassOptionsToPackage{hyphens}{url}
|
|
|
|
|
|
|
|
\documentclass[
|
|
|
|
]{article}
|
|
|
|
\usepackage{amsmath,amssymb}
|
|
|
|
\usepackage{titlesec}
|
|
|
|
\usepackage{titling}
|
|
|
|
\usepackage{lmodern}
|
|
|
|
\usepackage{xcolor}
|
|
|
|
\usepackage{iftex}
|
|
|
|
\usepackage[margin=1in]{geometry}
|
|
|
|
\ifPDFTeX
|
|
|
|
\usepackage[T1]{fontenc}
|
|
|
|
\usepackage[utf8]{inputenc}
|
|
|
|
\usepackage{textcomp} % provide euro and other symbols
|
|
|
|
\else % if luatex or xetex
|
|
|
|
\usepackage{unicode-math}
|
|
|
|
\defaultfontfeatures{Scale=MatchLowercase}
|
|
|
|
\defaultfontfeatures[\rmfamily]{Ligatures=TeX,Scale=1}
|
|
|
|
\fi
|
|
|
|
% Use upquote if available, for straight quotes in verbatim environments
|
|
|
|
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
|
|
|
|
\IfFileExists{microtype.sty}{% use microtype if available
|
|
|
|
\usepackage[]{microtype}
|
|
|
|
\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts
|
|
|
|
}{}
|
|
|
|
\makeatletter
|
|
|
|
\@ifundefined{KOMAClassName}{% if non-KOMA class
|
|
|
|
\IfFileExists{parskip.sty}{%
|
|
|
|
\usepackage{parskip}
|
|
|
|
}{% else
|
|
|
|
\setlength{\parindent}{0pt}
|
|
|
|
\setlength{\parskip}{1pt plus 2pt minus 1pt}}
|
|
|
|
}{% if KOMA class
|
|
|
|
\KOMAoptions{parskip=half}}
|
|
|
|
\makeatother
|
|
|
|
\definecolor{myblue}{RGB}{24, 102, 201}
|
|
|
|
\titleformat{\section}
|
|
|
|
{\huge\bfseries\color{myblue}}
|
|
|
|
{}
|
|
|
|
{0em}
|
|
|
|
{}[\titlerule]
|
|
|
|
|
|
|
|
\titleformat{\subsection}
|
|
|
|
{\Large\bfseries}
|
|
|
|
{}
|
|
|
|
{0em}
|
|
|
|
{}
|
|
|
|
|
|
|
|
\titleformat{\subsubsection}[runin]
|
|
|
|
{\bfseries}
|
|
|
|
{}
|
|
|
|
{0em}
|
|
|
|
{}[:]
|
|
|
|
|
|
|
|
\titlespacing{\subsubsection}
|
|
|
|
{0em}{0.75em}{0.5em}
|
|
|
|
|
|
|
|
\titlespacing{\subsection}
|
|
|
|
{0em}{1em}{0.65em}
|
|
|
|
|
|
|
|
\titlespacing{\maketitle}
|
|
|
|
{0em}{0em}{0em}
|
|
|
|
\renewcommand{\maketitle}{
|
|
|
|
\begin{center}
|
|
|
|
{\huge\bfseries \theauthor}\\
|
|
|
|
\vspace{.35em}
|
|
|
|
\href{https://sufyaan.me/ask}{sufyaan.me/ask}
|
|
|
|
\end{center}
|
|
|
|
}
|
|
|
|
\usepackage{color}
|
|
|
|
\usepackage{fancyvrb}
|
|
|
|
\newcommand{\VerbBar}{|}
|
|
|
|
\newcommand{\VERB}{\Verb[commandchars=\\\{\}]}
|
|
|
|
\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}}
|
|
|
|
% Add ',fontsize=\small' for more characters per line
|
|
|
|
\newenvironment{Shaded}{}{}
|
|
|
|
\newcommand{\AlertTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}}
|
|
|
|
\newcommand{\AnnotationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
|
|
|
|
\newcommand{\AttributeTok}[1]{\textcolor[rgb]{0.49,0.56,0.16}{#1}}
|
|
|
|
\newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
|
|
|
|
\newcommand{\BuiltInTok}[1]{\textcolor[rgb]{0.00,0.50,0.00}{#1}}
|
|
|
|
\newcommand{\CharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
|
|
|
|
\newcommand{\CommentTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textit{#1}}}
|
|
|
|
\newcommand{\CommentVarTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
|
|
|
|
\newcommand{\ConstantTok}[1]{\textcolor[rgb]{0.53,0.00,0.00}{#1}}
|
|
|
|
\newcommand{\ControlFlowTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}}
|
|
|
|
\newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.56,0.13,0.00}{#1}}
|
|
|
|
\newcommand{\DecValTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
|
|
|
|
\newcommand{\DocumentationTok}[1]{\textcolor[rgb]{0.73,0.13,0.13}{\textit{#1}}}
|
|
|
|
\newcommand{\ErrorTok}[1]{\textcolor[rgb]{1.00,0.00,0.00}{\textbf{#1}}}
|
|
|
|
\newcommand{\ExtensionTok}[1]{#1}
|
|
|
|
\newcommand{\FloatTok}[1]{\textcolor[rgb]{0.25,0.63,0.44}{#1}}
|
|
|
|
\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.02,0.16,0.49}{#1}}
|
|
|
|
\newcommand{\ImportTok}[1]{\textcolor[rgb]{0.00,0.50,0.00}{\textbf{#1}}}
|
|
|
|
\newcommand{\InformationTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
|
|
|
|
\newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{\textbf{#1}}}
|
|
|
|
\newcommand{\NormalTok}[1]{#1}
|
|
|
|
\newcommand{\OperatorTok}[1]{\textcolor[rgb]{0.40,0.40,0.40}{#1}}
|
|
|
|
\newcommand{\OtherTok}[1]{\textcolor[rgb]{0.00,0.44,0.13}{#1}}
|
|
|
|
\newcommand{\PreprocessorTok}[1]{\textcolor[rgb]{0.74,0.48,0.00}{#1}}
|
|
|
|
\newcommand{\RegionMarkerTok}[1]{#1}
|
|
|
|
\newcommand{\SpecialCharTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
|
|
|
|
\newcommand{\SpecialStringTok}[1]{\textcolor[rgb]{0.73,0.40,0.53}{#1}}
|
|
|
|
\newcommand{\StringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
|
|
|
|
\newcommand{\VariableTok}[1]{\textcolor[rgb]{0.10,0.09,0.49}{#1}}
|
|
|
|
\newcommand{\VerbatimStringTok}[1]{\textcolor[rgb]{0.25,0.44,0.63}{#1}}
|
|
|
|
\newcommand{\WarningTok}[1]{\textcolor[rgb]{0.38,0.63,0.69}{\textbf{\textit{#1}}}}
|
|
|
|
\setlength{\emergencystretch}{3em} % prevent overfull lines
|
|
|
|
\providecommand{\tightlist}{%
|
|
|
|
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
|
|
|
|
\setcounter{secnumdepth}{-\maxdimen} % remove section numbering
|
|
|
|
\ifLuaTeX
|
|
|
|
\usepackage[bidi=basic]{babel}
|
|
|
|
\else
|
|
|
|
\usepackage[bidi=default]{babel}
|
|
|
|
\fi
|
|
|
|
\babelprovide[main,import]{english}
|
|
|
|
% get rid of language-specific shorthands (see #6817):
|
|
|
|
\let\LanguageShortHands\languageshorthands
|
|
|
|
\def\languageshorthands#1{}
|
|
|
|
\ifLuaTeX
|
|
|
|
\usepackage{selnolig} % disable illegal ligatures
|
|
|
|
\fi
|
|
|
|
\IfFileExists{bookmark.sty}{\usepackage{bookmark}}{\usepackage{hyperref}}
|
|
|
|
\IfFileExists{xurl.sty}{\usepackage{xurl}}{} % add URL line breaks if available
|
|
|
|
\urlstyle{same} % disable monospaced font for URLs
|
|
|
|
\hypersetup{
|
|
|
|
pdftitle={(POST) Use AnySoftKeyboard},
|
|
|
|
pdflang={en},
|
|
|
|
colorlinks=true,
|
|
|
|
linkcolor=blue,
|
|
|
|
filecolor=blue,
|
|
|
|
urlcolor=blue,
|
|
|
|
pdfcreator={LaTeX via pandoc}}
|
|
|
|
|
|
|
|
\title{Sufyaan's Website}
|
|
|
|
\author{Sufyaan's Website}
|
|
|
|
\date{}
|
|
|
|
|
|
|
|
\begin{document}
|
|
|
|
\maketitle
|
|
|
|
|
|
|
|
\section[Use AnySoftKeyboard]{Use AnySoftKeyboard}\label{why-i-use-terminal-apps}
|
|
|
|
|
|
|
|
\textbf{22 September 2023}
|
|
|
|
|
|
|
|
|
|
|
|
\textbf{Category: }Software
|
|
|
|
|
|
|
|
Your smartphone keyboard is an astoundingly sensitive piece of software.
|
|
|
|
You use it to type everything from the most innocent of messages to the
|
|
|
|
most crucial passwords. In terms of messaging on encrypted chat
|
|
|
|
applications like Session or Signal, your smartphone keyboard bypasses
|
|
|
|
encryption. They could know what you are searching about even on private
|
|
|
|
search engines like SearX. This is because your keystrokes are
|
|
|
|
unencrypted. With respect to passwords, your smartphone keyboard, if
|
|
|
|
invasive, can potentially view your bank account details. This means
|
|
|
|
that an individual who can access your smartphone keyboard does not need
|
|
|
|
to utilize advanced techniques to view your data. Therefore, in terms of
|
|
|
|
trust, you should make sure you absolutely trust your smartphone
|
|
|
|
keyboard not to store your written text.
|
|
|
|
|
|
|
|
When you keep the above statements in mind, it gets unhealthily
|
|
|
|
fear-inducing when you read how
|
|
|
|
\href{https://www.androidauthority.com/swiftkey-suspends-service-data-leak-706680/}{SwiftKey
|
|
|
|
had a cloud syncing glitch which led to users being able to view other
|
|
|
|
users\textquotesingle{} email addresses.} It is also scary how
|
|
|
|
\href{https://www.zdnet.com/article/600m-samsung-galaxy-phones-at-security-risk-due-to-pre-installed-keyboard-flaw/}{SwiftKey
|
|
|
|
that shipped by default on 600M Samsung Galaxy smartphones had a
|
|
|
|
vulnerability that allowed hackers to setup a proxy server to access
|
|
|
|
sensors and install apps without the user knowing.} There was also a
|
|
|
|
keyboard called ai.type that had over 40M users. Out of these,
|
|
|
|
\href{https://www.zdnet.com/article/popular-virtual-keyboard-leaks-31-million-user-data/}{31M
|
|
|
|
users had their data leaked because the MongoDB database had no
|
|
|
|
password.} This included information like
|
|
|
|
\href{https://mackeeper.com/blog/data-breach-reports-2017/}{phone
|
|
|
|
numbers, full names, device names and models, screen resolution, Android
|
|
|
|
version, IMSI and IMEI numbers, email addresses, country of residence,
|
|
|
|
social media profiles, IP addresses and even locations.}
|
|
|
|
|
|
|
|
What is the solution to this madness? Fortunately, if you are on
|
|
|
|
Android, you have \href{../definitions/free-software}{free software}
|
|
|
|
options. By using \href{../definitions/free-software}{free software}
|
|
|
|
keyboards, you can ensure that none of your keystrokes are stored or
|
|
|
|
sent to a server. This brings us to
|
|
|
|
\href{https://anysoftkeyboard.github.io/}{AnySoftKeyboard}.
|
|
|
|
AnySoftKeyboard is a free, libre and open-source keyboard for Android
|
|
|
|
that has multiple modes, layouts, theme customizations and more. It has
|
|
|
|
all the features you would expect. Gesture typing, keyboard effects,
|
|
|
|
corrections, emojis, you name it. Most importantly, it does not track
|
|
|
|
any of your keystrokes. I have been using it for almost an year. It has
|
|
|
|
been fast and efficient due to the minimalism and has saved me a lot of
|
|
|
|
time. It has many niche features like a terminal layout that has arrows,
|
|
|
|
tabs, pipes and forward slashes for ease of use in Android terminal
|
|
|
|
emulators like \href{https://termux.dev/en/}{Termux}.
|
|
|
|
|
|
|
|
If you are on an iPhone, the best option is ironically Gboard. You can
|
|
|
|
block Gboard\textquotesingle s tracking using iOS\textquotesingle{}
|
|
|
|
tracker blocking. Gboard does not log the text you store and instead
|
|
|
|
uses federated learning to improve its autocorrect. There are no private
|
|
|
|
options for an iPhone so it is better to choose the best out of two
|
|
|
|
evils.
|
|
|
|
|
|
|
|
All in all, the keyboard you use should be a factor for everyone. Use a
|
|
|
|
different keyboard and do not use the default one unless you are on
|
|
|
|
\href{https://lineageos.org/}{LineageOS} or
|
|
|
|
\href{https://grapheneos.org/}{GrapheneOS}.
|
|
|
|
|
|
|
|
\end{document}
|