SU950 옵티머스Z용 ClockworkMod Recovery v2 입니다.


옵티머스Z는 백원만 님이 hPa님의 옵티머스Q CWM리커버리를 기반으로 제작해 주신것이 있으나

v4.0.1.x 인것으로 확인이 되어, 제가 v6.0.1.2 로 한번 빌드해 보았습니다;



z_recovery_v2.img


제가 옵티머스Z 를 한번도 쓴적이 없기에, 아직도 시험을 못했습니다.

확인 부탁드립니다.


http://cafe.naver.com/androiders/1568087



hPa님이 만들어주신 옵티머스Q의 ClockworkMod Recovery v9 작업 파일을 가지고, 버전업이나 했습니다...


Chage Log

- 6.0.1.2 로 버전 업

- 985hPaKick -> Icaros

- /data/data 추가

- 콘솔 기능 박멸


버전업에 따라

- 백업 속도 향상

- 백업 방식 늘어남

이 있습니다.


http://cafe.naver.com/androiders/1566827



recovery_v10.img


안녕하세요^^

이카로스 입니다~

 

이 글은 LG 옵티머스Q용 커스텀 롬 및 커스텀 리커버리 링크용 글 입니다^^ 다른 정보는 그닥 많진 않네요~

※옵티머스Q의 최대 자료 공유지인 N사의 안드로이더스 카페가 블라인드 처리 되어 현제 대부분의 자료가 구하기가 어렵습니다;;

Cm7 링크는 이 글에 있습니다.

CWM 리커버리는 v9 파일을 찾을수가 없습니다. 개인적으로 소유하신 분들께 부탁드려 구하는수밖에 없습니다.

제가 빌드한 v10 파일은 http://minnote.net/142 에서 구하실수 있습니다.

 

(LG 옵티머스Q의 전면 모습 / 출처 - http://cafe.naver.com/mobiletop10/7458 / 출처 글에 보시면, 블로그 보다 먼저 사진을 올린다고 하시니, 아마 저 사진에 나와있는 문구 블로그에 올라온 글도 출처가 될듯합니다^^ 링크는..못구했습니다;)

 

옵티머스Q의 커스텀 펌웨어 및 커스텀 커널, 커스텀 롬은 모두 네이버 카페 "안드로이더스" 내 옵티머스Q 포럼에서 여러 능력자 분들에 의해 이루어 졌습니다.

 

대표적으로 hPa님 (CM개발 및 커널 개발), 라피님 (놀랍게도, OpQumizer 개발), 눈떠님 (고자 패치 및 Fastboot 해제), 백원만님 (커널 개발), 스톤콜드님 (커널 개발 및 여러가지 패치 개발), 슈렐라이님 (커널 개발) 님등이 있고, 이외에도 여러 능력자 분이 옵티머스Q의 길을 열어 주셨답니다^^

 

이 글은 커스텀 펌웨어는 간략적으로 소개만 하고, hPa님의 커스텀 롬을 주로 다루겠습니다.

 

Cyanogen Mod 7 Update 4 / Android 2.3.7 Ginger Bread By. hPa

http://cafe.naver.com/androiders/1201116 / 안드로이더스 내 hPa님의 원본 게시글

http://www.mediafire.com/?de5z056pn1lfv03 / CM7 Update4 Mediafire 링크

 

가장 마지막으로 올라온, CM7 for Optimus Q update 4의 달라진 점을 보시면

 

- 2.3.5 -> 2.3.7 버전 업데이트!

- 쉬프트 키 및 평선키 문제 반 해결

- 블루투스 관련 문제 해결

- 전면 및 쿼티 백라이트 문제 해결

- 어플 제거 및 추가

- hPa님의 7차 커널 적용

 

등이 있습니다.

 

지금 스크린샷을 찍을려고 보니, 옵티머스Q가 방전 되있네요 ~_~;

 

그래서, 제가 예전에 안드로이더스에 글을 쓰며 썻던 스크린샷을 올려 봅니다.

 

아이폰 테마와 저만의 테마가 반 범벅 되어있는, 아이폰 테마의 CM7 옵티머스Q

 

ClcokworkMod Recovery v9 / v5.0.2.3 By. hPa

http://cafe.naver.com/androiders/1179698 / 안드로이더스의 hPa님 게시글

 

CWM 리커버리 For Optimus Q v9 입니다.

(옵티머스Q CWM 리커버리 v3 사진 / 출처 - http://cafe.naver.com/androiders/837526)

 

Lewa OS For Optimus Q / CM7 Update 4 기반 By. dhengml123

http://cafe.naver.com/androiders/1405628 / 안드로이더스의 dhengml123님의 글

 

하하 약간 불안정 하다 길래, 제가 옵티머스Q2에서 사용한 방법으로 다시 포팅할려니...드럽게 귀찮아 졌네요;

 

하지만, 옵티머스Q 기기를 소유 하지 않으신 분이 해주시다니~ 감사합니다~

(쿠킹법은...쉽지만...그래두, 감사합니다!)

 

감사합니다^^

안녕하세요^^

LG전자에서 첫 안드로이드 스마트폰이자, 국내 두번째 스마트폰! 국내 제조사 첫 안드로이드 스마트폰인 안드로원 의 커스텀 롬들을 모아보았습니다.

 

안드로원은 네이버 카페 "안드로원 라이프" 에서 주로 개발이 되며, 영구땡칠님이 주로 커스텀 롬을 만들어 주시고 계십니다.

 

읽으시기전 손가락 운동 한번^^

 

 

다른 회원 분들도, 커스텀 펌웨어를 만들어 주시고 계십니다^^

 

안드로원은 해외 GW620 모델로 출시했지만, 그닥 많은 발전을 하지 못하였습니다..ㅠㅠ

오히려 국내 개발이 더 좋은듯 합니다^^

 

 

(안드로원 전면 / 출처 - http://cafe.naver.com/mobiletop10/4641)

 

먼저 안드로원에는 순정 LG 프로요롬에 시스템 이미지만 바꾸는 커스텀 펌웨어와 완전히 다른 롬으로 가는 커스텀 롬 이 있습니다.

 

커스텀 롬으로는 영구땡칠님의 Cyanogen Mod 7 (Opene EVE)와 Cyanogen Mod 9가 있습니다.

 

즉 안드로원은 LG전자에서 지원해 주지 않는, 진저브레드 2.3.7과 아이스크림 샌드위치 4.0.3 을 먹을수 있었습니다.

(영구땡칠님의 CM9 스크린샷 中 / 출처 - http://cafe.naver.com/andronelife/21248)

 

영구땡칠님의 XDA등에서 주로 쓰이는 wkpark 라는 말이 커널 버전에 들어가있네요^^

 

되는것
1. 터치스크린 정상작동
2. GPU 정상작동 확인함 (화면에 잔상 남는 현상 있음)
3. WiFi
4. 신호잡힘
5. 사운드
6. 전화
7. 메시지 (CM7에 적용되었던 한글 메시지 관련 패치를 백포팅. http://review.cyanogenmod.com/11703 by me)
8. 진동
9. 화면 방향 정상. 키보드불빛
10. WiFi 핫스팟 / USB 테더링 고침 (남은문제 있음)
11. GPS (gapps가 제대로 작동되어 잘 된다는 것 확인)


진행중
아직 개발단계에 있는 것입니다.
* 스크린샷 (openGL ES 2.0의 새로운 함수를 쓰고 있어서 안되고 있음)
- 실행했던 앱의 스크린샷 - 안되고있음
- 파워버튼 누르면 나오는 스크린샷 - 안되고있음
- 이 둘은 같은 기능을 쓰고 있으며 http://review.cyanogenmod.com/12089 에서 고침
- 그밖에 화면이 회전할때에 부자연스럽게 회전되고 있던 점도 같이 고침.
* 카메라 - 카메라의 API가 바뀌어서 제대로 안되고 있음.

안되는것
1. WiFi - 커널 변경해야 함
2. 사운드
3. 진동
4. 전화 - 신호는 잡히되 전화도중 중단됨 (사운드문제가 해결되니 자동 해결)
5. 메시지 - 메시지가 오면 메시지가 중단되었습니다라는 창이 뜸.
6. 핫스팟/USB 테더링(일부문제남음)
7. 블루투스
8. USB 스토리지
9. 브라우져 (인터넷은 되지만 기본 브라우져가 안됨)
10. MMS - 수신이 제대로 안됨
11. 카메라

 

영구땡칠님님의 CM9 글 中 / 출처 - http://cafe.naver.com/andronelife/21248

 

Cyanogen Mod 9.0.0 / Android 4.0.3 Icecream Sand Wich By. 영구땡칠

http://cafe.naver.com/andronelife/21248 / 안드로원 라이프 링크

http://code.google.com/p/openeve/downloads/list / Opene EVE 다운로드 링크

 

 

 

가상 상단의 3개의 파일을 받아 주시면 됩니다^^

 

Cyanogen Mod 7.2.0 / Android 2.3.7 Ginger Bread By. 영구땡칠

http://cafe.naver.com/andronelife/19835 / 안드로원 라이프 링크

http://code.google.com/p/openeve/downloads/list / Open EVE 다운로드 링크

 

CM7 의 문제점은 안드로원 라이프 링크에서 참조해 주시기 바랍니다.

 

 

 

 

빨간색 박스가 된것은 그냥 받아 주시고,

노란색 박스가 된것은 둘중 하나만 받아 주시면 됩니다.

노란색 박스의 두 이미지 차이는 부트이미지 이지만, 총 RAM 이 224MB 이냐 236MB 이냐 입니다.

 

전 아래쪽의 236MB 짜리 이미지로 플래싱을 하였습니다^^

 

ClcokworkMod Recovery For Android-1 / v4.0.1.5 By. 영구땡칠

http://openeve.googlecode.com/files/recovery-EVE-4.0.1.5.img / Open EVE 다운로드 사이트 내 CWM이미지 바로 다운로드 링크

 

 

적용 및 플래싱 방법은 따로 글을 올리겠습니다^^

저는 현제 안드로원 기기를 팔고 없는 관계로 글로만 빽빽하겠지만요~ ㅎ

'iCAROS Works > LG 안드로원 (KH5200)' 카테고리의 다른 글

[TEST] ClockworkMod Recovery v1 / v6.0.1.2  (0) 2013.01.05

안녕하세요.

Icaros 겹 winpower Se7eN 입니다.


이 글은 단지 자료 보관용이며 그닥 설명 따윈 없습니다.


위 사진과 아주 약간의 차이가 있지만, 대충 비슷 합니다.


* 업데이트 로그

- 뒷 배경화면 추가 (이미지 추천좀 해주세요~ 이왕이면 800x480 으로요 ㅋㅋ)

- CWM버전 정보 수정

- Advanced 메뉴에 있는 껍데기 Console. 내부 소스는 모두 박멸했습니다. 아오 미치겠네요

- Power Off 추가

- 메인화면 수정

- /data/data 추가 (이로 인해, 어플은 삭제하지 않고, 어플을 삭제하지 않은채로 공장초기화 비슷한 역활을?...)

- 전원 버튼으로 선택 가능



ics_recovery_v4.img



안녕하세요!

Icaros 이자, Se7eN 인 Winpower7 입니다! (으잉?)

 

오늘은 그 유명하고 빠릿하고 간지 좔좔 줄줄 흐른다고 알려져있는, TWRP 리커버리를 한번 포팅 시도를 해보겠습니다!

 

Twrp 리커버리란?

TeamWin 팀에서 만든 리커버리로써, 현제 많은 기기가 이용중인 CWM리커버리보다 강력하며 빠른 리커버리 입니다.

 

TeamWinRecoveryProject 의 약자로써, 국내에도 몇몇 기기에 포팅이 되어 많은 사랑을 받고 있습니다.

 

※참고로 본 블로그는 드레그 기능을 지원하지 않음으로, 맨 아래 보시면 TXT파일로 따로 저장한 파일잉 있습니다.

 

왼쪽 옵티머스 3D와 오른쪽 갤럭시 넥서스에 실행되고 있는, Twrp 리커버리 / http://cafe.naver.com/nexusdevelops/8514 / http://cafe.naver.com/nxss/230342)

 

위 사진 처럼, 터치, 배터리 퍼센트 표시기, 소프트키, 암호화 등의 CWM과 다른 기능들로 많은 신비함을 뿜어 내고 있답니다 ㅎㅎ

 

하지만 이런 리커버리....지금까지 포팅이 된 리커버리는 주로 ClcokworkMod 리커버리 입니다.

그럼 이제, Twrp 리커버리도 각 기기에 알맞게 포팅시도를 해볼까요?

 

안탑갑게도, 전 국내 LG 옵티머스Q2에 포팅시도를 하고 있지만, 아직까지 LG벽돌이 기다리고 있을뿐 ~_~;;

 

먼저 이 포팅법은 Rootzwiki 에 TeamWin 에서 직접 작성해준 글을, 제 흐접 영어 실력으로 번역한 글 입니다.

원문 : http://rootzwiki.com/topic/23903-how-to-compile-twrp-from-source/

 

일딴 제가 한국어로 조금 원문과 다르게 쉽게 번역을 하였습니다.

직역을 한곳엔 표시를 하였습니다.

 

1. 리커버리 소스 파일 교체

먼저 자신이 어떤 소스를 받았는지 알아야 합니다.

예전 제 글을 따라 오셨다면, http://minnote.net/117 이글에서 안드로이드 버전 마다~ 이 부분을 보시면

각각 받은 소스가 다릅니다.

 

일딴 현제 이 글에 나와있는 말은 진저브레드 소스 (CM7)과 아이스크림 샌드위치 소스 (CM9) 만 언급되었습니다.

CM10 소스 및 CM6 소스는 어떻게 되는지 잘 모르겠습니다.

※안드로이더스 카페 내 콜홍님이 CM10 역시 CM9 처럼 하면 된다고 알려주셨습니다.

 

* CM9/CM10 소스를 받으신 분

Cyanogen Mod 9 ICS 소스를 받으신 분은

https://github.com/TeamWin/Team-Win-Recovery-Project/

위 링크에 들어 가셔서, 파일을 받으신후

CM소스 폴더/bootable/recovery 폴더를 교체해 주세요.

※ 예) /home/icaros/android/system/bootable/recovery

 

 

* CM7 소스를 받으신 분

Cyanogen Mod 7 GB 소스를 받으신 분들은 빌드 폴더도 같이 교체를 해주셔야 작업이 가능 합니다.

 

CM9 설명과 동일하게

https://github.com/TeamWin/Team-Win-Recovery-Project/

위 링크로 들어 가셔서, 파일을 받으신후

CM소스 폴더/bootable/recovery 폴더를 교체해 주세요.

※ 예) /home/icaros/android/system/bootable/recovery

 

CM7 소스를 받으신 분들은 빌드 폴더 또한 교체를 해주셔야 합니다.

 

https://github.com/Dees-Troy/TWRP2-CM7_build

위 링크로 들어 가셔서, 파일을 받으신후

CM소스 폴더/build 폴더를 교체해 주세요.

※ 예) /home/icaros/android/system/build

 

2. 컴파일을 하기 전 기본 정보 수정

먼저 컴파일을 하기전에, 디바이스 정보를 TWRP 리커버리에 알맞게 수정을 하셔야 정상 사용이 가능 합니다.

 

예전에 제 글을 따라 오셨다면, 아마

/home/(사용자 계정명)/android/system/device/(제조사)/(기기명) 폴더가 있습니다.

그쪽으로 터미널이 아닌 마우스를 통해 들어가주세요 ㅎㅎ

 

※ 예) /home/icaros/android/system/device/lge/lu6500

 

그러신뒤, 그 폴더를 가보시면 BoardConfig.mk 파일이있습니다.

 

※현제 윈도우에서 글을 작성하여, 우분투 환경으로 스크린샷을 찍지 못하였습니다...ㅠㅠ 추후 수정하겠습니다.

※다른 CM포팅 작업을 하던 디바이스 셋팅 파일로는 컴파일 하는데 지장이 있을수 있으니, 새로운 부트이미지를 해체 하셔서 작업하시는것을 추천 드립니다.

 

그런뒤, BoardConfig.mk 파일 내에

 

TARGET_RECOVERY_INITRC :=

 

란 문장이 있는지 확인 합니다. 없을 경우 추가해 주시고, 있는 경우

기존에 만들고 있던 리커버리나, 이 방법을 통해 만든 리커버리의 램디스크내에 있는 init.rc 파일 내에

 

on init
        export PATH /sbin

       
export LD_LIBRARY_PATH .:/sbin


라는 문장이 있는지 확인해 줍시다. Q2 이미지 같은 경우엔, 5번째 줄에 있었습니다.

 

모두 성공적으로 확인이 되었다면, 이제 다시 BoardConfig.mk 파일로 돌아와

 

맨 아래쪽에

 

DEVICE_RESOLUTION := 해상도 가로 값x해상도 세로 값

 

을 추가 합니다.

 

예) DEVICE_RESOLUTION := 540x960

예) DEVICE_RESOLUTION := 480x800

 

※참고

아오 제 대가리로 해석을 못하겠어요. 혹시나 해서 언제나 믿지 않았던 발번역을 돌렸지만, 역시 믿을께 못되는듯

원문

Note that themes do not rotate, so the 1280x800 theme is intended for tablets and would not work on the Samsung Galaxy Note that expects a 800x1280 type of theme (which doesn't exist yet).

 

직역본?...

테마들은 회전을 하면 안됩니다. 그래서 1280x800 테마는 타블렛 PC들 그리고, 삼성 갤럭시 노트 같은 800x1280 타입의 테마에선 아직 동작하지 않습니다.

 

아마 타블렛 PC등에서 기본적으로 가로모드가 기본 상태인 몇몇 디바이스들이 해상도를 입력할때 갤럭시 노트를 예로 들자면

800x1280 으로 입력을 하라는 소리 같습니다. 즉 가로모드는 지원이 안되어, 1280x800 으로 입력을 하면 화면이 짤리는듯 합니다.

※100% 정확하지 않습니다.

 

 

그리고 만약 부팅을 했을때, 그래픽이 깨지는 현상이 일어 난다면 아래 문구를 BoardConfig.mk 파일에 추가 합니다.

 

RECOVERY_GRAPHICS_USE_LINELENGTH := true

 

여기 까지를 하면 기본적인 셋팅은 끝나는듯 합니다.

이제 여기서 부턴 부가적인 셋팅 입니다. 하지만 필요한 경우가 많습니다. 잘 읽어봐주세요.

BoardConfig.mk 파일에 적용되는것들 입니다.

 

이 아래 부분은 가장 첫 부분이지만, 해석을 해봐도, 발번역을 해도 뭔소리인질 모르겠습니다.

아래는 당신이 어떻게 개별 / 파티션들을 어떻게 추가로 백업 옵션에 넣을 수 있는지 입니다. 'SP1_NAME' 항목은 recovery.fstab 에 정의된 파티션의 이름과 일치해야 합니다.
'SP1_DISPLAY_NAME' 은 백업된 파일이 'SP1_NAME'의 파티션 이름과 달라야 할 경우에 쓰이는 이름입니다. 'SP1_BACKUP_METHOD'는 파티션이 어떻게 정의되어야 할지(파일 혹은 이미지)
를 결정합니다. 그리고 'SP1_MOUNTABLE' 항목은 파티션이 마운트 될 수 있는지 여부를 결정합니다.

SP1_NAME := "pds"
SP1_BACKUP_METHOD := files
SP1_MOUNTABLE := 1
SP2_NAME := "osh"
SP2_DISPLAY_NAME := "Webtop"
SP2_BACKUP_METHOD := files
SP2_MOUNTABLE := 1
SP3_NAME := "preinstall"
SP3_BACKUP_METHOD := image
SP3_MOUNTABLE := 0

 

고글 발번역을 돌리면

 

아래 백업에 사용할 파티션의 목록에 사용자 정의 / 특별 파티션을 추가 할 수있는 방법입니다.SP1_NAME recovery.fstab에 정의 된 파티션의 이름과 일치해야합니다. SP1_NAME 다를해야 할 경우 SP1_DISPLAY_NAME는 백업 페이지에 표시되는 이름입니다. SP1_BACKUP_METHOD 파티션 (파일 또는 이미지) 백업하는 방법을 정의합니다. 그리고 파티션하는 경우 SP1_MOUNTABLE 결정 장착 할 수 있습니다.

 

이라 나옵니다.

 

아마 특수 파티션을 위한 경우인듯 합니다.

 

RECOVERY_SDCARD_ON_DATA := true - /data/media 를 핸들링하여 사용하는 디바이스들을 위한 구문 입니다.

(허니콤 디바이스들과 ICS에선 갤럭시 넥서스 같은 디바이스들이 필요한 것 입니다)

 

BOARD_HAS_NO_REAL_SDCARD := true - SD카드 파티셔닝 같은 기능들을 사용하지 않습니다.

 

TW_INCLUDE_DUMLOCK := true - HTC Dumlock 같은것이 필요 할때 사용합니다. (아마 독바가 추가 되는듯 합니다)

 

 

이 글상자는 내장 SD카드를 가진 폰들은 필요한 작업입니다.

즉 내장SD카드가 있는 폰이라면 필요 합니다.

※ 외장 SD카드를 꼽지 않아도, SD카드가 있는 폰

 

recovery.fstab 에 쓴 내용이랑 일치시켜 주세요!

 

예를 들어 recovery.fstab 에 내장 메모리를 /emmc 에 지정하고, 외장 SD카드를 /sdcard 에 넣었다면 아래와 같이 추가 합니다.

 

TW_INTERNAL_STORAGE_PATH := "/emmc"
TW_INTERNAL_STORAGE_MOUNT_POINT := "emmc"
TW_EXTERNAL_STORAGE_PATH := "/sdcard"
TW_EXTERNAL_STORAGE_MOUNT_POINT := "sdcard"

 

원래 원문은

 

TW_INTERNAL_STORAGE_PATH := "/data/media"
TW_INTERNAL_STORAGE_MOUNT_POINT := "data"
TW_EXTERNAL_STORAGE_PATH := "/sdcard"
TW_EXTERNAL_STORAGE_MOUNT_POINT := "sdcard"

 

입니다. 하지만 제가 해외 옵티머스 2x의 Twrp 리커버리 작업 파일을 보며 Q2용으로 수정하며 바꾼 내용을 올립니다.

 

또는 recovery.fstab 에 내장 메모리를 /sdcard 에 넣고, 외장 SD카드를 /sd-ext 에 넣으셨다면 아래와 같이 추가합니다.

 

TW_INTERNAL_STORAGE_PATH := "/sdcard"
TW_INTERNAL_STORAGE_MOUNT_POINT := "sdcard"
TW_EXTERNAL_STORAGE_PATH := "/sd-ext"
TW_EXTERNAL_STORAGE_MOUNT_POINT := "sd-ext"

 

 

TW_NO_BATT_PERCENT := true - 첫부분에 있던 사진을 보시면, 배터리 퍼센트가 표시 됩니다. 이걸 표시 하지 않으시려면 추가하세요.

 

TW_CUSTOM_POWER_BUTTON := 107 - 락스크린을 위해 별도의 파워버튼을 지정하려면 추가하세요.

107 부분엔 키값을 넣으면 되는 모양 입니다.

그런데 잠금화면도 있나요!! 역시 Twrp 위대합니다.

 

 

TW_NO_REBOOT_BOOTLOADER := true - 부트로더가 없는 경우 메뉴에서 부트로더로 재부팅 메뉴를 제거 합니다.

 

TW_NO_REBOOT_RECOVERY := true - 리커버리로 직접 진입이 불가능 한경우 메뉴에서 리커버리로 재부팅 메뉴를 제거 합니다.

 

TW_NO_USB_STORAGE := true - USB마운트를 지원하지 않는 디바이스들을 위해 USB마운트 메뉴를 제거 합니다.

 

RECOVERY_TOUCHSCREEN_SWAP_XY := true - X축과 Y축 사이의 터치 맵핑을 스왑 합니다. 뭔소리인지 모르겠네요~

번역은 대충 된듯 합니다.

원문 - swaps the mapping of touches between the X and Y axis / 직역 - 그 X축과 Y축 사이 터치 영역 맵핑을 스왑한다.

 

* 아래 두 줄은 직역 입니다.

RECOVERY_TOUCHSCREEN_FLIP_Y := true - Y축 터치 스크린 값을 넘겨 줍니다.
RECOVERY_TOUCHSCREEN_FLIP_X := true - X축 터치 스크린 값을 넘겨 줍니다.

위와 관련된 구문 입니다.

 

TW_NEVER_UNMOUNT_SYSTEM := true - 시스템 파티션을 절대 마운트 해제 하지 않습니다.

(가끔 몇몇 모토로라 기기에서 필요하다는 군요~)

 

TW_INCLUDE_INJECTTWRP := true - 부팅 이미지에 두 번째 램 디스크 복구 삼성 장치 삼성 부트 이미지 일부 TWRP를 삽입 할 수있는 능력을 추가

제가 삼성 디바이스를 한번도 못만져 봐서 그런지, 해석도 이해도 안되네요. 구글 발번역 입니다.

※ 아마 삼성기기에 있는 두번쨰 리커버리 파티션에 Twrp 이미지를 플래싱 할수 있는 능력 추가?..정도 인듯 합니다.

 

TW_DEFAULT_EXTERNAL_STORAGE := true - 외장 SD카드를 기본 저장소로 지정 합니다. (위에 내장 SD카드가 있는 디바이스들에게 해당 됩니다. 아마 백업을 하면 외장 SD카드를 우선으로 백업 하나 봅니다)

 

TW_FLASH_FROM_STORAGE := true - RAM 이 좀 작은 디바이스들에게 좋은 구문 인듯 합니다.

플래싱 하는 롬이 RAM 보다 지나치게 큰 경우, RAM 대신 /tmp 에서 작업을 진행 하는것 입니다.

Twrp 에서 이걸 기본 값으로 설정 하는걸 고려중이라네요~

 

 

 

Here's some flags that may help you, but are not specific to TWRP (works in CWM too):
This flag has multiple options, but can be used to set different graphics modes that may be need to correct color space issues on some devices:
TARGET_RECOVERY_PIXEL_FORMAT := "BGRA_8888"
TARGET_RECOVERY_PIXEL_FORMAT := "RGBX_8888"
TARGET_RECOVERY_PIXEL_FORMAT := "RGB_565"

BOARD_HAS_FLIPPED_SCREEN := true -- flips the screen upside down for screens that were mounted upside-down
TARGET_PREBUILT_RECOVERY_KERNEL := path/to/kernel -- use to specify a kernel specifically for building recovery

 

 

이 부분은 귀찮기도 하고, 해서 번역을 건너 뛰었습니다.

 

발번역을 하면

 

이것은 당신을 도와줄 몇 가지 추가 항목들입니다. 그러나 이것은 TWRP에만 특정되는건 아닙니다(CWM에서도 작동합니다).
이 플래그는 여러가지 경우가 있지만, 대표적으로 몇몇 기기에서 일어나는 색상 문제를 해결하기 위해 다른 그래픽 모드로 설정되는데 사용됩니다.

TARGET_RECOVERY_PIXEL_FORMAT := "BGRA_8888"
TARGET_RECOVERY_PIXEL_FORMAT := "RGBX_8888"
TARGET_RECOVERY_PIXEL_FORMAT := "RGB_565"

 

BOARD_HAS_FLIPPED_SCREEN := true - 스크린이 위아래로 뒤집힌 기기들을 위한 옵션입니다.
TARGET_PREBUILT_RECOVERY_KERNEL := path/to/kernel - 리커버리를 빌드하기 위해 커널을 특별하게 지정하기 위해 사용됩니다.

 

참고적으로 https://github.com/TeamWin 이 사이트에서 자신의 디바이스와 비슷한 디바이스의 작업 파일을 찾아 작업 하시면 좀더 수월하게 하실수 있습니다^^

 

저 같은 경우엔 옵티머스 Q2에 포팅을 시도 함으로, 해외 옵티머스 2x 파일인 P990 파일을 보고 수정을 하였습니다.

 

 

위와 같이 설정을 한후, CWM리커버리 빌드 하듯이 해주시면 됩니다~ 어떻게 하냐고요?

http://minnote.net/117 글의 아래쪽 빌드 쪽을 참조해 주시면 됩니다.

 

winpower7_twrp.txt

 

 

+ 2012년 11월 29일 추가

조규진 님이, 미번역 부분과 부족한 부분을 번역해 주셨습니다^^

감사합니다~

안녕하세요!

Se7eN 인 Icaros 입니다.

 

오늘은 순정 락스크린 부활에 이어, LG옵티머스들의 화이트 UI를 제거하여 보겠습니다.

 

원래 안드로이드 4.x 아이스크림 샌드위치는 검은색 프레임워크를 중심으로 구성되어있습니다.

갤럭시, 베가, 모토로라, 엑스페리아 등의 타기종 아이스크림 샌드위치를 보시면 알수 있습니다^^

 

읽으시기전 손가락 운동한번만^^

 

LG 옵티머스 기종들의 ICS , JB에선 하얀색의 UI가 눈에 뛰며 예뻐 보입니다.

 

하지만 전 마음에 안들어요! 하루 빨리 제거 하고 싶었어요.

하지만 안드로이더스의 콜홍님이 제보를...(http://cafe.naver.com/androiders/1503270)

 

(하얀색 UI를 제거하기전의 Q2와 제거한후의 Q2)

 

오른쪽 사진의 뒤를 자세히 봐주시면, 순정 락스크린이 정상적으로 표시가 됩니다^^

 

하지만 이 화이트 UI제거의 문제점이 있습니다.

 

1. 루팅하신 분만 이용가능

2. 순정 메시지 어플 사용 불능

3. 순정 메모 어플 색 겹침 현상

 

1번은 당연히 아실테구, 2번은 전 GO SMS Pro 를 사용하여 해결을 하고 있습니다.

순정 메시지 어플의 사용이 불능 합니다.

3번은 사용에는 지장이 없지만, 메인화면에서 글씨 색과 배경색이 같아 불편함이 있습니다. 하지만 개별 메모를 터치하시면 정상 표시가 됩니다.

 

무작정 해보고 봅시다!

 

준비물 : Root Explorer , 안드로마이저 등의 Build.prop 을 수정 가능한 어플리케이션 또는 시스템 작업이 가능한 파일 탐색기 어플

저는 Root Explorer 를 사용하였지만, 강좌에 편리함을 위해 안드로마이저 Free 를 사용하여 보겠습니다.

 

1. Google Play 스토어에서 "안드로마이저" 를 설치하여 줍니다.

[https://play.google.com/store/apps/details?id=com.j.y.daddy.customizer]

 

2. 안드로 마이저를 실행 하여 주신후, Tool 탭을 터치하신후, "Build.prop 관리자" 를 터치하여 주십시오.

3. 2번 사진을 보시면서, 조금만 밑으로 내려 주시면

"ro.lge.capp_optimusui"

"ro.lge.capp_resource"

아래 두개의 줄이 있습니다.

 

터치를 하신후, 값을

 

true 를 지워주신후, false 로 적으신후 확인!

을 눌러 주신후

 

적용을 눌러 주시면 됩니다.

뭐 알아서 재부팅 하시겠습니까? 라는 질문이있지만, 재부팅을 하신후에 적용이 됩니다.

 

적용을 하신후에는 정상적으로 표시가 됩니다.

안녕하세요~

Icaros 입니다!

 

요즘은 CWM을 접고, Twrp 라는 제가 찬양하는 리커버리의 포팅을 옵티머스Q2에 시도중입니다.

(하지만 절대로 12월 5일이 기말이지 않아요. 절대로.....절대로 맞아요)

 

이건 Q2만이 아닌 모든 아이스크림샌드위치이상의 옵티머스 폰들에게 해당 됩니다.

 

아무튼, 안드로이드 순정의 락 (잠금) 스크린 (화면)...전 진저의 락스크린은, LG의 락스크린이 멋지고

아이스크림 샌드위치의 락스크린은, 안드로이드 순정 락스크린이 훨씬더 멋져보인답니다~ ㅎㅎ

 

LG의 ICS락스크린은 UI가 예쁘단걸로 찬사를 받고 있지만, 음악을 많이 듣는 저에겐 독같은 존재 ㄱ-;

 

이유는 바로, LG의 순정 락스크린에선 "LG 음악 플레이어" 만이 잠금화면에서 컨트롤러가 표시가 됩니다.

다른 뮤직 플레이어를 쓰면, 자체 잠금화면이나, 잠금 없음을 한뒤 상단바를 내려서 컨트롤을 해야 합니다.

 

하지만 허니콤(컴 / 안드로이드 3.x) 부터 안드로이드 락위젯 이라는 기능이 추가되었습니다.

바로 아래 사진과 같이, 안드로이드에서 직접 잠금화면에서 뮤직 컨트롤러를 제공 합니다.

 

 

어떠한 음악 플레이어 어플도 지원이 됩니다.

일딴 제가 확인한것으로는 "파워 엠프"와 "Google Play Music" 입니다.

 

하지만 우리 옵티머스들의 아이스크림 샌드위치에선 LG락스크린을 사용하느랴고, 저 기능 사용을 못합니다.

 

하지만 우리는 오늘 안드로이드 순정의 락스크린을 부활시켜 봅시다.

아래 사진은 오늘 7시 49분에 찍은, 제 옵티머스Q2의 락스크린 입니다.

 

요즘 패턴 그리기가 귀찮아, 그냥 풀고 다녀요.

※아래 검은색 화면이 표시되는것은 소프트키(네비게이션 바) 입니다. 착오 없으시길 바랍니다.

※현제 국내에 판매되고 있는 LG 옵티머스들 중에는 루팅 없이, 저런 소프트키가 있는 폰은 없습니다.

※갤럭시 넥서스, 테이크 LTE, 넥서스4, 넥서스10등의 몇몇폰들은 기본적으로 저것이 있습니다.

※오 저것 추가하는 강좌도 올려야지요~

 

일딴 루팅 (Rooting)을 하신 분들만이 가능 하십니다.

 

준비물 : Root Explorer 등의 시스템을 조작할수 있는 파일 탐색기, 손가락

 

1. Root Explorer 등의 시스템을 조작할수 있는 파일 탐색기를 실행 합니다.

2. /system/app 으로 들어 갑니다.

3. LockScreen3.apk 를 찾아줍니다.

 

4. LockScreen3.apk 를 꾹 터치하여, 이름바꾸기를 터치하여 줍니다.

※저기 노란색으로 표시해둔, 버튼이 "R/W Mount" 또는 "마운트 R/W" 등으로 R/W라는 말이있으면, 한번 터치한후 해줍니다.

 

5. 여기서 두방향의 갈림길에 놓이게 됩니다.

설명 읽어 보시고, 대충 선택하시구 가주시면 됩니다~

 

길1 - 일딴 한번, 순정 락스크린을 써보고, 다시 원래 LG락으로 오시고 싶은분

1-1. 이름 바꾸기를 합니다.

1-2. 이름을 "LockScreen3.apk1" 로 바꿔 줍니다.

1-3. LockScreen3.odex 파일있다면, 삭제하거나 이름을 바꾸지 말고 그냥 놔둡니다.

길2 - 계속 순정 락스크린으로 살고 싶으신분

2-1. 이름 바꾸기를 하시지 마시고, 삭제를 눌러 줍니다.

2-2. LockScreen3.odex 파일이있다면, Odex 파일도 삭제해 줍니다.

 

이렇게 영구적과 반영구정이 있습니다.

전 1번을 추천 드립니다^^

 

이 과정을 거친후에, 화면을 껏다가, 켜보면! 안드로이드 순정 락이!

 

근데...꼭 읽어주세요

 

일딴 재부팅을 하지 않으시고, 잠금화면을 가시면, 바탕화면이 이상하게 표시됩니다. 재부팅을 하여 주세요.

 

그리고 또한 화이트UI제거를 하시지 않으면 아래 사진 처럼 이상할수 있습니다.

알림 및 소유자 정보, 긴급 통화 및 통신사 문구가 이상하게 표시가 됩니다. 다음글을 참조해주세요.

 

또한 의문의 회색 바도 생겨버린답니다~

꼭 다음글을 한번 읽어주세요!

서로 관련이 있습니다.

 

저 현상은 LG옵티머스 ICS에 예쁘다고 극찬을 받고 있는, 하얀색 UI를 제거해야 정상적인 표시가 됩니다.

 

바로가기 : http://minnote.net/134

이것이 제가 꾸미고 있는, 옵티머스Q2의 CWM리커버리 메인 화면 입니다!

어서 모든 강좌를 올려 볼려고 합니다~


윗쪽, CWM-Based Recovery v6.0.1.2 를 Optimus Q2 CWM-Based Recovery v4 / v6.0.1.2 로 수정!

Power Off 추가!

LG Optimus Q2 이미지로 수정!

Welcom to the God World! / So am I Still Waiting / For OpQu2 CM9/CMX ROM...Please! 추가!


가 있습니다.


제가 현제 준비중인것은 쿼티 폰의 자부심인 리커버리에서 쿼티를 이용하여 콘솔을 살리는것 입니다! 그 내용은 나중에 약간 다루겠습니다.


읽으시기전 손가락 운동 한번^^


일딴 저 사진에 빨간색으로 표시를 해둔, "Power Off" 를 추가해 보겠습니다.

저것을 선택하면 그냥 폰이 종료 됩니다 ㅎㅎ


예전 까진 있었지만 2012년 1월인가 부터, 필요가 없는 부분이라고 생각되어 없어졌다고 합니다.

하지만 안드로이더스의 Npp님의 요청(?)으로 한번 시도를! 그리고 엄청난 도움이 되어 여러가지 수정을 가능하게 되었습니다.

으어어어 그러고 보니 Npp님께도 감사를! 영구땡칠님께도 감사를!


일딴...저도 초보자라...순서를 변경하는 고급 기능은 잘 모르겠습니다. 아니 할수는 있는데 단 한번도 시도를 해보지 않았습니다.


일딴 아래 파일 수정을 통해 살리기가 가능 합니다.

/home/(사용자 계정명)/android/system/bootable/recovery/default_recovery_ui.c


이미 Power Off에 대한 기본적인 내용들은 모두 추가가 되어있기 때문에 살리기만 하면 됩니다^^


https://github.com/CyanogenMod/android_bootable_recovery/commit/cd3705e4aba68274f7033a32bfc0d9b1010a4513

위 GitHub 의 default_recovery_ui.c 파일의 히스토리를 통해

Power Off 를 지운것을 알수 있습니다.


https://github.com/CyanogenMod/android_bootable_recovery/blob/ics/extendedcommands.c

위 파일 즉 extendedcommands.c 파일에 Power Off에 관련된 소스들이 있습니다. 맨 아래쪽 어드벤스 메뉴쪽 참고 부탁드립니다.


1. 아래 경로로 들어가, default_recovery_ui.c 파일을 열어 줍니다.

/home/(사용자 계정명)/android/system/bootable/recovery/default_recovery_ui.c


2. 아래와 같은 내용이 있습니다. 사진 아래 참조

저~기 빨간색과 노란색 줄 사이에 "                       "power off"," 를 추가해 주시면 됩니다.


즉 원본은 아래와 같습니다.


/*
* Copyright (C) 2009 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#include <linux/input.h>

#include "recovery_ui.h"
#include "common.h"
#include "extendedcommands.h"

char* MENU_HEADERS[] = { NULL };

char* MENU_ITEMS[] = { "reboot system now",
                       "install zip from sdcard",
                       "wipe data/factory reset",
                       "wipe cache partition",
                       "backup and restore",
                       "mounts and storage",
                       "advanced",
                       NULL };



여기서 저 굵게 표시해둔, Advanced 메뉴 아래쪽에 Power Off 를 추가해 줍니다.


아래 완성본(?) 파일 내용 입니다.


/*
 * Copyright (C) 2009 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include <linux/input.h>

#include "recovery_ui.h"
#include "common.h"
#include "extendedcommands.h"

char* MENU_HEADERS[] = { NULL };

char* MENU_ITEMS[] = { "reboot system now",
                       "install zip from sdcard",
                       "wipe data/factory reset",
                       "wipe cache partition",
                       "backup and restore",
                       "mounts and storage",
                       "advanced",
                       "power off",
                       NULL };

void device_ui_init(UIParameters* ui_parameters) {
}

int device_recovery_start() {
    return 0;
}

int device_reboot_now(volatile char* key_pressed, int key_code) {
    return 0;
}

int device_perform_action(int which) {
    return which;
}

int device_wipe_data() {
    return 0;
}


먼저 강좌를 시작 하기 전, 이 글은

영구땡칠님의 글을 그냥 사진만 추가해서 올린다고 해도 뭐라 할것이 없습니다...ㅠㅠ

원문 / http://cafe.naver.com/androidhacker/461


먼저 하시기 전에, 손가락 운동 한번만^^


일딴 대부분의 디바이스가 정상 동작을 하겠지만, 몇몇 디바이스들은 CWM리커버리 기본 셋팅으로 빌드를 하면

선택키가 없고, 볼륨키로만 왔다 갔다만 할수 있는....그런 상황이 일어나 버립니다...ㅠㅠ


제가 만들어본 LG 옵티머스Q2와 옵티머스Ex 에선 그랬습니다.


그래서 약간 글을 써볼려고 합니다.

위에서 말했듯이, 이 글은 영구땡칠님께서 써주신 글 입니다.

올라온거 보고, 덧글도 제가 1등으로 달았어요!


영구땡칠님曰 / "이미 초급딱치를 뗀 개발자라고 생각하신다면 이 글을 안보고도 쉽사리 고칠 부분을 찾아내실수 있습니다. 그런 분들이라면 이 문서를 참고하지 말고 직접 고보시기 바랍니다"


아아...전 아직 못뗏어요...ㅠㅠ


언제나 그렇지만 저에게 언제나 도움을 주시는 영구땡칠님 (LG 기기에서 많은 활약을...), hPa님 (이분은 너무 글로벌 하셔서), 베르제브님 (옵티머스Q2와 Ex를 구원해 주신 분...)등의 수많은 능력자 분들이 있기에, 전 낼름 받아 먹기만 하고 글을 써 봅니다.


먼저 개념은 이러 합니다.


grep VOLUME 라는 명령어를 내려, 자신이 수행했던 기록을 거슬러 올라갈수 있습니다.

그렇게 해서 파일을 찾는 방식 입니다.


하지만...전 왜 저 명령어가 안먹히죠...ㅠㅠ 그래서 글을 그대로 날름 했습니다.



ClcokworkMod 리커버리 5에선 아래와 같은 파일을 수정 하시면 됩니다.

/home/(사용자 계정명)/android/system/bootable/recovery/default_recovery_ui.c


ClockworkMod 리커버리 6에선 아래와 같은 파일을 수정 하시면 됩니다.

/home/(사용자 계정명)/android/system/bootable/recovery/default_recovery_keys.c


전 CWM5의 작업 파일을 만저 본적이 없어, CWM6을 기준으로 글을 써 봅니다.


1. /home/(사용자 계정명)/android/system/bootable/recovery/default_recovery_keys.c 파일을 열어 줍니다.


2. 열어 보시면 아래와 비슷한 내용이 있습니다. 여기서 대충 딱 보시고! 아 이거군아! 하시면 초급자 딱지는 땟다고 봐도 된다고 합니다! 오오 (불행중 다행)


아래 내용은 Git Hub 에서 가져온 가장 기본 상태의 파일 내용 입니다.

#include <linux/input.h>


#include "recovery_ui.h"
#include "common.h"
#include "extendedcommands.h"


int device_toggle_display(volatile char* key_pressed, int key_code) {
    int alt = key_pressed[KEY_LEFTALT] || key_pressed[KEY_RIGHTALT];
    if (alt && key_code == KEY_L)
        return 1;
    // allow toggling of the display if the correct key is pressed, and the display toggle is allowed or the display is currently off
    if (ui_get_showing_back_button()) {
        return 0;
        //return get_allow_toggle_display() && (key_code == KEY_HOME || key_code == KEY_MENU || key_code == KEY_END);
    }
    return get_allow_toggle_display() && (key_code == KEY_HOME || key_code == KEY_MENU || key_code == KEY_POWER || key_code == KEY_END);
}

int device_handle_key(int key_code, int visible) {
    if (visible) {
        switch (key_code) {
            case KEY_CAPSLOCK:
            case KEY_DOWN:
            case KEY_VOLUMEDOWN:
            case KEY_MENU:
                return HIGHLIGHT_DOWN;

            case KEY_LEFTSHIFT:
            case KEY_UP:
            case KEY_VOLUMEUP:
            case KEY_HOME:
                return HIGHLIGHT_UP;

            case KEY_POWER:
                if (ui_get_showing_back_button()) {
                    return SELECT_ITEM;
                }
                if (!get_allow_toggle_display() && !ui_root_menu) {
                    return GO_BACK;
                }
                break;
            case KEY_LEFTBRACE:
            case KEY_ENTER:
            case BTN_MOUSE:
            case KEY_CAMERA:
            case KEY_F21:
            case KEY_SEND:
                return SELECT_ITEM;
            
            case KEY_END:
            case KEY_BACKSPACE:
            case KEY_SEARCH:
                if (ui_get_showing_back_button()) {
                    return SELECT_ITEM;
                }
                if (!get_allow_toggle_display() && !ui_root_menu) {
                    return GO_BACK;
                }
            case KEY_BACK:
                if (!ui_root_menu) {
                    return GO_BACK;
                }
        }
    }

    return NO_ACTION;
}


딱 보시고 아실 분은 다 아실듯 합니다! 우둔한 저도 알아 차렸으니;


아래 부분을 보아 봅시다.

            case KEY_CAPSLOCK:
            case KEY_DOWN:
            case KEY_VOLUMEDOWN:
            case KEY_MENU:
                return HIGHLIGHT_DOWN;


위와 같은 내용 입니다.


위 내용은 다음과 같은 뜻을 가지고 있습니다.


CapsLock 버튼, Down 버튼, 볼륨 다운버튼, 메뉴 버튼 으로 아래쪽 항목을 선택 할수 있습니다.


그럼 아래 와 같이 수정을 하면, 검색키를 통해 아래쪽 항목을 선택 가능 합니다.

※단 검색키 이용은 약간의 수정이 필요 합니다


            case KEY_CAPSLOCK:
            case KEY_DOWN:
            case KEY_VOLUMEDOWN:
            case KEY_MENU:

            case KEY_SEARCH:

                return HIGHLIGHT_DOWN;


위와 같이 "case KEY_XXX"를 추가하면, 됩니다.



#include <linux/input.h>


#include "recovery_ui.h"
#include "common.h"
#include "extendedcommands.h"


int device_toggle_display(volatile char* key_pressed, int key_code) {
    int alt = key_pressed[KEY_LEFTALT] || key_pressed[KEY_RIGHTALT];
    if (alt && key_code == KEY_L)
        return 1;
    // allow toggling of the display if the correct key is pressed, and the display toggle is allowed or the display is currently off
    if (ui_get_showing_back_button()) {
        return 0;
        //return get_allow_toggle_display() && (key_code == KEY_HOME || key_code == KEY_MENU || key_code == KEY_END);
    }
    return get_allow_toggle_display() && (key_code == KEY_HOME || key_code == KEY_MENU || key_code == KEY_POWER || key_code == KEY_END);
}

int device_handle_key(int key_code, int visible) {
    if (visible) {
        switch (key_code) {
            case KEY_CAPSLOCK:
            case KEY_DOWN:
            case KEY_VOLUMEDOWN:
            case KEY_MENU:
                return HIGHLIGHT_DOWN; / 항목 아래로 이동

            case KEY_LEFTSHIFT:
            case KEY_UP:
            case KEY_VOLUMEUP:
            case KEY_HOME:
                return HIGHLIGHT_UP; / 항목 위로 이동

            case KEY_POWER:
                if (ui_get_showing_back_button()) {
                    return SELECT_ITEM;
                }
                if (!get_allow_toggle_display() && !ui_root_menu) {
                    return GO_BACK;
                }
                break; / 이놈 때문에 파워버튼이 정상동작을...지우고 수정해야 할듯 합니다. 뭐하는 놈인지 모르겠어요,...ㅠㅠ
            case KEY_LEFTBRACE:
            case KEY_ENTER:
            case BTN_MOUSE:
            case KEY_CAMERA:
            case KEY_F21:
            case KEY_SEND:
                return SELECT_ITEM; / 항목을 선택
            
            case KEY_END:
            case KEY_BACKSPACE:
            case KEY_SEARCH:
                if (ui_get_showing_back_button()) {
                    return SELECT_ITEM;
                }
                if (!get_allow_toggle_display() && !ui_root_menu) {
                    return GO_BACK;
                }
            case KEY_BACK:
                if (!ui_root_menu) {
                    return GO_BACK; / 뒤로 가기
                }
        }
    }

    return NO_ACTION;
}


입니다.


제가 약간 응용한 부분을 보겠습니다.

Q2에 적용된 파일이며, Q2는 하단 하드웨어 키가


옆의 사진과 같습니다.

그래서 저는 전원키 대신


메뉴 - 위로 이동 (방향키 및 볼륨키 대응)

홈 - 아래로 이동 (방향키 및 볼륨키 대응)

뒤로 - 뒤로 (백스페이스 키 대응)

검색 - 선택 (엔터키 및 전원키 대응)




그래서 아래와 같이 수정해 보았습니다.


#include <linux/input.h>

#include "recovery_ui.h"
#include "common.h"
#include "extendedcommands.h"


int device_toggle_display(volatile char* key_pressed, int key_code) {
    int alt = key_pressed[KEY_LEFTALT] || key_pressed[KEY_RIGHTALT];
    if (alt && key_code == KEY_L)
        return 1;
    // allow toggling of the display if the correct key is pressed, and the display toggle is allowed or the display is currently off
    if (ui_get_showing_back_button()) {
        return 0;
        //return get_allow_toggle_display() && (key_code == KEY_HOME || key_code == KEY_MENU || key_code == KEY_END);
    }
    return get_allow_toggle_display() && (key_code == KEY_HOME || key_code == KEY_MENU || key_code == KEY_POWER || key_code == KEY_END);
}

int device_handle_key(int key_code, int visible) {
    if (visible) {
        switch (key_code) {
            case KEY_CAPSLOCK:
            case KEY_DOWN:
            case KEY_VOLUMEDOWN:
            case KEY_HOME:
                return HIGHLIGHT_DOWN;

            case KEY_LEFTSHIFT:
            case KEY_UP:
            case KEY_VOLUMEUP:
            case KEY_MENU:
                return HIGHLIGHT_UP;

//            case KEY_POWER:
//                if (ui_get_showing_back_button()) {
//                    return SELECT_ITEM;
//                }
//                if (!get_allow_toggle_display() && !ui_root_menu) {
//                    return GO_BACK;
//                }
//                break;
            case KEY_LEFTBRACE:
            case KEY_ENTER:
            case BTN_MOUSE:
            case KEY_CAMERA:
            case KEY_F21:
            case KEY_SEND:
            case KEY_SEARCH:
            case KEY_POWER:
                return SELECT_ITEM;
           
            case KEY_END:
            case KEY_BACKSPACE:
                if (ui_get_showing_back_button()) {
                    return SELECT_ITEM;
                }
                if (!get_allow_toggle_display() && !ui_root_menu) {
                    return GO_BACK;
                }
            case KEY_BACK:
                if (!ui_root_menu) {
                    return GO_BACK;
                }
        }
    }

    return NO_ACTION;
}


// 파란색은 주석 처리를 한것 입니다.


즉 저 문장들은 실제로는 없는것과 같이 처리 된다는 것 입니다.


해석을...


#include <linux/input.h>

#include "recovery_ui.h"
#include "common.h"
#include "extendedcommands.h"


int device_toggle_display(volatile char* key_pressed, int key_code) {
    int alt = key_pressed[KEY_LEFTALT] || key_pressed[KEY_RIGHTALT];
    if (alt && key_code == KEY_L)
        return 1;
    // allow toggling of the display if the correct key is pressed, and the display toggle is allowed or the display is currently off
    if (ui_get_showing_back_button()) {
        return 0;
        //return get_allow_toggle_display() && (key_code == KEY_HOME || key_code == KEY_MENU || key_code == KEY_END);
    }
    return get_allow_toggle_display() && (key_code == KEY_HOME || key_code == KEY_MENU || key_code == KEY_POWER || key_code == KEY_END);
}

int device_handle_key(int key_code, int visible) {
    if (visible) {
        switch (key_code) {
            case KEY_CAPSLOCK:
            case KEY_DOWN:
            case KEY_VOLUMEDOWN:
            case KEY_HOME:
                return HIGHLIGHT_DOWN;

            case KEY_LEFTSHIFT:
            case KEY_UP:
            case KEY_VOLUMEUP:
            case KEY_MENU:
                return HIGHLIGHT_UP;

//            case KEY_POWER:
//                if (ui_get_showing_back_button()) {

//                    return SELECT_ITEM;

//                }

//                if (!get_allow_toggle_display() && !ui_root_menu) {

//                    return GO_BACK;

//                }

//                break;

// 일딴 이놈때문에 전원키가 동작을 안하니 삭제를...
            case KEY_LEFTBRACE:
            case KEY_ENTER:
            case BTN_MOUSE:
            case KEY_CAMERA:
            case KEY_F21:
            case KEY_SEND:
            case KEY_SEARCH:
            case KEY_POWER:

// 전원키와 검색키를 선택 항목에 넣습니다
                return SELECT_ITEM;
           
            case KEY_END:
            case KEY_BACKSPACE:

// 이 부분에 검색 값이있었지만, 위쪽으로 이동을 했습니다
                if (ui_get_showing_back_button()) {
                    return SELECT_ITEM;
                }
                if (!get_allow_toggle_display() && !ui_root_menu) {
                    return GO_BACK;
                }
            case KEY_BACK:
                if (!ui_root_menu) {
                    return GO_BACK;
                }
        }
    }

    return NO_ACTION;
}


이제 그리고 빌드를 하시면 됩니다!


다음번에는 메인 화면 수정 및 리커버리 정보 수정을 한번 흐흐

+ Recent posts