[GUIDE][Difficulty: Intermediate] Save top 100 quotes from your favourite subreddit - Tasker Tips & Tricks

Greetings.
After successfully implementing this, I've tried
to take this task a further and tried to save the quotes in one (text) file at user desired location along with a prompt of how many posts user wants to pull from reddit.
Taker Detail : Get desired (totally customizable from variables) titles/quotes from popular subreddits (like r/quotes) and save them in a text file for future use.
GUIDE :
1. Task -> New Task
2. Variable -> Set -> Name "%subreddit" Value "quotes" {or your desired subreddit}
3. Variable -> Set -> Name "%NoOfPosts" Value "25" {25 by default, you can change it as well}
Go back to main Task view.
4. Scene -> New Scene -> Name : Reddit1.
5. Add a TextFiled -> Name : How many posts?
6. Add Element -> NumberPicker -> Set Min : 1 , Max=100, Default = 25. Go to VALUE SELECTED Tab ->
New Action -> Variable Set -> Name : "%NoOfPosts" to "%new_val" {Thanks to Reddit API, max can be 100 only}
7. Go Back to main scene edit screen.
8. Add Element -> Button -> Label : "OK" -> Go to TAP tab -> Add Action -> Destroy Scene -> Name : "Reddit1".
9. Go Back to TASKS tab.
10. Go to previously created task. {from step 3}
11. SCENE -> Show Scene -> Select "Reddit1" -> UnCheck : Continue Task Immediately
12. Add -> Alert -> Flash -> Text : Getting your data from %subreddit.
13. Add -> NET -> HTTP Get -> Serverort = "json.reddit.com/r/%subreddit/top/?sort=top&t=all&limit=%NoOfPosts" -> TimeOut : 82 {Again thanks to Reddit api} {You can change sort modes by looking at the reddit api}
14. Add -> Alert -> Flash -> Text : Saving %NoOfPosts posts from r/%subreddit...
15. Add -> Code -> Java Scriptlet -> Add following code :
Code:
var arr = JSON.parse(global("HTTPD"));
var i = 0;
var mytext = "";
var myarr = [];
var i2 = 0;
var path1 ="/storage/emulated/0/apks/myquotes3.txt";
var newtext = "";
for (;arr.data.children[i];) {
myarr.push(arr.data.children[i].data.title);
i++;
}
for(;myarr[i2];)
{
newtext = myarr[i2] + "\n \n" ;
var ok = writeFile(path1, newtext, true )
i2++;
}
{you need to change the 'path1' variable}
16. Add-> Variable Clear -> Name : %HTTPD*
17. Add -> Alert -> Text : Saved!
Congratulations. You've saved some of the good life quotes directly from reddit.
Future enhancements : We can make some automated task where from this text file, daily (or at some interval) we can grab one quote and post it to any particular WhatsApp group or even send a text message.
New Ideas are always welcomed.
Screenshots here.

@tjhackz : Thank you for sharing! By the way, there is a ";" missing after ")" , before i2++. I was getting a error because that. You should edit your post and add it, because new tasker beginners ( like me ) will have a problem . Once again, thank you!

Related

.jpg file ico

Hi on my Kaiser WM6.1 Official, gone Icon of "Pimg.exe app" (pictures and videos).
All my .jpg files are Windows system ico (Icon for unrecognizably files), but no "IMG Ico" of Pimg.exe. I try change association and Icon in Total Commander (.jpg to pimg.exe "%1") but on .jpg images are still system ico.
Is it possible, that it is my Pimg.exe corrupt (without Icon)?
Thanks for your reply.
- Please somebody can you upload for me file "pimg.exe" (from Windows directory) and I try if contains icon. Thx.
I have the same problem. Is there any way to fix it?
Solved: MemMaid 2.3 -> Jump To -> Databases -> Extensions -> .jpg .jpeg -> Edit... -> Edit Class -> Class: JPEGFile ; Description: JPEG Image ; Icon: browsres.dll,-6704 ; Commands: 1 - Name: DRMOpen Command: pimg.exe "%1" 2 - Name:Open Command: pimg.exe "%1"
J0hny said:
Solved: MemMaid 2.3 -> Jump To -> Databases -> Extensions -> .jpg .jpeg -> Edit... -> Edit Class -> Class: JPEGFile ; Description: JPEG Image ; Icon: browsres.dll,-6704 ; Commands: 1 - Name: DRMOpen Command: pimg.exe "%1" 2 - Name:Open Command: pimg.exe "%1"
Click to expand...
Click to collapse
Worked like a charm, now does anyone have a full listing of wm6 icon to reset the other media files

[Dev][Guide][All-About-Aroma][For-Tab2]

guys i started a new thread for devs that still don't use the aroma installer binary
Click to expand...
Click to collapse
okay 1 step what is aroma
aroma installer: Is an excutable binary that is based on the edify scripting that contains 2 excutables in meta-inf/com/google/android 1.is the ordinary update-binary (know as update binary installer) and the 2.is the aroma binary that split into two parts a.the aroma config and the b.the binary the config is which instructs the binary to make the ui like alert box and the menu box..
Click to expand...
Click to collapse
LETS DIG DEEPER NOW
Setting Rom/Mod Name in Aroma-config
Use these codes to show the name of your rom /mod
copy pasta this code just under the license
Code:
ini_set("rom_name", "example rom");
ini_set("rom_version", "you rom version");
ini_set("rom_author", "mythi");
ini_set("rom_device", "GT-P31XX");
ini_set("rom_date", "date");
Then we need to Show this info so follow and some more typing !!
add this just beneath the lines added previously
Code:
###################################################################################################################
#
# STEP 1 - SHOW ROM INFORMATION
#
viewbox(
#-- Title
"Hello!", <<------ This can be changed
#-- Text
"You are about to install <b>"+ <<--------- this can be changed
#-- Get Config Value
ini_get("rom_name")+
"</b> for <b>"+ini_get("rom_device")+"</b>.\n\n"+
" VERSION\t: <b><#selectbg_g>"+ini_get("rom_version")+"</#></b>\n"+
" UPDATED\t: <b><#selectbg_g>"+ini_get("rom_date")+"</#></b>\n\n\n"+
"Press <b>Next</b> to continue the installation.",
^^^
| <----- this can be changed !!
|
#-- Icon
"@welcome"
); <<----------- Remmeber this one
We are not done yet !!
ADD CREDITS SECTION !!
TYPE THESE IN AROMA CONFIG
Code:
###################################################################################################################
#
# STEP 3 - CREDITS
#
textbox(
#-- Title
"Thanks To", << THIS CAN BE CHANGED--------------
#-- Subtitle
"", << THIS CAN BE CHANGED--------------
#-- Icon
"@update", << THIS CAN BE CHANGED--------------
#-- Arg 4
resread("thanks.txt") << THIS CAN BE CHANGED--------------
); << REMMEBER THIS--------------
NOW GOTO META-INF\COM\GOOGLE\ANDROID\AROMA\HERE AND MAKE A NEW NOTE PAD FILE CALLED thanks AND SAVE AS TXT THEN TYPE WHAT YOU WANT OR USE A TEMPLETE BY ME IN ATTACHMENT NOW YOU ADDED CREDITS PAGE HAVE FUN
ADD LICENCE PAGE IN AROMA
TYPE THESE
Code:
###################################################################################################################
#
# STEP 2 - TERMS OF USE
#
agreebox(
#-- Title
"Important notes!",
#-- Subtitle / Description
"",
#-- Icon
"@quarantine",
#-- Text Content
resread("agreement.txt"), <<------------------ THIS CAN BE CHANGED
#-- Checkbox Text
"I agree with these and I am not high,drunk,mad !!.", <<------------- THIS TEXT SHOWS BEHIND THE CHECK BOX !!
#-- Unchecked Alert Message
"You need to agree with the Terms of Use..." <<---------------- THIS SHOWS WHEN BOX IS NOT CHECKED
); <<--------------- REMMBER THIS
NOW GO TO META-INF\COM\GOOGLE\ANDROID\AROMA\HERE CALLED agreement AND SAVE AS TXT ANDWHAT YOU WANT TO BE DISPLAYED OR USE TEPELATE BE ME !! IN ATTACHMENT :silly:
INSTALLING PROCESS
TYPE THESE
Code:
###################################################################################################################
#
# STEP 4 - INSTALLING
#
ini_set("text_next", "Install now");
viewbox(
"Almost Done !!",
"You are now ready to begin installation.\n\n"+
"Press <b>GOGOGO</b> to start.\n\n"+
"If you want to review or change any of your installation settings, press <b>Back</b> Button.",
"@install"
);
ini_set("text_next", "GOGOGO"); <<----------- THIS CAN BE CUSTOMIZED
install(
"Installing",
"Flashing <b>"+ini_get("rom_name")+"</b>...\n"+
"Please Wait...",
"icons/install",
"Done! Press <b>Next</b> button"
);
viewbox(
"Installation was successful!",
"You are now running <b>"+ini_get("rom_name")+"</b>.\n\n"+
"<b>If installation sucsess please reboot your tab and don't touch any thing</b>\n\n"+
"<b>Leave the tab for 5minutes</b>\n\n"+
"<b>After that setup basic installation</b>\n\n"+
"<b>Don't setup google account !</b>\n\n"+
"<b>If you choose to flash anything on top of the rom you may loose the mods included in it !</b>\n\n"+
"<#selectbg_g><b>Please hit thanks to support the author of this ROM is greatly appreciated!</b></#>\n\n",
"@Welcome To FastDream HD"
ALL OF THE ABOVE CAN BE CUSTOMIZED !!
); <<------------- REMMBER THIS
COMING UP
1.ADD COMPLICATED MENU BOXES
2.ADD SIMPLE MENU BOXES
3.MAKE CUSTOM THEMES FOR AROMA
now going to sleep more later
reserved

[GUIDE]: Python for automation using dtmilano's android ViewClient

{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
Python for automation using dtmilano's android ViewClient​
Syllabus
1. What is python?
2. What is dtmilano's android ViewClient?
2a. How to install dtmilano's android ViewClient?
3. What all methods present in android viewclient?
4. How to import and use android viewclient in our project?
5. How do I automate android native/3rd party apps using android viewclient?
6. How to take screen shots using viewclient?
7. How to handle files using file library?​
Let us begin the journey, I hope this one wont be boring
​
1. What is Python?​Python is a general-purpose interpreted, interactive, object-oriented, and high-level programming language.
It was created by Guido van Rossum during 1985- 1990. Like Perl, Python source code is also available under the GNU General Public License (GPL).
2. What is Dtmilano's android viewclient?​- AndroidViewClient is a 100% pure python library and tools that simplifies test script creation
and android test automation, providing higher level operations and the ability of obtaining the tree of Views present at any
given moment on the device or emulator screen and perform operations on it.
As it's 100% pure python it doesn't require monkeyrunner, jython or any interpreter other than python.
2a. How to install Dtmilano's android ViewClient?​
Install Python from https://www.python.org/downloads/
Now download dtmilano's .egg file from https://pypi.python.org/pypi/androidviewclient/
Once it is done rename the downloaded file to .zip format and after that extract it to C:\Python27\Lib\site-packages.
The easiest method to install this is to use the command "easy_install". If you don't have easy_install installed, install the package python-setuptools(https://pypi.python.org/pypi/setuptools)
Once its done setup environment variable to C:\Python27\Scripts and after that run easy_install <path of downloaded dtmilano's .egg file> and you are good to go.
3. What all methods present in viewclient?​- Some of the most used methods I have listed below -
Code:
'TRAVERSE_CIT', 'TRAVERSE_CITB', 'TRAVERSE_CITC', 'TRAVERSE_CITCD', 'TRAVERSE_CITCDS', 'TRAVERSE_CITG', 'TRAVERSE_CITPS', 'TRAVERSE_CITUI', 'TRAVERSE_S', '_ViewClient__findViewWithAttributeInTree', '_ViewClient__findViewWithAttributeInTreeOrRaise', '_ViewClient__findViewWithAttributeInTreeThatMatches', '_ViewClient__findViewsWithAttributeInTree', '_ViewClient__getFocusedWindowPosition', '_ViewClient__hammingDistance', '_ViewClient__levenshteinDistance', '_ViewClient__mapSerialNo', '_ViewClient__obtainAdbPath', '_ViewClient__obtainDeviceSerialNumber', '_ViewClient__parseTree', '_ViewClient__parseTreeFromUiAutomatorDump', '_ViewClient__pickleable', '_ViewClient__splitAttrs', '_ViewClient__traverse', '__del__', '__doc__', '__init__', '__module__', 'assertServiceResponse', 'connectToDeviceOrExit', 'distance', 'distanceTo', 'dump', 'excerpt', 'findViewById', 'findViewByIdOrRaise', 'findViewByTag', 'findViewByTagOrRaise', 'findViewWithAttribute', 'findViewWithAttributeOrRaise', 'findViewWithAttributeThatMatches', 'findViewWithContentDescription', 'findViewWithContentDescriptionOrRaise', 'findViewWithText', 'findViewWithTextOrRaise', 'findViewsContainingPoint', 'findViewsWithAttribute', 'getRoot', 'getSdkVersion', 'getViewIds', 'getViewsById', 'hammingDistance', 'imageDirectory', 'installPackage', 'isKeyboardShown', 'levenshteinDistance', 'list', 'longTouch', 'serviceResponse', 'setAlarm', 'setText', 'setViews', 'setViewsFromUiAutomatorDump', 'sleep', 'swipe', 'touch', 'traverse', 'traverseShowClassIdAndText', 'traverseShowClassIdTextAndBounds', 'traverseShowClassIdTextAndCenter', 'traverseShowClassIdTextAndContentDescription', 'traverseShowClassIdTextAndTag', 'traverseShowClassIdTextAndUniqueId', 'traverseShowClassIdTextContentDescriptionAndScreenshot', 'traverseShowClassIdTextPositionAndSize', 'traverseTakeScreenshot', 'writeImageToFile', 'writeViewImageToFileInDir'
4. How to import and use android viewclient?​- Once you have installed android viewclient next step is to use this in our new project. Below is the code snippit for importing android view client -
Code:
'''
Created on Dec 19, 2015
@author: ravi h basawa
'''
from com.dtmilano.android.viewclient import ViewClient
device, serialno = ViewClient.connectToDeviceOrExit()
vc = ViewClient(device=device, serialno=serialno)
5. How do I automate android native/3rd party apps using android ViewClient?​
Pre-conditions in your device:
1. Enable USB debugging.
2. Enable stay awake option.
Pre-conditions in PC:
1. android sdk should be present.
2. connect your testing device. (double check with cmd "adb devices")
3. python env. variables are all set.
4. Create a new folder named "Automation" on your desktop.
5. Inside it create a new text file and paste the below given code and save it as Settings.py (or whatever you want to give)
Lets start-- It is very easy to automate android apps using android ViewClient. Let me teach you a simple code which will open settings application.
NOTE: This program I have written using my Nexus device running Android latest version 6.0; So the below program may give you errors. Please edit the code accordingly.
Code:
'''
Created on Dec 19, 2015
@author: ravi h basawa
'''
from com.dtmilano.android.viewclient import ViewClient
device, serialno = ViewClient.connectToDeviceOrExit()
vc = ViewClient(device=device, serialno=serialno)
print "################## Settings application test ####################"
device.startActivity('com.android.settings/.Settings')
print 'TEST : PASS'
Once you write the above code, let us save it as Settings.py And then we will try to open it using IDLE software which will come pre-bundled with python as shown below:
* To execute our newly written code we gonna press F5.
Explanation on above code --
The first line of code is to import dtmilano's ViewClient method.
the second line is used to define the devices which you have connected, In my case as I have connected only one device I will not provide serialno,
Going further I will show you as how to connect to two devices and make them communicate.
6. How to take screen shots using viewclient?​
- Now we will take our code to the next level, We gonna open settings app, and then we are going to click on About phone option. and also we'll take screen shot of the device to check as what is inside About phone.
NOTE: Create a folder named "Screenshots" at your current working directory(That is in our case folder named Automation) or else you will get Error saying no folder named "Screenshots" is present.
Code:
'''
Created on Dec 19, 2015
@author: ravi h basawa
'''
import re
import sys
import time
import os
from PIL import Image
from com.dtmilano.android.viewclient import ViewClient
device, serialno = ViewClient.connectToDeviceOrExit()
vc = ViewClient(device=device, serialno=serialno)
print "################## Settings application test ####################"
device.startActivity('com.android.settings/.Settings')
print 'SUCCESFULLY OPENED SETTINGS APP'
vc.dump() ## this is used to refresh the screen.
## below is the for loop used to swipe screen five times. the input swipe command takes 4 args that is X1,Y1,X2,Y2 which can be found using "Pointer location" option present in developer settings.
for i in range(5):
device.shell('input swipe 651 1307 677 680')
vc.dump()
vc.findViewWithText("About phone").touch()##this line will click on About phone option.
print 'About phone option found and clicked'
vc.dump()
time.sleep(2)
device.takeSnapshot(reconnect=True).save(os.getcwd()+'\\Screenshots\\'+'OS_version.png') #this line will take screenshot of the device and store it in the folder named Screenshots.
print 'Screenshot taken'
print 'TEST : PASS'
Now when you execute the above code you will see the result as below -
Now let us write a code to check the current android version displayed under settings app is proper or not.
Code:
'''
Created on Dec 19, 2015
@author: ravi h basawa
'''
import re
import sys
import time
import os
from PIL import Image
from com.dtmilano.android.viewclient import ViewClient
device, serialno = ViewClient.connectToDeviceOrExit()
vc = ViewClient(device=device, serialno=serialno)
print "################## Android OS VERSION TEST ####################"
device.startActivity('com.android.settings/.Settings')
print 'Settings app opened'
vc.dump()
for i in range(5):
device.shell('input swipe 651 1307 677 680')
vc.dump()
vc.findViewWithText("About phone").touch()
vc.dump()
print 'About phone option clicked'
device.shell('input swipe 651 1307 677 680')
vc.dump()
version = vc.findViewWithText('Android version')
if version:
vnum = vc.findViewWithText('6.0')
if vnum:
print 'Android OS version is 6.0'
vc.dump()
time.sleep(2)
device.takeSnapshot(reconnect=True).save(os.getcwd()+'\\Screenshots\\'+'OS_version.png') #this line will take screenshot of the device and store it in the folder named Screenshots.
print 'Screenshot taken'
print 'TEST : PASS'
device.press('KEYCODE_HOME')
else:
print 'Incorrect OS version'
print 'TEST : FAIL'
else:
print 'Android version string not found'
print 'TEST : FAIL'
device.press('KEYCODE_HOME')
In the above code you might be wondring as what does vc.dump() stands for, It is actually refreshes the screen and it makes easier to find required data on the screen. Without vc.dump() method there is 100% guarenty that our script gonna fail.
OK, Now we will wrtie a script which has Python functions in it.
Before this let us learn as what is 'def' in Pyhton is all about:
As we all know that we define functions to provide the required functionality. Below are some rules to define a function in Python.
[*] Function blocks begin with the keyword def followed by the function name and parentheses ( ( ) ).
[*] Any input parameters or arguments should be placed within these parentheses. You can also define parameters inside these parentheses.
[*] function names can be started with a _ or a small letter.
[*] The code block within every function starts with a colon ) and is indented.
Now I will write a simple code to show you as how def works.
Code:
'''
Created on Dec 19, 2015
@author: ravi h basawa
'''
def test():
print 'Hi I am inside a function'
test()
As you can see from the above code, there is a single tab given after the fucntion test():, these are called as indents. Once you start using IDLE for python script writing you will get to know more on these indents.
Just for testing purpose try to write your own functions using IDLE; Once you type as " def test(): " and hit ENTER without the qouats you will see a single tab occured. This is how Pyhton works. There are no curly brases in it. But only Indents. If you can handle these indents you are good to go.
And one more thing I forgot to explain you guys, That is you can Indent a region by using the shortcut ctrl+] and Dedent using the shortcut ctrl+[
For now let us write the same code; But this time we will use 'def' in it.
Code:
'''
Created on Dec 19, 2015
@author: ravi h basawa
'''
import re
import sys
import time
import os
from PIL import Image
from com.dtmilano.android.viewclient import ViewClient
device, serialno = ViewClient.connectToDeviceOrExit()
vc = ViewClient(device=device, serialno=serialno)
def os_test():
print "################## Android OS VERSION TEST ####################"
device.startActivity('com.android.settings/.Settings')
print 'Settings app opened'
vc.dump()
for i in range(5):
device.shell('input swipe 651 1307 677 680')
vc.dump()
vc.findViewWithText("About phone").touch()
vc.dump()
print 'About phone option clicked'
device.shell('input swipe 651 1307 677 680')
vc.dump()
version = vc.findViewWithText('Android version')
if version:
vnum = vc.findViewWithText('6.0')
if vnum:
print 'Android OS version is 6.0'
vc.dump()
time.sleep(2)
device.takeSnapshot(reconnect=True).save(os.getcwd()+'\\Screenshots\\'+'OS_version.png') #this line will take screenshot of the device and store it in the folder named Screenshots.
print 'Screenshot taken'
print 'TEST : PASS'
device.press('KEYCODE_HOME')
else:
print 'Incorrect OS version'
print 'TEST : FAIL'
else:
print 'Android version string not found'
print 'TEST : FAIL'
device.press('KEYCODE_HOME')
os_test()
Output of the above code will be as below:
============= RESTART: C:\Users\ravi\Desktop\testing\Settings.py =============
################## Android OS VERSION TEST ####################
Settings app opened
About phone option clicked
Android OS version is 6.0
Screenshot taken
TEST : PASS
>>>
About file handling
Before we move to the next, Let me teach you as what is 'class' in Python and how do we use it.. Below is the small code consists of a class and one function.
Code:
'''
Created on Dec 27, 2015
@author: ravi h basawa
'''
class ctest():
def test(self, value):
print 'Hi I am inside a function and passed value as >>' + ' ' + value
c = ctest()
c.test('testing')
* From the above code we have created a class named 'ctest' and a function named 'test'.
* Once we create a class to create a function we have to give one tab inside the 'ctest' class.
* The code 'c = ctest()' is creating a object for our class.
* The next line 'c.test('testing')' will pass value to our newly created function.
I hope now u have understood as how 'class' works in Python from the above code.
Ok, Now let us try to send a message and this time let us use "Class" in the below code -
Code:
'''
Created on Jan 10, 2016
@author: ravi h basawa
'''
import os
from com.dtmilano.android.viewclient import ViewClient
device, serialno = ViewClient.connectToDeviceOrExit()
vc = ViewClient(device=device, serialno=serialno)
fd = open('MsgTest.xls',"a+")
fd.write("\nMessanger")
class msg():
def newmsg(self):
print 'Opening Message app'
device.shell('am start com.google.android.apps.messaging')
vc.dump()
vc.findViewById('com.google.android.apps.messaging:id/start_new_conversation_button').touch()
vc.dump()
f = vc.findViewWithText('Frequents')
if f:
print 'TEST PASS'
print 'add button clicked'
fd.write("\tPASS")
fd.close()
else:
print 'TEST FAIL'
fd.write("\tFAIL")
c = msg()
c.newmsg()
The above code does these jobs -
* Creates a class named 'msg()'. And inside we have created a new function named 'newmsg()'.
* This code will open google Messenger app and clicks on the 'add recipients' button.
* If the 'add recipients' button is clicked, our test case will be passed else it will fail.
* 'open' function does the job of creating a new xls file in append mode.
* 'write' function does the job of writing the data to the new line inside the appended xls file.
* 'close' function is used to close the xls file.
is there a way to handle the device keyboard, say, i would like to press a key and then close the keyboard?
Also where can i find detailed documentation?
may be you need to use pointer location(x,y coordinates).
Implicit wait and explicit wait in vc
Hi,
Iam trying to use android view client to automate a task. However, I have a requirement wait for a perticular element to load up.
Is there are function in VC to use implicit or explicit wait.
Thanks

[KEYLAYOUT] Hungarian keyboard for Droid 4

Hungarian has 9 special characters: áéíóöőúüű. Using this tutorial I remapped the keylayout as follows:
1. 'sym' + 'a' = 'á'
2. 'sym' + 'e' = 'é'
3. 'sym' + 'i' = 'í'
4. 'sym' + 'o' = 'ó'
5. 'sym' + 'u' = 'ú'
6. 'sym' + '7' = 'ü'
7. 'sym' + '8' = 'ű'
8. 'sym' + '9' = 'ö'
9. 'sym' + '0' = 'ő'
Shift & capslock gives you the capital ÁÉÍÓÖŐÚÜŰ, of course. For the changes to take effect, you have to have root access, and replace the following 7 original files in the /system/usr folder to my 7 attached modified files (in zip) using Cyanogenmod / Lineage OS file manager app (or any other root explorer app, e.g. the premium version of File Expert):
1. /system/usr/keylayout/Generic.kl
2. /system/usr/keylayout/omap4-keypad.kl
3. /system/usr/keylayout/qwerty.kl
4. /system/usr/keychars/Generic.kcm
5. /system/usr/keychars/omap4-keypad.kcm
6. /system/usr/keychars/qwerty.kcm
7. /system/usr/keychars/qwerty2.kcm
Don't forget to set the permissions of all the 7 new files using the above mentioned tutorial as follows:
OWNER: READ & WRITE
GROUP: READ
ALL: READ
After that, restart your Droid 4 - you'll have a fully functional HUNGARIAN layout physical keyboard.

[HELP] Variable Section

I'm trying to get the time from a full date string. However occasionally it encounter the following error. Can someone help to fix this issue?
12.56.24/Variables doreplresult: |%time| -> |20-8-2022 15.00|
12.56.24/E Variable Section: %time -> %time
12.56.24/E Variable Section: ->
12.56.24/E FROM: 14 LENGTH 5
12.56.24/E Variable Section: %time: only 5 chars, last request 18
12.56.24/E result: stop task (error)
12.56.24/Variables doreplresult: |%time| -> |20-8-2022 15.00|
12.56.24/E Error: 1
12.56.24/MacroEdit action finished exeID 1 action no 7 code 597 status: Err next 7

Categories

Resources