From: Shuduo Sang <shuduo.sang@canonical.com>
To: Tobias Klauser <tklauser@distanz.ch>
Cc: bjorn@mork.no, ibm-acpi-devel@lists.sourceforge.net,
linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org,
ibm-acpi@hmh.eng.br, matthew.garrett@nebula.net,
platform-driver-x86@vger.kernel.org, bruce.ma@canonical.com
Subject: Re: [PATCH V2] support Thinkpad X1 Carbon's adaptive keyboard
Date: Tue, 04 Mar 2014 17:47:00 +0800 [thread overview]
Message-ID: <5315A114.7010906@canonical.com> (raw)
In-Reply-To: <20140304091916.GE1883@distanz.ch>
Hi Tobias,
Thanks for your comments.
Shuduo
On 03/04/2014 05:19 PM, Tobias Klauser wrote:
> On 2014-03-03 at 17:31:08 +0100, Shuduo Sang <shuduo.sang@canonical.com> wrote:
> [...]
>> +/* press Fn key a while second, it will switch to Function Mode. Then
>> + * release Fn key, previous mode be restored.
>> + */
>> +bool adaptive_keyboard_mode_is_saved;
>> +int adaptive_keybarod_prev_mode;
>
> These should probably be made static, since they're only used inside the
> module.
>
Yes. Let me fix it in V3.
>> +static int adaptive_keyboard_get_next_mode(int mode)
>> +{
>> + int i;
>> + int max_mode = ARRAY_SIZE(adaptive_keyboard_modes) - 1;
>
> sizeof and thus ARRAY_SIZE returns a size_t, so i and max_mode could be
> of type size_t as well.
>
Agree. Will fix in V3.
>> +
>> + for (i = 0; i <= max_mode; i++) {
>> + if (adaptive_keyboard_modes[i] == mode)
>> + break;
>> + }
>> +
>> + if (i >= max_mode)
>> + i = 0;
>> + else
>> + i++;
>> +
>> + return adaptive_keyboard_modes[i];
>> +}
>> +
>> +static bool adaptive_keyboard_hotkey_notify_hotkey(unsigned int scancode)
>> +{
>> + u32 current_mode = 0;
>> + int new_mode = 0;
>> +
>> + switch (scancode) {
>> + case DFR_CHANGE_ROW:
>> + if (adaptive_keyboard_mode_is_saved) {
>> + new_mode = adaptive_keybarod_prev_mode;
>> + adaptive_keyboard_mode_is_saved = false;
>> + } else {
>> + if (!acpi_evalf(
>> + hkey_handle, ¤t_mode,
>> + "GTRW", "dd", 0)) {
>> + pr_err("Cannot read adaptive keyboard mode\n");
>> + return false;
>> + } else {
>> + new_mode = adaptive_keyboard_get_next_mode(
>> + current_mode);
>> + }
>> + }
>> +
>> + if (!acpi_evalf(hkey_handle, NULL, "STRW", "vd", new_mode)) {
>> + pr_err("Cannot set adaptive keyboard mode\n");
>> + return false;
>> + }
>> +
>> + return true;
>> +
>> + case DFR_SHOW_QUICKVIEW_ROW:
>> + if (!acpi_evalf(hkey_handle,
>> + &adaptive_keybarod_prev_mode,
>> + "GTRW", "dd", 0)) {
>> + pr_err("Cannot read adaptive keyboard mode\n");
>> + return false;
>> + } else {
>> + adaptive_keyboard_mode_is_saved = true;
>> +
>> + if (!acpi_evalf(hkey_handle,
>> + NULL, "STRW", "vd", FUNCTION_MODE)) {
>> + pr_err("Cannot set adaptive keyboard mode\n");
>> + return false;
>> + }
>> + }
>> + return true;
>> +
>> + default:
>> + return false;
>> + }
>> +}
>> +
>> static bool hotkey_notify_hotkey(const u32 hkey,
>> bool *send_acpi_ev,
>> bool *ignore_acpi_ev)
>> @@ -3456,6 +3556,8 @@ static bool hotkey_notify_hotkey(const u32 hkey,
>> *ignore_acpi_ev = true;
>> }
>> return true;
>> + } else {
>> + return adaptive_keyboard_hotkey_notify_hotkey(scancode);
>> }
>> return false;
>> }
>> --
>> 1.9.0
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>> Please read the FAQ at http://www.tux.org/lkml/
>>
next prev parent reply other threads:[~2014-03-04 9:47 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-03 16:31 [PATCH V2] support Thinkpad X1 Carbon's adaptive keyboard Shuduo Sang
2014-03-03 16:31 ` Shuduo Sang
2014-03-04 9:19 ` Tobias Klauser
2014-03-04 9:47 ` Shuduo Sang [this message]
2014-03-04 11:13 ` [PATCH V3] support Thinkpad X1 Carbon 2nd generation's " Shuduo Sang
2014-03-04 11:13 ` Shuduo Sang
2014-03-04 13:51 ` Tobias Klauser
[not found] ` <20140304135120.GF1883-93Khv+1bN0NyDzI6CaY1VQ@public.gmane.org>
2014-03-05 4:20 ` Shuduo Sang
2014-03-05 5:54 ` SeongJae Park
2014-03-05 6:35 ` Shuduo Sang
2014-03-05 7:06 ` SeongJae Park
[not found] ` <20140304091916.GE1883-93Khv+1bN0NyDzI6CaY1VQ@public.gmane.org>
2014-03-06 10:20 ` [PATCH V4] " Shuduo Sang
2014-03-06 10:20 ` Shuduo Sang
2014-03-06 10:20 ` Shuduo Sang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5315A114.7010906@canonical.com \
--to=shuduo.sang@canonical.com \
--cc=bjorn@mork.no \
--cc=bruce.ma@canonical.com \
--cc=ibm-acpi-devel@lists.sourceforge.net \
--cc=ibm-acpi@hmh.eng.br \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=matthew.garrett@nebula.net \
--cc=platform-driver-x86@vger.kernel.org \
--cc=tklauser@distanz.ch \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.